Sie sind auf Seite 1von 5

Ciclos Do While y Do Until

CICLO DO WHILE LOOP

En este ciclo el cuerpo de instrucciones se ejecuta mientras una condicin permanezca como verdadera, en el momento en que la condicin se convierte en falsa el ciclo termina. Su formato general es :

DO WHILE CONDICION(ES) INSTRUCCION(ES) CIERTAS INSTRUCCION(ES) DE SALIDA DE CICLO LOOP

Ejemplo #1 :

DO While puede llevar dos condiciones, en este caso inicial izar 2 variables de condicin y cuidar que existan 2 de rompimiento de ciclo. El grupo cierto de instrucciones puede ser una sola instruccin o todo un grupo de instrucciones. La condicin puede ser simple o compuesta. A este ciclo tambin se le conoce tambin como ciclo de condicin de entrada, o prueba por arriba, porque este ciclo evala primero la condicin y posteriormente ejecuta las instrucciones.

Ejercicio de prctica1: 1. Crear una forma como la siguiente:

En el Do While, se ejecutan las instrucciones mientras sea cierta la expresin de control.

En el Do Until, se ejecutan las instrucciones hasta que la expresin de control sea cierta.

2. Do While: En el comando Ciclo con While, escribir el cdigo siguiente de Do While. Ejecutar el programa y observar que cuando se oprime ese comando, la forma cambia de color continuamente. Escribir 0 (cero) para terminar la ejecucin.
Private Sub Command1_Click( ) Dim Control as Long On Error Resume Next Control = Text1.Text Form1.BackColor = vbWhite Do While Control <> 0 Label2.Caption = Valor: & Control If Form1.BackColor = vbWhite Then Form1.BackColor = vbRed Else Form1.BackColor = vbWhite End If Control = Text1.Text DoEvents Loop MsgBox Loop completado End Sub

En el ejercicio presentado, la forma cambiar de color blanco a rojo y viceversa mientras el texto de Text1 sea diferente a cero (0). Tan pronto el valor del texto sea igual a cero, el ciclo terminar su ejecucin. Se utiliza la lnea On Error Resume Next para indicarle a Visual Basic que siga ejecutando la forma, an cuando ocurra un error de ejecucin. Esta instruccin es necesaria dado que en el ciclo Do While se lee continuamente el texto del Text1. Si la lnea On Error Resume Next no se escribe y en

algn momento se borra el texto para escribir otro valor, Visual Basic dara error al leer el texto en ese instante. En Do While Control <> 0, la expresin de control es Control <> 0. Esta es la expresin que controla el ciclo. Al ser evaluada, solo puede tomar el valor de True (cierto) o False (falso). Dependiendo de ese valor, es ejecutado el ciclo. Si el valor es True, las instrucciones dentro del ciclo se ejecutan. Si el valor es False, Visual Basic ejecuta la instruccin que le sigue a la lnea Loop. Esta expresin de control tambin se conoce como boolean expression. La lnea DoEvents es esencial, pues le indica a Visual Basic que en cada loop o ciclo espere unos segundos para recibir mensajes a travs de Windows. Sin esta lnea, el Do While se ejecutara tan rpido que no sera posible hacer alguna entrada (input) al proyecto, asumiendo que sea necesario el input en el ciclo (como en el ejemplo). La lnea Loop indica el final de las instrucciones que estn dentro del Do While loop. En este punto, Visual Basic regresa a la lnea donde comienza el Do While y verifica la expresin de control. Si todava es cierta la expresin, el ciclo se ejecuta nuevamente. 3. Do Until: En el comando Ciclo con Until, escribir el cdigo siguiente de Do Until (en realidad, en ambos cdigos slo cambia la lnea del Do). Comprobar que la ejecucin es igual a la del Do While.
Private Sub Command1_Click( ) Dim Control as Long On Error Resume Next Control = Text1.Text Form1.BackColor = vbWhite Do Until Control = 0 Label2.Caption = Valor: & Control If Form1.BackColor = vbWhite Then Form1.BackColor = vbRed Else Form1.BackColor = vbWhite End If Control = Text1.Text DoEvents Loop MsgBox Loop completado End Sub

En el ejercicio, las instrucciones dentro del Do Until se ejecutan hasta que el valor entrado en el texto del Text1 sea igual a cero. Se debe notar que la nica lnea que cambi fue la lnea del Do Until. Las otras instrucciones explicadas en el Do While (On Error Resume Next, DoEvents y Loop) cumplen las mismas funciones en el Do Until. Es importante sealar la diferencia principal entre el Do While y el Do Until; en el primero el ciclo se ejecuta mientras la expresin de control es cierta, en el segundo el ciclo se ejecuta hasta que la expresin de control sea cierta. Una caracterstica en comn que tienen los dos ciclos presentados es que la expresin de control se verifica antes de entrar al ciclo o loop. Si la condicin para entrar al loop no se cumple, el ciclo no se ejecuta.

Ejercicio de Prctica2.

Cdigo Fuente --------------------------------------------------------------Private Sub cmdExit_Click() End End Sub --------------------------------------------------------------Private Sub cmdReset_Click() imgRocket1.Top = 3000 imgRocket2.Top = 3000 End Sub --------------------------------------------------------------Private Sub cmdStart_Click() Dim intRnd1 As Integer, intRnd2 As Integer Randomize Do While imgRocket1.Top > 0 And imgRocket2 > 0 intRnd1 = Int((40 * Rnd) + 10) intRnd2 = Int((40 * Rnd) + 10) imgRocket1.Top = imgRocket1.Top - intRnd1 imgRocket2.Top = imgRocket2.Top - intRnd2 Loop

If imgRocket1.Top = imgRocket2.Top Then MsgBox "Empatados!" Else If imgRocket1.Top < imgRocket2.Top Then MsgBox "Gano el Rocket 1!" Else MsgBox "Gano el Rocket 2!" End If End If End Sub La instruccin Randomize se utiliza para evitar que el bucle produzca siempre la misma secuencia de nmeros aleatorios. Note el uso de estructuras condicionales anidadas.

TALLER
1.- USANDO EL OBJETO LISTBOX Y EL CICLO DO WHILE, DESPLEGAR ENTEROS ENTRE 50 Y 80 2.- USANDO EL OBJETO LISTBOX Y EL CICLO DO WHILE, DESPLEGAR MLTIPLOS DE 4 ENTRE 60 Y 20 ACOMPAADOS DE SU LOGARITMOS DE BASE 10. 3.- CONSTRUIR LA TABLA DE DIVIDIR QUE EL USUARIO INDIQUE 4.- USANDO EL OBJETO LISTBOX Y EL CICLO DO WHILE, EVALUAR LA FUNCION Y = -5X^2 + 4X 20 CUANDO X -5 5. 5.- Utilizando un ciclo while implemente una aplicacin que lea cantidades tecleadas por el usuario y imprima el mensaje SE ACABO EL DINERO! Cuando la suma de las cantidades alcance el valor de 500. 6.- Utilizando un ciclo while implemente una aplicacin que lea una cadena de caracteres tecleada por el usuario y la compare con una contrasea pre-establecida. Si el usuario entra la palabra correcta se debe imprimir APROBADO. Si el usuario falla tres veces se debe imprimir DESAPROBADO. Sugerencia: usar un Input box.

Das könnte Ihnen auch gefallen