Usina BRGuía AdvPL
Ingresar
← Todos los temas
COMANDOPublicado

FOR ... NEXT

FOR <variável> := <inicial> TO <final> [STEP <incremento>] ... NEXT

Repite un bloque de comandos una cantidad determinada de veces utilizando una variable como contador.

RepeticiónControl de flujoComandos
01 · DESCRIPCIÓN GENERAL

Descripción general

FOR ... NEXT ejecuta repetidamente los comandos delimitados por FOR y NEXT. El contador comienza en el valor inicial, avanza según STEP — o 1 si se omite — y termina después de superar el límite final. Un STEP negativo permite recorrer valores en orden descendente. EXIT finaliza el bucle y LOOP continúa con la siguiente iteración.

02 · SINTAXIS

Sintaxis

FOR <variável> := <inicial> TO <final> [STEP <incremento>] ... NEXT

Parámetros

variável
NuméricoObligatorio

Variable o elemento de array utilizado como contador. Es preferible declararlo explícitamente como Local.

inicial
NuméricoObligatorio

Valor inicial del contador, evaluado cuando comienza el bucle.

final
NuméricoObligatorio

Límite final del contador, evaluado cuando comienza el bucle.

incremento
NuméricoOpcional

Valor sumado al contador en cada iteración. Puede ser negativo y su expresión se reevalúa cada vez.

Predeterminado: 1
03 · EJEMPLO PRÁCTICO

Recorrido ascendente con STEP

User Function ExPares()
    Local nNumero
    Local nSuma := 0

    For nNumero := 0 To 100 Step 2
        nSuma += nNumero
    Next

    MsgInfo("Suma de pares: " + CValToChar(nSuma))
Return
Resultado esperado

El contador comienza en cero y avanza de dos en dos. Al final, nSuma contiene la suma de los números pares entre 0 y 100.

04 · EJEMPLO PRÁCTICO

Recorrido descendente

User Function ExContagem()
    Local nContador

    For nContador := 5 To 1 Step -1
        ConOut("Contagem: " + CValToChar(nContador))
    Next
Return
Resultado esperado

STEP -1 reduce el contador en cada iteración y produce 5, 4, 3, 2 y 1.

05 · EJEMPLO PRÁCTICO

Control con LOOP y EXIT

User Function ExControle()
    Local nItem

    For nItem := 1 To 20
        If nItem % 2 != 0
            Loop
        EndIf

        If nItem > 10
            Exit
        EndIf

        ConOut(CValToChar(nItem))
    Next
Return
Resultado esperado

LOOP ignora los valores impares. EXIT termina el procesamiento cuando se alcanza el primer número par mayor que 10.

BUENAS PRÁCTICAS
  • Declara el contador como Local antes de FOR para hacer explícito su ámbito.
  • Utiliza STEP negativo cuando el valor inicial sea mayor que el final.
  • Utiliza EXIT cuando una condición permita terminar la búsqueda antes del límite.
  • Utiliza LOOP para ignorar el resto del bloque y continuar con la siguiente iteración.
  • Mantén corto el cuerpo del bucle o extrae reglas extensas a funciones auxiliares.
ERRORES COMUNES
  • Cambiar las variables utilizadas como límites inicial o final dentro del bucle no recalcula los límites ya evaluados al inicio.
  • Cambiar directamente el contador afecta la progresión y puede modificar el número de iteraciones.
  • Un STEP incompatible con la dirección esperada puede impedir la ejecución o producir un comportamiento incorrecto.
  • Si el contador no existe, la documentación indica que puede crearse implícitamente como Private, dificultando identificar errores y dependencias de ámbito.

Contenido relacionado

REFERENCIAS
  1. TOTVS. El comando FOR...NEXT. TDN. Creado por Rafaela Rocha Hikiji; última modificación por Julio Wittwer el 4 de septiembre de 2018.
Estado
Publicado
Página creada el
Última revisión el
Idioma original
Portugués
Revisión
Usina.BR