CLASE 5
Computación 2016– 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…
“Estandarizaciones” 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 (*,*) ‘ Hola ‘ 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 dela 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
integral 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 usa la RN No se usa la RN
Se usa la sentencia implicit none
Declaración de tipo de variable Sentencia fortran Tipo integer [lista-de-variables] entera real “ real real*8 (=double precision) real con más decimales complex “ compleja logical “ lógicas character “ alfanuméricas (cadenas)
Declaración de tipo de variable integer mes real momento complex voltaje
logical l1 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.
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: falso
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
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 operaciones n = 4
Orden de prioridad de las operaciones m = 3; n = 5; x = 4; y = 2
FIN CLASE 5
Top Related