Instrucción Do...Loop (Visual Basic)
Actualización: noviembre 2007
Repite un bloque de instrucciones mientras una condición Boolean sea True o hasta que la condición se convierta en True.
Do { While | Until } condition
[ statements ]
[ Exit Do ]
[ statements ]
Loop
-or-
Do
[ statements ]
[ Exit Do ]
[ statements ]
Loop { While | Until } condition
Partes
While
Obligatorio si se utiliza Until. Repite el bucle hasta que condition sea False.Until
Obligatorio a menos que se utilice While. Repite el bucle hasta que condition sea True.condition
Opcional. Expresión Boolean. Si condition es Nothing, Visual Basic la trata como False.statements
Opcional. Una o más instrucciones que se repiten mientras o hasta que condition sea True.Exit Do
Opcional. Transfiere el control fuera del bucle Do.Loop
Obligatorio. Termina la definición del bucle Do.
Comentarios
Utilice una estructura Do...Loop cuando desee repetir un conjunto de instrucciones un número indefinido de veces, hasta que se satisfaga una condición. Si desea repetir las instrucciones un número fijo de veces, la Instrucción For...Next es normalmente una opción mejor.
La estructura Do...Loop proporciona mayor flexibilidad que laInstrucción While...End While (Visual Basic) porque permite elegir si se debe finalizar el bucle cuando condition deja de ser True o cuando es True por primera vez. También le permite probar condition al principio o al final del bucle.
Reglas
Naturaleza de la condición. Generalmente, la condición es el resultado de comparar dos valores, pero también puede ser cualquier expresión que da como resultado un valor de Boolean (Tipo de datos, Visual Basic) (True o False). Esto incluye los valores de otros tipos de datos, como los numéricos, que han sido convertidos a valores de tipo Boolean.
Probar la condición. Sólo puede probar condition una vez, al principio o al final del bucle. Puede usar While o Until para especificar condition, pero no ambas.
Número de iteraciones. Si prueba condition al principio del bucle (en la instrucción Do), puede que el bucle no se ejecute ni siquiera una vez. Si prueba al final del bucle (en la instrucción Loop), el bucle siempre se ejecuta al menos una vez.
Anidar bucles. Los bucles Do se pueden anidar colocando un bucle dentro de otro. También puede anidar distintos tipos de estructuras de control dentro de otras. Para obtener más información, vea Estructuras de control anidadas.
Transferir el control fuera del bucle. La Instrucción Exit (Visual Basic) transfiere el control inmediatamente a la instrucción que sigue a la instrucción Loop. Puede desear salir de un bucle si detecta una condición que hace que sea innecesario o no se pueda continuar la iteración, como puede ser un valor erróneo o una solicitud de finalización. Puede colocar cualquier cantidad de instrucciones Exit Do en cualquier punto del bucle Do. Exit Do suele utilizarse después de evaluar alguna condición, por ejemplo en una estructura If...Then...Else.
Bucles sin fin
Un uso de Exit Do consiste en comprobar una condición que podría ocasionar un bucle sin fin; es decir, un bucle que pudiera ejecutarse un número extremadamente elevado, o incluso infinito, de veces. Si detecta este tipo de situación, puede utilizar Exit Do para interrumpir el bucle. De lo contrario, el bucle sigue ejecutándose.
En el siguiente ejemplo se asigna a number un valor que podría hacer que el bucle se ejecutara más de 2 ^ 31 veces. La instrucción If comprueba si se produce esta situación y, si es así, sale de ella, impidiendo la entrada en un bucle sin fin.
Sub exitDoExample()
Dim counter As Integer = 0
Dim number As Integer = 8
Do Until number = 10
If number <= 0 Then Exit Do
number -= 1
counter += 1
Loop
MsgBox("The loop ran " & counter & " times.")
End Sub
Nota: |
---|
Para detener un bucle sin fin, presione ESC o CTRL+INTER. |
Ejemplo
El ejemplo siguiente ilustra las estructuras Do...Loop anidadas, así como el uso de While y Until, y la comprobación al principio (instrucción Do) y al final (instrucción Loop) del bucle.
Sub DoExample()
Dim check As Boolean = True
Dim counter As Integer = 0
Do
Do While counter < 20
counter += 1
If counter = 10 Then
check = False
Exit Do
End If
Loop
Loop Until check = False
End Sub
En el ejemplo anterior, la estructura Do...Loop interior se ejecuta 10 veces, establece el valor del indicador en False y sale de forma prematura utilizando la instrucción Exit Do. El bucle externo sale inmediatamente al comprobar el valor del indicador.
Vea también
Tareas
Cómo: Mejorar el rendimiento de un bucle
Conceptos
Estructuras de control anidadas
Referencia
Instrucción For...Next (Visual Basic)
Boolean (Tipo de datos, Visual Basic)