Manual de fortran

En el presente manual intento describir de una forma sencilla y clara el último standard para el lenguaje FORTRAN: el F-90. Aunque cabe decir que las reglas generales de este lenguaje ya fueron publicadas por allá en los años 60.

Os estaréis preguntando porque he decidido hacer un manual sobre este lenguaje, el cual puede parecer arcaico en determinados momentos. La razón es que el lenguaje FORTRAN capacita al programador para lograr una buena utilización de los grandes sistemas, particularmente en todos aquellos casos relacionados con el sistema numérico. Aunque este lenguaje permite otras más posibilidades, y el no estrictamente el relacionado con el cálculo, desaconsejo la utilización de este lenguaje para tales fines ya que toda la potencia que pueda mostrar en los cálculos lo pierde en otros aspectos. Para estos casos recomiendo la utilización de lenguajes más intuitivos, como puede ser el Visual Basic.

Por último diré que los programas realizados en la sección de ingeniería química han sido realizados en su mayoría con este lenguaje.


Estructura de datos

Operadores aritméticos

Sentencias básicas

Sentencia GO TO

Sentencias IF y DO

Estructura de datos

El lenguaje FORTRAN, como cualquier otro lenguaje de programación, posee unos elementos básicos que se estudiarán a continuación y un conjunto de reglas que, combinando entre si esos elementos de base, van dando lugar a una serie de instrucciones, con las cuales el hombre llega a comunicarse con el ordenador.
Antes de explicar como se construye un algoritmo, hay que mencionar los tipos de datos que puede manejar este lenguaje, los cuales vienen a ser bastante generales a cualquier sistema de programación.

  1. Constantes. Este término designa un valor específico y determinado que se define al hacer un programa y que no cambia a lo largo del mismo
  2. Variables. El concepto de variable coincide con el concepto habitual que se tiene de ella; es un nombre simbólico con el que se designa o hace referencia a un dato que puede tomar valores diversos.

Tanto las constantes como las variables pueden ser de cuatro tipos principalmente:

  • Entera (INTEGER). Una constante entera es una sucesión de dígitos precedidos o no del signo positivo (+) o negativo (-) y sin coma decimal, es decir, el concepto de constante entera en FORTRAN coincide con el concepto habitual de número entero. El límite en la cantidad para datos enteros es de -32768 al 32767 para máquinas con memoria de 16 bits y de -2147433647 al 2147433647 para máquinas las cuales la memoria guarde hasta 32 bits. (Ej: 2435, -569, +15)
  • Reales (REAL). En cualquier caso, una constante real en FORTRAN equivale al valor de un número real habitual, es decir, una cantidad formada por una parte entera y una fraccionaria (punto decimal equivale a coma). Se define como exponente real, el carácter alfabético E seguido por in signo + o – y por una constante formada por dos dígitos como máximo (Ej: E25, 1.23E-3, -5E-02)
  • Lógicas (LOGICAL). Un dato lógico únicamente posee dos valores: cierto (.TRUE.) o falso (.FALSE.) y se guardan en memoria mediante códigos binarios especiales. Obsérvese los puntos que preceden y siguen a estas valores, los cuales son indispensables.
  • Carácteres (CHARACTER). Es un conjunto de caracteres válidos y su longitud es el número total de caracteres que contiene. Se define una constante de este tipo precedidos y seguidos por un apóstrofe (‘), cuyo carácter denomina delimitador. (Ej: ‘Hola que tal’, ‘Coste= ‘). No confundir el apóstrofe con las comillas, ya que son dos cosas totalmente diferentes.
  • Doble precisión (REAL*8). Se denomina exponente doble precisión en FORTRAN, al carácter alfabético D seguido opcionalmente del signo + o – y finalizando por una constante entera (Ej: D01, 14.2D+3, 12D-02). La diferencia entre este tipo de valor con el de real es que para este caso es que el compilador reserva más memoria para la doble precisión, con lo cual el número de dígitos es mayor.

Los nombres para las constantes y variables se forman utilizando un conjunto de caracteres, los cuales hay que seguir varias reglas:

  • No pueden empezar por un carácter numérico, por ejemplo no se puede llamar una variable 8MAR.
  • Todas aquellas variables cuyo nombre comience con los caracteres alfabéticos I, J, K, L, M o N se dice que queda implícitamente definida como variable entera. Las variables enteras designan zonas de memoria cuyo contenido es una constante o valor entero.
  • Todas aquellas variables cuyo primer carácter alfabético sea una letra distinta de las mencionadas anteriormente, se dice que son variables reales definidas de forma implícita. Una variable real contiene un valor constante real.

Como esto restringe bastante la programación, ya que por ejemplo no se podría declarar una variable distinta a entera o real, existe una forma de indicar explícitamente las constantes y variables, para ello se indica justo detrás del inicio del programa como se indica en la siguente tabla:

INTEGER contador Variable entera denominada contador
REAL numero Variable real denominada numero
LOGICAL salir Variable lógica denominada salir
CHARACTER*6 mensaje Variable de 6 caracteres denominada mensaje
REAL*8 suma Variable doble precisión denominada suma

Para la declaración de contantes, se realiza mediante la orden PARAMETER, de la siguiente forma:

PARAMETER (radio=6.5) Constante real de valor 6.5

Esto es equivalente a indicar lo siguiente:

REAL, PARAMETER (radio=6.5) Constante real de valor 6.5

Ya que como empieza por "r" FORTRAN entiende implicitamente que se trata de un valor real. Mi recomendación para evitaros problemas, es que declaréis siempre al principio todas las variables de esta forma, explícitamente, para menor confusión a la hora de que el programa interprete de una forma u otra una variable.

Otro tipo de datos es el concepto denominado lista. Por ejemplo, la temperatura en 5 ciudades diferentes, puede disponerse convenientemente en secuencia de elementos, cada uno puede ser identificado según el lugar que ocupa. Así el conjunto podría ser de la siguiente forma:

TEMPERATURA=(32,27,18,24,21)

Lo mismo podría ocurrir con una matriz de doble entrada donde en cada posición se encontrará la ciudad y en la otra la estación del año. Las listas y tablas son estructuras de datos que vamos a designar con el nombre genérico de conjunto de datos (en inglés: array) y que se declaran mediante la instrucción DIMENSION de la siguiente forma.

DIMENSION B(3,4) Matriz de datos reales con 3 filas y 4 columnas

Hasta aquí llega como se declaran los diferentes tipos de datos que hya en el lenguaje FORTRAN y com o se declaran, a continuación pasaré a detallar los conceptos generales para escribir el algoritmo final.


Operadores aritméticos

En matemáticas se dispone de una serie de símbolos que indican determinadas operaciones a efectuar con los datos: Así por ejemplo, el + para la suma, etcétera. De la misma forma, el lenguaje FORTRAN posee también esos signos, los cuales se denominan operadores aritméticos, y son los cinco indicados en el cuadro siguiente:

Operador Significado
** Exponenciación
/ División
* Multiplicación
Resta
+ Suma

Así, las expresiones algebraicas que siguen a continuación, se escribirán en FORTRAN como se indica:

Sumar A más B A + B
Multiplicar A con B A * B
Dividir A entre B A / B
A elevado a B A ** B
A que multipica a la suma de B más C A * (B + C)
5 veces A al cubo 5 * A ** 3

Cabe mencionar que cuando se opera con diferentes tipos de valores, es decir un real con un entero o cualquier otra combinación resulta un valor del tipo más dominante, el cual por orden es primero doble precisión, real, y por último entero.

Ejemplos

  • Multiplicar un entero con un real, se obtiene un real.
  • Sumar un valor de doble precisión con un entero, se obtiene un doble precisión.

    Por último, mencionar otro tipos de operadores como pueden ser el logaritmo y la exponencial E

    Logaritmo de A log(A)
    Exponencial de a (E elevado a A) exp(A)


    Sentencias básicas

    Antes de empezar con las sentencias de la programación en FORTRAN hay que mencionar un pequeño detalle, el compilador de FORTRAN no lee los 6 primeros caracteres de una línea, con lo cual habrá que dejar en blanco estos, para empezar a escribir a partir de la columna número 7. Anteriormente a la versión de F-90, también había una limitación en la banda derecha, exactamente al carácter número 72, el cual ha sido solventado en esta última versión. Otra mención merece el comentar que solo se puede escribir una sentencia por línea, quedando restringido el utilizar varias de ellas en una misma línea. A continuación vamos con las sentencias básicas del FORTRAN.

    Al escribir un programa FORTRAN, su primera sentencia puede ser PROGRAM, cuya sintaxis es simplemente:

    PROGRAM nombre

    siendo nombre, el nombre o denominación simbólica que quiere darse al programa que comienza a escribirse. No es obligatorio utilizar esta sentencia,; pero si figura en el programa, debe escribirse en primer lugar.

    Para indicar la terminación de la ejecución de un programa FORTRAN es necesario emplear la sentencia STOP, cuya sintaxis o forma general es:

    STOP n

    donde n es una serie de hasta cinco dígitos o bien una constante carácter (Ej: STOP 243, STOP ‘final’)

    Un programa FORTRAN puede contener varias sentencias STOP o lo que es lo mismo, varios puntos de parada. Por ello aunque el uso de n no es obligatorio, es conveniente para poder saber donde realmente se ha detenido un programa, ya que la constante n puede ser visualizada en una unidad de salida, cuando se produce la parada.

    La última sentencia de un programa tiene que ser:

    END

    Esta sentencia equivale al final de un programa ejecutable e indica al compilador que ya no existen más sentencias en el programa fuente para ser convertidas en programa objeto.

    Para resumir, diríamos que STOP produce una parada lógica y definitiva y sirve para detener un proceso; END sirve para indicar el final de una compilación.

    Por útlimo diré que cualquier línea precedida por el símbolo * o C se entenderá como un comenatrio, y el compilador lo obviará a la hora de codificar el programa. Esto puede resultar útil, ya que puede hacer un prorama más legible para personas que no sea el propio programador. Este símbolo se coloca en la primera columna, espacio destinado para este fin.


    Ejemplo:

    	PROGRAM suma
    
    *  Este programa efectúa la suma de dos números
    	DIMENSION valor(2)
    	valor(1)=2
    	valor(2)=3
    *  Se introduce los valores de los dos números en un vector de dos dimensiones
    	sumavalor=valor(1) + valor(2)
    
    	STOP
    	END


    La sentencia CONTINUE es ejecutable pero no genera instrucción alguna al ser traducida a código máquina por el compilador. Su uso más corriente es el siguiente: como se mencionará después en las reglas del DO, la sentencia CONTINUE se emplea para colocar como última sentencia en este bucle. Otra aplicación es la de sustituir CONTINUE por una sentencia que anteriormente se hacia referencia. Su sintaxis es muy simple:

    CONTINUE

    Para indicar una parada temporal en la ejecución de un programa FORTRAN se utiliza la sentencia PAUSE, cuya sintaxis o forma general es:

    PAUSE n

    donde n es una serie de cinco dígitos como máximo o bien una constante carácter (Ej: PAUSE, PAUSE 234, PAUSE ‘Parada en el programa’).

    Sentencia GO TO

    En los programas preparadas por un ordenador, las instrucciones se ejecutan, mientras no se disponga lo contrario, secuencialmente, es decir, acabada la realización de una de ellas, comienza la ejecución de la siguiente.

    En cambio existen situaciones donde nos interesa repetir una instrucción o ejecutar una instrucción que viene más abajo ignorando de esta manera las sentencias siguientes. Esto saltos se denominan bifurcaciones, y se realizan mediante la instrucción GO TO o GOTO. Esta sentencia puede ser de dos tipos: incondicional o calculada.

    La sintaxis para el GO TO incondicional es la siguiente:

    GO TO n

    siendo n el número o etiqueta de una sentencia ejecutable que parecerá en el mismo programa: es, por consiguiente, una constante entera positiva y distinta de cero de valor n<99999. La constante n representa el número de la siguiente instrucción a realizar, es decir, el lugar preciso donde va a efectuarse la bifurcación. Este número puede escribirse entre las columnas 1 a 5 de la hoja de codificación.

    La sintaxis para el GO TO calculada es la siguiente:

    GO TO (n1, n2, .., nh), i

    siendo i un nombre de una variable. n1, n2, .., nh son números o etiquetas de sentencias que se encuentran en el programa. La coma (,) que precede a la i es opcional. Con esta instrucción existe la posibilidad de bifurcar a diversas sentencias, según sea el valor de la variable i. Si dicha variable toma el valor 1, se bifurcará a la sentencia número n1; si 2 a la n2 y así sucesivamente. Cuando sea i <1 o bien i>h, esta instrucción no tiene ningún efecto y se ejecuta la sentencia siguiente en consecuencia.


    Ejemplo:

    	PROGRAM descuentos
    
    	...
    	...
    *  Este programa dependiendo del estado efectúa un descuento o otro
    	GO TO (10, 20, 30), estado
    *  Estado es una variable que puede optar tres valores: 1, 2 o 3
    *  soltero
    10	paga=sueldo - 200.0
    	GO TO 50
    *  casado
    20	paga=sueldo - 300.0
    		GO TO 50
    *  viudo
    30	paga=sueldo - 400.0
    	GO TO 50
    
    50	STOP
    	END


    Sentencias IF y DO

    Otra sentencia que se emplea para realizar bifurcaciones, según ciertas condiciones, es la sentencia IF. Responde a la sintaxis siguiente.

    IF (e), n1, n2, n3

    siendo e una expresión aritmética entera o real y n1, n2 y n3 son números o etiquetas se sentencias ejecutables, que se encuentran en el mismo programa. El significado de esta instrucción es: si el valor de la expresión e es menor, igual o mayor de cero, el control se transfiere, respectivamente, a la sentencia n1, n2 o n3 respectivamente.


    Ejemplo:

    	PROGRAM pares
    
    *  Suma de los números pares menores de 102
    	I=2
    	suma=0
    10	suma=suma + I
    	I=I+2
    	IF (I-100)10,10,20
    20	STOP
    	END


    Para ejecutar repetidamente una serie de sentencias en bucle, tiene mucha utilidad en el lenguaje FORTRAN el uso de una sentencia especial: la sentencia DO. Su sintaxis es:

    DO n, i = m1, m2, m3

    siendo n una constante entera que indica el número de una sentencia posterior a la DO, que se denomina sentencia terminal del bucle DO. i es una variable entera y m1, m2, m3 son constantes o variables enteras, reales, o de doble precisión e indican un valor inicial, un valor final y un incremento. La variable m3 puede omitirse si su valor es igual a 1. Se pueden introducir tantos DO dentro de otros (DO en nido).

    Reglas sobre el uso del DO

    • El valor de la variable o constante m3 de una sentencia DO no puede ser nunca cero.
    • La ultima sentencia del rango de un DO ha de terminar con la sentencia CONTINUE.
    • No esta permitido bifurcar desde fuera hacia dentro del rango de un DO, si de forma inversa.
    • El valor de la variable del DO, i, es usado automáticamente dentro del rango; pero no está permitido redefinirla.
    • Está permitido todo tipo de bifurcación dentro del propio rango.
    • Tratándose de un nido de DO, debe tenerse en cuenta que todas las instrucciones del más interno deben estar contenidas en el rango del externo.


    Ejemplo:

    	PROGRAM cuadrados
    
    *  Suma de los cuadrados de los números impares comprendidos entre 1 y 10
    	DO 10 I=1, 10, 2
    	SUMA=SUMA + I*I
    10	CONTINUE
    	STOP
    	END

  • Volver a la sección

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.