Matrices multidimensionales
Dim Nombre_Matriz( Tamaño As Integer, Tamaño As Integer) As Tipo
Esta matriz tiene dos dimensiones definidas por las variables que contiene el paréntesis que sigue al nombre de la matriz. Podría tener todas las dimensiones que deseáramos, pero cuantas más tenga, más complejo es su manejo, lo que no implica que no pueda ser de utilidad en determinadas circunstancias (1).
Una matriz bidimensional se puede entender como una tabla de una hoja de cálculo como, por ejemplo...
... que sería la representación de una matriz tridimensional (mMatriz(2,2)). La forma de introducir valores y acceder a cada uno de ellos sería como sigue:
Sub MatrizMulti1
Dim mDatos( 2, 2 ) As String
'Asociamos contendidos a los índices
mDatos( 0, 0 ) = "Casa"
mDatos( 0, 1 ) = "Puerta"
mDatos( 0, 2 ) = "Ventana"
mDatos( 1, 0 ) = "Animal"
mDatos( 1, 1 ) = "Perro"
mDatos( 1, 2 ) = "Gato"
mDatos( 2, 0 ) = "Trabajo"
mDatos( 2, 1 ) = "Sodador"
mDatos( 2, 2 ) = "Fontanero"
'Mostramos algunos datos
MsgBox mDatos( 0, 0 ) & " - " & mDatos( 0, 1 )
MsgBox mDatos( 1, 0 ) & " - " & mDatos( 1, 1 )
MsgBox mDatos( 2, 0 ) & " - " & mDatos( 2, 1 )
End Sub
Como puedes ver, he creado una matriz tridimensional (Dim mDatos( 2, 2 ) As String) a la que he dado contenido siguiendo la lógica de campos semánticos cuyo término superior sitúo en la "columna" 0 (mDatos( 0, 0 ) = "Casa" -> Palabras asociadas al campo semántico "Casa") y dos ejemplos de términos asociados a dicho campo semántico en las columnas 1 y 2 (mDatos( 0, 1 ) = "Puerta" y mDatos( 0, 2 ) = "Ventana").
Este ejemplo te puede dar una idea de posible uso: crear una base de datos que asocia un identificador con un determinado contenido. Por ejemplo: NIE (Id), Nombre y Apellidos de una lista de alumnos.
En este caso, la matriz a declarar tendía tres columnas y tantas filas como alumnos quisiéramos incluir en nuestra "base de datos" (6 en el ejemplo que sigue)
Sub MatrizMulti2
Dim mDatos( 5, 2 ) As String
Dim i As Integer
'Introducimos los datos
mDatos( 0, 0 ) = "123456"
mDatos( 0, 1 ) = "Roberto"
mDatos( 0, 2 ) = "Marcial Pérez"
mDatos( 1, 0 ) = "123865"
mDatos( 1, 1 ) = "Maria"
mDatos( 1, 2 ) = "Martinez Sanz"
mDatos( 2, 0 ) = "123907"
mDatos( 2, 1 ) = "Adela"
mDatos( 2, 2 ) = "Decastro Morán"
mDatos( 3, 0 ) = "1124156"
mDatos( 3, 1 ) = "Antonio"
mDatos( 3, 2 ) = "Hernández Jiménez"
mDatos( 4, 0 ) = "124245"
mDatos( 4, 1 ) = "Matías"
mDatos( 4, 2 ) = "Luján López"
mDatos( 5, 0 ) = "124596"
mDatos( 5, 1 ) = "Amalia"
mDatos( 5, 2 ) = "Desantos Melquiadez"
' Y los mostramos
For i = 0 To 5
MsgBox mDatos( i, 0 ) & " - " & mDatos( i, 1 ) & " " & mDatos( i, 2 )
Next
End Sub
Este script reproduce la tabla precedente. Se basa en una matriz multidimensional (Dim mDatos( 5, 2 ) As String) cuya primera dimensión (5) indica el número de filas (6 alumnos ) y la segunda (2) el número de de columnas (3 datos por cada alumno). Refleja el potencial de este tipo de matrices para el trabajo con tablas y sugiere posibles usos muy interesantes (2)
NOTAS
(2) Cierto que es posible trabajar con tablas empleando matrices unidimensionales, pero necesitamos una matriz por columna, lo que en el ejemplo anterior supone utilizar tres matrices. En tablas de dimensiones limitadas, como la del ejemplo, el uso de matrices unidimensionales no parece ser una mala opción, pero si la tabla tuviera muchas más columnas, crear tantas matrices (unidimensionales) como columnas (campos) tuviera la tabla complicaría considerablemente la creación del script y entorpecería su funcionamiento. El uso de una matriz multidimensional (bidimensional, en realidad) facilitaría sustancialmente el trabajo, compensando la mayor dificultad de uso que presenta.
No hay comentarios:
Publicar un comentario
Comenta esta entrada