A declaração while executa uma instrução ou um conjunto de instruções ENQUANTO uma condição é verdadeira. Essa condição é feita no início da declaração, deve vir entre parênteses e retornar um valor booleano.
Exemplo:
int x = 1; while (x < 11) { System.out.println(x + “, ”); x++; }
Resultado da execução do código:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
No exemplo acima, temos a variável x do tipo int que recebe o valor 1. Na estrutura de repetição while, temos a condição: enquanto o valor da variável x for menor que 11, execute as instruções dentro do bloco da estrutura.
Dentro da estrutura while, há a impressão do valor da variável x concatenado com uma vírgula. Depois isso, a variável x é atualizada, pois se não houvesse essa atualização, a estrutura iria entrar em loop infinito.
A estrutura do-while é parecida com a estrutura while: executa uma instrução ou um conjunto de instruções enquanto uma condição é verdadeira, porém a condição é feita no final da declaração.
Da mesma foram que na declaração while, a condição da estrutura do-while deve vir entre parênteses e retornar um valor booleano.
Exemplo:
int x = 1; do { System.out.println(x + “, ”); x++; } while (x < 11);
Resultado da execução do código:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
No exemplo acima, temos a variável x do tipo int que recebe o valor 1. Dentro da estrutura do-while, há a impressão do valor da variável x concatenado com uma vírgula. Depois isso, a variável x é atualizada, pois se não houvesse essa atualização, a estrutura iria entrar em loop infinito.
Depois das instruções da estrutura, temos a condição: enquanto o valor da variável x for menor que 11, volte ao início da estrutura do-while.
Essa diferença entre as estruturas while e do-while traz a seguinte consequência:
- Como a condição da estrutura while é feita no início dessa declaração, então não há garantia de que um loop será executado; e
- Como a condição da estrutura do-while é feita no final dessa declaração, então pelo menos um loop será executado.
Figura 1: Diferença entre while e do-while.
Questões de concursos
[FGV 2018 Banestes – Analista em Tecnologia da Informação – Desenvolvimento de Sistemas] O programa Java
produz o número:
[A] 0;
[B] 1;
[C] 2;
[D] 3;
[E] 4.
Comentários:
Organizando o código da questão, temos:
public class enigma { public static void main(String args[]) { int m = 0, n = 2; do { m = ++m; n--; } while(n > 0); System.out.println(m); } }
Resultado da execução do código:
2
A classe enigma é uma classe executável por ter o método main().
No método main() da classe enigma, temos duas variáveis locais do tipo int: m e n. A variável m foi inicializada com o valor 0 e a variável n, com o valor 2.
Dentro da estrutura do-while, a variável m recebe o valor já incrementado dela mesma. Depois a variável n é decrementada.
Depois das instruções da estrutura, temos a condição: enquanto o valor da variável n for maior que 0, volte ao início da estrutura do-while.
Fazendo o teste chinês do código, temos:
m | n |
0 | 2 |
1 | 1 |
2 | 0 |
Após a finalização da estrutura do-while, há a impressão do valor da variável m: 2, o que faz o gabarito da questão ser a letra c.
Gabarito: letra c.
Espero que tenham gostado!
Forte abraço e até a próxima jornada!
_________________________
Professor Rogerão Araújo
Clique nos links abaixo:
Receba gratuitamente no seu celular as principais notícias do mundo dos concursos!
Clique no link abaixo e inscreva-se gratuitamente: