Sunteți pe pagina 1din 5

Vector (informtica)

(Redirigido desde Matriz (programacin))



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)

S-ar putea să vă placă și