Vectores y Matrices en Fortran
Vectores y matrices
En FORTRAN se puede utilizar un tipo especial de variable que sirve, en particular, para
almacenar vectores y matrices. De esta forma, se utiliza un s´olo nombre para referirse al
conjunto de direcciones de memoria en las que se almacena la matriz o vector. En lenguaje
inform´atico a estos conjuntos de datos se les suele llamar tablas (tambi´en arrays otableros).
4.1
Declaraci´
on de tablas
Una de las funciones del compilador es contar las unidades de memoria que un programa
necesitar´a cuando se cargue en memoria para ser ejecutado. Por esta raz´on, cuando se
utilizan tablas es necesario indicarle al compilador el n´
umero de elementos que contendr´a (o
podr´a contener).
Para poder usar una tabla en un programa FORTRAN esimprescindible, pues, declararla: hay que indicar su nombre (nombre v´alido de variable), su tipo (entero, real s.p., . . . )
y sus dimensiones (n´
umero de sub´ındices y extensi´on de los mismos).
La declaraci´on puede hacerse de forma est´
atica o de forma din´
amica.
Cuando se usa la forma est´atica, se declaran las dimensiones de la tabla ya durante
la compilaci´on. Esto significa que el recuento dela memoria necesaria para almacenar los
elementos de la tabla tiene lugar durante la compilaci´on, que dicha memoria se reserva cuando
se carga el programa en memoria y que el tama˜
no de la tabla, y por tanto la cantidad de
memoria que usa, se mantiene constante durante la ejecuci´on del programa.
La declaraci´on din´amica, por el contrario, permite indicar que se va a utilizar una tabla,pero sin especificar el numero y extensi´on de sus dimensiones hasta el momento en que se
necesite, durante la ejecuci´on del programa.
4.2
Declaraci´
on est´
atica de tablas
En este tipo de declaraci´on, la tradicional del lenguaje FORTRAN, se define el n´
umero de
elementos de una tabla ya en tiempo de compilaci´on, es decir se indican el numero de sus
dimensiones y la extensi´onde las mismas de forma que el compilador puede hacer el recuento
de la memoria necesaria. Puesto que en tiempo de compilaci´on las variables no tienen a´
un
39
Ampliaci´
on de C´
alculo Num´
erico. Introducci´
on a FORTRAN90
valor asignado, no se pueden utilizar variables para declarar las dimensiones en
este tipo de declaraci´
on.
Hay varias formas posibles de escribir ladeclaraci´on est´atica de una tabla. Recomendamos una de las siguientes:
TIPO, DIMENSION :: nombre(dimensiones)
TIPO :: nombre(dimensiones)
Por ejemplo, para declarar una matriz real s.p. de nombre rigidez con 20 filas y 30
columnas se utilizar´ıa una de las dos sentencias siguientes (equivalentes):
real*4, dimension :: rigidez(20,30)
real*4 :: rigidez(20,30)
Para declarar un vector entero, de nombrenomvec, con 100 elementos, se escribir´ıa:
integer
:: nomvec(100)
Por supuesto, tambi´en se pueden utilizar tablas con m´as de dos dimensiones.
4.3
Declaraci´
on din´
amica de tablas
En Fortran90 es posible declarar tablas de forma din´amica, lo que significa que la extensi´on de
sus dimensiones se decide durante la ejecuci´
on del programa, aunque es preciso indicar,
yadurante la compilaci´on, el n´
umero de dimensiones, es decir, de sub´ındices, que va a tener.
La creaci´on de este tipo de tablas se hace en dos etapas:
1. Declaraci´on de la tabla mediante el atributo ALLOCATABLE, sin informaci´on sobre el
tama˜
no de la misma.
TIPO, ALLOCATABLE :: nombre_tabla(ind-dim)
donde ind-dim es la indicaci´on sobre el n´
umero de dimensiones de la tabla.
2. Cuandose desee crear la tabla, se usar´a la instrucci´on
ALLOCATE(nombre_tabla(dim))
EJEMPLO:
real*4, allocatable :: tabla(:,:)
...
print*,’>> Dimension de la matriz ? ’
read*,n
allocate(tabla(n,n))
Con la sentencia ALLOCATE se pueden crear varias tablas a la vez, separ´andolas por
comas.
Una tabla creada con la sentencia ALLOCATE puede ser destruida, cuando ya no se use,
con la sentencia:...
Regístrate para leer el documento completo.