CLASE 5 -...

26
CLASE 5 Computación 2018– FCAG-UNLP – Paula Benaglia

Transcript of CLASE 5 -...

Page 1: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

CLASE 5

Computación 2018– FCAG-UNLP – Paula Benaglia

Page 2: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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…

Page 3: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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).

Page 4: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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.

Page 5: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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.

Page 6: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

Programa básico

program saludo

write (*,*) ‘ Este es mi primer programa ‘

end

miprimerprograma.f

Cols 1-6 Cols 7 en adelante … ...hasta la 72

Page 7: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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

Page 8: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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.

Page 9: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

Organización básica del código

program nombre

declaraciones

sentencias

end

Page 10: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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

Page 11: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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

Page 12: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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

Page 13: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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

Page 14: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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)

Page 15: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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

Page 16: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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))

Page 17: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

Herramientas para construir las sentencias

ASIGNACIONES: son sentencias que se usan para darle contenido a una variable

p = p + 1

Page 18: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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

Page 19: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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

Page 20: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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.

Page 21: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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

Page 22: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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 ]

Page 23: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

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 ….

Page 24: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

Orden de prioridad de las operacionesn = 4

Page 25: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

Orden de prioridad de las operacionesm = 3; n = 5; x = 4; y = 2

Page 26: CLASE 5 - valhalla.fcaglp.unlp.edu.arvalhalla.fcaglp.unlp.edu.ar/computacion/Teorias-2018-SS/Clase-05... · •La codificación es insensible a mayúsculas y minúsculas •Los espacios

FIN CLASE 5