El ciclo Do...Loop permite organizar la repetición de un bloque de código con condiciones de finalización más flexibles que For (que está orientado a contadores) o While (donde la condición siempre se verifica al inicio). En Visual Basic existen cuatro variantes principales de su sintaxis:
' Verificación al inicio Do While condition ' Cuerpo del ciclo Loop ' Verificación al final Do ' Cuerpo del ciclo Loop While condition ' De manera similar con Until: Do Until condition ' Cuerpo del ciclo Loop Do ' Cuerpo del ciclo Loop Until condition
Se debe usar Do...Loop si:
Pregunta: ¿Qué pasará si dentro del ciclo Do While condition la condición condition es inicialmente falsa? ¿Se ejecutará al menos una vez el cuerpo del ciclo?
Respuesta: No, el cuerpo del ciclo no se ejecutará en absoluto, ya que la verificación ocurre ANTES de la primera ejecución.
Ejemplo:
Dim i As Integer = 10 Do While i < 5 Console.WriteLine(i) i += 1 Loop ' No se imprimirá ninguna línea.
Historia
En la etapa de análisis de datos, el desarrollador utilizó un ciclo
Do Until reader.EndOfStreamdentro del cual se estaba llamando a la lectura de una línea del archivo. Pero dado queEndOfStreamsolo se vuelve verdadero después de intentar leer más allá del final del archivo, la última línea no se procesaba. La forma correcta: usarDo While Not reader.EndOfStreamo manejar la lectura línea por línea y finalizar el ciclo según la condición EOF.
Historia
Al migrar el código de For a Do...Loop, se implementó un ciclo sin un incremento explícito de la variable contadora dentro del cuerpo. Como resultado, el programa entró en un ciclo infinito, ya que la condición de finalización nunca se cumplía. Siempre es necesario controlar el cambio de las variables clave dentro del cuerpo de Do...Loop.
Historia
En uno de los subsistemas de informes, un programador utilizó ciclos anidados
Do...Loopsin tener en cuenta la anidación de las condicionesExit Do: elExit Dointerno solo salía del ciclo interno, no de ambos. Un error bloqueador transitorio fue detectado solo en producción con grandes volúmenes de datos.