You are on page 1of 25

CATEDRA 0

2
Facultad de Ingeniera de Minas, Geologa y Civil
Departamento acadmico de ingeniera de minas y civil

METODOS
NUMERICOS
Ingeniera Civil

ING. CRISTIAN CASTRO P.

Capitulo I
H
Herramientas
a i ta de
d Clculo
Cl l

ING. CRISTIAN CASTRO P.

Herramientas de Clculo
Equipo
Computadora

Calculadora

Herramientas de Clculo
Software
Desarrollo de programas
Software matemtico
Hoja de clculo
Calculadora graficadora

Herramientas de Clculo
Mdulos de un Algoritmo
Algoritmo

Datos de entrada
Mdulo 1

Procesamiento de los datos


Mdulo 2

Impresin de resultados
Mdulo 3

Mdulo 1: representa la operacin que permite el ingreso de los datos


del problema
Mdulo 2: representa la operacin o conjunto de operaciones
secuenciales, cuyo objetivo es obtener la solucin del problema
Mdulo 3 : representa una operacin o conjunto de operaciones que
permite comunicar al exterior el o los resultados obtenidos
p

Herramientas de Clculo
Algoritmo

Conjunto finito de instrucciones bien definidas para lograr


alguna tarea (objetivo), que dado un estado inicial, terminar
en un estado final una vez alcanzado un criterio.
criterio

Ejemplo 1: Torre de Hanoi http://www.wikipedia.org/

Cuntos pasos para n discos?

El obje
objetivo
o es mover
o e todos
odos los
os d
discos
scos de su pos
posicin
c inicial
ca a o
tra gua, obedeciendo las reglas:
Slo se puede mover un disco a la vez
Ni disco
Ningn
di
se puede
d poner sobre
b un disco
di
menor

Herramientas de Clculo
Algoritmo
Ejemplo 2: Algoritmo de Euclides
Dados dos enteros positivos m y n, encontrar su
mximo
i
comn
divisor
di i
Paso 1: Dividir m por n y dejar que r sea el remanente
(tendremos 0<= r<n)
Paso 2: Si r=0, el algoritmo termina, n es la respuesta
Paso
P
3 Fijar
3:
Fij m
n, nr,
ir
i a Paso1
P
1
Puedes demostrar que el algoritmo resuelve lo que
ofrece?
f
?

Herramientas de Clculo
Caractersticas de un
Algoritmo

Sumar

Menos

Donald E. Knuth Fundamental Algorithms


Vol 1
Vol.
1, 2nd edition

Multiplicacin

Divisin

Mas o menos

Equivalente a

>

Mayor que

<

que
Menor q

>=

Mayor o igual que

<=

Menor o igual que

<>

Diferente de

Finito
Definido con Precisin
Entradas
Salidas
Efectividad

Si
No
True
False

Herramientas de Clculo
Compilacin

Common Language Runtime

Assembly

Cdigo fuente

Compilacin
C++,
C
C#,
C# VB o
cualquier otro
lenguaje

(Strong name opcional)

DLL o EXE

Herramientas de Clculo
NIVELES DE LENGUAJES DE PROGRAMACIN
Lenguajes declarativos
(4. Generacin)

Alto Nivel
Lenguajes de alto nivel
((Compilados
p
o interpretados)
p
)

Lenguajes ensambladores

Bajo Nivel
Lenguajes
g j mquina
q

Capitulo I
L
Lenguajes
aj
de
d Programacin
P
a a i

ING. CRISTIAN CASTRO P.


Lenguajes de Programacin
Historia
50
60
70
80
90

FORTRAN
ALGOL 60
PL/I
Simula
Pascal
Smalltalk
C
Ada

COBOL LISP
Prolog
ML
Miranda

Lenguajes de Programacin
1950

1960

1970

1980

PL/I(66)

Historia

Eiffel (86)
Ada(95)
Ada(83)

Cobol(58)
ENS
SAMBLA
ADOR

1990

Pascal(70)
Java(96)
( )
Algol(60)
C(72)
Fortran(54)

C++(89)
( )
Smalltalk(80)

Simula(67)

Basic(66)

Lenguajes de Programacin
PERSPECTIVA HISTRICA DE VARIOS LENGUAJES
rea de
aplicacin

Origen
lingstico

1960

1970

ANS

FORTRAN I FORTRAN II FORTRAN IV


Cientfica

Algebra

Algol 58 Algol 60

FORTRAN IV ANS

BASIC
Procedimiento de datos

Ingls

COBOL 58

APL

Propsito General
Lambda
Inteligencia artificial

calculo

Programacin de
sistemas

Algoritmo de
Markov

Maquina de
Von Neumann

FORTRAN 77

FORTRAN Pascal
ANS
ANS
BASIC
COBOL 68
ANS
PL/I
PL/I

ANS
UCSD Pascal
Pascal

LISP

ANS PL/I
(G)

PROLOG

LISP 1,5
Procesamiento de texto

1980

SNOBOL 3
SNOBOL

ICON
SNOBOL 4

Ensamblador y
Lenguajes maquina

ANS Ada
Ada

Modula

M d l 2
Modula-2

Lenguajes de Programacin
PERSPECTIVA HISTRICA DE VARIOS LENGUAJES

Lenguajes de Programacin
Clasificacin de los lenguajes de
programacin y su evolucin
Un lenguaje es la forma que utilizan dos entidades llamadas
emisor y receptor para comunicarse.
Un lenguaje de programacin es la forma en que un ser
humano le indica a una computadora lo que debe de hacer.
Los lenguajes de programacin son necesarios dado que el
lenguaje que entendemos los humanos y las mquinas es
totalmente distinto.
Las computadoras entienden un lenguaje mquina de 0 y 1

Lenguajes de Programacin
Clasificacin de los lenguajes de
programacin y su evolucin

El lenguaje mquina es diferente entre las familias de


microprocesadores
Los lenguajes de programacin se clasifican de acuerdo a
su objetivo en: de propsito general y propsito especfico.
Los lenguajes de propsito general sirven para resolver casi
cualquier problema.
Ejemplos: C/C++, Java, Pascal, Ada, etc
Los lenguajes de propsito especfico son de dominio ms
especfico.
Ejemplo: SQL (Base de Datos), GAMS (Modelamiento), etc.

Lenguajes de Programacin
Clasificacin de los lenguajes de
programacin
i y su evolucin
l i
El lenguaje mquina es diferente entre las familias de
microprocesadores
Los lenguajes de programacin tambin se pueden clasificar
de acuerdo a su nivel de abstraccin en bajo nivel y alto nivel.
nivel
El nivel de abstraccin se da desde el punto de vista humano;
es decir, el de alto nivel est ms cercano al lenguaje natural.
Otra forma de clasificar los lenguajes de programacin es en
base al paradigma utilizado para programar.

Lenguajes de Programacin
Clasificacin de los lenguajes de
programacin
i y su evolucin
l i
Los lenguajes de bajo nivel son los que estn ms cercano
al lenguaje mquina, permiten el desarrollo ms eficiente de
aplicaciones, pero la programacin es ms complicada.
Ejemplo: lenguaje ensamblador x86, ensamblador PPC,
ensamblador 68x,
68x etc.
etc
L
Los lenguajes
l
j de
d alto
lt nivel
i l son muy parecidos
id a lenguajes
l
j
naturales como el ingls. Permiten un rpido desarrollo e
implantacin de algoritmos.
algoritmos
Ejemplo: C++, Java, BASIC, Fortran, COBOL, etc.

Lenguajes de Programacin
Clasificacin de los lenguajes de
programacin y su evolucin
Cmo es posible que dos entidades con diferentes
l
lenguajes
j (humanos
(h
y computadoras)
t d
) puedan
d
comunicarse
i
entre si?
Se puede realizar por medio de un traductor. Lo cual da otra
clasificacin de lenguajes de programacin.
Por la forma en que se realiza la programacin,los lenguajes
se clasifican en:
Lenguajes compilados (compilador)
Lenguajes interpretados (intrprete)
(intrprete).

Lenguajes de Programacin
Clasificacin de los lenguajes de
programacin
i y su evolucin
l i
Los lenguajes
g j interpretados
p
se p
procesa el cdigo
g fuente y se
traduce lnea por lnea.
Ejemplo de lenguajes interpretados est la lnea comandos
(shell) de un sistema operativo, BASIC, entre otros.
En los lenguajes compilados la traduccin se realiza leyendo
todo el cdigo fuente.
fuente Ejemplo: Pascal,
Pascal Delphi,
Delphi C/C++,
C/C++ etc.
etc
Existen diversos paradigmas como procedimental o
estructurado (C, Pascal, etc.), orientado a objetos (Java,C++,
SmallTalk,, etc.).
)

Lenguajes de Programacin
Clasificacin de los lenguajes de
programacin
i y su evolucin
l i
Los lenguajes
g j interpretados
p
se p
procesa el cdigo
g fuente y se
traduce lnea por lnea.
Otros paradigmas de programacin son el funcional como
LISP, la programacin lgica con PROLOG, programacin
orientada a aspectos, etc.
Los lenguajes de programacin tambin tienen otros fines
como configurar programas.

Lenguajes de Programacin
Lenguajes de Programacin
Son herramientas que nos permiten crear programas y
software. Entre ellos tenemos Fortran, C, Delphi, Qbasic,
Visual Basic, Pascal, Java, etc..
Una computadora funciona bajo control de un programa
el cual debe estar almacenado en la unidad de memoria;
tales como el disco duro.
Los lenguajes de programacin facilitan la tarea de
programacin, ya que disponen de formas adecuadas
que permiten ser ledas y escritas por personas.

Lenguajes de Programacin
Lenguajes de Programacin
Los lenguajes de programacin se representan en forma
simblica y en manera de un texto los cdigos que podrn
ser ledos por una persona tales como:
1 celulares
2 cajeros Automticos
3 los mp3
4 Calculadoras

Lenguajes de Programacin
Lenguajes de Programacin
Hay lenguajes de programacin que utilizan
compilador
QUE ES UN COMPILADOR..?
COMPILADOR
?
Un compilador es un programa que, a su vez, traduce un
programa escrito en un lenguaje de programacin a otro
lenguaje de programacin
La razn principal para querer usar un compilador es
t d i un programa de
traducir
d un lenguaje
l
j de
d alto
lt nivel,
i l a otro
t
lenguaje de nivel inferior.

Lenguajes de Programacin
Lenguajes
g j
de Programacin
g
Los lenguajes
g j
de p
programacin
g
se determinan
segn el nivel
Nivel Bajo
Nivel Medio
Nivel Alto

-Lenguajes de Bajo nivel


La p
palabra "bajo"
j no implica
p
que el lenguaje
q
g j sea inferior
a un lenguaje de alto nivel; se refiere a la reducida
abstraccin entre el lenguaje y el hardware.
Ejemplo PLC
PLC ( Control Logico programable)
Son todos los procesos Industriales
Tales como el control de la maquinaria, plantas de
fabricacin

Lenguajes de Programacin
Lenguaje ensamblador
Es totalmente dependiente de la arquitectura de la
computadora.
Utili
Utiliza instrucciones
i t
i
cortas
t
ll
llamadas
d
mnemnicos.
i
L
Las
cuales se sustituyen al momento de ensamblar.
La mayora de los lenguajes de alto nivel genera como
cdigo intermedio instrucciones en ensamblador.
ensamblador
j p
el cdigo
g mquina
q
10110000 01100001
Por ejemplo
(0xb061) es representado en ensamblador x86 como
MOV al, 061h

Lenguajes de Programacin
Lenguajes de Nivel medio
Hay lenguajes de programacin que son considerados
por algunos expertos como lenguajes de nivel medio.
medio
al tener ciertas caractersticas que los acercan a los
lenguajes de bajo nivel. Ejemplo D.O.S
Disk Operating System

Lenguajes de Programacin
Lenguajes de alto nivel
Los lenguajes de alto nivel son normalmente fciles de
aprender porque estn formados por elementos de
lenguajes naturales, como el ingls.
En BASIC, el lenguaje
g j de alto nivel ms conocido, los
comandos como
"IF CO
CONTADOR
O = 10
0 THEN S
STOP"
O
pueden utilizarse para pedir a la computadora que pare si
CONTADOR es igual a 10.
10
Por desgracia para muchas personas esta forma de
trabajar es un poco frustrante,
frustrante dado que a pesar de que
las
computadoras parecen comprender un lenguaje
natural lo hacen en realidad de forma rgida y sistemtica
natural,
.

Capitulo I
C
Comparacin
a a i d
de Lenguajes
L
aj

ING. CRISTIAN CASTRO P.


Comparacin de Lenguajes
Cules son los criterios usados?
Tres criterios usados comnmente cuando se evalan
l llenguajes
los
j d
de programacin
i son:
Cun fcil se pueden leer y entender programas (readability)
Cun fcil se pueden escribir programas (writability)
Cun confiables son los programas (reliability)

Recuerde: no existe un lenguaje de programacin que


se pueda clasificar como el mejor de todos.
Si existiera, todo el mundo lo usara.

Comparacin de Lenguajes
Readabilityy
Este criterio se refiere a la facilidad con la cual se
pueden leer y entender p
p
programas
g
en el lenguaje
g j de
programacin que se evala.
Obviamente, la legibilidad de un lenguaje debe ser
juzgada de acuerdo al tipo de problemas para los
cuales el lenguaje esta diseado.
Caractersticas que contribuyen a la legilibilidad de un
lenguaje son: simplicidad, ortogonalidad, estructuras de
control
t l disponibles,
di
ibl
f ilid d para definir
facilidades
d fi i estructuras
t t
y
tipos de datos, y consideraciones de sintaxis.

Comparacin de Lenguajes
Readability:
y simplicidad
p
Aquellos lenguajes que tienen una gran cantidad de
p
bsicos son ms difciles de aprender
p
componentes
que los de una menor cantidad de componentes.
Lo ms comn es que el programador que se enfrenta
a un lenguaje complejo slo aprenda una porcin del
lenguaje e ignore el resto.
Qu pasa el programador cuando se encuentra con
un programa que usa alguna
l
caracterstica
t ti
d l
del
lenguaje que no se conoce?

Comparacin de Lenguajes
Readability: simplicidad
Otra preocupacin con respecto a la simplicidad es
cuando
d un lenguaje
l
j provee varios
i mtodos
t d para hacer
h
lo mismo. Por ejemplo, en C++:
n = n + 1;
n += 1;
n++;
++n;
Si piensa que lo anterior no es confuso, considere:
a[++n]
[++ ] *=
* b++ % (--c
( / d);
d)

Comparacin de Lenguajes
Readability: simplicidad
Otro problema potencial es la capacidad que tienen
algunos lenguajes, tales como C++, de permitir que un
programador sobrecargue operadores. Un operador
sobrecargado es aquel que tiene varios significados.
Por
o eje
ejemplo
p o + e
en C
C++.
La sobrecarga de operadores (operator overloading) es
problemtica cuando permite que el programador
redefina un operador para un uso no intuitivo.
Por ejemplo,
ejemplo sobrecargar * en vez de +
+ para la
operacin de suma de matrices.

Comparacin de Lenguajes
Readability:
y Ortogonalidad
g
Este concepto significa que se pueden combinar varios
elementos de un lenguaje en todas las combinaciones
posibles y cada combinacin es significativa. No hay
ortogonalidad cuando hay combinaciones invlidas.
invlidas
Un ejemplo: Un lenguaje tiene tipos de datos para
enteros, reales, caracteres y booleanos. Adems
posee arreglos
p
g
y apuntadores.
p
Para q
que sea ortogonal,
g
,
este debe permitir crear arreglos y apuntadores para
cualquier tipo de datos, y debe permitir crear arreglos
d apuntadores
de
t d
y apuntadores
t d
a arreglos.
l

Comparacin de Lenguajes
Readability:
y Ortogonalidad
g
C++ tiene algunos problemas de ortogonalidad.
P ejemplo:
Por
j
l
Un value-returning function puede recibir un rcord y devolver
directamente un rcord.
rcord Sin embargo,
embargo aunque una funcin
puede recibir un arreglo, no puede devolver directamente un
arreglo.
Se pueden crear void functions y apuntadores a void, pero no se
pueden crear variables de tipo void.
Los parmetros son pasados automticamente por valor,
valor pero
los arreglos son pasados automticamente por referencia.

El problema de la falta de ortogonalidad:


hay excepciones a las reglas que el programador debe
conocer.

Comparacin de Lenguajes
Readability: Estructuras de control
Normalmente los lenguajes imperativos proveen las
siguientes estructuras de control:
Decisiones: If, Case
Ciclos: While, Repeat/Until, For

Algunos lenguajes proveen demasiadas estructuras de


control. Por ejemplo, Visual Basic provee los siguientes
ciclos:
while/wend,,
do
while/loop,
p,
do/loop
p
until,,
do until/loop y do/loop while
Otro lenguajes proveen muy pocas.
pocas
Por ejemplo, Fortran 77 no contena While y esto fuerza
al programador a usar una combinacin de If y Goto.
Goto

Comparacin de Lenguajes
Readability:
y Estructuras de control
Otra estructura de control que proveen muchos lenguajes
pero no todos,
todos es la recursin.
recursin
puede invocarse a s misma.
Una funcin es recursiva si p
La recursin puede ser utilizada como una alternativa a
l ciclos.
los
i l
Los lenguajes modernos tienden a incluir recursin,
recursin pero
no as los lenguajes ms antigos.
Los lenguajes funcionales llevan la simplicidad en los cicl
os al extremo: no hay While, Repeat/Until ni For, slo hay
recursin.

Comparacin de Lenguajes
Readability:
y Estructuras y tipos
p de datos
La presencia de tipos de datos y de facilidades para
crear tipos y estructuras de datos es una ayuda
significativa para leer y entender programas.
En C, por ejemplo, no existe el tipo de datos bool de
C++ y los booleanos se simulan usando 0 para Falso y
C
otro valor (normalmente 1) para Cierto. Esto puede ser
un problema.
Otro ejemplo:
j p Basic y Fortran no p
provean la capacidad
p
de crear records y esto quiere decir que los diferentes
campos
se
deban
declarar
como
variables
i d
independientes.
di t

Comparacin de Lenguajes
Readability: Estructuras y tipos de datos
En este aspecto se entiende que los lenguajes
orientados
i t d a objetos
bj t son los
l ms
adecuados
d
d ya que ell
concepto de clase permite implementar un tipo de dato
abstracto (ADT) y el concepto de objeto
objeto permite crear
variables de la clase definida.
Una vez que se crea la clase esta puede ser usada
para:

Declarar objetos y arreglos (colecciones) de objetos


Como la clase de algn
g atributo de otro objeto
j
((composicin)
p
)
Como la base para crear clases derivadas (herencia)
Como parmetro o valor devuelto en cualquier funcin.

Comparacin de Lenguajes
Readability: Consideraciones de sintaxis
La sintaxis, que define la forma en que se pueden
escribir instrucciones vlidas, tiene un impacto
significativo en la legilibilidad de los programas.
Algunas consideraciones de sintaxis son:
Identificadores
y
de lenguajes
g j p
permiten identificadores descriptivos.
p
la mayora
Sin embargo, en Basic los identificadores slo podan tener
dos caracteres. En Fortran, la primera letra del identificador
d una variable
de
i bl era usada
d para indicar
i di
su tipo
ti de
d datos
d t (I a N
para enteros, cualquier otra letra para reales) y, por lo tanto,
p de datos.
las declaraciones no incluan el tipo

Comparacin de Lenguajes
Readability: Consideraciones de sintaxis
Otras consideraciones:
Smbolos para los operadores
aunque los smbolos para operaciones aritmticas son
estndar el smbolo para asignacin y el de comparacin de
estndar,
igualdad vara (Basic usa = para ambos, Pascal usa :=
para asignar y = para comparar, C/C++ usa = para asignar
y ==
para comparar).
)
Palabras especiales
la presencia o ausencia de stas puede ser determinante.
Por ejemplo, en C++ se usan { y } para indicar el comienzo
y ell fn
f de
d una estructura
t t
d control
de
t l pero no se indica
i di de
d cul
l
estructura. Sera conveniente poseer end if, end while, etc.
Pascal tiene el mismo p
problema p
porque
q utiliza begin
g y end
sin indicar cul estructura.

Comparacin de Lenguajes
Readability:
y Consideraciones de sintaxis
Otras consideraciones:
C
Comentarios
t i
aunque todos los lenguajes proveen capacidad para
comentarios en algunos el comentario debe comenzar en una
comentarios,
columna especfica y se extiende hasta el final de la lnea
(Cobol), en otros el comentario puede comenzar en cualquier
columna (Pascal, Basic). Algunos lenguajes como C++
proveen para comentarios de una lnea y de mltiples lneas.
Formatos de columna fija o formato libre
en algunos lenguajes (Cobol,
(Cobol Fortran 77),
77) es requerido que
ciertos elementos de sintaxis comiencen en columnas
especficas. Otros lenguajes (Pascal, C, Java) tienen formato
libre.

Comparacin de Lenguajes
Writabilityy
Es la medida de cun fcil se pueden escribir los
programas para un dominio especfico (problem
domain) en un lenguaje.
Entre los factores que influencian el writability estn
algunos de los mencionados anteriormente tales
como: simpicidad, ortogonalidad, apoyo a la
abstraccin
b t
i (creacin
(
i de
d subprogramas
b
y de
d tipos
ti
d
de
datos).
Otro factor a considerar es el de expresividad.

Comparacin de Lenguajes
Writability:
y expresividad
p
La expresividad en un lenguaje se refiere a la facilidad
de lograr mucho con poco cdigo que sea entendible.
entendible
Ejemplos:
Ej
l
El ciclo For, aunque es innecesario si se dispone de While,
aumenta
t la
l expresividad
i id d del
d l lenguaje.
l
j
La notacin variable++ es ms corta y ms conveniente que
variable = variable + 1
1.
Poder asignar un arreglo a otro usando un solo enunciado de
asignacin
g
es ms conveniente q
que usando un ciclo For.

Comparacin de Lenguajes
Reliabilityy
La confiabilidad se refiere a la capacidad de escribir
programas que se desempeen adecuadamente bajo
cualquier circunstancia.
Dos factores que influyen en la confiabilidad de un
programa son el chequeo de tipos de datos y el
manejo de excepciones.
El chequeo de tipos de datos, por ejemplo, impide que
se invoque una funcin que necesita recibir un
nmero entero utilizando un string como argumento.

Comparacin de Lenguajes
Reliability: Manejo de excepciones
El manejo de excepciones permite que un programa
intercepte errores o condiciones inesperadas en
tiempo de ejecucin, tome acciones correctivas y
contine su ejecucin o termine adecuadamente.
Lenguajes modernos como Ada, C++, Java y Visual
Basic.Net p
proveen la capacidad
p
de manejo
j de
excepciones. Otros lenguajes como C, Cobol y
proveen esta capacidad
p
y requieren
q
que el
q
Fortran no p
programador pase mucho trabajo chequeando estas
condiciones inesperadas.

Muchas Gracias

You might also like