A Declaração While
Uma estrutura de controle de repetição, é o qual nos referimos como loop, executa um trecho de código várias vezes sucessivamente. Utilizando variável não constante, cada repetição da declaração pode ser diferente.
Por exemplo, uma declaração que interage em uma lista de nomes únicos e saídas encontrará um novo nome a cada execução do loop.
Essa simples repetição no Java chama-se while. Como toda estrutura de repetição ele tem uma condição de encerramento, implementado com uma expressão booleana, que continuará enquanto a expressão for avaliada como verdade.
A estrutura while é similar a declaração if-else que é composto por uma expressão booleana e um código, ou um bloco de código. Durante a execução, a expressão booleana é avaliada antes de cada interação do loop e termina se o retorno for false.
É importante notar que o loop while pode terminar depois da primeira avaliação da expressão booleana. Assim, a declaração de um bloco pode nunca ser executado. Vamos ver um exemplo:
1 2 3 4 5 6 7 8 |
int pessoa = 5; public void ocuparQuarto(int quarto){ while(quarto > 0 && pessoa > 0){ pessoa--; quarto--; } System.out.println(“Agora restam “+ quarto + “ livres”); } |
No exemplo há quartos vazios e enquanto os quartos ou pessoas não chegarem ao valor zero o loop continuará sendo executado.
Veja o código a seguir:
1 2 3 4 |
int x = 2; int y = 5; while(x < 10) y++; |
Você consegue ver o problema que tem nesse código? Ele nunca irá parar de executar. A expressão que está sendo verificada (x < 10) não está sofrendo nenhuma alteração, ou seja, o valor é sempre true. Isso é chamado de loop infinito.
Você sempre deve ter cuidado quando está trabalhando com estrutura de repetição para não provocar um loop infinito.
A Declaração do-while
O Java tem uma outra variação de while o do-while, o qual é parecido com o while. A diferença é que o do-while será executado pelo menos uma vez.
A primeira diferença entre a estrutura do do-while e while é que propositalmente o bloco (do) está antes da expressão de condição, isso faz com que o (do) seja executado antes de qualquer verificação da condição. Veja o exemplo a seguir:
1 2 3 4 5 |
int x = 0; do { x++; } while (false); System.out.println(x); // resultado: 1 |
Se você entendeu o do-while, sabe o porquê do resultado ser 1.
Quando usar while e do-while?
O while e do-while podem ser convertidos um pelo outro, mas sempre tem o melhor para ser utilizado. Veja o exemplo:
1 2 3 |
while(x > 10) { x--; } |
O mesmo código com do-while:
1 2 3 4 5 |
if(x > 10) { do { x--; } while(x > 10); } |
Veja que para o código utilizando o do-while ter o mesmo comportamento do while foi necessário o uso do if. Sendo assim, você percebe que é mais vantajoso utilizar o while porque você irá escrever menos código.
Sabendo que o do-while tem uma característica específica de executar um bloco antes da verificação, sendo assim, somente em situações específicas você precisará utilizá-lo.
Pode ser que você precise utilizar os dois em conjunto, veja:
1 2 3 4 5 6 7 |
if(x > 10) { do{ x--; } while(x > 10); } else { x++; } |
Fonte: OCA – Oracle Certified Associate Java SE 8 Programmer I – Study Guide
Deixe um comentário