You are on page 1of 6

Matrices en Visual Basic

Una matriz es un conjunto de valores relacionados lgicamente entre s, como el nmero de


estudiantes de cada curso en una escuela primaria.
Mediante una matriz, puede hacer referencia a estos valores relacionados con el mismo
nombre, y utiliza un nmero que se denomina un ndice o subndice para distinguirlos. Los
valores individuales se llaman elementos de la matriz. Contiguos desde el ndice 0 hasta el
valor de ndice superior.
A diferencia de una matriz, una variable que contiene un nico valor se llama variable
escalar.

Elementos de la matriz en una matriz de Simple


En el ejemplo siguiente se declara una variable de matriz para que contenga el nmero de
estudiantes de cada curso en una escuela primaria.
VB
Dim students (6) As Integer

La matriz students del ejemplo anterior contiene siete elementos. Los ndices de los elementos van
de 0 a 6. Tener esta matriz es ms fcil que declarar siete variables.
En la siguiente ilustracin se muestra la matriz students. Para cada elemento de la matriz:

El ndice del elemento representa el curso (el ndice 0 representa el jardn de infancia).

El valor contenido en el elemento representa el nmero de estudiantes en ese curso.

Elementos de la matriz "students"

En el ejemplo siguiente se muestra cmo hacer referencia al primer, segundo y ltimo elemento de
la matriz students.
VB
Dim kindergarten As Integer = students (0)
Dim firstGrade As Integer = students (1)
Dim sixthGrade As Integer = students (6)
MsgBox ("Students in kindergarten = " & CStr (kindergarten))
MsgBox ("Students in first grade = " & CStr (firstGrade))
MsgBox ("Students in sixth grade = " & CStr (sixthGrade))

Puede hacer referencia a la matriz en conjunto utilizando simplemente el nombre de la variable de


la matriz sin ndices.
La matriz students en el ejemplo anterior utiliza un ndice y se unidimensional. Una matriz que
utiliza ms de un ndice o subndice se denomina multidimensional. Para obtener ms informacin,
vea el resto de este tema y Dimensiones de matrices en Visual Basic.

Crear una matriz


Puede definir el tamao de una matriz de varias maneras. Puede proporcionar el tamao cuando se
declara la matriz, como se muestra en el ejemplo siguiente.
VB
Dim cargoWeights (10) As Double
Dim atmospherePressures (2, 2, 4, 10) As Short
Dim inquiriesByYearMonthDay (20)()() As Byte

Tambin puede utilizar una clusula de New para proporcionar el tamao de una matriz cuando ha
creado, como se muestra en el ejemplo siguiente.
VB
CargoWeights = New Double (10) {}
AtmospherePressures = New Short (2, 2, 4, 10) {}
InquiriesByYearMonthDay = New Byte (20)()() {}

Si se tiene una matriz existente, se puede volver a definir su tamao utilizando la instruccin
Redim. Puede especificar que la instruccin de Redim debe mantener los valores que estn en la

matriz, o que cree una matriz vaca. En el ejemplo siguiente se muestran usos diferentes de la
instruccin Redim para modificar el tamao de una matriz existente.
VB
Assign a new array size and retain the current element values.
ReDim Preserve cargoWeights (20)
Assign a new array size and retain only the first five element values.
ReDim Preserve cargoWeights (4)
Assign a new array size and discard all current element values.
ReDim cargoWeights (15)

Para obtener ms informacin, vea Instruccin ReDim (Visual Basic).

Declarar una matriz


Una variable de matriz se declara de la misma manera que cualquier otra variable mediante la
instruccin Dim. Sigue el tipo o el nombre de variable con uno o ms pares de parntesis para
indicar que contenga una matriz en lugar de un escalar, que es una variable que contiene un nico
valor.
Despus de declarar la matriz, puede definir su tamao utilizando Instruccin ReDim (Visual
Basic).
El ejemplo siguiente declara una variable de matriz unidimensional agregando un par de parntesis
despus del tipo. El ejemplo tambin se especifica las dimensiones de la matriz utilizando
Instruccin ReDim (Visual Basic).
VB
Declare a one-dimensional array.
Dim cargoWeights As Double ()
Dimension the array.
ReDim cargoWeights (15)

El ejemplo siguiente declara una variable de matriz multidimensional agregando un par de


parntesis despus del tipo y colocando comas entre parntesis para separar las dimensiones. El
ejemplo tambin se especifica las dimensiones de la matriz utilizando Instruccin ReDim (Visual
Basic).
VB
Declare a multidimensional array.

Dim atmospherePressures As Short (,,,)


Dimension the array.
ReDim atmospherePressures (1, 2, 3, 4)

Para declarar una variable de matriz escalonada, agregue un par de parntesis despus del nombre
de la variable para cada nivel de matriz anidados.
VB
Dim inquiriesByYearMonthDay ()()() As Byte

Los ejemplos anteriores se declaran variables de matriz pero no se les asignan matrices. Debe crear
una matriz, inicializarla y asignarla a la variable.

Almacenar valores en una matriz


Se puede tener acceso a cada ubicacin en una matriz utilizando un ndice de tipo Integer. Se
pueden almacenar y recuperar valores en una matriz haciendo referencia a cada ubicacin de la
matriz utilizando su ndice entre parntesis. Los ndices de matrices multidimensionales estn
separados por comas (,). Se necesita un ndice para cada dimensin de la matriz. El ejemplo
siguiente muestra algunas instrucciones que almacenan valores en matrices.
VB
Dim i = 4
Dim j = 2
Dim numbers (10) As Integer
Dim matrix (5, 5) As Double
Numbers (i + 1) = 0
Matrix (3, j * 2) = j

El ejemplo siguiente muestra algunas instrucciones que reciben valores de las matrices.
VB
Dim v = 2
Dim i = 1
Dim j = 1
Dim k = 1
Dim wTotal As Double = 0.0

Dim sortedValues (5), rawValues (5), estimates (2, 2, 2) As Double


Dim lowestValue = sortedValues (0)
WTotal += (rawValues (v) ^ 2)
Dim firstGuess = estimates (i, j, k)

Rellenar una matriz con valores iniciales


Utilizando un literal de matriz, puede crear una matriz que contiene un conjunto inicial de valores.
Un literal de matriz est formado por una lista de valores separados por comas que se encierran
entre llaves ({}).
Cuando se crea una matriz utilizando un literal de matriz, se puede proporcionar el tipo de la matriz
o usar la inferencia de tipos para determinarlo. El cdigo siguiente muestra ambas opciones.
VB
Dim numbers = New Integer () {1, 2, 4, 8}
Dim doubles = {1.5, 2, 9.9, 18}

Cuando se utiliza la inferencia de tipos, el tipo dominante determina el tipo de matriz en la lista de
valores que se proporciona para el literal de matriz. El tipo dominante es un tipo nico al que todos
los dems tipos del literal de matriz se pueden ampliar. Si no se puede determinar este tipo nico, el
tipo dominante es el tipo nico al que los dems tipos de la matriz se pueden restringir. Si no se
puede determinar ninguno de estos tipos nicos, el tipo dominante es Object. Por ejemplo, si la lista
de valores que se proporciona al literal de matriz contiene valores de Integer con tipo, de Long, y de
Double, la matriz resultante es de Double escrito. Integer y Long amplan slo a Double. Por
consiguiente, Double es el tipo dominante. Para obtener ms informacin, vea Conversiones de
ampliacin y de restriccin (Visual Basic). Estas reglas de inferencia se aplican a los tipos que se
infieren para las matrices que son variables locales que se definen en un miembro de clase. Aunque
puede utilizar literales de matriz al crear variables de nivel de clase, no puede utilizar la inferencia
de tipos en el nivel de clase. Como resultado, los literales de matriz que se especifican en el nivel de
clase deducen los valores que se proporcionan para el literal de matriz como Object escrito.
Puede especificar explcitamente el tipo de los elementos de una matriz que se crea utilizando un
literal de matriz. En este caso, los valores del literal de matriz se deben ampliar al tipo de los
elementos de la matriz. En el ejemplo de cdigo siguiente se crea una matriz de tipo Double a partir
de una lista de enteros.
VB
Dim values As Double () = {1, 2, 3, 4, 5, 6}

Literales de matriz anidados

Se puede crear una matriz multidimensional utilizando los literales de matriz anidados. Los literales
de matriz anidados deben tener una dimensin y un nmero de dimensiones, o rango, que es
coherente con la matriz resultante. En el ejemplo de cdigo siguiente se crea una matriz
bidimensional de enteros utilizando un literal de matriz.
VB
Dim grid = {{1, 2}, {3, 4}}

En el ejemplo anterior, se producira un error si no coincide con el nmero de elementos en los


literales de matriz anidados. Tambin se producira un error si se explcitamente que la variable de
matriz para estar distinto de bidimensional.
Nota
Para evitar que se produzca un error al proporcionar literales de matriz anidados de dimensiones
diferentes, se deben encerrar entre parntesis los literales de matriz internos. Los parntesis fuerzan
la expresin literal de matriz que se evaluar, y los valores resultantes se utilizan con el literal de
matriz externo, como muestra el cdigo siguiente.
VB
Dim values = {({1, 2}), ({3, 4, 5})}

Cuando se crea una matriz multidimensional utilizando literales de matriz anidados, se puede
utilizar la inferencia de tipos. Cuando se utiliza la inferencia de tipos, el tipo deducido es el tipo
dominante para todos los valores de todos los literales de matriz en un nivel de anidamiento. En el
ejemplo de cdigo siguiente, se crea una matriz bidimensional de tipo Double a partir de valores
que son de tipo Integer y Double.
VB
Dim a = {{1, 2.0}, {3, 4}, {5, 6}, {7, 8}}

Bibliografa:
http://msdn.microsoft.com/es-es/library/wak0wfyt.aspx

You might also like