PDF de programación - CursoVB - Capítulo 9

Imágen de pdf CursoVB - Capítulo 9

CursoVB - Capítulo 9gráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 20 de Enero del 2018)
566 visualizaciones desde el 20 de Enero del 2018
391,3 KB
22 paginas
Creado hace 8a (24/09/2012)
CURSO DE VB

CAPÍTULO 91

Índice de contenido
TRABAJANDO CON MATRICES.....................................................................................................2
MATRICES DE UNA DIMENSIÓN (MATRICES ESTÁTICAS)................................................2
OTRA MANERA DE CREAR UNA MATRIZ ESTÁTICA DE UNA DIMENSIÓN -Función
Array()-.......................................................................................................................................4
APROVECHAMOS PARA APRENDER LA FUNCIÓN Rnd() Y LA INSTRUCCIÓN
Randomize..................................................................................................................................6
MATRIZ ESTÁTICA SIN SABER LA LONGITUD DE LA MATRIZ. EJEMPLO DE
SUSTITUCIÓN DE CARACTERES.........................................................................................7
DETERMINANDO EL TIPO DE DATOS DE LA MATRIZ.........................................................9
MATRICES MULTIDIMENSIONALES (MATRICES ESTÁTICAS)........................................10
Un ejemplo para matriz de tres dimensiones............................................................................11
MATRICES DINÁMICAS............................................................................................................13
(y aprovechamos para aprender algunas SQL simples).................................................................13
ReDim Preserve........................................................................................................................16

ALGUNOS ELEMENTOS INTERESANTES DE LA MATRIZ: las funciones UBound() y
LBound() y la instrucción Erase....................................................................................................19
Y ACABAMOS EL TEMA DE MATRICES.....................................................................................21

1 La BD donde están los ejemplos de este capítulo os la podéis bajar aquí.

Visítame en http://siliconproject.com.ar/neckkito/

1

TRABAJANDO CON MATRICES

Vamos a aprender cómo podemos trabajar con matrices en
nuestro deambular por VB para Access.

Y la pregunta del millón es... ¿qué es una matriz? Si nos
pusiéramos en plan académico podríamos decir que una
matriz es un conjunto de variables del mismo tipo, las
cuales se hallan indexadas, siendo precisamente su índice
el indicador de posición de cada variable en la matriz.

¿Bonita definición, verdad?

Vamos a “destripar” la definición con un ejemplo. Supongamos que tenemos un tubo (de
plástico, de PVC, de cristal... lo que más nos guste). Y tenemos unas bolitas (de gomaespuma)
que debemos meter en dicho tubo. Todas las bolitas son del mismo tipo (es decir, todas son
String, todas son Integer, todas son Date...).

La primera bolita lleva escrito: “A es la primera letra del abecedario”
La segundo bolita lleva escrito: “B es la segunda letra del abecedario”
La tercera bolita lleva escrito: “C es la tercera letra del abecedario”
Etc.

Como las hemos introducido en el tubo por este orden, la primera bolita llevará el índice 1; la
segunda el índice 2 y la tercera el índice 3.

Nuestro tubo podría ser representado de la siguiente manera:

Tubo(Primera bolita, Segunda bolita, Tercera bolita)

¿Qué pasaría si en nuestro código quisiéramos acceder a la “B, segunda letra del abecedario”?
Pues como sabemos que la segunda bolita lleva el índice 2, podríamos “llamarla” de la
siguiente manera:

v2Letra = Tubo(2)

¿Y si yo escribiera

vLetra = Tubo(3) ?

Ahora todo el mundo me podría contestar que vLetra cogería el valor de la tercera bolita, que
en este caso es “C”.

Creo que ahora ya podemos tener una idea más clara de lo que es una matriz (espero). Si
no... “bolitas tiene la cosa”... je, je...

MATRICES DE UNA DIMENSIÓN (MATRICES ESTÁTICAS)
Nuestro ejemplo de las bolitas anterior correspondería a una matriz de una dimensión. Es
decir, que sólo hay una “dimensión” de elementos. Quizá esto pueda resultar inicialmente
confuso, pero cuando veamos las matrices de varias dimensiones lo entenderemos mejor. ¡Un
poco de paciencia!

La denominamos estática porque conocemos de antemano el número de elementos que va a
contener la matriz.

Visítame en http://siliconproject.com.ar/neckkito/

2

Vamos a coger una BD en blanco y, en un formulario, vamos a añadir un botón de comando,
que llamaremos cmdMisDiasSemana. Primero indicaremos el código y después lo
analizaremos:

El código asignado al evento “Al hacer click” de ese botón
sería:


Private Sub cmdMisDiasSemana_Click()
'Definimos las variables
Dim numDia As Variant
Dim DiasSem(7)

'Cargamos los valores de la matriz
DiasSem(1) = "Lunes... sueño"
DiasSem(2) = "Martes... casi lunes"
DiasSem(3) = "Miércoles... a la mitad"
DiasSem(4) = "Jueves... aún quedan días"
DiasSem(5) = "Viernes... que no pasa"
DiasSem(6) = "Sábado... ¡por fin!"
DiasSem(7) = "Domingo... casi lunes"
'Pedimos al usuario que introduzca un número
numDia = InputBox("Introduzca un número del 1 al 7", "DIA DE LA SEMANA")
'Controlamos la introducción
If Not IsNumeric(numDia) Then Exit Sub
If numDia < 1 Or numDia > 8 Then Exit Sub
MsgBox DiasSem(numDia), vbExclamation, "ESTE ES MI DÍA"
End Sub


Veamos...

.- Definimos la matriz con su nombre y con su número de elementos. De ahí que hayamos
escrito Dim DiasSem(7)
.- Al igual que hacemos con una variable, que primero la definimos y después le asignamos un
valor, debemos asignar un valor a la matriz. ¿Cuál es la diferencia con una variable “normal”?
Puesto que debemos asignar tantos valores como elementos tiene la matriz.
.- A la hora de asignar valores a la matriz debemos indicar su posición dentro de la misma. De
ahí que escribamos

DiasSem(i) = “Valor”, donde i es el indicador de posición.

.- Para invocar el valor deseado, simplemente llamamos a la matriz con su número de posición.
De ahí que hayamos escrito MsgBox DiasSem(numDia), donde numDia nos lo indicaba el
usuario a través del InputBox.

También os comentaré que podemos definir la matriz indicándole la totalidad del rango. Es
decir, que en lugar de escribir

Dim DiasSem(7)

hubiéramos podido escribir

Dim DiasSem(1 To 7)

También os comentaré que no hace falta empezar por el 1. Si nos interesara podríamos definir
la matriz como

Visítame en http://siliconproject.com.ar/neckkito/

3

Dim DiasSem(6 To 13)

E incluso utilizar valore negativos, como

Dim DiasSem(-3 To 4)

Fácil, ¿verdad?

OTRA MANERA DE CREAR UNA MATRIZ

ESTÁTICA DE UNA DIMENSIÓN
-Función Array()-

Acabamos de ver como declaramos la matriz con el número de elementos y después la
cargábamos con sus valores correspondientes.

Podemos definir las matrices de otra manera, a través de la función Array(). Supongamos que
queremos que el usuario introduzca un valor del 1 al 3, y que aparezca un mensaje con la
correspondencia a un valor en una matriz. Asignaremos el siguiente código al botón cmdFallido
(después explicaré por qué le llamo “Fallido”). Nótese que no voy a introducir instrucciones de
control en el código.


Private Sub cmdFallido_Click()
'Definimos las variables
Dim vValorUser As Single
Dim vValorMatr As Variant
'Asignamos valor a las variables
vValorMatr = Array(10, 20, 30)
vValorUser = InputBox("Introduzca una valor de 1 a 3", "VALOR")
MsgBox vValorMatr(vValorUser), vbInformation, "Valor"
End Sub


Veamos...

.- Hemos definido una variable, vValorMatr, de tipo variant. Esta será nuestra matriz.
.- Hemos introducido sus valores a través de la función Array, de la manera siguiente:
vValorMatr = Array(10, 20, 30)

¿Está todo listo? Pues no. Vamos a hacer una prueba. Hacemos click sobre el botón (con el
formulario en vista formulario) y, cuando nos pide el número, escribimos 1.

El sentido común dice que nos debería devolver 10 (primera posición). Sin embargo, ¿qué
valor nos devuelve?

Volvemos a hacer click sobre el botón e introducimos el valor 3, y, para nuestra sorpresa,
obtenemos el siguiente resultado:

Visítame en http://siliconproject.com.ar/neckkito/

4

¿Demasiado alcohol para nuestro Access, quizás? Je, je... Ahora ya podéis entender lo de
“Fallido”.

Vamos a ver qué ocurre.

Con este sistema, y por defecto, el indicador de posición de la matriz empieza siempre por
cero. Es decir, que nuestra matriz tiene los siguientes valores:

vValorMatr(0) = 10
vValorMatr(1) = 20
vValorMatr(2) = 30

De ahí que, al introducir un 1, el valor devuelto sea 20, y al introducir un 3 no exista esta
posición (y en consecuencia nos salte el error 9).

¿Cómo solucionamos lo anterior? Pues tenemos dos posibilidades:

1.- Creamos un valor ficticio en la primera posición (la cero), de manera que nuestra matriz
quedaría definida de la siguiente manera:
vValorMatr = Array(0, 10, 20, 30)

Ahora sí, si introducimos el valor 1, se nos devolverá el 10.

2.- La segunda posición es indicarle a Access que queremos que nuestra matriz no empiece
con el subíndice cero, sino con el 1. Esta instrucción se la debemos indicar en la cabecera del
módulo a través de la expresión:

Option Base 1

Es decir, que la cosa nos debería quedar así:

Visítame en http://siliconproject.com.ar/neckkito/

5

Si lo hacemos así y probamos el botón veremos que ahora ya no es “fallido”.

Debemos tener esto en cuenta a la hora de confeccionar nuestras matrices para no llevarnos
alguna sorpresa “desagradable”. ¡Ojo!

APROVECHAMOS PARA APRENDER LA FUNCIÓN Rnd() Y LA

INSTRUCCIÓN Randomize

Vamos a programar un juego de azar: el ordenador contra el humano. Vamos a simular que se
lanzan tres dados y que si el humano acierta el valor de una de las tiradas gana el humano; en
caso contrario pierde.

Lo que debemos hacer para nuestra planificación es tener en cuenta los siguiente elementos:
.- El humano d
  • Links de descarga
http://lwp-l.com/pdf8394

Comentarios de: CursoVB - Capítulo 9 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad