Sin condición.

Sin condición.

Este es el modo más sencillo de la estructura: sin incluir condición al principio o final. También es el modo más peligroso, ya que si no incluimos un control dentro del código, corremos el riesgo de caer en un bucle infinito. En el ejemplo del Código fuente 155, establecemos una condición de salida mediante una estructura If dentro del bucle, que comprueba el contenido de la variable, y fuerza la salida cuando tenga un valor superior a cierto número.

Sub Main() Dim Valor As Integer

Do Console.WriteLine("Introducir un número") Valor = Console.ReadLine()

' comprobar y salir del bucle si es necesario If Valor > 400 Then Exit Do End If Loop

End Sub

Código fuente 155

For...Next

Esta estructura ejecuta un bloque de código un número determinado de veces, establecido por un rango

de valores y controlado por un contador. El Código fuente 156 muestra su sintaxis

For Contador = Inicio To Fin [Step Incremento] ' código ' ......

[Exit For] ' código ' ......

Next

Código fuente 156

El elemento Contador se inicializa con un valor y el código existente entre For y Next es ejecutado una serie de veces, hasta que el valor de Contador se iguala a Fin.

Por defecto, los incrementos de Contador son en uno, pero podemos cambiar este aspecto utilizando el modificador Step, mediante el que podemos establecer el número en el que se van a realizar los incrementos. Step también nos permite realizar decremento utilizando un número negativo.

© Grupo EIDOS 15. Bifurcación y ámbito del código

Si queremos realizar una salida de la ejecución de esta estructura antes de haber completado el número

de iteraciones establecidas, podemos utilizar la instrucción Exit For, que provocará dicha salida de igual modo que el explicado anteriormente en la estructura Do...Loop.

El Código fuente 157 muestra diferentes ejemplos de uso de este tipo de bucle.

Sub Main() Dim Contador As Integer Dim Final As Integer

' recorrido simple del bucle Console.WriteLine("Bucle For normal") For Contador = 1 To 10

Console.WriteLine("Variable Contador: {0}", Contador) Next

Console.WriteLine()

' recorrer el bucle especificando un incremento Console.WriteLine("Bucle For con incremento") Console.WriteLine("Introducir el número de ejecuciones para el bucle") Final = Console.ReadLine() For Contador = 1 To Final Step 4

Console.WriteLine("Variable Contador: {0}", Contador) Next

Console.WriteLine()

' recorrer el bucle especificando un decremento Console.WriteLine("Bucle For con decremento") For Contador = 18 To 4 Step -1

Console.WriteLine("Variable Contador: {0}", Contador) Next

Console.WriteLine()

' este bucle no se ejecutará, ' al ser mayor el valor de contador ' que el valor final, y no haber ' establecido un decremento For Contador = 18 To 4

Console.WriteLine("Variable Contador: {0}", Contador) Next

' recorrer el bucle y salir antes de completar ' todas las iteraciones Console.WriteLine("Bucle For con salida antes de completar") For Contador = 1 To 10

Console.WriteLine("Variable Contador: {0}", Contador)

If Contador = 7 Then Exit For End If Next

Console.ReadLine() End Sub

Código fuente 157

Programación con Visual Basic .NET © Grupo EIDOS

Un truco para optimizar y acelerar la ejecución en un bucle de este tipo, consiste en utilizar como contador una variable de tipo Integer, en vez de una de tipo Short, Long, Decimal, etc. Esto es debido

a que los tipos Integer se actualizan más rápidamente que los otros tipos numéricos, aunque la diferencia sólo será apreciable en bucles que ejecuten muchos miles de iteraciones y que contengan muchas instrucciones. Ver Código fuente 158.

Dim ContRapido As Integer Dim ContLento As Decimal

' este bucle se ejecutará más rápido que el siguiente For ContRapido = 1 To 10000

' código Next

For ContLento = 1 To 10000 ' código Next

Código fuente 158