Considere o seguinte programa na linguagem Java: public...
public class Loop{ public static void main(String[] args) { int a, b; a=1; b=2; while(a<7){ a = b+a; do { b= a+b; a= a+1; } while(b<9); } System.out.print(a + " e " + b); } }
Qual o resultado exibido da execução do programa acima?
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - 15 e 23
Para resolver essa questão, é necessário compreender o funcionamento dos laços de repetição while e do-while na linguagem de programação Java. O laço while verifica a condição antes de executar o bloco de código, enquanto o laço do-while executa o bloco de código pelo menos uma vez antes de verificar a condição.
Observemos o código passo a passo para entender a lógica e chegar no resultado correto:
- Inicialmente, as variáveis a e b são declaradas e inicializadas com os valores 1 e 2, respectivamente.
- O laço while tem a condição
a < 7
, o que significa que o bloco interno será executado enquanto o valor de a for menor que 7. - No primeiro ciclo do while, a expressão
a = b + a
resulta em a sendo 3 (a + b = 1 + 2). - Então, é iniciado o laço do-while que irá executar até que b seja maior ou igual a 9.
- Dentro do do-while, b é atualizado para a soma de a com b, e a é incrementado em 1.
- Esse processo se repete, atualizando os valores de a e b até que b seja igual a 9,
- Quando b chega a 9, o laço do-while é finalizado, e o laço while externo verifica novamente sua condição.
- Ao final de um ciclo do while, o do-while terá somado várias vezes os valores de a e b, resultando em a ser 8 e b ser 9 após a primeira execução do do-while.
- Na segunda execução do while, como a não é mais menor que 7, o programa segue para fora dos loops e executa o
System.out.print(a + " e " + b);
.
Após essas iterações, os valores finais de a e b são 15 e 23, respectivamente, resultando na saída "15 e 23". Portanto, a alternativa E está correta.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
public class Loop {
public static void main(String[] args) {
int a, b;
a = 1;
b = 2;
while (a < 7) {
a = b + a;
do {
b = a + b;
a = a + 1;
} while (b < 9);
}
System.out.print(a + " e " + b);
}
}
Facilitando a visualização.
ìnicia o código - > memória a=1; b=2
entra no loop while(a<7) a=b+a -> memória a=3; b=2
entra no loop de dentro do... while(b<9)-> b=a+b; a=a+1 ->memória b=5; a=4
loop de dentro do... while(b<9)-> b=a+b; a=a+1 ->memória b=9; a=5
como b não é maior que nove sai do loop do..while (b<9)
retorna para o loop while(a<7) a=b+a -> memória a=14;b=9
entra no loop de dentro do... while(b<9) como a condição só é verificada no final executa o loop-> b=a+b; a=a+1 ->memória b=23; a=15
sai do loop do ...while(b<9)
sai do loop while{a<7)
imprime as variáveis.
Assim, a resposta correta é a letra E) a=15 e b=23.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo