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.


Descripción:

Características generales:

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.

Caracteres disponibles:

ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$'()*+-/,.:= y el espacio en blanco

No existen palabras reservadas en el lenguaje.

Composición:

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.



Constantes

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'


Variables

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.


Operadores aritméticos

Operador operación Jerarquía Precedencia
+ suma 3 =>
- resta 3 =>
* multiplicación 2 =>
/ división 2 =>
** elevar a potencia 1 <=






Funciones aritméticas

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








Expresiones aritméticas

  1. constante aritmética

  2. variable aritmética

  3. exp.arit. oper.arit. exp.arit.

  4. ( exp.arit. )

  5. función( exp.arit. )







Operadores relacionales

.EQ. -> igual

.NE. -> diferente

.LT. -> menor

.LE. -> menor o igual

.GT. -> mayor

.GE. -> mayor o igual






Operadores lógicos

Operador operación Jerarquía Precedencia
.NOT. negación 1 <=
.AND. y 2 =>
.OR. ó 3 =>





Expresiones lógicas

  1. constante lógica

  2. variable lógica

  3. exp.log. oper.log. exp.log.

  4. ( exp.log. )

  5. exp.arit. oper.rel. exp.arit.



Oraciones:

Para terminar la ejecución se utiliza la oración de control STOP.

Asignación

variable numérica = expresión numérica

variable lógica = expresión lógica

variable de caracteres = expresión de caracteres

Salida

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.

Entrada

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.




Cotejo

IF ( expresión lógica ) THEN
....
ELSE
....
END IF




Repetición

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.

Funciones

tipo del valor que produce FUNCTION nombre de la función ( nombres de los parámetros )
.....
nombre de la función = expresión
RETURN
END
Se utiliza igual que la funciones predefinidas.
SUBROUTINE nombre de la función( nombre de los parámetros )
.....
RETURN
END
Se utiliza con la oración CALL nombre de la función( argumentos )


Arreglos

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' )
Donde u identifica la unidad con un número.
Cotejo:
EOF( u )
Cierre:
CLOSE( u )

Especificaciones de formatos





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