You are on page 1of 88

Recursos Computacionales

Instructor: Rogelio Torres Cabrera


M.I. Ruth Virginia Wilson

Torre de Ingeniera, 1er piso, ala sur, cubculo 10


5623-35-00 Ext. 1106
RTorresC@iingen.unam.mx
INICIO

Programacin en Fortran 90

Coordinacin de Ingeniera de procesos industriales y


ambientales. Instituto de Ingeniera UNAM
Descripcin: Diseador de interfaces grficas, programacin de
rutinas de clculo, procesamiento y manejo de datos.
Colaborador en proyectos:
Diseo de ductos e instalaciones de produccin costaafuera. IINGEN-PEMEX, duracin 1 ao.
Generador de mapas de estabilidad para pozos con
bombeo neumtico. IINGEN-PEMEX, duracin 1 ao.
Generador de Tablas hidrulicas para pozos
petroleros. UNAM-PEMEX, duracin 1 ao.
Consultora en el diseo de las bases de datos para AVL
(Localizacin Automtica de Vehculos).
Empresa: GD&A
Puesto: Consultor de Bases de datos
Descripcin: Diseo de las bases de datos y entidades para la
localizacin de vehculos, y de la conexin con el proveedor de
coordenadas
REFERENCIA

CONTENIDO

Programacin en Fortran 90

Objetivos del curso:


El alumno programar aplicaciones de
software empleando el lenguaje de
programacin FORTRAN aplicable a la
ingeniera petrolera.
Evaluacin
Tareas
Exmenes /Proyecto final

REFERENCIA

CONTENIDO

(30%)
(70%)

Programacin en Fortran 90

Temario
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE CONTROL
LECTURA / ESCRITURA CON FORMATO
LECTURA / ESCRITURA DE UN ARCHIVO
ARREGLOS
PROGRAMACIN ESTRUCTURADA
COMPILACIN

REFERENCIA

CONTENIDO

Programacin en Fortran 90

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Contenido
INTRODUCCIN
ELEMENTOS BSICOS

Tipo de datos

DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA

Diagramas de f
ujo
Pseudocdigos
Instruccin FORMAT

Forma de escritura del cdigo fuente


Estructuras de decisin

Estructura de un programa FORTRAN

Instruccin IF

Constantes y variables

Instruccin IF ELSE IF -ELSE Declaracin de datos : Default y Explicto

Instruccin SELECT CASE


Descriptores de Format
os
Estructuras de repeticin
Descriptores X y T

Ciclos condicionados
Ciclos Iterativos

COMPILACIN

Descriptor /

Instruccin CYCLE y EXIT

Operadores aritmticos, lgicos y de comp


aracin
Jerarqua de operaciones
Funciones intrnsecas
Instrucciones de entrada y salida
Inicializacin de variables
Arreglos

Procedimientos
Procedimientos externos

Instruccin Open

Procedimientos internos

Escritura de datos en un arch


ivo

Mdulos
Interfaces
Procediimientos recursiv
os
REFERENCIA

CONTENIDO

Vectores
Matrices
Ciclos DO implictos

Lectura de datos de un archi


vo

Operaciones con arreglo


s

Instruccin CLOSE

Arreglos Allocatable

Programacin en Fortran 90

Introduccin
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO

FORTRAN (FORmula
lenguaje de alto nivel

TRANslation) fue el primer

LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA

FORTRAN es el lenguaje que ofrece la mejor sintaxis,


funciones intrnsecas (escalares y arreglos)

COMPILACIN

FORTRAN es ms flexible en el manejo de memoria

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Tipos de datos
INTRODUCCIN
ELEMENTOS BSICOS

DISEO DE PROGRAMAS

ABCDEFGHIJKLMNOPQRSTUVWXYZ

ESTRUCTURAS DE
CONTROL

abcdefghijklmnopqrstuvwxyz

LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS

Letras:

INTEGER

REAL

PROGRAMACIN
ESTRUCTURADA

CHARACTER
COMPILACIN

LOGICAL

intervalo:
-2147483647
avlido
2147483647
Real
vlido
Real
Dgitos:
Vlido
Nono
vlido
10.
0 1 2 3 41,000,000.
56789
.TRUE.
TRUE
-999.9
111E3
Enteros vlidos
Enteros no vlidos
123.45E20
-12.0E1.5
Caractres especiales:
.FALSE.
.FALSE
0
1,000,000
0.12E+1
-999
-100.
= + - * / ( ) , . ' : ! " % & ; < > ? $ _ espacio
123456789
+17
Vlido
No vlido
Esta es una prueba Esta es una prueba

Esta es una prueba


{^}
Esta es una prueba
3.1415

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Forma de escritura del cdigo fuente


INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

FORMA FIJA

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

FORMA LIBRE

COMPILACIN

1-132
7-72
7-72

La forma de escritura fija es obsoleta

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Estructura de un programa FORTRAN


INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO

DECLARACIN

LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

EJECUCIN

TERMINACIN

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Seccin de declaracin
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA

El tipo de variable debe de ser declarada en la


seccin de declaracin al comienzo del programa,
despus de la instruccin no ejecutable PROGRAM,
ejemplo:

COMPILACIN

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Seccin de Ejecucin
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

La seccin de ejecucin consiste de una o ms instrucciones ejecutables que describe las acciones
que va a realizar el programa.
WRITE (*,*)

LECTURA / ESCRITURA
CON FORMATO

READ (*,*)

LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Seccin de Terminacin
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

La seccin de terminacin consiste de las


instrucciones STOP y END PROGRAM
La instruccin STOP detiene el programa

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

La instruccin END PROGRAM indica que no hay


ms instrucciones.

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Constantes y variables
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

Pueden ser una combinacin de dgitos, letras, _


Los nombres de variables y constantes pueden tener hasta 31
caractres de longitud
No pueden empezar por un carcter numrico

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

Nombres validos
Tiempo
Distancia
Z234545654
Presin_vapor

REFERENCIA

CONTENIDO

Nombres no vlidos
este_nombre_es_muy_pero_muy_largo
3_dias
a$

Programacin en Fortran 90

Declaracin de datos : Default y Explicto


INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS

El tipo de la variable debe de indicarse explcitamente al


comienzo del programa:

ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

DEFAULT

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

EXPLCITO

COMPILACIN

IMPLICIT NONE

aquellas variables cuyo nombre comience con los


Todas
La instruccin IMPLICIT NONE deshabilita la
caracteres alfabticos I, J, K, L, M o N se dice que queda
INTEGER
definicin::implcita de las variables
implcitamente definida como variable entera.
REAL::
Cuando se emplea IMPLICIT NONE se debe de
Todas aquellas variables cuyo primer carcter alfabtico
declarar explcitamente todas las variables utilizadas
LOGICAL::
sea una letra distinta de las mencionadas anteriormente,
dentro del programa
se dice que son variables reales definidas de forma
CHARACTER(len=<len>)::var1,
var2
implcita.
La instruccin IMPLICIT NONE debe aparecer
despus de la instruccin
CHARACTER(len=10)::uno,
dos PROGRAM y antes de
cualquier instruccin de declaracin
CHARACTER::inicial
CHARACTER(15)::id

EJEMPLO

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Instruccin IMPLICIT NONE


INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA

PROGRAM prueba_1
REAL::tiempo=10.0
WRITE(*,*)tiempo= , time
END PROGRAM

COMPILACIN

REFERENCIA

CONTENIDO

PROGRAM prueba_1
IMPLICIT NONE
REAL::tiempo=10.0
WRITE(*,*)tiempo= , time
END PROGRAM

Programacin en Fortran 90

Operadores aritmticos, lgicos y de comparacin


INTRODUCCIN
ELEMENTOS BSICOS

OPERADOR

DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

OPERADORestilo FUNCINEstilo
Nuevo
+ sumaanterior

LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS

OPERADORES ARITMTICOS

OPERADORES LGICOS

PROGRAMACIN
ESTRUCTURADA
OPERADORES DE COMPARACIN
COMPILACIN

A.AND.B

RESULTADO .TRUE. SI A Y B

O
RESULTADO .TRUE. SI
* multiplicacin
CUALQUIERA A O B ES
VERDADERA
.NE. / divisin /=
diferente
Variable_name=expression
.A.EQV.B
EQUIVALENCIA
RESULTADO .TRUE. SI A=B
.LT. ** Exponenciacin
<
menor que
A.OR.B

.LE.

.NOT.B

CONTENIDO

DEFINICIN

Los clculos
son realizados en
SONFORTRAN
VERDADERAS
- Resta
con
.EQ.instrucciones de
== asignacin: igual

.A.NEQV.B

REFERENCIA

SIGNIFICADO

NO
EQUIVALEN
CIA

<=

NO

.GT.

>

.GE.

>=

menor o
igual que
mayor que
mayor o
igual que

Programacin en Fortran 90

Jerarqua de operaciones
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO

El contenido de los parntesis es evaluado primero, de adentro hacia


fuera

Todos los exponenciales se evalan de derecha a izquierda

Las multiplicaciones y divisiones se evalan de izquierda a derecha

Las sumas y restas se evalan de izquierda a derecha

LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Funciones Intrnsecas
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO

Una funcin FORTRAN calcula un valor de salida a partir de uno o ms valores


de entrada. Los valores de entrada a la funcin se conocen como el argumento:
y= SIN (alfa) //argumento en radianes
y= SIN (alfa*(3.141593/180.)) //factor de conversin de grados a radianes

LECTURA / ESCRITURA
DE UN ARCHIVO

REAL, PARAMETER::grados_a_radianes=3.141593/180.
y= SIN (alfa*grados_a_radianes)

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

El argumento de una funcin puede ser una constante, una


variable, una expresin o el resultado de otra funcin, ejemplo:
y= SIN (3.141593)
y= SIN (x)
y= SIN (pi*x)
y= SIN (SQRT(x))

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Funciones Intrnsecas
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

Dependiendo del tipo de dato que sea


requerido por una funcin, stas pueden
ser funciones genricas o funciones
especficas:

LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

REFERENCIA

CONTENIDO

Funciones genricas: pueden usar uno o


ms tipos de datos, ejemplo: ABS(x)
Funciones especficas: solo pueden usar
un especifco dato de entrada.

Programacin en Fortran 90

Instrucciones de entrada y salida


INTRODUCCIN

teclado

ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA

INSTRUCCIN READ(*.*)
Ejemplo:

Formato libre

PROGRAM ejemplo_datos_entrada
INTEGER::i,j
REAL::a
CHARACTER(len=12)::chars
READ(*,*)i,j,a,chars
END PROGRAM

COMPILACIN

Los datos tienen que ser escritos en el orden que se pidan en el


programa:
1,2,3.,nmero
Los datos pueden estar separados por comas o espacios, o por lneas

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Instrucciones de entrada y salida


INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

INSTRUCCIN READ(*,*)
Ejemplo:
PROGRAM ejemplo_datos_entrada
INTEGER::i,j,k,l; READ(*,*)i,j; READ(*,*)k,l
END PROGRAM
Si los datos de entrada del programa son
1,2,3,4
5,6,7,8
Los valores que leer el programa son
i=1,j=2,k=5, j=6
Se pueden escribir varias instrucciones en una sola lnea separadas por ;

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Instrucciones de entrada y salida


INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

INSTRUCCIN WRITE(*.*)
Ejemplo:
PROGRAM ejemplo_datos_salida
INTEGER::ix
LOGICAL::prueba
REAL::beta
Ix=1
Prueba=.TRUE.
Beta=3.141593
WRITE(*,*) ix =
, ix
WRITE(*,*) beta =
, beta
WRITE(*,*) coseno beta =
, COS(beta)
WRITE(*,*) prueba =
, prueba
WRITE(*,*) REAL(ix), NINT (beta)
END PROGRAM

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Inicializacin de variables
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

PROGRAM inicializacion

LECTURA / ESCRITURA
CON FORMATO

INTEGER::i

LECTURA / ESCRITURA
DE UN ARCHIVO

WRITE(*,*)i

ARREGLOS

END PROGRAM

PROGRAMACIN
ESTRUCTURADA
COMPILACIN

El valor de i vara segn el compilador, En LF90 las variables


se inicializan en cero.

Siempre se deben de inicializar las variables

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Inicializacin de variables
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA

PROGRAM inicializacion

PROGRAM inicializacion

INTEGER::i

INTEGER::i

i= 1

READ(*,*) i

WRITE(*,*)i

WRITE(*,*)i

END PROGRAM

END PROGRAM

COMPILACIN

PROGRAM inicializacion
INTEGER::i=1
WRITE(*,*)i
END PROGRAM

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Diagrama de flujo
INTRODUCCIN
ELEMENTOS BSICOS

inicio

DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

Entender el
problema que se
trata de resolver

LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

Definir entradas y
salidas

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

Diseo del
algoritmo

COMPILACIN

Convertir el
algoritmo en
instrucciones F90
Probar el
programa

Fin
REFERENCIA

CONTENIDO

Descomposicin

Refinamiento

Programacin en Fortran 90

Diagramas de flujo
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS

Indica el comienzo o final de un algoritmo

ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO

Indica un clculo, el resultado del clculo se le asigna


a una variable

LECTURA / ESCRITURA
DE UN ARCHIVO

Indica una operacin de entrada o salida


Indica un punto donde se escoge que hacer entre
dos alternativas

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

Indica una referencia a un procedimiento

COMPILACIN

Indica la direccin del programa

Indica procesos iterativos

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Pseudocdigo
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

Ejemplo:
El usuario introduce un valor de temperatura en grados
Fahrenheit
Leer temperatura en grados Fahrenheit (temp_F)

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

REFERENCIA

Temp_K en kelvin
Escribir temperatura en Kelvin

CONTENIDO

(5./9.)*(temp_F-32)+273.15

Programacin en Fortran 90

Estructuras de control
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS

Las estructuras de control controlan el orden en que se van a ejecutar las instrucciones

ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

ESTRUCTURAS DE DECISIN

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

ESTRUCTURAS DE REPETICIN

COMPILACIN

REFERENCIA

CONTENIDO

La finalidad de las estructuras de decisin es la toma de decisiones

Las estructuras de repeticin permiten ejecutar sentencias cierto nmero de veces

Programacin en Fortran 90

Estructuras de decisin
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
INSTRUCCIN IF

LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS

INSTRUCCIN IF ELSE IF - ELSE

PROGRAMACIN
ESTRUCTURADA
COMPILACIN

INSTRUCCIN SELECT CASE

ESTRUCTURAS DE DEC. CON NOMBRE

REFERENCIA

CONTENIDO

Estas instrucciones nos permiten seleccionar y


ejecutar secciones especficas de cdigo
(llamadas bloques)

Programacin en Fortran 90

Instruccin IF
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS

IF (expresin lgica) THEN

ESTRUCTURAS DE
CONTROL

ESTRUCTURA

Expresin
lgica
REAL::a=3,b=2

LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

.FALSE.

PROGRAM
Intruccin
1 prueba_3

Instruccin 2
DIAGRAMA DE FLUJO

ARREGLOS

EJEMPLO

PROGRAMACIN
ESTRUCTURADA
COMPILACIN

IF (a>b) THEN
WRITE(*,*)
a
.TRUE.
.
END IF

Instruccin
1
END PROGRAM
Instruccin
2
.

END IF
Cuando solo se va a ejecutar una sola
instruccin se puede escribir:
IF (exp_log) instruccin
REGRESAR

REFERENCIA

BLOQUE

CONTENIDO

PROGRAM prueba_3
REAL::a=3,b=2
IF (a>b) WRITE(*,*) a
END PROGRAM

Programacin en Fortran 90

Instruccin IF ELSE IF - ELSE


INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS

IF (expresin lgica 1 ) THEN


Instruccin 1
Instruccin 2

ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO

ESTRUCTURA

.FALSE.

LECTURA / ESCRITURA
DE UN ARCHIVO

Expresin lgicaELSE
1
DIAGRAMA DE FLUJO

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

Expresinlogica
lgica 2 2) THEN
IF (expresin
Instruccin 1
Instruccin 2
.TRUE.
.TRUE.

EJEMPLO

BLOQUE 1

ELSE
Instruccin 1
Instruccin 2
END IF

REGRESAR

REFERENCIA

.FALSE.

CONTENIDO

BLOQUE 2

BLOQUE 3

Programacin en Fortran 90

Instruccin IF ELSE IF - ELSE


INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

PROGRAM roots
! Purpose:
! This program solves for the roots of a quadratic equation
! Of the form a*x**2 + b*x + c = 0.
IMPLICIT NONE
! Declare the variables used in this program
REAL :: a
REAL :: b
REAL :: c
REAL :: discriminant
REAL :: imag_part
REAL :: real_part
REAL :: x1
REAL :: x2
! Prompt the user for the coefficients of the equation
WRITE (*,*) 'This program solves for the roots of a quadratic '
WRITE (*,*) 'equation of the form A * X**2 + B * X + C = 0. '
WRITE (*,*) 'Enter the coefficients A, B, and C: '
READ (*,*) a, b, c
! Echo back coefficients
WRITE (*,*) 'The coefficients A, B, and C are: ', a, b, c
! Calculate discriminant
discriminant = b**2 - 4. * a * c

REGRESAR

REFERENCIA

CONTENIDO

! Solve for the roots, depending upon the value of the discriminant
IF ( discriminant > 0. ) THEN ! there are two real roots, so...
x1 = ( -b + sqrt(discriminant) ) / ( 2. * a )
x2 = ( -b - sqrt(discriminant) ) / ( 2. * a )
WRITE (*,*) 'This equation has two real roots:'
WRITE (*,*) 'X1 = ', x1
WRITE (*,*) 'X2 = ', x2

ELSE IF ( discriminant == 0. ) THEN ! there is one repeated root, so...


x1 = ( -b ) / ( 2. * a )
WRITE (*,*) 'This equation has two identical real roots:'
WRITE (*,*) 'X1 = X2 = ', x1
ELSE ! there are complex roots, so ...
real_part = ( -b ) / ( 2. * a )
imag_part = sqrt ( abs ( discriminant ) ) / ( 2. * a )
WRITE (*,*) 'This equation has complex roots:'
WRITE (*,*) 'X1 = ', real_part, ' +i ', imag_part
WRITE (*,*) 'X2 = ', real_part, ' -i ', imag_part
END IF
END PROGRAM

Programacin en Fortran 90

Instruccin SELECT CASE


INTRODUCCIN
ELEMENTOS BSICOS

INTEGER,LOGICAL,CHARACTER

DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

SELECT CASE (case expresin)


CASE(case selector 1)
Instruccin 1
Instruccin 2
.
.
CASE(case selector 2)
Instruccin 1
Instruccin 2
.
.
CASE DEFAULT
Instruccin 1
Instruccin 2
.
.
END SELECT

LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

El case DEFAULT es opcional, si se utiliza se ejecutar el


bloque de instrucciones que le corresponde solo si el el valor de
case_expresion esta fuera del rango de todos los case_selector
REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Estructuras de decisin con nombre


INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

Name: IF (expresin lgica) THEN


LECTURA / ESCRITURA
CON FORMATO

Intruccin 1

LECTURA / ESCRITURA
DE UN ARCHIVO

Instruccin 2
.

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

.
.
END IF name

Name: SELECT CASE (case expresin)


CASE(case selector 1)
Instruccin 1
Instruccin 2
.
.
CASE(case selector 2)
Instruccin 1
Instruccin 2
.
.
CASE DEFAULT
Instruccin 1
Instruccin 2
.
.
END SELECT name

El nombre asignado debe de cumplir las caractersticas de los nombres en


FORTRAN
REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Estructuras de Repeticin
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

CICLOS CONDICIONADOS

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

CICLOS ITERATIVOS

COMPILACIN

CICLOS CON NOMBRE

REFERENCIA

CONTENIDO

Los ciclos permiten ejecutar una conjunto de


sentencias ms de una vez. Hay dos formas
bsicas para construir ciclos, los ciclos
condicionados y los ciclos iterativos.

Programacin en Fortran 90

Ciclos condicionados
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

Instrucciones
Instrucciones
..

LECTURA / ESCRITURA
CON FORMATO

ESTRUCTURA

LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA

DIAGRAMA DE FLUJO

DO
Instrucciones

IF (expresin lgica) EXIT


.
.TRUE.
END DO
Expresin
lgica

COMPILACIN

EJEMPLO

.FALSE.

Instrucciones
Instrucciones
..
Instrucciones

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Ciclos condicionados
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

PROGRAM stats_1
!
! Purpose:
! To calculate mean and the standard deviation of an input
! data set containing an arbitrary number of input values.
IMPLICIT NONE
! Declare and initialize the variables used in this program.
INTEGER :: n =0
! The number of input samples.
REAL :: std_dev = 0. ! The standard deviation of the input
samples.
REAL :: sum_x = 0. ! The sum of the input values.
REAL :: sum_x2 = 0. ! The sum of the squares of the input
values.
REAL :: x = 0.
! An input data value.
REAL :: x_bar
! The average of the input samples.
! While Loop to read input values.
DO
! Read in next value
WRITE (*,*) 'Enter number: '
READ (*,*) x
WRITE (*,*) 'The number is ', x
! Test for loop exit
IF ( x < 0 ) EXIT
! Otherwise, accumulate sums.
n
=n+1
sum_x = sum_x + x
sum_x2 = sum_x2 + x**2
END DO

! Calculate the mean and standard deviation


x_bar = sum_x / real(n)
std_dev = sqrt( (real(n) * sum_x2 - sum_x**2) / (real(n) * real(n-1)) )
! Tell user.
WRITE (*,*) 'The mean of this data set is:', x_bar
WRITE (*,*) 'The standard deviation is: ', std_dev
WRITE (*,*) 'The number of data points is:', n
END PROGRAM
REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Ciclos Iterativos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

DO ndice=valor inicial,valor final,incremento

LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

CICLOS ANIDADOS

Instruccin 1
Instruccin 2
Instruccin n

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

EJEMPLO

COMPILACIN

REGRESAR

REFERENCIA

CONTENIDO

END DO

No deben usarse como ndices variables reales

Programacin en Fortran 90

Ciclos Iterativos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

PROGRAM stats_3
!
! Purpose:
! To calculate mean and the standard deviation of an input
! data set, where each input value can be positive, negative,
! or zero.
IMPLICIT NONE

! Loop to read input values.


DO i = 1, n
! Read values
WRITE (*,*) 'Enter number: '
READ (*,*) x
WRITE (*,*) 'The number is ', x

! Declare the variables used in this program.


INTEGER :: i
! Loop index
! Accumulate sums.
INTEGER :: n = 0 ! The number of input samples.
sum_x = sum_x + x
REAL :: std_dev
! The standard deviation of the input samples.
sum_x2 = sum_x2 + x**2
REAL :: sum_x = 0. ! The sum of the input values.
REAL :: sum_x2 = 0. ! The sum of the squares of the input values.
END DO
REAL :: x = 0.
! An input data value.
REAL :: x_bar
! The average of the input samples.
! Now calculate statistics.
! Get the number of points to input.
x_bar = sum_x / real(n)
WRITE (*,*) 'Enter number of points: '
std_dev = sqrt((real(n)*sum_x2 - sum_x**2) / (real(n)*real(n-1)))
READ (*,*) n
! Tell user.
! Check to see if we have enough input data.
WRITE (*,*) 'The mean of this data set is:', x_bar
IF ( n < 2 ) THEN ! Insufficient data
WRITE (*,*) 'The standard deviation is: ', std_dev
WRITE (*,*) 'The number of data points is:', n
WRITE (*,*) 'At least 2 values must be entered.'
END IF
ELSE ! we will have enough data, so let's get it.
END PROGRAM

REGRESAR
REFERENCIA

CONTENIDO

Programacin en Fortran 90

Ciclos Anidados
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

PROGRAM ciclos
Integer::i,j,producto

LECTURA / ESCRITURA
CON FORMATO

do i=1,3

LECTURA / ESCRITURA
DE UN ARCHIVO

do j=1,3

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

producto=i*j
write (*,*) i,*,j,=,producto
End do
End do

COMPILACIN

End program

REGRESAR
REFERENCIA

CONTENIDO

Programacin en Fortran 90

Ciclos con nombre


INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS

Name: DO ndice=valor inicial,valor final,incremento

ESTRUCTURAS DE
CONTROL

Instruccin 1
Instruccin 2
Instruccin n

LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS

If (exp_logica) CYCLE name

PROGRAMACIN
ESTRUCTURADA

END DO name

COMPILACIN

Name: DO

IF (expresin lgica) EXIT name


.
END DO

REGRESAR
REFERENCIA

CONTENIDO

Programacin en Fortran 90

Instrucciones CYCLE y EXIT


INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

Estas instrucciones pueden utilizarse para detener la ejecucin de las sentencias


dentro de ciclos condicionados o iterativos

LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

EXIT

PROGRAM
PROGRAM
INTEGER::I
INTEGER::I

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

CYCLE

DO I=1,5
DO I=1,5
IF (I==3) EXIT
IF (I==3) CYCLE
WRITE (*,*) I
WRITE (*,*) I
END DO
END DO
END PROGRAM
END PROGRAM
La
cuando
ejecutada
control al inicio
del ciclo
Lainstruccin
instruccinCYCLE
EXIT detiene
la es
ejecucin
del transfiere
bloque deelinstrucciones
dentro
de
un ciclo y el control es transferido a la primera instruccin despus del ciclo

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Instruccin Format
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

Esta instruccin especfica la manera exacta en la que las variables


van a ser impresas por el programa

LECTURA / ESCRITURA
CON FORMATO

Ejemplo:

LECTURA / ESCRITURA
DE UN ARCHIVO

WRITE (*,100) i, resultado


100 FORMAT (El resultado de la iteracin ,I3, es, F7.3)

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

Forma adicional de dar formato:


WRITE (*,(1X,I6,F10.2))i,x
Character (len=20)::cadena
Cadena=(1X,I6,F10.2)
Write (*,cadena)i,x

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Descriptores de Formato
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

Enteros: se utiliza el descriptor de formato I


rIw rIw.m

LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

Reales: se utiliza el descriptor de formato F


rFw.d

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

REFERENCIA

Exponenciales: se utiliza el descriptor de formato E


rEw.d
Caracteres: se utiliza el descriptor de formato A
rA rAw

CONTENIDO

Programacin en Fortran 90

Descriptores de Formato
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS

Smbolo

ESTRUCTURAS DE
CONTROL

significado

Numero de columna

Nmero de dgitos a la derecha del decimal

PROGRAMACIN
ESTRUCTURADA

Nmero mnimo de dgitos que se muestran

COMPILACIN

Nmero de espacios

Nmero de veces que se utilizar el formato

Nmero de caractres que se usarn en la salida


para la ubicacin de un dato

LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Descriptores de Formato......ejemplos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS

INTEGER

ESTRUCTURAS DE
CONTROL

REAL

LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

REAL:: a=-12.3, b=.123, c= 123.456


INTEGER:: i=-12, j=4, num= -12345
CHARACTER(len=19):: cadena=esto es una cadena.
REAL:: a=1.2346E6 b=0.001, c= -77.7E10 d=-77.7E10
WRITE(*,300)
a,b,c
WRITE(*,300)
cadena
i, i+12,j, num
300WRITE(*,100)
FORMAT
300 FORMAT
(' ',A)(' ',2F6.3,F8.3)
WRITE(*,1000)
a,b,c,d
100 FORMAT
(' ',2i5,i6,i10)
1000 FORMAT (' ',2E14.4,E13.6, E11.6)

EXPONENCIALES

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

CHARACTER

COMPILACIN

0 .

-1 2

*- * 0 *. *7 *7 *7

REFERENCIA

CONTENIDO

1 2 3 5 E + 0 7

0 .

1 0

0 E

- 0

- 1 2 345

0 00 .0 1
E +2 13 2 *1 *2* 3* .* 4
* *5 *6 * * *

Programacin en Fortran 90

Descriptores X y T
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

El descriptor X inserta espacios

LECTURA / ESCRITURA
CON FORMATO

nX

LECTURA / ESCRITURA
DE UN ARCHIVO

n es el nmero de espacios que va a insertar

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

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


Tc
c es el nmero de columna

EJEMPLO

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Descriptores X y T
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

CHARACTER (LEN=10):: nombre='Ruth'


CHARACTER (LEN=16):: apellido='Wilson'
INTEGER:: edad=27
CHARACTER (LEN=16):: ocupacion='estudiante'
WRITE (*,100)nombre, apellido, edad, ocupacion
100 FORMAT (1X,A7,1X,A7,4X,I3,T40,A10)

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

R u t h

W i l s o n
e s

REFERENCIA

CONTENIDO

t u d i a n t e

2 7

Programacin en Fortran 90

Descriptores de Formato
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO

Repeticin de grupos de descriptores de formato:

LECTURA / ESCRITURA
DE UN ARCHIVO

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

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

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

COMPILACIN

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Descriptor /
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA

integer::indice=10
REAL::tiempo=330,profundidad=330., amplitud= 850.65, fase=30.
WRITE (*,100)indice,tiempo, profundidad, amplitud, fase
100 FORMAT ('1', T20,'Resultado de la prueba numero ',I3,///,&
1X,'Tiempo
=', F6.0/,&
1X,'Profundidad =', F7.1, ' metros',/&
1X,'Amplitud
=', F8.2/,&
1X,'Fase
=', F7.1)

COMPILACIN

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Instruccin OPEN
INTRODUCCIN
ELEMENTOS BSICOS

OPEN (open_list)

DISEO DE PROGRAMAS

Open_list contiene informacin sobre:

ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS

Nmero de unidad
Nombre de archivo
Informacin sobre como abrir al archivo

Esta informacin va separada por comas

PROGRAMACIN
ESTRUCTURADA

UNIT

COMPILACIN

FILE

STATUS

ACTION

IOSTAT
REFERENCIA

CONTENIDO

especifica el nombre de una variable entera en la cual se


regresa
el valor
dearchivo
la condicin
de la
operacin
especifica
especifica
si el
la condicin
es abierto
del
para
archivo
lectura,OPEN
escritura, o
indica un nmero asociado
al
archivo
nombre del archivo que va ambas
a ser abierto
IOSTAT=int_val
STATUS=char_exp
UNIT=int_expACTION=char_exp
(entero no negativo)
FILE= char_exp (char_exp
contiene el nombre del archivo)
Si IOSTAT= 0 la operacin
OPEN
seser
realiz
Char_exp
puede
satisfactoriamente,
deser
lo contrario
regresara un nmero entero
Char_exp
OLD,puede
NEW,REPLACE,UNKNOWN
READ, WRITE,READWRITE
positivo correspondiente a un mensaje de error

Programacin en Fortran 90

Apertura de archivos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

ESCRITURA

LECTURA

EJEMPLO

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

Integer::i

COMPILACIN

OPEN(UNIT=8,FILE=ejemplo.dat,STATUS=OLD,ACTION=READ, IOSTAT=i)
OPEN(UNIT=unidad,FILE=datos_salida.dat,STATUS=NEW,ACTION=WRITE, IOSTAT=i)

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Instruccin CLOSE
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

Esta instruccin cierra un archivo usando el nmero asociado a el archivo.

LECTURA / ESCRITURA
CON FORMATO

CLOSE(close_list)

LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Arreglos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

Un arreglo es un grupo de variables o constantes todas


del mismo tipo, que tienen el mismo nombre. Los
valores en el grupo ocupan lugares consecutivos en la
memoria de la computadora.

LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

VECTORES

Elemento del arreglo

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

MATRICES

A(1)
OPERACIONES
CON
ARREGLOS

Memoria
de la
computadora

A(2)
A(3)

Arreglo A

A(4)
ARREGLOS
ALLOCATABLE

Los elementos de un arreglo se identifican con un


subndice de tipo entero que seala la posicin de este
dentro del arreglo

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Vectores
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS

Rengln 1

ESTRUCTURAS DE
CONTROL

Rengln 2

LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS

A(renglones)

Rengln 3
DECLARACIN

Rengln 4

INICIALIZACIN

PROGRAMACIN
ESTRUCTURADA
COMPILACIN

ARREGLOS
CONSTANTES
DO
IMPLCITOS

Se debe de indicar el nmero de elementos del arreglo:


REAL, DIMENSION(10)::A
Los
elementos de este tipo de arregloextent
son
DO i=1,10
valores constantes
A(i)=0
REAL, DIMENSION (16)::presin
END DO
A=(/1,2,3,4,5/)

EJEMPLOS

A=(/0,0,0,0,0,0,0,0,0,0/)
Rank del arreglo
Constructores de arreglos
Rank = 1, extent=16
A=0;
REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Ciclos DO implcitos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

Estos ciclos permiten escribir o leer una lista


de argumentos en funcin de un contador

LECTURA / ESCRITURA
CON FORMATO

WRITE (*,100) (A(i),i=1,5)

LECTURA / ESCRITURA
DE UN ARCHIVO

Ciclos anidados:

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

WRITE (*,100) ((i,j,j=1,3),i=i,2)

COMPILACIN

Inicializacin:
integer, dimension(5)::arreglo1=(/(i,i=1,5)/)

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Ciclos DO.ejemplos
Vectores
implcitos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

REFERENCIA

PROGRAM squares

PROGRAM square_roots

IMPLICIT NONE

IMPLICIT NONE

INTEGER :: i
INTEGER, DIMENSION(10) :: number, square

INTEGER :: i
REAL, DIMENSION(10) :: value = (/ (i, i=1,10) /)
REAL, DIMENSION(10) :: square_root

! Initialize number and calculate square.


DO i = 1, 10
number(I) = i
! Initialize number
square(i) = number(i)**2
! Calculate square
END DO

! Calculate the square roots of the numbers.


DO i = 1, 10
square_root(i) = SQRT(value(i))
END DO

! Write out each number and its square.


DO i = 1, 10
WRITE (*,100) number(i), square(i)
100 FORMAT (1X,'Number = ',I6,' Square = ',I6)
END DO

! Write out each number and its square root.


DO i = 1, 10
WRITE (*,100) value(i), square_root(i)
100 FORMAT (1X,'Value = ',F5.1,' Square Root = ',F10.4)
END DO

END PROGRAM

END PROGRAM

CONTENIDO

Programacin en Fortran 90

Ciclos DO.ejemplos
Vectores
implcitos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

PROGRAM square_and_cube_roots
!
! Purpose:
! To calculate a table of numbers, square roots, and cube roots
! using an implied DO loop to output the table.
!
! Record of revisions:
!
Date
Programmer
Description of change
!
====
==========
=====================
! 08/22/95 S. J. Chapman
Original code
!
IMPLICIT NONE
! List of parameters:
INTEGER, PARAMETER :: max_size = 10

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

! List of variables:
INTEGER :: j
! Loop index
REAL, DIMENSION(max_size) :: value
! Array of numbers
REAL, DIMENSION(max_size) :: square_root ! Array of square roots
REAL, DIMENSION(max_size) :: cube_root ! Array of cube roots
! Calculate the square roots & cube roots of the numbers.
DO j = 1, max_size
value(j) = real(j)
! Write out each number, its square root, and its cube root.
square_root(j) = sqrt(value(j))
WRITE (*,100)
cube_root(j) = value(j)**(1./3.)
100 FORMAT ('0',20X,'Table of Square and Cube Roots',/, &
END DO
4X,' Number Square Root Cube Root', &
3X,' Number Square Root Cube Root',/, &
4X,' ====== =========== =========', &
3X,' ====== =========== =========')
WRITE (*,110) (value(j), square_root(j), cube_root(j), j = 1, max_size)
REGRESAR
110 FORMAT (2(4X,F6.0,9X,F6.4,6X,F6.4))
END PROGRAM

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Ciclos DO implcitos
Matrices
INTRODUCCIN
ELEMENTOS BSICOS

Matriz

DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

Rengln 1
Rengln 2

B(renglones, columnas)

Rengln 3
Rengln 4

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

Col1

Col2 Col3 Col4

COMPILACIN

DECLARACIN

INICIALIZACIN

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Ciclos DO implcitos
Declaracin
de arreglos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO

Se debe de indicar el nmero de elementos del arreglo:

LECTURA / ESCRITURA
DE UN ARCHIVO

REAL, DIMENSION (3,6)::presin

ARREGLOS

INTEGER, DIMENSION (0:100,0:20)::SAT

PROGRAMACIN
ESTRUCTURADA
COMPILACIN

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Ciclos DO implcitos
Inicializacin
de matrices
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

INSTRUCCIONES
DE
ASIGNACIN

INTEGER, DIMENSION (4,3)::SAT


La funcin RESHAPE cambia la forma de la
INTEGER,
DIMENSION
matriz,
su
estructura(4,3)::SAT(4,3)
es:
DO
I=1,4

INSTRUCCIONES
DE
DECLARACIN

Integer:: i,DO
j J=1,3
Matriz=RESHAPE (arreglo1,arreglo2)
SAT (I,J)=J

INSTRUCCIONES
DE
LECTURA

OPEN INTEGER,
END DO DIMENSION (4,3)::SAT(4,3)=&
(7,FILE=DATOS_INICIO.DAT,STATUS=OLD,ACTION=read)
RESHAPE((/1,1,1,1,2,2,2,2,3,3,3,3/),(/4,3/)
END DO
READ(7,*)((SAT(I,J),J=1,3),I=1,4)

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Ciclos DOcon
Arreglos
implcitos
asignacin dinmica de memoria
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

Un arreglo que utiliza memoria dinmica se declara utilizando la instruccin ALLOCATABLE:


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

LECTURA / ESCRITURA
CON FORMATO

Para especificar el tamao se utiliza la instruccin ALLOCATE:

LECTURA / ESCRITURA
DE UN ARCHIVO

ALLOCATE (a(100,100))

ARREGLOS

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


PROGRAMACIN
ESTRUCTURADA

DEALLOCATE(a)

COMPILACIN

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Ciclos DO implcitos
Operaciones
con arreglos
INTRODUCCIN
ELEMENTOS BSICOS

Si los arreglos tienen la misma forma se pueden


hacer operaciones aritmticas:
PROGRAM
add_arrays de estas funciones es un escalar,
El argumento
estas
funciones pueden aplicarse a los
IMPLICIT
NONE
Una
funcin
de los
estearreglos
tipo transforma un arreglo en
argumentos de
INTEGER
i
un ::resultado
escalar o en otro arreglo.

DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

OPERACIONES EN
TODOS LOS ELEMENTOS

FUNCIONES INTRNSECAS
(ELEMENTALES)

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

FUNCIONES INTRNSECAS
(INDAGACIN)

FUNCIONES
TRANSFORMACIONALES

REAL, DIMENSION(4) :: a = (/ 1., 2., 3., 4./)


REAL,El
DIMENSION(4)
:: b = (/tipo
5., 6.,
8./)
valor de este
de7.,funciones
REAL, DIMENSION(4) :: c, d

depende de las

propiedades del arreglo:


Funciones
transformacionales:
Real,
dimension::x=(/0.,3.14,1.,2./)
! Element
by element
addition
DO i =Real,
1, 4
dimension (4)::y
c(i) =MAXVAL
a(i) + b(i)
Integer::i
Funciones intrnsecas de indagacin:
END DO
MINLOC
Y=sin(x)
! Whole
array addition
MINVAL
ALLOCATE
(ARREGLO)
d = a +PRODUCT
b
LBOUND
RESHAPE
! WriteDo
out
results
i=1,4
SHAPE
WRITESUM
(*,100) 'c', c
Y(i)=sin(x(i))
WRITESIZE
(*,100) 'd', d
End
do
100 FORMAT
(' ',A,' = ',5(F6.1,1X))
TRANSPOSE
UBOUND
END PROGRAM

Funciones intrnsecas:
Escalares
con arreglos:
ABS,SIN,COS,TAN,EXP,LOG,LOG10,MOD,SQRT
REGRESAR

RE.al, DIMENSION(4) :: a = (/ 1., 2., 3., 4./),c


real ::b=10
C=b*a

EJEMPLO

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Ciclos DO implcitos
Operaciones
con arreglos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

PROGRAM check_array
!
! Purpose:
! To illustrate the use of array inquiry functions.
!
!
IMPLICIT NONE
! List of variables:
REAL,DIMENSION(-5:5,0:3) :: a = 0. ! Array to examine

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

! Get the shape, size, and bounds of the array.


WRITE (*,100) SHAPE(a)
100 FORMAT (1X,'The shape of the array is:
WRITE (*,110) SIZE(a)
110 FORMAT (1X,'The size of the array is:

',7I6)
',I6)

WRITE (*,120) LBOUND(a)


120 FORMAT (1X,'The lower bounds of the array are: ',7I6)
WRITE (*,130) UBOUND(a)
130 FORMAT (1X,'The upper bounds of the array are: ',7I6)
END PROGRAM
REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Ciclos DO implcitos
Secciones
de arreglos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Ciclos DO implcitos
Secciones
de arreglos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Ciclos DO implcitos
Secciones
de arreglos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Procedimientos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO

PROCEDIMIENTOS EXTERNOS

LECTURA / ESCRITURA
DE UN ARCHIVO

PROCEDIMIENTOS INTERNOS

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

MDULOS

COMPILACIN

INTERFACES

PROCEDIMIENTOS RECURSIVOS

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Procedimiento interno y externo


INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO

SUBRUTINAS

LECTURA / ESCRITURA
DE UN ARCHIVO

FUNCIONES

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

ATRIBUTO INTENT

COMPILACIN

SAVE

Una subrutina es un programa FORTRAN que es


instruccinFORTRAN
CALL y queque
recibe
valores
de
Lassolicitado
funcionescon
sonlaprogramas
toman
un conjunto
entrada
y
regresa
resultados
mediante
el
argumento.
La
de variables de entradas y regresan un solo valor de algn tipo
generaldel
demismo
una subrutina
en forma
una variable
nombre es:
de la funcin. El tipo de la
funcin debe ser igual al tipo de dato de salida de la funcin:
SUBROUTINEsubroutine_name(argument_list)
Seccin de declaracin
La forma general de una funcin definida por el usuario es:
Seccin de ejecucin
RETURN
tipo FUNCTION
function_name(argument_list)
Seccin
de declaracin
END
SUBROUTINE
Seccin
Para llamarde
a ejecucin
una subrutina se utiliza la
RETURN
instruccin CALL:
END FUNCTION
CALL subroutine_name(argument_list)

ARREGLOS EN FUNCIONES
Y SUBRUTINAS

REGRESAR

EJEMPLO FUNCIN

REFERENCIA

CONTENIDO

EJEMPLO SUBRUTINA

Programacin en Fortran 90

Intent
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO

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

LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Subrutinas
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS

PROGRAMACIN
ESTRUCTURADA

PROGRAM test_hypotenuse
IMPLICIT NONE
! Declare variables:
REAL :: s1
! Length of side 1
REAL :: s2
! Length of side 2
REAL :: hypot
! Hypotenuse
.
WRITE (*,*) 'Program to test subroutine
WRITE (*,*) 'Enter the length of side 1: '
READ (*,*) s1
WRITE (*,*) 'Enter the length of side 2: '
READ (*,*) s2

COMPILACIN

CALL calc_hypotenuse ( s1, s2, hypot )

ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS

WRITE (*,1000) hypot


1000 FORMAT (1X,'The length of the hypotenuse
is: ', F10.4 )

REGRESAR

CONTENIDO

IMPLICIT NONE
! Declare calling parameters:
REAL, INTENT(IN) :: side_1
! Length of side 1.
REAL, INTENT(IN) :: side_2
! Length of side 2.
REAL, INTENT(OUT) :: hypotenuse ! Length of
hypotenuse
! Declare local variables:
REAL :: temp

! Temporary variable

! Calculate hypotenuse
temp = side_1**2 + side_2**2
hypotenuse = SQRT ( temp )
END SUBROUTINE

END PROGRAM

REFERENCIA

SUBROUTINE calc_hypotenuse ( side_1, side_2,


hypotenuse )

Programacin en Fortran 90

Pasando arreglos a subrutinas


INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO

Pasa la extensin de los arreglos como argumento a la


subrutina

LECTURA / ESCRITURA
DE UN ARCHIVO

ARREGLOS AUTOMTICOS

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

ARREGLOS ALLOCATABLE
COMPILACIN

Subroutine proceso(x,y,n,m)
Subroutine
proceso(x,y)
Integer, intent
(in)::x,y
Real, intent (in), dimension(n,m)::d1
Real,dimension(:,:),allocatable::temp
Real, intent (out), dimension(n,m)::d2
Allocate
(temp(1000,1000))
Real, dimension(n,m)::temp
Temp=0.
End subroutine

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

SAVE
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO

Los valores de las variables locales son


indefinidos al salir de una subrutina o funcin.

LECTURA / ESCRITURA
DE UN ARCHIVO

ATRIBUTO SAVE

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

INSTRUCCIN SAVE
COMPILACIN

La Instruccin
ejecutable
SAVE
todos
El atributo no
SAVE
garantiza
que conserva
las variables
y los
valores
de laslocales
variables
locales, su valor.
formato
es:
arreglos
conserven
Este
atributo aparece en la declaracin del tipo de
SAVE::var1,
var2
dato.
o

REAL, SAVE:: suma

SAVE
No debe usarse el atributo SAVE en arreglos automticos, ni en datos declarados
con el atributo PARAMETER

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Funciones
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

PROGRAM test_quadf
IMPLICIT NONE
REAL :: quadf
REAL :: a, b, c, x

REAL FUNCTION quadf ( x, a, b, c )


! Declare function
! Declare local variables

! Get input data.


WRITE (*,*) 'Enter quadratic coefficients a, b, and c: '
READ (*,*) a, b, c
WRITE (*,*) 'Enter location at which to evaluate equation: '
READ (*,*) x
! Write out result.
WRITE (*,100) ' quadf(', x, ') = ', quadf(x,a,b,c)
100 FORMAT (A,F10.4,A,F12.4)
END PROGRAM

REGRESAR

REFERENCIA

CONTENIDO

IMPLICIT NONE
! Declare calling arguments.
REAL, INTENT(IN) :: x
REAL, INTENT(IN) :: a
REAL, INTENT(IN) :: b
REAL, INTENT(IN) :: c
! Evaluate expression.
quadf = a * x**2 + b * x + c
END FUNCTION

Programacin en Fortran 90

Procedimientos internos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA

Los procedimientos internos van dentro de una unidad de programa

Los procedimientos internos van dentro y al final de una unidad de programa


precedidos por la instruccin CONTAINS

Tienen la misma forma que los procedimientos externos, excepto que la palabra
SUBROUTINE/FUNCTION debe estar presente en la instruccin END

COMPILACIN

EJEMPLO

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Procedimiento interno y externo


INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

program prueba
INTEGER:: i=3,j=25
write (*,*) 'La divisison es', ratio(i,j)

LECTURA / ESCRITURA
CON FORMATO

end program

LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS

program prueba
INTEGER:: i=3,j=25
write (*,*) 'La divisison es', ratio(i,j)
contains
REAL function ratio (x,y)
REAl,intent (IN)::x,y
ratio=x/y
end function

REAL function ratio (x,y)


REAl,intent (IN)::x,y
ratio=x/y
end function

end program

PROGRAMACIN
ESTRUCTURADA
COMPILACIN

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Mdulos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS

Los mdulos nos permiten:

ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

MDULOS
PARA DECLARACIN
DE DATOS

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

MDULOS
CON
PROCEDIMIENTOS

REGRESAR

REFERENCIA

CONTENIDO

Inicializar datos
Compartir datos en ejecucin (Instruccin USE
name_modulo ) en otras unidades de programas
Incluir subrutinas y funciones

Para usar los valores de los mdulos , en el programa


principal se debe de declarar el nombre del mdulo
con la instruccin USE, la forma de la instruccin
USE es:
USE module_name
Esta instruccin debe aparecer antes de cualquier otra
instruccin excepto PROGRAM o SUBROUTINE

Programacin en Fortran 90

Mdulos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

La forma general de un mdulo para intercambiar datos es:


MODULE prueba
IMPLICIT NONE
SAVE
INTEGER, Parameter::num_vals=5
REAL, DIMENSION(num_vals)::valores
END MODULE
La instruccin SAVE garantiza que se mantendrn los valores de los datos
declarados en el mdulo.

EJEMPLO

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Mdulos
INTRODUCCIN
ELEMENTOS BSICOS

PROGRAM test_module
!
! Purpose:
! To illustrate sharing data via a module.
!
USE test
! Make data in module "test" visible
IMPLICIT NONE

DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL

REAL, PARAMETER :: pi = 3.141592 ! Pi

LECTURA / ESCRITURA
CON FORMATO

values = pi * (/ 1., 2., 3., 4., 5. /)


CALL sub1

LECTURA / ESCRITURA
DE UN ARCHIVO

! Call subroutine

END PROGRAM
SUBROUTINE sub1
!
! Purpose:
! To illustrate sharing data via a module.
!
USE test
! Make data in module "test" visible
IMPLICIT NONE

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

WRITE (*,*) values


END SUBROUTINE sub1

MODULE test

! Purpose:

! To declare data to share between two routines.

COMPILACIN

IMPLICIT NONE
SAVE

INTEGER, PARAMETER :: num_vals = 5


REAL, DIMENSION(num_vals) :: values

! Max number of values in array


! Data values

END MODULE test

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Mdulos
INTRODUCCIN
ELEMENTOS BSICOS

Son mdulos que contienen subrutinas y funciones, los procedimientos que sean incluidos
dentro de un modulo debe ser precedidos por la instruccin CONTAINS

DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

La forma general de un mdulo para intercambiar datos es:


MODULE prueba
IMPLICIT NONE
CONTAINS
SUBROUTINE sub1
.
.
.
END SUBROUTINE sub_1

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

END MODULE

COMPILACIN

El nombre de la subrutina o funcin siempre debe de especificarse en el END SUBROUTINE o END


FUNCTION

EJEMPLO

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Mdulos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

Ejemplo:
MODULE my_subs
CONTAINS
SUBROUTINE bad_argument ( i )
IMPLICIT NONE
INTEGER, INTENT(IN) :: i
! Declare argument as integer.
WRITE (*,*) ' I = ', i
! Write out i.
END SUBROUTINE
END MODULE
PROGRAM bad_call
!
! Purpose:
! To illustrate misinterpreted calling arguments.
!
USE my_subs
IMPLICIT NONE
REAL :: x = 1.
! Declare real variable x.
CALL bad_argument ( x )
! Call subroutine.
END PROGRAM

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Interfases
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
Una referencia a un procedimiento externo se realiza usualmente por una interface implcita, el compilador asume los detalles.
Se
puede suministrar una interface explcita mediante un bloque de interface.
MODULE name_module
La forma general de una interface es:

ESTRUCTURAS DE
CONTROL

INTERFACE
subroutine1 .
INTERFACE

Interface_body_1
end subroutine1
Interface_body_2
subroutineN .
.
subroutine n
ENDend
INTERFACE

LECTURA / ESCRITURA
CON FORMATO

END INTERFACE
END MODULE

LECTURA / ESCRITURA
DE UN ARCHIVO

EXPLCITAS

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

Una referencia a un mdulo o subprograma


interno se considera una interfase explcita, el
compilador puede ver todos los detalles.

IMPLCITAS

COMPILACIN

INTERFACES EN MDULOS

EJEMPLO

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Interfaces
INTRODUCCIN
ELEMENTOS BSICOS

SUBROUTINE sort (arr, n)


IMPLICIT NONE
REAL, DIMENSION(*), INTENT(INOUT) :: arr ! Array to be sorted
INTEGER, INTENT(IN) :: n
! Number of values

DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

PROGRAM interface_example
IMPLICIT NONE

INTEGER :: i
INTEGER :: iptr
INTEGER :: j
REAL :: temp

! Declare interface to subroutine "sort"


INTERFACE
SUBROUTINE sort(a,n)
IMPLICIT NONE
REAL, DIMENSION(:), INTENT(INOUT) :: a
INTEGER, INTENT(IN) :: n
END SUBROUTINE sort
END INTERFACE

! Sort the array


outer: DO i = 1, n-1

! Declare local variables


REAL, DIMENSION(6) :: array = (/ 1., 5., 3., 2., 6., 4. /)
INTEGER :: nvals = 6
! Call "sort" to sort data into ascending order.
CALL sort ( N=nvals, A=array)
! Write out sorted array.
WRITE (*,*) array
END PROGRAM

! Loop index
! Pointer to smallest value
! Loop index
! Temp variable for swaps

! Find the minimum value in arr(I) through arr(N)


iptr = i
inner: DO j = i+1, n
minval: IF ( arr(j) < arr(iptr) ) THEN
iptr = j
END IF minval
END DO inner
swap: IF ( i /= iptr ) THEN
temp
= arr(i)
arr(i) = arr(iptr)
arr(iptr) = temp
END IF swap
END DO outer
END SUBROUTINE sort

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Procedimientos Recursivos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

Una procedimiento recursivo es aquel que se llama a si mismo directa o


indirectamente, debe de declararse RECURSIVE. Una funcin recursiva
requiere usar una variable de nombre RESULT

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

RESULT permite que una funcin devuelva el valor de una variable cuyo
nombre es distinto de la funcin.

COMPILACIN

EJEMPLO

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Procedimientos Recursivos
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS

program rec
IMPLICIT NONE
INTEGER ::i=5,res
write (*,*)'El factorial de ', i,'es', fact(i)
pause
contains

ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO

RECURSIVE FUNCTION fact(n) RESULT(res)


IMPLICIT NONE
INTEGER, INTENT(IN) :: n
INTEGER :: res
IF (n == 1) THEN
res = 1
ELSE
res = n * fact(n - 1)
END IF
END FUNCTION fact

ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

end program

REGRESAR

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Compilacin
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS
ESTRUCTURAS DE
CONTROL
LECTURA / ESCRITURA
CON FORMATO
LECTURA / ESCRITURA
DE UN ARCHIVO
ARREGLOS
PROGRAMACIN
ESTRUCTURADA
COMPILACIN

Los archivos creados al compilar


un archivo de FORTRAN 90 son
cinco -.map,.f90, .obj,.exe,.bak
Al guardar un programa se debe de
Indicar el nombre del archivo y su
Extensin (f90 o f95).
La compilacin puede realizarse desde
MS-DOS desde el directorio donde se
Encuentre el programa por medio del
Comando LF95:
C:/>LF95 nombre de archivo.ext
Despus de la compilacin se crea
Un archivo ejecutable con el mismo
Nombre que puede ser ejecutado con:
C:/> nombre de archivo

REFERENCIA

CONTENIDO

Programacin en Fortran 90

Referencias
INTRODUCCIN
ELEMENTOS BSICOS
DISEO DE PROGRAMAS

Curso de FORTRAN Politcnico

ESTRUCTURAS DE
CONTROL

Apuntes de FORTRAN FI

LECTURA / ESCRITURA
CON FORMATO

Apuntes de fortran OSC

LECTURA / ESCRITURA
DE UN ARCHIVO

Apuntes de FORTRAN UCM

ARREGLOS
PROGRAMACIN
ESTRUCTURADA

Fortran_web1

COMPILACIN

Fortran _web2

Fortran _web3

Fortran _web4

Fortran _web5

Fortran 90/95 for Scientists and Engineers, Chapman, McGraw-Hill

REFERENCIA

CONTENIDO

You might also like