VECTORES:
En programación una matriz o vector (llamados en inglés arrays) es una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lógico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones).
En principio, se puede considerar que todas las matrices son de una dimensión, la dimensión principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de matrices multidimensionales, aunque las más fáciles de imaginar son los de una, dos y tres dimensiones.
Estas estructuras de datos son adecuadas para situaciones en las que el acceso a los datos se realice de forma aleatoria e impredecible. Por el contrario, si los elementos pueden estar ordenados y se va a utilizar acceso secuencial sería más adecuado utilizar una lista, ya que esta estructura puede cambiar de tamaño fácilmente durante la ejecución de un programa.
Declaración de vectores
- tipo: ha de ser un tipo básico o derivado
- dimension es opcional, pero necesario para definir dimensiones por defecto
lista de extensiones
indica las dimensiones del vector. Puede ser:
- *Una constante entera.
- *Una expresión entera usando argumentos o constantes ficticios.
- *Para mostrar que el vector es dinámico o de forma asumida.
- Los atributos pueden ser los que ya hemos estudiado: parameter, public, private, pointer, target, allocatable, intent(inout), dimension(<lista de extensiones>), optional, save, external o intrinsic.
- Los identificadores de la lista opcionalmente pueden tener dimensiones y valores iniciales.
Veamos varios ejemplos de declaraciones de vectores. En primer lugar, la inicialización de dos vectores unidimensionales conteniendo 3 elementos:
integer, dimensión(3) :: ia = (/1, 2, 3/), ib = (/(i, i=1, 3)/)
Declaración de un vector automático lb:
logical, dimensión(size(la)) :: lb
la es un vector de argumentos ficticios y size() una función intrínseca que devuelve el tamaño del vector la. Declaración de dos vectores bidimensionales dinámicos a y b:
real, dimensión (:, :), allocatable :: a, b
La forma (número de elementos en cada dimensión) se definiría con una sentencia allocate posterior. Declaración de 2 vectores tridimensionales de forma asumida:
real, dimensión(:,:,:) :: a, b
/* * Ejemplo : El producto escalar de dos vectores */
#include <stdio.h> double producto_escalar(double v1[], double v2[], int d);
int main()
{
const int largo = 3;
double vector_1[] = {5,1,0};
double vector_2[] = {-1,5,3};
double resultado = producto_escalar(vector_1, vector_2, largo);
// imprime el resultado
printf("(%f, %f, %f) . (%f, %f, %f) = %f\n",
vector_1[0], vector_1[1], vector_1[2],
vector_2[0], vector_2[1], vector_2[2],
resultado);
return 0;
}
/* producto escalar entre dos vectores */
double producto_escalar(double v1[], double v2[], int d)
{
double resultado = 0;
int i;
for (i=0; i < d; i++) {
resultado += v1[i] * v2[i]; }
return resultado;
}
No hay comentarios:
Publicar un comentario