Estructuras de Control PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 8

Fundamentos de Programacin en Visual Basic

Parte 4: Estructuras de Control


Las estructuras de control le permiten controlar el flujo de ejecucin del programa. Tenemos
dos tipos de estructuras de control:

Estructuras de decisin
Estructuras de bucle

Estructuras de Decisin
Los procedimientos de Visual Basic pueden probar condiciones y, dependiendo de los
resultados, realizar diferentes operaciones. Entre las estructuras de decisin que acepta Visual
Basic se incluyen las siguientes:

If...Then
If...Then...Else
Select Case

If...Then
Use la estructura If...Then para ejecutar una o ms instrucciones basadas en una condicin.
Puede utilizar la sintaxis de una lnea o un bloque de varias lneas:

If condicin Then Sentencias


If condicin Then
Sentencias
End If

Condicin normalmente es una comparacin, pero puede ser cualquier expresin que d como
resultado un valor numrico. Visual Basic interpreta este valor como True o False; un valor
numrico cero es False y se considera True cualquier valor numrico distinto de cero. Si
condicin es True, Visual Basic ejecuta todas las sentencias que siguen a la palabra clave
Then. Puede utilizar sintaxis de una lnea o de varias lneas para ejecutar una sentencia basada
en una condicin, los siguientes dos ejemplos son equivalentes:

If cualquierFecha

<

If cualquierFecha <
CualquierFecha
End If

Now

Then

CualquierFecha

Now

Now Then
= Now

Observe que el formato de una nica lnea de If...Then no utiliza la instruccin End If. Si se
desea ejecutar ms de una lnea de cdigo cuando condicin sea True, debe utilizar la
sintaxis de bloque de varias lneas If...Then...End If.

Diseado por: Ing. M.Sc. Wilma Gavilanes

Fundamentos de Programacin en Visual Basic

If cualquierFecha <
CualquierFecha
Timer1.Enabled
End If

Now Then
= Now
= False Desactiva el control Timer.

If...Then...Else
Utilice un bloque If...The...Else para definir varios bloques de sentencias, uno de los cuales se
ejecutar:

If condicin1 Then
[bloque de sentencias 1]
[ElseIf condicin2 Then
[bloque de sentencias 2]] ...
[Else
[bloque de sentencias n]]
End If

1. Veamos un ejemplo:

El cdigo sera:
Private Sub List1_Click()
Dim moneda
moneda = lstMoneda.ListIndex
If moneda = 0 Then
MsgBox "Peseta"
ElseIf moneda = 1 Then
MsgBox "Dolar"
ElseIf moneda = 2 Then
MsgBox "Franco"
End If
End Sub

Diseado por: Ing. M.Sc. Wilma Gavilanes

Fundamentos de Programacin en Visual Basic


If ClaveUsuario=DSI Then
Permite al usuario entrar al sistema
...
...
Else
Mostrar un mensaje advirtiendo error en la clave
...
...
End If
.

Private Sub DeterminaCondicin ( )


If Val (txtPromedio) >=13 Then
txtCondicin = Aprobado
ElseIf Val (txtPromedio) >= 10 Then
txtCondicin = Asistente
Else
txtCondicin = Desaprobado
End If
End Sub
Observe que siempre puede agregar ms clusulas ElseIf a la estructura If...Then. Sin
embargo, esta sintaxis puede resultar tediosa de escribir cuando cada ElseIf compara la misma
expresin con un valor distinto. Para estas situaciones, puede utilizar la estructura de decisin
Select Case.
Select Case
Visual Basic proporciona la estructura Select Case como alternativa a If...Then...Else para
ejecutar selectivamente un bloque de sentencias entre varios bloques. La sentencia Select
Case ofrece posibilidades similares a la instruccin If...Then...Else, pero hace que el cdigo
sea ms legible cuando hay varias opciones.
La estructura Select Case funciona con una nica expresin de prueba que se evala una vez
solamente, al principio de la estructura. Visual Basic compara el resultado de esta expresin con
los valores de cada Case de la estructura. Si hay una coincidencia, ejecuta el bloque de
sentencias asociado a ese Case:

Selec Case expresin_prueba


[Case lista_expresiones1
[bloque de sentencias 1]]
[Case lista_expresiones2
[bloque de sentencias 2]]
.
.
.
[Case Else
[bloque de sentencias n]]
End Select
Diseado por: Ing. M.Sc. Wilma Gavilanes

Fundamentos de Programacin en Visual Basic

Cada lista_expresiones es una lista de uno a ms valores. Si hay ms de un valor en una


lista, se separan los valores con comas. Cada bloque de sentencias contiene cero o ms
instrucciones. Si ms de un Case coincide con la expresin de prueba, slo se ejecutar el
bloque de instrucciones asociado con la primera coincidencia. Visual Basic ejecuta las
instrucciones de la clusula (opcional) Case Else si ningn valor de la lista de expresiones
coincide con la expresin de prueba.
Por ejemplo, suponga que agrega otro comando al men Edicin en el ejemplo
If...Then...Else. Podra agregar otra clusula ElseIf o podra escribir la funcin con Select
Case:
Private Sub mnuCut_Click (Index As Integer)
Select Case Index
Case 0
Instrucciones ..
Case 1
Instrucciones ..
Case 2
Instrucciones ..
Case 3
End Select
End Sub

Select Case TipoUsuario


Case Supervisor
Proporciona al usuario privilegios de Supervisor
...
...
Case Usuario
Proporciona al usuario privilegios de Usuario
...
...
Case Else
Proporciona al usuario privilegio de invitado
...
...
End Select

Otros Ejemplos
If Ventas > 100000
strDscto =

Then
Format (0.10, Fixed)

Diseado por: Ing. M.Sc. Wilma Gavilanes

Fundamentos de Programacin en Visual Basic


ElseIf Ventas > 50000 Then
strDscto = Format (0.05, Fixed)
Else
strDscto = Format (0.02, Fixed)
End If

Select Case Cantidad


Case 1
sngDscto
Case 2, 3
sngDscto
Case 4 To 6
sngDscto
Case Else
sngDscto
End Select

= 0.0
= 0.05
= 0.10
= 0.20

opcion = MsgBox (Guarda cambios antes de salir , vbYesNo)


Select Case opcion
Case vbYes
GuardarCambios
Unload Me
Case vbNo
Unload Me
End Select

Estrucuras de Repeticion
Las estructuras de repeticin o bucle le permiten ejecutar una o ms lneas de cdigo
repetidamente. Las estructuras de repeticin que acepta Visual Basic son:

Do...Loop

For...Next

For Each...Next

Do...Loop
Utilice el bucle Do para ejecutar un bloque de sentencias un nmero indefinido de veces. Hay
algunas variantes en la sentencia Do...Loop, pero cada una evala una condicin numrica
5

Diseado por: Ing. M.Sc. Wilma Gavilanes

Fundamentos de Programacin en Visual Basic


para determinar si contina la ejecucin. Como ocurre con If...Then, la condicin debe ser un
valor o una expresin que d como resultado False (cero) o True (distinto de cero).
En el siguiente ejemplo de Do...Loop, las sentencias se ejecutan siempre y cuando
condicin sea True:

Do While condicin
Sentencias
Loop
Cuando Visual Basic ejecuta este bucle Do, primero evala condicin. Si condicin es False
(cero), se salta todas las sentencias. Si es True (distinto de cero) Visual Basic ejecuta las
sentencias, vuelve a la instruccin Do While y prueba la condicin de nuevo.
Por tanto, el bucle se puede ejecutar cualquier nmero de veces, siempre y cuando condicin
sea distinta de cero o True. Nunca se ejecutan las sentencias si condicin es False
inicialmente. Por ejemplo, este procedimiento cuenta las veces que se repite una cadena
destino dentro de otra cadena repitiendo el bucle tantas veces como se encuentre la cadena de
destino:
Function ContarCadenas (cadenalarga, destino)
Dim posicin, contador
posicin = 1
Do While InStr (posicin, cadenalarga, destino)
posicin
=
InStr
(posicin,
cadenalarga,
destino)+1
contador = contador + 1
Loop
ContarCadenas = contador
End Function
Si la cadena destino no est en la otra cadena, InStr devuelve 0 y no se ejecuta el bucle.
Otra variante de la instruccin Do...Loop ejecuta las sentencias primero y prueba la
condicin despus de cada ejecucin. Esta variacin garantiza al menos una ejecucin de

sentencias:
Do
Sentencias
Loop While condicin

Diseado por: Ing. M.Sc. Wilma Gavilanes

Fundamentos de Programacin en Visual Basic


For...Next
Los bucles Do funcionan bien cuando no se sabe cuntas veces se necesitar ejecutar las
sentencias del bucle. Sin embargo, cuando se sabe que se va a ejecutar las sentencias un
nmero determinado de veces, es mejor elegir el bucle For...Next. A diferencia del bucle Do,
el bucle For utiliza una variable llamada contador que incrementa o reduce su valor en cada
repeticin del bucle. La sintaxis es la siguiente:

For contador = iniciar To finalizar [Step incremento]


Sentencias
Next [contador]
Los argumentos contador, iniciar, finalizar e incremento son todos numricos.

Nota: El argumento incremento puede ser positivo o negativo. Si incremento es positivo,


iniciar debe ser menor o igual que finalizar o no se ejecutarn las sentencias del bucle. Si
incremento es negativo, iniciar debe ser mayor o igual que finalizar para que se ejecute el
cuerpo del bucle. Si no se establece Step, el valor predeterminado de incremento es 1. Al
ejecutar el bucle For, Visual Basic:
1. Establece contador al mismo valor que iniciar.
2. Comprueba si contador es mayor que finalizar. Si lo es, Visual Basic sale del bucle. (Si
incremento es negativo, Visual Basic comprueba si contador es menor que finalizar.)
3. Ejecuta las sentencias.
4. Incrementa contador en 1 o en incremento, si se especific.
5. Repite los pasos 2 a 4.
Este cdigo imprime los nombres de todas las fuentes de pantalla disponibles:
Private Sub Form-Click ( )
Dim I As Integer
For i = 0 To Screen.FontCount
Print Screen.Fonts (i)
Next
End Sub

Salida de una Estructura de Control


La instruccin Exit le permite salir directamente de un bucle For o de un bucle Do. La sintaxis
de la sentencia Exit es sencilla: Exit For puede aparecer tantas veces como sea necesario
dentro de un bucle For y Exit Do puede aparecer tantas veces como sea necesario dentro de
un bucle Do:

For contador = iniciar To finalizar [Step incremento]


[bloque sentencias]
[Exit For]
[bloque sentencias]
Next [contador]
Do [{While / Until} condicin]
[bloque de sentencias]
Diseado por: Ing. M.Sc. Wilma Gavilanes

Fundamentos de Programacin en Visual Basic


[Exit Do]
[bloque de sentencias]
Loop
Do
[bloque de sentencias]
[Exit Do]
[bloque de sentencias]
Loop [{While / Until} condicin]
Exit For y Exit Do son muy tiles ya que, algunas veces, resulta apropiado salir
inmediatamente de un bucle sin realizar ms iteraciones o sentencias dentro del bucle.
Cuando utilice la instruccin Exit para salir de un bucle, el valor de la variable contador difiere,
dependiendo de cmo haya salido del bucle:

Cuando termina un bucle, la variable contador contiene el valor del lmite superior ms el
paso.
Cuando sale de un bucle prematuramente, la variable contador conserva su valor segn
las reglas usuales del alcance.
Cuando sale antes del final de una coleccin, la variable contador contiene Nothing si se
trata de un tipo de dato Object y Empty si es un tipo de dato Variant.

Diseado por: Ing. M.Sc. Wilma Gavilanes

También podría gustarte