Controle de Fluxo Parte ll
Continuando a segunda parte do artigo Controle de Fluxo será exposto informações sobre while, do while, for, for-each, break, continue e instruções rotuladas. Para aqueles que não acompanharam os outros arquivos aqui segue os links.
Orientação a Objetos - Parte I
Orientação a Objetos - Parte II
Declaração e Controle de Acesso Parte I
Declaração e Controle de Acesso – Parte II
WHILE – DO WHILE
O comando while é simples, ele é utilizado para executar um bloco na quantidade desconhecida de vezes. Veja a sintaxe na Listagem 08.
int x = 10;
while (x == 10) {
System.out.println(“entrou no while”);
}
Listagem 08
Veja que o código da Listagem 08 será executado infinitamente, pois enquanto 10 for igual a 10 o código será executado.
Já o comando DO WHILE é semelhante, porem com um detalhe, todo o comando será executado ao menos uma vez pois a condição é verificada após a interação. Veja na Listagem 09.
int x = 10;
do {
System.out.println(“” + x);
x++;
} while (x < 11);
Listagem 09
FOR – FOR EACH
O comando FOR é utilizado quando você quantas vezes precisa fazer a interação. Ele é composto por três expressões, sendo elas:
a) Declaração e inicialização
b) Expressão condicional
c) Expressão de interação
Um detalhe importante que você não pode esquecer é que na expressão condicional só pode haver UMA, mas você pode ter condições composta. Veja na Listagem 10.
for (int x = 0; x < 10 | (x % 2) == 0; x++) {
System.out.println(“” + x);
}
Listagem 10
Até agora falamos da forma comum de usar o comando FOR, porem a partir do Java 1.5 que é o foco do nosso estudo você encontrará o FOR EACH que é uma simples de se fazer uma interação, situações que era necessário o uso do ITERATOR.
Imagine que você tem uma lista de alunos que você deseja percorrer com Iterator como na Listagem 11.
Collection alunos = ...;
for (Iteractor i = alunos.iterator(); i.hasNext();) {
Aluno usuário = (Aluno) i.next();
}
Listagem 11
Agora com o FOR-EACH as coisas ficam mais simples. Veja na Listagem 12
for (Aluno usuário : alunos) {
}
Listagem 12
Achou complicado? Imagine no exame! Mas então para entender melhor veja o exemplo da Listagem 13 com uma interação com o FOR simples.
int[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (int i = 0; i < x.length; i++) {
System.out.println(“ ” + x[i]);
}
Listagem 14
Agora veja na Listagem 15 a interação do mesmo array, porém com o FOR-EACH.
int[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (int i : x) {
System.out.println(i);
}
Listagem 15
Viu com as coisas ficaram menos complicadas! Porém esteja preparado para encontrar as duas formas de loop no exame.
BREAK e CONTINUE
O comando break, como o próprio nome sugere ele interrompe o fluxo da interação, seja ele um for, while, do. Veja na Listagem 16 como funciona e qual é o comportamento de uma interação usando break.
int x = 0;
for (int i = 0; i < 10; i++) {
x = i;
if (i > 5)
break;
}
System.out.println(“O ultimo valor de i foi ” + x);
Listagem 16
Veja que o resultado dessa compilação é: “O ultimo valor de i foi 6”, pois o break fez a interrupção que o valor de i foi maior que 5. Qual o primeiro número maior que 5 ? Bingo!
Mas se no lugar do break eu colocasse um CONTINUE? Qual seria o comportamento? Veja que no comando break houve uma total interrupção na interação, no caso do continue há pequena interrupção mas não parando o processo. Imagina que você queira saber os números pares entre 0 a 50. Então nesse caso você poderia usar o continue dizendo que quando o numero for dividido por 2 possuir um resto igual a 1 quer dizer que ele é impar então “pule-o”. Veja o código da Listagem 17 como ficaria.
for (int i = 0; i <= 50; i++) {
if ((i % 2) == 1) continue;
System.out.println(“ ” + i);
}
Listagem 17
INSTRUÇÕES ROTULADAS
As instruções rotuladas servem quando você quer usar laços aninhados e deseja fazer um desvio do fluxo de execução seja ele através de um break ou de um continue. Desta forma você nomeia o laço (label: antes do bloco do laço) e quando for realizado o desvio no fluxo da execução (break ou continue) salta para o nome do laço para o qual o fluxo deverá ser desviado.
Veja na Listagem 18 um exemplo de instrução rotulada.
rotulo: for (int i = 0; i < 5; i++) {
for (int j = 0; j < 2; j++) {
System.out.println(“Hello”);
break rotulo;
}
System.out.println(“CERTIFICACAO”);
}
System.out.println(“Good-Bye”);
Listagem 18
No exemplo da Listagem 18 a instrução break rotula será executada e o fluxo sairá do loop rotulado com rotulo. Então a próxima linha a ser executada exibirá Good-Bye, sendo assim a execução CERTIFICAÇÃO nunca será alcançada.
Agora pessoal é só praticar tudo o que vimos até agora. Muito obrigado e aguardo vocês no próximo artigo
Fabiano Fernandes