PROGRAMACIÓN EN VISUAL BASIC personalizado

42
Universidad Tecnológica de Chile Sede Valdivia PROGRAMACIÓN EN VISUAL BASIC Sintaxis General y Procedimientos de Evento: En términos generales la sintaxis del lenguaje Visual Basic se reduce a : OBJETO . propiedad = valor y OBJETO . método {argumentos} Aspectos importantes de esta sintaxis son que se debe poner atención al punto que separa el objeto de la propiedad o método y, al signo igual que sigue sólo a la propiedad. El valor, o mejor dicho el tipo de valor indicará el tipo de propiedad. (Si el valor es entero entonces la propiedad es de tipo entero, si el valor es string la propiedad es de tipo string etc.). Página 1 de 42

Transcript of PROGRAMACIÓN EN VISUAL BASIC personalizado

Page 1: PROGRAMACIÓN EN VISUAL BASIC personalizado

Universidad Tecnológica de Chile Sede Valdivia

PROGRAMACIÓN EN VISUAL BASIC

Sintaxis General y Procedimientos de Evento:

En términos generales la sintaxis del lenguaje Visual Basic se reduce a :

OBJETO . propiedad = valor

y

OBJETO . método {argumentos}

Aspectos importantes de esta sintaxis son que se debe poner atención al

punto que separa el objeto de la propiedad o método y, al signo igual que

sigue sólo a la propiedad.

El valor, o mejor dicho el tipo de valor indicará el tipo de propiedad. (Si el

valor es entero entonces la propiedad es de tipo entero, si el valor es string

la propiedad es de tipo string etc.).

Note que el signo igual no se usa en los métodos. Para ellos se debe tener en

cuenta si necesitan de argumentos para funcionar correctamente. Por otro

lado, no todos los métodos necesitan de argumentos.

 

Argumentos

En el caso de los métodos son variables de entrada o valores que deben

conocerse previamente para que el método pueda ejecutarse correctamente.

La cantidad y el tipo de argumentos dependerá del método.

Página 1 de 31

Page 2: PROGRAMACIÓN EN VISUAL BASIC personalizado

Nuevamente, la práctica y el conocimiento de Visual Basic permitirán

discriminar de aquellos métodos que requieren argumentos de los que no los

necesitan.

Nota

Un argumento puede ser un valor de tipo entero, objeto, carácter, booleano,

etc.

Para poder entender el funcionamiento de un programa escrito en Visual

Basic se debe volver a la definición de Evento.

EventoAcción reconocida por un objeto. Estas acciones pueden ser producidas por otros objetos, el usuario y/o el Sistema Operativo. Dentro de la categoría otros objetos se encuentran la aplicación que posee el objeto que es capaz de reconocer acciones, así como también, objetos de otras aplicaciones.

No todos los objetos son capaces de reconocer todos los eventos. Por ejemplo, el objeto TextBox (cuadro de texto) es capaz de reconocer el evento de un Click del mouse sobre él. El objeto CommandButton también es capaz de hacerlo, pero el CommanButton no es capaz de reconocer el evento de cambio del texto escrito sobre él. El TextBox si lo puede hacer.

NotaVisual Basic provee herramientas para crear un nuevo CommandButton, que sea capaz de reconocer el cambio del texto escrito sobre él. Esto se verá más adelante ya que son materias que involucran el manejo de los Controles ActiveX.

Como ya se mencionó antes, Visual Basic es un lenguaje orientado a eventos (y no a objetos). De hecho, la programación en este lenguaje se hace en los eventos de los objetos, en los que se conocen como Procedimientos de Evento.

En el capítulo anterior a los Procedimientos de Evento se les llamó segmentos o bloques de código. Estos segmentos de código tenían eventos asociados. (Imagen N° 2, Capítulo 1).

Página 2 de 31

Page 3: PROGRAMACIÓN EN VISUAL BASIC personalizado

Procedimientos de Evento:

Sintaxis General

Private/Public Sub OBJETO _ EVENTO ( {argumentos} )<CODIGO>

End Sub

EjemploSupongamos que se desea crear un aplicación Visual Basic que reciba el nombre del usuario en un cuadro de texto y al presionar un botón tanto el botón como el cuadro de texto desaparezcan. Luego, el nombre del usuario debe aparecer en letras grandes en el Form.

SoluciónPrimero se deben poner en el Form los controles que se usarán. Usted ya sabe hacer eso. Ponga además una etiqueta (Label).

Luego, se debe dar a las propiedades de los controles los valores adecuados. La propiedad Visible del Label debe ser False. La propiedad Text del TextBox debe ser borrada (por defecto dice Text1, el nombre dado por Visual Basic al TextBox). La propiedad Caption del CommandButton debe decir Escriba su Nombre.

Ahora cuidado acá. . .aquí hay que poner atención :

Es necesario, dadas las exigencias de esta aplicación, escribir código Visual Basic.

Al hacer Doble Click con el mouse sobre el CommandButton se abre la Ventana Editora de Código. Esta ventana permite ver el contenido del Módulo de Código del Form que se encuentra asociado a todo Form. Es decir, cada Form posee uno.

 

Página 3 de 31

Page 4: PROGRAMACIÓN EN VISUAL BASIC personalizado

Imagen N° 7 : Vista de la Ventana Editora de Código. Al hacer dobleclick sobre el botón aparece la ventana mostrando el Procedimiento de Evento por defecto del botón.

Esta ventana muestra el Módulo de Código del Form1. Es en este módulo en donde se escribe la mayoría del código de un programa Visual Basic.Si se agregan más Form al proyecto, más módulos de código se agregarán.

NotaMás tarde se verán otros tipos de módulos de código. Los Módulos Estándar y los Módulos de Clase. Como avance, estos módulos hacen lo mismo, la diferencia es la forma en que lo hacen. El primero trabaja en base a, exclusivamente, código Visual

Página 4 de 31

Page 5: PROGRAMACIÓN EN VISUAL BASIC personalizado

Basic El segundo trabaja en base a los objetos definidos en él y que prestan alguna función específica.

En este módulo de código del Form van apareciendo los procedimientos de evento de cada objeto que se encuentre sobre el Form, según se hace doble click sobre ellos.Cuando se hizo doble click sobre el CommandButton apareció en el módulo del Form el procedimiento de evento click del Command1. (Command1 es el nombre dado por Visual Basic al CommandButton cuando fue puesto en el Form. Si se pusiera otro CommandButton, sin cambiar el nombre del primero, Visual Basic llamaría a este segundo CommandButton, Command2).

Luego, en la ventana editora de código del Form apareció :

Private Sub Command1 _ Click ( )

End Sub

En el espacio en blanco es donde se debe escribir código Visual Basic. Haga la comparación con la sintaxis general de un procedimiento de evento.

Volviendo al ejemplo. La idea es que al presionar el botón, tanto el textbox como el botón desaparezcan y el nombre del usuario, que había sido escrito en el textbox, aparezca escrito sobre el Form en letra grande.

El código a escribir debe ser más o menos el siguiente :

1                    Text1 . Visible = False2                    Command1 . Visible = False

3                    Label1 . Top = 04                    Label1 . Left = 0

5                    Label1 . Caption = Text1 . Text

6                    Label1 . Height = Form1 . Height7                    Label1 . Width = Form1 . Width

8                    Label1 . Alignment = 29                    Label1 . Font . Size = 22

10                Label1 . Visible = True

Los números escritos para cada línea no pertenecen a Visual Basic, no los escriba en el código.

Las líneas 1 y 2 hacen que los objetos Text1 y Command1 no puedan ser vistos sobre el Form.

Página 5 de 31

Page 6: PROGRAMACIÓN EN VISUAL BASIC personalizado

Las líneas 3 y 4 ubican el Label1 en una coordenada precisa dentro del Form1. Esquina superior izquierda.

La línea 5 es una de las más importantes. Esta línea es una asignación (así como se hacen asignaciones en otros lenguajes, como por ejemplo el lenguaje C). Específicamente, se asigna a la propiedad Caption del Label1 el contenido actual de la propiedad Text del Text1. (En el momento en que se hace la asignación, es decir, cuando se presiona el botón, el contenido de la propiedad Text del Text1 debe ser el nombre del usuario).Si suponemos que ya se está ejecutando la aplicación, note que el Label1 aun está invisible a estas alturas de la ejecución de la aplicación.

Las líneas 6 y 7 son también asignaciones. Se asigna a las propiedades Height y Width del Label1 los respectivos valores guardados en las propiedades Height y Width del Form1. Es decir, se da al Label1 las mismas dimensiones del Form1.

La línea 8 permite dar alineación centrada al texto guardado en la propiedad Caption del Label1.

NotaPor si no lo ha notado aun, la propiedad Alignment y otras propiedades, tienen un número entero asociado a sus posibles valores. Más tarde se verá lo que se llaman Constantes Visual Basic que solucionan el pequeño inconveniente de recordar qué número es el que sirve en un momento determinado.

La línea 9 permite dimensionar el tamaño de las letras del texto escrito en la propiedad Caption del Label1.

NotaEsta notación parece romper la sintaxis general del lenguaje Visual Basic indicada al principio del capítulo, pero no es así. La propiedad Font es de tipo Objeto (si. . .Objeto también es un tipo de dato, como lo es Entero, Booleano, String, etc.). Por consiguiente, Font, como todo objeto también tiene sus propiedades. Size es entonces una propiedad de Font y Font es a su vez propiedad de Label1. La sintaxis sigue siendo válida.

La línea 10 permite mostrar finalmente el Label1 y su contenido en el Form1.

En el módulo de código del Form1 se debe ver lo siguiente :

Página 6 de 31

Page 7: PROGRAMACIÓN EN VISUAL BASIC personalizado

Imagen Nº8 : Vista del módulo de código del ejemplo.

NotaVea que todo el código está dentro del procedimiento de evento Click del Command1. Es decir, cuando el usuario presione el botón con el mouse, todo ese código se ejecutará. Y si el usuario no presiona el botón nada del código será ejecutado.

Por lo anterior es que se dice que Visual Basic es orientado a eventos. Todo depende de la ocurrencia de un evento, sea este el click sobre un botón, el cambio en el texto de un textbox, el cambio de dimensiones de un Form, etc.

Ya debe haber notado que Visual Basic proporciona algunas ayudas al programador. De hecho, al escribir el nombre del objeto y el punto aparecen opciones de propiedades y métodos pertenecientes a ese objeto.

Página 7 de 31

Page 8: PROGRAMACIÓN EN VISUAL BASIC personalizado

 Imagen Nº 9 : Listado de opciones de propiedades y métodos de un objeto, como ayuda de Visual Basic. (en este caso, de un label llamado label1).

Propiedad Name (NOMBRE) de objetos:

Cómo se había mencionado, la propiedad Nombre (o Name) de un objeto juega un papel muy importante dentro de la programación Visual Basic. Tan importante es, que el dar un nombre determinado a un objeto se considera un muy buen hábito de programación.

En realidad, lo anterior no sólo es válido en Visual Basic.

Si bien es cierto que Visual Basic da un nombre a todos los objetos que se ponen en un Form, esto lo hace de forma automática. En el caso de TextBox, los llama Text1, Text2, Text3, etc. Para Label, los llama Label1, Label2, etc.

Si bien este proceso es bastante cómodo pues permite desligarse de la obligación de establecer esta propiedad de los objetos, puede convertirse en un inconveniente a mediano y largo plazo.

EjemploSuponga que implementa un Form con 15 Label, 25 TextBox, 5 CommandButton y 3 Image (Image es un control que ofrece Visual Basic, así como un TextBox o un Label, pero para el manejo de imágenes). En general, suponga un Form con muchos controles.

Cuando ya ha escrito el código respectivo de la mayoría de estos controles suponga que por algún motivo debe dejar este proyecto de lado, por ejemplo, por otro que en ese momento es más urgente (cosa no muy alejada de la realidad de un desarrollador).

Luego de un tiempo (que podrían ser semanas o meses) retoma su proyecto. Usted mismo se preguntará ¿Qué hace el text15? ¿Qué hace el Command3? ¿Qué texto tiene el Label8?

Por esto se acostumbra dar un nombre a todos los controles que se usan en un Form, incluso se da un nombre al mismo Form o Forms de la aplicación. Aun más, existe un listado de prefijos que, si bien no es un acuerdo mundial sobre el tema, es una opción bastante buena y útil.

Página 8 de 31

Page 9: PROGRAMACIÓN EN VISUAL BASIC personalizado

De aquí en adelante (y hasta el final del curso) se hará uso de los prefijos y se incentivará su utilización así como el hábito de dar un nombre descriptivo a los objetos según su uso o función dentro de la aplicación Visual Basic. Lista de Prefijos

OBJETO PREFIJO EJEMPLOForm frm frmMenuTextBox txt txtApellidoCommandButton cmd cmdGuardarImage img imgFoto1ComboBox cbo cboAreasListBox lst lstMunicipalidadesShape shp shpCirculoOptionButton opt optArea1CheckBox chk chkArea1Label lbl lblTitulo

A medida que se avance en el curso irán apareciendo más prefijos, pero los mostrados son los que con mayor frecuencia se usan en aplicaciones Visual Basic.

Variables y Constantes: La definición de variable siempre trae algún conflicto al tratar de explicar un concepto que, en realidad se explica por sí mismo. O por lo menos eso parece.o:p>

Variable es una porción de memoria que se ha destinado para guardar datos que van a cambiar dentro de la ejecución de una aplicación.

La variable que se maneja mentalmente y en el código de un lenguaje de programación es en realidad la misma, sólo que esta “variable mental” es simbólica. De ahí que el intento de definir algo simbólico no sea tan fácil. En todo caso, la definición dada representa perfectamente lo que se debe entender por variable.

Visual Basic, como un lenguaje de programación, necesita que las variables a usar en una aplicación sean declaradas.

Declaración de Variables:

En Visual Basic las variables pueden ser declaradas de dos maneras, como Públicas (Public) o Privadas (Private). Esta declaración tiene asociado otro concepto que es muy importante, el alcance (Scope).

El alcance (o Scope) de una variable indica si dicha variable es visible sólo en un Módulo de Código de un Form o es visible en toda la aplicación. El que sea visible

Página 9 de 31

Page 10: PROGRAMACIÓN EN VISUAL BASIC personalizado

significa que puede ser usada en un entorno determinado. Es decir, sólo será posible de usar en ese entorno, donde es visible.

Recuerde que un Módulo de Código es un módulo que está asociado a todo Form, es decir, todo Form posee uno.La importancia de un Módulo de Código radica en que es en este Módulo de Código donde se escribe gran parte del código del programa Visual Basic.

Sintaxis

Private <nombre de variable> As <tipo de variable>

Public <nombre de variable> As <tipo de variable>

EjemploDeclarar la variable CONTADOR como una variable de tipo entero, pero sólo visible para el Form.

SoluciónPrivate CONTADOR As Integer

Imagen N° 13 : Vista de la Declaración de una variable. La variable CONTADOR es declarada sólo para el Módulo de Código del Form como una variable de tipo entero.

Algunas consideraciones:

Ya que se pidió que la declaración de la variable fuera sólo para el Form, la variable se declara en la parte superior del Módulo de Código. De hecho esta parte del Módulo de código del Form se llama Sección de Declaraciones Generales. Nótese que una línea separa esta sección del resto del módulo

Página 10 de 31

Page 11: PROGRAMACIÓN EN VISUAL BASIC personalizado

Nótese también que el ListBox de Objetos indica (General) y el ListBox de Eventos indica (Declaraciones)..NotaLa línea de separación entre la Sección de Declaraciones Generales y el resto del Módulo de Código podría no aparecer. Eso depende de algunas opciones de configuración del ambiente de desarrollo de Visual Basic.

En realidad Visual Basic no obliga a hacer una declaración explícita de las variables que se usan en un programa. Siempre es aconsejable declarar las variables que se usen, por una cuestión de orden y buen hábito de programación.

Si no se declaran las variables, Visual Basic asume que son de tipo Variant. Variant es un tipo de dato general, aun más general que el tipo de dato Object. Eso significa que la porción de memoria asignada a las variables no declaradas es mucho mayor, ya que eventualmente se podría asignar a estas variables elementos tan grandes como objetos o tan pequeños como enteros simples. También se puede declara una variable como Variant en forma explícita.

EjemploDim strNombre As Variant

Lo mismo sería si la variable strNombre fuera usada sin declararla. Dada la falta de la declaración, Visual Basic asumiría que es de tipo Variant.

La verdad es que es atrayente no declarar las variables ya que Visual Basic lo hará por uno, se puede pensar que es un problema menos, pero no es así.

Primero, se usan más recursos de los necesarios.

Segundo, se dificulta la administración del contenido de las variables (ya que se puede guardar cualquier tipo de valor).

Tercero, se aumenta la posibilidad de errores al asignar un valor de un tipo de dato a una variable de otro tipo de dato.

Desde la versión 4 de Visual Basic, es posible asignar objetos a variables.

EjemploPublic X As FormSet X = Form1

Página 11 de 31

Page 12: PROGRAMACIÓN EN VISUAL BASIC personalizado

Primero se hizo la declaración de la variable X como un objeto de tipo Form y luego se asigna a esta variable el Form1.De aquí en adelante para referirse al Form1 se hará a través de la variable X.

EjemploX . BackColor = vbRed

Si una variable debe ser declarada a nivel de Módulo o nivel de formulario, debe ser declarada en este lugar específicamente. En la Sección de Declaraciones Generales.

Al ser declarada como Private, sólo es visible desde este Módulo de Código. No puede ser usada desde otro Módulo de Código perteneciente a otro Form.Por otro lado, el código escrito en los procedimientos de evento de este módulo pueden usar esta variable como si fuera propia.

 Imagen N° 14 : Alcance de Variable definida a nivel de Form. La variable X es de tipo Double y es definida en la Sección de Declaraciones Generales del Form como Private, es decir, sólo es posible de usar por los Procedimientos de Evento definidos dentro del Módulo de Código del Form. No es necesario volver a definir la variable dentro de los Procedimientos de Evento, estos la usan como si fuera propia.

Para hacer posible su uso desde otro Form debe ser declarada como Public. De hecho esto haría que esta variable sea posible de usar desde cualquier otro Form perteneciente al proyecto (o aplicación).

Ejemplo

Página 12 de 31

Page 13: PROGRAMACIÓN EN VISUAL BASIC personalizado

Declarar la variable X como una variable de tipo String. Esta variable debe ser posible de usar en toda la aplicación.

SoluciónPublic X As String 

 Imagen N° 15 : Declaración de una variable Pública a nivel de Form. Desde un Módulo de Código de otro Form (Form2) es posible usar la variable del Form1, pero es necesario indicar el origen de la variable. Un ejemplo de esto se muestra en el evento Click de un botón ubicado en el Form2. Más consideraciones

Ya habrá notado que luego de escribir el operador As y dejar un espacio, Visual Basic provee un pequeño listado de opciones de tipos de dato. Esta es otra opción de ayuda del ambiente de desarrollo de Visual Basic. Más tarde se verá donde es posible modificar estas, y otras opciones del ambiente de desarrollo.

EjemploDeclarar una variable. Esta variable sólo debe existir en un Procedimiento de Evento. La variable debe ser de tipo entero.

SoluciónDim intCuenta As Integer

Página 13 de 31

Page 14: PROGRAMACIÓN EN VISUAL BASIC personalizado

Algunas consideraciones:

Sí. Se había indicado que existían dos formas de declarar una variable (Public y Private), pero, a modo de permitir la compatibilidad de versiones de Visual Basic (Visual Basic 6 con las anteriores) la palabra clave Dim es usada dentro de los procedimientos de evento en vez de usar Private.

De hecho, no es posible usar Private (ni Public) para declarar variables dentro de un procedimiento de evento. Se genera un error aun antes de la ejecución de la aplicación.

Las variables declaradas dentro de un procedimiento de evento se llaman Variables Locales. Por lo tanto, para definir variables locales o variables dentro de un Procedimiento de Evento se debe usar la palabra clave Dim.

Nótese que al nombre de la variable se le ha agregado un prefijo para indicar el tipo de variable (en este caso entero, int). Al lado del tipo de dato, en la declaración de la variable, parece estar de más, pero piense en el uso de esta variable dentro del código. Si existiera mucho código escrito no sería tan fácil determinar rápidamente el tipo de la variable si no tuviera este prefijo tan descriptivo.

De aquí en adelante se usará la notación de prefijos tanto para las variables como para los objetos.

EjemploAsigne a la variable intCuenta el valor guardado en la propiedad Text de un TextBox llamado txtEdad.

SoluciónintCuenta = txtEdad . Text

Algunas consideraciones:

Se está asignando un dato de tipo string a una variable de tipo entero. Esto no representa problema. Visual Basic hace uso de la Conversión Automática. Pero hay que tener esto en cuenta y tomar las precauciones del caso.

EjemploDeclare la variable strNombre como de tipo String pero sólo para el Form donde será usada y haga que este valor string aparezca en un label llamado lblName.

SoluciónPrimero hay que declarar la variable a nivel de Form. En la Seción de Declaraciones Generales se debe hacer la declaración:

Página 14 de 31

Page 15: PROGRAMACIÓN EN VISUAL BASIC personalizado

Dim strNombre As String

Luego, en algún Procedimiento de Evento: lblName . Caption = strNombre

Algunas consideraciones:

En la Sección de Declaraciones Generales de un Módulo es posible usar tanto la palabra clave Dim como Private. En este caso, y sólo en este caso, es indiferente su uso.

Si la variable perteneciera sólo a un procedimiento de evento, obligatoriamente se debería usar Dim.

La asignación de la variable a la propiedad Caption de la etiqueta (o Label) se supone que fue hecha en algún procedimiento de evento.

A decir verdad no es posible escribir código Visual Basic fuera de un procedimiento de evento.Posteriormente, se verán otros tipos de procedimiento. Pero, fuera de estos y de la Sección de Declaraciones Generales, no hay otro lugar donde sea aceptable escribir código Visual Basic.

EjemploDeclarar una variable para contar las veces que un usuario presiona un botón.

SoluciónDebe ser más o menos claro que la variable debe ser declarada dentro de un Procedimiento de Evento, específicamente en el evento Click de un botón. Es decir, la variable debe ser una Variable Local.

Luego, según las indicaciones anteriores el código debe ser el siguiente:

Private Sub cmdBoton _ Click ( )Dim intContador as Integer

intContador=intContador + 1Print intContador

End Sub

El problema es que cada vez que el usuario presione el botón se ejecutará el código dentro del procedimiento de evento, es decir, cada vez que se presione el botón la variable se volverá a definir (o declarar) lo que hará que cada vez retome su valor inicial, el valor cero ( 0 ).

Página 15 de 31

Page 16: PROGRAMACIÓN EN VISUAL BASIC personalizado

Para resolver este problema se usa otra palabra clave Static en la definición de variables. Al definir la variable con la palabra clave Static el código debe quedar así:

Private Sub cmdBoton _ Click ( )Static intContador as Integer

intContador = intContador + 1

Print intContadorEnd Sub

El efecto de esta palabra clave es retener el valor de la variable. Ahora si, cada vez que el usuario presione el botón el valor de la variable será retenido y resguardado hasta el momento que se use su valor.

Justamente este tipo de declaraciones se usa cuando se desean definir variables usadas como contador.

Constantes

La definición de una constante parece un poco más sencilla luego de haber establecido la de una variable.

Una Constante es una porción de memoria destinada para guardar datos que no van sufrir cambios durante la ejecución de una aplicación. Es decir, al momento de ejecutar la aplicación estos valores son fijados y no son cambiados.

Sintaxis

Private Const <variable> As <tipo> = <valor>

Algunas consideraciones:

Las constantes sólo pueden ser declaradas como Private en un Módulo de Código de un Form y sólo en la Sección de Declaraciones Generales de un Módulo de Código de un Form.

Como convenio se suelen escribir en mayúsculas.

Para declara una constante que pueda ser usada en toda la aplicación debería ser declarada como Public, pero en otro tipo de Módulo de Cödigo. Este se verá más adelante en el curso.

Ejemplo

Página 16 de 31

Page 17: PROGRAMACIÓN EN VISUAL BASIC personalizado

Declarar una constante strEmpresa. Esta sólo será usada en los procedimientos de evento de un Form.

SoluciónPrivate Const STREMPRESA As String = “LADECO”

EjemploUse la constante del ejemplo anterior para asignar a un TextBox el nombre de la Línea Aérea guardada en la constante.

SolucióntxtEmpresa = STREMPRESA

Algunas consideraciones:

Una vez definida la constante no es necesario volver a hacerlo. La constante puede ser usada como un valor más.

 Instrucciones Condicionales y de Iteración: Estructuras Condicionales (If . . . Then . . .End if)o:p>

La sintaxis de una estuctura condicional en Visual Basic no es muy diferente de otros lenguajes. A decir verdad, el concepto es el mismo, sólo la manera de escribirlo es diferente.

Sintaxis:

If <Condicion> Then<código a ejecutar si la condición es verdadera>

Else<código a ejecutar si la condición es falsa>

End if

La condición puede ser de tipo Booleana o matemática (que es casi lo mismo).

Por ejemplo, la expresión 3 < 4 (3 menor que 4) es Verdadera. La expresión 5 = 8 es Falsa.

EjemploImplemente una aplicación Visual Basic que permita determinar si la clave ingresada a un TextBox es la clave que corresponde. Luego de escribir la clave, el usuario debe presionar un botón. Si la clave es la correcta debe aparecer “Bienvenido” en el TextBox. Si no es la correcta, debe aparecer “No Bienvenido”.

Página 17 de 31

Page 18: PROGRAMACIÓN EN VISUAL BASIC personalizado

SoluciónComo siempre, lo primero es la interfaz de usuario. Ponga un TextBox y un botón. Cambie las propiedades de los controles para hacer una mejor interfaz de usuario.

Luego de construida la interfaz de usuario, es obvio donde se debe escribir código…¿o no?...sí, debe ser en el evento Click del botón (según las especificaciones del problema).

El código a escribir en este procedimiento de evento debe ser :

Private Sub cmdBoton _ Click ( )Dim strClave as StringstrClave = txtClave . Text

If strClave = “CLAVE” ThentxtClave = “Bienvenido”

ElsetxtClave = “No Bienvenido”

End ifEnd Sub

Algunas consideraciones:

A modo de simplificar el ejercicio se ha considerado que la clave a verificar es el string “CLAVE”. Por supuesto, esta no es la manera de usar las claves de acceso a un sistema.

NUNCA ponga la clave del sistema en el código.

Por lo general la clave está en una Base de Datos. Pero el acceso a Base de Datos viene más tarde en el curso.

Parece algo extraño que se haga el traspaso desde el TextBox a la variable y luego se use la variable para verificar la clave. ¿Por qué no hacerlo directamente? Es decir:

If txtClave = “CLAVE” ThentxtClave = “Bienvenido”

ElsetxtClave = “No Bienvenido”

End if

La cuestión es que esto implica un paso extra antes de hacer la verificación de clave. Visual Basic debe ratificar si el TextBox existe y luego ver el contenido de la propiedad Text del TextBox para finalmente hacer la verificación de clave. Si este código se repite muchas veces podría afectar la rapidez con que la aplicación verifica la clave (que es precisamente su función y utilidad). Claro, se habla de repetir el proceso muchas veces, tanto como para hacer que el funcionamiento de la aplicación se vea comprometido.

Página 18 de 31

Page 19: PROGRAMACIÓN EN VISUAL BASIC personalizado

Por lo anterior, el uso de variables es mucho más rápido que usar las propiedades de un objeto.

Otras formas de las Estructuras Condicionales:

Algunas formas derivadas de estas estructuras se adaptan mejor a las exigencias de algunas aplicaciones. A fin de cuentas, lo importante es usar las mejores herramientas en cada caso puntual. Salvo que explícitamente se pida el uso de una herramienta en particular o las condiciones dadas de un problema no permitan una libre elección. Por lo general, lo segundo es lo habitual.

Estructura If . . .Then . . . ElseIf . . . End if

If <condición> Then<código a ejecutar si condición es verdadera>

ElseIf <condición2> Then<código a ejecutar si condición2 es verdadera>

Else<código a ejecutar si las condiciones anteriores son falsas>

End If

Ejemplo

Private Sub cmdBoton _ Click ( )Dim strClave as StringstrClave = txtClave . TextIf strClave = “CLAVE” Then

txtClave = “Bienvenido”ElseIf strClave = ”clave” Then

txtClave = “Debe escribir con mayúsculas”ElseIf strClave = “Clave” Then

txtClave = “Todos los caracteres deben ser mayúsculas”Else

txtClave = “No es la Clave Correcta”End If

End Sub

En general, si se tiene varias condiciones se debería usar esta estructura condicional. Pero, sólo si son pocas. Si las condiciones son muchas (más de tres) se debe usar otro tipo de estructura condicional.

Otra alternativa a la estructura condicional If . . . Then . . . End If es la estructura Select Case. Esta estructura se usa cuando hay muchas opciones diferentes de condición.

Página 19 de 31

Page 20: PROGRAMACIÓN EN VISUAL BASIC personalizado

Estructura Select Case

Select Case <expresión de prueba>Case <expresión1>

<código a ejecutar si la expresión1 es igual a la expresión de prueba>Case <expresión2>

<código a ejecutar si la expresión2 es igual a la expresión de prueba>Case <expresión3>

<código a ejecutar si la expresión3 es igual a la expresión de prueba>. . .Case Else <código a ejecutar si ninguna expresión anterior es igual a la expresión de prueba>End SelectEjemploEn un Form llamado frmRegiones se ha ubicado dos label, llamados lblTexto y lblCiudad, y un TextBox, llamado txtOpcion. En el label lblTexto se indica al usuario que debe escribir en el TextBox el número correspondiente de la región, dado el nombre de la capital regional que aparece en el label lblCiudad. 

 

Imagen N° 16 : Posible vista inicial del ejercicio. Se debe dar los valores a las propiedades para conformar la interfaz de usuario de la aplicación.

SoluciónUna vez construida la interfaz de usuario, la pregunta es en qué evento se debe escribir el código.

Para simplificar, una vez que el usuario escriba la opción de número de región, presionar la tecla Enter es una buena opción para iniciar el proceso de verificación de la región.

Luego, el evento debe pertenecer al textBox, ya que el cursor del mouse estará en el TextBox cuando la tecla Enter sea presionada.

Página 20 de 31

Page 21: PROGRAMACIÓN EN VISUAL BASIC personalizado

En Visual Basic, que el cursor del mouse esté en un objeto u otro se describe como tener el foco. Por lo tanto, mientras se escribe en el TextBox txtOpcion, este objeto tiene el foco.

Entonces, el evento a usar se llama KeyPress y debe pertenecer al TextBox txtOpcion. Este evento se inicia cada vez que una tecla es presionada, siempre y cuando el cursor del mouse este en el TextBox.

El Procedimiento de Evento de este evento es:

Private Sub txtOpcion_KeyPress(KeyAscii As Integer)

End Sub

Nótese que este evento posee un argumento llamado KeyAscii y es de tipo entero. Este argumento es absolutamente necesario para resolver el problema de discriminar entre las teclas presionadas por el usuario.

Es decir, la cuestión es cómo responder a la siguiente pregunta: ¿Cómo se va a saber si el usuario presiona la tecla Enter?

Toda tecla alfanumérica (números y letras) y algunas otras teclas como la Enter poseen un código que las identifica. Este código es el Código Ascii.

Luego, al presionar una tecla, KeyAscii contendrá el Código Ascii de la tecla presionada.

El código Ascii de la tecla Enter es 13. Así que usando un simple bloque If se resuelve ese problema.

El código debe ser:

Private Sub txtOpcion_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then

End IfEnd Sub

Ahora falta resolver el problema de las ciudades, regiones y opciones.

El código debería ser:

intOpcion = txtOpcionSelect case intOpcionCase 1

lblCiudad . Caption = “Anda lejos”Case 2

lblCiudad . Caption = “Anda lejos”

Página 21 de 31

Page 22: PROGRAMACIÓN EN VISUAL BASIC personalizado

Case 3lblCiudad . Caption = “Anda lejos”

Case 4lblCiudad . Caption = “Se acerca”

Case 5lblCiudad . Caption = “Se acerca”

Case 6lblCiudad . Caption = “Se acerca”

Case 7lblCiudad . Caption = “Casi llega”

Case 8lblCiudad . Caption = “Correcto”

Case 9lblCiudad . Caption = “Se pasó”

Case 10lblCiudad . Caption = “Se aleja”

Case 11lblCiudad . Caption = “Se aleja”

Case 12lblCiudad . Caption = “Anda lejos”

Case 13lblCiudad . Caption = “Anda lejos”

End Select

Con este código se resuelve el problema. Pero ya que existen opciones que se repiten es posible deshacerse de algunas líneas que, en realidad están de más.

El código debería ser:

intOpcion = txtOpcionSelect case intOpcionCase 1, 2, 3, 12, 13

lblTexto . Caption = “Anda lejos”Case 4, 5, 6, 10, 11

lblTexto . Caption = “Anda cerca”Case 7

lblTexto . Caption = “Casi llega”Case 8

lblTexto . Caption = “Correcto”Case 9

lblTexto . Caption = “Se pasó”End Select

Aun más, si el usuario escribe un número que no está entre 1 y 13 sería bueno darle un mensaje correspondiente.

Agregando lo anterior, el código final debe ser:

Página 22 de 31

Page 23: PROGRAMACIÓN EN VISUAL BASIC personalizado

Private Sub txtOpcion_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then

intOpcion = txtOpcionSelect case intOpcionCase 1, 2, 3, 12, 13

lblTexto . Caption = “Anda lejos”Case 4, 5, 6, 10, 11

lblTexto . Caption = “Anda cerca”Case 7

lblTexto . Caption = “Casi llega”Case 8

lblTexto . Caption = “Correcto”Case 9

lblTexto . Caption = “Se pasó”Case Else

lblTexto . Caption = “Sólo existen 13 regiones”End Select

End IfEnd Sub

Sólo el tratar de imaginar el código necesario usando sólo la estructura If … Then … End if hace ver las bondades de la estructura Select Case.

Tenga en mente el evento KeyPress, es un evento muy útil y muy usado en muchas aplicaciones Visual Basic, sobre todo cuando se desea que la aplicación pueda discriminar entre teclas presionadas.

Estructuras de Control de Repeticiones

Basta con pensar en que se desea repetir una operación o un proceso una cierta cantidad de veces para ver que es necesaria alguna estructura de repetición dentro del lenguaje. Visual Basic posee Estructuras de Control de Repeticiones así como existen en otros lenguajes.

En Visual Basic existen esencialmente dos estructuras de control de repeticiones. La estructura Do . . . Loop y la estructura For . . . Next.

Estructura Do … Loop

Esta estructura se divide en cuatro opciones para el programador:

a)                  Do … Loop Whileb)                 Do … Loop Untilc)                  Do While … Loopd)                 Do Until … Loop

Página 23 de 31

Page 24: PROGRAMACIÓN EN VISUAL BASIC personalizado

En realidad estas estructuras son muy similares a las de otros lenguajes ya conocidos por el lector.

Las estructuras Do … Loop While y Do While … st1:place>Loop funcionan de manera similar.

Do<código que se repetirá mientras la condición sea verdadera>

Loop While <condición>

Nótese que la primera vez el código se ejecutará, independiente de la condición, de ahí en adelante la repetición dependerá exclusivamente de la condición.

Do While <condición><código que se repetirá mientras la condición sea verdadera>

Loop

Nótese que el código se repetirá mientras la condición sea verdadera, incluyendo la primera vez.

Las otras estructuras tienen una sutil pero importante diferencia.

Do<código que se repetirá hasta que la condición sea verdadera>

Loop Until <condición>

Igual que antes, la primera vez no es dependiente de la condición.

Do Until <condición><código que se repetirá hasta que la condición sea verdadera>

Loop

Se sugiere revisar estas estructuras con la palabra clave Until y asegurarse que se ha comprendido su funcionamiento.

Ejemplo

En la Sección de Declaraciones GeneralesDim x As BooleanDim y As Integer

En el evento Click de un botónDo While x = True

<código que puede cambiar el valor de x a False (Falso)>

Página 24 de 31

Page 25: PROGRAMACIÓN EN VISUAL BASIC personalizado

y = y +1LoopPrint “y = ” & y

Algunas consideraciones:

¿Cuántas veces se repitió el incremento de x?...Respuesta: depende de si x cambió su valor a True (Verdadero).

Ejemplo

En la Sección de Declaraciones GeneralesDim x As Integer

En el evento Click de un botónDo

x = x +1Loop While x < 5Print “x = ” & x

¿Ahora cuántas veces se repitió el incremento de x?...Respuesta: 4 veces.

El comando Print permite imprimir en el Form lo que se indique. A través del uso de los caracteres de concatenación de string (recuerde que tanto el & como el carácter + son caracteres de concatenación) es posible armar frases completas e imprimir una serie de valores de variables de una aplicación.

Estructura For … Next

Esta estructura de repetición se usa cuando, a diferencia de los casos anteriores, se sabe la cantidad de repeticiones (o iteraciones) que es necesario realizar.En las estructuras anteriores la cantidad de repeticiones dependía de una condición, pero no se podía especificar cuantas veces se haría la repetición.

For <contador> = <inicio> To <final><código que se repetirá mientras no se llegue al final>

Next <contador>

Ejemplo

For i = 1 To 10Print i

Página 25 de 31

Page 26: PROGRAMACIÓN EN VISUAL BASIC personalizado

Next i

Algunas consideraciones:

Este código puede ser puesto en el evento Click de un botón. La variable i puede ser declarada dentro del procedimiento de evento o en la Sección de Declaraciones Generales del Form.

El comando Print imprimirá los valores de la variable i en el Form.

¿Cuál es valor de i al terminar la repetición?...Respuesta: 11. Verifíquelo.

Tenga en cuenta que el contador de una repetición For…Next siempre terminará con uno más que el valor indicado como final.

Hay una excepción a lo indicado anteriormente. Puede darse el caso en que bajo ciertas circunstancias sea necesario salir de la repetición (o quebrar el ciclo). Para hacer esto se usa el comando Exit For.

Ejemplo

For i = 1 To 10If i = 5 Then

Exit ForElse

Print iEnd if

Next i

Algunas consideraciones:

Cuando i tenga el valor 5 el ciclo será quebrado.

¿Hasta dónde llegará la cuenta en el Form?…Respuesta: Se imprimió hasta 4.Verifíquelo.

Las estructuras de repetición anteriormente vistas también poseen su comando para quebrar el ciclo. En estos casos el comando es Exit Loop.

Página 26 de 31

Page 27: PROGRAMACIÓN EN VISUAL BASIC personalizado

Ejemplo

En la Sección de Declaraciones Generales

Dim x As BooleanDim y As Integer

En el evento Click de un botón

Do While x = True<código que puede cambiar el valor de x a False (Falso)>If x = False Then

y = 0Exit Loop

End Ify = y +1

LoopPrint “y = ” & y

Si en un momento determinado x cambia de Verdadero a Falso, la condición del bloque If será verdadera y el ciclo se quebrará. Antes de esto, a la variable y se le asignará el valor 0 (cero). 

Cuadros de Mensaje y Cuadros de Entrada de Datos:

Antes de iniciar los ejercicios serán presentadas dos funciones de Visual Basic que se encuentran entre las más ampliamente usadas en cualquier aplicación Visual Basic.

Función MsgBox

Esta función permite mostrar al usuario avisos o mensajes en pantalla. Es posible supeditar estos mensajes a ciertas circunstancias o valores determinados de variables.

Sintaxis

MsgBox Prompt, Button, Title

Algunas consideraciones:

Página 27 de 31

Page 28: PROGRAMACIÓN EN VISUAL BASIC personalizado

Prompt corresponde al mensaje que el usuario verá en pantalla.

Button indica tanto la imagen como el botón que aparecerá en el Cuadro de Mensaje (o MsgBox). En el ejemplo, sólo se indica una imagen, la de información. Al no indicar un botón en particular Visual basic asume que debe aparecer sólo el botón por defecto, el de Aceptar (u OK).

Title corresponde al string que aparece en la barra de título del Cuadro de Mensaje (o MsgBox)

Ejemplo 

  Imagen N° 17 : Uso de la función MsgBox dentro de un trozo de código.

Si se hace una revisión rápida de los ejemplos expuestos con anterioridad se podrá ver que cada vez que se quería dar un mensaje al usuario se usaban Label o TextBox, incluso en algunas ocasiones hasta CommandButton. Si bien no es un error hacer esto, lo mejor, dado que fueron diseñados para eso, es usar unos MsgBox.Función InputBox

Esta función de Visual Basic permite poner en pantalla un cuadro de mensaje con un TextBox incluido. Así se da la ocasión al usuario para ingresar valores a la aplicación.

Sintaxis

X = InputBox ( Prompt, Title, Default, XPos, YPos )

Prompt es el mensaje que acompaña al TextBox y que, generalmente, da las indicaciones sobre el valor que se debe poner en el TextBox.

Title es el string de texto que aparece en la Barra de Título del Cuadro de Entrada de Datos.

Página 28 de 31

Page 29: PROGRAMACIÓN EN VISUAL BASIC personalizado

Default es el valor que aparece en el TextBox para que el usuario tenga algún conocimiento sobre el valor que debe poner en el TextBox (formato, rango, tipo, etc.)

XPos e YPos indican la posición que se desea para este Cuadro de Entrada de Datos

Ejemplo

En un Procedimiento de Evento Click de un botón:

variable = InputBox (“Hola”, “Titulo del InputBox”, “Valorpordefecto”)

Algunas consideraciones:

El único argumento obligatorio es el Prompt (el mensaje)

Comparando con el MsgBox se verá que en este caso se deben usar los paréntesis y además se hace uso de una variable. Esto es obligatorio.

Ya que el InputBox recibirá un valor de parte del usuario, este valor debe ser guardado en algún lugar durante la ejecución de la aplicación. De ahí el uso de la variable.Los paréntesis son, sencillamente, por reglas del lenguaje.

Imagen N° 18 : Ejemplo de InputBox. El Prompt es el string “Hola”, el Title es el string “Titulo del InputBox” y Default es el string “Valorpordefecto”.

Lo usual es que cuando se necesita que el usuario ingrese un valor a la aplicación se use el InputBox. Y cuando se deba dar un aviso al usuario se use en MsgBox.

En realidad, el MsgBox también puede capturar decisiones del usuario, y dadas éstas, la aplicación seguirá un curso de acción según su programación. Para esto la sintaxis del MsgBox cambia un poco y se asemeja a la de un InputBox.

Sintaxis

W = MsgBox ( Prompt, Button, Title)

Página 29 de 31

Page 30: PROGRAMACIÓN EN VISUAL BASIC personalizado

Aquí el argumento Button juega un papel muy importante. Las opciones posibles para este argumento son variadas: 

 

Imagen N° 19 : Opciones para el argumento de la función MsgBox usada para rescatar una opción del usuario.

Luego, al seleccionar una opción, por ejemplo la opción vbYesNo, tendrá el efecto que el MsgBox mostrará dos botones, uno con un Yes (Si) y otro con un No.

La variable, que en este ejemplo se llama W, guardará la elección que el usuario haga entre estas dos opciones.

EjemploPoner un botón en un Form. Al presionar este botón se debe consultar al usuario si desea continuar con la aplicación o si desea terminar la ejecución.

SoluciónLuego de hacer la interfaz de usuario, el evento click del botón debe alojar el siguiente código Visual Basic.

W = MsgBox ( “¿Desea terminar la aplicación?”, vbYesNo, “Consulta” )If W = vbYes Then

EndEnd If

NotaAparece vbYes en el código, que es lo que se conoce en términos generales como Constante Visual Basic. También son constantes Visual Basic las opciones vbNo, vbCancel, etc. Cada una de las constantes Visual Basic tiene un valor numérico asociado.

En la ayuda de Visual Basic que viene con el MSDN puede encontrarse un completo listado de las constantes Visual Basic para ámbitos diferentes.

Página 30 de 31

Page 31: PROGRAMACIÓN EN VISUAL BASIC personalizado

Su importancia se manifiesta cuando no es posible recordar el valor númerico asociado a una constante Visual Basic específica. A medida que sea necesario para el desarrollo del curso se irán mostrando más opciones para este importante elemento del lenguaje. 

El tema del texto.

Que tiene ejemplos y soluciones.

Las imágenes.

Página 31 de 31

NOMBRE JONATTAN ALEJANDRO ARRIAGADA IMIGO

CARRERA INGENIERIA EN INFORMÁTICA