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.
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.
Vectores dinámicos
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.
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.
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.
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.
1 comentario:
Hola! muchas gracias por pasar!
te agregue a mis blogs amigos
seguimos en contacto!
saludos
alex
Publicar un comentario