Professional Documents
Culture Documents
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.
-5 -
ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1
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
USE declaraciones
Declaracin de variables
Declaracin ejecutables
END
-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
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
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
.TRUE. .FALSE.
-8 -
ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1
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
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
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
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]
- 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.
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
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:)
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
- 15 -
ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA MARITIMA Y CIENCIAS DEL MAR PROGRAMACION APLICADA 1
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.
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
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
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)
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
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/))
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 .
- 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)
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
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.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