De Wikipedia, la enciclopedia libre
Saltar a navegación, búsqueda
Arreglo unidimensional con 10 elementos
Arreglo unidimensional con 10 elementos
En programación, un vector, array, arreglo o alineación es un conjunto o agrupación de variables del mismo tipo cuyo acceso se realiza por índices.
Los vectores o arreglos (array en inglés) de dos o más dimensiones se denominan con frecuencia matrices, y pueden tener tantas dimensiones como se desee; aunque lo correcto es llamarlo arreglo (de memoria) ya que una variable de más de dos dimensiones, no cumple con las características matemáticas de una matriz numérica.
Desde el punto de vista del programa, un arreglo (matriz, array ó vector) es una zona de almacenamiento contiguo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lógico podemos considerarlas como un conjunto de elementos ordenados en fila. Así pues, en principio todas las matrices son de una dimensión, la dimensión principal, pero veremos que los elementos de esta fila pueden ser a su vez arreglos (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de arreglos multidimensionales, aunque las más fáciles de "ver" o imaginar son las de dos y tres dimensiones.
Puede afirmarse que las matrices son un recurso de programación simple y socorrido; en realidad pueden considerarse como las "estructuras" de datos más simples que cabe imaginar (todos los elementos del mismo tipo). Presentan la ventaja de que sus elementos son rápidamente accesibles, en especial si utiliza punteros en vez de subíndices, pero presentan una notable limitación: son de tamaño fijo; es preciso definir su tamaño desde el principio y no pueden ser fácilmente incrementadas o disminuidas sino mediante complejos procesos de copia.
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.
Contenido
[ocultar]
* 1 Índices
* 2 Notación
* 3 Forma de Acceso
* 4 Vectores dinámicos
* 5 Vectores multidimensionales
* 6 Véase también
Índices [editar]
Todo vector se compone de un determinado número de elementos. Cada elemento es referenciado por la posición que ocupa dentro del vector. Dichas posiciones son llamadas índice y siempre son correlativos.
Matemáticamente todo elemento inicial de un vector comienza por '0' hasta el número de elementos - 1. Este sistema es conocido como ZeroIndex. Sin embargo algunos lenguajes, adoptaron como elemento inicial el '1' por ser más intuitivo a los usuarios a que iba dirigido el lenguaje. Particularmente el Basic (hasta la versión VB 6.0) permitía especificar cualquier cifra como inicial, incluso negativas, los únicos límites eran el rango de tipo de datos y que debía ser inferior o igual al elemento final, en tales casos el número de elementos era la diferencia entre ambos límites.
Lenguajes como Python llevan al extremo las utilización de índices y permiten el uso de números negativos para referenciar el vector desde el final hacia la posición inicial. Por ejemplo, el índice -1 corresponde al último elemento y el -2 corresponde al penúltimo.
Notación [editar]
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ón Ejemplos
vector[índice,índice 2...,índice N] (C, C++, Java, Lexico, etc.)
vector(índice,índice 2...,índice N) (Basic)
vector{índice,índice 2...,índice N} (Perl)
Aunque muchas veces en pseudocódigos 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: a0,a1,a2,... vector unidimensional
Forma de Acceso [editar]
La forma de acceder a los elementos del array es directa, al contrario de las listas. Esto significa que el elemento deseado es obtenido a partir de su índice y no hay que ir buscándolo elemento por elemento. En el caso de una lista, por ejemplo, para llegar 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 ciclos de repetición. El algoritmo clásico para recorrer un vector se refleja en el siguiente pseudocódigo:
i = 0
mientras (i < longitud)
#Se realiza alguna operación con el vector en la i-ésima posición
f(v[i])
i=i+1
fin_mientras
Vectores dinámicos [editar]
Dependiendo del tipo de vector y del lenguaje de programación que se utilice, este vector puede tener una cantidad fija o variable de datos. En el segundo caso, se los denomina vectores dinámicos. Los vectores dinámicos sacan su espacio del denominado heap del programa. Un uso incorrecto de los vectores dinámicos puede conducir a una fuga de memoria, por eso, se aconseja siempre en estos lenguajes liberar la memoria utilizada.
Lenguajes más modernos y de más 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 basándose en si se va a utilizar en el futuro o no un determinado objeto.
Ejemplos:
* Declaración en C (o C++) de un vector estático:
int v[5];
for (int i=0; i<5; i++)
{
v[i]=2*i;
}
El resultado de los dos ejemplos es el mismo vector: 0 1 2 3 4
0 2 4 6 8
* Declaración en C++ de un ( vector de la STL o vector dinámico):
vector
for (int i=0; i<5; i++)
{
v.push_back(2*i);
}
// se supone implementada la clase genérica "vector
En el caso del lenguaje C, la forma de crear vectores estáticos es igual que en c++, pero para vectores dinámicos se utilizan la instrucciones malloc y realloc, acompañadas por free (para liberar la memoria utilizada).
En lenguajes compilados y en la mayoría de máquinas virtuales, la representación de arreglos suele ser en una dimensión, es decir: un conjunto consecutivo de celdas de memoria (como si fueran un gran vector). El compilador (o traductor a byte-code) realizará las conversiones pertinentes para transformar un acceso a una matriz en un acceso a un vector.
Vectores multidimensionales [editar]
En Basic, Java y otros lenguajes es posible declarar matrices multidimensionales, entendiéndolas como un vector de vectores. En dichos casos en número de elementos del vector es el producto resultante de cada dimensión.
Por ejemplo el vector v(4,1) tiene 10 elementos se calcula del siguiente modo: (0-4) * (0-1). Los elementos de la primera dimensión del vector contiene 5 elementos que van del '0' al '4' y la 2º dimensión tiene 2 elementos que van desde '0' a '1'. Los elementos serían 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)
Véase también [editar]
* Estructura de datos
* Programación orientada a objetos
* Gráfico vectorial
No hay comentarios:
Publicar un comentario