You are on page 1of 20

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

Presentacin.................................................................................................................. 5 1.0 Programacin bsica con FORTRAN ...................................................................... 6 1.1 Etapas para la preparacin de un programa .......................................................... 6 1.2 Programa fuente .................................................................................................. 6 1.2.1 Formatos para cdigo fuente y lmites del programa ..................................... 6 1.2.2 Esquema bsico de un programa tpico en Fortran ........................................ 7 1.2.3 Caracteres indicadores .................................................................................. 7 1.2.4 Variables y expresiones matemticas ............................................................ 8 1.2.5 Formatos numricos y alfanumricos ............................................................ 9 1.3 Declaraciones bsicas .......................................................................................... 9 1.3.1 OPEN ........................................................................................................... 9 1.3.2 CLOSE ....................................................................................................... 10 1.3.3 READ - WRITE ......................................................................................... 11 1.3.4 IF................................................................................................................ 11 1.3.5 DO ............................................................................................................. 12 1.3.6 DO WHILE ................................................................................................ 12 1.3.7 SELECT CASE .......................................................................................... 12 1.3.8 WHERE ..................................................................................................... 13 1.4 Funciones implcitas .......................................................................................... 13 2.0 Vectores y Matrices............................................................................................... 13 2.1 Declaracin y disposiciones de memoria ........................................................... 14 2.1.1 Vectores ..................................................................................................... 14 2.1.2 Matrices...................................................................................................... 16 2.2 Dimensionamiento dinmico ............................................................................. 20 2.2.1 Punteros...................................................................................................... 20 2.2.2 Alojamiento de memoria............................................................................. 22 2.2.3 Arreglos Automticos ................................................................................. 23 2.2.4 Ejercicios de aplicacin .............................................................................. 23 2.3 Almacenamiento por defecto en FORTRAN...................................................... 24 3.0 Tipos derivados de datos ....................................................................................... 25 3.1 Generalidades.................................................................................................... 25 3.2 Ejemplos ........................................................................................................... 26 4.0 El ambiente de trabajo Developer Studio ........................................................... 28 4.1 Iniciando un proyecto ........................................................................................ 29 4.2 Ejemplos ........................................................................................................... 31 5.0 Subprogramas, creacin y usos.............................................................................. 34

-1 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

5.1 Subrutinas ......................................................................................................... 34 5.1.1 Definicin................................................................................................... 34 5.1.2 Ejemplo ...................................................................................................... 34 5.2 Mdulos ............................................................................................................ 35 5.2.1 Definicin................................................................................................... 35 5.2.2 Ejemplo ...................................................................................................... 36 5.3 Funciones .......................................................................................................... 38 5.3.1 Definicin................................................................................................... 38 5.3.2 Ejemplo ...................................................................................................... 38 5.4 Interfaces........................................................................................................... 39 5.4.1 Definicin................................................................................................... 39 6.0 Libreras, creacin y usos ...................................................................................... 40 6.1 Libreras Estticas (Static Libraries) .................................................................. 40 6.1.1 Definiciones ............................................................................................... 40 6.1.2 Forma de usar ............................................................................................. 40 6.2 Libreras dinmicas (Dynamic Link Libraries)................................................... 41 6.2.1 Definiciones ............................................................................................... 41 6.2.2 Forma de usar ............................................................................................. 41 6.2.3 Ejemplo ...................................................................................................... 42 7.0 Personalizacin de programas ............................................................................... 44 7.1 Generalidades.................................................................................................... 44 7.2 Propiedades de la ventana.................................................................................. 44 7.3 Creacin de mltiples ventanas.......................................................................... 44 7.4 Graficacin y escritura en la pantalla ................................................................. 45 7.5 Insertando imgenes .......................................................................................... 47 7.6 Mensajes de aviso ............................................................................................. 47 7.7 Personalizar el men de opciones ...................................................................... 48 7.8 Iconos de programas .......................................................................................... 50 7.9 Eventos del ratn............................................................................................... 51 7.9.1 Funciones basadas en eventos ..................................................................... 51 7.9.2 Ejemplo ...................................................................................................... 52 7.9.3 Funciones de bloqueo de ejecucin ............................................................. 53 7.9.4 Ejemplo ...................................................................................................... 53 7.10 Cuadros de dilogo personalizados .................................................................. 54 7.10.1 Agregar controles al cuadro de dilogo: .................................................... 55 8.0 Grficos en Visual Fortran .................................................................................... 62 8.1 Array Visualizer ................................................................................................ 62

-2 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

8.1.1 Generalidades ............................................................................................. 62 8.1.2 Descripcin ................................................................................................ 62 8.1.3 Sintaxis....................................................................................................... 63 8.1.4 Ejemplo ...................................................................................................... 64 8.2 Librera Plot88 .................................................................................................. 65 8.2.1 Generalidades ............................................................................................. 65 8.2.2 Etapas del proceso de graficacin ............................................................... 66 8.2.3 Sintaxis de cada subrutina ........................................................................... 66 8.2.4 Ejemplo ...................................................................................................... 68 8.3 CVFGraf ........................................................................................................... 70 8.3.1 Generalidades ............................................................................................. 70 8.3.2 Codificacin y subrutinas ........................................................................... 71 8.3.3 Ejemplo ...................................................................................................... 72 8.4 DXFortran ......................................................................................................... 73 8.4.1 Generalidades ............................................................................................. 73 8.4.2 Forma de uso .............................................................................................. 74 8.4.3 Descripcin de subrutinas ........................................................................... 74 8.4.4 Ejemplo ...................................................................................................... 76 9.0 Libreras IMSL en Fortran..................................................................................... 78 9.1 Generalidades.................................................................................................... 78 9.2 Uso de la Librera desde Visual Fortran ............................................................. 78 9.3 Ejemplo ............................................................................................................. 78 10.0 Aplicaciones Utiles ............................................................................................. 80 10.1 Creacin de archivos de ayuda......................................................................... 80 10.2 Abrir y guardar un archivo desde el men ........................................................ 81 10.3 Presentacin de una tabla................................................................................. 83 10.3 Rutina de intercambio CVFDif ........................................................................ 86 10.5 Ventanas virtuales amplias .............................................................................. 91 10.6 Resolucin de sistemas de ecuaciones lineales ................................................. 92 10.6.1 Resolucin Numrica................................................................................ 92 10.6.2 Mtodos de resolucin .............................................................................. 93 10.6.3 Ejercicio de aplicacin .............................................................................. 98 11.0 Normas Europeas para escribir y documentar cdigos fuente en Fortran 90 ....... 100 11.1 Documentacin ............................................................................................. 100 11.1.1 Documentacin Externa .......................................................................... 100 11.1.2 Documentacin Interna ........................................................................... 100 11.2 Obsolescencias de otras versiones.................................................................. 101

-3 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

11.3 Reglas bsicas de codificacin....................................................................... 101 11.4 Encabezados para programas y subprogramas................................................ 102 11.4.1 Programas principales ............................................................................. 102 11.4.2 Subrutinas............................................................................................... 103 11.4.3 Funciones ............................................................................................... 104 11.4.4 Mdulos ................................................................................................. 105 12.0 Ejercicios Propuestos ........................................................................................ 107 Referencias ............................................................................................................... 117

-4 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

Presentacin
El presente texto gua, resume algunos aspectos fundamentales de la programacin con Fortran 90, de manera que el estudiante estar en capacidad de implementar herramientas numricas eficientes para resolver problemas de ingeniera. La organizacin del texto es la misma estructura del programa de la materia aprobado por el consejo de facultad para el ao 2005, y abarca desde nociones generales hasta la creacin de programas usando herramientas de Visual y libreras estadsticas y matemticas (IMSL). El compilador Visual Fortran, se encuentra disponible en la facultad, en su versin 6.0, actualmente se encuentra en el mercado la versin 9.1; la actualizacin de la versin disponible a 6.5A puede ser obtenida de internet, en el sitio web de Compaq Co. http://www.compaq.com/fortran. La versin disponible es del antiguo propietario de los derechos del compilador, Digital Co., http://www.digital.com/fortran que los vendi a Compaq Co., se hace esta aclaracin porque seguramente encontrar dentro de las opciones de instalacin las siglas DVF (Digital Visual Fortran), y si obtiene informacin de internet o baja alguna librera o actualizacin, encontrar las siglas CVF (Compaq Visual Fortran), desde el ao 1999. Desde la versin 8.0 a partir del ao 2004, los derechos del compilador fueron comprados por el fabricante de microprocesadores Intel, por lo que se encontraran referencias con las sig las IVF (Intel Visual Fortran), http://www.intel.com Es necesario mencionar que las versiones ms avanzadas de un compilador no son ms que optimizadores respecto la anterior. Lo que quiere decir que su trabajo ser ms eficiente y talvez ms amigable en el entorno de programacin. FORTRAN tiene una ventaja realmente importante sobre otros lenguajes y es que se pueden generar algoritmos matemticos altamente eficientes con l, es un lenguaje para desarrolladores y no para usuarios comerciales, el compilador genera programas tiles para cualquier plataforma. Lo que lo ubica entre los programas compilados y no evaluados (Visual Basic de aplicaciones, MatLab, etc.) La desventaja son los sistemas de graficacin, sin embargo, existen interfaces amigables que hacen ms fcil el manejo de grficos y su exportacin a formatos ms conocidos, como BMP, JPG y DXF. Espero que disfruten aprendiendo de estas notas, como yo lo hice escribindolas.

Juan Fernando Moreno Garca Ingeniero Naval Mayo-Julio de 2006

-5 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

1.0 Programacin bsica con FORTRAN


1.1 Etapas para la preparacin de un programa
Fortran es un lenguaje compilado, es decir, se obtiene un archivo ejecutable, extensin .EXE, que puede trabajar en cualquier plataforma o sistema operativo. Existen lenguajes de programacin que son evaluados como Turbo Pascal, Visual Basic para aplicaciones, Basic y otros, estos programas necesitan tener instalado en la mquina el compilador, para poder ejecutarse ya que van ejecutando lnea por lnea, si existe un error detienen la ejecucin en esa lnea. Los programas compilados no tienen esta opcin, es decir, trabajan o no trabajan. Fortran, cumple tres etapas en la preparacin de un programa: 1. Codificacin del programa fuente.- hecho por el programador en un editor de texto. El archivo final debe tener las extensiones de FORTRAN *.for, *.f90, *.f *.fpp 2. Compilacin del programa fuente.- el producto de esta operacin genera un archivo objeto, *.obj, que es del tipo intermedio, es decir transforma el cdigo fuente en lenguaje de mquina. 3. Concatenacin o enlace.- el programa objeto se enlaza con las libreras matemticas o grficas, segn sea el caso, y generan el programa ejecutable, *.exe.

1.2 Programa fuente


Est conformado por una unidad de programa, que es una secuencia de comandos que definen el ambiente de datos y los pasos necesarios para optimizar clculos entre ellos, toda unidad de programa concluye con la declaracin END. Las unidades de programas pueden ser: un programa principal, un subprograma externo o subrutina, un mdulo (contiene definiciones de datos y tipos, definen un procedimiento o funcin, e incluye interfases), y un bloque de datos (valores para objetos de datos). Las lneas de programa son de dos clases 1. Ejecutables: definen una accin 2. No ejecutables: definen un atributo.

1.2.1 Formatos para cdigo fuente y lmites del programa


El Compilador Visual Fortran, soporta dos formatos de edicin del cdigo fuente, formato fijo y formato libre. 1. El formato fijo.- Fortran Fixed Format Source File, que es rgido y una herencia del Fortran 77, admite solo 72 columnas por lnea y tiene una columna fija, la sexta, debiendo empezar la escritura en la sptima, las cinco primeras se las usa para numerar las lneas. El Compilador DVF 6.0, disponible en la facultad admite archivos fuente codificados en F77, a pesar que para la versin F90 este tipo de formato es considerada obsoleto. El formato libre.- Fortran Free Format Source File, es ms flexible en cuanto a la ubicacin de comandos, admite 132 columnas por lnea.

2.

-6 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

Los lmites del tamao y complejidad de una unidad de programa o declaracin contenida en l se detallan en la tabla No. 1.[1] Elementos del lenguaje Lmite Nmero de llamadas a subrutina Sin lmite Argumentos para una subrutina Sin lmite Dimensiones de matrices 7 Nmero de elementos por dimensin 9*1018 Lneas de continuacin total 511 Anidar DO e IF combinadas 128 Grupos de COMMON 250 Anidar con parntesis 40 Nmero de caracteres del nombre 63 Tabla No. 1.- Lmites del programa

1.2.2 Esquema bsico de un programa tpico en Fortran


El esquema que se presenta en la figura No.1, es solo referencial y hace nfasis en los tipos de elementos de programas que se usarn en el curso, para obtener el cuadro completo, vase la referencia [2].

PROGRAM, FUNCTION, MODULE SUBROUTINE, BLOCK DATA

USE declaraciones

Declaracin de variables

Declaracin ejecutables

END

Figura No. 1.- Esquema bsico de un programa tpico

1.2.3 Caracteres indicadores


En la tabla No. 2, se describen los indicadores comnmente usados en programacin con FORTRAN, se hace una comparacin de los usados en el formato fijo y en el libre, hay que aclarar que el uso de stos de manera indistinta genera errores en la compilacin del programa fuente, por lo que debe respetarse la sintaxis en el tipo de formato que se est usando.

-7 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

Descripcin Comentario Lnea de comentario Continuacin Separador de declaraciones Nmero de lnea Separador de lnea

Smbolo

Formatos Todos Libre Fijo Libre Fijo Todos

Observaciones En cualquier parte Al inicio de la lnea Al final y al inicio mximo 39 lneas seguidas En la 6. Columna mximo 19 lneas seguidas Separa declaraciones en la misma lnea

C,c,* & Menos 0 ;

Libre Al inicio de la lnea 5 dgitos Fijo De la columna 1 a 5 / Todos Al final de la lnea Tabla No. 2.- Caracteres Indicadores

1.2.4 Variables y expresiones matemticas


Los tipos de variables admitidos en FORTRAN son los descritos en la tabla 3, el valor que se encuentra entre parntesis es el valor que asume el compilador por defecto. La tabla 4 muestra los operadores admitidos. Sintaxis Observaciones Enteros INTEGER(N) N = 1,2,4,8 (4) Real REAL(N) N = 4,8,16 (4) Complejos COMPLEX(N) N = 8,16 (8) Complejo doble precisin DOUBLE COMPLEX(N) N = 8,16 (8) Lgica LOGICAL(N) N = 1,2,4,8 (4) Alfanumricos CHARACTER Mximo 256 Matrices DIMENSION Mximo 7 dimensiones Tabla No. 3.- Tipos de Variables principales Descripcin Suma y resta Multiplicacin Divisin Potencia Menor que Mayor que Igual Mayor o igual Menor o igual Diferente Y O No equivalente Equivalente No (negacin) Smbolo Tipo +,* Aritmtico / ** .LT., < .GT., > .EQ., == Comparacin .GE.,>= .LE., <= .NE.,/= .AND. .OR. Lgicas .NEQV. .XOR. .EQV. .NOT. Tabla No. 4.- Operadores admitidos Resultado Valor numrico Variable

.TRUE. .FALSE.

-8 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

1.2.5 Formatos numricos y alfanumricos


Los descritos en la tabla No. 5 son los formatos numricos para escritura o lectura de variables admitidos por el lenguaje. Variable Enteros Lgica Binarios Hexadecimales Reales decimales Formato In Ln Bn Zn Fn.m Ejemplo I3 : 125 L1 : Y B4 : 1001 (9) Z3 : A94 F4.2 : 3.45 Observaciones n nmero de cifras n nmero de caracteres n nmero de cifras n nmero de cifras n nmero de cifras, m nmero de decimales n nmero de cifras, m nmero de decimales Cientfica de doble densidad n nmero de cifras, m nmero de decimales

Cientfica Complejos Alfanumricos

En.m E6.1 : .2E+02 Dn.m D8.2 : 0.53D+01 Fn.m,Fn.m (F5.2,F5.1) : 2Fn.m (23.56,125.7) En.m,En.m An A5 : varia n nmero de caracteres Tabla No. 5.- Formatos usados en Fortran

Los formatos por defecto en el programa, a menos que sean definidos previamente son los que se detallan en la tabla No. 6. Variable Formato Enteros I12 Lgica L2 Reales (1 a 107) F15.6 Reales (1 a -107) E15.6 Complejos F23.15,F23.15, 2F23.15 Alfanumricos A1 Tabla No. 6.- Formatos por defecto

1.3 Declaraciones bsicas


1.3.1 OPEN

Descripcin
Sirve para abrir un archivo o una variable para posteriormente leer o escribir en ella informacin producto de una ejecucin o de una asignacin directa de valores.

Sintaxis
OPEN unidad,file nombre,status estado,err nmero,iostat

-9 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

1. Unidad: es un nmero entero que se asigna al elemento con el que se realizar el trabajo. 2. File: el nombre de la variable o del archivo, si se utiliza directamente el nombre del archivo ste debe ser colocado entre comillas. 3. Status: Evala el estado del archivo al ser abierto y toma los siguientes valores: a. new: el archivo es nuevo, el programa lo crea y su estado pasa a ser old, si ya existe se produce un error y la ejecucin se detiene. b. old: es un archivo ya existente. c. scratch: se trata de un archivo nuevo que no ha sido nombrado, cuando se lo cierra o termina la ejecucin del programa, este archivo se borra. d. replace: el archivo que se crea reemplaza a uno ya existente, si lleva el mismo nombre, borra el anterior y se actualiza. e. unknown: el archivo puede o no existir, si no existe se crea uno nuevo y su estado pasa a ser old. Este estado se aplica por omisin. 4. Err: cuando se produce un error en la ejecucin del comando, el programa pasa a la lnea que se especifica, si se omite err, la ejecucin del programa se detiene. 5. Iostat: es una variable entera, que toma el valor de 1 se existe error, y 0 si no lo hay.

1.3.2 CLOSE

Descripcin
Sirve para cerrar un archivo o una variable que ha sido previamente abierta usando la declaracin OPEN.

Sintaxis
CLOSE unidad,STATUS " estad " o ,ERR nmero,IOSTAT

Unidad: es el nmero asignado en la apertura del documento, tiene que ser un entero. 2. Status: Evala el estado del archivo al ser cerrado y toma los siguientes valores: a. Keep o Save: guarda el archivo despus de cerrarlo. b. Delete: borra el archivo despus de cerrarlo c. Submit: separa un proceso para ejecutar el archivo. d. Submit/delete: separa un proceso para ejecutar el archivo, entonces borra el archivo una vez concluda la ejecucin. 3. Err: cuando se produce un error en la ejecucin del comando, el programa pasa a la lnea que se especifica, si se omite err, la ejecucin del programa se detiene. 4. Iostat: es una variable entera, que toma el valor de 1 se existe error, y 0 si no lo hay.

1.

- 10 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

1.3.3 READ - WRITE

Descripcin
Sirve para leer/escribir desde/en un archivo o una variable valores numricos o alfanumricos.

Sintaxis
READ unidad, format var WRITE unidad, format var

1.

Unidad: es el nmero asignado en la apertura del documento, tiene que ser un entero. 2. Format: formato de lectura, este formato se asigna a la variable que va a ser asignada para los datos ledos. Si no existe un formato especificado se coloca *, para escribir en pantalla la unidad es *. 3. var: nombre de la variable donde se ejecuta la accin.

1.3.4 IF

Descripcin
Existen de tres tipos: 1. El IF aritmtico: este comando ejecuta tres acciones definidas por la lnea que se designe de acuerdo al valor que toma la variable: negativa, cero o positiva. 2. El IF lgico: este comando ejecuta una declaracin si el valor de la variable es verdadero, caso contrario la ignora 3. El IF condicional: esta declaracin condiciona la ejecucin de un conjunto de acciones a una pregunta lgica: si la respuesta es verdadera entonces ejecuta la accin despus del comando THEN, caso contrario ejecuta la accin colocada despus del comando ELSE. Siempre se cierra con la declaracin ENDIF. Puede obviarse la declaracin ELSE, pero no el ENDIF.

Sintaxis
IF (aritmtico) IF(expr)label1,label2,label3 1. expr: es una expresin numrica del tipo entero o real, encerrado en parntesis. 2. Label1: es una lnea del programa, la ejecucin pasa a esta lnea si la expresin es menor que cero. 3. Label2: es una lnea del programa, la ejecucin pasa a esta lnea si la expresin es igual a cero. 4. Label3: es una lnea de programa, la ejecucin pasa a esta lnea si la expresin es mayor que cero. IF (lgico) IF (expr)stmt 1. Expr: es una expresin lgica, entre parntesis.

- 11 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

2. Stmt: es una declaracin ejecutable, cuando IF es ejecutado, la expresin lgica es evaluada primero, si su resultado es verdadero, se ejecuta, caso contrario no. IF (condicional) IF (expr) THEN Bloque de ejecucin ELSE Bloque de ejecucin ENDIF

1.3.5 DO

Descripcin
Ejecuta una accin definida controlando el nmero de veces que se ejecuta un bloque.

Sintaxis
DO [Variable = (valor entero)] Bloque de ejecucin ENDDO

1.3.6 DO WHILE

Descripcin
Ejecuta una accin definida si la declaracin entre el parntesis es verdadera, caso contrario la ignora

Sintaxis
DO [WHILE] (expr) Bloque de ejecucin ENDDO

1.3.7 SELECT CASE

Descripcin
Selecciona dentro de varias opciones las acciones a seguir de acuerdo al valor que toma una variable entera, lgica o alfanumrica. Esta declaracin reemplaza al GOTO de Fortran 77.

Sintxis
[nombre] SELECT CASE (variable) CASE (valor) Bloque de ejecucin CASE (valor) Bloque de ejecucin.. CASE DEFAULT Bloque de ejecucin END SELECT [nombre]

- 12 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

1.3.8 WHERE

Descripcin
Realiza una prueba lgica a los elementos de un arreglo o matriz, o a una matriz completa, ocasionalmente se le asigna un nombre, que debe ser conservado. Lo que se encuentra entre los signos de agrupacin [] es opcional en la construccin del bloque.

Sintaxis
[nombre] WHERE (expr 1) Bloque de ejecucin [ELSEWHERE (expr2) [nombre] [Bloque de ejecucin] ...] [ELSEWHERE [nombre] [Bloque de ejecucin] ...] END WHERE [nombre]

1.4 Funciones implcitas


Fortran tiene incluidas funciones matemticas que pueden ser usadas en cualquier lugar del bloque de ejecucin, siempre tienen la siguiente sintaxis general. Var = FUNCION(argumento) En la tabla No. 7 se citan algunas funciones ntese el tipo de argumento que tiene cada funcin y el tipo de variable que resulta de su ejecucin. Nombre ABS ACOS LOG LOG10 CHAR CMPLX EXP FLOAT LEN SQRT Definicin Tipo de Argumento Tipo de Funcin Valor absoluto Entero, real, complejo Entero, real, complejo Arco Coseno Real Real Logaritmo natural Real Real Logaritmo base 10 Real Real Convierte a caracter Entero Alfanumrico Convierte a complejo Entero, real, complejo Complejo Exponencial Real Real Convierte en real Entero Real Longitud de cadenas Alfanumrico Entero Raz cuadrada Real o complejo Real o complejo Tabla No. 7.- Ejemplo de funciones matemticas

2.0 Vectores y Matrices


En FORTRAN existen dos tipos de datos no escalares conocidos como arreglos (ARRAYS), de los cuales existen dos tipos los vectores y las matrices, siendo el vector una matriz de dimensin uno. En general los arreglos estn formados por conjuntos de valores que son los elementos del conjunto, por ejemplo cuando nos referimos al elemento A5, nos referimos al quinto elemento contenido en el vector A, de igual manera cuando operamos matrices el elemento A2,5, se refiere al elemento de la fila 2,

- 13 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

columna 5 de la matriz A. En FORTRAN la nomenclatura es A(5) y A(2,5) respectivamente. Todo elemento de un arreglo, es decir, una variable con sus subndices en FORTRAN recibe el nombre de variable subindicada. La estructura de un arreglo en FORTRAN, queda definida con los siguientes parmetros: 1. Rango: total de dimensiones del arreglo, el mximo 7. 2. Extensin: Componentes que posee un arreglo en cada una de sus dimensiones, mximo 9*1018. 3. Tamao: total de elementos de un arreglo 4. Perfil: vector cuyos elementos son las respectivas extensiones de cada dimensin. 5. Conformidad: igualdad de perfil, entre dos o ms arreglos. 6. SubArreglo: arreglo formado por slo algunos elementos de un arreglo dado.

2.1 Declaracin y disposiciones de memoria


2.1.1 Vectores
Son arreglos de una sola dimensin, que permiten almacenar informacin del tipo real, entera, compleja y alfanumrica.

Forma de declarar vectores


Se los puede definir de las siguientes maneras:
Tipo, DIMENSION (n) :: lista de vectores

Donde tipo puede ser REAL, INTEGER, COMPLEX, CHARACTER, n corresponde al nmero de elementos que contiene el arreglo, y la lista de vectores son las variables que se han asignado a cada vector.
Tipo :: variable(i:s), variable2(i:s), Tipo :: variable(i:s:p), variable2(i:s:p)

Donde el tipo es el mismo del anterior esquema y la lista de arreglos se la hace menor del arreglo y s la posicin mayor del arreglo. Si la posicin menor es 1, se la puede omitir. determinando su tamao entre parntesis. El primer nmero entero i indica la posicin

Cuando se hacen declaraciones con triple especificacin, el ltimo elemento indica las posiciones: inferior, inferior + paso, inferior + 2*paso, etc. Sin sobrepasar el lmite superior si el paso es mayor que cero y si el paso es menor que cero sin llegar a valores bajo el lmite superior. Si i es omitido se toma el valor de 1, s no puede ser omitido y si el paso es omitido se asume el valor de 1.
Tipo, DIMENSION (:), ALLOCATABLE :: lista de arreglos

- 14 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

En esta forma se ha usado la declaracin ALLOCATABLE, que nos permite determinar el tamao del arreglo durante la ejecucin, una forma alterna de este mtodo es el siguiente:
Tipo, DIMENSION (:) :: lista de arreglos ALLOCATABLE :: lista de arreglos

Luego cuando se conoce el tamao del arreglo se hace la siguiente declaracin:


ALLOCATE(lista de arreglos, STAT = variable entera) ALLOCATE(lista de arreglos)

Donde la lista de arreglos se definen como VAR(N) y la funcin STAT indica si la asignacin ha sido realizada con xito. Por lo que se debe colocar a continuacin, un IF para verificar el paso y evitar errores de ejecucin.
IF (Variable entera /= 0) STOP No hay memoria suficiente

Para liberar la memoria se usa la sentencia DEALLOCATE ( lista). Otra forma de asignar valores al vector de manera constante y desde el programa fuente es escribiendo los valores directamente en el vector previamente definido y declarado como tal.
A = (/valor 1, valor 2, valor 3, .. , valor n/) A = (/(declaracin, i=1,n)/) A = (/valor 1, valor 2, (i, i=3,n,m), valor n+1/)

Usando la funcin WHERE tambin se puede asignar valores a los vectores, conocido los elementos de otro.

Ejemplos
Declaraciones de vectores
COMPLEX, DIMENSION (10) :: A,B,C COMPLEX :: A(10), B(10), C(10) COMPLEX, DIMENSION (0:9) :: A,B,C COMPLEX, DIMENSION (0:18:2) :: A,B,C COMPLEX A(0:9), B(2:18:2), C(::), D(:20:)

Declaraciones de vectores con tamao desconocido


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

Otra forma:
REAL, DIMENSION (:) :: A,B,C ALLOCATABLE :: A,B,C Luego de un bloque de ejecucin se obtiene n ALLOCATE(A(n),B(n),C(n), STAT = StatusValor) IF (statusValor /= 0) STOP No hay memoria suficiente

Asignacin de valores a un vector mediante elementos conocidos.


A = (/-2.2, 5.14, 4.0, 2.58/) A = (/(1.25*I,i=1,10)/) A = (/7, 1, (i, i=3,18,3), 4/)

- 15 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

Funciones para operar vectores


ALLOCATED (A) DOT_PRODUCT (A,B) MAXVAL(A) MAXLOC(A) MINVAL(A) MINLOC(A) PRODUCT(A) SIZE(A) SUM(A)

Devuelve verdadero si se ha dimensionado el vector Producto punto entre A y B Mximo valor en el arreglo Posicin del primer mximo valor Mnimo valor del arreglo Posicin del primer mnimo valor Producto de los elementos del arreglo Nmero de elementos del arreglo Suma de los elementos del arreglo

Ejercicios de aplicacin
1. Declarar un vector de cantidades enteras con las siguientes caractersticas: a. La sucesin de ndices comienza en el -1 y finaliza en el 9, con un escaln, entre subndices de 2 unidades 2. Se desea asignar al vector Z de nmeros enteros los valores pares comprendidos entre 2 y 12. Usando una funcin para definir los elementos. 3. Haciendo uso de un lazo DO implcito asignar al vector compuesto por 100 nmeros enteros, los siguientes valores: -4 y 8 para el primero y el ltimo elemento y 0 para los 98 restantes. 4. Escribir un programa que tome una lista de nmeros y los ordene. El usuario deber introducir primero cuantos nmeros quiere ordenar y a continuacin la lista de nmeros. El programa devolver por pantalla la lista ordenada. 5. Realizar un programa usando FORALL, que convierta todos los caracteres de una frase introducida por teclado en maysculas.

2.1.2 Matrices
Son arreglos de datos con ms de una dimensin, Fortran soporta hasta 7 dimensiones. Igual que los vectores son del tipo ENTERO, REAL, COMPLEJO o ALFANUMERICO.

Forma de declarar matrices


Se los puede definir de las siguientes maneras:
Tipo, DIMENSION (n,n2,n3, ., nn) :: lista de matrices

Donde tipo puede ser REAL, INTEGER, COMPLEX, CHARACTER, n corresponde al nmero de elementos que contiene el arreglo, y la lista de matrices son las variables que se han asignado a cada una.
Tipo :: var1(i:s,i:s,i:s,), var2(i:s,i:s,i:s,), Tipo :: var1(i:s:p,i:s:p,), var2(i:s:p,i:s:p,)

Donde el tipo es el mismo del anterior esquema y la lista de arreglos se la hace determinando su tamao entre parntesis. El primer nmero entero i indica la posicin menor del arreglo y s la posicin mayor del arreglo. Si la posicin menor es 1, se la puede omitir.

- 16 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

Cuando se hacen declaraciones con triple especificacin, el ltimo elemento indica las posiciones: inferior, inferior + paso, inferior + 2*paso, etc. Sin sobrepasar el lmite superior si el paso es mayor que cero, si el paso es menor que cero sin llegar a valores bajo el lmite superior. Si i es omitido se toma el lmite inferior del arreglo, si s es omitido se toma el lmite superior del arreglo, y, si el paso es omitido se asume el valor de 1.
Tipo, DIMENSION (:,:,:,), ALLOCATABLE :: lista de arreglos

La declaracin ALLOCATABLE, nos permite determinar el tamao del arreglo durante la ejecucin, una forma alterna de este mtodo es el siguiente:
Tipo, DIMENSION (:,:,:,) :: lista de arreglos ALLOCATABLE :: lista de arreglos

Luego cuando se conoce el tamao del arreglo se hace la siguiente declaracin:


ALLOCATE(lista de arreglos, STAT = variable entera) ALLOCATE(lista de arreglos)

Donde la lista de arreglos se definen como VAR(n1,n2,) y la funcin STAT indica si la asignacin ha sido realizada con xito, por lo que se debe colocar a continuacin, un IF para verificar el paso y evitar errores de ejecucin.
IF (Variable entera /= 0) STOP No hay memoria suficiente

Para liberar la memoria se usa la sentencia DEALLOCATE ( lista).

Asignacin de valores
1. Lectura usando DO implcito:
READ *,((TABLA(FILA,COL), COL = a,b), FILA = c,d) READ *,(TABLA(I,J,K), I = a,b), J = c,d), K = e,f)

2. Sub arreglos de una matriz. Sea una matriz A declarada como:


INTEGER, DIMENSION (2,3) :: A

Con valores: 11 22 33 A 44 55 66 El subarreglo definido por: A(1:2:1, 2:3:1) o simplemente A(:, 2:3) es una matriz de 2x2 que contiene las dos ltimas columnas de la matriz A. A 22 33 55 66

El valor del subarreglo definido como A(2, 1:3:1) o simplemente A(2,:) es un vector que contiene la ltima fila de la matriz

44 55 66

- 17 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

El valor del subarreglo definido por. A((/2,1/), 2:3), en el cual el primer trmino est definido por el vector (/2,1/), el que indica que la segunda fila se considerar primero y luego la primera, es decir indica el orden de asignacin de las filas, y el segundo trmino est definido por la declaracin (2:3), con paso de 1, el resultado es un arreglo 2x2 A 55 66

22 33 3. Asignacin de un arreglo a otro. Sean dos matrices declaradas como:


INTEGER, DIMENSION (2,3) :: A INTEGER, DIMENSION (3,2) :: B

Se asigna a la matriz A el valor de 0, el resultado es una matriz 2x3 conteniendo como elementos ceros.
A = 0

0 0 La declaracin: B = RESHAPE (A, (/3,2/)), asigna a la matriz B el contenido de A 0 0 B 0 0 0 0 Tambin se pueden asignar valores a manera de subarreglos dentro de una matriz, por ejemplo en la matriz original A con elementos igual a cero, la declaracin:
A(:, 2:3) = RESHAPE((/I**2, I = 1,4)/), (/2,3/))

Cambia los valores de A: A 0 1 9

4 0 16 4. Asignacin mediante la sentencia WHERE Sean dos matrices A y B declaradas como: REAL, DIMENSION (2,3) :: A, B Donde la matriz A tiene los valores: 20 . 00 . . 50 . 00 . 10 0 La sentencia WHERE usada como: A
WHERE ( A /= 0.) B = 1.0/REAL(A) ELSEWHERE B = 0.0 END WHERE

10 .

Los valores asignados a B son:

- 18 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

10 . 05 . 00 . . 0. 2 00 . 01

Ejemplos
Declaraciones de matrices
COMPLEX, DIMENSION (10,20,10) :: A,B,C COMPLEX :: A(10,10), B(10,5), C(10,30) COMPLEX, DIMENSION (0:9,1:4) :: A,B,C COMPLEX, DIMENSION (0:18:2,1:12:4,0:9:1) :: A,B,C COMPLEX A(0:9,:13:,1:6), B(2:18:2,12)

Declaraciones de matrices con tamao desconocido


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

Otra forma:
REAL, DIMENSION (:,:,:) :: A,B,C ALLOCATABLE :: A,B,C Luego de un bloque de ejecucin se obtiene n y m ALLOCATE(A(n,m),B(n,m),C(n,m), STAT = StatusValor) IF (statusValor /= 0) STOP No hay memoria suficiente

Funciones para operar matrices


MATMUL(A,B) MAXVAL(A,D) MAXLOC(A) MINVAL(A,D) MINLOC(A,D) PRODUCT(A,D) RESHAPE(A,S,P,Q)

SHAPE(A) SUM(A,D) SPREAD(A,D,N) TRANSPOSE(A)

Producto de matriz A por B Arreglo con los mximos valores de A en la dimensin D, si se omite D un valor mximo de todo el arreglo Vector con la posicin del primer mximo valor Arreglo con el mnimo valor de A en la dimensin D, si D se omite, un mnimo valor de todo el arreglo Vector con la posicin del primer mnimo valor Arreglo de una dimensin menor que contiene el producto de A con los elementos de la dimensin D Arreglo que contiene los valores de A con la forma S, seguidos por elementos del arreglo P y un vector Q especificando el orden en que los subscriptores se varan cuando se llena la matriz. P y Q son opcionales. Vector con las extensiones del arreglo A Arreglo con la suma de los elementos de A en la dimensin D, si D se omite suma los elementos de toda la matriz Arreglo de dimensin mayor que A obtenida por proyectar A, n veces a lo largo de la dimensin D Transpuesta de A

Ejercicios de aplicacin
1. Declarar una matriz de nmeros enteros, de dos filas y tres columnas. Rellenarla en sus primeros elementos con los valores 11, 12, 13, 14 y los dos restantes con 0, rellenarlas por filas e indicar la matriz obtenida. 2. En un programa se declara una matriz mediante la sentencia: REAL, DIMENSION (-4:0:1,1:7:1):: A

- 19 -

ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1

En el mismo programa se escriben las asignaciones vector conteniendo los subndices que se indican: u = (/-4,-2,-3/) y v = (/2,1,1,3/) Contestar las siguientes preguntas: a. Total de filas y columnas que posee la matriz declarada b. Subarreglos obtenidos, respectivamente, con el uso de las variables A = (-2,v), A(u,2) y A(u,v) c. Subarreglo obtenido con: A(0,(/1,3,5/)). 3. Escribir un programa que use una matriz de rango 2, donde las extensiones de cada dimensin son variables. El programa leer las extensiones por teclado, dimensionar la matriz en memoria en funcin de los valores ledos y por ltimo llenar de valores e imprimir su contenido. 4. Escribir un programa que lea por teclado el listado de notas de hasta 100 alumnos, para cinco ejercicios. Se debern introducir todas las notas para el primer ejercicio, a continuacin las del segundo, y as sucesivamente hasta completar los cinco ejercicios. Si la nota introducida es 999, el programa considerar que ya no hay ms alumnos en dicho ejercicio y pasar al siguiente ejercicio. El programa deber resolver el nmero de alumnos presentados a cada ejercicio, la nota media para dicho ejercicio y el listado de notas con la desviacin con respecto a la media. 5. Escribir un programa que transponga la matriz de dimensin 3x3 de valores reales de doble densidad, leda por teclado. Se emplear la construccin FORALL sin hacer uso de matrices auxiliares.

2.2 Dimensionamiento dinmico


Los datos pueden ser estticos o dinmicos, en el caso de datos estticos el valor de memoria asignada a la variable se mantiene constante durante toda la ejecucin del programa y nicamente se libera cuando termina la ejecucin. En este tipo de datos es previamente definido el tamao de memoria que se reserva. Cuando un dato es dinmico la cantidad de memoria puede ser creada, alterada o liberada conforme avanza la ejecucin del programa y de acuerdo a las necesidades del usuario. En FORTRAN 90/95 existen 3 tipos de dimensionamiento dinmico: punteros (POINTERS), arreglos alojados (ALLOCATE) y arreglos automticos.

2.2.1 Punteros
El objetivo de su uso es el de almacenar los arreglos consecutivamente dejando posiciones de memoria sin uso al final del espacio reservado. Considrese la siguiente declaracin de matrices y vectores:
PARAMETER (NA_MAX = 100) REAL(KIND = 8), DIMENSION (NA_MAX, NA_MAX) :: A REAL(KIND = 8), DIMENSION (NA_MAX) :: V, W

Se observa claramente que para no tener que compilar y enlazar el programa cada vez que se desea trabajar con matrices de tamaos de distintos tamaos se ha definido un parmetro, este parmetro indica el mximo tamao admisible sin necesidad de modificar el programa. En este caso se suponen que no existirn matrices de orden mayor a 100, por lo que se reserva espacio suficiente para matrices 100x100 coeficientes reales de doble densida

You might also like