Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Temas
o
o
o
o
o
o
o
Para qu?
Cundo?
Con qu?, y
Cmo?
Crear el Interfaz.
Para ello, primero tendremos que familiarizarnos con unos conceptos
bsicos. Que es una ventana?.Una ventana es simplemente una regin
rectangular con sus propios lmites. Dentro de VB se les conoce como
formularios de manera que empecemos ya. Inicia VB y en el cuadro de
dilogo Nuevo proyecto, en la pestaa Nuevo, selecciona el icono "EXE
estndar" y pulsa Abrir. Seguramente tu IDE se mostrar ms o
menos as:
1 - CenterOwner
2 - CenterScreen
opcin deseada ya sea con un clic del ratn o mediante las teclas de cursor
hasta colocar la seleccin sobre el elemento deseado y pulsar .
Haciendo doble clic sobre el cuadro valor de la propiedad. Esto va cambiando
cclicamente los valores posibles.
Pulsando las teclas del 0 al 3, pero en el teclado normal.
Figura 1.4
Bueno, Quieres probar lo que hemos hecho hasta ahora? Pues simplemente pulsa
o pulsa F5, o elige men Ejecutar>Iniciar. Debes obtener una ventana como la de la figura 1.4.
sobre la herramienta Iniciar
Si no es as, algo has hecho mal, as que repasa los pasos que hemos
seguido hasta ahora e intntalo de nuevo.
Una vez comprobada la apariencia inicial de nuestra ventana, cirrala
pulsando sobre la en la esquina superior derecha de nuestra ventana, o
bien pulsa Terminar
, men Ejecutar->Terminar. Cualquiera de
estos pasos nos lleva de nuevo al IDE de VB para poder seguir
trabajando en nuestro proyecto.
izquierda y arrastra hasta dos puntos antes del borde derecho y unos
cuatro puntos abajo. Suelta el botn del ratn. aparece un rectngulo
delimitado por 6 cuadritos amarillos y el texto Label1 dentro de l. Este
es un objeto Label o etiqueta de texto con el cual, podemos definir un
texto que aparecer en nuestro formulario y que no es editable por el
usuario. Si observas la ventana de Propiedades, ahora ha cambiado, su
ttulo es Propiedades Label1 y muestra las propiedades de la etiqueta
que acabamos de crear. De nuevo, de las 37 propiedades de la etiqueta,
slo modificaremos unas cuantas.
Caption
La primera, igual que en el formulario, es Caption, que en este caso no
corresponde al ttulo sino al texto que aparece en la etiqueta. Modifcalo
tecleando Generador de un Cuadrado Magico. Vers que el texto va
apareciendo en el formulario, pero su aspecto no es muy vistoso. Vamos
a corregir esto.
Font
Primero vamos a modificar la propiedad Font que contiene las
caractersticas del fuente a utilizar en nuestra etiqueta. Si te fijas en la
columna de valor de esta propiedad, aparece un botn con tres puntitos
(elipsis)
a la derecha, esto significa que si lo pulsas se abre un cuadro
de dilogo, en este caso Fuente, en el que puedes definir las
caractersticas del texto. Selecciona Negrita como Estilo de fuente: y
12 como Tamao:. Tambin podemos cambiar el Fuente: pero esto lo
dejamos para ms adelante.
Figura 1.5
Alignment.
Ahora ya tenemos el texto en una sola lnea, pero sigue sin ser perfecto.
Nos gustara que estuviera centrado en el formulario. Para esto tenemos
la propiedad Alignment que nos permite 3 opciones:
1. 0 - Left Justify
2. 1 - Right Justify
3. 2 - Center
Seleccionamos la tercera opcin para que centre el texto dentro de la
etiqueta.
AutoSize.
Por ltimo, y para eliminar zonas sobrantes de la etiqueta,
seleccionamos la propiedad AutoSize que nos permite los valores True y
False. Seleccionamos True y la etiqueta actualiza su tamao al justo y
necesario para el texto contenido. Por ltimo, y para que nuestra
etiqueta quede centrada con respecto al formulario, con la etiqueta
seleccionada, pulsa men Formato->Centrar en el formulario>Horizontalmente.
Figura 1.6
Los botones.
Nombre: btnNo
Figura 1.7
Caption: No
Height: 255
Left: 2760
ToolTipText: Pulsa aqu si no quieres ver un Cuadrado Mgico.
Top: 2760
Width: 855
(Nombre): lblElementoCM
Alignment: 2 - Center
Appearance: 0 -Flat
BorderStyle: 1 - Fixed Single
Caption: 0
Font tamao: 12
Height: 330
Left: 1800
Top: 1200
Visible: False
Width: 315
El resto de las propiedades djalas con sus valores por defecto. Este
objeto representa una de las celdas del cuadrado mgico, pero
necesitamos 8 ms prcticamente idnticas pues vamos a mostrar un
Cuadrado Mgico de 3x3, o sea de 9 celdas. Para ello vamos a utilizar
otra apreciable caracterstica del diseador de formularios de VB.
Pulsa sobre la etiqueta que acabas de crear con el botn derecho del
ratn. Aparece un men contextual y selecciona Copiar. Tambin
puedes usar el men Edicin->Copiar. Despus pulsa con el botn
derecho del ratn, pero esta vez sobre cualquier zona del formulario que
no tenga ningn objeto, y en el men contextual selecciona Pegar, o
bien, men Edicin->Pegar. Aparecer un cuadro de aviso con el
siguiente mensaje: "Ya existe un control llamado 'lblElementoCM'.
Desea crear una matriz de controles?" y tres botones: "Si, No y
Ayuda". De momento pulsa , en la siguiente leccin entenders lo til
que resulta crear una matriz de controle, que no es otra cosa que los
controles que pertenecen a la matriz tienen el mismo nombre y se
identifican por un ndice. En este caso tendremos dos etiquetas con los
nombres lblElementoCM(0) y lblElementoCM(1) respectivamente. Coloca
esta nueva etiqueta al lado derecho de la primera. Repite la operiacin
de pegar y ve colicando las etiquetas hasta formar una matriz de 3x3. Si
Figura 1.8
lblElementoCM(0).Caption
lblElementoCM(1).Caption
lblElementoCM(2).Caption
lblElementoCM(3).Caption
lblElementoCM(4).Caption
lblElementoCM(5).Caption
lblElementoCM(6).Caption
lblElementoCM(7).Caption
lblElementoCM(8).Caption
=
=
=
=
=
=
=
=
=
4
9
2
3
5
7
8
1
6
Los eventos.
Un evento es una accin reconocida por un objeto, como hacer clic con
el ratn o presionar una tecla, para la que se puede escribir cdigo de
respuesta. Los eventos pueden producirse como resultado de una accin
del usuario o del cdigo, o pueden estar desencadenados por el sistema.
En nuestro caso, los objetos son los botones y la accin que deben
reconocer es ser pulsados. Es decir, se debe generar un evento cuando
el usuario pulse y otro evento cuando el usuario pulse .
Poco a poco iremos viendo que cada objeto puede controlar distintos
eventos, y que definir qu es lo que debe de hacer nuestra aplicacin
cuando se lance dicho evento es lo que nosotros definiremos en el
cdigo. Para ello tenemos que entrar en la ventana del Editor de cdigo.
Hay varias formas de entrar en el Editor de cdigo:
Men Ver->Cdigo
Debajo del ttulo hay dos cuadros de lista, el primero lista los objetos
presentes en nuestro formulario, de momento debemos seleccionar
btnSi de la lista (que es el botn del Si). Una vez seleccionado este
objeto, en el cuadro de lista de la derecha aparecen listados los eventos
o Procedimientos que puede lanzar dicho objeto. El que nos interesa de
momento es Click (que corresponde a hacer clic con el botn izquierdo
del ratn sibre el objeto. Si tienes todo seleccionado tal y como te he
indicado, en la zona de edicin del editor, el cursor estar justo debajo
de una lnea que reza lo siguiente:
Private Sub btnSi_Click()
End sub
Esta es la porcin de cdigo que encierra las acciones que se deben
ejecutar cuando un usuario hace click sobre el botn btnSi de nuestro
formulario. Bien, Que es lo que queremos que haga nuestro programa
cuando el usuario pulse ?. La respuesta es "Mostrar el Cuadrado
Mgico". Vayamos por partes: Por un lado tenemos que hacer visible la
matriz de etiquetas que creamos con los nmeros del cuadrado mgico,
por otro lado, hacer invisible la segunda etiqueta, la que dice "Quieres
ver un Cuadrado Mgico?", tambin debemos hacer invisibles los
botones y , ya que ninguno de estos objetos tendrn utilidad una vez
que se muestra el Cuadrado Mgico. Para hacer invisibles estos tres
objetos slo tenemos que modificar una propiedad, Podras decir cul
antes de seguir leyendo?..... Si pensaste en la propiedad Visible
acertaste!. Cuando desde el cdigo queremos modificar una propiedad
de un objeto, la sintaxis es como sigue:
Objeto.Propiedad = Valor
Como ves, primero debemos indicar el objeto al cual queremos
modificar una propiedad, despus, y separada por un punto, la
propiedad en cuestin, por ltimo y separado por un signo "=" el nuevo
valor. Pues bien, para el caso de nuestra etiqueta el cdigo ser:
Private Sub btnSi_Click()
Label2.Visible = False
End sub
Puedes teclearlo tal cual en el Editor de cdigo, pero te ensear una
forma ms fcil y que te evitar muchos errores de sintaxis.
IntelliSense
El Editor de cdigo de Visual Basic posee una caracterstica muy
interesante que Microsoft llama IntelliSense. Consiste en que,
conforme vas escribiendo el cdigo, VB te ayuda a hacerlo. Veamos
como.
Colcate en el Editor de cdigo, justo debajo de la lnea Private Sub
btnSi_Click(), y teclea Label2 que es el nombre de la segunda etiqueta,
Pulsar la tecla Tab o hacer doble clic, lo cual copia la propiedad y deja el cursor
justo despus de ella.
Pulsar la tecla Espacio lo cual copia la propiedad y deja el cursor un espacio
despus de ella.
Pulsar ENTER lo cual copia la propiedad y deja el cursor en la siguiente lnea.
Del mismo modo, una vez pulses el sigo "=" aparece un cuadro de lista
con los valores posibles para dicha propiedad, en este caso False o True.
Con cualquiera de los mtodos antes descritos selecciona False y ya
est.
Aprovechando esta caracterstica, si no ests seguro de que objeto es el
que quieres modificar, puedes escribir primero el contenedor, en nuestro
caso, el formulario que contiene los objetos, as, teclea frmPrincipal y
en cuanto teclees el punto ".", aparece la el cuadro de lista que muestra
todos los objetos contenidos en el formulario. La lnea resultante sera:
Private Sub btnSi_Click()
frmPrincipal.Label2.Visible = False
End sub
Teclea las lneas de cdigo para los botones "Si" y "No". Para la matriz
de nmeros es un poco diferente as que lo haremos ms adelante. El
cdigo debe ser como el siguiente:
Private Sub btnSi_Click()
Label2.Visible = False
btnSi.Visible = False
btnNo.Visible = Flase
End sub
o bien:
Private Sub btnSi_Click()
frmPrincipal.Label2.Visible = False
frmPrincipal.btnSi.Visible = False
frmPrincipal.btnNo.Visible = Flase
End sub
segn uses la primera o la segunda sintaxis.
Para el caso de la matriz, y ahora vers que til nos va a resultas haber
creado una matriz con estos objetos en lugar de objetos independientes.
Como puedes ver en la ventana de propiedades, si seleccionas
cualquiera de los cuadros de texto, se llama lblElementoCM(n), donde n
representa un ndice dentro de la matriz. En nuestro caso n va desde 0,
que es el primer elemento, hasta 8, que es el ltimo, es decir, tenemos
9 elementos en nuestra matriz. Un mtodo para hacerlos todos visibles
sera escribir una lnea de cdigo por cada elemento para establecer la
propiedad Visible a True. En este caso, con slo 9 elementos, no resulta
muy engorroso, pero imagina que tuvieras 100 elementos o ms en la
matriz, entonces si sera una tarea un poco larga, tener que escribir una
lnea de cdigo para cada elemento de la matriz. Pero gracias a las
maravillas de la programacin, tenemos una estructura en VB que se
llama bucle For Next que nos va a simplificar mucho el trabajo. La
sintaxis de esta estructura es como sigue:
For
contador
[sentencias]
Next
inicio
To
fin
[Step
intervalo]
Label2.Visible = False
btnSi.Visible = False
btnNo.Visible = Flase
For
n
=
0
to
8
lblElementoCM(n).Visible = True
Next
End sub
Que traducido a lenguaje coloquial sera:
Para cada caso de n que va desde 0 hasta 8 en intervalos de 1 en 1,
hacer visible el elemento n de la matriz lblElementoCM lo cual es lo que
estbamos buscando. Como puedes ver, hemos reducido a 3 lneas lo
que de otra forma hubiera ocupado 9, esto supone un ahorro del
66.66%, pero lo ms sorprendente es que el cdigo ocupara las mismas
3 lneas si la matriz fuese de 100, 1000, un milln, etc., cualquier
tamao que tuviera la matriz con lo cual el ahorro es exponencial.
Un detalle importante que quiz ya te hayas preguntado: Por que la
lnea dentro del bucle est indentada? (desplazada hacia la derecha con
respecto al resto del texto). Tiene que ser as? La respuesta es NO,
pero es conveniente para la mayor claridad, legibilidad y mejor
entendimiento del cdigo. En este caso son muy pocas las lneas de
cdigo, pero conforme avancemos en el curso, los programas se
complicarn y entenders la utilidad de esta costumbre.
La gran prueba.
Por fin llegamos al final de la primera leccin. Nuestro primer programa
est casi terminado. Vamos a probarlo! (si es que no lo has hecho ya
impaciente). Para probarlo slo tienes que pulsar F5, el botn Iniciar
o men Ejecutar->Iniciar. Si todo va bien, vers tu formulario en el
centro de la pantalla con dos textos y dos botones. Si pulsas el botn ,
no debe pasar nada, pero si pulsas el botn , deben borrarse la segunda
etiqueta y los dos botones y adems aparecer el famoso cuadrado
mgico. Termina pulsando la para cerrar el formulario y volver al IDE.
(Si algo no va bien, anota el mensaje que te da y envamelo por correo)
Ejercicio de control.
Temas
o
o
Introduccin.
La entrada de datos.
Los cuadros de introduccin de datos. Inputbox.
Las Funciones.
La funcin InputBox.
Los cuadros de texto. Textbox
Los cuadros de texto con formato. Rich Textbox
Las estructuras de control de flujo del programa.
Las estructuras de decisin.
If...Then.
If...Then...Else.
Select Case.
El Algoritmo
Los Procedimientos.
Los Parmetros.
El Desarrollo.
El tipo de dato Array.
Ejercicio de control.
Introduccin.
Si has aprobado el examen y la prctica, en estos momentos debes
tener una pequea aplicacin que, a peticin del usuario, dibuja un CM
(Cuadrado Mgico) de 3x3. Pero los Cuadrados Mgicos pueden ser
mayores, de hecho, es infinito el nmero de CM's que podemos crear,
siguiendo
determinadas
reglas.
En esta leccin vamos a ampliar nuestra aplicacin con una nueva
La entrada de datos.
En la mayora de las aplicaciones, se requiere la intervencin del
usuario, para algo ms que abrir o cerrar ventanas, pulsar botones o
seleccionar elementos de listas o mens. En todos estos casos, la
aplicacin conoce todas las posibles respuestas, ya que pertenecen a un
conjunto
finito
de
opciones
posibles.
Pero que pasa cuando los datos que necesita la aplicacin son
imprevisibles?; por ejemplo: si necesitamos una fecha, la cantidad de
capital para calcular un rendimiento, un nombre de usuario, el tamao
de
un
CM,
etc.
Para estos casos Vb nos ofrece varias opciones. Cada una la veremos de
forma general y alguna de forma ms especfica. Estas opciones son:
variable = funcin([argumentos])
donde variable es la variable que almacenar el resultado de la funcin,
funcin es el nombre de la funcin y argumentos son los datos que
opcionalmente necesita la funcin.
La funcin InputBox.
Esta funcin muestra un cuadro de dilogo modal (ste es un trmino
tcnico para definir un formulario que ha de cerrarse antes de poder
continuar con el desarrollo normal del programa), que contiene un
Ttulo y un Mensaje (definibles), un cuadro de texto y dos botones y
.
Figura 2.1
NOTA: Estas son todas las posibilidades que tiene el usuario en este
punto. A menudo vers lo conveniente que es, durante el desarrollo
de una aplicacin, analizar todas las posibles acciones que puede
efectuar el usuario en un momento dado, ya que de esta forma
controlas los errores generados por acciones indebidas y evitas las
sorpresas de acciones inesperadas.
Analicemos todas las posibilidades:
Accin Efecto
Pulsar
cMiVariable=""
Pulsar
cMiVariable=""
Pulsar
cMiVariable=valor
(El resto de los parmetros los dejaremos con sus valores por omisin.)
La lnea de cdigo entonces ser:
cRazonCM=InputBox("De que tamao quieres el Cuadrado Mgico?. (Debe ser un
nmero impar entre 3 y 15 inclusive)", "Generador de Cuadrados Mgicos")
Esto nos genera un InputBox como el de la figura 2.3:
Figura 2.3
If..Then
If..Then..Else
Select Case
If condicin Then
instruccin(es)
End If
donde:
If
condicin1
Then
[bloque de instrucciones 1]
[ElseIf condicin2 Then
[bloque de instrucciones 2]]..
[Else
[bloque de instrucciones n]].
End If
donde primero se comprueba la condicin 1; si devuelve True se
ejecuta el bloque de instrucciones 1, en caso contrario, se comprueba la
condicin 2 y as sucesivamente hasta que una condicin devuelve True
o bien, si ninguna de las condiciones lo hace, se ejecuta el bloque de
instrucciones n,
La estructura de decisin Select Case.
En lenguaje natural equivale a "En el caso que...o que". Esta estructura
es muy similar a If...Then...Else. De hecho todo lo que hace Select
Case se puede hacer con If...Then...Else, slo que Select Case
consigue un cdigo ms legible cuando son varias las opciones. Su
sintaxis es:
Select Case expresinPrueba
[Case
listaExpresiones1
[bloque de instrucciones 1]]..
[Case
listaExpresiones2
[bloque de instrucciones 1]]..
.
.
.
[Case
Else
[bloque de instrucciones n]].
End Select
donde:
En concreto
If...Then.
para
nuestra
aplicacin
utilizaremos
el
primer
tipo
seguir
las
siguientes
reglas
Sub
cRazonCM
btnSi_Click()
As
Integer
cRazonCM = InputBox("De que tamao quieres el Cuadrado Mgico?." & Chr(13) &
"(Debe ser un nmero_ impar entre 3 y 15 inclusive)", "Generador de Cuadrados
Mgicos")
If (cRazonCM Mod 2 <> 0) And (cRazonCM >= 3 And cRazonCM <= 15) Then
GeneraCM
End
If
End Sub
El Algoritmo.
Nuestro siguiente paso es convertir todo lo que hemos visto
anteriormente en un Algoritmo, que es como en lenguaje de
programacin se conoce al conjunto de instrucciones que ejecutan
una
tarea
determinada.
A simple vista sabemos que se van a necesitar varias lneas de cdigo,
las cuales, sin problema, podemos colocar dentro de la estructura de
control If...Then, pero vamos a utilizar una de las caractersticas de Vb,
los procedimientos Sub.
Los Parmetros.
A diferencia de las funciones, los procedimientos o procedimientos
Sub no se pueden llamar incluyendo su nombre en una expresin. Para
llamar a un procedimiento Sub desde nuestro cdigo existen dos
mtodos diferentes:
Call
Nombre_del_procedimiento
Parmetro2,...Parmetron])]
Nombre_del_procedimiento
Parmetro2,...Parmetron]]
[(Parmetro1[,
[Parmetro1[,
por valor
por referencia
El Desarrollo.
Pasemos por fin al meollo del asunto, el desarrollo del algoritmo para
rellenar el CM. Primero vamos a definir qu tipo de dato necesitamos
para almacenar en memoria el CM antes de colocarlo en nuestro
formulario. Evidentemente no es un tipo de dato sencillo, es decir, no es
ni un Nmero ni una Cadena de caracteres, si no, un conjunto de
nmeros organizados en filas y columnas. A este tipo de datos se le
conoce como Matriz y en Vb se identifica con la palabra clave Array.
El tipo de dato Array.
GeneraCM
(pcRazonCM
As
Integer)
CuadradoMagico()
As
Integer
Redim CuadradoMagico(pcRazonCM, pcRazonCM)
End Sub
de esta forma, nuestro procedimiento crear una matriz diferente segn
el tamao elegido por el usuario.
Por que usar una Matriz? La respuesta es bien sencilla. En primer
lugar, es mucho ms cmodo trabajar en memoria al rellenar el CM que
sobre los labels del formulario y, adems, al tratarse de una matriz
cuadrada con filas y columnas, resulta muy fcil a la hora de referirnos a
cada elemento de la matriz como si de una celda de la matriz se tratara,
utilizando las dos dimensiones como equivalentes de la fila y la columna.
Una vez entendido esto, sigamos con el desarrollo del algoritmo.
valor_inicial = 1
valor_final = pcRazonCM x pcRazonCM
incremento = 1 (predeterminado)
GeneraCM(pcRazonCM
As
Integer)
Dim
CuadradoMagico()
As
Integer
Dim nFila As Integer, nColumna As Integer, n As Integer
Redim
CuadradoMagico(pcRazonCM,
pcRazonCM)
nFila
nColumna
For n
Cuerpo
Next
=
=
=
pcRazonCM
To
pcRazonCM
del
pcRazonCM
2
+
1
/
*
pcRazonCM
bucle
Else
nFila
=
nFila
1
End
if
Else
'Acciones a ejecutar si n NO es mltiplo de pcRazonCM
End If
Observa como indentamos (colocamos un poco ms a la derecha) las
lneas que pertenecen a una estructura; esto no es obligatorio, pero nos
ayuda a ver con mucho ms claridad el cdigo.
Por ltimo, para las acciones a ejecutar si n NO es mltiplo de
pcRazonCM, tenemos que el mtodo nos dice que tanto la fila como la
columna del siguiente elemento debe ser la siguiente pero que tanto si
la fila como la columna son la ltima, entonces deben ser la primera.
Y con esto concluye la Leccin II.
Ejercicio de control.
Como ejercicio de comprobacin de esta leccin debers hacer lo
siguiente:
1. Escribe el cdigo para las acciones a ejecutar si n NO es mltiplo de
2.
3.