Instruções de loop X++

Observação

Os grupos de interesse da comunidade passaram do Yammer para o Microsoft Viva Engage. Para se juntar a uma comunidade Viva Engage e participar nas discussões mais recentes, preencha o formulário Solicitar acesso à Comunidade Viva Engage de Finanças e Operações e escolha a comunidade à qual pretende juntar-se.

Este artigo descreve instruções de loop no X++.

Há três instruções de loop: for, while e do... enquanto. Um loop repete a sua afirmação até que a condição que definiste para o loop seja falsa. Dentro das instruções loop, você pode usar as instruções break e continue .

para loops

A sintaxe de um loop for é:

for (inicialização;ensaio;incremento) {statement}

O loop for executa repetidamente a instrução enquanto o teste de expressão condicional for true. pode ser um bloco de instruções. O corpo do loop for (instrução) pode ser executado zero ou mais vezes, dependendo dos resultados do teste.

Um loop for difere de outros loops porque pode atribuir um valor inicial a uma variável de controlo, e porque existe uma instrução para incrementar ou decrementar a variável. Essas adições tornam um loop for especialmente útil para percorrer listas, contêineres e matrizes porque eles têm um número fixo de elementos.

Você também pode aplicar uma instrução a cada elemento e incrementar seu caminho através dos elementos, definindo a condição para testar o último elemento.

Exemplo de um loop for

No exemplo de código a seguir, os itens em uma matriz de inteiros são impressos.

int integers[10];
for (int i = 0; i < 10; i++)
{
    info(int2str(integers[i]));
}
// The output is a series of 0's.

enquanto loops

A sintaxe de um loop while é:

enquanto (expressão)declaração

Um loop while executa repetidamente a instrução enquanto a expressão condicional for verdadeira. Podes substituir a instrução por um bloco de instruções. O ciclo executa a instrução tantas vezes quanto a condição for cumprida (zero para muitas).

Exemplo de um loop while

O exemplo de código a seguir demonstra um loop while que atravessa um contêiner e imprime o conteúdo do contêiner.

container cont = ["one", "two", "three"];
int no = 1;
while (no <= conlen(cont))
{
    info(conPeek(cont, no));
    no++;
}
// The output is "one", "two", "three".

fazer... enquanto loops

A sintaxe do ... enquanto loop é:

do {statement} while (expressão) ;

O...while loop é semelhante ao while loop, mas a condição aparece após a instrução que deve ser executada. pode ser um bloco de instruções. A instrução é sempre executada pelo menos uma vez, porque a condição é testada depois que a instrução é executada. O...enquanto o loop é adequado para tarefas que sempre devem ser feitas pelo menos uma vez, como obter parâmetros para um relatório.

Exemplo de... enquanto loop

O exemplo de código a seguir localiza a menor potência de 10 que é maior que realNumber.

int FindPower(real realNumber)
{
    int exponent = -1;
    real curVal;

    do
    {
        exponent++;
        curVal = power(10, exponent);
    }
    while (realNumber > curVal);

    return exponent;
}

Continuar declaração

A instrução continue faz com que a execução se mova diretamente para a próxima iteração de um for, while ou do... enquanto loop. Para fazer ou enquanto, o teste é executado imediatamente. Para uma instrução for , a etapa de incremento é executada.

Exemplo de uma instrução continue

No exemplo de código seguinte, se Iarray[i] <= 0, o ciclo não executa as restantes instruções. O ciclo incrementa i antes de tentar novamente a instrução if .

int Iarray[100];
for (int i = 0; i < 100; i++)
{
    if (Iarray[i] <= 0)
    {
        Info("Will continue.");
        continue;
    }

    info("Did not continue.");
}
// The output is "Will continue." for all 100 interations.

Declaração de quebra

Use a instrução break dentro de um loop para terminar esse loop. Em seguida, a execução passa para a primeira instrução após o loop.

Exemplo de uma instrução de interrupção

Este exemplo usa uma instrução break dentro de um loop while . Quando usada dentro de um ciclo, a instrução break termina o ciclo e a execução continua a partir da instrução que segue o ciclo. Este comportamento funciona para do... while e para loops também.

var mainMenu = SysDictMenu::newMainMenu();
var enum = mainMenu.getEnumerator();
var found = false;
while (enum.moveNext())
{
    var menuItem = enum.current();
    if (menuItem.label() == "StringOfInterest")
    {
        found = true;
        break;
    }
}
if (found) 
{
    // do something
}