Professional Documents
Culture Documents
Velasco)
Introduccin
Escritura del programa
Conceptos bsicos del lenguaje
Variables
Entradas y salidas
Salto incondicional
Bucles
Estructuras condicionales
Ejercicios y problemas
Introduccin
El FORTRAN (FORmula TRANslator) es un lenguaje de programacin muy
potente. Es el primer lenguaje cientfico, siendo desarrollado a ltimos de
la dcada de los 50, pero es an ampliamente utilizado en aplicaciones
cientficas y de ingeniera. La ltima versin de FORTRAN actualmente es
la version FORTRAN 90, que reemplaz a la versin FORTRAN 77 a
comienzos de la dcada de los 90. El FORTRAN 90 incorpor nuevas
estructuras y caractersticas en su sintxis, si bien an es compatible con
la anterior versin. Por ello, en este breve curso se pasa revista a los
elementos bsicos del FORTRAN 77. Se trata de un curso muy
introductorio; para una exposicin ms detallada habr que consultar
algn manual de FORTRAN.
En los primeros tiempos de la informtica cualquier clculo que implicara
la evaluacin de frmulas matemticas haba de hacerse mediante
complicados programas, que traducan esas frmulas al lenguaje del
ordenador, muy primitivo. EL FORTRAN es un lenguaje de alto nivel,
orientado a facilitar las cosas al usuario, y que permite escribir el
programa de manera casi idntica a como se escriben las frmulas en un
papel.
En FORTRAN las instrucciones que el usuario transmite al ordenador se
encuentran en un fichero de texto (en cdigo ASCII), que es necesario
escribir (utilizando un editor de textos cualquiera). El nombre del fichero
sigue las convenciones del sistema operativo del ordenador. En DOS un
programa FORTRAN suele tener la extensin '.FOR', por ejemplo,
'CALCULO.FOR'; en Unix es tradicional que la extensin sea '.f', por
ejemplo, 'calculo.f'. Los nombres de los programas son libres (salvo ciertas
limitaciones de longitud y tipos especiales de caracteres que no pueden
aparecer en el nombre del fichero).
Al contrario que el BASIC, que es un lenguaje interpretado, el FORTRAN es
un lenguaje compilado. sto significa que, una vez escrito el programa,
ste ha de ser traducido en bloque al lenguaje mquina, o sea, el lenguaje
que entiende el procesador del ordenador, mediante un proceso llamado
compilacin; por contra, en un lenguaje interpretado las lneas de
programa se van traduciendo segn el flujo va pasando por ellas, con lo
que el proceso de ejecucin se enlentece.
VARIABLES
El primer concepto importante es el de variable. Una variable es una
zona reservada en la memoria del ordenador, a la que se asigna un
nombre. En esta zona podemos guardar un nmero, o bien una
secuencia o cadena de caracteres. Las variables en las que se
pueden almacenar nmeros se llaman numricas, y pueden tener
como nombres una combinacin de caracteres, si bien el primero no
puede ser un nmero; el nmero de caracteres vara segn el
compilador. En el programa-ejemplo anterior, A, B y C son variables.
Otros ejemplos pueden ser SUMA,RESTO, RESUL1, etc. Las variables
se definen al comienzo del programa (es conveniente de hecho,
ENTRADAS Y SALIDAS
Las entradas de datos a un programa y las salidas de datos
producidos por ste se realizan en FORTRAN por medio de las
instrucciones READ y WRITE. Para escribir tambin se utiliza la
instruccin PRINT. La sintxis de las instrucciones READ y WRITE
es:
READ (unidad, formato) lista de variables
WRITE (unidad, formato) lista de variables
Para una explicacin de las unidades de lectura y escritura y los
formatos es FORTRAN se recomienda acudir a un manual de
FORTRAN. La situacin ms sencilla es aqulla en la que los datos se
introducen mediante el teclado, y los datos salen en la pantalla, con
formato libre. En estos casos se utiliza la sintxis
READ (*,*) lista de variables
WRITE (*,*) lista de variables
Para la escritura en la pantalla con formato libre existe tambin la
instruccin PRINT *,(la coma es parte de la instruccin).
Por ejemplo, el siguiente programa lee desde el teclado dos
variables, A y B, las suma y enva el resultado a la pantalla:
PROGRAM SUMA
REAL A, B, C
READ (*,*) A, B
C=A+B
WRITE (*,*) 'La suma es: ', C
END
SALTO INCONDICIONAL
Un salto incondicional es un cambio del flujo de un programa a otra
lnea de ste. Esta lnea de destino ha de estar identificada con un
nmero de lnea, que debe situarse en las columnas 1-5. El salto se
produce cuando el control del flujo encuentra la instruccin GO TO,
seguida del nmero de la lnea de destino. Un ejemplo de programa
con salto incondicional sera
A = 2.0
B = SQRT(A)
...
GO TO 1
...
C = B**2
...
BUCLES
El bucle es una estructura que permite efectuar repeticiones de un
conjunto de instrucciones. Las instrucciones de control de un bucle
son DO-END DO. Asociada al bucle existe una variable de control,
normalmente entera, que hace de ndice. La sintxis general de la
estructura en bucle es
DO ndice = valor inicial, valor final, incremento
...
END DO
En cada iteracin la variable ndice va cambiando, desde valor inicial
hasta su valor final, aumentando cada vez su valor en incremento.
ste ltimo puede no aparecer, en cuyo caso se considera
implcitamente que su valor es la unidad. El siguiente ejemplo
resuelve la ecuacin implcita x=cos x mediante el mtodo de las
iteraciones:
PROGRAM TRASCEND
REAL X
INTEGER N
READ (*,*) X, N
DO I = 1, N
X = COS(X)
END DO
WRITE(*,*) X
END
La instruccin READ lee un valor inicial aproximado, X, para la
solucin de la ecuacin (que es 0,739085), y el nmero de
iteraciones que se desea, N. Una vez efectuadas las N iteraciones, el
bucle acaba y se escribe el resultado con WRITE. El modo en que la
estructura DO-END DO funciona es el siguiente. En la primera
iteracin la variable de control, en este caso I, asume el valor inicial,
1. Se ejecuta la instruccin del bucle, y cuando el control llega a la
instruccin END DO se vuelve a transferir el flujo al comienzo del
bucle. El ndice I toma ahora el valor 2, y as se repite el bucle hasta
que el valor de I es N, en cuyo caso se efecta la iteracin por ltima
vez y el flujo contina con las instrucciones que vienen despus del
END DO. En el ejemplo, el total de iteraciones realizadas es N. Como
prueba de este programa, se pueden ensayar valores iniciales para X
de 1, y un nmero de iteraciones N variable entre 10 y 40.
Una aplicacin interesante de la estructura DO-END DO es la suma
de series infinitas de nmeros. Consideremos la serie
1/1 + 1/2 + 1/3 + 1/4 + ...
cuya suma es pi/6. Un simple programa permite calcular las sumas
parciales de esta serie:
SUM = 0.0
READ (*,*) N
DO I = 1, N
SUM = SUM + 1.0/I**2
END DO
PRINT *, SUM
END
Este programa calcula la suma parcial con N trminos, SN.
Aumentando el valor N se puede valorar si la serie converge o no, y
en su caso la cantidad a la que converge. La siguiente tabla ha sido
producida con el programa anterior.
N
10
100
1000
1000
SN
1.5497677
3
1.6349839
0
1.6439345
7
1.6448340
0
7
2000 1.6448840
0
7
3000 1.6449007
0
3
4000 1.6449090
0
7
Cambiando la lnea interior del bucle, obviamente, se pueden sumar
otras series.
ESTRUCTURAS CONDICIONALES
Una condicin es una situacin en la que dos variables se comparan
y, dependiendo del resultado de esa comparacin, se ejecuta una
instruccin o conjunto de instrucciones. El tipo ms sencillo de
estructura que involucra una condicin es, por ejemplo,
AMIN = A
IF (A .GT. B) AMIN = B
...
Esta estructura determina el mnimo de los valores de dos variables,
A y B, y lo almacena en la variable AMIN. La instruccin IF efecta la
comparacin entre A y B, utilizando el operador .GT. (del ingls
Greater Than). Si A>B, se ejecuta la instruccin AMIN = B. Si no se
cumpliese esa condicin, el control pasara directamente a las lneas
que siguen a la lnea, representadas por ..., sin que la instruccin
AMIN = B se ejecutara.
Los operadores matemticos condicionales son:
.EQ. : igual a (EQual to)
.LT. : menor que (Less Than)
.GT. : mayor que (Greater Than)
.LE. : menor o igual que (Less to or Equal than)
.GE. : mayor o igual que (Greater to or Equal than)
Una estructura condicional ms sofisticada es la estructura IF-THENELSE-END IF. Esta estructura permite ejecutar un bloque de
instrucciones u otro dependiendo del resultado de la condicin. La
estructura se utiliza de la forma
IF (condicin) THEN
...
ELSE
...
END IF
Si el resultado de la condicin es verdadero, se ejecutara el primer
bloque de instrucciones (antes del ELSE), mientras que si es falso,
se ejecutara el segundo bloque de instrucciones (despus del
ELSE). La segunda parte se puede tambin eliminar, quedando la
estructura ms simple
IF (condicin) THEN
...
END IF
Slo en el caso en que la condicin sea verdadera se ejecutara el
bloque de instrucciones ... Si la condicin resultara falsa, se
continuara con las instrucciones situadas a continuacin del END IF
sin que se ejecuten las instrucciones situadas dentro de la
estructura IF-THEN-END IF.
La ltima estructura condicional interesante es el salto condicional.
Un salto condicional es un cambio del flujo de un programa a otra
lnea de ste, pero siempre que se cumpla una determinada
condicin. Al igual que en los saltos incondicionales, la lnea de
destino ha de estar identificada con un nmero de lnea, que debe
situarse en las columnas 1-5. El salto se puede producir cuando el
control del flujo encuentra una instruccin IF:
IF (condicin) GO TO nmero de lnea
Como ejemplo de las estructuras condicionales, vamos a efectuar la
suma de la serie
1/1+1/2+1/3+1/4+1/5+...
cuyo trmino general es 1/n. El programa, obviamente, no puede
calcular la suma infinita, pero s sumas parciales de la serie.
Supongamos que queremos sumar los M primeros trminos de la
serie, es decir, calcular la suma parcial SM). El siguiente programa
resuelve este problema con ayuda de un salto condicional:
PROGRAM SERIE
REAL SUM
INTEGER M, N
M = 10
SUM = 0.0
N=0
N=N+1
IF (N .LE. M) THEN
SUM = SUM + 1/N**2
GO TO 1
END IF
PRINT *, SUM
END
Ejercicios y problemas
Multiplicacin de matrices
Interpolacin de Lagrange