Sintaxe

 

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

 

O comando FOR ... NEXT permite a repetição de um bloco de instruções por um determinado número de vezes, avaliado por um contador incrementado automaticamente através de uma expressão
numérica.

 

Argumentos

 

<variável >

 

Define o nome da variável de memória que será utilizada como contador para realizar o controle do número de repetições. Se a variável especificada não existir ou não for visível, será automaticamente criada uma variável privada.

 

<expressão inicial>

 

É uma expressão numérica que define o valor inicial a ser assumido pela variável de controle ou contador.

 

TO <expressão final>

 

É uma expressão numérica que define o valor final (máximo ou mínimo) que poderá ser assumido pela variável de controle ou contador.

 

STEP <expressão incremental>

 

Define o incremento da variável de controle. Cada vez que é completado um ciclo de repetição, a variável de controle ou contador é incrementada através do resultado da expressão incremento, que deve ser numérica.

 

O incremento poderá ser positivo ou negativo. Se for positivo, a expressão final deve ser maior que a expressão inicial, pois o contador será crescente. Se for negativo, a expressão final deve ser menor que a expressão inicial, pois o contador será decrescente. Caso este argumento não seja especificado, será assumido automaticamente um incremento igual à 1 (um) a cada ciclo completado.

 

EXIT

 

Finaliza a repetição, desviando incondicionalmente o fluxo de execução do programa para a primeira linha de instrução após o NEXT.

 

LOOP

 

Reinicia um ciclo de repetição a partir de um ponto intermediário do bloco de instruções contido num FOR ... NEXT, evitando que uma parte das instruções deste bloco seja executada. Portanto, reinicia o bloco de instruções mesmo não tendo atingido o NEXT.

 

Utilização

 

Cada vez que uma repetição é iniciada, o AdvPL reavalia todas as expressões que definem o controle do FOR ... NEXT, o que o caracteriza como dinâmico. Isto significa que é possível alterar os seus limites e parâmetros modificando os valores envolvidos nas expressões, mesmo durante a execução do FOR ... NEXT.

 

Dicas

 

Este comando é especialmente útil para a manipulação de arrays. O contador poderá ser utilizado como índice para processar todos os seus elementos.

 

A estrutura FOR ... NEXT pode ser intercalada dentro de qualquer outra estrutura de programação, inclusive dentro de outros FOR ... NEXT. Não há limite de níveis. A única exigência é que cada estrutura de controle seja corretamente intercalada. Isto é, o início e o fim de cada estrutura de controle devem estar contidos dentro do início e do fim de outras de menor nível.

 

Exemplos

 

O exemplo abaixo apresenta os valores do contador nCont, que será incrementado de -3 em -3:

 

FOR nCont := 15 TO 0 STEP -3

          MSGALERT( nCont )

NEXT nCont

 

O resultado será 15, 12, 9, 6, 3 e 0.

 

O exemplo abaixo permite a visualização dos valores contidos nos elementos de um array:

 

nNumElem := LEN(aVetor)

 

FOR nElem := 1 To nNumElem

          MSGALERT( aVetor[nElem] )

NEXT nElem

 

  • Sem rótulos