Considere o seguinte programa na linguagem Java: public...

Próximas questões
Com base no mesmo assunto
Q930473 Programação
Considere o seguinte programa na linguagem Java:
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?
Alternativas

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