FORTRAN-77
El lenguaje "FORTRAN" fue el primero de los lenguajes de alto nivel. Su nombre es un acrónimo de "FORmula TRANslation". Fue desarrollado para la computadora IBM 704 por John Backus y un equipo de trece programadores en IBM durante los años 1954 al 1957. Según la dotación física mejoró el lenguaje "FORTRAN" también fue refinado y extendido. Para el 1962 ya había sufrido cuatro revisiones y en 1977 apareció su quinta revisión, conocida hoy en día como "FORTRAN-77". Ya están trabajando en una versión conocida como "FORTRAN-90". Es uno de los pocos lenguajes de alto nivel para el cual existe un estándar (ANSI X3.9-1978).
Como el acrónimo de su nombre nos indica su propósito es el de facilitar la codificación de fórmulas; convirtiéndose así en una poderosa herramienta para el matemático, el ingeniero y el científico.
Un programa en "FORTRAN" consiste de líneas o registros de hasta ochenta (80) columnas de largo, subdivididas en cuatro campos. De la columna 1 hasta la 5 es utilizada para un número de oración (entre 1 y 99999) en aquellos raros casos que sea necesario. La columna 6 se utiliza para indicar una continuación de la línea anterior; cualquier caracter excepto el cero y el espacio en blanco es permitido. Las columnas de la 7 hasta la 72 es donde se presentan las oraciones en sí. Las columnas 73 a la 80 son ignoradas por el compilador.
La letra C o un asterisco en la columna 1 sirven para identificar un comentario.
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$'()*+-/,.:= y el espacio en blanco
No existen palabras reservadas en el lenguaje.
El comienzo del programa se identifica con la oración de especificación PROGRAM nombre. El nombre se construye según las reglas de construcción de nombres de variables.
El final del programa se identifica con la oración de especificación END.
No provee para indicar el propósito.
No provee para indicar el autor.
Punto fijo - ausencia del punto decimal
Punto flotante - presencia del punto decimal y menos de ocho dígitos en total ó la notación E
Doble precisión - presencia del punto decimal y ocho o más dígitos en total o la notación D (similar a la notación E)
Complejas - ( const.pto.flot. , const.pto.flot. )
Lógicas - .TRUE. => cierto y .FALSE. => falso
Caracteres - 'ristra de caracteres'
Nombre de hasta un máximo de seis (6) letras y dígitos el primero de los cuales tiene que ser una letra.
Punto fijo - INTEGER lista de variables
Punto flotante - REAL lista de variables
Doble precisión - DOUBLE PRECISION lista de variables
Complejas - COMPLEX lista de variables
Lógicas - LOGICAL lista de variables
Caracteres - CHARACTER*k lista de variables. Donde "*k" representa la cantidad de caracteres para los cuales se interesa que el compilador reserve espacio en memoria. Cada variable puede tener su propio "*k". Si "*k" no es indicado el compilador utiliza el valor 1.
Operador | operación | Jerarquía | Precedencia |
+ | suma | 3 | => |
- | resta | 3 | => |
* | multiplicación | 2 | => |
/ | división | 2 | => |
** | elevar a potencia | 1 | <= |
ABS( x ) -> valor absoluto
ATAN( x ) -> tangente inversa
COS( x ) -> coseno de un ángulo en radianes
EXP( x ) -> antilogaritmo, Napier (e = 2.718281)
LOG( x ) -> logaritmo natural
LOG10( x ) -> logaritmo común
MOD( x, y ) -> módulo
SIN( x ) -> seno de un ángulo en radianes
SQRT( x ) -> raíz cuadrada
TAN( x ) -> tangente de un ángulo en radianes
constante aritmética
variable aritmética
exp.arit. oper.arit. exp.arit.
( exp.arit. )
función( exp.arit. )
.EQ. -> igual
.NE. -> diferente
.LT. -> menor
.LE. -> menor o igual
.GT. -> mayor
.GE. -> mayor o igual
Operador operación Jerarquía Precedencia .NOT. negación 1 <= .AND. y 2 => .OR. ó 3 =>
constante lógica
variable lógica
exp.log. oper.log. exp.log.
( exp.log. )
exp.arit. oper.rel. exp.arit.
Para terminar la ejecución se utiliza la oración de control STOP.
variable numérica = expresión numérica
variable lógica = expresión lógica
variable de caracteres = expresión de caracteres
WRITE(u,f) lista de expresiones
Donde u identifica la unidad de salida, la cual varía en cada instalación; el asterisco identifica la pantalla. Y f identifica el formato; ya sea por medio de un número de la oración FORMAT, el nombre de un arreglo que contiene el formato, o el formato en sí; un asterisco identifica formato libre.
READ(u,f) lista de variables
Donde u identifica la unidad de entrada, la cual varía en cada instalación; el asterisco identifica el teclado. Y f identifica el formato; ya sea por medio de un número de la oración FORMAT, el nombre de un arreglo que contiene el formato, o el formato en sí; un asterisco identifica formato libre.
IF ( expresión lógica ) THEN....ELSE....END IF
DO WHILE ( expresión lógica )....END DO
ó
WHILE ( expresión lógica )....END WHILE
ó
DO n índice = valor inicial, límite, incremento....n CONTINUE
Donde n es un número de oración único e índice es la variable controladora.
tipo del valor que produce FUNCTION nombre de la función ( nombres de los parámetros ).....Se utiliza igual que la funciones predefinidas.
nombre de la función = expresión
RETURN
END
SUBROUTINE nombre de la función( nombre de los parámetros ).....Se utiliza con la oración CALL nombre de la función( argumentos )
RETURN
END
Son declarados en la oración de declaración:
- Tipo de la variable lista de nombres de variables con sus límites
- nombre de la variable( límite inferior : límite superior , ... )
Si no se indica el límite inferior el compilador usa 1. Una vez declarada la variable se utiliza con su ó sus suscritos entre paréntesis, separados por comas.
Archivos
Apertura:OPEN( UNIT = u, FILE='nombre archivo' )Cotejo:
Donde u identifica la unidad con un número.EOF( u )Cierre:CLOSE( u )
Especificaciones de formatos
- Punto fijo - Iw
- Punto flotante - Fw.p
- Notación E - Ew.p
- Doble precisión - Dw.p
- Complejos - dos especificaciones de punto flotante
- Lógicos - Lw
- Caracteres - Aw
- Terminar línea - /
- Títulos - wHtítulos
- Espacios - wX
EJEMPLO
PROGRAM EJMPLO
C PROPOSITO : EJEMPLO DE PROGRAMA EN FORTRAN
C AUTOR: PROF. CABASSA
INTEGER I
REAL A(1:100)
DOUBLE PRECISION S
OPEN( UNIT = 3, FILE= 'EJEMPLO.DAT' )
I = 1
READ(3,1) A(I)
1 FORMAT (F10.3)
WHILE ( .NOT. EOF( 3 ) .AND. I .LT. 100 )
I = I + 1
READ(3,1) A(I)
END WHILE
IF ( I .EQ. 1 ) THEN
WRITE(*,*) 'NO ENTRO VALORES'
ELSE
S = PROMED( A, I - 1 )
WRITE(*,2) S
2 FORMAT (1X, 15HEL PROMEDIO ES , D20.6 )
END IF
CLOSE( 3 )
STOP
END
REAL FUNCTION PROMED( X, N )
C PROPOSITO : CALCULAR PROMEDIO
C AUTOR : PROF. CABASSA
INTEGER I, N
REAL X(1:N), SUMA
SUMA = 0.0
DO 123 I = 1, N, 1
SUMA = SUMA + X(I)
123 CONTINUE
PROMED = SUMA / FLOAT( N )
RETURN
END
Última modificación : lunes 29 de junio de 1998
©Derechos Reservados - 1991 - Prof. H. D. A. Cabassa