Está en la página 1de 26

Conceptos básicos

de Fortran 77
Fundamentos de dinámica de
estructuras.
Ciudad Universitaria, 1 de Septiembre de 2009
Contenido
 Introducción
 Antecedentes
 Fortran
 Fortran I-IV
 Fortran 66-2000
 Virtudes de Fortran
 Debilidades de Fortran
 Formato programa Fortran
 Primer programa en Fortran
 Compilación para Fortran 77
 Compilación para Force 2.0
 Compilación para Microsoft MSDEV Fortran 90
 Ejemplos
Introducción

 Fortran, aún a su edad, sigue siendo


el lenguaje de programación más
utilizado en el mundo académico para
computo científico.
Introducción
 Desde sus inicios en 1954, Fortran ha pasado
por diversas versiones, como FORTRAN II,
FORTRAN IV, FORTRAN 77, Fortran 90,
Fortran 95 y Fortran 2003.
 Aún con la existencia de compiladores libres
para Fortran 95, la versión de FORTRAN 77
sigue siendo aún ampliamente utilizada y
enseñada en las aulas.
Introducción
 ¿Por qué Fortran?
 La cantidad de subrutinas escritas en Fortran es
inmensa (ver IMSL library1)
 La subrutinas de fortran por su antigüedad han sido
muy optimizadas.
 El código compilado en Fortran es de lo más rápidos
sino el más rápido.

1 IMSL es un conjunto de subrutinas para resolver numéricamente problemas matemáticos en


diversos campos de las ciencias.
Antecedentes
 Computadoras mainframe de los 50's
 Equipo: Enorme y costoso de operar y de
programar/depurar
 Procesadores: Limitados, lentos, con pocas
instrucciones muy primitivas
 Memoria: Lenta y muy escasa, ej. 15Kb
 Programación: En lenguaje de máquina y
ensamblador, ej. manipular direcciones, código y
números en binario o hexadecimal
 Lenguajes Compilados: Eran 10 veces más lentos y
muy primitivos
Antecedentes (La IBM 704)
Fortran
 Fortran: Nombre abreviado de "Formula Translation"
(Nombre original: Speedcoding)
 Objetivo: ¿Puede una máquina trasladar un lenguaje
matemático suficientemente expresivo de una
manera económica y eficiente?
 Esencia: Fortran fue ideado como un medio capaz
de expresar cálculos matemáticos y científicos sin
perder de vista la eficiencia de máquina
Fortran
 Pionero: Primer compilador éxitoso de un
lenguaje de programación de alto nivel (HLL)
 Aplicaciones: Adoptado principalmente por
la comunidad científica, espacial y militar de
la época; posteriormente, lo adoptan diversas
ramas de la ingeniería y las primeras
comunidades de cómputo paralelo
Fortran I - IV
 Fortran I (1954-57): Desarrollado para una IBM_704 por un
equipo de desarrolladores de IBM en el Lab. Científico Watson,
N.Y. lidereado por J. Backus
 Fortran II (1958): Compilación separada de módulos, mejores
diagnósticos de error, acepta módulos-ensamblador, definición
de funciones
 Fortran III (1959): Versión no liberada para su uso público;
aceptaba código-en-línea de ensamblador
 Fortran IV (1961): Depuración y eliminación de dependencias
de máquina por parte del lenguaje y su implementación
Fortran 77 - 2000
 Fortran 66: Primer estándar mundial de un lenguaje de
programación (1972)
 Fortran 77: Estándar más duradero y universal del lenguaje.
Primero en incluir sentencias: DO, IF..THEN..ELSE, 'CONSTANTES-
CADENA', etc. (1980)
 Fortran 90: Fortran moderno (1991). Nuevos operadores y
sentencias-control DO/WHILE, CASE, formato-libre, mejoras E/S y
arreglos, operadores y tipos-datos derivados, memoria-
dinámica, recursión, módulos, etc.
 Fortran 95: Mejoras y cambios menores (estándar actual) STD
 Fortran 2003: Programación Orientada a Objetos y manejo de
excepciones
 HPF: High Performance Fortran Standard; programación en
paralelo de supercomputadoras HPF
Virtudes de Fortran
 Portable: Los programas pueden correr sin díficultad de una
clase de computadora a otra con pocos o ningún cambio
 Eficiente: Es suficientemente maduro y sus implementaciones
son de muy alto rendimiento, incluso para máquinas con varios
procesadores
 Disponibilidad: Más antiguo, es un estándar, hay suficiente
información, hay muchos programas hechos, hay compiladores
para casi todas las máquinas, existen versiones open-source
(libres)
 Cálculos numéricos: Probablemente el lenguaje más usado y
conocido (adoc) para aplicaciones numéricas
Debilidades de Fortran
 Arcaico: Uso de etiquetas numéricas, nombres-
variables cortos, identación rígida y fija de programas
 Depuración: Carece de algunos elementos
modernos que ayudan a depurar programas más
fácilmente
 Estructuración: Carece de estructuras más flexibles
y modernas, ej. estructuras de datos complejas y
objetos

 Nota: Estas y otras limitaciones han sido superadas a partir


de Fortran 90
Debilidades de Fortran
Formato programa Fortran
 Formato de un programa fuente en Fortran.
Nota: Fortran 77 usa caracteres en mayúsculas

1 2 3 4 5 6|7… 71 72|73… 79 80

C Comentario

PROGRAM Nombre-programa

Declaraciones
Label Sentencias
+Continuación-Sentencia

END
Formato programa Fortran
 Por razones históricas, que se remonta a los días de las
tarjetas perforadas, los registros estándar de sentencias
son de 72 caracteres por línea.

------------------…--------
1 567 72
↑ ←Sentencias (código) en columnas 7-72→

Column
Formato programa Fortran
 Nombre-Archivo: Archivo de texto con extensión .F ó .F90
 Comentarios: Una C ó * en la 1ª columna ó ! (Fortran90)
 Nombre-Programa: Identificador de la sentencia PROGRAM de
hasta 6 caracteres, debe comenzar con letra mayuscula. Se
recomienda sea igual al nombre del archivo fuente
 Etiquetas: De la columna 1ª hasta la 5ª
 Continuación: +, $, dígito u otro símbolo en 6ª columna para
separar líneas muy largas
 Sentencias: De la columna 7ª hasta la 72ª
 Fin-Programa: Sentencia END siempre al final del programa

 Nota: Las columnas de la 73 a la 80 no tiene ningún significado para el


compilador.
Primer programa Fortran

C Mi primer programa de Fortran


PROGRAM HOLA
WRITE(*,*) ‘Hola a todo mundo’
STOP
END
Compilación para Fortran 77
Pasos: para el Compilador G77 Fortran 77 libre
 Windows: Inicio, Ejecutar: Notepad
 Notepad: Editar y grabar programa como HOLA.F
 Ventana DOS: Inicio, Ejecutar: Command ó click icono
"Prompt DOS"
 Unidad-Disco: Disco duro o otra unidad D:
 Sub-directorio Compilador: CD \G77
 Ver Directorio: DIR
 Inicializar Compilador: G77SETUP Pruebas: G77 -v, G77 --help
 Compilar Programa: G77 HOLA.F
 Correr Programa: A
 Errores? Regrese al paso #2 y corriga los errores
Compilación para Force 2.0
Pasos: para el Compilador Force 2.0 libre
 Windows: Ejecutar Force 2.0
 Edición: File New ó File Open
 Ejecutar: Run Run
 Depurar: Run Debug, Insight Debugger: Run,
Run y Control, Next (N)
Compilación para Microsoft
MSDEV Fortran 90
 Correr Compilador desde Windows
 Doble-click en icono, ó
 Inicio, Programas, MSDEV, ó
 Buscar en carpeta C:\MSDEV\BIN
 Crear Proyecto:
 File Close Workspace
 File New, Project Workspace, Console Application, Name: Hola
 Crear Programa
 File New, Text File
 Editar ó copiar programa
 Botón-derecho en editor: Insert File into Project, name: Hola.f
 Compilar: Build, Build Hola.exe
 Ejecutar: Build, Execute Hola.exe ó Ctrl+F5
 Depurar: Debug Step Into ó F8 (línea-por-línea hasta terminar o
usar Debug, Stop Debugging)
Ejemplos

C Mi primer programa de Fortran 77


PROGRAM HOLA
WRITE(*,*) ‘Hola a todo mundo’
STOP
END
Ejemplos

C Prograna para sumar dos numeros


PROGRAM SUMA
WRITE(*,*) ‘Ingrese dos numeros’
READ(*,*) A, B
C=A+B
WRITE(*,*) ‘La suma es:’, C
STOP
END
Ejemplos

C Prograna para obtener raiz cuadrada


PROGRAM RAIZ
WRITE(*,*) 'Ingrese los 3 coeficientes'
READ(*,*) a, b, c
dis=b**2-4*a*c
x1=(b+dis)/(2*a)
x2=(-b+dis)/(2*a)
WRITE(*,*) 'Las raices son:', x1, x2
STOP
END
Ejemplos
C Programa para multiplicar una matriz por un escalar
PROGRAM MULT
DIMENSION ID(3,3)
WRITE(*,*) 'Ingrese la constante'
READ(*,*) K
C Generacion de la matriz identidad
DO I=1,3
DO J=1,3
IF (I .EQ. J) THEN
ID(I,J)=1
ELSE
ID(I,J)=0
END IF
END DO
END DO
C Multiplicacion de matriz
DO I=1,3
DO J=1,3
ID(I,J)=ID(I,J)*K
WRITE(*,*) ID(I,J)
ENDDO
ENDDO
STOP
END
Ejemplos
c Este es un comentario
program hola
implicit none
write(*,*) 'Hola'
print *, 'Fundamentos de Dinamica de Estructuras esta muy facil
+por el momento'
write(*,*) 'Escriba dos numeros'
read(*,*) a, b
i=a+b
print *, i
end

También podría gustarte