También puede ser útil construir bucles que modifiquen el valor de la “variable” de forma decreciente. Esto es posible gracias a que el valor a continuación del Step puede ser negativo. Si se da esta condición, el valor de la “variable” se decrementa en cada iteración. Veamos un ejemplo:
Dim suma As Integer
For i As Integer = 100 To 0 Step -2
suma = suma + i
Next
En este caso, el valor inicial de “i” será 100, ira descendiendo de a dos unidades en cada iteración, y la última se producirá cuando el valor de “i” sea igual a cero. La variable “suma” va incrementando su valor en cada pasada, y al finalizar contiene la suma de los números pares que se encuentran entre el 0 y el 100, ambos inclusive. Puedes comprobarlo, el resultado final de “suma” será 2550.
|
|
La prueba: el resultado final de “suma” es 2550.
|
Por supuesto, en ese caso el “valor_inicial” debe ser mayor que el “valor_final”, si no nuestro bucle no se ejecutará ni una vez. Esto plantea un tema interesante: puede darse el caso de que un bucle no se ejecute ninguna vez, ya que sus valores iniciales son tales que lo hacen imposible. La situación se produce cuando, al principio del bucle, Visual Basic evalúa los valores de “variable”, “valor_inicial”,“valor_final” e “incremento” y descubre que se ha alcanzado el máximo valor posible, saltando a la instrucción que sigue al Next.
Por ejemplo, el siguiente código no realiza ninguna suma, ya que el valor inicial es inferior al final, y el incremento es negativo:
Dim suma As Integer
For i As Integer = 1 To 10 Step -2
suma = suma + i
Next
|
|
Este código no realiza ninguna suma.
|
Nada impide utilizar valores no enteros en cualquiera de los parámetros del For-Next. Supongamos que, siguiendo con las sumas, queremos sumar los valores comprendidos entre 0 y 10, de 0.1 en 0.1:
Dim suma, i As Double
For i = 0 To 10 Step 0.1
suma = suma + i
Next
(nótese el detalle de que hemos declarado las variables como “Double”).
El código anterior sumará 0.0, 0.1, 0.2, etc hasta 10.0 . El resultado, como se ve en la imagen siguiente es 505.
|
|
Código y resultado de la ejecución.
|
Por supuesto, todos los parámetros de un For-Next pueden ser variables. Esto le otorga una gran flexibilidad a nuestros programas, ya que permite construir bucles cuyo numero de ejecuciones dependa, por ejemplo, del numero de productos que contiene una base de datos, o de los días que tiene el mes en curso.
El ejemplo siguiente ilustra esta posibilidad:
Dim suma, i, inicio, final, incremento As Double
inicio = 85.7
final = 100.8
incremento = 0.1
For i = inicio To final Step incremento
suma = suma + i
Next i
Por supuesto, como dijimos antes, si no se es cuidadoso se puede terminar con un bucle que no se ejecute ni una vez. Dato curioso: el resultado, que debería ser 14.174 tiene un pequeño error de redondeo.
|
|
¡Ops! Un error de redondeo.
|
Por ultimo, hay un par de instrucciones que pueden alterar el número de veces que se va a repetir el contenido de un bucle For-Next. Supongamos que queremos sumar los números enteros hasta que la suma sea superior a 1000. Salvo que seamos muy buenos con la matemática, no tenemos forma de conocer cual será el “valor_final” de nuestra cuenta.
Pero con “Exit For” podemos abortar el For-Next cuando queramos. Si Visual BASIC se encuentra con esta instrucción, inmediatamente pasa a la instrucción posterior al Next, sin importar que se haya alcanzado el “valor_final” elegido o no. Así es como se usa:
Dim suma, i, inicio, final, incremento As Double
inicio = 1
final = 1000
incremento = 1
For i = inicio To final Step incremento
suma = suma + i
If suma >= 1000 Then
Exit For
End If
Next i
Usando el IF-THEN que vimos en una entrega anterior, preguntamos si la suma ya es igual o superior a 1000. En caso de que sea así, ejecutamos el Exit For para abandonar el bucle. En la imagen siguiente puede verse el resultado del programa, y también que “i” sólo ha necesitado incrementarse 35 veces.
For-Next tiene una variante que permite recorrer los ítems de una colección, mediante For-Each. Cuando hayamos visto que son y como se emplean las colecciones, volveremos sobre For-Next para explicar este ultimo aspecto.
Con esto terminamos la quinta entrega de nuestro tutorial. En la siguiente veremos los demás tipos de bucles que podemos emplear en nuestros programas Visual BASIC.

Curso de Flash: Flash Básico (I)

LG y su móvil proyector