Usar loops

Objetivos de aprendizagem

Após concluir esta unidade, você estará apto a:

  • Diferenciar os loops while e do-while.
  • Usar operadores de incremento e diminuição para controlar a execução de código.

No nosso exemplo Teatime, fizemos um bule de chá para compartilhar com nossos amigos mais próximos. Mas o que acontece se precisarmos servir chá a um grupo de 100 pessoas? Precisamos fazer as mesmas etapas repetidamente até que todos tenham sido atendidos. Parece que isso vai ser muito código redundante, não é? É aqui que os loops são muito práticos.

Um loop é um bloco de código que é repetido até que uma condição específica seja atendida. No caso do código Teatime, vamos analisar as etapas a serem repetidas:

Add Tea and Sugar to Teacup
Pour Tea in Teacup
Put 1 teaspoon of Sugar in Teacup
Stir Tea in Teacup
Serve Tea to a Friend

As etapas repetidas podem ser adicionadas a um loop. O Apex tem três maneiras de codificar loops: os loops while, do-while e for. Por enquanto, vamos nos concentrar nos loops while e do-while. Como seus nomes, os loops while e do-while são muito semelhantes. Ambos verificam se uma condição específica é atendida. O diferenciador é quando eles verificam se a condição é atendida. Os loops while verificam a condição antes do início do loop, e os loops do-while verificam após a conclusão do loop. 

Parece só um pequeno detalhe, não é? Na verdade, o impacto é bem grande. 

Pense dessa forma: o loop do-while sempre é executado pelo menos uma vez. O loop while pode nunca ser executado, dependendo da condição. 

Loops while

O loop while começa verificando se uma condição foi atendida. Se a condição for verdadeira, ele faz algo. Se for falsa, o loop para.

Um gráfico de fluxo de processo para um loop while consistindo em uma condição que está sendo verificada para ver se ela é verdadeira ou falsa. Se a condição for verdadeira, o loop continua. Se a condição for falsa, o loop para.

Esta é a sintaxe:

While (condition){
    //run this block of code
}

Vamos aplicar loops while ao nosso código Teatime. 

  1. No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar anônimo).
  2. Copie esse código e cole-o na janela Enter Apex Code (Inserir código do Apex).
  3. //Declare an Integer variable called totalGuests and set it to 100
    Integer totalGuests = 100;
    //Declare an Integer variable called totalAmountSugar and set it to 159 (number of teaspoons in a bag of sugar).
    Integer totalAmountSugar = 159;
    //Declare an Integer variable called totalAmountTea and set it to 35 (number of teabags).
    Integer totalAmountTea = 35;
    //Loop: Add a teaspoon of sugar and one tea bag to a tea cup. Serve until there is no sugar or tea left.
    While(totalGuests > 0){
        System.debug(totalGuests + 'Guests Remaining');
        //add sugar
        totalAmountSugar--;
        //add tea
        totalAmountTea--;
        //check ingredients
        if(totalAmountSugar == 0 || totalAmountTea == 0){
            System.debug('Out of ingredients!');
            break; //ends the While loop
        }
        totalGuests--;
    }
  4. Marque a caixa de seleção Open Log (Abrir registro) e clique em Execute (Executar).
  5. O log de execução abre, exibindo o resultado da execução do seu código. Selecione a caixa de seleção Debug Only (Depurar somente) na parte inferior da janela.

Não, o sinal -- não é um erro de digitação. Ele é chamado de operador de pós-decremento. É uma forma abreviada de dizer "subtrai um número deste valor". Se totalAmountSugar for igual a 159, subtraia-o de modo que agora o valor de totalAmountSugar seja igual a 158. O operador de pós-incremento ++ faz o oposto, adiciona um número ao valor.

E o que está acontecendo agora exatamente? Lembre-se que temos um objetivo principal: servir chá para 100 convidados. Cada vez que servimos um convidado, uma porção de cada ingrediente (totalAmountSugar e totalAmountTea) e um convidado (totalGuests) são subtraídos. Quando totalAmountSugar ou totalAmountTea chega a 0 (linha 15) ou totalGuests chega a 0 (linha 8), o loop para e mais ninguém é servido. 

Vamos ver como o loop do-while funciona.

Loops do-while

Um loop do-while permite que o código faça algo antes que a condição seja testada.

O loop do-while começa fazendo uma tarefa uma vez. Em seguida, uma condição é verificada. Se a condição for verdadeira, ele executa a tarefa novamente. Se for falsa, o loop para.

Um gráfico de fluxo de processo para um loop do-while consistindo em um código de bloco sendo executado e uma condição que está sendo verificada para ver se ela é verdadeira ou falsa. Se a condição for verdadeira, o loop continua. Se a condição for falsa, o loop para.

Dê uma olhada na sintaxe:

Do{
    //run this block of code
}while (condition);
  1. No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar anônimo).
  2. Copie esse código e cole-o na janela Enter Apex Code (Inserir código do Apex).
  3. //Declare an Integer variable called totalGuests and set it to 100
    Integer totalGuests = 100;
    //Declare an Integer variable called totalAmountSugar and set it to 159 (number of teaspoons in a bag of sugar).
    Integer totalAmountSugar = 159;
    //Declare an Integer variable called totalAmountTea and set it to 35 (number of teabags).
    Integer totalAmountTea = 35;
    do{
        //deduct sugar serving
        totalAmountSugar--;
        //deduct tea serving
        totalAmountTea--;
        //deduct guest
        totalGuests--;
        System.debug(totalGuests + ' Guests Remaining!');
        //check ingredients
        if(totalAmountSugar == 0 || totalAmountTea == 0){
            System.debug('Out of ingredients!');
            break; //ends the While loop
        }
    } while(totalGuests > 0);
  4. Marque a caixa de seleção Open Log (Abrir registro) e clique em Execute (Executar).
  5. O log de execução abre, exibindo o resultado da execução do seu código. Selecione a caixa de seleção Debug Only (Depurar somente) na parte inferior da janela.

Você declarou variáveis, determinou valores, criou listas e fez loop de dados de várias maneiras. Parabéns! Você concluiu uma introdução ao Apex e está no caminho certo para entender mais sobre o código.

Recursos