Sie sind auf Seite 1von 35

Curso Bsico de

FORTRAN

1
Simulacin Numrica de Yacimientos Semestre 2007-2

Conceptos Generales.

Un algoritmo es una secuencia de pasos lgicos para resolver de forma


estructurada un problema.

Un diagrama de flujo es la representacin grfica de cada una de las acciones


para resolver un problema. En otras palabras, es la representacin grfica de un
algoritmo. Su uso facilita a terceros la comprensin y/o modificacin de la
solucin planteada para un problema, adems, sirve como documentacin oficial
del programa de cmputo que se elabore. El diagrama de flujo es una
herramienta de gran importancia en la programacin, es independiente del
lenguaje que se utilice y representa una solucin posible de un problema. La
lgica se expresa mediante una secuencia de smbolos grficos.

Es importante sealar que no existe slo una forma para resolver un problema.
Esto es, se puede llegar al mismo resultado por diferentes caminos, por ello se
pueden tener diferentes diagramas de flujo (y, por consecuencia, diferentes
programas) que solucionen una necesidad o problema.

Un programa de computadora es el conjunto de instrucciones para resolver un


problema, escritas en algn lenguaje de programacin, para que la computadora
calcule su solucin, tomando en cuenta todas las alternativas de proceso a partir
de los datos de entrada.

Este conjunto de instrucciones se denomina programa fuente cuando el lenguaje


de programacin utilizado es de alto nivel (como el caso de Fortran). Una vez
que las instrucciones del programa fuente se traducen a lenguaje de mquina (se
compilan) se obtiene el programa objeto (expresado en lenguaje de mquina) y
el programa ejecutable (cuando se le llama, ste se ejecuta).

Proceso de la programacin.

Programa Programa Programa


fuente objeto ejecutable
(*.obj) (*.exe)

Elementos bsicos.
Al expresar la solucin de un problema mediante smbolos, se hace pensando en
la generalidad de sta, en no particularizar en ningn lenguaje de programacin.
Sin embargo, se tiene que conocer la interpretacin y el uso de algunos
elementos de la programacin que se diferencian de su comportamiento desde el
punto de vista matemtico o algebraico.

2
Simulacin Numrica de Yacimientos Semestre 2007-2

Antes de abordar el tema de diagramas de flujo, es conveniente conocer los


elementos que son comunes a algunos lenguajes. Estos elementos facilitan la
escritura de las expresiones aritmticas que se presentan en la elaboracin de
algoritmos.

Elementos de un lenguaje de programacin.


Los elementos esenciales en todo lenguaje de programacin son:
Operadores
Declaraciones
Constantes
Variables
Funciones de biblioteca

Es mediante stos, y otros elementos de programacin bsicos, que se puede


definir un nmero de instrucciones para resolver un problema con la
computadora, desde que entra la informacin hasta que se arrojan los
resultados.

Operadores.
Los operadores bsicos son los siguientes:
+ suma
- resta
* multiplicacin
/ divisin
^,** exponenciacin

Comnmente se utilizan parntesis para agrupar algunas operaciones, stos


tienen alta prioridad en las expresiones. El contenido de stos se evala primero
desde adentro hacia afuera.

La prioridad de los operadores, en casi todos los lenguajes, para evaluar


expresiones aritmticas es la siguiente:
1. Parntesis
2. Funciones
3. Exponenciacin
4. Multiplicacin o divisin
5. Suma o resta

Declaraciones.
Las instrucciones de un programa se dividen en ejecutables y no ejecutables. Las
ltimas proveen a la computadora la informacin necesaria sobre las
caractersticas de las variables, especificaciones para formatos de salida,...

3
Simulacin Numrica de Yacimientos Semestre 2007-2

Constantes.
Los tipos de constantes se dividen en:
Enteras (de precisin sencilla o doble precisin)
Reales (de precisin sencilla o doble precisin)
Alfanumricas

Constante entera: cantidad que carece de punto y dgitos decimales, slo admite
signos (positivo o negativo).

Constante real: cantidad que incluye punto y dgitos decimales, slo admite
signos (positivo o negativo).

Constante alfanumrica: son valores que involucran no slo dgitos, sino tambin
letras o caracteres y en conjunto tienen asignado un valor numrico para
almacenarse en la memoria de la computadora.

Variables.
Una variable es un nombre que empieza con una letra y puede estar formada con
varios caracteres ms. Por lo general son vlidos letras (de la A a la Z), nmeros
(del 0 al 9) y el guin bajo.

Las variables estn clasificadas en:


Enteras (integer)
Reales (real)
Alfanumricas:
1. Complejas (complex)
2. Lgicas (logical)
3. Caracter (character)

Funciones de Biblioteca.
Una funcin de biblioteca es un subproceso preprogramado, identificado con un
nombre de una letra y de uno a cinco caracteres ms, seguido de argumento
entre parntesis que asocia a l un valor nico en respuesta al llamado de la
funcin.

4
Simulacin Numrica de Yacimientos Semestre 2007-2

Funciones bsicas ms usuales:

abs(x) valor absoluto de x


min(x) valor mnimo de x
max(x) valor mximo de x
sqrt(x) raz cuadrada de x
sin(x) seno de x (en radianes)
cos(x) coseno de x (en radianes)
tan(x) tangente de x (en radianes)
atan(x) arco tangente de x
exp(x) exponencial (natural) de x
log(x) logaritmo (natural) de x
log10(x) logaritmo (base 10) de x

Aplicacin de los elementos de programacin en la generacin de


expresiones.
Todos los elementos de programacin mencionados nos ayudan en la definicin
exacta de la solucin de algn problema, puesto que la sintaxis correcta de todas
las instrucciones de un programa no puede presentar errores para poder compilar
el programa fuente.

Prioridad Descripcin Operadores


1 Parntesis ()
2 Exponenciacin **
3 Multiplicacin y Divisin *,/
4 Suma y Resta +,-

5
Simulacin Numrica de Yacimientos Semestre 2007-2

Ejemplo.

[a 7/3
]
+ sen 2 ( x )
2/5

+1
a+b

((A**(7/3) + sin (x)**2)**(2/5)) / (A+B) + 1

((A**(7/3) + R1**2)**(2/5)) / (A+B) + 1

((A**R2 + R1**2)**(2/5)) / (A+B) + 1

((R3 + R4)**(2/5)) / (A+B) + 1

(R5**(2/5)) / (A+B) + 1

(R5**(R6)) / (A+B) + 1

R7 / (R8) + 1

R9 + 1

R10

Diagramacin tradicional.
La solucin de un problema mediante simbologa de diagramas de flujo puede
hacerse con base en la simbologa ms simple o general, sin embargo, derivado
de ella se han producido figuras compuestas (con la unin de varios smbolos
bsicos) que en su conjunto implican acciones especficas predeterminadas o que
permiten definir subprocesos. Este tipo de smbolos se asocia con la idea general
de la programacin estructurada, en la que la solucin de un problema se
muestra con una trayectoria de solucin del inicio al fin, es decir un diseo
descendente, de esta manera se plantea de forma ms fcil la solucin del
problema.

No existe un estndar mundial que norme el uso de figuras geomtricas en la


elaboracin de diagramas de flujo, la simbologa que se presenta a continuacin
pretende ser la ms aceptada.

6
Simulacin Numrica de Yacimientos Semestre 2007-2

Simbologa bsica.

Inicio

Fin

Lectura

Escritura

Accin
ejecutable

1 Conector en misma pgina

1 Conector (continuacin)

2 Conector hacia otra pgina

Conector (continuacin)
2

Cond Pregunta lgica sencilla

7
Simulacin Numrica de Yacimientos Semestre 2007-2

Instruccin de reemplazo o concepto de almacn.


El elemento de programacin del que se derivan a su vez las estructuras, de
aplicacin prctica, como el contador y la sumatoria, es lo que se entiende como
instruccin de reemplazo o almacn.

V=e
Donde se tiene que:
V indica variable o almacn
= smbolo que indica la instruccin de reemplazo
e indica una expresin aritmtica que incluye variables,
constantes, funciones, operadores y parntesis.

Aplicaciones del ciclo iterativo


De la interpretacin que se hace de la instruccin de reemplazo, se genera el
concepto de contador o expresin que permite contar. Consta de un ciclo
iterativo que ejecuta varias veces la instruccin de reemplazo c = c + 1.

c=0
c = c + 1 El marco indica que la instruccin debe repetirse dentro de un
ciclo.

Diagrama de flujo correspondiente.

c=0

c=c+1

c>=n
Falso

Verdadero

8
Simulacin Numrica de Yacimientos Semestre 2007-2

El concepto de sumador (sumatorias).


Otro concepto de gran utilidad es la estructura que nos permite llevar a cabo
sumatorias. En ella el proceso que se repite es la acumulacin de expresiones
similares, por ejemplo:

n
S = 1 + 2 + 3 + 4 + 5 + ... = i
i =1
n
y = x1 + x 2 + x 3 + x 4 + x 5 + ... = x i
i =1

z=x +x +x +x +x
1 2 3 5 8

Diagrama donde se suman los dgitos que genera un contador:

c= 0

s=0

c = c+1

s=s+c

c<n
Verdadero

Falso

El concepto de multiplicacin reiterada (Factoriales).


Al igual que los anteriores, un elemento til para el clculo de frmulas es el que
resulta de aplicar el concepto de reemplazo del valor de la variable a lo que se
llamar una multiplicacin reiterada, la cual permite obtener factoriales de tipo
descendente o ascendente.

Diagrama de flujo:

9
k= 0

f=1

k = k+1

f=f*k

k<n
Verdadero

Falso

Ciclo iterativo controlado por un contador.

V = Vi
V = Vi, Vf, Inc

V = V+1

Proceso
Proceso

V<Vf

Si
No

Diagrama estructurado Diagrama tradicional

El diagrama de la izquierda indica que el proceso enmarcado en el rectngulo se


ejecutar tantas veces como sea necesario para que la variable V cambie de un
valor inicial Vi, aun valor final Vf, utilizando un incremento indicado en la
variable Inc. La repeticin es automtica y el ciclo es controlado por un contador
asociado a este smbolo compuesto.

Arreglos.
En problemas de ingeniera es frecuente el uso de arreglos de una o ms
dimensiones. Un arreglo es un conjunto de valores que se asocian a un mismo
nombre de variable de variable pero que se diferencian por medio de ndices.

10
En matemticas tradicionales tenemos arreglos del tipo:
V (i)
V (i,j)
V (i,j,k)
V (i,j,k,t)

Arreglo unidimensional (vectores)


Un arreglo unidimensional corresponde a un vector, mientras que un arreglo
bidimensional corresponde a una matriz. El arreglo ms sencillo es el de una
dimensin, el cual es slo un conjunto de elementos almacenados
secuencialmente en memoria. Cada elemento de un arreglo puede ser visto como
una variable separada. Se referencia al i-simo elemento de un arreglo a por
a(i).

Segmento de cdigo que guarda los primeros 10 cuadrados en un arreglo cuad


i=1,10,1
Integer:: i
real, dimension(10)::cuad
Cuad(i)=i**2
do i=1,10,1
cuad(i) = i**2
write(*,*) cuad(i) Cuad(i)
enddo

Arreglos Bidimensionales (Matrices)


Un arreglo bidimensional se puede entender como una matriz. stas son muy
importantes en aplicaciones de ingeniera.

Por ejemplo, la declaracin

Real, dimension(3,5) :: A

Define un arreglo bidimensional de 3 x 5 = 15 nmeros del tipo real. Es til


pensar que el primer ndice es el ndice del rengln, y el segundo ndice
corresponde a la columna.

11
Por lo tanto se vera como:

1 2 3 4 5

1 (1,1) (1,2) (1,3) (1,4) (1,5)

2 (2,1) (2,2) (2,2) (2,3) (2,4)

3 (3,1) (3,2) (3,3) (3,4) (3,5)

Tipos de Datos

En general, los tipos de datos que puede manejar Fortran son:

1. Constantes. Este trmino designa un valor especfico y determinado que se


define al hacer un programa y que no cambia a lo largo del mismo

2. Variables. El concepto de variable coincide con el concepto habitual que se


tiene de ella; es un nombre simblico con el que se designa o hace referencia a
un dato que puede tomar valores diversos.

Tanto las constantes como las variables pueden ser de cuatro tipos
principalmente:

Entera (INTEGER). Una constante entera es una sucesin de dgitos precedidos


o no del signo positivo (+) o negativo (-) y sin punto decimal. El lmite en la
cantidad para datos enteros es de -32,768 al 32,767 para mquinas con memoria
de 16 bits y de -2,147,433,647 al 2,147,433,647 para mquinas las cuales la
memoria guarde hasta 32 bits.

Reales (REAL). En cualquier caso, una constante real en FORTRAN equivale a


una cantidad formada por una parte entera y una fraccionaria (con punto
decimal). Se define como exponente real, el carcter alfabtico E seguido por un
signo + o - y por una constante formada por dos dgitos como mximo (Ej: E25,
1.23E-3, -5E-02)

Lgicas (LOGICAL). Un dato lgico nicamente posee dos valores: cierto


(.TRUE.) o falso (.FALSE.) y se guardan en memoria mediante cdigos binarios
especiales. Los puntos que preceden y siguen a estos valores son indispensables
para su uso dentro del lenguaje.

Caracteres (CHARACTER). Es un conjunto de caracteres vlidos y su longitud es


el nmero total de caracteres que contiene. Se define una constante de este tipo
precedidos y seguidos por un apstrofe ('), cuyo carcter denomina delimitador.

12
Complejos (COMPLEX). Son los datos que constan de dos partes, una entera y
una imaginaria. Por ejemplo para asignar valor a una variable C = 2 + 3i, despus
de declarar C como compleja se asigna C = (2,3).

Reales de precisin manipulable (REAL(kind = #)). Se denominan as a las


variables que pueden ser declaradas con una precisin definida por el usuario, la
funcin utilizada es kind y los valores disponibles son 4, 8 y 16 donde 4
corresponde a simple precisin, 8 a doble precisin y 16 a cudruple precisin.

Existe otro tipo de datos el cual permite manejar un valor constante, es decir, no
es posible remplazar o sustituir su valor. A este tipo de datos se les denomina

PARAMETER. Este tipo de dato constante puede abarcar cualquier otro tipo de
dato, es decir, el valor que se defina a un tipo paramtrico puede ser entero,
real, complejo, etc.

Cmo se declaran las variables?

Integer:: nombre de la variable Variables enteras


Real(kind=4):: nombre de las variable Variables reales de simple precisin
Real(kind=8):: nombre de la variable Variables reales de doble precisin
Real(kind=16):: nombre de la variable Variables reales de cudruple precisin
Character(Len=15):: nombre de la variable Carcter capaz de almacenar 15 letras
Real,Parameter:: nombre de la variable Constante de valor real
y valor
Integer,Parameter:: nombre de la variable Constante de valor entero
y valor
Ejemplo:

13
Entrada y salida de Datos
La forma en que en un programa en Fortran pueda entrar o salir informacin es a
travs de los comandos WRITE y READ

Con el comando WRITE es posible indicarle al programa que escriba, pero no slo
eso sino tambin en donde queremos que lo escriba y cmo queremos que los
escriba.

De manera similar con el comando READ el programa leer informacin del lugar
y manera que le indiquemos.

Cmo se utilizan estos comandos?

READ (5,11) lista de variables que escribir


WRITE (6,11) lista de variables que leer

Qu significan los nmeros en el comando?

Como se mencion anteriormente con estos comandos podemos determinar el


lugar de donde entrar o saldr la informacin as como la forma en la que esta
lo har. Para esto los comandos necesitan dos argumentos: la unidad, y el
formato.

La unidad representa el lugar y el formato la manera en que ser manejada la


informacin. La unidad y el formato se representan mediante la asignacin de un
alias el cual es representado por medio de un nmero, es decir, que a cada
unidad y formato que se vayan a manejar debemos de identificarlas por ese alias.
Es importante recordar que los nmeros 5 y 6 estn reservados por el lenguaje
para la escritura y lectura de pantalla as como los asteriscos.

Para la escritura en la pantalla con formato libre existe tambin la instruccin


PRINT *,(la coma es parte de la instruccin).

14
Cmo creo una unidad y un formato?

Para crear una unidad y trabajar con ella:

OPEN ()

OPEN contiene esta informacin:

o UNIT= Unidad con que se identifica el archivo (numero entero)


o FILE= Nombre que se le asigna al archivo
o STATUS= Especifica la condicin del archivo
o Old
o New
o Replace
o Scratch
o Unknown
o ACTION= Especifica si el archivo es de lectura, escritura o lectura-
escritura
o Read
o Write
o Readwrite

o IOSTAT= Especifica la variable entera a la cual se devolver un numero en


caso de que haya un error

Ejemplo:

OPEN(UNIT=10,FILE=datos.txt,STATUS=unknown, ACTION=read, IOSTAT=io)

Existen otros parmetros como: ERR, ACCESS, FORM, RECL, BLANK, POSITION,
DELIM, PAD, BLOCKSIZE, CARRIAGECONTROL, a los que no se har referencia
por salirse del objetivo del curso.

15
FORMAT()

Esta instruccin especfica la manera exacta en la que las variables sern


impresas.

Enteros: se utiliza el descriptor de formato I


rIw rIw.m

Reales: se utiliza el descriptor de formato F


rFw.d

Reales en notacin exponencial: se utiliza el descriptor de formato E


rEw.d

Caracteres: se utiliza el descriptor de formato A


rA rAw

Smbolo Significado
c Numero de columna
d Nmero de dgitos a la derecha del decimal
m Nmero mnimo de dgitos que se muestran
n Nmero de espacios
r Nmero de veces que se utilizar el formato
w Nmero de caracteres en la salida

El descriptor X inserta espacios


nX
n es el nmero de espacios que se van a insertar

El descriptor T indica el nmero de columna donde se va a escribir


Tc
c es el nmero de columna

Repeticin de grupos de descriptores de formato:

330 FORMAT(1X,I6,F10.2,A, F10.2,A,I6,F10.2,A, F10.2,A)

330 FORMAT(1X,2(I6,2(F10.2,A)))

16
En este ejemplo el programa leer de pantalla una variable de tipo real de doble
precisin (temperatura) y otra variable de tipo entera (das) tomara su valor
dentro del programa.

Despus las imprimir en la unidad 100 que es un archivo de texto llamado


resultados.txt el cual est abierto para la escritura y lectura. En este archivo se
imprimirn 3 espacios en blanco seguidos del valor de la variable temperatura
en la cual aparecern 12 caracteres de los cuales 3 sern decimales y 1 ser un
punto. Seguido a este numero existirn otros 3 espacios en blanco e
inmediatamente despus el valor de la variable das el cual estar
comprendido por 4 caracteres.

17
Tipos de Operadores

Los operadores a los que Fortran da soporte se dividen en tres grupos


principalmente: aritmticos, de comparacin y lgicos.

Los operadores aritmticos a los que Fortran da soporte en su orden de


ejecucin son:

Orden Descripcin Operadores


1 Parntesis ()
2 Exponenciacin **
3 Multiplicacin y Divisin *,/
4 Suma y Resta +,-

Los operadores de comparacin son:

Operador Descripcin Ejemplo Resultado


.EQ. == igual 3==1 o 3.EQ.1 Falso
.NE. /= diferente 9/=9 o 9.NE.9 Falso
.LT. < menor que 5<8 o 5.LT.8 Falso
.LE. <= menor o igual que 2<=5 o 2.LE.5 Verdadero
.GT. > mayor que 5>1 o 5.GT.1 Verdadero
.GE. >= mayor o igual que 8>=4 o 8.GE.4 Verdadero

Los operadores lgicos son:

Operador Descripcin Ejemplo Resultado


.NOT. Negacin .NOT.(8==8) Falso
.AND. Ambos lados deben ser iguales (1<2).AND.(3<4) Verdadero
.OR. Un lado o ambos son verdaderos (1<2).OR.(4<3) Verdadero
.EQV. Ambos lados deben ser iguales (5<1).EQV.(7<2) Verdadero
.NEQV. Ambos lados deben ser diferentes (2<1).NEQV.(3>2) Verdadero

18
Estructuras de decisin
La finalidad de este tipo de estructuras es la toma de decisiones, lo que nosotros
comnmente usamos para determinar si algo es bueno o malo, falso o verdadero,
si o no, es o no es, etc. Con estas estructuras podremos responder a este tipo de
situaciones a la hora de elaborar nuestro programa.

El comando utilizado en Fortran para que el programa tome decisiones es: If.

Cmo se utiliza este comando?

La primera y ms bsica de estas estructuras es el IF, y el formato que debe


seguir es el siguiente:

If (Condicin) Then
Conjunto de instrucciones
End If

Lo que se debe de entender como:

Si la (Condicin) se cumple, entonces


Se realiza el Conjunto de instrucciones
Fin de la estructura

Ahora bien la condicin puede estar constituida mediante operadores


aritmticos, lgicos y/o comparacin.

Tambin es posible indicarle que ejecute acciones no slo cuando se cumple la


sentencia sino que tambin realice otras si la condicin no se cumple.

Cmo se utiliza el comando de esta manera?

If (Condicin) Then
Conjunto de instrucciones
Else
Conjuto de instrucciones
End If

Lo que se debe de entender como:

Si la (Condicin) se cumple entonces


Se realiza el Conjunto de instrucciones
Si no se cumple entonces
Se realiza otro Conjunto de instrucciones
Fin de la estructura

19
Esta estructura y las que se vern ms adelante pueden ser anidadas mientras se
respete la regla del cierre de estructuras. Esto es que no se puede cerrar una
estructura de nivel superior sin antes haber cerrado una de nivel inferior que se
encuentra alojada en l.

Incorrecto Correcto
1 if(condicion1) Then 1 if(condicion1) Then
2 if(condicion1) Then 2 if(condicion1) Then
Operaciones Operaciones
1 end if 2 end if
2 end if 1 end if

Ejemplo:

El cdigo de un programa que asigna una letra de calificacin segn la


calificacin que haya obtenido el alumno.

20
La estructura SELECT CASE provee una alternativa a una serie de sentencias if.
Su forma general es:

SELECT CASE(selector)
CASE(selector 1)
operacin
CASE(selector 2)
operacin
...
CASE DEFAULT
operacin
END SELECT

Cada CASE (seleccin de caso) puede contener una lista y/o rango de constantes
enteras de tipo carcter o lgicas, pero estas no pueden mezclarse. CASE
DEFAULT es opcional y cubre todos los posibles valores de las expresiones ya
cubiertas por las otras sentencias CASE.

Ejemplo:

21
Estructuras de repeticin
Las estructuras de repeticin son tiles ya que dan lugar a un ciclo o bucle, esto
es, permiten ejecutar un conjunto de sentencias cierto nmero de veces.

Para ejecutar repetidamente una serie de sentencias en bucle, tiene mucha


utilidad en el lenguaje FORTRAN el uso de una sentencia especial: la sentencia
DO.

Cmo se utiliza este comando?

DO contador = inicio, fin, incremento


Sentencias
END DO

Cuando se trata de una estructura tipo DO se requiere emplear una variable que
sirva para asignar el nmero de veces que se repetirn las sentencias dentro de
la estructura.

Contador es una variable entera al igual que inicio, fin e incremento


estas indican un valor inicial, un valor final y un incremento respectivamente.
El valor de inicio no necesariamente debe ser mayor que el valor de fin.
La variable incremento puede omitirse si su valor es igual a 1, ya que indica el
incremento que tendr la variable para llegar de inicio a fin.

22
Existe una forma de condicionar que se ejecute determinado ciclo a partir del
cumplimiento de una sentencia. Esto es a travs del comando DO WHILE

Cmo se utiliza este comando?

Su forma es comparable con colocar una estructura IF al principio del DO; las
sentencias dentro de DO WHILE se llevarn a cabo mientras la condicin
establecida sea cierta, de otro modo el control del programa continuar con las
sentencias despus de END DO.

Su forma general es:

DO WHILE (condicin)
Sentencias
END DO

Ejemplo:

Encontrar la interseccin de dos curvas que se cruzan.

Otra forma de realizar la misma accin pero sin hacer uso del DO WHILE, es
dejar el DO abierto, o sea no poner un contador ni poner una condicin al
principio del DO. Para lograr que termine el ciclo cuando se cumpla la condicin,
tendremos que escribir la condicin dentro del ciclo de esta manera.

23
If(condicin) exit

Esto quiere decir que si se cumple la condicin, se ejecuta la instruccin EXIT.


La instruccin EXIT detiene la ejecucin del bloque de instrucciones dentro de un
ciclo y el control es transferido a la primera instruccin despus del ciclo

La instruccin CYCLE cuando es ejecutada transfiere el control al inicio del ciclo

24
Arreglos
Hasta ahora hemos visto que existen varios tipos de variables, cada una con sus
propias caractersticas, sin embargo todas estas slo son capaces de almacenar y
reemplazar un solo valor.

En Fortran se tiene la posibilidad de crear variables de cualquier tipo (reales,


enteras, caracteres, etc.) que alberguen o almacenen no slo uno, sino varios
valores de un mismo tipo. Por ejemplo, podemos hacer un programa y en ste
crear una variable que almacene la edad de cada uno de los alumnos que estn
inscritos en un curso sin la necesidad de crear tantas variables como alumnos
haya en el grupo.

A este tipo de variables se les llama Arreglos. Un arreglo es una coleccin de


datos, todos del mismo tipo, separados en elementos individuales y organizados
en un patrn regular.

Cmo se utiliza estos arreglos?

Antes de utilizar un arreglo primero debemos definir que tipo de variables


podremos almacenar en este arreglo y hasta cuantas variables podemos
almacenar en estos. Esto se logra al declarar dicha variable:

Tipo de variable,DIMENSION,(numerodedimensiones)::nombre del arreglo

25
Ahora, la nica manera de poder utilizar o manipular la informacin que
almacenen los arreglos es a travs de un apuntador, es decir, un elemento que
indique con que valor de todos los que un arreglo pueda manipular se est
trabajando.

Cabe sealar que este apuntador nos ayudar a manipular toda la informacin
en un arreglo, es decir, ste nos permitir almacenar, operar y remplazar
cualquier valor almacenado en el arreglo.

Ahora, siguiendo con el ejemplo anterior, supongamos que al curso llega un


estudiante nuevo y tambin es necesario almacenar el dato de su edad. El
programa que se hubiese hecho en el caso anterior no nos servira ahora ya que
este programa crea una variable que almacena un nmero fijo de edades
correspondiente al nmero de alumnos antes de que llegara el estudiante nuevo.
Y tal vez podra pensarse que la solucin podra ser el de aumentar la capacidad
de la variable manipulando el cdigo del programa, sin embargo Qu tan
practico es tener que manipular el cdigo del programa cada vez que haya
necesidad de cambiar la capacidad de almacenamiento de la variable?

Fortran ofrece la posibilidad de crear arreglos con memoria dinmica, es decir,


la capacidad de almacenamiento de un arreglo puede ser manipulada segn se
decida o se necesite en el programa.

Un arreglo que utiliza memoria dinmica se declara utilizando la instruccin


ALLOCATABLE:

REAL, ALLOCATABLE,DIMENSION(:,:)::A

En este caso estamos indicando que la variable A es de tipo real de dos


dimensiones.

Para especificar el tamao se utiliza la instruccin ALLOCATE:

ALLOCATE (A(100,100))

Aqu establecemos el tamao de la variable A, el cual es de 100 x 100

Para liberar la memoria que ocupa el arreglo se utiliza la instruccin


DEALLOCATE:

DEALLOCATE(A)

26
27
SUBRUTINAS Y FUNCIONES EXTRNSECAS
Muchas veces es necesario en un programa efectuar un conjunto de instrucciones
de una manera reiterativa. Las subrutinas y funciones evitan tener que escribir
la misma parte de cdigo varias veces. Adems, ayudan a hacer el programa ms
ordenado e inteligible. Las subrutinas y funciones extrnsecas son partes de
programa que se definen separadamente del programa principal, y sus variables
necesitan ser definidas en la subrutina ya que son variables locales, no
compartidas con el programa principal o con las de otras subrutinas.

Subrutinas

Se definen mediante la instruccin SUBROUTINE. La subrutina ha de acabar con


un END.

Por lo regular las subrutinas van fuera de programa principal y por lo tanto no
comparten las mismas variables con l. Si queremos que las subrutinas
compartan las variables con el programa principal deberemos poner la subrutina
al final del programa principal pero antes de la subrutina colocar la instruccin
contains. Esta instruccin nos permite compartir las variables del programa
principal con la subrutina.

La sintaxis completa de una subrutina es:

SUBROUTINE subroutine_name(argument_list)
Seccin de declaracin
Seccin de ejecucin
END SUBROUTINE

La subrutina se invoca con la instruccin CALL.

Atributo INTENT

ste indica si la variable es dato de entrada, salida o ambas.

INTENT (IN)
El argumento es dato de entrada

INTENT (OUT)
El argumento es dato de salida

INTENT (INOUT)
El argumento acta como entrada y salida

28
29
Funciones extrnsecas

La sintaxis es muy parecida a la de las subrutinas pero, al contrario que en stas,


en las que puede haber cualquier nmero de argumentos de entrada y salida, en
las funciones slo hay una variable de salida, que es el propio nombre de la
funcin. Se definen mediante la instruccin FUNCTION, y acaba tambin con
END. El tipo de la funcin debe ser igual al tipo de dato de salida de la funcin.

La estructura general es

tipo FUNCTION function_name(argument_list)


Seccin de declaracin
Seccin de ejecucin
END FUNCTION

30
Anexo

Como crear un archivo F90


Abrir Lahey ED Developer (lo reconoces por tener este icono)

Oprimir Ctrl+n y elegir dentro del


men el tipo de archivo F90 o F95

Para iniciar cualquier programa se deben de escribir dos comandos


fundamentales: program e implicit none

31
Para poder compilar y ejecutar tus programas debes guardar tu programa con la
extensin .f90. Para esto oprime F12 y aparecer una ventana como se muestra en la
figura. En esta ventana busca el directorio donde desees guardar tu cdigo y nmbralo,
recordando ponerle la extensin F90 o F95 segn sea el caso.

Como compilar un archivo


Primero debes elegir un directorio de trabajo, es decir, debes elegir un
directorio o carpeta en la cual deseas que se generen tus archivos de respaldo
.BAK as como los archivos tus archivos ejecutables con los cuales podrs hacer
correr tu programa.

Te recomendamos elegir la misma carpeta en la cual guardaste tu archivo F90


o F95 ya que esto te permitir tener un mayor control y manejo de tus
archivos.

Para elegir dicha carpeta, en el men de Archivo elegir Change Directory o


teclear Ctrl+kdn.

32
Te aparecer una nueva ventana en la cual debers elegir tu directorio o carpeta
de trabajo

Oprimir Alt+F10 y elegir la opcin de General. Ahora dentro del men elegir la
opcin de Lahey/Fujitsu LF95(Optimized) y oprimir el boton Edit.

33
Ya hecha la seleccin se debe de modificar los siguientes campos como sigue:

o En Comand Line: lf95 nombre del archivo.f95 g pause


o En Working directory: el directorio o carpeta de trabajo que elegiste
anteriormente

Ya llenados los campos anteriores oprimir el botn Run

34
Ahora aparecer una nueva venta. En esta ventana se mostraran los errores o
advertencias que tenga tu programa, as como la lnea o rengln del cdigo en el
que se encuentran.

Si tu programa no tiene errores ni advertencias, entonces es esta misma pantalla


aparecer el mensaje de Encountered 0 errors, 0 warnings in file nombre del
programa.f95 lo cual indica que tu programa se ha compilado correctamente y
se ha generado un ejecutable en la carpeta de trabajo que elegiste con el cual
podrs hacer correr a tu programa.

35

Das könnte Ihnen auch gefallen