FORTRAN 90/95 Diagrama de una computadora Memoria principal Memoria secundaria Memoria interna (registros) Periféricos de entrada Unidad de control Unidad aritmética y lógica Unidad Central de procesamiento (CPU) Periféricos de salida La CPU es el alma de la computadora: • Unidad de Control: controla todas las otras partes de la computadora. • Unidad Aritmética y lógica: realiza los cálculos matemáticos lógicos • Memoria Interna: almacena temporariamente de los resultados intermedios durante los cálculos. Memoria Principal: es utilizada para almacenar temporariamente el programa que está ejecutando la computadora y los datos que el programa requiere. Memoria secundaria: almacena los programas y los datos por el tiempo requerido por el usuario. Ej.: Disco rígidos, CD etc. Las memorias de la computadora está compuesta de millones de interruptores Cada interruptor representa in digito binario (bit) SI=1 NO=0 Varios bits agrupados pueden ser usados para representar un número en el sistema de numeración binario. Un byte= 8bit es la agrupación mas pequeña de bits para representar un número en sistema binario. Los bytes son usados para medir la capacidad de memoria de una computadora. Ej Memoria Principal 256 megabytes (256 millones de bytes) Disco Rígido 40 Gigabytes (40 billones de bytes ) Actualmente las CPU usan agrupaciones de 32 bits (4 bytes) o 64 bits (8 bytes, windows vista) . A esta agrupación dependiente de cada computadora se lo llama word (no es un valor fijo → 2n bytes) Sistema decimal Sistema binario 122 Dos dígitos 0 y 1 Ej: 12210 2 x 100 2x 101 1 x 102 12210= 1 x 102 +2 x 101 + 2 x 100 26 → 25 → 24 → 23 → 22 → 64 32 16 8 4 122 – 64 = 58 58 – 32 = 26 26 – 16 = 10 10 – 8 = 2 2 – 4 = Excede el 122 21 → 2 20 → 1 2–2=0 0 – 1 =Excede el 122 11110102 = 1 x26 + 1 x 25 +1 x 24 + 1 x 23 + 0 x 22 + 1 x 21 + 0 x 20 Usamos 7 bits para representar al 122 En general, si se agrupan n bits se pueden representar 2n posibles valores. Ej: 8bits = 1 byte puede representar 256 valores numéricos desde -128 a +127 inclusive (la mitad valores negativos y la otra mitad el 0 mas los valores positivos). 16 bits = 2 bytes pueden representar 65536 posibles valores (-32768 a +32767)} 32 bits = 4 bytes pueden representar 4294967296 posibles valores. Caracteres del FORTRAN N° de Símbolos Tipo Caracter 26 Letras mayúsculas A – Z 26 Letras minúsculas a-z 10 Digitos 0-9 1 Guión Bajo _ 5 Símbolos aritméticos + - * / ** 17 Miscelánea de símbolos ( ) . = , ´ $ : ! “ %& ; < > ? y blanco El Fortran no distingue entre mayúsculas y minúsculas. Ej: Alfa=ALFA=alfa Un programa FORTRAN consiste en una serie de sentencias u “ordenes“ destinadas a cumplir objetivo del programador Sentencias ejecutables Describen acciones como operaciones aritméticas etc. Sentencias no ejecutables Provee información necesaria para la ejecución del programa. La sentencias en Fortran 90/95 pueden ser escritas en cualquier lugar de una línea y superar los 132 caracteres. Si una línea es muy larga para continuar en la línea siguiente debe finalizar con un amperson (&) ( se puede empezar en la siguiente con también con un amperson). Puede continuarse hasta 40 líneas Ej: 3 formas de escribir la misma sentencia Sum = entra1+ entra2 ! Suma los valores de entra1 y entra2 Sum = entra1 & + entra2 ! Suma los valores de entra1 y entra2 999 Sum = entra1 & &+ entra2 ! Suma los valores de entra1 y entra2 Los textos que se encuentran después del signo de admiración son comentarios. Son ignorados por el FORTRAN y ayudan para la documentación del programa. Se utilizan al final de la sentencia. La última sentencia esta precedida por un número . Éste es como el “nombre” se la sentencia, se llama nivel y puede tener un número entre 1 y 99999. Se utiliza para invocar a esa sentencia desde otro lugar del programa. No es el número de línea. La estructura de un programa FORTRAN La sección de declaración: Grupo de sentencias no ejecutables al comienzo del programa que define el nombre del programa y el numero y tipo de variables utilizadas en el programa. La sección de ejecución: Sentencias que describen las acciones a ser realizadas por el programa La sección de terminación: Sentencias que paran la ejecución del programa y le indican al compilador que el programa esta completo Ej: Leer 2 números enteros multiplicarlos e imprimir su resultado PROGRAM mi_primer_programa ! Objetivo: Ejemplificar las secciones de un programa FORTRAN ! Declaro las variables usadas en el programa INTEGER : : i, j, k ! Leo los números que hay que multiplicar y los guardo en las variables i y j WRITE(*,*) ´entrar los numeros que hay que multiplicar´ !Cartel READ(*,*) i, j k=i*j ! Multiplico los números WRITE(*,*) ‘resultado=‘, k ! Imprimo el resultado ! Finalización STOP END PROGRAM mi_primer_programa Compilar, Conectar (linking → “linkeditar”) Ejecutar un Programa FORTRAN Programa FORTRAN Archivo Objeto Compilar nombre.for “linkeditar” nombre.obj Compilador FORTRAN Programa Ejecutable nombre.exe Sistema de librerías Ayuda a identificar errores del lenguaje FORTRAN Constantes y Variables en FORTRAN Constantes: Se definen al comienzo del programa. El compilador le asigna un valor constante en la memoria y luego se la puede invocar en cualquier punto del programa. Variables: Se le asigna un lugar variable en la memoria. Los nombres de las variables pueden tener hasta 31 caracteres y pueden ser alfabéticos, numéricos y el guión bajo pero deben comenzar con un carácter alfabético. Ej: mes, z500, vorti_300 Buenas Costumbres: Poner nombres que nos ayuden a identificar las variables. Ej: mes Hacer un diccionario de los nombres de las variables. Ej: z500 geopotencial en 500 Hpa vorti_300 vorticidad relativa en 300 HPa Hay 5 tipos de constantes y variables FORTRAN Enteras Reales Complejas Lógicas Character (grafía) Constantes y variables enteras: “No pueden tener ni puntos ni comas” No representan números con fracciones Se almacenan en una word ⇒ la magnitud del valor del entero que se pueda almacenar va a depender de la computadora (si trabaja en 16, 32 o 64 bits). Constantes y variables reales:“Pueden tener punto decimal pero no comas” Representan números con fracciones Pueden ser escritos con o sin exponente entero (1.2e5, 0.000012, 0.12E1) La mantisa debe tener el punto decimal. La mantisa (precisión) y el exponente (rango) se almacenan en 2 partes. (Ver Tabla ) Computado- Bits totales ra para el Bits para mantisa número Precisión en dígitos decimales Bits para el Rango del exponente exponente IEEE (PC) 32 24 7 8 10-38 a 1038 IEEE (Macitosh, Sun Sparc, etc) 64* 53 15 11 10-308 a 10308 VAX 32 64* 24 56 7 15 8 8 10-38 a 1038 10-38 a 1038 Cray 64 49 14 15 10-2465 a 102465 * Indica longitud opcional Constantes y variables character: Sucesión de símbolos alfanuméricos. Constantes → se escriben entre ‘ o “ Ej: ‘Resultado = ‘ o “Resultado =“. Definición implícita o explícita de Variables: Implícita: Las variables que comienzan con la letras I, J, K, L, M y N son consideradas enteras Las que comienzan con alguna otra letra es considerada real. Explícita: Las variables son definidas al comienzo del programa en la sección de declaración (sentencias no ejecutables) Integer : : var1, var2, var3 REAL : : var4, var5 Los dobles 2 puntos son opcionales pero se usan para funciones más complejas En los programa Fortran, es posible no declarar algunas variables y dejar que el compilador asuma su tipo a partir de la primera letra de su nombre. Esto es muy poco recomendable por lo que vamos a utilizar la modalidad en la que todas las variables son declaradas y le vamos a indicar al compilador que vamos a trabajar de esta manera utilizando la sentencia IMPLICIT NONE Esta sentencia se ubica luego del nombre del programa y antes de empezar con la declaración de variables. Las variables Character: deben ser definidas explícitamente y especificar su longitud. CHARACTER (len= <longitud>) : : var1, var2, var3 Ej: CHARACTER (len=20) : : presion, temperatura, humedad CHARACTER (20) : : presion, temperatura, humedad Puede usarse: CHARACTER*20 presion, temperatura, humedad (FORTRAN 77) Esta última forma fue declarada obsoleta en Fortran 95 por lo cual no se recomienda su utilización en nuevos programas Otra forma para declarar constantes: Tipo, PARAMETER : : nombre = valor Ej: REAL, Parameter : : PI=3.141593, Omega= 7.28E-5 Setencias de asignación: El signo = significa una asignación. La expresión a la derecha de una igualdad esta asignando ese valor a la que está a la izquierda. Ej: i = i + 1 → significa que al valor almacenado en la memoria con el nombre i se le suma 1. Cálculos aritméticos: Son: + → adición, - → sustracción, * → multiplicación, / → división, ** → potenciación Los cálculos: No pueden aparecer 2 operadores seguidos: K= 2* -2 → No K= 2* (-2) → Correcto Las operaciones deben se explicitas p= x(y + z) → No p = x * (y + z) → Correcto Los paréntesis se resuelven de adentro hacia afuera: q = 2**((8+2)/5) = 2**(10/5) = 2**2 = 4 Aritmética Entera El resultado de una operación entre números enteros es un entero El resultado fraccionario de un cociente entre enteros es truncado Aritmética Real El resultado de una operación entre números reales es un real Tener en cuenta los errores de precisión Las operaciones entre reales y enteros se llaman mixtas y resultan confusas. Ej: 1+ 1/4 =1 1.+ 1/4 =1. 1+ 1./4=1.25 La operación entre un real y un entero da un real. El FORTRAN 90/95 tiene funciones para transformar los números enteros en reales y los reales en enteros. Nombre de la función Argumento Resultado Comentario INT(x) REAL ENTERO Parte entera de x (trunca) NINT(x) REAL ENTERO Redondea REAL(i) ENTERO REAL Convierte en entero un valor real En la función exponencial usar siempre que sea posible números enteros. Nunca elevar un número negativo a una potencia real.