Usina BRAdvPL Guia
Entrar
← Todos os tópicos
COMANDOPublicado

FOR ... NEXT

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

Repete um bloco de comandos uma quantidade determinada de vezes, usando uma variável como contador.

RepetiçãoControle de fluxoComandos
01 · VISÃO GERAL

Visão geral

A estrutura FOR ... NEXT executa repetidamente os comandos delimitados por FOR e NEXT. O contador começa no valor inicial, avança pelo STEP informado — ou por 1 quando a cláusula é omitida — e termina quando ultrapassa o limite final. STEP negativo permite percorrer valores em ordem decrescente. EXIT encerra o laço e LOOP passa diretamente para a próxima iteração.

02 · SINTAXE

Sintaxe

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

Parâmetros

variável
NuméricoObrigatório

Variável ou elemento de array usado como contador. Prefira declará-lo explicitamente como Local.

inicial
NuméricoObrigatório

Valor inicial do contador, avaliado quando o laço é iniciado.

final
NuméricoObrigatório

Limite final do contador, avaliado quando o laço é iniciado.

incremento
NuméricoOpcional

Valor somado ao contador em cada iteração. Pode ser negativo e sua expressão é reavaliada a cada passagem.

Padrão: 1
03 · EXEMPLO PRÁTICO

Percurso crescente com STEP

User Function ExForPares()
    Local nNumero
    Local nSoma := 0

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

    MsgInfo("Soma dos pares: " + CValToChar(nSoma))
Return
Resultado esperado

O contador começa em zero e avança de dois em dois. Ao final, nSoma contém a soma dos números pares entre 0 e 100.

04 · EXEMPLO PRÁTICO

Percurso decrescente

User Function ExContagem()
    Local nContador

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

STEP -1 reduz o contador a cada iteração, produzindo os valores 5, 4, 3, 2 e 1.

05 · EXEMPLO PRÁTICO

Controle com LOOP e 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

Os valores ímpares são ignorados por LOOP. EXIT encerra o processamento quando o primeiro número par maior que 10 é alcançado.

BOAS PRÁTICAS
  • Declare o contador como Local antes do FOR para deixar seu escopo explícito.
  • Use STEP negativo quando o valor inicial for maior que o final.
  • Use EXIT quando uma condição permitir encerrar a busca antes do limite.
  • Use LOOP para ignorar o restante do bloco e continuar na próxima iteração.
  • Mantenha o corpo do laço curto ou extraia regras extensas para funções auxiliares.
ARMADILHAS COMUNS
  • Alterar as variáveis usadas como limites inicial ou final dentro do laço não recalcula os limites já considerados no início.
  • Alterar diretamente a variável contadora modifica a progressão e pode mudar a quantidade de iterações.
  • Um STEP incompatível com a direção esperada pode impedir que o bloco seja executado ou produzir comportamento incorreto.
  • Se o contador não existir, a documentação informa que ele pode ser criado implicitamente como Private; isso dificulta identificar erros de digitação e dependências de escopo.

Conteúdos relacionados

REFERÊNCIAS
  1. TOTVS. O Comando FOR...NEXT. TDN. Criado por Rafaela Rocha Hikiji; última alteração por Julio Wittwer em 4 set. 2018.
Situação
Publicado
Página criada em
Última revisão em
Idioma original
Português
Revisão
Usina.BR