![]() |
El ciclo For...Next
Como dijimos en la introducción, los ciclos son estructuras predetermindadas dentro de las cuales la ejecución de una o más instrucciones se repite varias veces. Como ejemplo veamos esta imagen:
![]() |
Quedamos en que:
*) La estructura For...Next es de tipo Bloque parecida al If...End If
*) Los limites del bloque están dados por las palabras-clave: For y Next
*) Dentro del bloque puede haber una o más de una instrucción.
Vamos a concentrarnos ahora en entender las partes que determinan el comportamiento del bloque For
El secreto está en la instrucción que inicia el ciclo (For)
Primero vamos a recordar algo sobre la definición de variable:
Las variables son una forma de identificar una porción de memoria en donde hemos alhojado un dato. Para no tener que recordar la dirección física de memoria en donde fue guardado el dato, le damos un identificador, además en BASIC el identificador puede estar acompañado de un símbolo reservado para especificar el tipo de datos ($ para texto, % para números enteros, etc). El tipo de datos también puede ser pre-determinado en la declaración de la variable.
Bien, volvamos ahora a lo nuestro: Las partes de la definición de un ciclo FOR
For i = 1 to 10
i : el identificador del ciclo. A este tipo de variables (los identificadores usados en los ciclos For) se las conoce por el nombre de "acumulador". A esta variable se le sumará 1 por cada vuelta del ciclo, y el resultado de esa suma será guardado en la misma variable. De esta manera sabremos por que vuelta vamos cada vez que vuelve a la instrucción For. Si una de las instrucciones del ciclo cambia el valor de esta variable, habrá un conflicto dentro del ciclo y tal vez no puedan completarse todas las vueltas del ciclo. Es por esto que al acumulador podemos usarlo para evaluar su contenido unicamente (usarlo en un bloque if) pero no podemos guardar datos en él. Dentro del bloque For el acumulador es una variable reservada. Por esta razón es bueno que te acostumbres a usar siempre un mismo identificador para los ciclos for (el caso mas común es la letra 'i') y que solo uses ese identificador para bloques For...Next y no para otra cosa.
1 to 10 : El rango del ciclo. Obviamente el primer número es el valor de i al inicio del ciclo y el segundo es el valor que deberá tener i antes de salir del ciclo. Es decir, si el ciclo va de 0 a 10, se ejecutará 11 veces (atencion!). Como corolario de esta parte, los valores del rango del ciclo pueden ser cualquier número entero. O sea, podes definir un rango entre:
-1 to 1 (3 vueltas)
-10 to 9 (20 vueltas)
0 to 1 (2 vueltas)
Next i : Cuando el ciclo For fue iniciado, la ejecución continúa hasta el próximo Next que esté acompañado del mismo identificador que lo inició (i). O sea, si iniciamos el bloque For con el identificador my_counter (For my_counter = 1 to 100) y al final del bloque ponemos Next i, no habrá coherencia en el ciclo y se producirá un error.
La flexibilidad del ciclo For...Next:
Se puede afirmar que el ciclo For es muy flexible dadas las posibilidades que ofrece para configurarlo dinámicamente durante la ejecución (¿?).
Hasta ahora, el único identificador que vimos interviniendo en el bloque fue el acumulador (i). Pero puede haber más. El rango puede estar definido por identificadores que recibiran valores en otros procedimientos del programa. Como ejemplo vemamos este programa simple:
![]() |
Cambiando el valor de Text1.Text se pasará a la variable for_stop un valor distinto para terminar el ciclo. Es decir que el ciclo se cumplirá en el rango 1 --- hasta ---> for_stop.
Tengamos siempre en cuenta que el valor de for_stop viene de el TextBox.
De la misma manera podemos reemplazar toda la estructura por identificadores (variables) de nuestra conveniencia. Echemos una mirada a este ciclo For:
For i = for_start To for_stop Text1.Text = Text1.Text & vbCrLf & "i:" & i Next i |
En este ciclo, todos los parametros han sido reemplazados por identificadores. De esta manera tendremos control total del ciclo para configurarlo durante la ejecución del programa. Si las variables for_start y for_stop no tienen valores asignados cuando comienza el ciclo (al hacer click en el botón Comenzar) estas variables tendran un valor 0 y tal vez haya problemas para ejecutar el ciclo.
Pasaremos ahora a la última parte del ciclo For. El parámetro Step
Step es una palabra en inglés que quiere decir Paso
Se refiere al intervalo que se sumará al acumulador para pasar a la siguiente vuelta del ciclo.
Con este parámetro podemos tener un ciclo For que acumule valores de 2 en 2, de 100 en 100, etc.
Veamos un ejemplo:
For i = 1 To 20 Step 5 Text1.Text = Text1.Text & vbCrLf & "i:" & i Next i |
En este ejemplo nuestro acumulador tendrá los siguientes valores:
1
6
11
16
21 (<- fin del ciclo For)
De esta manera logramos un ciclo for que dá solo 4 vueltas con un intervalo definido entre 1 y 20.
El uso de Step es muy diverso y el programador lo plantea de acuerdo a cada situación.
Bien, espero que hayas aprendido bastante sobre el ciclo For. Verás que te será muy útil para desarrollar programas que realizen tareas recursivas de manera fácil y flexible. Si ya jugaste bastante con él y estas bien familiarizado, te invito a pasar a la siguiente fase del tutorial...
El capítulo #2: El ciclo Do...Loop