Posted by :
Unknown
sábado, 9 de febrero de 2013
Matrices
Las matrices permiten hacer referencia por el mismo nombre a una serie de variables y usar un número(índice) para distinguirlas. Esto ayuda a crear código más pequeño y simple en muchas situaciones, ya que se puede establecer bucles que traten de forma eficiente cualquier número de casos mediante el número del índice. Las matrices tienen un límite superior e inferior y los elementos de la matriz son contiguos dentro de esos límites. Puesto que Visual Basic asigna espacio para cada número de índice, se debe evitar declarar las matrices de variables, declaradas en el código. Son distintas de las matrices de controles que se especifica en tiempo de diseño.
Todos los elementos de una matriz tienen el mismo tipo de datos. Por supuesto, cuando el tipo de dato en Variant, los elementos individuales pueden contener distintas clases de datos(objetos, cadenas, números, etc...). Se puede declarar una matriz de cualquiera de los tipos de datos fundamentales.
En Visual Basic hay dos tipos de matrices:
1) Las matrices de tamaño fijo: Que contienen siempre el mismo tamaño
2) Las matrices dinámicas: Cuyo tamaño cambia en tiempo de ejecución.
Las matrices dinámicas se describen con más detalle más adelante en la parte "Matrices Dinámicas".
Declarar matrices de tamaño fijo
Hay tres formas de declarar una matriz de tamaño fijo, dependiendo del alcance que desee que tenga la matriz:
1) Para declarar una matriz pública, se utiliza la instrucción Public en la sección de Declaraciones de un módulo para declarar la matriz.
2) Para crear una matriz a nivel de módulo, se utiliza la instrucción Private en la sección Declaraciones de un módulo para declarar la matriz.
3) Para crear la matriz local, se utiliza la instrucción Private en un procedimiento para declarar la matriz.
Establecer los límites superior e interior
Cuando se declara una matriz, se pone a continuación del nombre de la matriz el limite superior entre paréntesis. El limite superior no puede exceder el intervalo de un tipo de dato. Por ejemplo, estas declaraciones de matrices pueden aparecer en la sección Declaraciones de un módulo:
Dim Contadores(14) As Integer '15 elementos
Dim Sumas(20) As Double '21 elementos
Para crear una matriz pública, simplemente se utiliza Public en lugar de Dim:
Public Contadores(14) As Integer
Public Sumas(20) As Double
Las mismas declaraciones dentro de un procedimiento utilizan Dim:
Dim Contadores(14) As Integer
Dim Sumas(20) As Double
La primera declaración crea una matriz de 15 elementos, con números de índice que van de 0 a 14. La segunda crea una matriz de 21 elementos, con números de índice que van de 0 a 20. El limite inferior predeterminado es 0.
Para especificar el limite inferior, hay que proporcionarlo mediante la palabra clave To:
Dim Contadores(1 To 15) As Integer
Dim Sumas(100 To 120) As Integer
En las anteriores declaraciones, los números de indice de Contadores van de 1 a 15 y los números de indice de Sumas van de 100 a 120.
Matrices Multidimensionales
A veces se necesitará hacer un seguimiento de la información relacionada de una matriz. Por ejemplo, para hacer un seguimiento de cada pixel de la pantalla del equipo, es necesario referirse a sus coordenadas X e Y. Esto se puede hacer mediante una matriz multidimensional para almacenar los valores.
En Visual Basic se puede declarar matrices de varias dimensiones. Por ejemplo, la instrucción siguiente declara una matriz bidimensional de 10 por 10 en un procedimiento:
Static MatrizA(9, 9) As Double
Se pude declara una o ambas dimensiones con limites inferiores explícitos:
Static MatrizA(1 To 10, 1 To 10) As Double
Se puede hacer que tenga más de dos dimensiones. Por ejemplo:
Dim MultiD(3, 1 To 10, 1 To 15)
Esta declaración crea una matriz que tiene tres dimensiones con tamaños de 4 por 10 por 15. El número total de elementos es el producto de la tres dimensiones, es decir, 600.
Usar bucles para manipular matrices
Se puede procesar eficientemente una matriz multidimensional mediante bucles For anidados. Por ejemplo, estas instrucciones inicializan cada elemento de Matriz_A aun valor basándose en su ubicación en la matriz:
Dim Posicion As Integer, Indice As Integer
Static MATRIZ_A(1 To 10, 1 To 10) As Double
For Posicion = 1 To 10
For Indice = 1 To 10
MATRIZ_A(Posicion, Indice) = Posicion * 10 + Indice
Next Indice
Next Posicion
Matrices Dinámicas
A veces se necesitará saber exactamente lo grande que debe ser una matriz. Puede que se desee poder cambiar el tamaño de la matriz en tiempo de ejecución. Una matriz dinámica puede cambiar de tamaño en cualquier momento. Las matrices dinámicas son una de las características más flexibles y cómodas de Visual Basic, y ayudan a administrar de forma eficiente la memoria. Por ejemplo, se puede usar un a matriz grande durante un tiempo corto y liberar memoria del sistema cuando no se necesite volver a usar la matriz. La alternativa consiste en declarar la matriz con el mayor tamaño posible y pasar por alto los elementos de la matriz que no necesite. Sin embargo, esta solución, si se utiliza demasiado, puede hacer que el sistema operativo funcione con muy poca memoria.
Para crear una matriz dinámica
Se declara la matriz con la instrucción Public (Si desea que la matriz sea pública), la instrucción Dim a nivel de módulo (Si desea que sea una matriz a nivel de módulo), o con la instrucción Static o Dim en un procedimiento (Si desea que la matriz sea local).
1) Declare la matriz como dinámica proporcionándole una lista de dimensiones vacía.
Formula:
'Sin declarar la cantidad de elementos a almacenar, es decir, ( ) <---vacio b="">---vacio>
Dim Nombre De La Matriz Dinámica( )
Ejemplo:
Dim MatrizDyn( )
2) Asigne el número real de elementos con la instrucción ReDim
Formula:
ReDim Nombre De La Matriz Dinámica(Nombre De La Variable + Valor)
Ejemplo:
ReDim MatrizDyn(X + 1)
La instrucción ReDim puede aparecer sola en un procedimiento. A diferencia de las instrucciones Dim y Static, ReDim es una instrucción ejecutable; hace que la aplicación realice una acción en tiempo de ejecución.
La instrucción ReDim acepta la misma sintaxis que se utiliza en las matrices fijas. Cada ReDim puede cambiar el número de elementos, así como los límites inferior y superior de cada dimensión. Sin embargo, no se puede cambiar el número de dimensiones de la matriz.
ReDim MatrizDyn(4 + 12)
Por ejemplo, la matriz dinámica Matriz1 se crea declarándola primero a nivel de módulo:
Dim Matriz1( ) As Integer
Luego, un procedimiento asigna el espacio de la matriz:
Sub CalculoDeValoresAhora( )
'
'
'
ReDim Matriz1(19, 29)
End Sub
La instrucción ReDim mostrada aquí asigna una matriz de 20 por 30 enteros (con un tamaño total de 600 elementos). Como alternativa, se pueden establecer los límites de una matriz dinámica mediante variables:
ReDim Matriz1(X, Y)
Preservar el contenido de las matrices dinámicas
Cada vez que ejecute la instrucción ReDim perderá todos los valores almacenados en ese momento en la matriz. Visual Basic restablece los valores al valor Empty (En matrices Variant), a cero (En matrices numéricas), a una cadena de longitud cero (En matrices de cadenas) o a Nothing (En matrices de objetos). Esto resulta muy útil cuando se desea preparar la matriz para contener datos nuevos o cuando se desea reducir el tamaño de la matriz para que ocupe menos memoria. Puede que a veces se desee cambiar el tamaño de la matriz sin perder los datos de la misma. Para ello puede usar ReDim con la palabra clave Preserve. Por ejemplo, se puede ampliar una matriz en un elemento sin perder los valores de los elementos existentes mediante la función UBound para hacer referencia al limite superior.
Formula:
ReDim Preserve Nombre De La Matriz (UBound(Nombre De La Matriz) + Valor)
ReDim Preserve MatrizDyn(UBound(MatrizDyn) + 1)
Sólo se puede cambiar el limite superior de la última dimensión de una matriz múltidimensional cuando se utiliza la palabra clave Preserve; si se cambia alguna otra dimensión o el límite inferior de la última dimensión, se producirá un error en tiempo de ejecución. Así pues, puede usarse un código como el siguiente:
Formula:
ReDim Preserve Nombre De La Matriz(Valor, UBound(Nombre De La Matriz, Valor) + Valor)
Ejemplo:
ReDim Preserve Matriz(10, UBound(Matriz, 2) + 1)
Pero no se puede usar este código:
ReDim Preserve Matriz(UBound(Matriz, 1) + 1, 10)
Información relacionada
- Ir a inicio »
- Visual Basic 6.0 »
- Matrices en Visual Basic 6.0
No entiendo
ResponderEliminar¿Que no entiendes?
Eliminarhola te hago una consulta estoy creando matrices de longitud fija, pero necesito crearla de manera dinamica, me explico a travez de un input box el usuario me debe ingresar el numero de matrices que debo crear. como puedo hacer esto
ResponderEliminar