La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

FORTRAN 90/95 Lenguaje FORTRAN PRIMER lenguaje de Alto nivel

Presentaciones similares


Presentación del tema: "FORTRAN 90/95 Lenguaje FORTRAN PRIMER lenguaje de Alto nivel"— Transcripción de la presentación:

1 FORTRAN 90/95 Lenguaje FORTRAN PRIMER lenguaje de Alto nivel
CÁLCULO; ANÁLISIS NUMÉRICO (FORmula TRANslation) 1954 FORTRAN II – 1958 FORTRAN IV – FORTRAN66 FORTRAN77 – en vigor! FORTRAN90 – incluye F77 FORTRAN95 – (mejoras mínimas) FORTRAN2003 – 2000/2004 F90/95

2 ¿Por qué el Fortran? Es el lenguaje más utilizado en el ámbito científico Es el lenguaje dominante en supercomputación Es un lenguaje fácil de aprender y utilizar. Es el único lenguaje que perdura desde los años 50 hasta el momento actual. Existen miles de programas de cálculo, y librerías de uso absolutamente generalizado: IMSL (International Mathematics and Statistical Library), NAG (Numerical Algorithms Group), etc.

3 Compilador: traduce a código máquina
ejecución muy rápida ejecutable depende de la CPU (no portabilidad) permite OPTIMIZAR la ejecución (tiempo, memoria, etc) COMPILADOR: “compila”: genera un objeto binario NO ejecutable instrucciones empaquetadas e incomunicadas “linka”: vincula paquetes entre si para comunicarse con el exterior (EJECUTARSE) EJECUTABLE/BINARIO Permite el uso de LIBRERIAS ya compiladas

4 ELEMENTOS DE FORTRAN 10 output = input1+input2 ! suma
1. Caracteres: a-z, A-Z, 0-9, _ case insensitive 2. Aritméticos: +,-,*,/,** 3. Otros: ( ) . = , ‘ $ : ! “ % & ; < > ? SENTENCIAS: ejecutables no ejecutables Longitud 132 caracteres 10 output = input1+input ! suma etiqueta de sentencia comentario output = input1 + & input2 Continuación de línea

5 PROGRAM myprogram ... END PROGRAM myprogram Estructura de un programa:
Sección de declaración de variables Variables, tipo, arrays, parámetros, precisión,... Sección ejecutable El código principal, procedimientos,... Terminación PROGRAM myprogram ... END PROGRAM myprogram

6 Identificadores Es un nombre para denotar variables, constantes, programas y procedimientos. Deben empezar con una letra (a-z) y pueden tener una longitud de 31 caracteres (a-z, 0-9, _) Válidos: pepe, JUAN, PI, x0, x1, z3rt_1234 No válidos: 3luis, fifo$, R2-D2, obi/uan/kenobi

7 Tipos de datos en Fortran 90/95
Hay 5 tipos de datos predefinidos llamados intrínsecos para constantes y variables Fortran. Cada uno de estos tipos de datos intrínsecos admiten varias longitudes de memoria, dependiendo de la anchura de la palabra del computador. Tipo Denominación en Fortran Bytes ocupados Intervalo de valores Entero INTEGER 4 -232-1= = Real REAL y Complejo COMPLEX 8 Igual que REAL Lógico LOGICAL .TRUE. o .FALSE. Carácter CHARACTER [{(len=nº caract de variab)| (nº caract de variab)}] longitud Conjunto de caracteres ASCII de 8-bits La longitud de las variables de tipo carácter viene dada por el número de caracteres que tengan. Si no se especifica, las variables sólo podrán tener un carácter. Fortran 90/95 permite al programador definir tipos de datos derivados, que son tipos de datos especiales para resolver problemas particulares.

8 proc. 32b proc. 64b REAL*4 REAL*8 REAL*16 Variable REAL y precisión
Procesador 32bits Una variable declarada de tipo REAL es de 32 bits (4 bytes) por defecto 24 bits de mantisa y 8 de exponente: Existe DOBLE PRECISIÓN de 64 bits (8 bytes) 53 bits de mantisa y 11 de exponente: proc. 32b proc. 64b precisión simple REAL*4 REAL*8 doble precisión REAL*16

9 Declaración de variables
Sintaxis de declaración explícita de tipo de variable: TIPO:: lista de variables TIPO es cualquiera de los tipos de datos Fortran válidos lista de variables es un conjunto de variables separadas por comas cuyos nombres son identificadores válidos. REAL:: radio,area INTEGER:: mesas,sillas COMPLEX:: z1,z2 LOGICAL:: testea CHARACTER (len=20):: alumno1,alumno2 CHARACTER*20::alumno1,alumno2 CHARACTER(20)::alumno1,alumno2 Fortran 90/95 permite al programador definir tipos de datos derivados, que son tipos de datos especiales para resolver problemas particulares.

10 Declaración implicita de variables
Si una variable no ha sido definida explícitamente por una sentencia de definición de tipo, éste será determinado por la primera letra de su nombre: I, J, K, L, M, N: entera resto de letras: real. IMPLICIT {NONE | TIPO (lista de letras)} IMPLICIT LOGICAL (L-P) IMPLICIT NONE RECOMENDADO

11 PARAMETROS TIPO, PARAMETER:: nombre=número
Se puede declarar una “variable” como constante a lo largo del programa: TIPO, PARAMETER:: nombre=número REAL,PARAMETER:: planck=6.626E-27 No puede reasignarse el valor de una constante = error de compilación

12 Inicialización de variables
variable = valor en la parte de código TIPO:: variable=valor al declararla Variables CHARACTER: string=‘pepe’ Variables LOGICAL: test=.FALSE. (.TRUE.) El valor de una variable no inicializada no está definido en el standard de F90/95.

13 variable = expresión_aritmética
Si el tipo de la variable es diferente de la expresión_aritmética, se produce una conversión de tipo: expresión_aritmética es convertida al tipo de variable antes de ser asignada a variable. Pueden producirse problemas de truncamiento. INTEGER:: I I =3./ !se asigna a I el valor 1

14 Expresiones aritméticas (I)
Operador Descripción + Suma - Resta * Multiplicación / División ** Potencia + Signo positivo - Signo negativo Operadores aritméticos Operadores binarios Operadores unarios No se pueden escribir dos operadores seguidos. Ejemplo: la expresión a**-b es ilegal en Fortran, debe ser escrita como a**(-b) Operador ( ) ** +, - (unarios) *, / +, - La multiplicación, división, suma y resta se evalúan de izquierda a derecha. Las potencias se evalúan de derecha a izquierda. Cuando existen paréntesis anidados se evalúan desde el más interno hasta el más externo. Mayor Orden de precedencia Prioridad Menor

15 Expresiones aritméticas (II)
Orden de precedencia de tipos Tipo COMPLEX REAL INTEGER Si se mezclan en una expresión operandos de distintos tipos, el resultado se eleva a la categoría del de mayor precedencia Mayor Prioridad Menor Ejemplo, sean: A=8.0 B=4.0 C=3.0 (Reales) I=8 J=4 K=3 (Enteros) El resultado de: A/B (real) J/A (real) I/J (entero) B/C (real) A/C (real) J/K (entero) J/I 0 (entero) J/C (real) La división entera puede producir resultados no deseados, los enteros deberían ser usados únicamente para variables que sean intrínsecamente enteras, como los contadores y los subíndices. Algunos números reales no pueden representarse exactamente. Por ejemplo, la representación de 1./3. puede ser y, como resultado, algunas cantidades que son teóricamente iguales no lo son al ser evaluadas en un computador: 3.*(1./3.) = ≠ 1.

16 Variables CHARACTER Variable_char = expresión carácter
CHARACTER(LEN=3):: ext ext=‘f’ f__ ext=‘filete’ fil CHARACTER(LEN=8):: a,b,c a=‘ABCDEFGHIJ’ ABCDEFGH b=‘ ’ c=a(5:7) EFG_____ b(7:8)=a(2:6) b(7:8)=BC b=123456BC concatenación c=a(1:3)//b(4:5) ABC45___

17 Funciones intrínsecas
Fortran incorpora todas las funciones matemáticas (y de otros tipos). Las funciones de esas librerías se denominan funciones intrínsecas del lenguaje. funciones externas e internas pueden crearse por el propio programador para resolver problemas específicos. apéndices de cualquier libro de texto Fortran. calcula un resultado único a partir de ellos. La sintaxis general de una función intrínseca Fortran es: NOMBRE (lista de argumentos) Lista de argumentos es una lista de variables, constantes, expresiones, o incluso los resultados de otras funciones, separadas por comas, en número y tipo fijado para cada función intrínseca. El resultado es de un tipo también fijado para cada función intrínseca. REAL::x,y Y=funcion(x)

18 Funciones intrínsecas en F90/95
Ejemplos: Raíz cuadrada SQRT SQRT R R Exponencil EXP EXP R R Logaritmo neperiano LOG ALOG R R Logaritmo decimal LOG10 ALOG10 R R Seno SIN SIN R R Coseno COS COS R R Tangente TAN TAN R R Arcoseno ASIN ASIN R R Arcocoseno ACOS ACOS R R Arcotangente ATAN ATAN R R Seno hiperbólico SINH SINH R R Coseno hiperbólico COSH COSH R R Tangente hiperbólica TANH TANH R R Versiones DOUBLE PRECISION (e.g. DEXP) y COMPLEX (e.g. CEXP)

19 Funciones CHARACTER (algunas):
ACHAR(I) devuelve el carácter ASCII de número I IACHAR(C) devuelve el número ASCII LEN(STRING) devuelve la longitud de STRING LEN_TRIM(STRING) devuelve la longitud de STRING sin contar los blancos de relleno (a la derecha) TRIM(STRING) devuelve la cadena quitando los blancos de relleno INDEX(STRING, SUBSTRING, back) devuelve la posición inicial de SUBSTRING dentro de STRING. Si BACK es .TRUE., devuelve la última posición; si no, devuelve la primera.

20 INT(X) parte entera, X=REAL, devuelve INTEGER
MIN(A,B) devuelve el mínimo de A y B MAX(A,B) devuelve el máximo de A y B ... y muchas más ....

21 Entrada/salida simple
READ(*,*) A !lee del teclado !y asigna el valor a A READ(*,*) a,b,c !lee y asigna tres entradas WRITE(*,*) A !escribe en pantalla A WRITE(*,*) ´Hola mundo..’ !escribe la cadena

22 PROGRAM temp_conversion
! Purpose: ! To convert an input temperature from degrees Fahrenheit to ! an output temperature in kelvins. ! ! Record of revisions: ! Date Programmer Description of change ! ==== ========== ===================== ! 04/03/02 -- S. J. Chapman Original code IMPLICIT NONE ! Force explicit declaration of variables ! Data dictionary: declare variable types, definitions, & units REAL :: temp_f ! Temperature in degrees Fahrenheit REAL :: temp_k ! Temperature in kelvins ! Prompt the user for the input temperature. WRITE (*,*) 'Enter the temperature in degrees Fahrenheit: ' READ (*,*) temp_f ! Convert to kelvins. temp_k = (5. / 9.) * (temp_f - 32.) ! Write out the result. WRITE (*,*) temp_f, ' degrees Fahrenheit = ', temp_k, ' kelvins' ! Finish up. END PROGRAM temp_conversion


Descargar ppt "FORTRAN 90/95 Lenguaje FORTRAN PRIMER lenguaje de Alto nivel"

Presentaciones similares


Anuncios Google