Sintaxis
FOR <variável> := <expressão inicial> TO <expressão final> [ STEP <expressão incremental> ]
...
< instruções >
...
[ LOOP ]
...
[ EXIT ]
...
< instruções >
...
NEXT <variável>
Propósito
El comando FOR ... NEXT permite repetir un bloque de instrucciones por un determinado número de veces, evaluado por un contador e incrementado automáticamente por medio de una expresión numérica.
Argumentos
<variável >
Define el nombre de la variable de memoria que se utilizará como contador para realizar el control del número de repeticiones. Si la variable especificada no existe o no es visible, automáticamente se creará una variable privada.
<expressão inicial>
Es una expresión numérica que define el valor inicial que será asumido por la variable de control o contador.
TO <expressão final>
Es una expresión numérica que define el valor final (máximo o mínimo) que podrá asumir la variable de control de contador.
STEP <expressão incremental>
Define el incremento de la variable de control. Cada vez que se completa un ciclo de repetición la variable de control o contador se incrementará por medio del resultado de la expresión incremento, que debe ser numérica.
El incremento puede ser positivo o negativo. Si es positivo la expresión final debe ser mayor que la expresión inicial, pues el contador será creciente. Si es negativo la expresión final debe ser menor que la expresión inicial, pues el contador será decreciente. Si este argumento no se especifica, se asumirá automáticamente un incremento igual a 1 (uno) por cada ciclo completado.
EXIT
Finaliza la repetición, desviando incondicionalmente el flujo de ejecución del programa a la primera línea de instrucción después del NEXT.
LOOP
Reinicia un ciclo de repetición a partir de un punto intermediario del bloque de instrucciones contenido en un FOR ... NEXT, evitando que se ejecute una parte de las instrucciones de este bloque. Por lo tanto, reinicia el bloque de instrucciones aunque no haya alcanzado el NEXT.
Utilización
Cada vez que se inicia una repetición, el AdvPL revalúa todas las expresiones que definen el control del FOR ... NEXT, caracterizándolo como dinámico. Esto significa que es posible modificar sus límites y parámetros cambiando los valores involucrados en las expresiones, incluso durante la ejecución del FOR ... NEXT.
Sugerencias
Este comando es especialmente útil para manejar los array. El contador se puede utilizar como índice para procesar todos sus elementos.
La estructura FOR ... NEXT se puede intercalar dentro de cualquier otra estructura de programación, incluso dentro de otros FOR ... NEXT. No hay límite de niveles. La única exigencia es que cada estructura de control se intercale correctamente. Es decir, el inicio y fin de cada estructura de control deben estar contenidos dentro del inicio y fin de otras de menor nivel.
Ejemplos
El siguiente ejemplo muestra los valores del contador nCont, que se incrementará de -3 en -3:
FOR nCont := 15 TO 0 STEP -3
MSGALERT( nCont )
NEXT nCont
El resultado será 15, 12, 9, 6, 3 y 0.
El siguiente ejemplo permite visualizar los valores contenidos en los elementos de un array:
nNumElem := LEN(aVetor)
FOR nElem := 1 To nNumElem
MSGALERT( aVetor[nElem] )
NEXT nElem