4. ARREGLOS

En programación(de una sola dimensión) se le denomina vector o formación (en inglés array)1​ a una zona de almacenamiento contiguo que contiene una serie de elementos del mismo tipo, los elementos de la matriz.2​ 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.
NOTACIÓN
La representación de un elemento en un vector se suele hacer mediante el identificador del vector seguido del índice entre corchetes, paréntesis o llaves:
NotaciónEjemplos
vector[índice_1,índice_2...,índice_N]LexicoPerl, etc.
vector[índice_0][índice_1]...[índice_N-1]CC++PHPJava, etc.
vector(índice_1,índice_2...,índice_N)BasicMATLAB
Aunque muchas veces en pseudocódigo y en libros de matemática se representan como letras acompañadas de un subíndice numérico que indica la posición a la que se quiere acceder. Por ejemplo, para un vector "A":
 (vector unidimensional)
FORMA DE ACCESO
La forma de acceder a los elementos de la matriz es directa; esto significa que el elemento deseado es obtenido a partir de su índice y no hay que ir buscándolo elemento por elemento (en contraposición, en el caso de una lista, para llegar, por ejemplo, al tercer elemento hay que acceder a los dos anteriores o almacenar un apuntador o puntero que permita acceder de manera rápida a ese elemento).
Para trabajar con vectores muchas veces es preciso recorrerlos. Esto se realiza por medio de bucles. La siguiente fuente escrita en el lenguaje C muestra un algoritmo típico para recorrer un vector '' y aplicar una función '' a cada una de las componentes del vector:
int i = 0;
int longitud = 99; // longitud del vector Ej. 99
int V[longitud];
while(i < longitud) //Ej. con While
{
//Se realiza alguna operación con el vector en la i-ésima posición
f( V[i] );
//Se aumenta el índice para la siguiente etapa
i= i+1; // Tambien podria escribirse como i++; o i+= 1;
}
EJEMPLOS EN C
  • Declaración en C/C++ de un vector estático.
int main(void)
{ int i, v[5]; // v[5] es un vector de 5 componentes (Indexación base-cero) for(i=0; i<5; i++) { v[i] = 0; // Asignamos un valor printf("%d\n", v[i]); printf("\n"); // Crea una nueva línea } return 0; }
  • Declaración en C/C++ de un vector estático utilizando aritmética de punteros.
Siendo el identificador del vector, un puntero constante que contiene la dirección del comienzo del vector (vector[0], primer elemento)
int main(void)
{
  int i, v[5];  // v[5] es un vector de 5 componentes (Indexación base-cero)

  for(i=0; i<5; i++)
  {
    *(v + i) = 0; // Asignamos un valor en la dirección (vector + ((índice * sizeof (int) cantidad de bytes de desplazamiento desde la base.)
    printf("%d\n", *(v + i));
    printf("\n");  // Crea una nueva línea
  }
  return 0;
}
  • Declaración en C++ de un vector de STL:
#include <vector>

vector<int> v; // Si no se especifica el tamaño inicial es 0

for(int i=0 ;i<5 ;i++)
{
  v.push_back(2*i); // inserta un elemento al final del vector
}
El ejemplo anterior está hecho para el lenguaje C++. En C, para crear vectores dinámicos se tendrían que utilizar las instrucciones malloc y realloc para reservar memoria de forma dinámica (ver biblioteca stdlib.h), y la función free para liberar la memoria utilizada.
Resultado:
01234
02468
El resultado de los dos ejemplos es el mismo vector.

Comentarios

Publicar un comentario

Entradas populares de este blog

3. PROGRAMACIÓN UTILIZANDO UN LENGUAJE DE ALTO NIVEL

3.5 PALABRAS RESERVADAS

1.2 DIAGRAMAS DE FLUJO