Este artculo o seccin necesita referencias que aparezcan en una publicacin acreditada, como revistas especializadas, monografas, prensa diaria o pginas de Internet fidedignas. Este aviso fue puesto el 18 de octubre de 2013. Puedes aadirlas o avisar al autor principal del artculo en su pgina de discusin pegando: {{subst:Aviso referencias|Vector (informtica)}} ~~~~
Se ha sugerido que esta pgina sea renombrada como Arreglo (informtica) . Motivo: Se ha puesto en discusin el significado y traduccin correcta de la palabra inglesa array: en el campo de la informtica se le ha relacionado con el trmino arreglo, y se propone que se renombre al mismo. (ver discusin) Para otros usos de este trmino, vase Matriz.
Matriz unidimensional con 10 elementos. En programacin, una matriz o vector (llamado en ingls array) 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 lgico 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 dimensin, la dimensin 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 ms fciles 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 sera ms adecuado utilizar una lista, ya que esta estructura puede cambiar de tamao fcilmente durante la ejecucin de un programa. ndice [ocultar] 1 ndices 2 Notacin 3 Forma de acceso 4 Vectores dinmicos y estticos o 4.1 Ejemplos en C 5 Vectores multidimensionales 6 Vase tambin ndices[editar] Todo vector se compone de un determinado nmero de elementos. Cada elemento es referenciado por la posicin que ocupa dentro del vector. Dichas posiciones son llamadasndice y siempre son correlativos. Existen tres formas de indexar los elementos de una matriz: Indexacin base-cero (0): en este modo el primer elemento del vector ser la componente cero ('0') del mismo, es decir, tendr el ndice '0'. En consecuencia, si el vector tiene 'n' componentes la ltima tendr como ndice el valor 'n-1'. El lenguaje C es un ejemplo tpico que utiliza este modo de indexacin. Indexacin base-uno (1): en esta forma de indexacin, el primer elemento de la matriz tiene el ndice '1' y el ltimo tiene el ndice 'n' (para una matriz de 'n' componentes). Indexacin base-n (n): este es un modo verstil de indexacin en la que el ndice del primer elemento puede ser elegido libremente, en algunos lenguajes de programacin se permite que los ndices puedan ser negativos e incluso de cualquier tipo escalar (tambin cadenas de caracteres). Notacin[editar] La representacin de un elemento en un vector se suele hacer mediante el identificador del vector seguido del ndice entre corchetes, parntesis o llaves: Notacin Ejemplos vector[ndice_1,ndice_2...,ndice_N] (Java, Lexico, Perl, etc.) vector[ndice_0][ndice_1]...[ndice_N] (C, C++, PHP, etc.) vector(ndice_1,ndice_2...,ndice_N) (Basic) Aunque muchas veces en pseudocdigo y en libros de matemtica se representan como letras acompaadas de un subndice numrico que indica la posicin a la que se quiere acceder. Por ejemplo, para un vector "A": (vector unidimensional) Forma de acceso[editar] 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 buscndolo elemento por elemento (en contraposicin, 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 rpida a ese elemento). Para trabajar con vectores muchas veces es preciso recorrerlos. Esto se realiza por medio de bucles. El siguiente pseudocdigo muestra un algoritmo tpico para recorrer un vector y aplicar una funcin ' ' a cada una de las componentes del vector: i = 0 mientras (i < longitud) #Se realiza alguna operacin con el vector en la i-sima posicin f(v[i]) i=i+1 fin_mientras Vectores dinmicos y estticos[editar] Lo habitual es que un vector tenga una cantidad fija de memoria asignada, aunque dependiendo del tipo de vector y del lenguaje de programacin un vector podra tener una cantidad variable de datos. En este caso, se les denomina vectores dinmicos, en oposicin, a los vectores con una cantidad fija de memoria asignada se los denominavectores estticos. El uso de vectores dinmicos requiere realizar una apropiada gestin de memoria dinmica. Un uso incorrecto de los vectores dinmicos, o mejor dicho, una mala gestin de la memoria dinmica, puede conducir a una fuga de memoria. Al utilizar vectores dinmicos siempre habr que liberar la memoria utilizada cuando sta ya no se vaya a seguir utilizando. Lenguajes ms modernos y de ms alto nivel, cuentan con un mecanismo denominado recolector de basura (como es el caso de Java) que permiten que el programa decida si debe liberar el espacio basndose en si se va a utilizar en el futuro o no un determinado objeto. Ejemplos en C[editar] Declaracin en C/C++ de un vector esttico. int main(void) { int i, v[5]; // v[5] es un vector de 5 componentes
for(i=0; i<5; i++) { v[i] = 0; // Asignamos un valor printf("%d\n", v[i]); printf("\n"); // Crea una nueva lnea } return 0 } Declaracin en C/C++ de un vector esttico utilizando aritmtica de punteros. Siendo el identificador del vector, un puntero constante que contiene la direccin del comienzo del vector (vector[0], primer elemento) int main(void) { int i, v[5]; // v[5] es un vector de 5 componentes
for(i=0; i<5; i++) { *(v + i) = 0; // Asignamos un valor en la direccin (vector + ((ndice * sizeof (int) cantidad de bytes de desplazamiento desde la base.) printf("%d\n", *(vector + i)); printf("\n"); // Crea una nueva lnea } return 0 } Declaracin en C++ de un vector de STL: #include <vector>
vector<int> v; // Si no se especifica el tamao 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 dinmicos se tendran que utilizar las instrucciones malloc y realloc para reservar memoria de forma dinmica (ver biblioteca stdlib.h), y la funcin free para liberar la memoria utilizada. Resultado: 0 1 2 3 4 0 2 4 6 8 El resultado de los dos ejemplos es el mismo vector. Vectores multidimensionales[editar] En Basic, Java y otros lenguajes es posible declarar matrices multidimensionales, entendindolas como un vector de x dimensin. En dichos casos en nmero de elementos del vector es el producto resultante de cada dimensin. Por ejemplo el vector v(4,1) tiene 10 elementos se calcula del siguiente modo: (0-4) * (0-1). Los elementos de la primera dimensin del vector contiene 5 elementos que van del '0' al '4' y la 2 dimensin tiene 2 elementos que van desde '0' a '1'. Los elementos seran accedidos del siguiente modo: elemento 1: (0,0) elemento 2: (0,1) elemento 3: (1,0) ... elemento 8: (3,1) elemento 9: (4,0) elemento 10: (4,1)