Diferencia entre revisiones de «Vector (informática)»

Contenido eliminado Contenido añadido
SeroBOT (discusión · contribs.)
m Revertidos los cambios de 201.171.254.14 (disc.) a la última edición de SeroBOT
Etiqueta: Reversión
Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»
Etiquetas: posible pruebas posible problema Eliminación de categorías
Línea 1:
Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»Edición de «Vector (informática)»
{{referencias|t=20131018}}
{{otros usos|Matriz}}
[[Archivo:Array1.svg|miniaturadeimagen|300px|Matriz unidimensional con 10 elementos. Nótese que empieza a contar desde 0.]]
 
En [[programación]], se le denomina '''vector''', '''formación''' o '''arreglo''' (en inglés '''''array''''')<ref>[http://www.eldiario.es/hojaderouter/informatica-Espana-origenes-historia-traduccion-Antonio_Vaquero_0_453205398.html Antonio Vaquero, el pionero que tradujo la informática: "Me da igual que digan 'computer', pero no que digan ordenador"], ''eldiario.es'', 27 de noviembre de 2015.</ref> a una zona de almacenamiento contiguo que contiene una serie de elementos del mismo tipo, los elementos de la matriz.<ref>Douglas Bell, Java para estudiantes (2003). Mike Parr (3 edición). Pearson education. p. 162. ISBN 0-13-032377-2.</ref> 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 [[Recursión|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 (estructura de datos)|lista]], ya que esta estructura puede cambiar de tamaño fácilmente durante la ejecución de un programa.
 
== Índices ==
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. Existen tres formas de indexar los elementos de una matriz:
 
* '''Indexación 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 de programación C|lenguaje C]] es un ejemplo típico que utiliza este modo de indexación.
 
* '''Indexación base-uno (1)''': en esta forma de indexación, el primer elemento de la matriz tiene el índice '1' y el último tiene el índice 'n' (para una matriz de 'n' componentes). [[Lua]] es un ejemplo de lenguaje que usa este tipo de indexación.
 
* '''Indexación base-n (n)''': este es un modo versátil de indexación en la que el índice del primer elemento puede ser elegido libremente, en algunos lenguajes de programación se permite que los índices puedan ser negativos e incluso de cualquier tipo [[Escalar (informática)|escalar]] (también cadenas de caracteres).
 
== 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:
 
{| class="wikitable"
!Notación !! Ejemplos
|-
|vector[''índice_1'',''índice_2''...,''índice_N'']||[[Lua]], [[Perl]], etc.
|-
|vector[''índice_0''][''índice_1'']...[''índice_N-1'']||[[Lenguaje de programación C|C]], [[C++]], [[PHP]], [[Lenguaje de programación Java|Java]], etc.
|-
|vector(''índice_1'',''índice_2''...,''índice_N'') ||[[Basic]], [[MATLAB]]
|-
|}
 
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'''":
 
<center><math>A_0, A_1, A_2, ... </math> (vector unidimensional)</center>
 
== 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 [[Puntero (informática)|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 [[Bucle (programación)|bucles]]. La siguiente fuente escrita en el lenguaje C muestra un algoritmo típico para recorrer un vector '<math>V</math>' y aplicar una función '<math>f(...)</math>' a cada una de las componentes del vector:
 
<source lang="c">
 
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; // También podría escribirse como i++; o i+= 1;
}
 
</source>
 
== Vectores dinámicos y estáticos ==
Lo habitual es que un vector tenga una cantidad fija de memoria asignada, aunque dependiendo del tipo de vector y del [[lenguaje de programación]] un vector podría tener una cantidad variable de datos. En este caso, se les denomina '''vectores dinámicos''', en oposición, a los vectores con una cantidad fija de memoria asignada se los denomina '''vectores estáticos'''.<ref>{{cita libro|apellidos1=Eck|nombre1=David J|título=Introducción a la programación usando Java|fecha=2010|página=340|url=https://books.google.com.co/books?id=vBDDAwAAQBAJ&pg=PR9&dq=introduccion+a+la+programacion+usando+java&hl=es-419&sa=X&ved=0ahUKEwjJnviTm73NAhUJmh4KHVjuBiAQ6AEIKjAA#v=onepage&q=introduccion%20a%20la%20programacion%20usando%20java&f=false}}</ref>
 
El uso de vectores dinámicos requiere realizar una apropiada [[Asignación de memoria#Asignación dinámica de memoria|gestión de memoria dinámica]]. Un uso incorrecto de los vectores dinámicos, o mejor dicho, una mala gestión de la memoria dinámica, puede conducir a una [[fuga de memoria]]. Al utilizar vectores dinámicos siempre habrá que liberar la memoria utilizada cuando ésta ya no se vaya a seguir utilizando.
 
Lenguajes más modernos y de más alto nivel, cuentan con un mecanismo denominado [[recolector de basura]] (como es el caso de [[Lenguaje de programación Java|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 en C ===
* Declaración en [[lenguaje de programación C|C]]/[[C++]] de un vector estático.
 
<source lang="c">
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;
}
</source>
 
* Declaración en [[lenguaje de programación C|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)
 
<source lang="c">
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;
}
</source>
 
* Declaración en C++ de un vector de STL:
 
<source lang="c">
#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
}
</source>
 
El ejemplo anterior está hecho para el lenguaje C++. En C, para crear vectores dinámicos se tendrían que utilizar las instrucciones ''[http://c.conclase.net/librerias/funcion.php?fun=malloc malloc]'' y ''[http://c.conclase.net/librerias/funcion.php?fun=realloc realloc]'' para reservar memoria de forma dinámica (ver [[stdlib.h|biblioteca stdlib.h]]), y la función ''[http://c.conclase.net/librerias/funcion.php?fun=free free]'' para liberar la memoria utilizada.
 
Resultado:
 
{| class="wikitable" style="margin: 0 auto;"
!0 !! 1 !! 2 !! 3 !! 4
|-
|0 || 2 || 4 || 6 || 8
|}
 
El resultado de los dos ejemplos es el mismo vector.
 
== Vectores multidimensionales ==
En [[Basic]], [[Lenguaje de programación Java|Java]] y otros lenguajes es posible declarar matrices multidimensionales, entendiéndolas como un vector de x dimensión. En dichos casos el 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 ==
* [[Estructura de datos]]
* [[Registro (estructura de datos)]]
* [[Programación orientada a objetos]]
* [[Gráfico vectorial]]
* [[Tupla]]
 
== Referencias ==
{{listaref}}{{Control de autoridades}}
[[Categoría:Estructura de datos]]