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.
Esta é a sintaxe:
While(condition) { //run this block of code }
Vamos aplicar loops while
ao nosso código Teatime.
- No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar anônimo).
- Copie esse código e cole-o na janela Enter Apex Code (Inserir código do Apex).
//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'); //check ingredients if(totalAmountSugar == 0 || totalAmountTea == 0) { System.debug('Out of ingredients! Sugar: ' + totalAmountSugar + ' Tea: ' + totalAmountTea); break; //ends the While loop } //add sugar totalAmountSugar--; //add tea totalAmountTea--; //guest served totalGuests--; }
- Marque a caixa de seleção Open Log (Abrir registro) e clique em Execute (Executar). 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 12), 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.
Dê uma olhada na sintaxe:
Do { //run this block of code } while(condition);
- No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar anônimo).
- Copie esse código e cole-o na janela Enter Apex Code (Inserir código do Apex).
//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);
- Marque a caixa de seleção Open Log (Abrir registro) e clique em Execute (Executar). 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.