Fortran es el primer lenguaje de alto nivel que salió al mercado. Ya que sigue siendo útil en Física, vamos a estudiarlo.
Un poco de historia
- Este lenguaje procedural fue el primero de alto nivel (1957).
- Desarrollado por IBM para el IBM 704.
- Orientado a la eficiencia en la ejecución.
- Se creó la definición estándar del lenguaje en el 66.
- Otras versiones son FORTRAN 77 y FORTRAN 90
Un sencillo ejemplo
Características
Tipos de datos soportados:
- Numéricos (enteros, reales, complejos y doble precisión).
- Boleanos (logical).
- Arreglos.
- Cadenas de caracteres.
- Archivos.
FORTRAN 90 ya es estructurado, y no requiere sentencias GOTO. Sólo admite dos ámbitos para las variables: local y global.
Veamos ahora un ejemplo más extenso:
Variables y constantes
- FORTRAN no es sensible a mayúsculas y minúsculas. Los nombre de variables tienen de 6 a 31 caracteres máximo y deben comenzar por una letra. Los blancos son significativos.
- Declaración explicita de variables.
- Enteras (I-N), el resto reales. (se modifica con IMPLICIT).
- Punteros: en los primeros FORTRAN no hay punteros y todas las variables se almacenan en memoria estática. En FORTRAN 90 se declaran INTEGER, POINTER::P.
- Para memoria dinámica ALLOCATE y DEALLOCATE
Tipos de datos
- Arrays, pueden tener hasta 7 dimensiones y se guardan por colummnas.
- REAL M(20),N(-5:5)
- DIMENSION I(20,20) (tipo por nomenclatura implícita)
- Cadenas de caracteres, el primer carácter es el 1, el operador // permite concatenar cadenas.
- CHARACTER S*10, T*25
- Almacenamiento de datos. Se usa COMMON para datos compartidos y EQUIVALENCE cuando almacenamos una variable con dos posibles tipos en la misma posición de memoria (como union en C). Se usa DATA para inicializar datos estáticos.
- DATA X/1.0/,Y/3.1416/,K/20/
- Tipos definidos por el usuario, con TYPE
<nombre>... END TYPE <nombre>
Control de secuencia
El conjunto de estructuras de control es limitado:
- Expresiones, prioridad de operadores
- Enunciados
- Asignación, cuando se hace entre cadenas hay ajuste de tamaño con blancos o truncamiento.
- Condicional. Permite IF
ELSE IF... Para selección múltiple SELECT CASE CASE.....CASE DEFAULT.... END SELECT - Iteración. DO....END DO
- Nulo, se usa solo para la etiqueta. CONTINUE.
- Control de subprogramas. CALL invoca al subprograma y RETURN devuelve un valor al programa llamante.
- Construcciones propensas a error: GOTO.
Entrada y salida
- Tipos de archivos:
- Secuenciales
- De acceso directo
- Comandos: READ, WRITE, PRINT, OPEN , CLASE, INQUIRE (propiedades o estado del archivo) REWIND y ENDFILE (para ubicar el puntero del fichero).
- Para el tratamiento de excepciones en las sentencias READ/WRITE se puede introducir la posición de la rutina de dicho tratamiento (ERR=90).
Subprogramas
- Hay tres tipos de subprogramas:
- Function, devuelven un solo valor de tipo numérico, lógico o cadena de caracteres.
- Subroutine, devuelve valores a través de variables no locales COMMON.
- Función de enunciado, permite calcular una sola expresión aritmética o lógica.
- FN(X,Y)=SIN(X)**2-COS(Y)**2
- Gestión de almacenamiento.
- Las variables son locales o globales (COMMON)
- Recursividad: RECURSIVE FUNCTION FACTORIAL(X)
- Parámetros de subprograma. Paso por referencia.
Abstracción y encapsulación. Evaluación del lenguaje
- La abstracción es posible mediante los subprogramas y el uso de variables COMMON, aunque su uso es propenso a errores.
- FORTRAN sigue siendo utilizado en el ámbito científico y es muy eficiente realizando cálculos.
- La estructura del programa suele ser dificil de entender.
- En FORTRAN 90 se incluye la recursividad y la memoria dinámica.
- Las etiquetas de las sentencias ya no son necesarias, ni el GOTO, pues se ha transformado en un lenguaje estructurado.
- El aspecto de los programas sigue siendo de procesamiento por lotes
Guillermo Aedo Contreras