Visual Basic .NET arrays y arrays multidimensionales

Un array no deja de ser otro tipo de variable, en este caso ya no es escalar, pues podemos almacenar más de un valor y accederemos a ellos a través de un índice numérico que empezará en 0.

Podemos almacenar cualquier tipo de elemento en un array.

Declaración de un array

La forma antigua era

dim a() as integer

y la recomendado para las últimas versiones es

dim a as integer()

Cuando sepamos de cuanto va a ser nuestro array, deberemos indicarlo dentro de los paréntesis

dim a(7) as integer

Si nos hubiéramos equivocado y necesitásemos cambiar el tamaño original del array usaríamos redim

redim a(10) -> pone todos sus valores a 0

Asignar valores

Si quisiéramos almacenar un 8 en la cuarta posición de un array, usaríamos

a(3) = 8

Y para acceder simplemente haría referencia a su posición

valor = 7* a(3)

Se pueden hacer operaciones numéricas dentro de los paréntesis, el único requisito es que el resultado sea un entero.

En el momento de inicializar podemos asignar una lista de valores

dim a() as integer = {1,43,5,7,8}

dim a as integer() = {1,43,5,7,8}

Propiedades de los Array

Aunque tienen muchas propiedades, quizá la más usada, por ejemplo para recorrer arrays, sea length.

  • Length: longitud del array

Recorrer un array

Para recorrer un array podemos hacer uso de un bucle for de la siguiente manera

for x=0 to a.length-1
 console.writeline(a(x))
end for

dim x as Integer

for each x in a
 console.writelnine(x)
next

Ordenar arrays

Ordenar un array en Visual Basic .NET es sumamente fácil, sólo tendremos que utilizar el método sort

array.sort(a)

Copiar elementos de un array a otro

Usaremos el método copyto

dim a() as String={"hola","y","demas"}
dim b(a.Length-1) as string

a.copyto(b,0)

A este método se le pasa el array de destino y la posición en la que empieza

Cambiar tamaño, preservando sus elementos

Podemos agrandar los arrays manteniendo todos los elementos ya existentes, para ello podemos hacerlo de la siguiente manera.

redim preserve array(valor)

Arrays multidimensionales

En ellos, se usa más de un índice

array(m.n,...) podemos indicar hasta 32 dimensiones
dim a2(,) as integer
dim a3(,,) as integer
dim a4(3,1,5,2) as integer

Para inicializar un array con valores usamos la siguiente sintaxis

dim c2(,) as integer={  {1,2,3},{4,5,6} }
dim c3(,,) as integer={{{1,2},{3,4},{5,6}}, _
{{7,8},{9,10},{11,12}}, _
{{13,14},{15,16},{17,18}}, _
{{19,20},{21,22},{23,24}}}

Esta matriz de tres dimensiones tendrá una dimensión de 2, otra de 3 y otra de 4 (Se empieza a mirar con las llaves desde dentro hacia fuera)

Saber número de dimensiones de un array

Dentro de una dimensión, veamos hasta que valor llega, para ello usaremos getupperbound(dimension)

console.writeline("dimensiones c3:(?,,)={0},(?,)={1},(,,?={2}",c3.getupperbound(0),c3.getupperbound(1),c3.getupperbound(2))

Recorrer un array multidimensional

Se recorre de la misma manera que un array unidimensional pero con tantos for como dimensiones tenga.

dim i,j,k as integer
for i=0 to c3.getupperbound(0)
 for j=0 to c3.getupperbound(1)
  for k=0 to c3.getupperbound(2)
   console.writeline("el valorde c3({0},{1},{2}) es {3}",i,j,k, c3(i,j,k) )
  next
 next
next

Redimensionando matrices multidimensionales

Este proceso se hace en tiempo de ejecución por lo que si falla algo no nos daremos cuenta hasta que se esté ejecutando.

redim c3(3,2) -> este error si lo da en tiempo de diseño, pues intentamos meter una dimensión menos
redim c3(2,3,4) -> funciona bien

Por ejemplo, redim preserve c3(3,3,1) daría error en tiempo de ejecución, pues sólo se puede cambiar la dimensión más a la derecha y siempre hacia mayor, ya que queremos preservar los cambios

Podríamos poner la última dimensión a 0, esto sería equivalente a anularla, redim preserve c3(3,2,0)

Eliminar un array de memoria

Utilizaremos el comando erase indicando el array que queremos eliminar.

erase c3

Copiar array multidimensional en otro

Para ello usaremos el método copy a diferencia del otro que era copy

dim a3(,,) as integer
redim a3(c3.getupperbound(0),c3.getupperbound(1),c3.getupperbound(2))

array.copy(c3,a3,c3.length)

Artículos relacionados



Comentarios en Visual Basic .NET arrays y arrays multidimensionales

Hay 2 Comentarios en el artículo Visual Basic .NET arrays y arrays multidimensionales, ¿a qué esperas para dar tu opinión?


  1. muy buenos tus tutoriales E M I L I O,FELICDADES, Muchisimas Gracias

  2. chack dice:

    pero no esta como borrar un elemento de un array… T_T

Deja un comentario