Resumen: Entrega nº11 del curso Aprender a programar en Visual Basic desde cero.
Codificación aprenderaprogramar.com: CU00312A

 

 

ARRAYS (ARREGLOS) MULTIDIMENSIONALES VISUAL BASIC

Tal y como explicamos en su momento, será posible crear arrays con más de una dimensión, pasando de la idea de lista, vector o matriz de una sola fila a la idea de matriz de m x n elementos, estructuras tridimensionales, tetradimensionales... La sintaxis será:

Visual Basic

 

Dim [Nombre del array]([dimensión1, dimensión2, ...]) As [Tipo de variable]

 

 

Si no se declara el tipo de variable el array será tipo Variant u Object (según la versión de Visual Basic que utilicemos) por defecto. Conviene tener cuidado con esto y seguir las mismas pautas que hemos indicado para las variables. La declaración de una matriz tradicional de m x n elementos podría ser:

    Dim A(3, 2) As Integer

 

 

El número de elementos declarados se calcula teniendo en cuenta que la numeración de los índices empieza en cero, aunque ya hemos comentado que en algunas versiones existe una cláusula denominada Option Base que permite fijar como primer índice de los arrays el uno. En las versiones más recientes de Visual Basic (o con Option Base fijado en cero) tendremos una fila cero y una columna cero para la matriz declarada, con lo que el número de elementos será de 4 x 3 = 12. Decimos que hay 4 filas que son 0, 1, 2, 3 y tres columnas que son 0, 1, y 2. Si la versión de Visual Basic lo permite y fijamos Option Base en uno, la matriz será de 3 filas (1, 2 y 3) y dos columnas (1 y 2) siendo por tanto el número de elementos 3 x 2 = 6

Vamos a definir una matriz, array o arreglo de dos dimensiones a modo de ejemplo: queremos almacenar en una matriz el número de alumnos con que cuenta una academia ordenados en función del nivel y del idioma que se estudia. Tendremos 3 filas que representarán Nivel básico, medio o de perfeccionamiento y 4 columnas que representarán los idiomas (1 = Inglés, 2 = Francés, 3 = Alemán y 4 = Ruso). La declaración de dicha matriz sería:

 
Dim Alumnosfxniveleidioma(3, 4)

 

 
Podríamos asignar contenidos de la siguiente manera:
 
Alumnosfxniveleidioma(1, 1) = 7
Alumnosfxniveleidioma(1, 2) = 14
Alumnosfxniveleidioma(1, 3) = 8
Alumnosfxniveleidioma(1, 4) = 3
Alumnosfxniveleidioma(2, 1) = 6
Alumnosfxniveleidioma(2, 2) = 19
Alumnosfxniveleidioma(2, 3) = 7
Alumnosfxniveleidioma(2, 4) = 2
Alumnosfxniveleidioma(3, 1) = 3
Alumnosfxniveleidioma(3, 2) = 13
Alumnosfxniveleidioma(3, 3) = 4
Alumnosfxniveleidioma(3, 4) = 1
 

 

Los elementos de índice cero no los estamos utilizando, aunque podríamos hacerlo si quisiéramos.

La representación gráfica que podríamos asociar a esta asignación de datos sería esta matriz:

matriz visual basic

 

 

La organización de la información en matrices nos generará importantes ventajas a la hora del tratamiento de datos en nuestros programas.

Para terminar en cuanto a multidimensionalidad, veamos casos de declaraciones con más de dos dimensiones. Para ello tomaremos como ejemplo el conteo del número de coches que pasan por una vía en un periodo de tiempo. La forma de declarar esos array sería la siguiente (hemos considerado que usamos el tipo de datos Integer para almacenar la información):

 
Duración del conteo
Tipo de array
Declaración con Visual Basic
(Nc es Númerodecoches)
Un día
Array de un localizador (hora)
Dim Nc(24) As Integer
Varios días
Array de dos localizadores          (hora y día)
Dim Nc(24, 31) As Integer
Varios meses
Array de tres localizadores        (hora, día y mes)
Dim Nc(24, 31, 12) As Integer
Varios años
Array de cuatro localizadores    (hora, día, mes y año)
Dim Nc(24, 31, 12, 2999) As Integer
Varios siglos
Array de cinco localizadores     (hora, día, mes, año y siglo)
Dim Nc(24, 31, 12, 2999, 21) As Integer

 

Nota: en este ejemplo estamos considerando que no vamos a usar los índices cero de los arrays, pero podríamos hacerlo, de hecho es habitual.

Veamos lo que sería un ejemplo de programa con array multidimensional, en este caso usando un tipo String.

 

     Para versiones de VB menos recientes:                                   Para versiones de VB más recientes:

Rem Curso Visual Basic aprenderaprogramar.com

Option Explicit

Dim Nombrealumno(5, 25) As String

Private Sub Form_Load()

Nombrealumno(3, 24) = "Pedro Hernández González"

MsgBox ("El alumno número 24 del curso tercero se llama " & Nombrealumno(3, 24))

End Sub

REM Curso Visual Basic aprenderaprogramar.com

Option Explicit On

Public Class Form1

Dim Nombrealumno(5, 25) As String

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Nombrealumno(3, 24) = "Pedro Hernández González"

        MsgBox("El alumno número 24 del curso tercero se llama " & Nombrealumno(3, 24))

    End Sub

End Class

 

 

Ten en cuenta que puede haber pequeñas diferencias en cuanto a la sintaxis a emplear según la versión de Visual Basic que utilices. El resultado del programa es que se muestra el mensaje “El alumno número 24 del curso tercero se llama Pedro Hernández González”.

 

 

 

 

 

 

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link:  Ver curso completo.
 
Para  hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

Descargar archivo: