You are on page 1of 21

Repblica Bolivariana de Venezuela

Instituto Universitario Politcnico


Santiago Mario
Extensin Puerto Ordaz

MATRICES Y VECTORES EN
VISUAL BASIC

Profesor:
Jos Guzmn

Integrantes:
Suarez Carolina V- 16.390.821
Rangel Fabiola V- 18.450.424
Lizardi Hctor

V- 26.459.195

Valencia Edixon V-

Ciudad Guayana, 17 de julio de 2015

INDICE

Introduccin.... 3
Arreglos Y Vectores En Visual Basic........ 4
Ejemplo...................... 5
Las Matrices:..................... 6
Ejemplo de matriz de 2 dimensiones. 7
Ejemplo de una matriz de 3 dimensiones.. 7
Vectores Dinmicos:..... 9
Ejemplo de vectores y arreglos dinmicos. 9
Funciones de VB para trabajar con Arreglos....... 10

Lbound y Ubound 10
Join.. 11
Split .... 13
Filter 14

Arreglos de Controles........................... 17

Compartir controladores de eventos..... 17


Recorrer controles en iteracin. 18
Agregar controles en tiempo de ejecucin.. 18
Ejemplo.. 18

Conclusin 20
Bibliografa 21

INTRODUCCIN

El presente trabajo tiene como finalidad tratar de explicar la necesidad que existe
de agrupar datos del mismo tipo bajo un mismo nombre, ayudando as a mejorar
la memoria de la PC.
Aqu les estaremos aclarando ms acerca del tema de Vectores y Matrices, para
que sirve dentro del programa en Visual Basic.
Los puntos a tratar en nuestra exposicin y a continuacin en este trabajo son:
Arreglos y Vectores
Matrices
Arreglos y Vectores dinmicos.
Funciones de Visual Basic para trabajar con arreglos
Los arreglos de controles.

ARREGLOS Y VECTORES EN VISUAL BASIC


Un Arreglo es un conjunto de valores agrupados como fila / columna o como fila y
columna.
Cuando el arreglo est agrupado por fila o columna se tiene un vector, desde el
punto de vista matemtico, mientras que est agrupado por un conjunto de filas y
columna, se tiene una matriz.
El esquema anterior es una representacin de dos tipos de objetos definidos como
arreglos: lineales o cuadrticos.
Los arreglos pueden tener una o ms dimensiones. Matemticamente los arreglos
unidimensionales constituyen los vectores y los multidimensionales, las matrices.
En trminos de programacin por computadora, es ms comn el uso de arreglos
uni y dimensionales, en algunos casos, los tridimensionales.
En VBA los arreglos tienen un nombre pues se consideran un tipo de variable. As
como cada variable requiere de una localidad de memoria para almacenar su
valor, as tambin, cada uno de los elementos del arreglo requieren de una
localidad de memoria para almacenar su valor. Por esta razn, a los elementos de
un arreglo se denotan de acuerdo al siguiente criterio:
M(1), M(2), , M(10)

corresponde a un arreglo lineal de 10 elementos

X(1,1) X(1,2) X(1,3) X(1,4) (X(1,5)


X(2,1) X(2,2) X(2,3) X(2,4) (X(2,5)
Es un arreglo bidimensional de 2 files con 5 columnas.
Todo tipo de arreglo usado en VBA debe ser declarado mediante la instruccin
DIM
Ejemplo de declaracin de arreglos
DIM X(10), Y(10) AS INTEGER
4

En este ejemplo se est declarando a X e Y como dos arreglos de tamao 10 cada


uno. Sus elementos se designarn por X(1), X(2), , X(10), En el caso de Y,
tendremos Y(1), Y(2), .., Y(10). En ambos casos se separan 10 localidades de
memoria.
En la declaracin
DIM Datos(80, 5), C(8, 5) , AS Integer
En este ejemplo el arreglo Datos tiene 80 elementos por fila y 5columas y el
arreglo C contiene 8 filas y 5 columnas. En este caso, para Datos se separan 400
localidades de memoria y para C, 40 localidades.
Nota:
Si en el caso del arreglo X, se intenta usar el elemento X(11), se estar usando un
subndice fuera de lmite. Esto significa que los arreglos deben ser declarados
tomando en cuenta su mximo tamao.
Ejemplo
Escriba Un programa que lea un conjunto de 10 datos numricos, los almacene en
un arreglo unidimensional y luego los imprima.
Solucin
Sea Datos el nombre del arreglo. Supondremos que tiene 50 elementos.
Usaremos la sentencia DIM para definir el arreglo como de tipo Integer.
Ya que se trata de introducir 10 datos, usaremos For Next para ingresar los
datos repetidamente. La variable de conteo en el For ser I, no ser necesario
definirla.
Usaremos FOR ::: NEXT para leer los datos y otro para imprimir los valores ledos.
Aunque bien podramos leer e imprimirlos dentro del mismo FOR NEXT.
Usaremos a InputBox() como funcin para ingresar los datos
5

El cdigo es el siguiente:
Sub Arreglos01()
Dim Datos(10) As Integer
' Lectura de datos
For I = 1 To 10
Datos(I) = InputBox("Ingrese el dato: ")
Next
' Impresin de los datos
MsgBox ("Estos son los datos ledos:")
For I = 1 To 10
MsgBox (Datos(I))
Next
End Sub

LAS MATRICES:
Una matriz es un conjunto de valores relacionados lgicamente entre s, como el
nmero de estudiantes de cada curso en una escuela primaria. O sea, como se
dijo anteriormente, las matrices son arreglos de ms de 1 dimensin, es decir 2 o
ms, 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 tambin llamada 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 ms subndices de acuerdo a la cantidad de
dimensiones que posea la matriz.
Por lo general no se suele utilizar matrices de ms de 3 dimensiones.
Ejemplo de matriz de 2 dimensiones
Matrices 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 ms.
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
8

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 veamos 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:
Visual Basic posee una sentencia o funcin que nos permite cambiar el largo de
un vector en tiempo de ejecucin, dndonos as ms flexibilidad, y de esta manera
no desperdiciar memoria y recursos de la pc creando vectores ms largos de lo
que realmente necesitamos.
Esta funcin se llama ReDim y ReDim Preserve, y un ejemplo de cmo 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:
ReDimalumnos(1 To 4) As String
alumnos(1) = "Luciano"
alumnos(2) = "Esteban"
alumnos(3) = "Mariano"
alumnos(4) = "Pedro"
9

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 ms:
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
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
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)
10

MsgBox vector(x)
Next i
JOIN
Esta funcin devuelve en una cadena el contenido de un array, cada elemento del
array se incluye en esa cadena y se separa cada elemento con el separador
indicado. El separador no se aade al final de la cadena, slo entre cada
elemento.
La forma de usar esta funcin es:
Join(list[, delimiter])
dnde:
list: es un array con los elementos que queremos "juntar" en una cadena.
delimiter: (opcional), es el separador que queremos usar para separar cada uno de
esos elementos, por defecto es un espacio. Si no queremos usar ningn
delimitador, es decir para que todos los elementos estn juntos, hay que indicar
una cadena vaca; si, por el contrario queremos usar cualquier otro carcter, lo
indicaremos en este parmetro de la funcin.
Ejemplo:
Private Sub cmdJoin_Click()
'Ejemplo de uso de Join, esta funcin devolver en una cadena
'cada elemento de un array separados por el delimitador que
'se le indique.
Dim tArray() As String
Dim i As Long
'Dimensionamos el array con cuatro elementos (de 0 a 3)
ReDim tArray(3)
'Asignamos valores al array

11

For i = 0 To 3
tArray(i) = "Elemento_" & i
Next
'=== Para hacer otras pruebas ===
'Separa cada palabra con el caracter indicado
'Text1 = Join(tArray, "/")
'Todas las palabras juntas, sin usar separador
'Text1 = Join(tArray, "")
'Las palabras se separan por un espacio, (valor por defecto)
Text1 = Join(tArray)
End Sub
Si no se indica delimitador: Text1 = Join(tArray), el contenido de Text1 ser:
Elemento_0 Elemento_1 Elemento_2 Elemento_3
Cada elemento se separa con un espacio.
Si se especifica un caracter como delimitador: Text1 = Join(tArray, "/"), el contenido
de Text1 ser:
Elemento_0/Elemento_1/Elemento_2/Elemento_3
Fjate que el delimitador no se aade al final.
Si se especifica una cadena vaca: Text1 = Join(tArray, ""), el contenido de Text1
ser:
Elemento_0Elemento_1Elemento_2Elemento_3
Es decir todos juntos, sin separacin.

12

SPLIT
Esta funcin es la inversa de Join, es decir, toma el contenido de una cadena y
forma un array con cada una de las palabras, (o serie de palabras separadas por
un delimitador dado, subcadena que la llaman).
La forma de usar esta funcin es:
Split(expression[, delimiter[, count[, compare]]])
dnde:
expresion: es una cadena, o expresin que de como resultado una cadena, de la
que queremos sacar los elementos.
delimiter: (opcional), es el separador que le indicar a la funcin como estn
separados los elementos; por defecto es un espacio. Si el delimitador es una
cadena vaca, se devolver un array con slo un elemento conteniendo toda la
cadena.
count: (opcional), el nmero de elementos que se devolver en el array, si no se
indica o se usa -1, se devolver cada subcadena en un elemento del array. Si este
valor es menor que el nmero de subcadenas, en el ltimo elemento del array se
asignar el resto de la cadena.
compare: (opcional), el tipo de comparacin que se realizar para evaluar el
delimitador dentro de la expresin.
ejemplo:
(esta funcin puede servir, entre otras cosas, para asignar a un array los
parmetros de la lnea de comandos)
Private Sub cmdSplit_Click()
'Devolver una cadena con una serie de palabras de un array
Dim tArray() As String
Dim sTmp As String
Dim i As Long
13

'Asignamos valores de prueba a una cadena


sTmp = "Hola Mundo, esto es una prueba de Split en VB6"
'Creamos un array, cada "substring" se asignar
'a un elemento del array
tArray = Split(sTmp)
'Ahora slo crearemos un array de tres elementos
'tArray = Split(sTmp, , 3)
'Tambin se puede usar para desglosar los parmetros
'de la lnea de comandos
'fichero.txt /B /S/I
tArray = Split(Command$, "/")
'Mostramos la informacin
List2.Clear
'Si no conocemos los ndices del array,
'usamos LBound y UBound para que nos lo indique
For i = LBound(tArray) To UBound(tArray)
List2.AddItem tArray(i)
Next
End Sub

FILTER
Esta funcin devuelve un array que contiene los elementos de otro array, siempre
que coincida con el criterio de bsqueda especificado. Ambos arrays deben ser del
tipo String (cadena)
La forma de usar esta funcin es:
Filter(InputStrings, Value[, Include[, Compare]])
14

dnde:
InputStrings: es un array unidimensional del tipo cadena
Value: la cadena a buscar en InputStrings
Include: (opcional) Si se quiere que los elementos devueltos sean los que incluyen
la cadena indicada en Value o no, el valor por defecto es True, es decir, que se
devuelvan las que incluyan esa cadena a buscar.
Compare: (opcional), el tipo de comparacin a realizar.
Ejemplo:
Private Sub cmdFilter_Click()
'Filtra un array con la cadena indicada y devuelve un array
Dim tArray1() As String
Dim tArray2() As String
Dim i As Long
Dim sFilter As String
Dim bExclude As Boolean

'Llenar un list con datos de ejemplo y asignarlos a un array.


'En el form de prueba estos valores estn asignados en
'el Form_Load, pero lo pongo para que se sepa lo que hay.
With List3(0)
'.Clear
'.AddItem "Guillermo" & vbTab & "Nerja"
'.AddItem "Pepito" & vbTab & "Nerja"
'.AddItem "Juanito" & vbTab & "Mlaga"
'.AddItem "Jordi" & vbTab & "Barcelona"
'.AddItem "Guillermo" & vbTab & "Barcelona"
15

'.AddItem "Pilar" & vbTab & "Zaragoza"


ReDim tArray1(.ListCount - 1)
For i = 0 To .ListCount - 1
tArray1(i) = .List(i)
Next
End With

'sFilter = "Guille"
sFilter = Text5

'Incluir en tArray2 los elementos de tArray1 que tengan


'lo especificado en sFilter, sin distinguir maysculas de minsculas
'If Check1.Value = vbChecked Then
'

tArray2 = Filter(tArray1, sFilter, True, vbTextCompare)

'Else
'

'En esete caso se devuelven los elementos que no lo tengan

'

tArray2 = Filter(tArray1, sFilter, False, vbTextCompare)

'End If

'Tambin se puede hacer as:


tArray2 = Filter(tArray1, sFilter, Check1.Value, vbTextCompare)
'Mostrar los elementos obtenidos
With List3(1)
.Clear
For i = LBound(tArray2) To UBound(tArray2)
.AddItem tArray2(i)
Next

16

End With
End Sub
En este ejemplo, usando "Guille" como cadena a buscar e indicando que se
incluya esta palabra, devolvera los siguientes elementos:
Guillermo Nerja
Guillermo Barcelona
Si se indicara que devuelva los que no contengan la palabra "Guille", sera esto lo
que devolvera:
Pepito Nerja
Juanito Mlaga
Jordi Barcelona
Pilar Zaragoza

ARREGLOS DE CONTROLES
En Visual Basic 6.0, las matrices de controles se pueden utilizar para administrar
los controles de un formulario; proporcionaban funciones para compartir
controladores de eventos, recorrer en iteracin grupos de controles y agregar
controles en tiempo de ejecucin.
Compartir controladores de eventos
En Visual Basic 6.0, se pueden usar matrices de controles para especificar un
grupo de controles que compartan un conjunto de eventos. Los controles deban
ser del mismo tipo y tenan que tener el mismo nombre.
Por

ejemplo,

es

posible

que

quiera

agregar

dos

controles Button (Button1 y Button2) y un control CheckBox (CheckBox1) a un

17

formulario y, a continuacin, crear un controlador de eventos a fin de controlar el


evento Click para los tres controles.
Private Sub MixedControls_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click, Button2.Click, CheckBox1.Click
Recorrer controles en iteracin
Otra caracterstica de matrices de controles de Visual Basic 6.0 era la capacidad
de recorrer en iteracin un grupo de controles mediante la propiedad Index. Por
ejemplo, para borrar el texto de todos los controles TextBox en una matriz de
control, se poda recorrer en iteracin la matriz de control mediante la
propiedad Index como una variable de bucle.
En Visual Basic 6.0, los controles de una nica matriz de control podan
encontrarse

en

contenedores

diferentes.

Por

ejemplo,

los

controles TextBox contenidos en dos controles Frame diferentes podan formar


parte de la misma matriz de control.
Agregar controles en tiempo de ejecucin
En Visual Basic 6.0, los controles se poda agregar a una matriz de control en
tiempo de ejecucin mediante la instruccin Load. Los controles tenan que ser del
mismo tipo que la matriz de control y sta se deba crear en tiempo de diseo con
al menos un elemento. Despus de agregar el control, la propiedad Visible deba
establecerse en True.
Agregar controladores de eventos en tiempo de ejecucin
En Visual Basic 6.0, cuando se agregaba un control a una matriz de control en
tiempo de ejecucin, los eventos de la matriz de control controlaban
automticamente los nuevos eventos de controles.
VB
' Visual Basic
Private Sub TextBoxes_TextChanged(ByVal sender As System.Object, _
18

ByVal e As System.EventArgs) Handles TextBox1.TextChanged, _


TextBox2.TextChanged, TextBox3.TextChanged
Select Case DirectCast(sender, TextBox).Name
Case TextBox1.Name
MsgBox("The text in the first TextBox has changed")
Case TextBox2.Name
MsgBox("The text in the second TextBox has changed")
Case TextBox3.Name
MsgBox("The text in the third TextBox has changed")
End Select
End Sub

19

CONCLUSIN

Al analizar toda la informacin del trabajo pudimos concluir que el tema de


Vectores y Matrices es bastante extenso, adems que es primordial estar al tanto
de este conocimiento porque nos ayuda a realizar programas ms complejos.
En el tema anterior estuvimos estudiando las variables y aqu vemos que a
diferencia de una matriz, una variable que contiene un nico valor se llama
variable escalar, sin embargo aprendimos que usando una matriz, se puede hacer
referencia a estos valores relacionados mediante un mismo nombre y utilizar un
nmero, denominado ndice o subndice, para distinguirlos. Los valores
individuales se llaman elementos de la matriz. Son contiguos desde el ndice 0
hasta el valor del ndice superior.
Adems, conocimos la funcin Redim, que nos sirve para agregar valores
manteniendo ya los que estn presentes sin tener que crear una nueva matriz,
esto nos sirve para no ocupar tanto espacio en la memoria de nuestro equipo.

20

BIBLIOGRAFA

http://www.recursosvisualbasic.com
http://www.mundoprogramacion.com/
http://ucytprog.blogspot.com/
http://aprenderaprogramar.com/

21