Usar um loop For para iterar completamente uma lista

Objetivos de aprendizagem

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

  • Decidir quando usar um loop for tradicional e quando usar um loop for de iteração de lista ou conjunto.
  • Escrever um loop for tradicional e um loop for de iteração de lista.

Como você aprendeu com as Noções básicas do Apex para administradores, um loop é um bloco de código que é repetido até que uma condição específica seja atendida. Os loops permitem realizar uma tarefa repetidas vezes. O Apex tem três tipos de loop. Você já usou os loops while e do-while. O terceiro tipo é o loop for. Um loop for se repete em itens da mesma forma que os loops while e do-while, mas pode também se repetir em uma lista ou um conjunto. (Você pode usar loops for também com SOQL, mas deixamos isto pra outro dia.)

Nesta unidade, você vai aprender sobre dois tipos de loops for.

  • O loop for tradicional
  • O loop for de iteração de lista ou conjunto

O loop for tradicional

Revisando: os loops while e do-while especificam uma condição que controla quantas vezes um bloco de código é executado. O loop acaba quando a condição é falsa. Loops for fazem a mesma coisa, mas com uma sintaxe mais simples. 

Veja como funciona: Quando um loop é iniciado, ele inicializa um counter Depois, ele verifica se a condição de loop é verdadeira. Se a resposta for sim, o loop realizará uma ação, atualizará o counter e voltará a verificar a condição novamente. Quando a resposta à verificação de condição é não, o loop para.

Diagrama de fluxo de trabalho de um loop for tradicional.

A instrução de declaração de loop faz três coisas.

  1. Inicializa a variável i para 0.
  2. Especifica a condição i < 5.
  3. Incrementa a variável i em um i++.

for(Integer i = 0; i<5; i++){ //Code Block }

Quando o loop começa, a variável i é 0, o que é menos do que 5. A condição é true, então o loop é executado uma vez. No final daquela iteração, a variável é incrementada e i se torna 1, que ainda é menor que 5. Então o loop é executado novamente. Este ciclo continua até que i = 5. Então, uma vez que a condição é false, o loop termina.

Escrever e executar um loop for tradicional

  1. No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar anônimo).
  2. Na janela Enter Apex Code (Inserir código do Apex), cole este código:
  3. for(Integer i = 0; i < 5; i++){
        System.debug('The number is ' + i );
    }
  4. Execute o código e revise o log de depuração.

Você deve ver cinco entradas que mostram o número aumentando de zero a quatro. 

[2]|DEBUG| O número é 0.[2]|DEBUG| O número é 1.][2]|DEBUG| O número é 2.[2]|DEBUG| O número é 3.[2]|DEBUG| O número é 4.

Portando, se os loops while e do-while fazem a mesma coisa que os loops for, então por que usamos loops for? Duas razões: 

  1. Os loops for são usados quando sabemos quantas vezes o loop deve ser executado. Se queremos que o loop pare com base em uma condição que não seja o número de vezes que ele é executado, devemos usar o loop while.
  2. Os loops for são mais concisos porque eles mantêm as três partes – a variável, a condição, e o incremento – juntos em uma instrução.

Veja neste exemplo, um código escrito com um loop while e novamente escrito, mas com um loop for.

Loop while

Integer i = 0;
while (i < 5){
    System.debug('The number is ' + i);
    i++;
}

Loop for

for(Integer i = 0; i < 5; i++){
    System.debug('The number is ' + i );
}

O código loop for é mais compacto. Ele faz a mesma coisa que o loop while, mas com três linhas de código em vez de cinco. Duas linhas a mais de código podem parecer uma pequena diferença agora, mas quando sua organização tem milhares de linhas de código, cada linha adicional faz diferença.

Loops for de iteração de lista ou conjunto

O loop for de iteração de lista ou conjunto (loop for de iteração) é uma variação do loop for tradicional. O loop for de iteração funciona em itens de uma lista ou conjunto. Uma vez que a lista ou o conjunto tem um número específico de itens, não é necessário incrementar uma variável ou verificar uma condição. O loop passa por todos os itens da lista ou conjunto, e então o loop acaba.

A sintaxe de um loop for de iteração é um pouco diferente da sintaxe do loop for tradicional. Quando você declara um loop for de iteração, o tipo de dados da variável deve corresponder ao tipo de dados da lista ou conjunto. Veja a sintaxe para um loop for de iteração.

for (data_type variable_name : list_name or set_name){
    // Loop body
}

Escrever um loop for de iteração

Vamos criar um loop for de iteração para percorrer esta lista.

List <String> tea = new List<String>{'Black Tea', 'Green Tea', 'Chai Tea'};

Observe que a lista tea tem o tipo de dados string (sequência de caracteres). Para declarar o loop for de iteração, usamos o tipo de dados lista (string) e o nome da lista (tea).

for (String t : tea) 

Esta instrução faz duas coisas antes de o loop começar.

  1. Declara a variável t com o tipo de dados string (que corresponde ao tipo de dados da lista).
  2. Especifica a lista tea como a lista na qual o loop se repete.

Temos a declaração da lista e a declaração do loop for de iteração. Basta colocá-las juntas com o corpo do loop e estamos prontos para executar o código.

Executar o código

  1. No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar anônimo).
  2. Na janela Enter Apex Code (Inserir código do Apex), cole este código:
  3. List <String> tea = new List<String>{'Black Tea', 'Green Tea', 'Chai Tea'};
    for(String t : tea){
        System.debug('We have ' + t);
    }
  4. Execute o código e revise o log de depuração.

Revise o log de depuração. Você deveria ver as três entradas mostrando que temos Black Tea, Green Tea, e Chai Tea.

Que maravilha!

Finalizar

Muito bem! Você aprendeu bastante. Se você ainda tiver dúvida sobre algum conceito, consulte os recursos do Apex, como o Guia do desenvolvedor do Apex. Se você sabe onde achar as respostas, e está empenhado em ultrapassar os problemas, a codificação do Apex fica cada vez mais fácil. Seja paciente. Feliz código!

Recursos