Fortran PDF
Fortran PDF
Fortran PDF
Curso de postgrado
en
Desarrollo de Recursos de Aguas y Tierras
APUNTES
DE
PROGRAMACION
INTRODUCCION A LA COMPUTACION
I. GENERALIDADES
I.1 El computador
y los de salida :
- Terminal.
- Unidad de espaldo.
- Disco duro o disquete.
- Impresora.
- Graficador ( plotter ).
I.2 El procesamiento.
I. GENERALIDADES
Cada una de esas etapas tiene sus objetivos específicos, los cuales al final
facilitan la obtención de un programa correcto y que cumpla con el objetivo inicial. A
continuación, se detallan las diferentes etapas por separado, ilustrándolas con un
ejemplo sencillo.
1. Leer el valor de n.
7. Volver al paso 4.
FIGURA VI.
PROGRAM SUMA
READ (1,*) N
S=0
I=1
10 IF ( I . LE . N ) THEN
S=S+I
I=I+1
GO TO 10
ENDIF
WRITE (1,*) S
END
PROGRAMACION ESTRUCTURADA
I. CONCEPTOS GENERALES.
La idea básica de esa técnica es que cada módulo del programa debe
tener un solo punto de entrada y un solo punto de salida. El tamaño de esos módulos
depende del nivel de detalle, pero en cada nivel se debe respetar esa regla. Por lo tanto,
existen tres módulos básicos que se emplean para programar. Esas tres estructuras son
las siguientes :
Secuencia simple
Selección o ramificación condicional
Repetición o iteración condicional
Selección
Iteración
La restricción a esos tres tipos de estructuras no es arbitraria, sino basada
en consideraciones sobre la corrección de programas. En efecto, esas tres estructuras
se caracterizan por tener una sola entrada y una sola salida, y todas ellas pueden ser
reemplazadas por un solo bloque con una entrada y una salida. Además, cuando se
codifican, pueden ser leídas de arriba hacia abajo en forma continua, sin tener que
saltar de una línea a otra.
Cada una de esas estructuras corresponde a un tipo de operación diferente
:
Secuencia de instrucciones
Estructura " IF-THEN-ELSE "
Estructura " DO-WHILE "
FIGURA VII
En este flujograma, se pueden identificar varias de las estructuras básicas
vistas anteriormente. Por ejemplo, en la Figura siguiente, lo que aparece en el
rectángulo representa una estructura tipo " DO-WHILE ".
FIGURA VIII.
FIGURA X.
El rectángulo encierra ahora la estructura 3, la cuál es del tipo " IF-
THEN-ELSE ", en que se chequea la condición Test1. Si es verdadera, se ejecuta la
operación 6, sino se realiza la operación 3. Otra vez, la secuencia encerrada en el
rectángulo puede ser reemplazada por una operación equivalente de una sola entrada,
una sola salida, como aparece en la figura siguiente :
FIGURA XI
EL LENGUAJE FORTAN 77
CARACTERISTICAS GENERALES
I. INTRODUCCION.
Columna Empleo
6 Continuación de línea.
Cuando una instrucción no cabe en una sola línea,
puede continuarse en la siguiente, colocando una carácter diferente de cero en la
columna 6 de la línea de continuación.
7 - 72 Instrucciones FORTRAN.
La instrucción puede empezar en cualquiera de las
columnas 7 a 72. Para facilitar la lectura del programa, pueden usarse sangrías y
espacios
73 - 80 Numeración de líneas.
Cuando se usaban tarjetas perforadas, las columnas 73
hasta 80 podían ser utilizadas para numerarlas.
1. Constantes.
Una constante es una cantidad que no varía, y por lo tanto puede escribirse
usando su mismo valor ( por ejemplo : 3.14159 o 9.81 ). Viene representada por un
número, con o sin punto decimal según sea real o entera, y debe seguir las reglas del
Fortran :
Ejemplos :
1,0 1 1.0
-6,0 -6 -6.0
1.000.000,00 1000000 1000000.00
a. Puede tener hasta 6 caracteres, los cuales deben ser letras o cifras.
b. El primer carácter debe ser una letra.
c. Si la constante es entera, esa letra debe ser I , J , K , L , M o N.
d. Los espacios en blanco se ignoran.
2. Variables.
Una variable es la representación de una cantidad que se desconoce o que
puede variar durante la ejecución de un programa. En álgebra, una variable o incógnita
se representa mediante un carácter tal como a, ß o x. En Fortran, se usa un nombre
formado por una secuencia de uno hasta seis caracteres, siguiendo las mismas reglas
expuestas para las constantes.
Ejemplos :
x X real
ß BETA real
a A real
j J entera
imin IMIN entera
xmax XMAX real
_ DELTA real
Ejemplos incorrectos :
Variable Comentario
Son los operadores que permiten realizar operaciones usuales en aritmética o sea :
sumar, restar, multiplicar, dividir y elevar a una potencia ( +, -, x, : y exp. ). En
Fortran, esos operadores se expresan mediante el uso de otros símbolos
Aritmética Fortran
+ +
- -
x *
: /
exp. **
Ejemplos :
Algebra Fortran
xy X*Y
a+b A+B
a + (b - c) A + (B-C)
Π r2 PI * R **2
yn Y ** N
(b2 − 4ac ) (B**2 - 4*A*C)**0.5
W 1/3 W **( 1./3.)
V. INSTRUCCIONES ARITMETICAS.
Ejemplos :
EL LENGUAJE FORTRAN 77
TABLA 2
TABLA 3
TABLA 4
TABLA 5
TABLA 6
TABLA 7
Ejemplo :
READ *, A ,B, C
Se leerá por pantalla tres valores a los cuales se le asignará los nombres
A, B, C. Esos tres valores deberán darse separados por comas o blancos.
2. La instrucción PRINT.
PRINT *, list
Ejemplo :
El caudal es 25.50
Ejemplos :
donde unidad, fmt y list tienen la misma significación que para la instrucción READ.
Adicionalmente, fmt puede contener la propia instrucción FORMAT entre apóstrofos
y paréntesis y list puede representar una expresión aritmética.
Ejemplos :
WRITE(1,*) CAUDAL dará por pantalla la variable CAUDAL con formato libre.
a. Especificación I.
b. Especificación F.
c. Especificación E.
d. Especificación A.
e. Ejemplos.
Entrada de datos :
I4 1 1
I2 -1 -1
I2 123 12
F6.4 123456 12.3456
F6.4 123.45 123.45
E8.3 7.1 E 5 7.1x105
E9.4 45 E35 0.0045x1035
A4 DATO DATO
A10 CAUDAL DIARIO CAUDAL DIA
Comentario :
- los blancos a la derecha se ignoran.
- el punto decimal leído prevalece sobre la especificación w.
Salida de datos :
I4 +452.25 452
I2 623 **
I5 -52 -52
F5.2 +10.657 10.65
F3.1 -254.2 ***
F4.1 23 23.0
E10.3 -12.3454 -.123E+02
E10.8 0.00456532 .456532E-02
A10 CAUDAL CAUDAL
A4 CAUDAL ****
1. Edición de alfanuméricos.
Ejemplos :
2. Posicionamiento horizontal.
3. Repeticiones.
FORMAT(5X,F8.3,5X,3I2/5X,5F8.3)
Ejemplos :
- La instrucción CONTINUE
I. LA INSTRUCCION DO
I. 1 El DO etiquetado.
Se da como :
DO [etiqueta], [index]=[inicio],[final],[paso]
donde :
Las variables index, inicio, final y paso deben ser del mismo tipo. Si no
lo son, entonces las tres últimas son convertidas al tipo de index. La última instrucción
del DO puede ser la instrucción CONTINUE para evitar terminar con una instrucción
no permitida. Las instrucciones comprendidas entre el DO y la última ( la que lleva
etiqueta) se ejecutan cada vez que se completa un ciclo del lazo.
Ejemplos :
I. 3 El DO WHILE.
Se da como :
Ejemplos :
DO WHILE (J . LT . 10)
...
DO WHILE (I . GE . J)
...
...
END DO
...
END DO
II. El IF aritmético.
IF ( expre ) etiq1,etiq2,etiq3
donde :
expre es una expresión aritmética cuyo signo se chequea.
etiq1, etiq2, etiq3 son etiquetas de instrucciones ejecutables a las cuales
va el programa según el valor de expre (negativo, nulo o positivo).
Ejemplos :
IF ( A+B ) 10,20,30
II. 2 El IF lógico.
Se da como :
IF ( expre ) inst
Ejemplos :
.EQ. IGUAL A
.NE. DIFERENTE DE
.LT. INFERIOR A
.LE. INFERIOR O IGUAL A
.GT. SUPERIOR A
.GE. SUPERIOR O IGUAL A
También se pueden combinar varias expresiones lógicas dentro de un
mismo IF en base a los operadores lógicos siguientes :
Ejemplos :
Ejemplos :
Ejemplo :
donde
El uso de una expresión real es una extensión del Fortran 77. El resultado
de la expresión se convierte a entero, tomando la parte entera del mismo. Este valor
indica la posición de la etiqueta en la lista del GOTO.
Ejemplos :
B=1.5
X=2.
GOTO(10,11,12,13,14,15) B+X
donde
Ejemplos :
donde
Ejemplos :
P(I), I= 1,31
y la precipitación del primer día será P(1), la del segundo P(2), . . .lo cuál facilita la
estructuración del programa.
En el ejemplo anterior, P(I) es un vector o un arreglo unidimensional que
contiene los valores de precipitación del mes de Enero. Si se quiere usar los valores de
precipitación de todo el año, se podría usar un vector de 365 valores, o mejor un
arreglo de dos dimensiones en el cuál el primer índice representaría el número del mes
y el segundo el día dentro del mes, P(I,J), con I=1,12 y J=1,31.
En este último ejemplo, se tiene que :
nombre(d1,d2,d3, . . . )
donde
nombre es el nombre del arreglo, el cuál debe seguir las mismas reglas
de los nombres de las variables.
n o n:m
donde :
n es el limite superior
m es el limite inferior
Ejemplos :
Ejemplos :
ARR(I+4,J-1)
Ejemplos :
A(1),A(2),A(3),A(4),. . . ,A(9),A(10)
B(1,1),B(2,1),B(3,1),B(1,2),B(2,2),B(3,2),B(1,3),B(2,3),. . .
B(1,5),B(2,5),B(3,5)
donde unidad, fmt, index, inicio, final, paso tienen la misma significación
definida anteriormente. Por ejemplo :
READ(1,100) (A(I),I=1,20)
B(1,1),B(2,1),B(1,2),B(2,2)
Ejemplos :
En esos dos casos, los nombres de las variables contradicen el tipo de las
mismas, por lo que se hace necesario esa especificación de tipo. Normalmente, las
variables se declaran sin especificar el número de palabras que usan en memoria. Sin
embargo, en algunos casos, se puede cambiar ese tamaño. Por eso, se usa :
INTEGER*2 o INTEGER *4
REAL*4 o REAL*8
CHARACTER*long
donde
Ejemplo :
DIMENSION A(10,20),TAB(2,5,10)
donde :
Ejemplos :
COMMON A,B,C
Las variables A,B,C se almacenan en un COMMON sin etiqueta.
COMMON /TSF/ X,X1,X2
Las variables X,X1,X2 se almacenan en el COMMON etiquetado TSF.
COMMON /A/A1,A2,/X/ X1,X2
Las variables A1 y A2 se almacenan en el COMMON A y , X1 y X2 en
el COMMON X.
COMMON I(4),J(6)
y en un subprograma :
COMMON J(4),I(6)
los valores del arreglo I del programa principal serán los valores del
arreglo J del subprograma. Igualmente, si en el programa principal aparece :
Y en la subrutina :
COMMON GEO,M(10)
la equivalencia será :
I(1) GEO
I(2) M(1)
I(3) M(2)
... ...
J(6) M(9)
SAM M(10)
donde :
Ejemplo :
IMPLICIT REAL(I,J,K),INTEGER(A-C)
Esa instrucción significa que las variables cuyo nombre empieza por I, J
o K serán reales, y que las variables cuyo nombre empieza por una letra comprendida
entre A y C serán enteras.
PARAMETER ( nom1=exp1,nom2=exp2,. . . )
donde :
Ejemplos :
PARAMETER (MIN=10,MAX=50)
DIMENSION A(MIN,MAX)
CHARACTER*6 ARCHI
PARAMETER (ARCHI=?RIO)
OPEN(10,FILE=ARCHI,STATUS='OLD')
PARAMETER (N=4)
CHARACTER*N TOTO
PARAMETER (INF=0,ISUP=20)
DIMENSION XER(INF:ISUP)
DO I=INF,ISUP
...
ENDDO
PARAMETER (PI=3.14159)
...
SURF=PI*R**2
EQUIVALENCE (list1),(list2), . . .
donde :
Ejemplos :
EQUIVALENCE (A,B),(C(2),DE,E)
Cuando se usan arreglos la equivalencia se hace elemento por elemento. Por ejemplo :
DIMENSION A(3),B(5)
EQUIVALENCE (A(2),B(4))
CONTINUE
Ejemplo :