Descargar

Fortran. Fórmula Translación (página 2)

Enviado por Emerson Rodriguez


Partes: 1, 2

A mediados de 1954 fue terminada una especificación del borrador para The IBM Mathematical Formula Translating System. El primer manual para el FORTRAN apareció en octubre de 1956, porque los clientes eran reacios a usar un lenguaje de programación de alto nivel a menos que su compilador pudiera generar código cuyo desempeño fuera comparable al de un código hecho a mano en lenguaje ensamblador.

Mientras que la comunidad era escéptica en que este nuevo método pudiera posiblemente superar la codificación a mano, éste redujo por un factor de 20 al número de sentencias de programación necesarias para operar una máquina, y rápidamente ganó aceptación. 

El lenguaje fue ampliamente adoptado por los científicos para escribir programas numéricamente intensivos, que incentivó a los escritores de compiladores a producir compiladores que pudieran generar un código más rápido y más eficiente. La inclusión en el lenguaje de un tipo de datos y de la aritmética de números complejos amplió la gama de aplicaciones para las cuales el lenguaje se adaptaba especialmente e hizo al FORTRAN especialmente adecuado para aplicaciones técnicas tales como la ingeniería eléctrica.

Por 1960, las versiones de FORTRAN estaban disponibles para los computadores IBM 709, 650, 1620, y 7090.

Significativamente, era cada vez mayor la popularidad del FORTRAN estimuló a fabricantes de computadores de la competencia a proporcionar compiladores FORTRAN para sus máquinas, así que por 1963 existían más de 40 compiladores FORTRAN. Por estas razones, el FORTRAN es considerado ser el primer lenguaje de programación ampliamente usado soportado a través de una variedad de arquitecturas de computador.

El desarrollo del FORTRAN fue paralelo a la temprana evolución de la tecnología del compilador. De hecho, muchos avances en la teoría y el diseño de compiladores fueron motivados específicamente por la necesidad de generar código eficiente para los programas en FORTRAN.

0

edu.red

Código FORTRAN en una tarjeta perforada, mostrando el uso especializado de las columnas 1-5, 6 y 73-80.

El primer estándar de FORTRAN se introdujo en 1962 y se llamó FORTRAN IV.

En 1966 se presentó el primer estándar ANSI (American National Standards Institute), que se conoció como FORTRAN 66. El segundo estándar ANSI, con muchas mejoras, se introdujo en 1977 (FORTRAN 77), y se convirtió en el estándar utilizado por la comunidad científica por muchos años. Incluso a la fecha es común encontrar muchos programas escritos en FORTRAN 77.

FORTRAN 77 tenía una serie de desventajas. Entre ellas una estructura muy rígida adaptada al uso de tarjetas perforadas ("forma fija"), que requería que ciertas columnas tuvieran usos específicos. Además, no permitía un uso dinámico de la memoria y no permitía realizar operaciones entre arreglos de números. Para mejorar esta situación, en 1990 se presentó un tercer estándar ANSI conocido como FORTRAN 90, que contenía muchas nuevas características y permitía una programación más estructurada. Una serie de cambios menores se presentaron en 1995 (FORTRAN 95), y actualmente se trabaja en un nuevo estándar ANSI (FORTRAN 2003).

VERSIONES DE FORTRAN

  • FORTRAN II

  • FORTRAN III

  • FORTRAN IV

  • FORTRAN 77

  • FORTRAN 90

  • FORTRAN 95

  • FORTRAN 2003

  • FORTRAN 2005

  • FORTRAN 2008

  • FORTRAN 2010

FORTRAN II

IBM FORTRAN II apareció en 1958. La mejora principal era apoyar , al permitir por escrito subrutinas de usuario y las funciones que volvió valores, con parámetros pasados por referencia.

 La declaración común, siempre una forma de subrutinas para el acceso común (o mundial) variables

  • Subrutina, FUNCIÓN y END

  • CALL y RETORNO

  • COMÚN

En los próximos años, FORTRAN II también añadió soporte estos tipos de datos  DOBLE PRECISIÓN y COMPLEJO.

Sencillo programa Fortran II

Este programa, por la fórmula de Herón, lee una tarjeta de datos que contiene tres dígitos enteros 5 A, B y C como entrada. Si A, B y C no pueden representar a los lados de un triángulo en la geometría plana, entonces el programa de ejecución de la voluntad termina con un código de error de "STOP 1".  De lo contrario, una línea de salida será impreso que indica los valores de entrada para A, B y C, seguidos de la superficie calculada del triángulo como un número de punto flotante con 2 dígitos después del punto decimal.

ZONA C de un triángulo con un cuadrado estándar ROOT FUNCIÓN

DE ENTRADA C – LECTOR TARJETA UNIDAD 5, entero de entrada de salida C- IMPRESORA unidad de línea 6, la producción real

C ENTRADA PANTALLA DE ERROR ERROR DE SALIDA CÓDIGO 1 EN CONTROL DE LISTADO DE EMPLEO

LEER TAPE INPUT 5, 501, IA, IB, IC

501 FORMATO (3I5)

IA C, IB y IC no podrá ser negativo

C Además, la suma de dos lados de un triángulo

C es mayor que el tercer lado, por lo que VERIFIQUE QUE TAMBIÉN

SI (IA) 777, 777, 701 701 IF (IB) 777, 777, 702 702 IF (IC) 777, 777, 703 703 IF (IA+IB-IC) 777 777 704 704 IF (IA+IC-IB) 777 777 705 705 IF (IB+IC-IA) 777 777 799 777 PARADA 1

C USO DE LA FORMULA HERON calculamos la

ZONA C del triángulo

799 S = FLOATF (IA + IB + IC) / 2.0 AREA = SQRT(S * (S – FLOATF (IA)) * (S – FLOATF (IB)) *

+ (S – FLOATF (IC)))

Escribir la salida Tape 6, 601, IA, IB, IC, AREA 601 FORMATO

(4H A=, I5, 5H B=, I5, 5H C=, I5, 8H AREA=, F10.2,

+ 13H PLAZA DE UNIDADES)

PARADA

FORTRAN III

IBM también desarrolló una FORTRAN III en 1958 que permitió el código ensamblador en línea entre otras características, sin embargo, esta versión nunca fue lanzada como un producto. Al igual que el FORTRAN 704 y FORTRAN II, FORTRAN III incluye características dependientes-máquina que hizo el código escrito en ella portable de la máquina a máquina. Las primeras versiones de FORTRAN proporcionadas por otros proveedores sufrieron los mismos inconvenientes.

FORTRAN IV

A partir de 1961, como resultado de demandas de los clientes, IBM comenzó a desarrollar un FORTRAN IV que eliminaban los dependientes de las características-máquina de FORTRAN II (como leer la entrada CINTA), al tiempo que añade nuevas características como una LÓGICA tipo de datos, lógica expresiones booleanas y la lógica IF como una alternativa a la aritmética instrucción IF. FORTRAN IV fue finalmente liberado en 1962, primero para el IBM 7030 ("Stretch") equipo, seguido por las versiones para el IBM 7090 IBM 7094.

En 1965, Fortran IV se suponía que era el "estándar" y de conformidad con las normas de la Asociación Americana X3.4.3 Grupo de Trabajo de FORTRAN.

FORTRAN 66

Tal vez el acontecimiento más significativo en la historia temprana de FORTRAN fue la decisión de la Asociación de Estándares Americanos (ahora ANSI) para formar un comité para desarrollar un "American Standard Fortran." El resultado de dos normas, aprobada en marzo de 1966, define dos idiomas, FORTRAN (basado en FORTRAN IV, que había servido de factor estándar), y de base FORTRAN (basado en FORTRAN II, pero despojado de su cargo funciones-máquina). El FORTRAN definido por la norma empezó a ser conocido como FORTRAN 66 (aunque muchos siguieron refiriéndose a ella como FORTRAN IV, el idioma en que se basa en gran medida el estándar). FORTRAN 66 efectivamente se convirtió en el primer estándar de la industria "versión de FORTRAN. 

FORTRAN 66 incluye:

  • Programa principal, subrutinas, FUNCIÓN y bloque de datos dependencias de programas

  • ENTERO, REAL, DOUBLE PRECISION, COMPLEJO y LÓ

  • GICA  (tipos de datos)

  • COMÚN, DIMENSIÓN y EQUIVALENCIA (declaraciones)

  • DATOS (declaración para especificar los valores iniciales)

  • Intrínseca y EXTERIORES (por ejemplola biblioteca) funciones

  • Asignación de declaración

  • GOTO, asignado GOTO, y se calcula GOTO (declaraciones)

  • Lógico IF y la aritmética (de tres vías) SI (declaraciones)

  • NO (bucles)

  • LEER, ESCRIBIR, RETROCESO, REWIND, y ENDFILE declaraciones para secuenciales I / O

  • FORMATO (declaración)

  • CALL, RETORNO, PAUSA, y PARADA (declaraciones)

  • Hollerith constantes en DATOS y FORMATO declaraciones, y como argumentos reales a los procedimientos

  • Identificadores de hasta seis caracteres de longitud

  • Las líneas de comentario

FORTRAN 77

Después del lanzamiento de FORTRAN 66 estándar, los proveedores de compiladores introdujeron una serie de extensiones a "Standard Fortran", que provocó ANSI en 1969 para comenzar a trabajar en la revisión de la norma de 1966. Proyectos finales de esta norma revisada y distribuida en 1977, lo que llevó a la aprobación formal de la norma FORTRAN nuevo en abril de 1978. La nueva norma, conocida como FORTRAN 77, añadió una serie de características significativas para hacer frente a muchas de las deficiencias de FORTRAN 66:

  • Bloque IF y END IF declaraciones, con la opción de ELSE y ELSE IF cláusulas, para proporcionar apoyo lingüístico para mejorar la programación estructurada

  • Incrementos negativos y cero cargos viaje

  • ABRIR, CERRAR, y CONSULTAR declaraciones para mejora / capacidad de O

  • De acceso directo / S de archivos

  • IMPLICIT declaración

  • CARÁCTER tipo de datos, con ampliación de las instalaciones muy a la entrada de caracteres y la producción y procesamiento de datos basado en caracteres

  • PARÁMETRO declaración para especificar constantes

  • GUARDE declaración de variables locales persistentes

  • Nombres genéricos para las funciones intrínsecas

  • Un conjunto de los intrínsecos (LGE, LGT, LLE, LLT) para léxica comparación de cadenas, basada en el ASCII secuencia de ordenación.

En esta revisión de la norma, una serie de características fuera suprimida o modificada de una manera que podría invalidar previamente los estándares y programas. (Retiro fue la única alternativa a la permitida X3J3 en ese momento, ya que el concepto de "desprecio" todavía no estaba disponible para los estándares de ANSI.) Si bien la mayoría de los 24 elementos de la lista de conflictos dirigida casos patológicos permitidos por la norma anterior, pero rara vez se usa, un pequeño número de capacidades específicas fueron removidos deliberadamente, tales como:

  • Hollerith constantes y Hollerith de datos, tales como:

GREET = 12HHELLO ALLÍ!

  • La lectura en una edición H (campo Hollerith) Descriptor en una especificación de formato.

  • Overindexing de límites de la matriz por subíndices.

DIMENSIÓN A (10,5)

Y = A (11,1)

  • Transferencia de control en el rango de un bucle DO (también conocido como "Extended Range").

Una práctica importante de extensión de FORTRAN 77 fue el lanzamiento de MIL-STD-1753 en 1978. Esta especificación, desarrollada por el Departamento de Defensa de EE.UU., estandarizado una serie de características implementadas por la mayoría de los compiladores de Fortran 77, pero no incluidas en la norma ANSI FORTRAN 77 estándar. Estas características eventualmente, deben incorporarse al Fortran 90 estándar.

El IEEE 1003.9 POSIX estándar, lanzado en 1991, proporcionó un medio simple para Fortran-77 programadores para emitir las llamadas al sistema POSIX. Más de 100 llamadas fueron definidos en el documento – que permite el acceso a la compatibilidad de control de procesos POSIX, el manejo de señales, archivo sistema de control, control de dispositivos, señalando procedimiento, y el arroyo de E / S en una forma portable.

El desarrollo de una norma revisada para tener éxito FORTRAN 77 sería retrasado en varias ocasiones como el proceso de normalización luchado para mantenerse al día con los rápidos cambios en la informática y la práctica de programación. Mientras tanto, como el "estándar FORTRAN" durante casi quince años, FORTRAN 77 se convertiría en el dialecto históricamente más importante.

Control Data Corporation Computadoras, había otra versión de FORTRAN 77, llamada Minnesota FORTRAN (FMN), diseñado especialmente para los estudiantes, con variaciones en la producción de construcciones, usos especiales de los Comunes y las declaraciones de datos, códigos y niveles de optimizaciones para la compilación y el errores de listas detalladas, extensos mensajes de advertencia, y depuración.

FORTRAN 90

El retraso es el sucesor de mucho para FORTRAN 77, informalmente conocido como Fortran 90 (y antes de eso, Fortran 8X), finalmente fue lanzado como un estándar ISO en 1991 y un estándar ANSI en 1992. Esta revisión importante añadió muchas características nuevas para reflejar los cambios significativos en la práctica de programación que había evolucionado desde la norma 1978:

  • De forma libre la fuente de entrada, también con minúsculas palabras clave Fortran

  • Los identificadores de hasta 31 caracteres de longitud

  • En línea comentarios

  • Capacidad para funcionar en las matrices (o la matriz de las secciones) en su conjunto, lo que simplifica enormemente las matemáticas y los cálculos de ingeniería.

  • Parciales enmascarados matriz de asignación y las declaraciones completas y expresiones de matriz, como   X (1: N) = R (1: N) * COS (A (1: N))

  • DONDE declaración para la asignación de matrices selectiva

  • Matriz con valores constantes y expresiones,

  • Definido por el usuario con valores de matriz de funciones y constructores matriz.

  • RECURSIVO procedimientos

  • Módulos, a grupo relacionado de procedimientos y los datos juntos, y ponerlos a disposición de las unidades de otro programa, incluyendo la capacidad de limitar el acceso sólo a determinadas partes del módulo.

  • Un mejor argumento-que pasa mecanismo enormemente, lo que permite interfaces que se comprueban en tiempo de compilación

  • Las interfaces de usuario-escrito para procedimientos genéricos

  • La sobrecarga de operadores

  • Derivado /resumen los tipos de datos

  • Nuevo tipo de datos sintaxis de declaración, para especificar el tipo de datos y otros atributos de las variables

  • La asignación dinámica de memoria  mediante la asignables  atributo y el ALLOCATE y DEALLOCATE declaraciones

  • POINTER atributo, asignación de punteros, y anular la declaración para facilitar la creación y manipulación de la dinámica de las estructuras de datos

  • Bucle estructurado construcciones, con un END DO declaración de terminación del bucle, y SALIR y CICLO declaraciones para "romper" fuera de lo normal NO iteraciones del bucle de manera ordenada

  • SELECCIONAR . . . CASO construcción de múltiples sentidos de selección

  • Especificación de portátiles de precisión numérica bajo control del usuario

  • Nuevo y mejorado los procedimientos intrínsecos.

función anticuados

Ejemplo

Estado / Destino en Fortran 95

Aritmética sentencia if

    SI (X) 10, 20, 30

parámetros de los no-entero o controlar las variables

    DO 9 X = 1,7, 1,6, -0,1

Suprimido

Compartidas Do-loop terminación oterminación con una declaracióndistintos de END DO o CONTINUE  

    9 DO J = 1, 10

        DO 9 K = 1, 109 L = J + K

La ramificación a END IF

desde fuera de un bloque

66 GO TO 77;. . .

    SI (E) ENTONCES;. . .77 END IF

Suprimido

Suplente de retorno

    SUBR CALL (X, Y * 100, * 200)

PAUSA declaración

    PAUSA 600

Suprimido

ASIGNAR declaración  y GO TO asignado

100. . .

    ASIGNAR AL 100 H    . . .    IR A H. . .

Suprimido

Asignación de los especificadores de FORMATO

    Asignar la F a 606

Suprimido

H editar los descriptores

606 FORMAT (9H1GOODBYE.)

Suprimido

Computarizada GO TO

    IR A (10, 20, 30, 40), el índice de

(Obso.)

Declaración de funciones

    FOIL (X, Y) = X ** 2 + 2 * X * Y + Y 2 **

(Obso.)

DATOS declaraciones  entre las instrucciones ejecutables

    X = 27,3

    DATOS A, B, C / 5,0, 12,0. 13,0 /. . .

(Obso.)

* CARÁCTER forma del carácter de declaración

    CHARACTER * 8 CADENA! Use CARACTER (8)

(Obso.)

Desde el carácter de longitud funciones

código fuente Fijo forma

* La columna 1 contiene * o! o C para los comentarios.C Columna 6 de continuación.

FORTRAN 95

Fortran 95 fue una revisión menor, sobre todo para resolver algunas cuestiones pendientes de la Fortran 90 estándar. Sin embargo, Fortran 95 también añadió una serie de extensiones, especialmente de los de alto rendimiento Fortran pliego de condiciones:

  • FORALL y anidados DONDE construye a las ayudas vectorización

  • Definidos por el usuario PURE y ELEMENTAL procedimientos

  • Predeterminado de inicialización de los componentes de tipo derivado, incluyendo la inicialización de puntero

  • Amplió la capacidad de utilizar las expresiones de inicialización de objetos de datos

  • Claramente definidos que asignables matrices son automáticamente, cancela la asignación cuando salen del ámbito de aplicación.

Un número de funciones intrínsecas se ampliaron (por ejemplo, un débil argumento ha sido añadido a la maxloc intrínseca).

Varias características que se señalan en Fortran 90 para ser obsoleto fueron retiradas de Fortran 95:

  • NO declaraciones utilizando REAL y DOUBLE PRECISION variables

  • La ramificación de un END IF declaración de fuera de su bloque

  • PAUSA declaración

  • ASIGNAR y se les asignará GOTO declaración, y se les asignará especificadores de formato

  • H descriptor de edición.

Un complemento importante de Fortran 95 es el informe técnico ISO TR-15581: Mejora de Instalaciones Tipo de datos, conocidos por el nombre TR asignablesEsta especificación define una mayor utilización de asignables matrices, antes de la plena disponibilidad de los compiladores de Fortran. Estos usos incluyen asignables matrices como componentes de tipo derivado, en maniquí de listas de argumentos de procedimiento, y como valores de retorno de la función. (Asignables matrices son preferibles a POINTER arrays, porque asignables matrices están garantizados por Fortran 95 que se cancela la asignación de forma automática cuando salen del ámbito de aplicación, eliminando la posibilidad de pérdida de memoria.

Además, el alias no es un problema para la optimización de las referencias de matriz, permitiendo que los compiladores generen código más rápido que en el caso de los punteros.)

Otro complemento importante de Fortran 95 es el ISO informe técnico TR-15580, punto flotante de manejo de excepciones-, se conoce informalmente como el TR IEEE. 

Esta especificación define el apoyo a la aritmética de punto flotante IEEE de punto flotante de manejo de excepciones.

La compilación condicional y cadenas de longitud variable.

Además de la obligatoria "lengua base" (definido en la norma ISO / IEC 1539-1: 1997), el lenguaje Fortran 95 también incluye dos módulos opcionales:

  • Diferentes cadenas de caracteres (ISO / IEC 1539-2: 2000)

  • La compilación condicional (ISO / IEC 1539-3: 1998)

Que, juntas, conforman varias partes del Estándar Internacional (ISO / IEC 1539).

De acuerdo con los desarrolladores de los estándares ", las piezas opcionales describen autónomas características que han sido solicitadas por un cuerpo sustancial de los usuarios y / o desarrolladores, pero que no se consideran de generalidad suficiente para que puedan exigir en todos los estándares y compiladores FORTRAN. " Sin embargo, si uno los estándares de Fortran proporciona estas opciones, entonces "debe ser proporcionada de conformidad con la descripción de las instalaciones en la parte apropiada de la norma."

FORTRAN 2003

La norma más reciente, Fortran 2003, constituye una revisión a la introducción de muchas nuevas características. Un resumen completo de las nuevas características de Fortran 2003 está disponible en el Grupo de Trabajo de Fortran (GT5) sitio web oficial.

A partir de ese artículo, las principales mejoras de esta revisión son:

  • Derivado mejoras tipo: con parámetros tipos derivados, un mejor control de la cesibilidad, la mejora de la estructura de constructores y finalizadores.

  • La programación orientada a objetos de apoyo: extensión de tipo y la herenciapolimorfismo dinámico, la asignación de tipo A y tipo-los procedimientos de la envolvente.

  • manipulación de las mejoras de los datos: componentes asignables (incorporando TR 15581), escriba los parámetros en diferido, VOLATILIDAD atributo, la especificación explícita de tipos

  • En los constructores de matriz y asignar los estados, las mejoras de puntero, las expresiones de inicialización extendido y mejorado los procedimientos intrínsecos.

  • Entrada / salida de mejoras: asíncrono de transferencia, el acceso corriente, se especifica la transferencia de las operaciones del usuario para los tipos de derivados, el usuario especifica el control de redondeo durante las conversiones de formato, constantes con nombre para las unidades pre conectados, la RAS declaración, la regularización de palabras clave, y el acceso a mensajes de error.

  • Procedimiento puntero.

  • Apoyo a la aritmética de punto flotante IEEE de punto flotante de control de excepciones (que incorpora TR 15580).

  • Inter operabilidad con el lenguaje de programación C.

  • Soporte para el uso internacional: el acceso a la ISO 10646 bytes 4 caracteres y la elección de decimal o coma en formato numérico de entrada / salida.

  • Integración mejorada con el sistema operativo anfitrión: el acceso a la línea de comando argumentos, las variables de entorno, y mensajes de error del procesador.

Un complemento importante de Fortran 2003 fue el informe técnico ISO TR-19767: Mejora de las instalaciones del módulo en Fortran. En este informe se sub-módulos, módulos de Fortran que hacen más similar al de Modula-2 módulos. Son similares a Ada sub-unidades niño privado. Esto permite la especificación y la implementación de un módulo que se expresa en unidades de programa separado, lo que mejora los envases de las grandes bibliotecas, permite la preservación de los secretos comerciales, mientras que la publicación definitiva de las interfaces, y evita las cascadas de compilación.

FORTRAN 2008

Se están realizando esfuerzos para desarrollar una revisión de Fortran 2003, denominado provisionalmente Fortran 2008. Al igual que con Fortran 95, este pretende ser una actualización menor, la incorporación de las aclaraciones y correcciones que se Fortran 2003 y sub-módulos de la incorporación de TR-19767 en el idioma base, así como la introducción de un selecto capacidades nuevas. A partir de febrero de 2007, las nuevas capacidades incluidas propuestas.

COMPILAR Y CORRER PROGRAMAS EN FORTRAN

Los programas en FORTRAN se escriben en un editor de texto cualquiera (vi, emacs, etcétera). Normalmente, el nombre del archivo debe llevar como sufijo .f, o .f90. A este archivo se le llama el "código fuente".

Una vez escrito el programa, este debe compilarse, es decir, debe ser leído por un programa llamado "compilador" que lo traduce a lenguaje de máquina y produce un nuevo archivo con el programa ejecutable. Algunos lenguajes de programación no usan un compilador, sino un "intérprete" (por ejemplo BASIC y PERL). La diferencia es que un interprete traduce y ejecuta línea por línea, sin nunca crear un archivo ejecutable.

Un intérprete es más transparente de usar, pero mucho más lento. FORTRAN funciona siempre con un compilador.

ELEMENTOS BÁSICOS DE UN PROGRAMA EN FORTRAN

Un programa en FORTRAN tiene los siguientes elementos básicos:

  • Nombre del programa. El nombre del programa es en realidad opcional, pero es muy buena idea tenerlo.

  • Declaraciones de variables utilizadas en el programa.

  • Cuerpo del programa. Comandos a ejecutar en el código. Los comandos se ejecutan en orden de aparición. El programa siempre debe terminar con el comando END.

  • Subprogramas. El cuerpo del programa puede llamar a subprogramas que realicen tareas específicas. Es buena práctica de programación separar un programa en bloques y poner cada bloque en diferentes subprogramas. De hecho, para programas largos es buena idea tener cada subprograma en archivos separados.

La estructura de un comando en FORTRAN 90 tiene las siguientes propiedades:

  • Los comandos se escriben en líneas de a lo más 132 caracteres (aunque algunos compiladores aceptan líneas más largas).

  • Espacios en blanco al principio de una línea se ignoran. Esto ayuda a mejorar visualmente la estructura del programa. Hay que recordar que no solo la máquina va a leer el programa, sino también seres humanos (por lo menos el autor), por lo que una estructura visualmente clara en importante.

  • Un signo & al final de una linea indica que el comando continua en la linea siguiente.

  • Todo lo que siga de un signo! se considera un comentario y es ignorado por el compilador. Los comentarios son para las personas, no para la máquina. Hacen más fácil de entender el programa para personas que no lo escribieron, y sirven incluso para que el autor sepa lo que hace el programa si lo vuelve a ver tiempo después.

  • Es posible poner varios comandos en una línea separándolos con punto y coma.

  • Importante: FORTRAN no distingue entre mayúsculas y minúsculas en un programa, también ignora más de un espacio en blanco y líneas en blanco. Que se use es cuestión de estilo personal.

Ejemplo: Programa "nada".

program nada

! Este programa no hace nada.

end program nada

La primera línea dice como se llama el programa. La segunda línea es un comentario y el compilador la ignora. La ´ultima línea dice que el programa ha terminado.

Ejemplo: Programa "hola".

program hola

! Ahora vamos a saludar al mundo

print *, "hola mundo!" ! Aqui es donde saludamos

end program hola

Lo nuevo aquí es la línea: print *, "hola mundo!". La instrucción print * indica imprimir en la salida estandard (es decir, la pantalla). Lo que se va a imprimir debe colocarse entre comillas después de una coma. Nótese como hay un comentario al final de la línea que el compilador simplemente ignora.

CONSTANTES Y VARIABLES

Los programas en FORTRAN manejan datos de dos tipos: constantes y variables.

Las constantes tienen un valor fijo, mientras que las variables se identifican con nombres y pueden cambiar de valor durante al ejecución del programa. Constantes y variables deben tener tipos específicos que indican al programa como almacenarlas y manejarlas.

TIPOS DE DATOS

Los tipos de datos permitidos son los siguientes:

logical Las variables lógicas solo pueden tener dos valores: .true. (Verdadero) y .false. (Falso).

integer Valores enteros guardados en 4 bytes. Se indican como números sin punto decimal: 1, 2, -3, 25, etc.

real Valores reales guardados en 4 bytes y con 8 cifras significativas. Se indican con punto decimal, y de ser necesario el exponente de la potencia de 10 después de una E: 1., -3.1416, 6.25E-10, etc.

double Valores reales de doble precisión guardados en 8 bytes y con 16 cifras significativas, también se denotan por real(8). Se indican con punto decimal y el exponente de la potencia de 10 después de una D: 1.D0, -3.1416D0, 6.25D-10, etc. Son muy ´útiles en cálculos numéricos largos, donde los errores de redondeo pueden hacer que las ´ultimas 4 o 5 cifras significativas de un número real sean basura.

quadruple Valores reales de cuádruple precisión guardados en 16 bytes y con 32 cifras significativas, también se denotan por real(16). Se indican con punto decimal y el exponente de la potencia de 10 después de una Q: 1.Q0, -3.1416Q0, 6.25Q-10, etc.

complex Dos valores reales formando un par y que en operaciones matemáticas se tratan como la parte real e imaginaria de un número complejo:

(1.,-2.), (1.0E0,-2.0E0). También existen versiones de doble y cuádruple precisión.

character Variables que corresponden a cadenas de caracteres. Al declarar una variable de este tipo se debe especificar cuantos caracteres puede tener. Estas variables deben estar contenidas en comillas: "hola", "abcdfe", "Me llamo Luis", "128.3", etc.

DECLARACIÓN DE VARIABLES

Las variables utilizadas en un programa FORTRAN deben declararse como uno de los tipos mencionados en la sección anterior. Por compatibilidad con versiones viejas de FORTRAN, se asume que aquellas variables que no han sido declaradas tienen un tipo implícito de acuerdo a la siguiente regla: variables cuyos nombres empiezan con

{i, j,k,l,m,n} se asumen enteras, y todas las demás se asumen reales. El uso de declaraciones implícitas es indeseable, pues hace más difícil detectar posibles errores de tecleo. Para evitar usar declaraciones implícitas se debe poner al principio de las declaraciones la línea:

implicit none

Ejemplo: Programa "valores".

program valores

implicit none

logical flag

integer i

real a

character(30) texto

i = 1

a = 2.5

texto = "Estas son las variables:"

print *, texto

print *, flag,i,a

end program valores

El programa anterior primero declara que no hay variables implícitas, luego declara una variable lógica, una entera, una real y una cadena de caracteres. Luego les asigna valores y las imprime a la pantalla. Nótese el uso de comillas para la variable de tipo character, y como se ha declarado como de 30 caracteres (suficientes para contener la frase "Estas son las variables").

También es importante señalar el uso del operador =. Este operador no significa "igual", sino que significa "asignar", y sirve para asignar valores a variables.

CONVERSIÓN ENTRE TIPOS

En FORTRAN es muy importante declarar las variables correctamente. Muchos errores comunes están relacionados con utilizar tipos equivocados de variables. Por ejemplo, en operaciones entre números reales debe evitarse el utilizar variables enteras ya que fácilmente se obtendrán valores equivocados. Supongamos que se han declarado las variables i y j como enteras, y la variable x como real, y queremos calcular:

x = i / j

Si tenemos i=10 y j=4 el resultado será 2 y no 2.5 como uno podría esperar. Esto se debe a que la división entre números enteros siempre se considera un entero. Para evitar este tipo de errores es importante convertir un tipo de variables a otras. Esto puede lograrse con los comandos: int(),nint(,real(),dble(). Los comandos real() y dble() convierten la cantidad entre paréntesis a una variable real o de doble precisión, respectivamente. Los comandos int() y nint() convierten la cantidad entre paréntesis a un número entero, la diferencia está en que int() simplemente trunca el número, mientras que nint() lo reduce al entero más cercano.

Ejemplo: Programa "convertir".

program convertir

print *, 10/4

print *, 10.0/4.0

print *, real(10)/real(4)

print *, real(10/4)

print *, dble(10)/dble(4)

print *, int(10.7)

print *, nint(10.7)

print *, int(-3.7)

print *, nint(-3.7)

end program convertir

OPERACIONES EN FORTRAN

Las operaciones aritméticas en FORTRAN involucran los siguientes operadores:

= Asignación. Es muy importante recalcar que este operador NO significa igualdad. En FORTRAN, tiene sentido escribir líneas que algebraica-mente son absurdas como por ejemplo:

a = a + 1

Esto significa tomar la variable a, sumarle 1, y asignar el resultado de nuevo a la variable a.

+ Suma (2.0+3.0! 5.0).

– Resta (2.0-3.0! -1.0).

* Multiplicación (2.0*3.0! 6.0).

/ División (2.0/3.0! 0.66666667).

** Exponenciación (2.0**3.0! 8.0).

Las operaciones se realizan en el siguiente orden:

1. Términos entre paréntesis, comenzando por los de más adentro.

2. Exponenciación.

3. Multiplicación y división de izquierda a derecha.

4. Sumas y restas de izquierda a derecha.

ARREGLOS

FORTRAN puede almacenar en memoria vectores y matrices utilizando variables llamadas

"arreglos" que contienen muchos elementos. Los arreglos pueden ser de cualquiera de los tipos aceptados por FORTRAN.

ARREGLOS DE TAMAÑO FIJO

La manera más directa de declarar un arreglo es dando su tamaño desde el principio.

Por ejemplo, para declarar un vector de 3 componentes y una matriz de 4 por 5 se escribe:

real, dimension(3) :: v

real, dimension(4,5) :: m

Es posible declarar arreglos con un número arbitrario de dimensiones. Por ejemplo, un arreglo de 4 ´índices cuyos valores van de 1 a 2 se declara como:

real, dimension(2,2,2,2) :: R

También se puede dar explícitamente el rango permitido para los ´índices:

real, dimension(0:8), v1

real, dimension(2:5), v2

Esto declara al vector v1 con ´índices que van de 0 a 8, y al vector v2 con ´índices que van de 2 a 5.

Existe una abreviación de la declaración de arreglos. Por ejemplo, los arreglos v,m,R de los ejemplos anteriores se pueden también declarar como:

real :: v(3), m(4,5), R(2,2,2,2)

Para referirse a un miembro específico del arreglo, se utilizan expresiones del tipo:

a = v (1) + m (1,1) + R (1, 2, 1,2)

Es posible también realizar operaciones con arreglos completos a la vez (esto no era posible en FORTRAN 77). Por ejemplo, si a, b, c son arreglos con las mismas dimensiones, podemos escribir:

a = b+c

a = b*c

a = b**2

La primera operación suma uno a uno los elementos de los arreglos b y c y los coloca en los elementos correspondientes de a. La segunda operación hace lo mismo, pero multiplicando los elementos de b y c (Ojo: esto NO es una multiplicación de matrices, sino una multiplicación elemento a elemento). La ´ultima operación eleva cada elemento de b al cuadrado y los asigna al elemento correspondiente de a.

Para este tipo de operaciones es muy importante que los arreglos involucrados tengan las mismas dimensiones, o habrá un error.

Ejemplo: Programa "arreglos".

program arreglos

implicit none

! Declarar vectores.

real, dimension(3) :: v1,v2

!Declarar matrices.

real, dimension (0:1,0:1) :: a,b,c

! Dar componentes de v1.

v1(1) = 1.0

v1(2) = 2.0

v1(3) = 3.0

! Dar v2 de golpe.

v2 = 4.0

! Dar componentes de b.

b(0,0) = 1.0

b(0,1) = 2.0

b(1,0) = 3.0

b(1,1) = 4.0

! Dar la matriz c de golpe.

c = 2.0

! Definir a como la división de b entre c.

a = b/c

! Imprimir v1 completo.

print *, "Vector v1:"

print *, v1

print *

! Imprimir v2 componente a componente.

print *, "Vector v2:"

print *, v2(1),v2(2),v2(3)

print *

! Imprimir componente c (0, 0).

print *, "Componente c(0,0):"

print *, c(0,0)

print *

! Imprimir componente b (1,1).

print *, "Componente b(1,1):"

print *, b(1,1)

print *

! Imprimir a completo.

print *, "Matriz a completa:"

print *, a

print *

end program arreglos

En el ejemplo anterior se muestran declaraciones y operaciones con arreglos. Nótese que al imprimir es posible imprimir componentes individuales, o arreglos completos. En este último caso el arreglo se escribe recorriendo primero los ´índices de la izquierda y luego los de la derecha (al revés de lo que uno esperaría normalmente). Otro punto a notar es el comando print * sin nada que le siga, esto hace que FORTRAN imprima una línea en blanco.

ASIGNACIÓN DINÁMICA DE MEMORIA

En algunas ocasiones resulta ´útil declarar un arreglo sin asignarlo un número fijo de componentes desde el principio, y solo asignarlas después (debido por ejemplo a que se leen datos del exterior). Para hacer esto, los arreglos se pueden declarar como:

real, allocatable, dimension (:) :: v

real, allocatable, dimension (:,:) :: m

Antes de realizar cualquier operación con un arreglo de este tipo se le debe asignar memoria de la siguiente forma:

allocate(v(3),m(4,5))

Al terminar los cálculos es posible eliminar esta memoria con el comando:

deallocate(v,m)

Esto es particularmente ´útil en códigos largos que utilizan mucha memoria, o en casos donde el tamaño de los arreglos depende ya sea de valores externos o de que se cumplan ciertas condiciones en el código.

FUNCIONES INTRÍNSECAS

FORTRAN cuenta con una serie de funciones matemáticas pre-definidas llamadas

"funciones intrínsecas". Una lista de algunas de ellas (no todas) es:

sqrt(x) Ra´iz cuadrada de x.

abs(x) Valor absoluto de x.

sin(x) Seno de x.

cos(x) Coseno de x.

tan(x) Tangente de x.

asin(x) Arco-seno de x.

acos(x) Arco-coseno de x.

atan(x) Arco-tangente de x.

exp(x) Exponencial de x (ex).

alog(x) Logaritmo natural de x.

alog10(x) Logaritmo en base 10 de x.

max(x,y) M´aximo entre x y y.

min(x,y) M´inimo entre x y y.

Las funciones trigonométricas se usan siempre en radianes, y no en grados.

Ejemplo: Programa "intrínsecas".

program intrinsecas

implicit none

real pi

! Imprimir seno y coseno de cero.

print *

print *, "Seno y coseno de 0"

print *, sin(0.0),cos(0.0)

print *

15

! Ahora a calcular pi. Recuerden que cos(pi) = -1.

pi = acos(-1.0)

print *, "El valor de pi es"

print *, pi

print *

! Ya tenemos pi, ahora calcular su seno, coseno y tangente

print *, "Seno, coseno y tangente de pi"

print *, sin(pi),cos(pi),tan(pi)

print *

! Cual es la raiz cuadrada de 2?

print *, "Raiz de 2"

print *, sqrt(2.0)

print *

end program intrínsecas

Cosas por notar en este ejemplo son las siguientes: FORTRAN no conoce el valor de p. En general no es buena idea definir este valor directamente, es mejor calcularlo usando funciones trigonométricas inversas para obtener mayor precisión. Nótese también que al correr este programa, el seno y la tangente de p no dan cero sino números de orden 10-7.

Esto es debido al error de redondeo en la última cifra significativa de los números reales.

Si utilizamos doble precisión, el error seía del orden 10-15. Cuando uno realiza muchas operaciones numéricas, el error de redondeo se propaga y puede contaminar varias cifras decimales. Por ello es buena idea usar doble precisión para cálculos numéricos complejos.

CONTROL DE FLUJO DEL PROGRAMA

En general, un programa FORTRAN ejecuta los comandos en el orden en el que se escribieron, uno a la vez. Sin embargo, frecuentemente hay situaciones en las que esto es

demasiado simple para lo que uno quiere hacer. A veces es necesario repetir una misma operación muchas veces con ligeras variaciones, y otras veces hay operaciones que solo deben realizarse si se cumple alguna condición. Para este tipo de situaciones existen los llamados "comandos de control del programa" y que caen en dos tipos básicos: "loops" y condicionales.

Loops

Un "loop" es un conjunto de instrucciones que deben realizarse muchas veces y tiene la forma estandard:

do i=start,end,increment

comando 1

comando 2

comando 3

end do

Todos los comandos que están contenidos entre la línea do i=… y la línea end do se repiten varias veces, dependiendo de los valores de start,end,increment que deben ser enteros. La primera vez, la variable i toma el valor start. Al terminar, el valor de i se incrementa en increment, si el valor final es mayor que end el loop ya no se ejecuta de nuevo y el programa continua en el comando que siga después de end do, de lo contrario se vuelven a ejecutar los comandos dentro del loop hasta que se obtenga i>end.

Programa "fibonacci".

program fibonacci

! Este programa calcula los numeros de la serie

! de fibonacci hasta nmax.

implicit none

integer i,nmax

integer jnew,jold,aux

! Poner un limite.

nmax = 10

! Inicializar (jnew,jold).

jnew = 1; jold = 1

! Iniciar loop.

print *

do i=1,nmax

! Imprimir elemento i de la serie.

print *, "Elemento ",i," de la serie de Fibonacci: ", jnew

print *

! Calcular nuevo elemento de la serie.

aux = jnew

jnew = jnew + jold

jold = aux

end do

end program fibonacci

IF

En ocasiones uno desea que una parte del programa solo sea ejecutada si cierta condición específica se satisface. Esto se logra utilizando los "condicionales", que en FORTRAN se controlan con el comando IF. La estructura de este comando es la siguiente:

if (expresi´on l´ogica) then

18

comando 1

comando 2

else

comando 3

comando 4

end if

Al ejecutar esto, el programa verifica si la expresión lógica entre paréntesis después del if es verdadera. De serlo, se ejecutan los comandos siguientes. De ser falsa, se ejecutan los comandos después del else (nótese que el [else] es opcional).

La expresión lógica puede utilizar cualquiera de los siguientes operadores lógicos:

  • == Igualdad: if (i==3) then. Una versión equivalente de este operador

(que de hecho es la única válida en FORTRAN 77) es .eq.:

if (i.eq.3) then.

  • >Mayor que: if (i>3) then. Una versión equivalente de este operador

(que de hecho es la única válida en FORTRAN 77) es .gt.:

if (i.gt.3) then.

  • >= Mayor o igual: if (i>=3) then. Una versión equivalente de este

operador (que de hecho es la única válida en FORTRAN 77) es

ge.: if (i.ge.3) then.

  • < Menor que: if (i>3) then. Una versión equivalente de este operador

(que de hecho es la única válida en FORTRAN 77) es .lt.:

if (i.lt.3) then.

  • <= Menor o igual: if (i<=3) then. Una versión equivalente de este

operador (que de hecho es la única válida en FORTRAN 77) es

le.: if (i.le.3) then.

  • /= No igual: if (i/=3) then. Una versión equivalente de este operador

(que de hecho es la única válida en FORTRAN 77) es .ne.:

if (i.ne.3) then.

  • not. Negación lógica: if (.not.flag) then, donde flag ha sido declarada

como una variable lógica.

  • or. "O" lógico: if ((i==3) .or.(i==5)) then.

  • and. "Y" lógico: if ((i==3).and.(j==5)) then.

El comando if puede simplificarse si solo hay un comando en su interior:

if (i==3) comando

Este comando indica que si se cumple la condición el comando indicado debe ejecutarse.

También es posible tener muchas alternativas en un condicional:

if (expresión lógica 1) then

comando 1

else if (expresión lógica 2)

comando 2

else if (expresión lógica 3)

comando 3

else

comando 4

end if

CONTROL LÓGICO DE LOOPS

Es posible utilizar condiciones lógicas para controlar un loop. Esto se logra utilizando el comando do while():

do while(expresión lógica)

comando 1

comando 2

end do

En este caso no se cuenta con una variable entera como en el caso estándar, sino que el loop se ejecuta una y otra vez mientras la expresión lógica sea verdadera. El loop se detiene una vez que dicha expresión es falsa. Por ejemplo, el siguiente código actúa de la misma forma que un loop estándar de 1 a 10:

i = 1

do while (i <=10)

i = i + 1

end do

CUIDADO: Con este tipo de loops se corre el riesgo de caer en un ciclo eterno, donde la condición lógica nunca deja de satisfacerse y la máquina sigue ejecutando el loop para siempre. Cuando se trabaja en una terminal uno nota esto fácilmente si el código continua mucho tiempo más del que esperábamos sin hacer aparentemente nada. En ese caso siempre se puede detener al código tecleando [CTRL C]. Pero cuando uno está corriendo en una cola en una super-computadora se corre el riesgo de terminarse la cuota que debería haber durado un año de una sola vez, y peor aún, los encargados del sistema pueden decidir retirar los privilegios de trabajar en esa máquina ante semejante desperdicio de recursos de cómputo y falta de cuidado.

ENTRADA Y SALIDA DE DATOS (input/output)

En la mayoría de los códigos científicos es necesario dar datos desde fuera y sacar datos hacia afuera. Por default, la entrada de datos es desde el teclado y la salida es a la pantalla. La entrada y salida de datos se manejan con los comandos:

read(,)

write(,)

Ambos comandos tienen dos argumentos, el primero de los cuales indica la "unidad" de entrada o salida, y el segundo el formato en el que están los datos. La versión más simple es:

read(*,*)

write(*,*)

Aquí, el primer asterisco indica entrada o salida estándar (teclado y pantalla respectivamente), y el segundo formato libre. El comando write(*,*) puede substituirse por la forma equivalente print * seguido de una coma.

UNIDADES DE ENTRADAS Y SALIDAS

Además de utilizar el teclado y la pantalla, los datos también pueden leerse o enviarse a un archivo. Para ello debe primero abrirse el archivo con elopen que debe tener al menos dos argumentos (puede tener varios más). El primer argumento es la "unidad" a la que se asigna la salida o entrada de datos, que debe ser un numero entero (comúnmente se usa 10). El segundo argumento es el nombre del archivo entre comillas (con su PATH completo si no está en el mismo directorio que el ejecutable). Al terminar de leer o escribir se debe cerrar el archivo con el comando close cuyo único argumento es el número de la unidad.

Ejemplo: Programa "archivos". Para este ejemplo es necesario crear primero un archivo de datos llamado "entrada.dat" que contenga solo una línea con: "juan,25,masculino".

program archivos

! Declarar variables.

implicit none

integer edad

character(20) nombre,sexo

! Abrir archivo de entrada.

open(10,file="entrada.dat")

! Leer datos.

read (10,*) nombre,edad,sexo

! Cerrar achivo.

close(10)

! Abrir archivo de salida.

open(11,file="salida.dat")

! Escribir datos.

write(11,*) "Me llamo ",nombre

write(11,*) "Tengo ",edad," anios"

write(11,*) "Mi sexo es ",sexo

! Cerrar archivo.

close(11)

end program archivos

FORMATO DE ENTRADA Y SALIDA

En ocasiones se requiere que los datos de entrada o salida estén en un formato muy específico. El control del formato se lleva a cabo en el segundo argumento del los comandos open y close. Existen dos posibilidades: Para formatos sencillos, el formato se coloca simplemente el formato entre comillas y paréntesis dentro del segundo argumento, mientras que para formatos más complicados se coloca un número entero que identifica la línea donde está el formato. Por ejemplo, las dos opciones siguientes son equivalentes:

read(10,"(i4)") m

read(10,100) m

100 format(i4)

En ambos casos se indica al código que debe leer un número entero de a lo más 4

dígitos de longitud "i4". La ventaja del segundo método es que se puede usar el mismo formato en más de un comando:

read(10,100) i

read(10,100) j

read(10,100) k

100 format(i4)

TIPO

SINTAXIS

EJEMPLO

DATOS

DESCRIPCIÓN

Integer

nIw

2i4

1234, -12

n es el número de enteros por lee y w el número total de caracteres contando el signo.

Real

nFw.d

2f8.3

1234.678, -234.678

n es el de reales por leer, w es

el número total de caracteres incluyendo

el punto decimal y el signo,

y d es el número de cifras después del punto.

Carácter

nAw

2a6

"abcdef","qwerty"

n es el de palabras por leer y w

el número de caracteres en cada

palabra.

Espacios

nx

2x

n es el número total de espacios

en blanco por leer

Los diferentes opciones de formato son:

SUBPROGRAMAS

En muchas ocasiones existen tareas que se deben realizar muchas veces durante la ejecución de un código, por lo que resulta conveniente que sean subprogramas en sí mismos.

La existencia de subprogramas también hace que un código sea más modular, y permite que diferentes personas programes diferentes partes de un mismo código.

Los diversos subprogramas pueden ser parte de un mismo archivo, o estar en archivos separados que se unen durante el proceso de compilación. Si están en un mismo archivo, deben aparecer después de la línea que termina el programa principal. En FORTRAN 90 hay tres tipos básicos de subprogramas: funciones, subrutinas y módulos. Consideraremos cada uno de ellos por separado.

FUNCIONES

Asi como existen funciones intrínsecas en FORTRAN (sin, cos, etc.), también es posible definir funciones nuevas de una o más variables. El objetivo de una función es obtener un número a partir de los argumentos. Al igual que el programa principal, una función comienza por su nombre function nombre. Al final de la función deben aparecer los comandos return seguido de end function nombre, esto regresa el control al programa principal. La función es una unidad autónoma, por lo que debe declarar todas las variables que utiliza, incluyendo el nombre de la función y los argumentos.

Es muy importante que los argumentos de la función sean del mismo tipo cuando se llama la función y en la función misma, de otra forma habría errores al ejecutar el código.

El nombre de la función debe declarase en el programa principal y cualquier subprograma que la llame.

SUBRUTINAS

Una subrutina es similar a una función, pero más complicada, de la que no solo se espera un número, sino toda una secuencia de operaciones que pueden requerir regresar muchos números al programa principal (o ninguno).

Las subrutinas se llaman usando el comando call nombre. Igual que las funciones, las subrutinas comienzan por su nombre subroutine nombre y terminar con los comandos return y end subroutine nombre. También son unidades autónomas que deben declarar todas las variables que utilizan, incluyendo a sus argumentos.

A diferencia de las funciones, el nombre de una subrutina no tiene un tipo (el nombre de las funciones si tiene un tipo pues corresponde al valor de regreso).

Una característica importante de las subrutinas es que cuando se pasa un arreglo como uno de sus argumentos, no es necesario dar el tamaño. Se puede pasar el tamaño como un argumento, digamos N, y simplemente declarar el arreglo como real, dimension(N) :: nombre. Algo similar sucede con los variable de tipo character que se pueden declarar con dimensión indeterminada usando * cuando son parte de los argumentos de la subrutina, de manera que heredan el tamaño que tenían él en programa que llamo a la subrutina.

MÓDULOS

El ultimo tipo de subprogramas son los módulos que solo existen a partir de FORTRAN 90. Los módulos sirven para declarar variables que se usan en muchos subprogramas, o para agrupar muchos subprogramas en una sola unidad. Los módulos comienzan por su nombre module nombre y terminan con end module nombre (en los módulos no se utiliza el comando return). A diferencia de las funciones y subrutinas, si el módulo está en el mismo archivo que el programa principal, debe estar antes que este. Cualquier subprograma que haga uso del módulo debe hacerlo mediante el comando use nombre inmediatamente después del nombre del subprograma. El uso más común de los módulos es para declarar variables que van a ser utilizadas por muchos subprogramas.

CONCLUSIÓN

FORTRAN es unos de los primeros lenguajes de programación de alto nivel que desde que salió la primera versión, cuando salió FORTRAN como un lenguaje que no era ensamblador dudaron porque los clientes eran reacios a usar un lenguaje de programación de alto nivel a menos que su compilador pudiera generar código cuyo desempeño fuera comparable al de un código hecho a mano en lenguaje ensamblador.

El lenguaje fue ampliamente adoptado por los científicos para escribir programas numéricamente intensivos, que incentivó a los escritores de compiladores a producir compiladores que pudieran generar un código más rápido y más eficiente. La inclusión en el lenguaje de un tipo de datos y de la aritmética de números complejos amplió la gama de aplicaciones para las cuales el lenguaje se adaptaba especialmente e hizo al FORTRAN especialmente adecuado para aplicaciones técnicas tales como la ingeniería eléctrica.

Por 1960, las versiones de FORTRAN estaban disponibles para los computadores IBM 709, 650, 1620, y 7090.

Significativamente, era cada vez mayor la popularidad del FORTRAN estimuló a fabricantes de computadores de la competencia a proporcionar compiladores FORTRAN para sus máquinas, así que por 1963 existían más de 40 compiladores FORTRAN. Por estas razones, el FORTRAN es considerado ser el primer lenguaje de programación ampliamente usado soportado a través de una variedad de arquitecturas de computador.

El desarrollo del FORTRAN fue paralelo a la temprana evolución de la tecnología del compilador. De hecho, muchos avances en la teoría y el diseño de compiladores fueron motivados específicamente por la necesidad de generar código eficiente para los programas en FORTRAN.

FORTRAN ha incluido atreves de los años mejoras a sus versiones dependiendo las necesidades.

 

 

Autor:

Emerson Rodriguez

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente