Beruflich Dokumente
Kultur Dokumente
FORTRAN
1
Simulacin Numrica de Yacimientos Semestre 2007-2
Conceptos Generales.
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.
Proceso de la programacin.
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
Operadores.
Los operadores bsicos son los siguientes:
+ suma
- resta
* multiplicacin
/ divisin
^,** exponenciacin
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.
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
5
Simulacin Numrica de Yacimientos Semestre 2007-2
Ejemplo.
[a 7/3
]
+ sen 2 ( x )
2/5
+1
a+b
(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.
6
Simulacin Numrica de Yacimientos Semestre 2007-2
Simbologa bsica.
Inicio
Fin
Lectura
Escritura
Accin
ejecutable
1 Conector (continuacin)
Conector (continuacin)
2
7
Simulacin Numrica de Yacimientos Semestre 2007-2
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.
c=0
c = c + 1 El marco indica que la instruccin debe repetirse dentro de un
ciclo.
c=0
c=c+1
c>=n
Falso
Verdadero
8
Simulacin Numrica de Yacimientos Semestre 2007-2
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
c= 0
s=0
c = c+1
s=s+c
c<n
Verdadero
Falso
Diagrama de flujo:
9
k= 0
f=1
k = k+1
f=f*k
k<n
Verdadero
Falso
V = Vi
V = Vi, Vf, Inc
V = V+1
Proceso
Proceso
V<Vf
Si
No
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)
Real, dimension(3,5) :: A
11
Por lo tanto se vera como:
1 2 3 4 5
Tipos de Datos
Tanto las constantes como las variables pueden ser de cuatro tipos
principalmente:
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).
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.
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.
14
Cmo creo una unidad y un formato?
OPEN ()
Ejemplo:
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()
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
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.
17
Tipos de Operadores
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.
If (Condicin) Then
Conjunto de instrucciones
End If
If (Condicin) Then
Conjunto de instrucciones
Else
Conjuto de instrucciones
End If
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:
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.
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.
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
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.
DO WHILE (condicin)
Sentencias
END DO
Ejemplo:
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
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.
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.
REAL, ALLOCATABLE,DIMENSION(:,:)::A
ALLOCATE (A(100,100))
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
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.
SUBROUTINE subroutine_name(argument_list)
Seccin de declaracin
Seccin de ejecucin
END SUBROUTINE
Atributo INTENT
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 estructura general es
30
Anexo
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.
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:
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.
35