Escolar Documentos
Profissional Documentos
Cultura Documentos
FERNANDO TOLEDO2
APENDICE
FUNDAMENTOS DE PROGRAMACION EN FORTRAN
La codificacin de algnos de los programas presentados en este artculo, como ya se seal, estn en
lenguaje FORTRAN. El compilador empleado es el Microsoft FORTRAN versin 5.1, por lo que el empleo
de alguna otra versin requerir la consulta de su respectivo manual, debido a que algunos de los comandos
aqu presentados pueden no incluirse en dicha versin y con ello marcar errores de codificacin.
A continuacin se presentan los operadores que se emplean en este lenguaje:
Operadores Aritmticos.
**
*
/
+
-
Exponenciacin.
Aectacin negativa.
Multiplicacin.
Divisin.
Adicin.
Sustraccin.
Operadores Lgicos.
.AND.
.NOT.
.OR.
.EQV.
.NEQV.
Conjuncin.
Negacin.
Disyuncin.
Equivalencia lgica.
No equivalencia lgica.
Operadores Racionales.
.LT.
.LE.
.EQ.
.NE.
.GT.
.GE.
Menor que.
Menor o igual que.
Igual que.
Diferente de.
Mayor que.
Mayor o igual que.
Operador de Asignacin.
=
Asigna o reemplaza.
Variables.
Los nombres de las variables deben ser de 1 a 6 caracteres. El primer caracter debe ser alfabtico. Si no
se expresa el tipo de variable mediante un estatuto IMPLICIT, todas las variables que inicien con las letras I,
J, K, L, M, y N son tipo INTIGER*2 INTIGER*4 dependiendo de la asignacin dada por el metacomando
$STORAGE; las variables iniciadas con las letras A-H O-Z se tomarn como tipo REAL.
Tipo de Dato
INTEGER*2
INTEGER*4
REAL
FERNANDO TOLEDO2
DOUBLE
PRECISION
LOGICAL
(2 o 4 bytes)
CHARACTER*n
COMPLEX
(8 bytes)
Valores enteros.
Valores hexadecimales.
Valores reales.
Valores reales con exponente.
Valores reales de rango extendido.
Valores reales de doble precisin.
Valores lgicos.
Valores tipo caracter.
Funciones Intrnsecas.
Nombre
Definicin
Tipo de
Argumentos
Tipo de valores de
Funcin
(todos)
(todos)
INTEGER
REAL*8
(todos)
(todos)
(todos)
CHARACTER
INTEGER
INTIGER
REAL*4
REAL*4
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
INTEGER
CHARACTER
REAL*4
REAL*8
REAL*4
REAL*8
arg
Obtiene la magnitud del
nmero complejo Z
(Todos)
COMPLEX*8
COMPLEX*16
(Todos)
REAL*4
REAL*8
INTEGER
INTEGER
Conversin
Convierte el contenido de la
variable a:
INT (arg)
INTEGER
REAL (arg)
REAL*4
FLOAT(I)
REAL*4
SNGL(X)
REAL*4
REAL*8
DBLE(arg) [3
COMPLEX*8
CMPLX(Z,[Y)[4
COMPLEX*16
DCMPLX(Z,[Y)
INTEGER
ICHAR(C) [5
CHARACTER
CHAR(X) [5
Truncacin
AINT(arg)
Trunca un nmero REAL
Valor absoluto
ABS (arg)
CABS(Z)
Residuo
MOD(arg1,arg2)
FERNANDO TOLEDO2
cosciente arg1/arg2
Diferencia positiva [5
DIM(arg1,arg2)
arg1-Mnino de arg1 y arg2
Conjugado de un Complejo
CONJG(Z)
Regresa X - jY de X + jY
DCONJG(Z)
Regresa X - jY de X + jY
Parte real de un complejo
DREAL(Z)
REAL (Z)
Parte imaginaria de un complejo
IMAG (Z)
REAL*4
REAL*8
REAL*4
REAL*8
INTEGER
REAL*4
REAL*8
INTEGER
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
COMPLEX*8
COMPLEX*16
COMPLEX*16
COMPLEX*8
COMPLEX*16
REAL*8
REAL*4
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
COMPLEX*8
COMPLEX*16
REAL*4
REAL*8
REAL*4
REAL*8
REAL*4
REAL*8
REAL*4
REAL*8
REAL*4
REAL*8
REAL*4
REAL*8
Raiz cuadrada
SQRT(arg)
Exponencial
EXP(arg)
arg
Logaritmo natural
LOG(arg)
ln (arg)
Logaritmo de base 10
LOG10(arg)
log10 (arg)
Seno
SIN(arg)
Coseno
COS(arg)
Tangente
TAN(arg)
Arco seno
ASIN(arg)
Arco coseno
ACOS(arg)
Arco tangente
FERNANDO TOLEDO2
ATAN(arg)
ATAN2(X,Y)
arctan (X/Y)
Seno hiperblico
SINH(arg)
Coseno
hiperblico
COSH(arg)
Tangente hiperblica
TANH(arg)
REAL*4
REAL*8
REAL*4
REAL*8
REAL*4
REAL*8
REAL*4
REAL*8
REAL*4
REAL*8
REAL*4
REAL*8
REAL*4
REAL*8
REAL*4
REAL*8
REAL*4
REAL*8
REAL*4
REAL*8
BACKSPACE{archivo
([[UNIT=archivo
[[,ERR=errlabel
[[,IOSTAT=iocheck )}
Posiciona al archivo especificado en el inicio para su escritura.
archivo
Expresin entera que especifica la unidad externa. Si archivo no es abierto, ocurre
un error.
errlabel
Etiqueta de una instruccin ejecutable que debe estar en el mismo programa. Si
errlabel es especificado, un error I/O transfiere el control hasta la etiqueta errlabel.
Si es omitido, un error de I/O se determina con la presencia o ausencia de iocheck.
iocheck
Variable entera, arreglo de elementos, o estructura de elementos que regresan un
valor de cero si no ocurri un error, o el nmero de error si ste ocurri.
BLOCK DATA [[nombre del subprograma
Identifica el bloque de datos de un subprograma, donde variables y arreglos de elementos deben ser
inicializados.
FERNANDO TOLEDO2
El nombre no ser similar a ninguno de los nombres de variabes locales o arreglo de elementos definidos
en el subprograma, y adems ser distinto a los nombres dados en el programa principal, procedimientos
externos, bloques comunes o cualquier otro subprograma.
CALL nom_sub [[args
Invoca una subrutina.
nom_sub
Nombre de la subrutina.
args
Uno o ms argumentos.
Si son ms de un argumento, estos se separan con comas.
CASE (lista de expresiones)
Comienza un bloque de instrucciones que se ejecuta si la expresin de prueba es igual a uno de los
valores de la lista de expresiones. Deben estar dentro del bloque del SELECT CASE.
CASE DEFAULT
Comienza un bloque de instrucciones que es ejecutado si la expresin de prueba no es ninguno de
los valores de los listados CASE de el bloque del SELECT CASE.
CLOSE ([[UNIT=archivo
[[,ERR=errlabel
[[,IOSTAT=iocheck
[[,STATUS=estado )
Cierra el archivo y previene subsecuentes lecturas y escrituras dirigidas a ese archivo.
archivo
Expresin entera que especifica la unidad externa. No ocurre error si la unidad no
es abierta.
errlabel
Ver BACKSPACE.
iocheck
Ver BACKSPACE.
estado
Expresin de caracteres que pueden ser KEEP DELETE. En archivos
temporales est predeterminado STATUS=DELETE, con lo cual se borra el
archivo. El colocar STATUS=KEEP ocasionar un error. En los dems archivos,
est predeterminado STATUS=KEEP.
COMMON [[/[[cname[[ [attrs /nlist[[ [[,/[[cname[[ [attrs /nlist...
Permite a dos o ms unidades o subprogramas accesar para lectura y/o modificar datos almacenados en
grupos de variables, a su ves definidos mediante un bloque con nombre.
CONTINUE
No tiene ningn efecto.Se usa como un punto de referencia para un nmero de etiqueta,
particularmente como la etiqueta terminal de un ciclo DO DO WHILE.
CYCLE
Control de regreso para el comienzo de un ciclo DO DO WHILE.En una instruccin del ciclo DO,
la variable es incrementada, En una instruccin del ciclo DO WHILE la expresin lgica es reevaluada.
DATA nlist
Asigna valores iniciales a variables. El nlist es una lista de variables, arreglo de elementos, arreglo
de nombres, subhilera de nombres , y listas implicando al ciclo DO separadas por comas.
DEALLOCATE arraylist
Libera el espacio previamente recervado en la instruccin ALLOCATE.
DIMENSION arreglo[[ [attrs ({[[lower: upper :} [[, {[[lower: upper :}... )
Especifica el nombre de un arreglo y define el nmero de elementos en el arreglo.
arreglo
Nombre del arreglo. Ms de un arreglo pueden ser declarados con la instruccin
DIMENSION. Los nombres se separarn con comas.
attrs
lower
upper
FERNANDO TOLEDO2
Una lista de atributos separados por comas. El attrs describe a arreglo. Los
siguientes atributos podrn ser usados con el arreglo: ALIAS, ALLOCATABLE, C,
EXTERN, FAR, HUGE, NEAR, PASCAL, REFERENCE, VALUE.
Es el lmite inferior, el cual puede ser positivo, negativo o cero. Si no es
especificado, se tomar como 1.
Es el lmite superior., el cual puede ser positivo, negativo, cero o asterizco. Este
debe ser mayor o igual que lower.
DO [[label[[, variable=v_ini,v_fin[[,inc
Evalua el listado de la instruccin DO repetidamente ya sea hasta la instruccin etiquetada con el
nmero label o la instruccin END DO. Si inc (incremento) no es especificado, su valor por defecto es +1. La
ejecucin se detiene cuando variable excede el valor v_fin. Si inc es negativo, la ejecucin termina cuando
variable es menor que v_fin.
DO label WHILE (expresin lgica)
Repite el bloque de instrucciones acotado por la etiqueta con el nmero label, mientras la expresin
lgica sea verdadera. Si label no es especificado, el listado se finaliza con la instruccin END DO.
ELSE
Marca el inicio de un bloque ELSE.
ELSE IF (expresin) THEN
Ejecuta el bloque de instrucciones si expresin es verdadera.
END
Termina la ejecucin del programa principal, o la de un subprograma.
END DO
Termina el listado de instrucciones de un ciclo DO o DO WHILE.
END IF
Termina un bloque de instrucciones IF.
ENDFILE{archivo
([[UNIT=archivo
[[,ERR=errlabel
[[,IOSTAT=iocheck )}
Escribe una marca de fin de archivo para la unidad especificada.
ENTRY ename[[ [eattrs [[ ( [[formal[[ [atrrs [[, formal[[ [atrrs ... )
Especifica un valor de entrada a una subrutina o funcin externa.
ename
Nombre del valor de entrada. Si ename es un valor de entrada para una funcin
definida por el usuario, ename debe de corresponder al tipo de dato para:
Las reglas preestablecidas en la determinacin del tipo;
El tipo de dato especificado con un IMPLICIT;
Una declaracin en la funcin definida por el usuario, en su seccin de tipo de
declaracin
eatrrs
Lista de atributos, separados por comas. El eattrs describe a ename. Los siguientes
atributos pueden ser usados con ename: ALIAS, C, LOADDS, PASCAL,
VARYING.
formal
Nombre de la variable, arreglo, variable estructurada procedimiento formal. Si
ENTRY est en una subrutina, formal puede ser una asterizco.
attrs
Lista de atributos, separados por comas. El attrs describe a formal. Los siguientes
atributos pueden ser usados con formal: FAR, HUGE, NEAR, REFERENCE,
VALUE.
FERNANDO TOLEDO2
FERNANDO TOLEDO2
FERNANDO TOLEDO2
archivo
Expresin entera de la unidad que ser cerrada. El archivo deber ser abierto como
un archivo de acceso directo.
lockmode
Expresin tipo caracter con uno de los siguientes valores:
'NBLCK' Bloquea la regin especificada para lectura y escritura. Si alguna de las
marcas est bloqueada por un proceso diferente, ocurre un error. Este
valor es el predeterminado.
'LOCK' Bloquea la regin especificada para escritura y lectura. Se espera en
alguna parte de la regin bloqueada para un proceso diferente que llegue
a disponerlo.
'NBRLCK' Bloquea la regin especificada para lectura; puede marcarlo an sinedo
para escritura. Este bloqueo es similar a NBLCK.
'RLCK'
Bloquea la regin especificada para lectura;puede marcarlo an siendo
para escritura. Este bloqueo es similar a LOCK.
'UNLCK' Desbloquea la regin especificada.
res
access
FERNANDO TOLEDO2
blanks
Expresin tipo caracter que se evaluar con NULL ZERO. Si es NULL (el
predeterminado) se ignorarn los espacios (mismo que BN del editor descriptor, a
menos que sobrepase de un BZ explcito en la instruccin READ). Si es ZERO se
rellenan los espacios con ceros (mismo que BZ del editor descriptor, a menos que
sobrepase de un BN explcito en la instruccin READ).
blocksize
Expresin entera que especifica el tamao del buffer interno para la unidad (en
dytes).
En una aplicacin Windows, blocksize marca el tamao de la pantalla del buffer.
El tamao del buffer determina cuanto texto es guardado para la ventana. Marca el
buffer con WINBUFINF continuamente redistribuyendo memoria para salvar todo
el texto. Si blocksize no es especificado, el buffer tomar 2048 bytes.
file
form
iofocus
Expresin lgica que especifica si una nueva ventana en Windows tendr el enfoque
I/O. Si se omite, iofocus es .TRUE.
mode
Expresin tipo caracter evaluada con READ (los procesos sern slo de lectura en
el archivo), WRITE (los procesos sern solo de escritura en el archivo)
READWRITE (lectura y escritura en el archivo).
Si mode no es especificado, se abrirn los archivos con modo READWRITE.
recl
Expresin entera que especifica el largo de cada registro en bytes. Este parmetro es
requerido para archivos de acceso directo, y es ignorado para archivos secuenciales.
share
status
10
FERNANDO TOLEDO2
'OLD'
Expresin tipo caracter que es evaluado como una cadena, con apertura en la barra
de ttulos de una pequea ventana dentro de una aplicacin Windows. El ttulo
predeterminado identifica la ventana como una unidad y da el nmero archivo (esto
es, TITLE=UNIT ndonde n es el nmero de unidades.
11