CLASE 5 -...

Post on 30-Oct-2019

5 views 0 download

Transcript of CLASE 5 -...

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