clase 5 -...
TRANSCRIPT
CLASE 5
Computación 2018– FCAG-UNLP – Paula Benaglia
Lenguaje de programación FORTRAN
• De alto nivel
• De procedimientos (procedural language)
• Especialmente adecuado para desarrollos numéricos y científicos
• Nombre de FORmula TRANslation
• Presentado en 1956; compilador en 1957 (John Backus, IBM)
• Ahorraba 20 veces las instrucciones…
EstandarizacionesRAE (www.ra.es): ajustar a un tipo o norma.
Las estandarizaciones fijan las reglas del lenguaje.
Año Versión• 1958 FORTRAN II• 1961 FORTRAN IV• 1966 FORTRAN 66 • 1977 (78) FORTRAN 77• 1990 (91) Fortran 90• 1995 Fortran 95 (menor)• 2003 Fortran 2003• 2008 Fortran 2008 (menor).
Fortran porque…• Es sencillo de aprender para principiantes• Está accesible fácilmente en la red• Tiene funciones ya incorporadas para manipular
construcciones matemáticas tales como matrices• -> Útil para científicos, ingenieros• La precisión de los cálculos se elije de acuerdo a las
necesidades de los mismos• Hay numerosas ‘bibliotecas’ (libraries) de algoritmos
numéricos ya codificados• Se puede dominar en un par de meses.
Receta para hacer un ejecutable
1. Crear un archivo que contenga las instrucciones que queremos que la computadora ejecute (programa fuente = código fuente = source code)
$ emacs miprograma.f & < >
2. Correr el programa compilador Fortran sobre el programa fuente, obteniendo el programa en lenguaje de máquina (ejecutable)
3. Si el compilador detecta errores, volver a 1.
Programa básico
program saludo
write (*,*) ‘ Este es mi primer programa ‘
end
miprimerprograma.f
Cols 1-6 Cols 7 en adelante … ...hasta la 72
Fortran: Reglas básicas• Cada orden (o SENTENCIA = instrucción, comando)
ocupará al menos una línea.
sentencia: es la unidad más pequeña de un programa; el nombre indica la operación a realizar;
pueden ser ejecutables o no ejecutables.• Las sentencias se escriben una a continuación de otra y,
si no se indica lo contrario, el compilador las tomará en ese orden.
• La única sentencia obligatoria es: end• Se escribe a partir de la columna 7 y hasta la columna 72• De la 1 a la 5: nombres (=números) de sentencias
Fortran: Reglas básicas• Columna 6: carácter de continuación de línea (puede ser
cualquier carácter ni cero ni blanco; máx = 19 líneas)• La codificación es insensible a mayúsculas y minúsculas• Los espacios en blanco no son tenidos en cuenta por el
compilador• Las líneas de comentario se identifican con una “c” o un
signo “!” en la columna 1• Las líneas en blanco son ignoradas por el compilador.
Organización básica del código
program nombre
declaraciones
sentencias
end
Herramientas para construir las sentencias
Caracteres: A – Z a – z 0 – 9
= : + - * / ( ) [ ] , . $ ‘ ! “ % & ; < > ?
Palabras clave:
son conocidas de antemano por el compilador; tiene un significado determinado;
designan el mismo concepto en todos los programas
integer real
Identificadores: son nombres que el programador utiliza para denominar un programa, un valor numérico, etc. No pueden comenzar con un número
radio saludo
Herramientas para construir las sentencias
Constantes: son elementos que se definen por primera vez al correr el programa, y no cambian a lo largo del mismo .
• Numéricas (enteras, reales, complejas):-456
3.9833
3.9833e-10
(12.0,-7.05)
• Lógicas: T F .true. .false.
• Carácter: Resultados
Herramientas para construir las sentencias
VARIABLES: son nombres simbólicos bajo los que el programa guarda datos. Pueden tomar distintos valores. El nombre hace referencia a una zona de memoria donde se guardará el dato.
El contenido definirá su “tipo”; pueden ser:• Numéricas (enteras, reales, complejas)• Lógicas • Carácter
-> Las variables son lugares de memoria con nombre y tipo de dato fijo.
Ejemplo: A
Fortran 77 Fortran 90
REGLA de los nombres (RN): El tipo de dato numérico (entero o real) que guardará la variable depende de la letra con que comience su nombre:
A - H , O - Z REAL
I, J, K, L, M, N ENTERO (integer)
Hasta 6 caracteres Hasta 31 caracteres
Se tiende a usa rla RN No se usa en general la RN
Se usa la sentencia
implicit none
Declaración de tipo de variable
Sentencia fortran Tipo de valor guardado
integer [lista-de-variables] entera
real “ real
real*8 (=double precision) real con más decimales
complex “ compleja
logical “ lógica
character “ alfanumérica (cadenas)
Declaración de tipo de variable
integer mes
real momento
complex voltaje
logical ele1
character nombre, apellido
character*15 nombre, apellido
character nombre*10, apellido*15
Herramientas para construir las sentencias
ASIGNACIONES: son sentencias que se usan para darle contenido a una variable
y = 2.0
jota = -100
preg1 = .true.
label1 = ‘Resultados totales’
HCOMPN = 1.8234e-18
hdeffi = -3.652564d+02
A = sqrt(b**2 + c**2 – 2.0 *b*c*cos(alfa))
Herramientas para construir las sentencias
ASIGNACIONES: son sentencias que se usan para darle contenido a una variable
p = p + 1
Herramientas para construir las sentencias
Expresiones aritméticas: dan como resultado un número. Se usan para efectuar los cálculos
4 * (b – 9)
sqrt(b**2 + c**2 – 2.0 *b*c*cos(alfa))
Operadores aritméticos: + - * / **
Operadores de relación: relacionan expresiones
> mayor que .gt. ≥ mayor o igual que .ge.
< menor que .lt. ≤ menor o igual que .le.
= igual que .eq. ≠ distinto que .ne.
aritméticas
Tipo de resultado• Cuando trabajamos con expresiones aritméticas
utilizando más de un tipo numérico, el resultado pertenecerá al tipo numérico del conjunto más grande.
• Esto minimiza la pérdida de información.
Complejos Reales
Enteros
Tipo de resultado
a) Y = 4.0 + 1/4 + 3/4
b) Y = 4.0 + 1./4. + 3./4.
c) Y = 4.0 + 1./2.
d) I = 4.5 + 1/2
e) I = 4.5 + 1./2.
Herramientas para construir las sentencias
Expresiones lógicas: sirven para tomar decisiones, de acuerdo a su valor de verdad. Ejemplos:
* si el dividendo de un cociente es igual a cero, no efectúe la división.
: A < B
Operadores lógicos: se usan para armar y comparar expresiones lógicas:
.not. .eqv.
.and. .neqv.
.or.
T: verdadero
F: falsoa.lt.b
Orden de prioridad de las operaciones
Nro de orden Operación/operador Sentido
1ro paréntesis ( )
2do exponenciación **
3ro multiplicación y división * /
4to suma y resta + -
5to op. de relación (< > = …)
6to not
7mo and
8vo or
9no equivalent y non equivalent
[ 0: funciones intrinsecas ]
Orden de prioridad de las operaciones
( a + b ) * c / d =
( ( a + b ) * c) / d =
( a + b ) * ( c / d ) =
a + ( b * c ) / d =
a + b * c / d =
Sean a = 20; b = 10; c = 15, d = 5 ….
Orden de prioridad de las operacionesn = 4
Orden de prioridad de las operacionesm = 3; n = 5; x = 4; y = 2
FIN CLASE 5