Unidad 34. Arrays en VB (II)





34.4. Recorrido.

Para recorrer el vector podemos usar cualquiera de los dos sistemas, el de recorrerlo como una colección.

 

Module Ejemplo

  Sub Main()

    ' Declaración e inicialización del vector con los

    ' nombres de los meses, de tipo string

    Dim Meses() As String = {"Enero", "Febrero", "Marzo", _

                             "Abril", "Mayo", "Junio", _

                             "Julio", "Agosto", "Septiembre", _

                             "Octubre", "Noviembre", "Diciembre"}

    ' Declaramos la variable del mismo tipo para poder

    ' recorrer el vector

    Dim Valor As String

 

    Console.WriteLine("Visualizamos el contenido")

    ' Visualizamos el vector

    For Each Valor In Meses

      Console.WriteLine(Valor)

    Next

    Console.ReadLine() 

  End Sub

End Module

 

Pero también se puede seguir haciendo lo clásico, con la función Ubound, aunque ahora también hay un método del objeto Meses, que se llama GetUpperBound.

 

Y también podemos utilizar los siguientes métodos, en lugar del X=0 to 11, o to Ubound(meses)

 

For X=Meses.GetLowerBound(0) To Meses.GetUpperBound(0)

 

O bien

 

For X = 0 To UBound(Meses)

 

Module Ejemplo

Sub Main()

  ' Declaración e inicialización del vector con los

  ' nombres de los meses, de tipo string

  Dim Meses() As String = {"Enero", "Febrero", "Marzo", _

                           "Abril", "Mayo", "Junio", _

                           "Julio", "Agosto", "Septiembre", _

                           "Octubre", "Noviembre", "Diciembre"}

  Dim X As Int16

  Dim Valor As String

 

  Console.WriteLine("Visualizamos el contenido")

 

  ' Mostramos lo valores

  For X = 0 To UBound(Meses)

    Console.WriteLine(Meses(X))

  Next

 

  For X=Meses.GetLowerBound(0) To Meses.GetUpperBound(0)

    Console.WriteLine(Meses(X).ToString)

  Next

 

  Console.ReadLine() 

  End Sub

End Module

 

Visto como se recorre el vector, veamos como se hace con una matriz, o un array de dos dimensiones.

Como principio, hay que indicar que una matriz necesita para recorrerse tantos contadores como dimensiones tiene, es decir tres dimensiones, tres contadores.

 

En el ejemplo utilizamos una matriz de dos dimensiones.

Veamos primero como cargar datos, usando una generación aleatoria de números.

 

Module Ejemplo

 Sub Main()

    ' Declaración e inicialización

    Dim M(3, 4) As Integer  ‘ veinte elementos

    Dim X As Integer

    Dim Y As Integer

 

    Randomize()   ' inicializar el generador de números aleatorios

 

    ' generar la matriz

    X = 0

    Do

      Y = 0

      Do

        M(X, Y) = CInt(Int((6 * Rnd()) + 1))

        Y = Y + 1

      Loop Until Y > UBound(M, 2)

      X = X + 1

    Loop Until X > UBound(M, 1)

  End Sub

End Module

Una vez cargada la matriz para que tenga datos, vemos el uso completo carga y visualización.

 

Module Ejemplo

 Sub Main()

    ' Declaración

    Dim M(3, 4) As Integer  ‘ veinte elementos 4 x 5

    Dim X As Integer

    Dim Y As Integer

 

    Randomize()   ' inicializar el generador de números aleatorios

 

    ' generar la matriz

    X = 0

    Do

      Y = 0

      Do

        M(X, Y) = CInt(Int((6 * Rnd()) + 1))

        Y = Y + 1

      Loop Until Y > UBound(M, 2)    ‘ columnas

      X = X + 1

      Console.WriteLine()

    Loop Until X > UBound(M, 1)    ‘ filas

 

    Console.WriteLine("Visualizamos el contenido")

 

    ' Mostramos lo valores

    X = 0

    Do

      Y = 0

      Do

        Console.WriteLine("Fila {0} Columna {1} Valor {2} ", X, Y, M(X, Y))

‘        Console.Write("  " & M(X, Y))

        Y = Y + 1

      Loop Until Y > UBound(M, 2)    ‘ columnas

      X = X + 1

      Console.WriteLine()

    Loop Until X > UBound(M, 1)    ‘ filas

  End Sub

End Module

 

En principio ésta es una forma de recorrer la matriz sin colocar en las condiciones del bucle el número de filas o de columnas de la matriz, que suele ser el formato normal, igual que se ha hecho para recorrer el vector podemos hacer con una matriz

 

  Loop Until Y > UBound(M, 1)    ‘ filas

 

para las filas, la primera dimensión, 1.

 

  Loop Until Y > UBound(M, 2)    ‘ columnas

 

para las columnas, la segunda dimensión, 2.

 

De ésta forma el bucle se ejecutará correctamente siempre independientemente del número de elementos del array.

Evidentemente la sintaxis que sigue también es correcta.

 

while (y < 5)

Loop Until Y > 5   

 

En los ejemplos, por costumbre, se ha recorrido la matriz por filas, pero no hay nada que impida que se recorra por columnas.

Octubre-2010
Pág. 34.2

Atrás  Inicio  Adelante






Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies