Programación Para Newbies: Fortran 6: Vectores y Arrays

Acá desarrollaremos el manejo más básico de vectores y arrays (también conocidos como arreglos en español) en el lenguaje Fortran.

A muchos les puede sonar conocida la palabra vector, para algunos, es un organismo que transmite enfermedades, para otros (los más matemáticos) es una cantidad dirigida, o un elemento de una estructura algebraica conocida como espacio vectorial, por lo tanto partimos definiendo ¿qué es un vector o un array en Fortran?.

Básicamente un vector (o array también) es una manera de manejar una gran cantidad de datos de manera más cómoda, ¿a qué nos referimos con esto? se preguntarán algunos, bueno, más especificamente un vector es un tipo de variable, que dentro de si contiene distintos valores.

Por ejemplo, en matemáticas, podemos definir el vector A=(x,y,z) en el espacio de 3 dimensiones, en Fortran es muy similar (recordemos que el objetivo del lenguaje es ayudar en tareas de matemáticas, ciencia e ingeniería), podemos definir vectores con cuantas componentes queramos. Los arrays son un poco distintos, estos trabajan (por dar un par de ejemplos) en distintas dimensiones, con esto me refiero a filas, columnas, etc, estas imágenes son más explicativas:

Ejemplo de un array en 2D

En cada celda del recuadro cabe un valor distinto (aunque no necesariamente) y al estar en un  array se tratan como uno solo, osea, se hacen las mismas operaciones sobre todos los elementos.

Un array 3D sería:

Ejemplo de un Array 3D

Acá cada cubo representaría un valor dentro del array. no puedo poner imágenes en 4D ya que es como imposible salirse del espacio normal xD; pero ya entendieron la idea.

Tenemos que introducir una cierta terminología para que estar seguros de que entendernos lo mismo:

  • Rango: número de dimensiones (1D, 2D, 3D,…)
  • Extensión: número de elementos de una dimensión.
  • Forma: vector de rango 1 que contiene en sus entradas la extensioń de cada dimensión.
  • Tamaño: número de elementos.

Hemos de saber que tenemos, nuevamente, dos tipos de arrays, estáticos y dinamicos.

Ahora que sabemos lo básico, veamos como trabajar con ellos:

Arrays Estáticos

Reciben el nombre estático ya que SE DEBE declarar con anterioridad sus dimensiones y su extensión, siendo estas inalterables.

Al ser declarados como variables, su sintaxis es un poco distinta, respondiendo a su distinta naturaleza, digamos que queremos trabajar con vectores y arrays con entradas del tipo real, la declaración sería:

program muestra_array1
real,dimension(5)::a
real,dimension(7,8)::r,s
real,dimension(6,9)::t
real::b(7)
...
end program

Acá se tiene que a es un vector con 5 entradas, b es también un vector, pero de 7 entradas. r y s son arrays de 7×8 y t es un array de 6×9, r,s,t son de dos dimensiones.

Arrays Dinámicos

A diferencia de los estáticos, la extensión de los arrays dinámicos podemos establecerla sobre la marcha, ya sea con una variable, o un valor arbitrario, para ello hacemos uso de la sentencia ALLOCATE, al declararlo sería:

program muestra_array2
integer::n
real,dimension(:)::a
...
ALLOCATE(a(n))
...
end program

En este caso particular, a es un vector con n entradas, la sintaxis para declarar arrays es la misma.

Ahora pasaremos a la manera de como trabajar, propiamente tal, con los arrays, hay una sola regla de oro: dos arrays o vectores se pueden operar, si y solo si, ambos tienen las mismas dimensiones y extensiones. Casi todo intento de operación que no cumpla esto, no es aceptable para el programa, la excepción es la multiplicación por un escalar, un escalar es una variable normal, estas al multiplicar, se “expanden” afectando a todos las entradas del array.

La suma, resta multiplicación y división se realizan elemento a elemento, ejemplo:

Ejemplo de multiplicación de arrays

Podemos llamar a un cierto elemento de un array indicando su posición, por ejemplo, si decimos que a es el primer array mostrado en la imagen anterior print*,a(1,2) nos muestra el valor 4. En dos dimensiones siempre se convoca array(fila,columna).

Las sentencias maxval y minval buscan el valor máximo y el valor mínimo dentro del array. Ej: b=maxval(a) !a b se le asigna el máximo valor dentro de a.

Finalmente, sum nos da la suma de todos los valores dentro de un array. Ejemplo b=sum(a) !b es la suma de todos las entradas de a.

Bueno, estos son los aspectos más básicos del manejo de arrays en Fortran, con este post, llegamos al fin de la serie de Programación para Newbies: Fortran. Espero lo hayan disfrutado, como yo lo hice :D

3 thoughts on “Programación Para Newbies: Fortran 6: Vectores y Arrays

  1. Hola bueno tu tutorial de fortran es muy bueno pero no e encontrado una cosa y no se si me puedas ayudar, si necesito hacer algun tipo de grafica como hago para desde fortran llamar a un graficador como pplot no se como instalarlo e integrarlo si sabes te lo agradesco

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s