Anda di halaman 1dari 21

ESTRUCTURAS DE SELECCION

ESTRUCTURA IF THEN ELSE


La estructura IF -THEN ELSE - END IF, sirve para evaluar condiciones y si se cumple dicha(s) condiciones se ejecuta el cdigo que se encuentra en medio del THEN y el ELSE. En caso de no cumplirse la condicin se ejecuta el cdigo que se encuentra entre el ELSE y el END IF En el siguiente programa se evala la variable contador, la cual fue inicializada en 4 y la evaluacin consiste en preguntar si dicha variable toma un valor menor a 10, en caso de tomarlo se muestra un mensaje que dice El contador es menor que 10 y en caso de no cumplirse la condicin se muestra el mensaje "El contador es mayor o igual a 10". Observemos que este ejercicio muestra un solo mensaje y no los dos al tiempo, por cuanto la sentencia if then else end if se construye con el fin de ejecutar dos bloques de cdigo excluyentes. En el caso del ejercicio que se muestra a continuacin se muestra el primer mensaje. Veamos: '****************************************************************** 'Nombre: seleccion1.frm 'Descripcion: El siguiente programa muestra cmo utilizar la ' sentencia de seleccin IF THEN ELSE 'Tipo: El programa es bsico de SENTENCIAS DE SELECCION '***************************************************************** Private Sub Form_Load() Dim contador As Integer contador = 4 If contador < 10 Then MsgBox "El contador es menor que 10" Else MsgBox "El contador es mayor o igual a 10" End If End Sub Ahora bien, con el fin de lograr que el amigo lector / estudiante comprenda claramente la estructura IF- THEN- ELSE END IF, a continuacin se muestra otro ejercicio que tiene dos estructuras de las mencionadas y cada una de ellas evala una variable. La primera evaluacin se cumple, y la segunda evaluacin no se cumple. Veamos pues el programa: '****************************************************************** 'Nombre: seleccion2.frm 'Descripcion: El siguiente programa muestra como utilizar la ' sentencia de seleccin IF THEN ELSE 'Tipo: El programa es bsico de SENTENCIAS DE SELECCION '***************************************************************** Private Sub Form_Load() Dim contador1, contador2 As Integer

contador1 = 4 contador2 = 15 If contador1 < 10 Then MsgBox "El contador1 es menor que 10" Else MsgBox "El contador1 es mayor o igual a 10" End If If contador2 < 10 Then MsgBox "El contador2 es menor que 10" Else MsgBox "El contador2 es mayor o igual a 10" End If End Sub

ESTRUCTURA IF THEN ELSE ANIDADOS


Es posible colocar una estructura IF-THEN-ELSE-END IF inmersa en otra estructura IF-THEN-ELSE-END IF, con lo cual se dice que la estructura se encuentra anidada. En el siguiente programa se muestra como implementar este tipo de estructuras en forma anidada. Veamos: '****************************************************************** 'Nombre: seleccion3.frm 'Descripcion: El siguiente programa muestra la utilizacion de ' la estructura IF THEN ELSE en forma anidada 'Tipo: El programa es bsico de SENTENCIAS DE SELECCION '***************************************************************** Private Sub Form_Load() Dim contador1, contador2 As Integer contador1 = 4 contador2 = 15 If contador1 < 10 Then If contador2 < 10 Then MsgBox "Ambas variables son menores que 10" Else MsgBox "contador1 < 10 y contador2 >= 10" End If Else If contador2 < 10 Then MsgBox "Contador1 > =10 y contador2 < 10" Else MsgBox "Ambas variables son mayores que 10"

End If End If End Sub

ESTRUCTURA IF THEN ELSE EN UNA LINEA


Cuando se desea implementar una estructura IF-THEN-ELSE y al evaluarse la expresin se necesitan ejecutar sentencias de solo una lnea, es muy interesante saber que el IF-THEN-ELSE se puede colocar reducido para este caso, con el fin de lograr menos lneas de cdigo. Tentamos en cuenta que si se desean escribir ms de una lnea para cada evaluacin de condicin no es posible implementar esta versin de una sola lnea. Veamos pues el ejercicio:

'****************************************************************** 'Nombre: seleccion4.frm 'Descripcion: El siguiente programa muestra la utilizacion de ' la estructura IF THEN ELSE en forma minima 'Tipo: El programa es bsico de SENTENCIAS DE SELECCION '***************************************************************** Private Sub Form_Load() Dim contador1, contador2 As Integer C1 = 4 C2 = 15 If C1 < 10 Then If C2 < 10 Then MsgBox "C1 y C2 < 10" Else MsgBox "C1<10 y C2>=10" Else If C2 < 10 Then MsgBox "C1>=10 y C2<10" Else MsgBox "C1>=10 y C2>=10" End If End Sub Aclaremos que la versin mnima de la estructura IF-THEN-ELSE-END IF para una sola lnea es: IF THEN ELSE Y el END IF no se coloca. No es necesario colocarlo, es ms, incluso de llegarse a colocar generara un error de sintaxis.

CLAUSULA ELSEIF
En ocasiones, dada una estructura IF -THEN -ELSE- END IF, se realizan anidamientos de la siguiente manera: IF THEN ELSE IF THEN ELSE END IF END IF Y sucede que la anterior estructura puede ser escrita de la siguiente manera: IF THEN ELSEIF ELSE END IF En donde si se fija el amigo lector / estudiante, se ha suprimido una clusula END IF y esto se debe bsicamente a que el if fue pegado al else y a pesar de seguir comportndose como IF THEN ELSE, no es posible finalizarlo en un END IF. Ahora bien,supongamos que unimos este ltimo ELSE, con otro if, dando lugar a una estructura como la siguiente: IF THEN ELSEIF ELSEIF ELSE END IF Esta estructura sigue siendo correcta pero puede prestarse para confusiones. De todas formas hay cosas que cabe mencionar en esta estructura: No es posible agregar otro ELSE, pues el compilador no sabra con cual cerrarlo No es posible agregar otro END IF, pues tampoco se sabra con cual cerrarlo.

THEN

THEN THEN

Para no ir ms lejos, veamos el siguiente ejercicio que aclara esta estructura: '****************************************************************** 'Nombre: seleccion5.frm 'Descripcion: El siguiente programa muestra la utilizacion de ' la estructura IF THEN ELSE en forma minima 'Tipo: El programa es bsico de SENTENCIAS DE SELECCION '***************************************************************** Private Sub Form_Load() Dim calificacion As Integer calificacion = 3 If calificacion > 4 Then MsgBox "Calificacion excelente" ElseIf calificacion > 3 Then MsgBox "Calificacion buena" ElseIf calificacion > 2 Then MsgBox "Calificacion aceptable" Else MsgBox "Calificacion mala" End If End Sub Para terminar con la explicacin del anterior programa, a continuacin se muestra una tabla en la que se muestra vara diversos valores de la variable calificacin, los diversos mensajes que imprimira el programa anterior. Valor de la calificacin Calificacin = 1 Calificacin = 2 Calificacin = 3 Calificacin = 4 Calificacin = 5 variable Resultado mostrado programa Calificacin mala Calificacin mala Calificacin aceptable Calificacin buena Calificacin excelente por el

ESTRUCTURA SELECT CASE


Esta estructura es utilizada frecuentemente para tomar decisiones con respecto a valores tomados por una variable. Veamos el siguiente ejercicio: '****************************************************************** 'Nombre: seleccion6.frm 'Descripcion: El siguiente programa muestra la utilizacion de ' la estructura SELECT CASE 'Tipo: El programa es bsico de SENTENCIAS DE SELECCION '*****************************************************************

Private Sub Form_Load() Dim calificacion As Integer calificacion = 3 Select Case calificacion Case 1 MsgBox "Le fue muy mal" Case 2 MsgBox "le fue mal pero no tanto" Case 3 MsgBox "paso raspando" Case 4 MsgBox "le fue bien" Case 5 MsgBox "Le fue muy bien" Case Else MsgBox "No tiene nota valida" End Select End Sub

Tengamos en cuenta que la instruccin SELECT CASE, no necesariamente funciona con valores fijos y nicos, sino que tambin puede ser utilizada para establecer rangos de valores, tal como se muestra en el siguiente ejercicio:

'****************************************************************** 'Nombre: seleccion7.frm 'Descripcion: El siguiente programa muestra la utilizacin de ' la estructura SELECT CASE 'Tipo: El programa es bsico de SENTENCIAS DE SELECCION '***************************************************************** Private Sub Form_Load() Dim calificacion As Double calificacion = 4.5 Select Case calificacion Case Is < 1 MsgBox "Le fue pesimamente" Case 1 To 1.99 MsgBox "le fue muy mal " Case 2 To 2.99 MsgBox "le fue mal" Case 3 To 3.99 MsgBox "es una nota aceptable" Case 4 To 4.5 MsgBox "Le fue bien" Case 4.5 To 5

MsgBox "Le fue excelentemente" Case Else MsgBox "No tiene nota valida" End Select End Sub Y con el nimo del lograr la mejor comprensin de estos temas por parte del amigo estudiante / lector, a continuacin se muestran los resultados que arrojara el anterior programa si se hubieran dados los siguientes valores a la variable calificacion: Veamos: Valor de la calificacin Calificacin = 1 Calificacin = 1.5 Calificacin = 2 Calificacin = 2.5 Calificacin = 3 Calificacin = 3.5 Calificacin = 4 Calificacin = 4.5 Calificacin = 4.6 Calificacin = 5 variable Resultado mostrado programa Le fue muy mal Le fue muy mal Le fue mal Le fue mal Es una nota aceptable Es una nota aceptable Le fue bien Le fue bien Le fue excelentemente Le fue excelentemente por el

Cabe mencionar que en la estructura SELECT CASE, solamente se ejecuta una condicin como mximo y esa es la razn por la cual en nuestro ejercicio se ejecuta el caso: Case 4 To 4.5 Y el siguiente caso que tambin cumple la condicin, ya no se ejecuta, es decir el siguiente cdigo Case 4.5 To 5 A pesar de cumplir la condicin no se ejecuta por haberse ejecutado ya un caso que cumple la condicin.

MAS COSAS SOBRE SELECT CASE


En algunos ejercicios pasados se mostraba el uso de is en el case e implcitamente se estaba queriendo decir que este se utiliza en los casos en los que la comparacin sea de los siguientes tipos: < <= = > >=

Para lograr ejemplificar lo expuesto, a continuacin se presenta un ejercicio en el que se utiliza la instruccin is, dentro de una funcin case. Veamos: '****************************************************************** 'Nombre: seleccion8.frm 'Descripcion: El siguiente programa muestra la utilizacion de ' la estructura SELECT CASE 'Tipo: El programa es bsico de SENTENCIAS DE SELECCION '***************************************************************** Private Sub Form_Load() Dim nota As Double nota = 1 Select Case nota Case Is < 0 MsgBox "Nota por debajo de lo valido" Case 1, 3, 5 MsgBox "Nota valida e impar" Case Is = 0 MsgBox "La nota es cero" Case 2, 4 MsgBox "Nota valida y par" Case Is > 5 MsgBox "Nota por encima de lo valido" Case Else MsgBox "La nota no debe tener decimales" End Select End Sub A continuacin se muestra una tabla en la que se pueden apreciar los mensajes que muestra el programa anterior, suponiendo que la variable nota toma diversos valores. Veamos: Asignacin a variable nota -1 0 0.5 1 Mensaje producido por el programa Nota por debajo de lo valido La nota es cero La nota no debe tener decimales Nota valida e impar

2 3 4 5 6

Nota valida y par Nota valida e impar Nota valida y par Nota valida e impar Nota por encima de lo valido

Tengamos en cuenta que en el programa anterior se utilizo una sentencia como: Case 2,4 Para comparar con dos valores de una sola vez a la variable. Es decir que separando los valores por comas (,) es posible hacer varias comparaciones con valores constantes sin necesidad de tener que repetir otro case con cada nmero que se va a comparar.

ESTRUCTURAS DE ITERACIN

Las estructuras de iteracin son estructuras que ejecutan una o ms veces un conjunto de sentencias (o una sentencia) un nmero determinado de veces, hasta que se cumpla una condicin, mientras se cumpla una condicin o hasta que se den ciertas circunstancias que obliguen a no ejecutar por ms tiempo dichas instrucciones. Recordemos que las estructuras de seleccin ejecutaban un bloque de instrucciones determinado una vez o nunca, dependiento del cumplimiento de una condicin previamente establecida.

ESTRUCTURA FOR NEXT


El siguiente programa se ejecuta tan pronto se carga un formulario, contiene una sentencia inmersa en la seccin de declaraciones: Option Base 1 La cual se encarga de hacer que los vectores que se creen tengan un ndice que comience con el valor uno. De otra parte, es importante notar que es necesario colocar la propiedad AutoRedraw a true con el fin de lograr que se pueda imprimir cosas directamente en el formulario, sin necesidad de tener que hacerlo mediante una caja de texto, un label, etc. El programa crea un vector con cuatro posiciones y cada una de ellas contiene un texto y al final por medio de la estructura for se ejecutan las instrucciones hasta antes de la palabra reservada next varias veces, en donde la primera vez, se ejecuta con el valor de 1 en la variable contador, la segunda vez con el valor de 2 en la variable contador y as sucesivamente se va ejecutando hasta que el valor de la variable contador sea igual a 4. Veamos el ejercicio: '****************************************************************** 'Nombre: for1.frm 'Descripcion: El siguiente programa muestra la utilizacion de ' la estructura FOR - NEXT 'Tipo: El programa es bsico de ESTRUCTURAS DE ITERACION '***************************************************************** Option Base 1 Private Sub Form_Load() Dim contador As Integer Dim cadena(4) As String Form1.AutoRedraw = True cadena(1) = "uno" cadena(2) = "dos" cadena(3) = "tres" cadena(4) = "cuatro" For contador = 1 To 4 Print cadena(contador) Next

End Sub

ESTRUCTURA FOR -EACH NEXT Y LAS COLECCIONES


Como veamos en el anterior ejercicio, la estructura for es bien interesante para muchas cosas y para el caso de recorrer un vector es de bastante ayuda. Suponga ahora que quiere eliminar un elemento del vector de string, tendramos para este caso varias posibilidades y cuestiones al respecto, a saber: Reemplazar el string de la posicin del vector de String a eliminar por una cadena vacia, es decir por ejemplo por la cadena . Implementar el algoritmo de las listas para colocar cada objeto en un nodo y cada vez que se aada un elemento poner a apuntar el ltimo nodo existente con el nuevo nodo recin creado Para el caso de querer eliminar un elemento de la lista, se podra eliminar el nodo pero antes haber guardado la direccin del nodo anterior y el nodo siguiente al nodo a borrar y una vez eliminado el mismo, poner a apuntar el nodo anterior al nodo siguiente. Bueno, pero no hemos mencionado todos los problemas que tendramos al recorrer dicha lista, pues en este caso sera necesario cambiar la estructura for colocando despus de la instruccin To ya no un 4, sino una instruccin que calcule el total de los elementos existentes en la lista, de tal suerte que sin importar si se aaden o eliminan elementos, el ciclo, siempre est imprimiendo la totalidad de elementos de la lista.

Pues bien, todos estos problemas son sencillamente solucionados por Visual Basic con la implementacin de colecciones (que se escriben Collection). La forma de declarar un objeto de tipo Collection es la siguiente: Dim coleccion As New Collection En donde la variable coleccin es de tipo Collection y los elementos a dicha coleccin se pueden aadir de la siguiente manera: coleccion.Add "Uno" coleccion.Add "Dos" coleccion.Add "Tres" y para referirse al primer elemento insertado en dicha coleccin, se hace de la siguiente manera: coleccion.Item(1) y para eliminar un elemento de la coleccin se hace as:

coleccion.Remove (2) Bueno, pero con el fin de mostrarle a usted amigo lector / estudiante un programa completo que trabaje estos conceptos a continuacin se muestra un programa que maneja las colecciones. Veamos: '****************************************************************** 'Nombre: coleccion1.frm 'Descripcion: El siguiente programa muestra la utilizacion de ' colecciones, la adicin y eliminacin de elementos a las mismas 'Tipo: El programa es de COLECCIONES '***************************************************************** Option Base 1 Private Sub Form_Load() Form1.AutoRedraw = True Dim coleccion As New Collection coleccion.Add "Uno" coleccion.Add "Dos" coleccion.Add "Tres" Print coleccion.Item(1) Print coleccion.Item(2) Print coleccion.Item(3) coleccion.Remove (2) Print coleccion.Item(1) Print coleccion.Item(2) 'Print coleccion.Item(3) Generaria error End Sub Bien y ahora usted se estar preguntando: No estamos hablando acaso de la estructura FOR- EACH NEXT y qu relacin hay con las colecciones?. Pues la respuesta es bien sencilla: La estructura FOR- EACH NEXT, se cre con el fin de poder mostrar los elementos de una coleccin, sin tener necesidad de saber de antemano el nmero de elementos de dicha coleccin. En el siguiente programa de ejemplo, se muestra el uso de la estructura FOR- EACH NEXT para mostrar elementos de las colecciones y adems se muestra la forma de aadir un elemento al final o aadirlo antes de una posicin especificada. Veamos:

'****************************************************************** 'Nombre: for2.frm 'Descripcion: El siguiente programa muestra la utilizacion de ' la estructura FOR EACH NEXT y de las colecciones 'Tipo: El programa es bsico de ESTRUCTURAS DE ITERACIN y ' manejo del objeto COLLECTION '***************************************************************** Option Base 1 Private Sub Form_Load() Form1.AutoRedraw = True Dim coleccion As New Collection Dim refer_coleccion Dim contador As Integer For contador = 1 To 5 coleccion.Add CStr(contador * contador), CStr(contador) Next Print "Coleccion antes de borrar elementos" For Each refer_coleccion In coleccion Print refer_coleccion Next refer_coleccion coleccion.Remove (5) coleccion.Remove (2) Print "Coleccion despues de borrar elementos" For Each refer_coleccion In coleccion Print refer_coleccion Next refer_coleccion coleccion.Add "Textico2", "5", 3 Print "Coleccion despues de aadir un textico2" For Each refer_coleccion In coleccion Print refer_coleccion Next refer_coleccion End Sub

El programa anterior, imprime los siguientes resultados:


Coleccin antes elementos 1 4 9 16 25 de borrar coleccin despus de borrar Coleccin despus de aadir elementos un textico2 1 9 16 1 9 textico2 16

En donde el formato para insertar en un objeto collection es: Objeto_colection.Add Item, key, before, after Y en donde

Nombre del Argumento de la Significado de dicho argumento propiedad Add del objeto Collection Item el contenido de lo que se va a colocar en el elemento de la coleccin Key un identificador opcional para distinguir este elemento Before especifica la posicin antes de la cual se va a colocar el elemento After especifica la posicin despus de la cual se va a colocar el elemento Nota: Los argumentos Befores y After son exluyentes, lo que quiere decir que si se especifica un valor para Befores, no de debe especificarse un valor para After y viceversa, si se especifica un valor para After, no debe especificarse un valor para Befores.

CICLO DO UNTIL - LOOP


El ciclo DO-UNTIL-LOOP, es utilizado con frecuencia cuando se necesita que se ejecuten ciertas instrucciones hasta que se cumpla una condicin determinada, momento en el cual se sale del ciclo. Es preciso tener en cuenta que primero se evala la condicin y si se llega a cumplir no se entra al ciclo. Veamos el siguiente ejercicio que describe el funcionamiento de esta clase de ciclos: '****************************************************************** 'Nombre: do1.frm 'Descripcion: El siguiente programa muestra como utilizar ' el ciclo DO - UNTIL - LOOP 'Tipo: El programa es de ESTRUCTURAS DE ITERACIN '***************************************************************** Option Explicit Dim Dado1, Dado2 As Integer Private Sub Command1_Click() Do Until Dado1 = 3 And Dado2 = 3 Dado1 = Int(6 * Rnd + 1) Dado2 = Int(6 * Rnd + 1) Print "Dado1: " & CStr(Dado1) & "Dado2: " & CStr(Dado2) Loop Print "FIN DEL CICLO"

End Sub

Observemos en el programa anterior que una vez se ejecuta un ciclo de iteraciones hasta que se cumple por primera vez la condicin, nunca ms se vuelve a ejecutar el ciclo, debido a que al evaluar la condicin, sta se cumple y por tanto se sale del ciclo de iteracin DO UNTIL LOOP. Para mayor comprensin del tema tratado, a continuacin se muestra un posible resultado del programa anterior(se dice que es un posible resultado, debido a que se utiliza una funcin aleatoria que hace de los resultados del programa un conjunto distinto por cada vez que se ejecuta el mismo) Dado1: 4 Dado2: 1 Dado1: 5 Dado2: 4 Dado1: 3 Dado2: 2 Dado1: 4 Dado2: 3 Dado1: 6 Dado2: 6 Dado1: 2 Dado2: 1 Dado1: 2 Dado2: 4 Dado1: 3 Dado2: 4 Dado1: 4 Dado2: 5 Dado1: 4 Dado2: 3 Dado1: 3 Dado2: 6 Dado1: 3 Dado2: 3

FIN DEL CICLO NUNCA MS SE VUELVE A EJECUTAR LAS SENTENCIAS Por lo tanto, si el usuario vuelve a presionar el botn de comando, el programa sacar el siguiente resultado: FIN DEL CICLO Por cada vez que vuelva a presionar dicho botn (exceptuando como hemos dicho la primera vez que ejecuta el botn de comando). CICLO DO LOOP - UNTIL Esta estructura de iteracin es similar a la estructura DO UNTIL - LOOP, con la diferencia que primero se ejecuta el bloque de instrucciones(o la instruccin) y posteriormente se evala la condicin. En caso de cumplirse la condicin se sale del ciclo. Para mayor comprensin, veamos pues el ejemplo: '****************************************************************** 'Nombre: do2.frm 'Descripcion: El siguiente programa muestra como utilizar ' el ciclo DO - UNTIL - LOOP 'Tipo: El programa es de ESTRUCTURAS DE ITERACIN '***************************************************************** Option Explicit Dim Dado1, Dado2 As Integer Private Sub Command1_Click() Do Dado1 = Int(6 * Rnd + 1)

Dado2 = Int(6 * Rnd + 1) Print "Dado1: " & CStr(Dado1) & "Dado2: " & CStr(Dado2) Loop Until Dado1 = 3 And Dado2 = 3 Print "FIN DEL CICLO" End Sub En este ejercicio a diferencia del anterior, siempre se va a ejecutar como mnimo una vez el bloque de sentencias y posteriormente se evala la condicin. En caso de cumplirse se sale del ciclo, pero es importante recordar que por lo menos una sola vez se garantiza la ejecucin del grupo de sentencias incluidas en esta estructura de iteracin. A continuacin se muestra un posible resultado de la ejecucin del anterior programa. Veamos: Dado1: 1 Dado2: 4 Dado1: 4 Dado2: 5 Dado1: 2 Dado2: 3 Dado1: 4 Dado2: 3 FIN DEL CICLO Si el usuario vuelve a presionar el botn de comando, el programa ejecuta otra vez el ciclo y puede generar otro resultado como el siguiente: Dado1: 4 Dado2: 1 Dado1: 3 Dado2: 2 Dado1: 4 Dado2: 3 FIN DEL CICLO Y en general como se mencionado anteriormente, est garantizada la ejecucin por lo menos una vez de las sentencias incluidas en la estructura de iteracin. Dado1: 6 Dado2: 6 Dado1: 2 Dado2: 4 Dado1: 3 Dado2: 4 Dado1: 4 Dado2: 5 Dado1: 3 Dado2: 6 Dado1: 3 Dado2: 3 Dado1: 4 Dado2: 6 Dado1: 1 Dado2: 1 Dado1: 3 Dado2: 5 Dado1: 3 Dado2: 5 Dado1: 4 Dado2: 5 Dado2: 4 Dado2: 2 Dado1: 5 Dado2: 6 Dado1: 3 Dado2: 3

USO DE EXIT DO
Es interesante observar que no slo es posible basarnos en una condicin para salir de un ciclo de iteracin como el DO WHILE, sino que tambin podemos utilizar alguna condicin de seleccin incorporada en el grupo de sentencias del ciclo, de tal suerte que cuando se cumpla, tambin se salga del ciclo de iteracin. Veamos pues el ejercicio para comprender mejor este concepto:

'****************************************************************** 'Nombre: do3.frm 'Descripcion: El siguiente programa muestra como utilizar ' el ciclo DO - UNTIL - LOOP y la sentencia ' EXIT DO para abortar el ciclo de iteracin 'Tipo: El programa es de ESTRUCTURAS DE ITERACIN '***************************************************************** Option Explicit Dim Dado1, Dado2 As Integer Private Sub Command1_Click() Do Dado1 = Int(6 * Rnd + 1) Dado2 = Int(6 * Rnd + 1) If Dado1 = 2 And Dado2 = 4 Then Print "Dado1= " & CStr(Dado1) & "Dado2= " & CStr(Dado2) Exit Do End If Print "Dado1: " & CStr(Dado1) & "Dado2: " & CStr(Dado2) Loop Until Dado1 = 2 And Dado2 = 4 Print "FIN DEL CICLO" End Sub A continuacin se muestra un posible resultado del programa anterior: Dado1: 4 Dado2: 5 Dado1: 3 Dado2: 6 Dado1= 3 Dado2= 3 Observemos que una vez se cumpla dicha condicin el programa ejecuta las sentencias incluidas en la estructura de seleccin IF - THEN - END IF, pero cuando se estn ejecutando dichas sentencias incluidas en esta estructura el programa ejecuta la sentencia: EXIT DO La cual tiene por objetivo salir del ciclo DO - LOOP en forma inmediata, con lo cual ya no se ejecuta la siguiente sentencia que se encuentra despus del IF THEN - END IF (es decir la sentencia: Print "Dado1: " & CStr(Dado1) & "Dado2: " & CStr(Dado2)). Ahora bien, la sentencia EXIT DO, no solamente sale del ciclo de iteracin, sino que aparte de todo contina la ejecucin del programa a partir de la sentencia que se encuentre inmediatamente despus de la palabra LOOP. Con lo anterior, podemos concluir que si el ciclo de iteracin DO - LOOP, se encuentra anidado en otro ciclo DO - LOOP y el ciclo interno ejecuta la sentencia EXIT DO, se pasa el control del programa un nivel arriba del bucle interno y en

general la sentencia EXIT DO transfiere el control del programa un nivel arriba, cuando se trata de bucles anidados. Con todo lo anteriormente mencionado, es importante tener en cuenta que si a un ciclo de iteracin tipo DO LOOP, no se le coloca la instruccin UNTIL, pero se tiene en cuenta la instruccin EXIT DO, colocada de tal suerte que acte abortando el ciclo en algn momento, es posible eliminar la sentencia UNTIL. Para comprender mejor lo anteriormente expuesto, veamos el siguiente programa que no es ms que el programa que venimos trabajando en este apartado del ejercicio eliminndole la sentencia UNTIL: '****************************************************************** 'Nombre: do4.frm 'Descripcion: El siguiente programa muestra como utilizar ' el ciclo DO - LOOP sin UNTIL y con la sentencia ' EXIT DO para abortar el ciclo de iteracin 'Tipo: El programa es de ESTRUCTURAS DE ITERACIN '***************************************************************** Option Explicit Dim Dado1, Dado2 As Integer Private Sub Command1_Click() Do Dado1 = Int(6 * Rnd + 1) Dado2 = Int(6 * Rnd + 1) If Dado1 = 2 And Dado2 = 4 Then Print "Dado1= " & CStr(Dado1) & "Dado2= " & CStr(Dado2) Exit Do End If Print "Dado1: " & CStr(Dado1) & "Dado2: " & CStr(Dado2) Loop ' Until Dado1 = 2 And Dado2 = 4 Print "FIN DEL CICLO" End Sub

USO DE DO - WHILE - LOOP


En los casos anteriores, se usaba la palabra UNTIL, dentro de un ciclo DO LOOP, pero como veremos a continuacin tambin es posible decirle a visual Basic que repita una serie de instrucciones mientras se presente una determinada condicin. Veamos pues el ejercicio:

'****************************************************************** 'Nombre: do5.frm 'Descripcion: El siguiente programa muestra como utilizar ' el ciclo DO - WHILE - LOOP 'Tipo: El programa es de ESTRUCTURAS DE ITERACIN '***************************************************************** Dim variable As Integer Private Sub Form_Load() variable = 3 Do While variable < 10 Print "Variable = " & CStr(variable) variable = variable + 1 Loop End Sub Los resultados arrojados por este programa son: Variable = 3 Variable = 4 Variable = 5 Variable = 6 Variable = 7 Variable = 8 Variable = 9

USO DE DO - WHILE - LOOP


Tambin es posible al igual que con el ejercicio de DO UNTIL LOOP, colocar la palabra WHILE al final del ciclo, de tal manera que el ciclo primero ejecute el bloque de instrucciones y posteriormente evale la condicin. Veamos: '****************************************************************** 'Nombre: do6.frm 'Descripcion: El siguiente programa muestra como utilizar ' el ciclo DO - LOOP - WHILE 'Tipo: El programa es de ESTRUCTURAS DE ITERACIN '***************************************************************** Dim variable As Integer Private Sub Form_Load() variable = 3 Do Print "Variable = " & CStr(variable) variable = variable + 1 Loop While variable < 10 End Sub

Anda mungkin juga menyukai