TUTORIAL DE FORTRAN

Artículos publicados:
Declaración y tipos de Variables:
1)
Cómo se nombran las variables
2) Tipos y declaraciones
3) Variables Enteras y de punto flotante
4) La sentencia parameter

Asignación y Expresiones:
1) Constantes
2) Expresiones
3) Asignación
4) Conversión de Tipos
5) Expresiones Lógicas
6) Asignación de Variables Lógicas
7) La sentencia if
8) Sentencias if anidadas
9) Ciclos
10) Ciclos-do


Como se nombran las variables

Los nombres de variables en Fortran consisten de 1 a 6 caracteres elegidos de la a hasta la z y de los dígitos del 0 al 9. El primer caracter debe ser una letra.
En Fortran 90 se permiten nombres de longitud arbitraria. Fortran 77 no diferencia entre mayúsculas y minúsculas, sino que por defecto asume que toda la entrada es en minúsculas.
Sin embargo hace poco los compiladores de Fortran 77 empezaron a aceptar letras minúsculas. Si por alguna razón se llegara a dar la situación que el compilador de Fortran 77 insiste en usar letras mayúsculas, se puede usar el comando tr de Unix para hacer la conversión.


Tipos y declaraciones

Cada variable será declarada indicando su tipo. Las declaraciones más comunes son: donde todas son listas de variables.

La lista de variables está conformada por nombres de variables, separados por comas.
Cada variable deberá ser declarada una vez. Si una variable no está declarada, Fortran 77 usa un conjunto implícito de reglas para establecer el tipo. Todas las variables que comiencen con el conjunto de letras in son enteros y el resto tipo real. Varios programas viejos de Fortran usan estas reglas implícitas, pero la probabilidad de errores en el programa crece exponencialmente si no se declaran las variables de forma explícita.


variables enteras y de punto flotante

Fortran 77 sólo tiene un tipo para variables enteras. Los enteros son usualmente guardados en 32 bits (4 bytes), por lo que el rango de valores que pueden tomar los enteros es de

( -231, 231-1 )

Fortran 77 tiene dos tipos diferentes para punto flotante: real y doble precisión.
Por lo general el tamaño para el tipo real de 4 bytes y, para el doble precisión es de 8 bytes, pero depende de la máquina y el compilador. Algunas versiones no estandarizadas de Fortran usan la sintaxis real*8 para indicar una variable de punto flotante de 8 bytes.


La sentencia parameter

Algunas constantes aparecen varias veces en un programa, por lo que se definen un sola vez al comienzo. Esto se puede hacer con la sentencia parameter. Por ejemplo:

program circulo
real r, area, pi
parameter ( pi = 3.14159 )
Este programa toma como entrada un número real r dado por el usuario y muestra el área del círculo con radio r.

write (*,*) 'Entrar el radio r:'
read (*,*) r
area = pi*r*r
write (*,*) 'Area = ', area

stop
end

La sintaxis de la sentencia parameter es

parameter (nombre = constante, ... , nombre = constante)

Lo que se define en la sentencia parameter no es una variable, sino una constante, con lo que su valor nunca cambiará. Se define sólo una vez. La(s) sentencia(s) parameter deberán estar antes que cualquier sentencia de ejecución.


constantes

La forma más simple de una expresión es una constante. Hay seis tipos de constantes, que corresponden con los tipos de datos que maneja Fortran. Se muestran a continuación ejemplos de constantes enteras:

1
0
-100
32767
+15

Ejemplos de constantes de tipo real:

1.0
-0.25
2.0E6
3.333E-1

La notación E se usa para números que se encuentran escritos en notación científica, por lo que 2.0E6 es dos millones, mientras que 3.333E-1 es aproximadamente la tercera parte de uno.
Para constantes que rebasen la capacidad de almacenamiento de un real se puede usar doble precisión. En este caso, la notación usada es el símbolo "D" en vez de "E". Por ejemplo:

2.0D-1
1D99

Así, 2.0D-1 es la quinta parte de uno almacenada en un tipo doble precisión y 1D99 es un uno seguido por 99 ceros.
El siguiente tipo son constantes complejas, indicados por un par de constantes (enteras o reales), separadas por una coma y encerrados entre paréntesis. Por ejemplo:

(2, -3)
(1., 9.9E-1)

El primer número denota la parte real y el segundo la parte imaginaria.

El quinto tipo son las constantes lógicas. Estas sólo pueden tener uno de dos posibles valores, que son:

.TRUE.
.FALSE.

Observar que se requiere que se encierren con punto las palabras.

El último tipo son las constantes de caracteres, por lo general usadas como un arreglo de caracteres, llamado cadena. Consisten de una secuencia arbitraria de caracteres encerradas con apóstrofes (comillas sencillas), por ejemplo:

'ABC'
'Mi perro es muy bello. Su perra es muy traviesa'

Las constantes de cadenas son sensibles a mayúsculas y minúsculas. Se presenta un problema cuando se quiere poner un apóstrofe dentro de la cadena. En este caso la cadena debe ser encerrada entre comillas dobles, por ejemplo:

"Estos CD's están vacíos".


Expresiones

Las expresiones más sencillas son de la forma:

operando     operador     operando

y un ejemplo es:
x + y

El resultado de una expresión es por sí misma otro operando, por lo que se puede hacer un anidamiento como el siguiente:
x + 2 * y

Con lo anterior se presenta la pregunta de la precedencia, ¿la última expresión significa x + (2*y) o (x+2)*y? La precedencia de los operadores aritméticos en Fortran 77 es (de la más alta a la más baja):

** {exponenciación}
* / {multiplicación, división}
+ - {suma, resta}

Todos los operadores son evaluados de izquierda a derecha, excepto el operador de exponenciación, el cual tiene precedencia de derecha a izquierda. Si se desea cambiar el orden de evaluación, se pueden usar paréntesis.

Todos los operadores anteriores son binarios. Se tienen también operadores unarios, uno de ellos es el de negación - y que tiene una precedencia mayor que los anteriores. Por lo que la expresión -x+y significa lo que se esperaría.

Se debe tener cuidado al usar el operador de división, el cual devolverá distintos valores dependiendo del tipo de datos que se estén usando. Si ambos operandos son enteros, se hace una división entera, de otra forma se hace una división que devuelve un tipo real. Por ejemplo:

3/2 = 1     y     3./2. = 1.5


asignacion

Una asignación tiene la forma:

nombre_de_variable = expresión

La interpretación es como sigue: se evalúa el lado derecho y se asigna el valor del resultado a la variable de la izquierda.

La expresión de la derecha puede contener otras variables, pero estas nunca cambiarán de valor. Por ejemplo:

area = pi * r**2

no cambia el valor de pi, ni de r, solamente de área.


Conversion de Tipos

Cuando diferentes tipos de datos ocurren en una expresión se lleva a cabo una conversión de tipos ya sea explícita o implícitamente. Fortran realiza algo de conversión implícita. Por ejemplo:

real x
x = x + 1

El 1 será convertido al tipo real, y se incrementa la variable x en uno. Sin embargo, en expresiones más complicadas, es una buena práctica de programación forzar explícitamente la conversión de tipos. Para números se tienen las siguientes funciones disponibles:

int
real
dble
ichar
char

Las primeras tres no requieren explicación. Con ichar se toma un caracter y se convierte a un entero y con char se hace lo contrario.


Expresiones Logicas

Una expresión lógica puede tener solamente el valor de .TRUE. o de .FALSE.. Un valor lógico puede ser obtenido al comparar expresiones aritméticas usando los siguientes operadores relacionales :

.LT.     meaning   <
.LE.                   <=
.GT.                   >
.GE.                   >=
.EQ.                   =
.NE.                   /=

Cómo no se pueden usar símbolos como < or = para comparación en Fortran 77, se tienen que usar abreviaturas de dos letras encerradas con puntos. Sin embargo en Fortran 90 ya pueden ser usados.
Las expresiones lógicas pueden ser combinadas con los operadores lógicos .AND. .OR. .NOT. que corresponden a los operadores lógicos conocidos Y, O y negación respectivamente.


Asignacion de Variables Logicas

Los valores booleanos pueden ser guardados en variables lógicas. La asignación es de forma análoga a la asignación aritmética. Por ejemplo:

logical a, b
a = .TRUE.
b = a .AND. 3 .LT. 5/2

El orden de precedencia es importante, como se muestra en el último ejemplo. La regla es que las expresiones aritméticas son evaluadas primero, después las que contienen operadores relacionales, y finalmente las de operadores lógicos. Por lo que a b se le asigna .FALSE. en el ejemplo anterior.
Las expresiones lógicas son usadas frecuentemente en sentencias condicionales como if.


La sentencia if

Una parte importante de cualquier lenguaje de programación son las sentencias condicionales. La sentencia más común en Fortran es if, la cual tiene varias formas de uso. La forma más simple de la sentencia if es:
if (expresión lógica) sentencia
Lo anterior tiene que ser escrito en una sola línea. El siguiente ejemplo obtiene el valor absoluto de x:
if (x .LT. 0) x = -x

Si más de una sentencia necesita ser ejecutada dentro de la sentencia if, entonces la siguiente sintaxis deberá ser usada:
if (expresión lógica) then
    sentencias
endif

La forma más general de la sentencia if tiene la siguiente forma:
if (expresión lógica) then
    sentencias
elseif (expresión lógica) then
    sentencias
:
:
else
    sentencias
endif

El flujo de ejecución es de arriba hacia abajo. Las expresiones condicionales son evaluadas en secuencia hasta que se encuentra una que es verdadera. Entonces el código asociado es ejecutado y el control salta a la siguiente sentencia después de la sentencia endif.


Sentencias if anidadas

La sentencia if puede ser anidada varios niveles. Para asegurar la legibilidad es importante sangrar las sentencias. Se muestra un ejemplo:

Se debe evitar anidar muchos niveles de sentencias if ya que es difícil de seguir.


ciclos

Para repetir la ejecución de sentencias se usan los ciclos. Si se está familiarizado con otros lenguajes de programación se habrá escuchado de los ciclos-for y de los ciclos-until, Fortran 77 tiene solamente una construcción de ciclo, conocida como el ciclo-do. El ciclo-do corresponde al ciclo-for que existe en otros lenguajes de programación. Otros ciclos pueden ser simulados usando las sentencias if y goto.


ciclos-do

El ciclo-do es usado para repetir un conjunto de sentencias una determinada cantidad de veces. Se muestra el siguiente ejemplo donde se calcula la suma de los enteros desde el 1 hasta n (suponiendo que a n se le ha asignado un valor previamente):
El número 10 es una sentencia de etiqueta. Típicamente, podría haber varios ciclos y otras sentencias en un programa que requieren una sentencia de etiqueta. El programador es responsable de asignar un número único a cada etiqueta en cada programa (o subprograma). Recordar que las posiciones de las columnas 2-5 son reservadas para sentencias de etiquetas. El valor numérico de las sentencias de etiqueta no tienen ningún significado, por lo que cualquier valor entero puede ser usado. Por lo general, los programadores incrementan las etiquetas de 10 en 10 cada vez.
La variable en la sentencia do es incrementada en 1 por default. Sin embargo, se puede usar cualquier otro entero para el paso o incremento. El siguiente segmento de programa muestra los números pares en forma decreciente entre el 1 y 10:
donde:
var es la variable del ciclo (conocida con frecuencia como el índice del ciclo) el cual deberá ser del tipo integer.
expr1 indica el valor inicial de var,
expr2 es el valor hasta el que llegará el índice, y
expr3 es el incremento (step).

Nota: La variable del ciclo do nunca deberá ser modificada por otras sentencias dentro del ciclo, ya que puede generar errores de lógica.
Muchos compiladores de Fortran 77 permiten que los ciclos do sean cerrados por la sentencia enddo. La ventaja es que la sentencia etiqueta puede ser omitida, ya que en este caso la sentencia enddo cierra la sentencia do más cercana. La construcción enddo es ampliamente usada, pero no es parte del ANSI Fortran 77.


" Todos los derechos reservados al dominio http://ar.geocities.com/puraciencia "
IR AL PRINCIPIO DE LA PAGINA
IR A LA PAGINA PRINCIPAL

Hosted by www.Geocities.ws

1