Documente Academic
Documente Profesional
Documente Cultură
Por: Ariel Palazzesi @ viernes, 09 de mayo de 2008 Nota vista 5687 veces
Si alguna vez has sentido deseos de crear tus propios programas, estas de parabi
enes: en
NeoTeo te enseñaremos, paso a paso, como crear programas utilizando una de las
herramientas mas sencillas y potentes que puedes conseguir: Visual Basic. ¿Comenza
mos?
Veamos como instalarlo. Por supuesto, haremos clic sobre versión final en español , lo
que hará que nuestro navegador nos pregunte si deseamos guardar o ejecutar el prog
rama al
que lleva dicho link. Seleccionaremos ejecutar , y esperaremos unos segundos. Prime
ro
aparecerá un cuadro como el de la figura 1, indicándonos que esperemos, y luego algo
parecido a lo siguiente:
Figura 2 Figura 3
Figura 4: ¿Que vamos a descargar?
En la ventana de la figura 2 marcaremos (o no) la casilla que nos permite enviar
un
feedback a la gente de Bill Gates para que siga mejorando el producto, y en la s
egunda
aceptaremos las condiciones estipuladas en la licencia. Una vez que la hayamos l
eído de
punta a punta, ya podemos marcar la casilla que indica nuestra conformidad, y da
rle al
botón siguiente para continuar.
La siguiente decisión que debemos tomar (Figura 4) se refiere a si vamos a descarg
ar
solamente Visual Basic 2005 Express, o si también queremos instalar una versión redu
cida
del Microsoft SQL Server 2005. No hay demasiada diferencia de tiempo entre desca
rgarla
o no, así que no es mala idea hacernos con una copia de ella. Al fin y al cabo, no
seria raro
que en algún momento queramos escribir algún programa que haga uso de una base de
datos.
Al hacer clic en el botón siguiente , veremos la pantalla de la figura 5, en la que p
odremos
elegir la carpeta en que se instalará el paquete, y cuanto espacio necesitaremos.
Hemos
optado por mantener la que nos sugirió el software de instalación. Al darle a siguien
te
otra vez, estamos listos para comenzar con la descarga del resto del paquete (Fi
gura 6).
Aquí debemos hacer una aclaración. Debe haber pocos programas que brinden la
posibilidad de personalización de sus barras de herramientas como este IDE. Seria
muy
conveniente que no cambies de lugar las barras, cuadros o botones por ahora, par
a que la
disposición se parezca lo más posible a las capturas de pantalla que ofrecemos como
muestra. Eso hará más fácil de seguir las explicaciones.
Hemos marcado la barra que contiene las opciones del menú principal con un 1 (en roj
o,
no puedes no verlo). Desde allí es posible acceder a casi todas las opciones del V
isual
Basic 2005 Express, que iremos viendo a medida que resulten necesarias.
Un 2 señala la fila de iconos que representan las tareas que utilizaremos con mayor
frecuencia. Si alguna vez utilizaste alguno de los integrantes del paquete Micro
soft Office,
ya sabes como se utilizan estos iconos.
En 3 tenemos el Explorador de soluciones , que es básicamente una lista de cada parte
que compone nuestro proyecto, y que proporciona una forma rápida de llegar a cada
uno de
ellos.
La zona marcada con un 4 muestra (y nos permite modificar) las propiedades del obj
eto o
control que hayamos seleccionado en ese momento. Será una de las zonas que mas
emplearemos del IDE.
En 5 vemos el formulario que contendrá los elementos que conforman nuestra
aplicación. En el momento que el programa que estamos creando este listo, será la ve
ntana
que lo contenga. Allí depositaremos los botones, menues, etiquetas, y todo lo que
necesite
nuestra aplicación para llevar a cabo su tarea.
Por ultimo, 6 muestra el Cuadro de herramientas . Este menú, que se divide en varias
zonas, será el que proporcione todos los controles que necesitamos para completar
nuestra
aplicación. La forma de colocar alguno de ellos sobre el formulario es tan sencilla
como
arrastrarlo sobre este. La figura 11 muestra como hemos colocado un botón.
Lo hemos marcado con un círculo rojo, y también hemos puesto otro para que veas de q
ué
forma se modifico el contenido de la zona 4 , para reflejar la lista de las propied
ades que
este botón tiene.
La figura 12 muestra el mismo formulario, al que hemos agregado una serie de con
troles
diferentes.
Pero aún así, hay casos en que esto no basta. Veamos que podemos hacer.
Por ejemplo, no podemos poner otra sentencia If a continuación del then o else .
Para estos casos tenemos la versión larga del If , que ocupa todas las líneas que haga
falta, y que, en la practica, es la que más utilizaremos. El formato de esta alter
nativa es la
siguiente:
If condición then
sentencia1
sentencia2
sentencia3
.
End If
El funcionamiento es el mismo que cuando utilizamos los : en la versión de una sola
linea
para separar las sentencias unas de otras, pero se agrega la clausula End If al fi
nal para
que el compilador sepa donde termina el bloque de instrucciones correspondientes
al If
y donde comienzan las que pertenecen al resto del programa. Si realizamos el eje
mplo
anterior con este formato, nos quedaría:
If sujeto_edad > 18 then
sujeto_estado = adulto
End If
Ahora ya sabes por que, cada vez que pueden, los programadores eligen el If de un
a
línea . Pero donde realmente se luce es en los casos que el código a ejecutar es mas
extenso, ya que no solo permite un numero (teóricamente) infinito de sentencias de
todo
tipo en su interior, si no que es mucho más legible que el If de una línea con sentenc
ias
separadas por : . Y por supuesto, puede usarse con el Else :
If condición then
Sentencia_v1
Sentencia_v2
Sentencia_v3
.
Else
Sentencia_f1
Sentencia_f2
Sentencia_f3
.
End If
Pero lo más interesante es que pueden anidarse sentencias condicionales, unas dentro
de
otras. Eso permite la toma de decisiones realmente complejas. Y si somos ordenad
os
(comentando e indentando el código a conciencia), el programa seguirá siendo legible
a
pesar de la longitud que pueda tener.
Veamos un ejemplo. Supongamos que tenemos una variable, llamada sujeto_sexo , cuyo
valor puede ser H o M (por Hombre o Mujer ), y otra llamada sujeto_edad que
contiene (¡como no!) la edad del sujeto. El siguiente código:
If sujeto_sexo = H then Si el sujeto es HOMBRE
If sujeto_edad > 18 then Y tiene más de 18 años
sujeto = Varón mayor de edad
Else Si no .
Sujeto = Varón menor de edad
End If
Else Si el sujeto es MUJER
If sujeto_edad > 18 then Y tiene más de 18 años
sujeto = Mujer mayor de edad
Else Si no .
Sujeto = Mujer menor de edad
End If
End If
coloca en la variable sujeto una descripción de la persona basada en los datos conoc
idos.
Puede verse en que forma se han anidado un If dentro de otro. La indentación del códig
o
permite identificar fácilmente cada parte del programa.
Como puede verse, la forma mas corta de todas es la que emplea el IFF.
Conclusión
Hemos aprendido como hacer que nuestro programa pueda tomar decisiones utilizando
algunas de las varias formas que posee la sentencia if then . A medida que vayamos
escribiendo nuestros propios programas seremos capaces de determinar rápidamente c
ual es
la más conveniente en cada ocasión. En breve veremos cómo se emplean las restantes.
Como puede verse, es mucho más simple utilizar While que If Then y Exit Do .
Aclaramos que la condición evalúa que edad sea diferente de cero.
También podríamos haber resuelto el problema con el uso de Until :
Do Until edad = 0
edad = edad - 1
Loop
En este caso, el bucle se repetirá hasta que edad sea igual a cero. En estos dos u
ltimo
ejemplos puede darse el caso de que, si edad es igual a cero cuando se llega a l
a instrucción
Do , las instrucciones existentes en el interior del bucle no se ejecuten nunca.
El bucle se repetirá hasta que edad sea igual a cero.
La tercera forma que puede adoptar el bucle que estamos analizando es la siguien
te:
Do
Instrucciones
[Exit Do]
Instrucciones
Loop { While | Until } condición
Como puede verse, se ha delegado la capacidad de evaluar la condición al final del
bucle.
Esto tiene la particularidad de permitir que el grupo de instrucciones existente
s en el
interior del bucle se ejecuten al menos una vez, independientemente de que la co
ndición a
evaluar sea o no verdadera.
Nuestro ejemplo podría resolverse así:
Dim edad As Integer
edad = 20
Do
edad = edad - 1
Loop Until edad = 0
O asi:
Dim edad As Integer
edad = 20
Do
edad = edad - 1
Loop While edad <> 0
Se puede evaluar la condición al final del bucle.
En todos los casos puede utilizarse, entre las instrucciones que están dentro del
bucle, la
sentencia Continue Do , que hace que el control del programa salte nuevamente al
Do , repitiendo el ciclo actual.
Veamos ahora como utilizar While End
Si comprendiste la forma en que funciona el bucle "Do Loop" con la opción While , no
tendrás ninguna dificultad en aprender a usar While End .
While End tiene la siguiente estructura:
While condición
Instrucciones
[Exit While]
Instrucciones
[Continue While]
Instrucciones
End While
Lo primero que notamos es que en este bucle también existe la posibilidad de aband
onarlo
en cualquier momento, gracias a Exit While ; y que, al igual que antes, la sentenci
a
Continue While
Este es el tipo de bucle que debemos usar si deseamos repetir un conjunto de ins
trucciones
un número indefinido de veces. Esto ocurrirá mientras la condición sea verdadera. Es
menos flexible que Do...Loop , pero a muchas personas les resulta más sencillo de uti
lizar.
No tendrás ninguna dificultad en aprender a usar While End .
Su funcionamiento es el siguiente: si la condición es verdadera, se ejecutan todas
las
instrucciones hasta que se encuentra la instrucción End While . Luego, el control vue
lve a
la instrucción While y se comprueba de nuevo la condición. Esto se repite hasta que la
condición evaluada resulte falsa, en cuyo caso el control pasa a la instrucción que
sigue a la
instrucción End While .
Para poder compararla con las otras opciones vistas, vamos a escribir el código de
los
ejemplos anteriores utilizando While End :
Dim edad As Integer
edad = 20
While edad <> 0
edad = edad - 1
End While
Como puede verse, resulta muy simple de usar. Para terminar, tengamos presente q
ue si se
desea repetir las instrucciones un número fijo de veces, la instrucción For...Next sie
mpre
es la mejor opción.
GoTo
Esta instrucción es la oveja negra de todos los dialectos BASIC, aunque también existe
en otros lenguajes de programación.
Su función consiste en transferir, sin condiciones, la ejecución del programa a otro
punto
del mismo, identificado por una etiqueta (o número de línea) determinada. En realida
d, en
la prehistoria de la programación, en la época en que los lenguajes de programación eran
muy primitivos, la mayoría de los bucles se construían con GoTo .
De esta forma se lo utiliza en Visual Basic:
Instrucciones
Goto etiqueta
Instrucciones
Etiqueta:
Instrucciones
Cuando el programa se encuentra con GoTo etiqueta , salta a la instrucción siguiente
a
Etiqueta: . Etiqueta: puede estar antes o después del GoTo , lo que permite hacer
saltos hacia atrás o saltos hacia adelante . Tampoco hay límite entre la cantidad de
instrucciones que pueden escribirse entre el GoTo y la etiqueta: .
repetir:
edad = edad - 1
If edad > 0 Then
GoTo repetir
End If
Como puede verse, y a pesar de su poca longitud, el código resulta algo mas confus
o que
los otros ejemplos. En programas largos, de miles de instrucciones, con varios Go
To
saltando de un lado para otro, el seguimiento del programa puede convertirse en
una
pesadilla, incluso para la misma persona que lo escribió.
Con esto, damos por finalizada esta entrega del tutorial de programación en Visual
Basic.
Dentro de unos días publicaremos el capítulo siguiente.
Los controles, que pueden arrastrarse y soltarse sobre los formularios (Forms) d
e Visual
Basic, son componentes extremadamente importantes para la construcción de las
aplicaciones. Son, en resumen, los que permiten confeccionar la interfaz que el
usuario
utilizara para controlar las funciones de nuestro programa.
Proveen mecanismos para proporcionar información al usuario (Label, ToolTip,
PictureBox, TreeView, etc.), organizar los datos para que sean fácilmente interpre
tados
(GroupBox, TabControl, Panel, etc.), ingresar datos (TextBox, ComboBox, MonthCal
endar,
etc.), seleccionar una(s) opcion(es) de entre varias (ListBox, CheckBox, RadioBu
tton, etc.) o
interactuar con elementos que no pertenecen, necesariamente, a nuestra aplicación
(OpenFileDialog, SaveFileDialog, PrintDocument, etc.). Además, algunos controles
especiales nos proporcionan herramientas para manejar o complementar otros contr
oles
(ImageList, ToolTip, etc.)
No veremos absolutamente todos los disponibles, pero la información que
proporcionaremos en esta entrega y las dos o tres siguientes bastará para que el l
ector pueda
sacar provecho de todos los controles que posee Visual Basic. Esta es la paleta
de controles
disponibles:
Figura 1
Comenzaremos viendo como utilizar los Controles comunes . Es bastante difícil encontr
ar
alguna aplicación que no utilice alguno de estos controles como parte de su interf
az. El
primero de ellos, cuyo icono es una pequeña flecha, no es en realidad un control,
sino la
herramienta que podemos usar para mover o seleccionar alguno de los controles qu
e
tenemos en nuestro formulario.
Hecha esta aclaración, comencemos con el análisis. Lo primero que haremos será abrir e
l
Microsoft Visual Basic 2005 Express, seleccionemos Aplicación para Windows , y
asegurémonos que tenemos el Form1 en la pantalla, en modo diseño. Deberíamos tener a
la vista algo más o menos así:
Figura 2
Figura 3
El primer control que usaremos será Button . Como habrás adivinado, se trata del clásico
botón presente en prácticamente la totalidad de las ventanas de cada programa. Este
control
puede ejecutar una acción cuando el usuario hace clic sobre él.
Utilizando la flecha, arrastraremos uno hasta el formulario Form1 . No importa
demasiado, al menos por ahora, en que posición lo coloquemos, ni tampoco su tamaño.
Es
más, puede ser un buen momento para que pases unos minutos jugando con la flecha y e
l
control, para asegurarte que comprendes de qué forma puedes arrastrarlo por el for
mulario
o cambiar su tamaño. Una vez colocado el control, el formulario se verá como sigue:
Figura 4
Lo primero que vamos a aprender es como cambiarle el nombre, ya que Button1
difícilmente sea apropiado para nuestra aplicación. Vamos a modificar el botón para qu
e
termine la aplicación cuando le hacemos clic, así que un nombre apropiado para el se
ría
Salir . Debemos, como se ve en la imagen, utilizar el cuadro Propiedades para cambiar
el valor correspondiente al atributo Text del control. Simplemente, hacemos clic s
obre
ese renglón, y escribimos Salir (o lo que queramos poner). Debería quedar como la figu
ra
de la derecha.
Figura 5 Figura 6
Con esto tenemos el botón con el texto deseado escrito en él. Ahora, vemos como hace
r
para que, cuando el usuario haga clic sobre el control, la aplicación termine. Para
ello,
debemos escribir un trozo de código que se ejecute cuando esta acción tenga lugar. L
a
forma de hacerlo es muy sencilla: simplemente, damos un doble clic sobre el botón,
y
Visual Basic pasará al Form.vb, tal como se ve en la figura:
Figura 7
El IDE de Visual Basic nos facilita mucho las cosas. Tanto, que como puede verse
nos
lleva directamente al lugar exacto donde debemos escribir el código que se ejecuta
rá, en
tiempo de ejecución, al pulsar el botón. Como queremos que la aplicación termine cuand
o
esto ocurra, simplemente escribimos End :
Figura 8
Una vez hecho esto, ya podemos probar nuestro programa para ver si funciona
correctamente. Para ello, basta con presionar F5 o hacer clic sobre la flecha verd
e de la
barra de herramientas que tenemos en la parte superior del IDE, debajo del menú. E
l
programa arrancará, y se verá más o menos como sigue:
Figura 9
Obviamente, ya habrás hecho clic sobre el botón y comprobado cómo se cierra la ventana
.
Por supuesto, podemos hacer cosas mucho más interesantes con este control.
Aprovecharemos, de paso, para aprender a utilizar la función MsgBox(), que permite
desplegar pequeñas ventanas con un mensaje (y algunos botones) en ella. Su sintaxi
s es la
siguiente:
MsgBox(prompt[, buttons][, title][, helpfile, context])
Donde prompt, que obligatoriamente debe estar, es una cadena que representa el t
exto que
aparecerá en el cuadro de diálogo. La longitud máxima de prompt es de unos 1024
caracteres, variando con el ancho de los caracteres utilizados.
Buttons es un parámetro opcional. Es una expresión numérica que corresponde a la suma
de los valores que especifican el número y el tipo de los botones que se pretenden
mostrar,
el estilo de icono que se va a utilizar, la identidad del botón predeterminado y l
a modalidad
del cuadro de mensajes. Si no ponemos nada (o ponemos 0 ), solo aparecerá un botón con
el texto Ok que cerrará el cuadro de dialogo cuando le demos clic.
Title es otra cadena opcional, que se muestra en la barra de título del cuadro de
diálogo. Si
se omite este parámetro, en la barra de título se verá el nombre de la aplicación.
Helpfile también es opcional. Es la cadena que identifica el archivo de ayuda rela
cionado
con el cuadro de dialogo. Volveremos sobre este tema cuando tratemos la forma de
implementar ayuda interactiva en nuestras aplicaciones. El parámetro context también
se
relaciona con la ayuda.
Veamos un ejemplo. La siguiente línea
MsgBox("Aprendiendo Visual Basic", 0, "NeoTeo")
genera un cuadro de diálogo con el texto "Aprendiendo Visual Basic", un solo botón c
on el
texto Ok y el titulo NeoTeo . Tal cual se ve en la imagen:
Figura 10
Ahora bien, seguramente te estás preguntando ¿Cómo hago yo para enterarme que poner
para crear cada combinación de botones? . Y nosotros, rápidamente, te damos la
respuesta:
Tabla 1
Como puede verse, Visual Basic proporciona una palabra clave para que no tengamo
s que
recordar números extraños. El siguiente código
MsgBox("Error grave, se ha perdido la información",VbAbortRetryIgnore +
VbCritical,"Error grave")
Muestra cómo podemos utilizarlas. Y la figura de abajo el resultado que produce:
Figura 11
Tabla 2
Lo interesante de MsgBox() es que devuelve un código que nos indica que botón ha
pulsado el usuario. Esto significa que, si somos lo suficientemente hábiles a la h
ora de
escribir nuestros programas, podremos realizar diferentes acciones en respuesta
a la
respuesta (¡ops!) del usuario.
El siguiente código muestra un aviso de alerta con los botones Anular, Reintentar
y Omitir.
Luego, utilizando la instrucción If-Then, el programa analiza la respuesta del usu
ario y
muestra otro cuadro de diálogo que nos confirma cual fue el botón presionado:
Dim a As Integer
a = MsgBox("Error grave, se ha perdido la información", vbAbortRetryIgnore +
vbCritical, "Error grave")
If a = vbAbort Then
MsgBox("Presionaste Anular")
End If
If a = vbRetry Then
MsgBox("Presionaste Reintentar")
End If
If a = vbIgnore Then
MsgBox("Presionaste Omitir")
End If
Figura 12 Figura 13
Como puede verse, resulta muy simple utilizar los controles disponibles en Visua
l Basic.
Hoy no hemos visto más que una pequeñísima parte de las opciones de uno de sus
controles, pero afortunadamente, la mayor parte de las características y propiedad
es de un
control existen y se utilizan de la misma forma en casi todos los demás. Esto faci
litará
mucho nuestro aprendizaje.