Los vectores, también llamados tablas unidimensionales, son estructuras de datos caracterizadas por:

  • Una colección de datos del mismo tipo
  • Referenciadas por el mismo nombre
  • Almacenados en posiciones de memoria físicamente contiguas, de forma que la dirección de memoria más baja corresponde al primer elemento y la dirección de memoria más alta corresponde al último elemento.

El formato general para la declaración de una variable de tipo vector es:

PSEUDOCODIGO C
Var nombre : tabla [1 .. tamaño] de tipo_de_datos Tipo_de_datos nombre [tamaño]

Consulta

El acceso a un elemento de un vector se realiza mediante el nombre de éste y un índice entre corchetes ([]). El índice representa la posición relativa que ocupa este elemento dentro del vector y se especifica mediante una variable entera (normalmente una constante o variable). Formalmente: Nombre_vector [índice]

Por ejemplo los siguientes accesos serían válidos en C:

int contador 10;
  int y, j, x;
.....
x = contador[1];
x = contador[i];
x = contador[i * 2 + j];
....

Hay que tener claro que en C el primer elemento de un vector se sitúa en la posición 0, mientras que el último lo hace en la posición N-1 (N es el número de elementos). Por esta razón el índice para acceder en los elementos del vector debe estar entre estos dos valores. Es responsabilidad del programador garantizar este hecho, por no acceder a posiciones de memoria fuera del vector.

Asignación

La asignación de valores a los elementos de un vector se realiza de forma similar a cómo se consultan. Por ejemplo:

contador[0] = 24;
contador[3] = 12;

En muchas ocasiones, antes de utilizar una tabla por primera vez, es necesario dar a los suyos elementos un valor inicial. La forma más habitual consiste en recorrer secuencialmente todos los sus elementos y dar el valor inicial que les corresponda.

Existe también la posibilidad en C de asignar un valor a todos los elementos de una tabla con una sola sentencia. Concretamente en la declaración de la mesa. La forma general es la siguiente:

Tipo_de_datos nombre_tabla[tamaño] = {lista_valores};

Por ejemplo:

int contador [3] = {12,1,4};
int v[2] = {2,4,5,8}; // Incorrecto (asigna más valores de los que caben)

Cabe destacar finalmente que no está permitido comparar dos tablas utilizando los operadores relacionales que hemos visto hasta ahora. Tampoco está permitida la copia de una mesa sobre otra con una simple asignación. Todo esto debe hacerse elemento a elemento.

Pin It