Está en la página 1de 19

Arreglos y vectores

Los Arreglos se utilizan para almacenar un conjunto de variables, que sean


del mismo tipo de dato, y todas estas bajo un mismo nombre.
Por ejemplo imaginemos que tenemos 20 variables de tipo String que
almacenan nombres (nombre1, nombre2, etc..). si yo ahora quisiera pasar
todas estas cadenas a minsculas tendra que utilizar la funcin Lcase con
cada variable: nombre1 = Lcase(nombre1), nombre2 = Lcase(nombre2),
etc..
En cambio si utilizara un arreglo solucionara mi problema solo a esto

Dim nombres(30) As String

For x = 0 To 30

nombres(x) = LCase(nombres(x))

Next

Siguiendo el ejemplo anterior: en vez de escribir la sentencia Lcase 30 veces


para cada variable, hemos utilizado un arreglo llamado nombres con un
nmero de ndice 30 , es decir que almacena 30 datos de tipo String
Declaracin de los arreglos en el cdigo
Para crear un arreglo se debe en primer lugar declararlo como cualquier otra
variable, la nica diferencia es que debemos indicar la cantidad de elementos
que contendr el arreglo, colocando el nmero de ndice entre parntesis. Por

ejemplo :

Lo siguiente crea un arreglo de 15 elementos o datos de tipo integer

Dim miArreglo (1 to 15) as integer

Esto crea un arreglo de 11 elementos o datos de tipo String

Dim empleados (10) as String

Como podemos ver en el primer ejemplo hemos declarado un arreglo


llamado miArreglo y entre parntesis hemos declarado el rango de
capacidad del mismo, es decir la cantidad de datos que podr contener
El primer nmero , el 1 , indica el lmite inferior del mismo, y el nmero 15
indica el lmite mximo del arreglo, conformando de esta manera un arreglo
que podr almacenar 15 datos de tipo string.
En el segundo ejemplo, declaramos un arreglo de 11 elementos de tipo string.
Como pods ver hemos indicado solo un nmero que representa el valor
mximo del mismo. Cabe aclarar que hemos puesto de ndice el nmero 10,
pero en realidad el arreglo contiene 11 elementos ya que cuando NO
indicamos el limite inferior , se asume que el mismo comienza desde el 0.
Importante:

los

las matrices.

Los

arreglos
vectores

se

dividen

son

en

arreglos

grupos,

que

los vectores y

contienen una

sola

dimensin y las matrices 2 o mas dimensiones.


Acceder a los datos de un arreglo
Para acceder a los datos de un arreglo o vector, debemos hacerlo mediante
el ndice o nmero del elemento del mismo. Por ejemplo:

Dim alumnos(1 To 4) As String


alumnos(1) = "juan"
alumnos(2) = "micaela"

alumnos(3) = "mara"
alumnos(4) = "ignacio"

Primero declaramos un arreglo llamado alumnos, de tipo string y que


contendr 4 elementos. Luego le asignamos un valor de cadena como a
cualquier otra variable de tipo string, pero con la diferencia que para
referirnos al elemento utilizamos el n de ndice del mismo.
Otro ejemplo

Dim paises(2) As String

' Llena el vector con datos


paises(0) = "Argentina"
paises(1) = "Per"
paises(2) = "Brasil"

' Recorre los elementos del vector


For x = 0 To 2

MsgBox "Nombre del pas : " & paises(x)

Next x

En este ltimo ejemplo, declaramos y creamos un vector de 3 elementos que


contendr el nombre de 3 pases. Luego en un bucle For utilizamos la funcin
MsgBox para mostrar los elementos del arreglo, pasndole como parmetro
del ndice la variable x del bucle For

Utilizar una estructura Type o UDT en un arreglo


Como vimos, en un arreglo podemos almacenar datos de cualquier tipo pero
no mezclarlos, es decir podemos crear arreglos de tipo string, de tipo Integer
etc,,, pero sin duda que lo mas importante y de mas utilidad a la hora de
programar es la utilizacin de datos definidos por nosotros mediante una
estructura Type
Por ejemplo:

Option Explicit
' Estructura de dato para el vector
Private Type agenda

nombre As String
apellido As String
cpostal As Integer

End Type

' Declaramos el vector


Dim personas(1 To 3) As agenda

Private Sub Form_Load()


' Llenamos con datos para el elemento 1 del arreglo

personas(1).nombre = "carlos"
personas(1).apellido = "Martnez"
personas(1).cpostal = 1900

' Llenamos con datos para el elemento 2 del arreglo

personas(2).nombre = "Hctor"
personas(2).apellido = "rosales"
personas(2).cpostal = 1898

' Llenamos con datos para el elemento 3 del arreglo

personas(3).nombre = "Albert"
personas(3).apellido = "Einstein"
personas(3).cpostal = 1324

End Sub

Para utilizar una estructura definida por nosotros en vectores o matrices, se


hace de la forma habitual, con la diferencia que debemos declarar el arreglo
utilizando el tipo de dato Type que hayamos creado, en este caso Dim
personas(1 to 3) as agenda
Las matrices
Como se dijo anteriormente, las matrices son arreglos de mas de 1 dimensin
(2 o mas), a diferencia de los vectores que poseen una sola dimensin.
Podemos imaginar una matriz bidimensional ( 2 dimensiones) , como una
cuadrcula con filas y columnas, donde las filas representaran las
coordenadas x y las columnas las coordenadas y.

A una matriz de 3 dimensiones o tridimensional se la puede imaginar con las


coordenadas x, y, z, y esta es ideal para representar figuras en el espacio por
ejemplo.
Las matrices se declaran en el cdigo de manera igual que los vectores, con
la diferencia que debemos indicar mas subndices de acuerdo a la
cantidad de dimensiones que posea la matriz.
por lo general no se suele utilizar matrices de mas de 3 dimensiones..
Ejemplo de matriz de 2 dimensiones
Matriz bidimensionales de 6 x 8 (de 2 dimensiones).

Dim personas (1 to 6, 1 to 8) as string

Si luego quisiera acceder a los datos de la misma basta con referirnos a los
subndices
Por ejemplo:

personas (1, 1) = "Natalia"


personas (2, 1) = "pedro"
personas (1, 7) = "valeria"
personas (1, 8) = "jos"
personas (2, 2) = "carolina"
personas (4, 1) = "raquel"
personas (6, 2) = "eustaquio"
personas (6, 5) = "maria"
personas (6, 8) = "mariana"

El total de ndices posibles para almacenar datos o valores en el ejemplo


anterior es de 48 datos, ya que si multiplicamos 6 x 8 nos da como total 48
valores posibles para utilizar en la matriz bidimensional.

En este ejemplo creamos una matriz de 3 dimensiones de 3 x 3 x 3

Dim cubo (1 to 3, 1 to 3, 1 to 3) as integer

para acceder a los datos sera exactamente de la misma manera pero


debemos utilizar un ndice mas.
Ejemplo:

cubo (1, 1 , 1) = 50
cubo (1, 1 , 2) = 50
cubo (1, 1 , 3) = 50
cubo (1, 2 , 1) = 50
cubo (1, 2 , 2) = 50
cubo (1, 2 , 3) = 50
cubo (1, 3 , 1) = 50
cubo (1, 3 , 2) = 50
cubo (1, 3 , 3) = 50
cubo (2, 1 , 1) = 50
cubo (2, 1 , 2) = 50
cubo (2, 1 , 3) = 50
cubo (2, 2 , 1) = 50
cubo (2, 2 , 2) = 50
cubo (2, 2 , 3) = 50
cubo (2, 3 , 1) = 50
cubo (2, 3 , 2) = 50
cubo (2, 3 , 3) = 50
cubo (3, 1 , 1) = 50
cubo (3, 1 , 2) = 50
cubo (3, 1 , 3) = 50
cubo (3, 2 , 1) = 50
cubo (3, 2 , 2) = 50
cubo (3, 2 , 3) = 50
cubo (3, 3 , 1) = 50
cubo (3, 3 , 2) = 50
cubo (3, 3 , 3) = 50

En el ejemplo anterior, que es un poco extenso, es para que veas todos los
posibles valores que puedes almacenar en una matriz de 3 x 3 x 3, y que da
como resultado un arreglo de 27 valores posibles.

Vectores dinmicos

Hasta ahora habamos visto solo vectores o arreglos de tamao fijo, pero
qu pasa cuando no sabemos el tamao o el largo de un vector y queremos
que sea variable ?.
Visual basic posee una sentencia o funcin que nos permite cambiar el largo
de un vector en tiempo de ejecucin, dndonos as mas flexibilidad, y de esta
manera no desperdiciar memoria y recursos de la pc creando vectores mas
largos de lo que realmente necesitamos.
Esta funcin se llama ReDim y ReDim Preserve , y un ejemplo de como
aplicarla sera de la siguiente manera:

Ejemplo de vectores y arreglos dinmicos


En lo siguiente, primero declaramos un vector de la forma como lo hacemos
siempre con la diferencia de que en vez de colocar un tamao declaramos el
vector solo con los parntesis :

Dim alumnos () as string

Ahora le establecemos un tamao, por ejemplo de 4 elementos y le


agregamos valores:

ReDim alumnos(1 To 4) As String

alumnos(1) = "Luciano"
alumnos(2) = "Esteban"
alumnos(3) = "Mariano"
alumnos(4) = "Pedro"

Ahora para redimensionar el tamao del vector por ejemplo a 7 elementos,


utilizamos la funcin ReDim Preserve, para preservar los 4 valores anteriores
y le agregamos 3 valores mas:

ReDim Preserve alumnos(1 To 7)


alumnos(5) = "Karina"
alumnos(6) = "Ral"
alumnos(7) = "Romina"

Nota: si utilizamos la sentencia ReDim, o mejor dicho si redimensionamos el


vector sin utilizar la sentencia ReDim preserve, los valores que contena el
vector anteriormente se perdern
Eliminar o vaciar un vector
Para eliminar un array, arreglo o vector, podemos utilizar Erase, por ejemplo:

Erase Nombre_Del_Vector

Funciones de VB para trabajar con Arreglos - LBound y UBound


Estas funciones son ideales para trabajar con vectores y matrices que han
sido declaradas dinmicamente
Lbound y Ubound nos devuelve un nmero de tipo Long que nos permite
saber el lmite superior e inferior de un vector o una matriz.

Ejemplo de Ubound y Bound

Private Sub Form_Load()


'Variables Para almacenar los lmites superior e inferior
Dim LimiteInferior As Long
Dim LimiteSuperior As Long

'Declaramos 3 matrices, de una dimensin, _


de dos dimensiones y de 3
Dim UnVector(1 To 520) As Integer
Dim UnaMatriz(20, 5 To 100) As String
Dim OtraMatriz(10, 20, 30) As Long

' Devuelve 1
LimiteInferior = LBound(UnVector)
' Devuelve 520
LimiteSuperior = UBound(UnVector)
' Devuelve 0
LimiteInferior = LBound(UnaMatriz, 1)
' Devuelve 20
LimiteSuperior = UBound(UnaMatriz, 1)
' Devuelve 5
LimiteInferior = LBound(UnaMatriz, 2)
' Devuelve 100
LimiteSuperior = UBound(UnaMatriz, 2)
' Devuelve 0
LimiteInferior = LBound(OtraMatriz, 1)

' Devuelve 10
LimiteSuperior = UBound(OtraMatriz, 1)
' Devuelve 0
LimiteInferior = LBound(OtraMatriz, 2)
' Devuelve 20
LimiteSuperior = UBound(OtraMatriz, 2)

' Devuelve 0
LimiteInferior = LBound(OtraMatriz, 3)
' Devuelve 30
LimiteSuperior = UBound(OtraMatriz, 3)

End Sub

Como habrs visto en los ejemplos anteriores, para conocer los limites
superiores e inferiores en los vectores, solo se debe pasar como parmetro a
las funciones Lbound yUbound, el nombre del vector con el cual queremos
trabajar.
En cambio en las matrices se aade un segundo parmetro en el cual
debemos indicar el nmero de la dimensin en la cual queremos recuperar
los valores.

Ejemplo 2 de LBound y UBound:


Si deseamos recorrer todos los elementos de un vector o una matriz
podemos hacerlo mediante un bucle For de la siguiente manera:

For x = LBound(vector) To UBound(vector)


MsgBox vector(x)
Next i

Funcin Join, Split y Filter :


Visual basic en su sexta versin incorpora estas 3 funciones para trabajar
solo con vectores. Estas funciones estn relacionadas con el tratamiento de
las cadenas de caracteres.

Funcin Join
Esta funcin se utiliza para unir en una sola variable el conjunto de
subcadenas de un vector. Esta funcin tiene solo 2 parmetros y es muy fcil
de usar. Ejemplo:

Dim micadena as string


Dim vector(1 To 3) As String
vector(1) = "Carlos"
vector(2) = "Pedro"
vector(3) = "Juan"

Ahora ejecutando Join, la variable micadena pasara a valer "Carlos-PedroJuan"

micadena = join (vector, "-")

Nota: En el primer parmetro de la funcin debemos indicar el vector en el


cual trabajar, y en el segundo se debe indicar un delimitador de caracter para
separar las cadenas. Si no especificamos ninguno, visual basic utilizar por
defecto un espacio vaco o en blanco (" ") para separar cada subcadena .

Funcin Split:
Esta funcin hace el trabajo inverso de la funcin Join.
Split se utiliza para rellenar un vector dinmico que contiene un nmero de
subcadenas a partir de una cadena que le pasamos como parmetro a la
funcin.
Para aclarar un poco un ejemplo

Private Sub Form_Load()

'Una variable para almacenar una cadena


Dim Micadena As String 'Vector dinmico
Dim Vector() As String

'Le damos un valor a la variable


Micadena = "maria/natalia/romina"

'Ejecutamos la funcin Split


Vector = Split(Micadena, "/")

'Ahora el vector dinmico pasara a _


contener los siguientes valores:

Vector(0) = "mara"
Vector(1) = "natalia"
Vector(2) = "Romina"

End Sub

Nota: una cosa importante es que en el vector anterior no se ha declarado


un rango , ya que la funcin devuelve un vector cuya cantidad de
elementos se ignora, es decir no se conoce.
Pasar un archivo de texto a un array o matriz usando split
Funcin Filter:
La funcin Filter se utiliza para filtrar subcadenas de un vector dependiendo
de un determinado criterio de bsqueda. Los parmetros que lleva la funcin
son los siguientes:
Filter (vector donde buscar, cadena a buscar, valor booleano que
indica si incluir o excluir la cadena)
Ejemplo:

' Vector
Dim Alumnos(1 To 4) As String

' Vector dinmico para almacenar el resultado


Dim Resultado() As String

Alumnos(1) = "Luciano"
Alumnos(2) = "Lucas"
Alumnos(3) = "juan"
Alumnos(4) = "Natalia"

' Ejecutamos Filter


Resultado = Filter(Alumnos, "Lu", True)
' Ahora el vector dinmico "resultado" pasa a contener
MsgBox Resultado(0), vbInformation ' Luciano
MsgBox Resultado(1), vbInformation ' Lucas

Ejemplos.

Las matrices se acceden por su nmero de ndice.


Dim variable(5) As String
El nmero 5 entre parntesis del nombre de la variable indica el nmero de elementos
a almacenar en el arreglo.
Arreglos Unidimensionales.
Ejemplo 1

Ejemplo 2

Ejemplo 3

Ejemplo 4

Arrays Multidimiensionales.

El nmero de elementos declarados se calcula teniendo en cuenta que la numeracin


de los ndices empieza en cero, aunque en algunas versiones existe una clusula
denominada Option Base que permite fijar como primer ndice de los arrays el uno. En
las versiones ms 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
nmero 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 versin 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 nmero 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 nmero de alumnos con que cuenta una
academia ordenados en funcin del nivel y del idioma que se estudia. Tendremos 3 filas
que representarn Nivel bsico, medio o de perfeccionamiento y 4 columnas que
representarn los idiomas (1 = Ingls, 2 = Francs, 3 = Alemn y 4 = Ruso). La
declaracin de dicha matriz sera:
Dim Alumnosfxniveleidioma(3, 4)

Ejemplo 1

Ejemplo 2

También podría gustarte