You are on page 1of 8

Servicio Nacional de Aprendizaje – SENA

Fecha:
Programa de formación: Técnico en Sistemas Versión 1 Febrero 2 de 2011
Nivel: Técnico Versión 1.0
Sistema de Gestión
de la Calidad GUIA DE ACTIVIDADES DE PROGRAMACIÓN OREINTADA A EVENTOS Página 1 de 8

Nombre del Proyecto: ADMINISTRACIÓN DEL SOPORTE TÉCNICO EN Duración en meses:


SISTEMAS A INSTITUCIONES EDUCATIVAS. 18 meses
Fase del Proyecto:

CONCEPTUALIZACIÓN

Actividad de Proyecto Duración en meses de


la actividad
Recopilar información relacionada con el proyecto 4 meses

Actividades de Aprendizaje Duración en horas de


Guía de conocimiento. la actividad

Competencia: Resultados de Aprendizaje: Duración en horas del


220501046 – APLICAR 22050104604 - APLICAR resultado:
HERRAMIENTAS OFIMÁTICAS, CONTROLES Y ESTRUCTURAS 90
REDES SOCIALES Y BÁSICAS DE PROGRAMACIÓN
COLABORATIVAS DE ACUERDO DE UN LENGUAJE ORIENTADO
CON LE PROYECTO A A EVENTOS DE ACUERDO CON
DESARROLLAR. EL PROBLEMA A SOLUCIONAR.

Visual Basic - Guía del Estudiante Cap. 2

Lenguaje Basic del Visual Basic.


No ha sido un juego de palabras. VB emplea unas instrucciones casi iguales a las que emplea
Quick Basic. Sin embargo ha añadido otras nuevas instrucciones, inherentes con la
programación visual. Vamos a estudiar aquí las instrucciones y definiciones mas sencillas,
comunes a QB y VB.

Sentencias condicionales.

Llamamos sentencias condicionales a aquellas que se realizan si se cumple una determinada


condición. Son las sentencias por las que empieza cualquier texto de Basic, y este no va ser
menos.

La sentencia condicional más usada es:

Si se cumple una condición Entonces

Realiza estas instrucciones

Si no se cumple

Realiza estas otras instrucciones

Visual Basic - Guía del Aprendiz Sena Capítulo2 Página 1


Fin de la sentencia.

Así de fácil es programar en Basic. Lo que ocurre es que esta herramienta habla inglés, y lo
descrito anteriormente toma la forma:

If condición Then
Instrucciones
Else
Otras instrucciones
End If

En este ejemplo, o se cumple una condición y ejecuta unas determinadas instrucciones, o no


se cumple, y ejecuta otras instrucciones distintas. Puede ocurrir que, caso de no cumplirse la
condicion primera, se abra un abanico de dos o tres posibilidades. La sentencia condicional
tendría entonces la forma:

If condición 1 Then
Instrucciones
ElseIf Condición 2
Otras instrucciones
ElseIf Condición 3
Otro juego de instrucciones
Else
Instrucciones que debe realizar caso de no cumplir las condiciones 1, 2 y 3.
End If

Como decíamos anteriormente, este es el tipo de sentencia condicional mas usada.

Existe otra sentencia condicional muy usada: Select Case

Su nombre casi nos define lo que es: Selecciona, dependiendo del caso, un determinado juego
de instrucciones:

Select Case variable ' variable es una variable que puede tomar los valores (p.e.)
de 1 a 4

Case 1
Instrucciones a ejecutar en caso de que variable = 1
Case 2
Instrucciones a ejecutar en caso de que variable = 2
Case 3
Instrucciones a ejecutar en caso de que variable = 3
Case 4
Instrucciones a ejecutar en caso de que variable = 4
Case Else
Instrucciones a ejecutar en caso de que variable sea distinta a los valores
anteriores
End Select

Este procedimiento resulta mucho mas sencillo y rápido que las sentencias If Then Else
vistas anteriormente, cuando el margen de elección es mayor que 2.

Puede agrupar varios valores en una misma línea. Por ejemplo, si tiene 100 valores posibles, y
el tratamiento es igual para varios de ellos, puede agruparlos así:

Visual Basic – Guía del aprendiz Sena Capítulo 2 Página 2


Select Case Valor
Case Is < 20
Instrucciones
Case Is = 20
Instrucciones
Case Is = 21, 22, 23, 24, 25, 26
Instrucciones
Case Is > 26
Instrucciones
End Select

Cuando lo que queremos es elegir un valor, no ejecutar instrucciones como hacíamos


anteriormente, disponemos de otras dos funciones: Choose y Switch.

Switch toma una serie de parámetros, todos por parejas. El primer término de cada pareja es
la expresión a evaluar. El segundo es el valor que tiene que devolver. En realidad Switch es
una función (las funciones las veremos muy pronto)

A = Switch (B=1, 5, B=2, 7, B=3, 11)

Esta instrucción obtiene un valor para A que dependerá del valor que tome B entre los valores
posibles (1, 2 ó 3)

La sentencia Choose es casi igual, cambia solamente la forma. La misma intrucción anterior
puede realizarse con Choose de la siguiente forma:

A = Choose ( B, 5, 7, 11 )

En estas sentencias, Switch y Choose, si el valor de B no coincide con ninguno de los


valores que se le habían establecido (1, 2 ó 3 en nuestro caso), la sentencia devuelve el valor
Nulo ( Null ). Esto puede producir algún error si no se contempla esa posibilidad.

Las sentencias Switch y Choose no se usan mucho en programación. Parece que los
programadores o no las conocen o se lían (y es comprensible) al utilizarlas. Le garantizo que
puede llegar a ser un gran programador sin necesidad de utilizarlas. Use preferentemente If
End If y Select Case.

Otra sentencia condicional: IIF

Devuelve uno de entre dos valores, dependiendo de la evaluación de una expresión.

Sintaxis Iif (Expresión, SiEsCierto, SiEsFalso)

Expresión es la expresión a evaluar.

SiEsCierto Valor o expresión devuelta si Expresión es True.


SiEsFalso Valor o expresión devuelta si Expresión es False.

Observaciones

IIf siempre evalúa SiEsCierto y SiEsFalso, aunque sólo vaya a devolver una de ellas. Por esta
razón, deberá vigilar que no se produzcan efectos no deseados. Por ejemplo, si al evaluar
SiEsFalso se produce un error de división entre cero, se generará un error aunque Expresión

Visual Basic – Guía del aprendiz Sena Capítulo 2 Página 3


dé como resultado True.

Como ejemplo, en el formulario de nuestro primer programa introduzca un nuevo botón de


comando. Introduzca también un TextBox. Vea que poco a poco vamos metiendo cosas
aunque no las conocemos todavía. Mas tarde las conocerá. El TextBox tendrá por nombre
Text1. Haga doble click sobre el botón de comando e introduzca el siguiente código :

Private Sub Command2_Click()


Dim MiVariable As String
MiVariable = IIf(Clng(Text1.Text) > 100, "Es mayor", "Es menor")
Label1 = MiVariable
End Sub

Al ejecutar el programa, debe introducir un valor numérico en Text1. Si ese valor numérico es
menor que 100, MiVariable tomará el valor “Es menor” (No se cumple la condición expresada
en el primer parámetro Text1.Text > 1000). Si introduce una cantidad mayor, se cumple esa
condición, por lo que MiVariable tomará el valor “Es mayor”. El valor que toma la variable
puede verlo en Label1.

Fíjese que hemos declarado MiVariable como String, ya que va a contener un dato tipo cadena
de caracteres.

Con estas sentencias condicionales es posible realizar bifurcaciones del programa, cambiar las
propiedades de un objeto, obtener resultados de operaciones, ....

Sentencias de bucle.

Es muy común utilizar bucles a lo largo de un programa. Un bucle es una sucesión repetitiva
de instrucciones, que se estarán realizando mientras se cumpla una condición o mientras no se
cumpla otra condición. Es tan sencillo como esto:

Mientras condición

Instrucciones

Fin del bucle

Existen dos formas de bucle: Una, que realiza un número determinado de recorridos por el
bucle. Es el denominado bucle por contador. Otra, realiza el bucle hasta que se cumpla (o deje
de cumplirse) una condición. Es el llamado bucle por condición.

Bucle por contador

Realiza el bucle tantas veces como le indiquemos. Por ejemplo, en este bucle nos va a
presentar las 26 letras mayúsculas del alfabeto inglés

For N=65 To 90
Label1.caption = Chr ( N )
Next N

Este "programa" nos presentará en una caja (Label) los caracteres cuyo número ASCII vaya
desde el 65 (A) al 90 (Z) Comenzará presentando el correspondiente al número 65, e irá
presentando sucesivamente el 66, el 67, etc., hasta llegar al 90, donde se parará.

Bucles por condición

Visual Basic – Guía del aprendiz Sena Capítulo 2 Página 4


Ejecuta las instrucciones del bucle mientras se cumple una condición

X=0
Do While X < 1000
X=X+1
Loop

El programa toma una variable ( X ) que previamente tuvimos la curiosidad de ponerla a cero,
e incrementa su valor una unidad. Analiza si el valor de X es menor que 1000, y si es cierto,
vuelve a realizar el bucle. Así hasta que X ya no sea menor que 1000. Al dejar de cumplirse
que X sea menor que 1000, sale del bucle. Acabamos de realizar un temporizador, y también
de exponer las sentencias condicionales y los bucles, inicio de cualquier curso de Basic. Como
final de lección, se propone un problema. Con el primer bucle, donde visualizábamos los
caracteres A a la Z, posiblemente no nos diese tiempo de ver cada una de las letras que iban
apareciendo en la pantalla, en la etiqueta Label1, dado que cambiaría con mucha velocidad, y
solamente veríamos la Z, que es donde se detuvo el programa. Podemos poner un
temporizador cada vez que presente una letra, y así nos dará tiempo a verla. Con los dos
bucles vistos anteriormente ya podemos hacerlo.

Si lo que queremos es que el programa se ejecute mientras no se cumpla una determinada


condición, la sentencia será:

X=0
Do Until X > 1000
X=X+1
Loop

Observe que la diferencia entre una y otra es la condición, While para indicar Mientras se
cumpla que ... y Until para indicar Mientras no se cumpla que ....

Para terminar bien el programa anterior utilizaremos la condición de While (Mientras se


cumpla la condición)

For N=65 To 90
Label1.caption = Chr ( N )
Label1.RefreshN ' Refresca la etiqueta
X=0
Do While X < 1000
X=X+1
Loop
Next N

Este es nuestro primer programa en BASIC. En VISUAL BASIC es idéntico, pero nos falta la
interface gráfica. Para realizarla basta con abrir el VB y sobre el formulario que aparece al
abrirlo, introducir una etiqueta, (Label) que llevará el nombre por defecto de Label1. Solo nos
queda pensar donde introducimos el código anterior. Podemos introducir un botón de comando
(Command Button) que saldrá con el nombre por defecto de Command1. Haga doble click
sobre el botón. Aparecerá el procedimiento Click. Este procedimiento es el que se realiza
cuando hacemos click sobre ese botón. Escriba en ese procedimiento este código.

Private Sub Command1_Click() ' Esta línea sale automáticamente


For N=65 To 90
Label1.caption = Chr ( N )
Label1.RefreshN ' Refresca la etiqueta

Visual Basic – Guía del aprendiz Sena Capítulo 2 Página 5


X=0
Do While X < 1000 ' Bucle de temporización (*)
X=X+1
Loop
Next N ' Termina el bucle de temporización
End Sub ' Esta línea sale automáticamente

Hemos puesto nuestra primera piedra en Visual Basic. Este ejemplo es muy sencillo. Visual
Basic es tan sencillo como este ejemplo.

(*) Las temporizaciones no se hacen realmente así. El ejemplo anterior no deja de ser
una forma sencilla de detener el programa, para que en los comienzos de su carrera como
programador pueda ver el contenido de una etiqueta. Si lo hiciera de esta forma, su ordenador
estaría detenido realizando una función bastante triste, contar hasta 1000 para luego continuar
el programa. Y lo que es peor, en un ordenador a 300 MHz. Tardaría menos tiempo que en
uno a 66. Esta misma función puede hacerla con Sleep que la verá mas adelante, que es la
forma limpia y elegante de hacer una temporización

Formas de salir de un bucle

Para salir de un bucle, podemos esperar a que se complete, bien porque se ha cumplido la
condición (Bucles por condición) o a que se haya llegado al final de la cuenta (Bucles por
contador). Pero puede ocurrir que interese salir del bucle sin haber terminado la ejecución
total del mismo, por ejemplo, porque ya hemos encontrado lo que estabamos buscando, y
sería una pérdida de tiempo seguir ejecutando el bucle cuando ya hemos obtenido lo que
buscamos. Para ello, basta con ejecutar la sentencia Exit Do (Cuando hemos comenzado el
bucle con Do Until o Do While, o con Exit For cuando lo hemos comenzado con For ... To

Ejemplos

En el siguiente ejemplo pretendemos parar el programa cierto tiempo, a la espera que otro
equipo se conecte a través del puerto serie. (Cuando se conecte, el control MSComm1
detectará la señal DSR que le envía el otro equipo y deberemos salir inmediatamente del bucle
para, por ejemplo, atender a ese puerto serie)

Contador = 0
Do While Contador < 1000
Contador = Contador + 1
DoEvents
If MSComm1.DSRHolding = True Then Exit Do
Sleep (1000)
Loop

„Aquí comenzamos a atender al puerto serie

En el siguiente ejemplo, deseamos transmitir por el puerto serie una serie de números, del 1 al
1000, pero siempre y cuando que el equipo que está al otro lado de la línea serie esté a la
escucha (Condición MSComm1.DSRHolding = True) Si se desconecta ese equipo, y la
condición pasa de True a False, deseamos salir del bucle:

For I = 1 To 1000
If MSComm1.DSRHolding = False Then Exit Do
MSComm1.Output = Str(I)
Next I

Visual Basic – Guía del aprendiz Sena Capítulo 2 Página 6


No se preocupe que no entienda esto del MSComm. Lo entenderá perfectamente unos
capítulos mas adelante. Lo importante es que entienda la idea de salir de un bucle por la vía
rápida.

Función DoEvents

Si hablameos de bucles, necesariamente debemos hablar de la función DoEvents. Y es así por


la misma razón que cada vez que ponemos un bucle, deberíamos poner dentro de ese bucle la
palabra mágica DoEvents.

Imagínese que Visual Basic está ejecutando este código:

Do While Valor < 100


Valor = valor + 1
If Valor = 90 then Valor =1
Loop

Observará que la variable Valor nunca podrá llegar a tener el valor 100, puesto que cada vez
que llega a 90 le ponemos de nuevo el valor 0. El programa no va a salir nunca del bucle, pero
además no podrá atender a otros eventos que se produzcan en el ordenador (por ejemplo la
pulsación de una tecla) ya que el microprocesador está atendiendo solamente a ese bucle. Si
lo está ejecutando desde el propio entorno de Visual Basic, deberá parar la ejecución mediante
las teclas Ctrl – Pausa. No podrá pararlo mediante el botón Terminar de la barra de
herramientas de VB. En un programa compilado posiblemente tenga que reiniciar el equipo
mediante Alt – Ctrl – Sup, llevándose por delante el resto de los programas que se estén
ejecutando en ese momento en su PC.

No es difícil cometer este error involuntariamente. Esto es lo que se llama un bucle infinito.
Para que no suceda, o al menos, que si nuestro programa entra en un bucle infinito se pueda
salir de una forma no tan agresiva, hay que introducir dentro del bucle la instrucción
DoEvents. Cuando VB encuentra esta función el control del microprocesador al sistema
operativo, y si hay alguna operación en espera (la pulsación de una tecla, por ejemplo) la
ejecuta y posteriormente vuelve a ejecutar el bucle. De esta forma, podemos salvar al menos
los datos de las otras aplicaciones que se están ejecutando al mismo tiempo.

El bucle tomaría esta forma:

Do While Valor < 100


Valor = valor + 1
If Valor = 90 then Valor =1
DoEvents
Loop

Salir de un procedimiento antes de terminar su ejecución

Y ya que explicamos como se sale de un bucle por la vía rápida, veamos como salir de un
procedimiento usando también esa “vía rápida”.

Para salir de un procedimiento basta con ejecutar la sentencia Exit Sub. En el ejemplo
siguiente, usamos el botón BotonLeerNombre para introducir el dato Nombre en una base de
datos. Pero ese campo puede tener como máximo, 20 caracteres. Si el usuario ha introducido
mas de 20 caracteres, debemos salir del procedimiento donde se introduce ese dato sin
ejecutarlo de forma íntegra:

Visual Basic – Guía del aprendiz Sena Capítulo 2 Página 7


Private Sub BotonLeerNonbre_Click()
Mivariable = Text1.Text
If Len(Mivariable) > 20 Then
MsgBox "El Campo Nombre debe tener como máximo 20 caracteres"
Text1.Text = ""
Exit Sub „Con esta instrucción saldríamos de este procedimiento
Else
'Aqui vendrían las lineas de instrucciones donde trataríamos
'el contenido de Text1, si tuviese menos de 20 caracteres
End If
End Sub

NOTA. Los ejemplos anteriores sirven solamente de ilustración para explicar el código que
estamos estudiando. No pretenda ver una forma mejor de realizar la misma función, que
seguro que existe.

Visual Basic – Guía del aprendiz Sena Capítulo 2 Página 8

You might also like