For ... Next | For each ... Next | Do ... Loop
Cuando se necesita que un grupo de sentencias se ejecuten varias veces, entonces se utilizan los bucles. Un bucle es una estructura de repetición que repite las sentencias que haya dentro de el un numero determinado de veces.
Existen los bucles en los que antes de codificarlos ya sabes cuantas veces tienen que repetir las instrucciones que tiene dentro, cuando ocurre esto, se utiliza el bucle llamado For, cuya sintaxis señalamos a continuación:
For variable = expresion1 To expresion2 [Step expresion3]
setencia(s)
[Exit For]
sentencia(s)
Next [variable]
La instruccion Exit For permite salir del bucle For antes de que este finalice, pero no se recomienda que se utilice puesto que rompe de una manera demasiado brusca la secuencia del código. Un ejemplo de esta estructura For puede ser el siguiente:
For contador = 1 To 10 Step 2
Print contador
Next
La sentencia Print consigue que el usuario pueda ver escrito en el formulario lo que va despues de dicha sentencia(contador). La instrucción Step le dice al bucle cuanto le tiene que sumar a la variable contador cada vez que se ejecute el bucle.Esto sería lo que vería el usuario:
También podemos usar una variante de este bucle que es el bucle For Each. Lo que realizaría este bucle sería repetir un grupo de instrucciones por cada elemento de una colecion de objetos o de una matriz(array) en vez de repetir las instruciones un numero especificado de veces.
la sintaxis de este bucle es la siguiente:
For Each elemento In grupo
sentencia(s)
Next elemento
Otro tipo de bucle es el llamado bucle Do. Este bucle se utiliza cuando no se sabe de antemano cuantas veces tiene que repetirse el bucle, con lo cual la condición de salida del bucle no puede ser un contador que vaya contando las veces que se realiza el bucle, sino tiene que ser otro tipo de condicion. La sintaxis es:
Do [While/Until condicion]
sentencia(s)
[Exit Do]
sentencia(s)
Loop
En este bucle también aparece una sentencia que es muy parecida a una del anterior bucle que es Exit Do. Esta sentencia realiza la misma operacion, sale del bucle antes de que finalice, pero es poco recomendable por las mismas razones. Aqui tambien podemos observar las instrucciones While y Until. While significa mientras, y sirve para hacer un tipo de bucle como "mientras no se cumpla la condición no salgas del bucle" y Until significa antes y sirve para realizar este otro tipo de bucle: "hasta que no se cumpla la condición no salgas del bucle".
Un ejemplo de un bucle Do sería:
numero = 1
Do While numero < 10
Print numero
numero = numero + 1
Loop
En este caso el usuario vería:
Pero dentro del mismo bucle Do existen otros dos tipos de bucles, que se diferencian por evaluar la condición de salida antes o despues. La diferencia es muy simple, si se evalua la condición antes, puede que el programa no entre en el bucle, puesto que si no se cumple la condición ya no entra ni una sola vez en el bucle, pero por el contrario puede interesarnos que entre al menos una vez, y para ello podemos evaluar la condicion al final del bucle. La sintaxis de estos dos nuevos bucles es esta:
Do
sentencia(s)
[Exit Do]
sentencia(s)
Loop[While/Until condición]
Aqui tambien podemos observar las instrucciones While y Until. While sirve para hacer un tipo de bucle como "no salgas del bucle mientras no se cumpla la condición " y Until sirve para realizar este otro tipo de bucle: "no salgas del bucle hasta que no se cumpla la condición ".
Un ejmplo de estipo de bucles sería:
numero = 1
Do
Print numero
numero = numero + 1
Loop Until numero = 10
Y lo que vería el usuario: