jueves, 26 de marzo de 2015

Sentencia do...loop


Sentencia do..loop

Do...Loop

Utilice el bucle Do para ejecutar un bloque de sentencias un número indefinido de veces. Hay algunas variantes en la sentencia Do...Loop, pero cada una evalúa una condición numérica para determinar si continúa la ejecución. Como ocurre con If...Then, la condición debe ser un valor o una expresión 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 condición sea True:

Do While condición

Sentencias

Loop

Cuando Visual Basic ejecuta este bucle Do, primero evalúa condición. Sicondición es False (cero), se salta todas las sentencias. Si es True (distinto de cero) Visual Basic ejecuta las sentencias, vuelve a la instrucción Do While y prueba la condición de nuevo.

Por tanto, el bucle se puede ejecutar cualquier número de veces, siempre y cuando condición sea distinta de cero o True. Nunca se ejecutan las sentenciassi condición 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 posición, contador

posición = 1

Do While InStr (posición, cadenalarga, destino)

posición = InStr (posición, 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 instrucción Do...Loop ejecuta las sentencias primero y prueba la condición después de cada ejecución. Esta variación garantiza al menos una ejecución de sentencias:

Do

Sentencias

Loop While condición

Hay otras dos variantes análogas a las dos anteriores, excepto en que repiten el bucle siempre y cuando condición sea False en vez de True.

Hace el bucle cero o más veces

Do Until condición

 Sentencias

Loop



Hace el bucle al menos una vez

Do

 Sentencias

Loop Until condición



No hay comentarios:

Publicar un comentario