Lenguaje de programación FORTRAN
El lenguaje FORTRAN incluye números expresados como constantes o variables, ambos son catalogados como: enteros (de punto fijo), reales (punto flotante), complejos y lógicos.
Las constantes y variables enteras se escriben sin punto decimal y por lo tanto sólo pueden ser números enteros. Una constante entera puede ser positiva, negativa o cero.
Las constantes y variables reales son números escritos con punto decimal obligatoriamente, aún cuando sean números enteros o cero, (4.5, 0., -215. y 39.126 son ejemplos de ello). Los números reales se pueden expresar en una constante llamada radio de dos formas distintas, de manera decimal o en forma exponencial. Por ejemplo si el radio es de 125.124 se puede expresar como
radio = 125.124,
radio = 1.25124E+2, o
radio = 125124E-3
Todas estas formas son validas. También se puede expresar como un número de doble precisión, así.
radio = 1.25124D+2, o
radio = 125124D-3
En FORTRAN las variables enteras por convención deben tener siempre un nombre que empiece con I, J, K, L, M, o N. Las variables reales pueden tener un nombre que empiece con cualquier otra letra del alfabeto. Esta convención se puede modificar al utilizar la proposición IMPLICIT y otras proposiciones que permiten designar el tipo de variable como (REAL, INTEGER, COMPLEX, LOGICAL, DOUBLE, etc.). Los ejemplos 1,2 y 4 muestran claramente éstas declaraciones.
El programa debe contener las órdenes del lenguaje FORTRAN, y debe cumplir con cierta estructura propia de FORTRAN, a la que llamamos sintaxis o lenguaje de programación.
- El programa se escribe por líneas.
- La línea tiene una anchura de 80 columnas, como la mayoría de las pantallas.
- En la columna 1 se coloca la letra C para indicar que la línea es de comentario.
- En las columnas 1 a 5 pueden colocarse un número que identificará a esa línea como una etiqueta.
- Si una sentencia es demasiado larga para una sola línea, puede continuarse en la siguiente colocando cualquier símbolo distinto de un espacio en blanco o un cero en la columna 6. Es recomendable emplear siempre el mismo símbolo, yo recomiendo & o # como símbolos de continuidad. La longitud máxima de una sentencia Fortran puede especificarse hasta en 20 líneas.
- Las sentencias deben estar situadas entre las columnas 7 y 72
- El compilador ignora las líneas en blanco
- Las columnas 73 a 80 reciben el nombre de campo de identificación. El compilador ignorará cualquier carácter que se coloque en esas columnas, pero aparecerá en los listados del programa fuente.
- En la columna 1 se puede colocar una C o un asterisco (*) para que el compilador ignore el contenido de la línea y lo considere como un comentario. Para el FORTRAN 90 se debe utilizar en lugar de la C o el asterisco, el símbolo de exclamación ! antes de lo será un comentario.
- Recuerda que la extensión del nombre del archivo para FORTRAN 77 debe ser la de FOR. Algunos nombres de programas fuente son: gas.for, prog1.for, reactor.for, etc. Para FORTRAN 90 se emplea la extensión F90.
Símbolos de operación en operaciones aritméticas
Los símbolos de operaciones aritméticas son muy similares a los ya conocidos, y estos dan los siguientes resultados.
Símbolo | Operación efectuada | Ejemplo | REALES A = 3.0, B = 4.0 | ENTEROS A = 3, B = 4 |
+ | Adición | C = A + B | C = 7.0 | C = 7 |
– | Sustracción | C = A – B | C = -1.0 | C = -1 |
* | Multiplicación | C = A*B | C = 12.0 | C = 12 |
/ | División | C = A/B | C = 0.75 | C = 0 |
** | Exponenciación | C = A**B | C = 81.0 | C = 81 |
Los símbolos de operación no pueden aparecer juntos, es decir, la expresión
C = A*-B
es una expresión no válida. Se debe escribir
C = A*(-B)
Los paréntesis se utilizan en una expresión FORTRAN para agrupar en la misma forma que se utilizan en matemáticas. Cuando se requiere más de una par de paréntesis es una expresión FORTRAN, el orden de las operaciones indicadas es de los paréntesis interiores hacia afuera. Como ejemplo, revisemos la fórmula general para una ecuación de segundo grado.

al expresarla en lenguaje FORTRAN quedaría así
X1 = ( – B + (B**2 – 4*A*C)**0.5)/(2*A)
Si no se emplean los paréntesis el resultado no será el esperado. Por ejemplo, para resolver x^2 + x – 6 , las raíces son x1= 2 y x2 = -3.
Un error común que cometen los jóvenes que están aprendiendo a programar es el siguiente, evalúan la formula general así:
X1 = -B + (B**2 – 4*A*C)**0.5/2*A
Sin embargo el resultado que se obtendrá será de X1 = 1.5
Funciones matemáticas
Las funciones matemáticas como la raíz cuadrada, seno, coseno, etc., no se deben programar cada vez que se requieran. Esas funciones están preprogramadas y tiene un nombre específico en FORTRAN. La siguiente tabla muestra el empleo de las funciones matemáticas más comúnmente empleadas.
Función | Nombre en FORTRAN | Ejemplo |
Raíz cuadrada | SQRT | SQRT(B*B-4.*A*C) |
Exponencial | EXP | EXP(X) |
Logaritmo natural | LOG o ALOG | LOG(C*D) |
Logaritmo decimal | LOG10 | LOG10(X) |
Seno, en radianes | SIN | SIN(TETA) |
Coseno, en radianes | COS | COS(TETA) |
Tangente, en radianes | ATAN | ATAN(B/A) |
Valor absoluto | ABS | ABS(Y-X) |
Las funciones que no aparecen se pueden obtener a partir de identidades u otras fórmulas basadas en las funciones mencionadas. Por ejemplo, para obtener el logaritmo base diez, se emplea la identidad
D = LOG(X)/LOG(10.)
donde X es el dato a evaluar y D es el logaritmo decimal de X.
Proposición de Asignación Aritmética
Tienen la apariencia general de las fórmulas algebraicas ordinarias. Por ejemplo la fórmula

escrita como proposición FORTRAN queda
D = (B*B – 4.*A*C)**.5
Existe otra variante para esta misma fórmula. Sí

en FORTRAN quedaría
D = SQRT(B*B – 4.*A*C)
Note que el número 4 lleva punto decimal, esto garantiza que el producto de 4*a*c dé como resultado un número real.
Proposición de Control
Controlan el orden en que deben ejecutarse las proposiciones dentro del programa. Existen proposiciones de transferencia incondicional y condicional.
La proposición de transferencia incondicional, como
GO TO 25
Se utiliza para interrumpir la secuencia de ejecución y transferir la dirección a una etiqueta específica. En el ejemplo anterior, cambia a la etiqueta 25.
La proposición de transferencia calculada, como
GO TO (10,20,30,40,50) J
Es una proposición condicional y transfiere el control a otras etiquetas dependiendo del valor que asuma la variable J. Es decir, transferirá el control a la etiqueta 10 si J es 1, a la etiqueta 20 si J es 2, a la etiqueta 30 si J es 3, y así sucesivamente.
A la variable J no se le puede asignar un valor mayor que el número de opciones que aparecen entre el paréntesis de la proposición GO TO.
La proposición de transferencia aritmética, como
IF (X – X1) 15,20,5
También es una preposición de control condicional pero es aritmética. Es decir, permite la transferencia a tres etiquetas dependiendo del valor de la expresión encerrada entre paréntesis. En el ejemplo, transfiere el control a la etiqueta 15 si la cantidad (X-X1) es negativa, a la etiqueta 20 si vale cero, y a la etiqueta 5 si es positiva.
Proposición de entrada / salida
Estas proposiciones controlan la transmisión de información entre la computadora y sus dispositivos periféricos (lectoras, impresoras, archivos). Le indican que trasmita de la memoria a un dispositivo de salida, o de un dispositivo de entrada a la memoria. Estas proposiciones incluyen a: READ, WRITE, ACCEPT, ACCEPT TAPE, PRINT, y PUNCH. En la mayoría de los casos, estas proposiciones están muy ligadas con la proposición FORMAT.
La proposición FORMAT asociada con una instrucción de entrada de datos le informa al compilador acerca del número de espacios o columnas utilizadas para cada valor, la forma de cada número real, el modo de cada valor, y la colocación del punto decimal.
Una proposición FORMAT asociada con una proposición de salida informa al compilador del número de espacios o columnas que se deben asignar a cada unidad de salida, el modo de la cantidad, la forma de salida de cada valor real, y el número de dígitos que deben aparecer después del punto decimal. Por la importancia de esta instrucción, la explicaremos abundantemente.
Proposición de entrada
Se emplea para aceptar valores del usuario a través del teclado. Ilustremos a través de ejemplos cada una de las proposiciones de entrada típicas. Primero veamos la instrucción READ sin formato explícito.
READ 5,X,Y,Z
Aquí, el número 5 indica el dispositivo de entrada, como una lectora de tarjetas o desde el teclado, las variables X, Y y Z definen por su código del alfabeto el formato de entrada, es decir, los considera como datos reales.
La ejecución de la instrucción
READ (5,8) A,B,I
Hace que se lean tres valores de datos de la unidad de entrada o dispositivo asociado con el número 5. El número 8 está asociado con la instrucción FORMAT y con la respectiva proposición READ. Es decir, se requieren de dos líneas de programa, una para la instrucción READ y otra para el FORMAT. Así,
READ (5,8) A,B,I
8 FORMAT F6.3,F6.2,I3
Los formatos F6.3, F6.2 e I3 se explican más adelante en proposiciones de formato.
Proposición de salida
Las proposiciones de salida suministran un medio para transmitir los resultados del programa a una forma de salida impresa, perforada, o de otro tipo. Generalmente, se utiliza para enviar a la pantalla de la computadora los valores almacenados en las variables. Las proposiciones de salida tienen las siguientes formas generales.
PUNCH n, lista
PRINT n, A,B,C,D
WRITE (i, n) lista
En estas preposiciones la i especifica el dispositivo de salida, y la n indica el formato de salida. La lista denota los nombres de las variables, separadas por comas, cuyos valores deben aparecer como salida. La orden PRINT muestra como se expresa la lista de variables.
La proposición PUNCH se emplea para obtener datos de salida perforados en tarjetas, ya no se utiliza debido a que ahora la información se almacena digitalmente. La proposición PRINT es mas utilizada en los inicios de la elaboración del programa, es informal y puede dar una aproximación a los resultados esperados. Finalmente, la proposición WRITE permite especificar todos los dispositivos de salida y todos los formatos. En pruebas de programas o en los inicios de la elaboración del programa se emplea como WRITE (*,*) que indica la salida se envía a cualquier dispositivo de salida y en cualquier formato.
Proposiciones de formato
Como se menciono previamente la instrucción FORMAT está asociada con proposiciones de entrada y salida. Con esta instrucción el compilador sabe como se van ha alimentar los datos de entrada y la forma como deben suministrarse a la salida. En las siguientes dos líneas
Print 6, A,B,C,D
6 FORMAT (4F8.2)
El formato de salida es el especificado en la etiqueta número 6, y enseguida se imprimen los valores de A, B, C y D respectivamente, utilizando máximo 8 espacios. De estos 8 espacios, 2 lo ocupan los decimales, 1 espacio el punto decimal y los restantes 5 para la parte entera. El número 4 antes de la F indica que el formato se repite cuatro veces, una por cada variable. El siguiente programa en FORTRAN 90 muestra claramente el uso de la instrucción FORMAT
a = 1125.256
b = 12345.6789
c = 1.2564
d = 0.253644
print 10, a, b, c, d
10 format (4f8.2)
end
El resultado del programa es
1125.2612345.68 1.26 0.25
Para mejorar la presentación de la salida hay que cambiar el formato a f10.2, y así el resultado ahora será.
1125.26 12345.68 1.26 0.25
Si se desea mostrar más decimales y más enteros, se puede emplear f12.4, y la impresión ahora será
1125.2560 12345.6787 1.2564 0.2536
El programador debe recordar que FORTRAN siempre consume una columna al imprimir, esto se debe a que es utilizado para ajustar el retorno de carro de la impresora.
Proposición de especificación
Son necesarias para que el compilador de FORTRAN administre la memoria necesaria para ejecutar el programa. La proposición DIMENSION es una de las especificaciones típicas para definir arreglos dimensionales.
DIMENSION A(5), B(10,10)
Con esta instrucción, FORTRAN reserva 6 celdas para la variable A y 121 celdas para la variable B.
A(5) =
B(10,10) =
Proposiciones de repetición
DO n I = n1, n2, n3
Líneas que se repetirán
n CONTINUE
La proposición DO hace que el programa repita una secuencia específica de instrucciones contenida entre el DO y CONTINUE. Esta proposición se conoce como ciclo o Loop, y se emplea generalmente cuando se especifica un número máximo de repeticiones. La etiqueta n especifica el límite hasta donde se repetirán las líneas. La variable I , representa una variable entera que opera como contador o índice del ciclo. Los números n1,n2 y n3 representan constantes enteras que operan como valor inicial, valor final e incremento, respectivamente.
El siguiente programa en FORTRAN 90 ejemplifica y aclara lo mencionado.
! suma de los primeros 10 números
suma = 0.
A =1
B =10
C =1
do 5 I = A, B, C
suma = suma +I
5 continue
print *, suma
end
Si se omite el incremento n3, (junto con la coma que le precede) en la proposición DO, el índice se incrementará por defecto de uno en uno. También puede asumir valor negativo como –1 u otro múltiplo, pero no puede asignársele valor decimal.
En algunas versiones recientes de FORTRAN, como en FORTRAN 90, ya no es necesario usar la instrucción CONTINUE. En algunas ocasiones también se emplea la instrucción END DO.
Ciclos DO anidados
DO 9 I=2,M
DO 9 J=2,N
L = J – 1
SUM = 0.
DO 8K = 1,L
- SUM = SUM + B(I,K)*T(K,J)
- B(I,J) = A(I,J) – SUM
·
Cuando se colocan una o más proposiciones DO dentro de otra proposición DO, el conjunto de ciclos DO se denomina ciclos DO anidados. El primer ciclo se considera exterior y el segundo ciclo interior. En la mayoría de los casos se puede transferir el control de un ciclo interior al exterior, pero nunca del exterior al interior.

El uso de los ciclos DO anidados es una herramienta muy poderosa. Son especialmente convenientes para la programación que encierra arreglos bi-o-tridimensionales, ya que los índices de los ciclos DO corresponden directamente a los subíndices de los elementos del arreglo dimensional.
Proposiciones de interrupción
PAUSE
STOP
END
Estas instrucciones ejecutan las funciones que indican sus nombres. La proposición PAUSE hace que el programa detenga temporalmente la secuencia de ejecución y solicitará para continuar que se presione la tecla Intro (o Enter).
La proposición STOP hace que la computadora detenga totalmente la ejecución del programa.
La proposición END es la última proposición de todos los programas y subprogramas FORTRAN, su propósito es notificar al compilador que ha llegado al final del programa fuente.
Operadores relacionales
En FORTRAN se emplean en lugar de los símbolos matemáticos de relación (>, <, =, etc.), una combinación de dos letras entre dos puntos que indican la relación matemática que existe entre ellos. Los operadores relacionales aritméticos son:
Operador | Descripción | Significado en inglés |
.LT. | Menor que | Lower That |
.LE. | Menor o igual a | Lower or Equal |
.EQ. | Igual a | Equal |
.GE. | Mayor o igual a | Grater or Equal |
.GT. | Mayor que | Grater That |
.NE. | No igual a | Not Equal |
Los operadores lógicos son:
Operador | Descripción |
.OR. | Disyunción (ó) |
.AND. | Conjunción (y) |
.NOT. | Negación (no) |
Ambos operadores están muy relacionados con la proposición IF.
Ejemplos
IF (I.EQ.J) GO TO 5
IF (ABS(XSTAR – XI)) .LE. EPS) GO TO 7
IF (EOS.EQ.1) THEN
U = 1
V = 0
C = 12.25
ELSE
U = 2
V = 1
C = 10.50
END IF
En la versión de FORTRAN 90 ya se pueden utilizar los símbolos matemáticos directamente del teclado, en las versiones anteriores hay que seguir utilizando las literales.
Bibliografía
- James, M. L., Smith, G.M., Wolford, J.C. Métodos numéricos aplicados a la computación digital con FORTRAN. Representaciones y servicios de ingeniería, S.A. México, 1973.
- Nyhoff, L. R. and Leestma, S. C.. Introduction to Fortran 90 for Engineers and Scientists. Prentice Hall.
- Leestma, S. y Nyhoff, L. “FORTRAN 77 and Numerical Methods for Engineers and Scientists”. Prentice Hall.
- Hammontd, R. H. / Rogers, W. B. / Crittenden, J. B. Introducción al FORTRAN 77 y la PC Mc Graw Hill. México, 1988.
- Ellis , T.M.R. FORTRAN 77 Programming. Addison Wesleey, 1990.
- McCracken, D. D. and Salmon, W. I. Computing for Engineers and Scientists with FORTRAN 77. Second Edition John Wiley and Sons
- Zirkel, G. and E. Berlinger. Understanding FORTRAN 77 & 90. International Thompson Publishing Company
Técnica para elaborar un programa en FORTRAN
Para la elaboración de un programa en Fortran se deben seguir las siguientes etapas:
- Iniciar el programa o compilador Fortran
- Al iniciar el programa muestra el editor
- Aquí el editor espera que le demos el nombre del archivo fuente que se va a iniciar.
Una vez dado el nombre se inicia una pantalla en la cual podemos escribir el programa fuente, respetando los espacios y símbolos dados en el ejemplo. Por regla de FORTRAN el texto o instrucciones se deben inscribir desde la columna 7. En la parte inferior del editor se muestra la línea y la columna en que se sitúa el cursor.
- Para guardar la información del archivo en el editor, se elige RUN.
- En el proceso de compilación, en el caso de compilar con Fortran 77 Lahey, presiona las teclas Alt y F3. En el editor de Lahey, aparecerá la petición Dos Command:
Es recomendable que practiques para que adquieras la habilidad del programador en el proceso de compilación.
Ejemplos de programas en FORTRAN para ejercitar
Los siguientes programas te permitirán ir adquiriendo práctica en el proceso de compilación y en la mecanización para generar cualquier programa. Escríbelos tal cual están escritos, sólo omite la línea que indica el EJEMPLO, ya que de no hacerlo provocaras un error al intentar compilarlo. Por el momento no te preocupes si no entiendes algunas instrucciones, después al revisar el tema lenguaje de programación FORTRAN, tú mismo te contestaras tus dudas. En dado caso de que presentaras alguna duda con el manejo de los programas, acude con el profesor, él te ayudará.
EJEMPLO1.FOR
IMPLICIT REAL (A – Z)
PI = 3.1416
READ *, RADIO
C CALCULA CIRCUNFERENCIA Y AREA
PRINT , RADIO, 2*PI*RADIO, PI*RADIO**2
END
EJEMPLO2.FOR
C OTRA MANERA DE PROGRAMAR
IMPLICIT REAL (A – Z)
PI = 3.1416
READ (5, 501) RADIO
FORMAT (F10.0)
CIRCUM =2*PI*RADIO
AREA = PI*RADIO**2
WRITE (6, 502) RADIO, CIRCUM, AREA
502 FORMAT (3F5.4)
STOP
END
EJEMPLO3. FOR
* *************************************************************
* * PROGRAMA EJEMPLO DE COMENTARIOS *
* * *
* *************************************************************
C ASIGNACION DE VALORES A VARIABLES
A = 20.
B = 110
C EJECUTA LOS CALCULOS E IMPRIME
C C = A + B
WRITE (6, *) C ! IMPRIME Y SIN FORMATO
END
EJEMPLO4. FOR
REAL TABLE (100)
INTEGER DIMENS /5/
CALL SBRT(TABLE,DIMENS)
END
SUBROUTINE SBRT(TABLE,DIMENS)
INTEGER DIMENS
DO 250 K=1, DIMENS
TABLE (K) = K
250 CONTINUE
PRINT *, TABLE
END