Pular para o conteúdo principal

Questão de Programação — Java — FUNDATEC 2024

ProgramaçãoJava
Código
qg174758
Banca
FUNDATEC
Órgão
Prefeitura de Passo Fundo - RS
Ano
2024
Nível
Superior
Cargo
Analista de Tecnologia da Informação
Analise o código abaixo, escrito em Java:Imagem associada para resolução da questãoQual alternativa corresponde ao resultado apresentado após a execução do código?
  1. A1,3,5,7
  2. B1,3,5,7,9
  3. C1,3,5,9
  4. D2,4,6,8
  5. E2,4,6,8,10
Revelar gabarito e comentário

GabaritoC — 1,3,5,9

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Resolução

Gabarito: letra C — a conta chega a 1, 3 e 5, cada um em linha separada — alternativa C.

A ideia por trás

O laço while é uma estrutura de repetição que executa um bloco de código enquanto uma condição booleana for verdadeira. O comando continue, quando executado, pula imediatamente para a próxima iteração do laço, ignorando o restante do bloco. O operador % calcula o resto da divisão inteira: por exemplo, 5 % 2 = 1, pois 5 dividido por 2 deixa resto 1.

A condição do while é testada antes de cada iteração; se for verdadeira, o bloco é executado, e ao final volta-se ao teste. O continue interrompe a iteração atual e vai direto para o teste da condição. O operador % é usado para classificar números: se x % 2 == 0, x é par; se x % 2 == 1, x é ímpar. No código, o teste if (x % 2 != 1) é verdadeiro para pares (resto 0) e falso para ímpares (resto 1).

Esta questão cobra a execução passo a passo de um laço com continue: é preciso simular cada iteração, verificando a condição, o teste if e o efeito do continue, para descobrir quais valores são impressos.

O que a questão dá

  • código Java com laço while e comando continue

  • variável x inicializada em 0

  • condição do laço: x < 7

  • teste if: x % 2 != 1

O que queremos: a sequência de números impressa pelo código

Passo 1 — Descobrir quando o continue é executado

Antes de simular o laço, precisamos saber quando o continue será executado. O teste if (x % 2 != 1) pergunta: o resto da divisão de x por 2 é diferente de 1? Para números pares, o resto é 0, que é diferente de 1, então o teste é verdadeiro. Para números ímpares, o resto é 1, que não é diferente de 1, então o teste é falso. Ou seja, o continue acontece para x par, e a impressão acontece para x ímpar.

Por que esta fórmula: Não há fórmula; é a interpretação do operador % e da comparação !=.

NÃO CAIA NESSA!

Achar que o teste é verdadeiro para ímpares, invertendo a lógica.

Passo 2 — Simular a primeira iteração (x = 0)

Começamos com x = 0. A condição do while (0 < 7) é verdadeira, então entramos no bloco. O teste if é verdadeiro (0 é par), então executamos ++x (x vira 1) e continue, que pula o println. Nada é impresso.

NÃO CAIA NESSA!

Esquecer que o continue pula o println e também o ++x que está depois dele.

Passo 3 — Simular a segunda iteração (x = 1)

Agora x = 1. A condição (1 < 7) é verdadeira. O teste if é falso (1 é ímpar), então não executamos o continue. Executamos System.out.println(1), imprimindo 1, e depois ++x (x vira 2).

imprime1\boxed{\text{imprime} 1}
NÃO CAIA NESSA!

Achar que o ++x é executado antes do println, mas a ordem é: if, println, ++x.

Passo 4 — Simular as iterações seguintes até x = 7

O padrão se repete: para x par, incrementa e pula; para x ímpar, imprime e incrementa. Vamos continuar: x = 2 (par, pula), x = 3 (ímpar, imprime 3), x = 4 (par, pula), x = 5 (ímpar, imprime 5), x = 6 (par, pula), x = 7 (condição falsa, termina).

imprime3e5\boxed{\text{imprime} 3 \text{e} 5}
NÃO CAIA NESSA!

Incluir o 7 na impressão, mas o laço para quando x = 7, antes de imprimir.

Resposta: 1, 3 e 5, cada um em linha separada — alternativa C

Link permanente: /questoes/qg174758