Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FGV 2024

ProgramaçãoLinguagens de programação
Código
fg075154
Banca
FGV
Órgão
AL-PR
Ano
2024
Nível
Superior
Cargo
Analista Legislativo - Desenvolvedor de Sistemas
Seja o seguinte código escrito em linguagem C:Imagem associada para resolução da questãoAssinale a opção que indica o que será impresso no console padrão de saída pelo programa.
  1. A0 0 1
  2. B0 1 2 3 4
  3. C0 4 8 12 16
  4. D0 8 16
  5. E4 12 20
Revelar gabarito e comentário

GabaritoE — 4 12 20

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 E — a conta chega a 4 12 20 — alternativa E.

A ideia por trás

O comando for em C é uma estrutura de repetição que concentra três partes: a inicialização, a condição de continuação e o incremento. Ele executa a inicialização uma única vez, depois verifica a condição antes de cada iteração; se verdadeira, executa o bloco, depois aplica o incremento e repete. A variável de controle é atualizada a cada volta, e é comum imprimir valores derivados dela.

A ordem de execução é fixa: inicialização → condição → bloco → incremento → condição → ... . O valor impresso pode ser o da variável de controle ou uma expressão com ela, e o incremento define o passo. Se o incremento for i += 8, a variável pula de 8 em 8; se o printf usa i + 4, o valor mostrado é sempre 4 a mais que o valor atual de i. A condição i < 24 determina quando parar.

Esta questão testa se você acompanha o fluxo do laço e distingue o valor da variável de controle do valor impresso. O passo do incremento e a expressão no printf são as pegadinhas.

O que a questão dá

  • código em C com laço for

  • inicialização: i = 0

  • condição: i < 24

  • incremento: i += 8

  • corpo: printf("%d ", i + 4)

O que queremos: a sequência de números impressa no console

Passo 1 — Simular a primeira iteração

Começamos com i = 0. A condição 0 < 24 é verdadeira, então o bloco executa. O printf imprime i + 4, ou seja, 0 + 4 = 4. Depois o incremento i += 8 faz i virar 8.

Por que esta fórmula: A expressão i + 4 é o que está dentro do printf; o incremento i += 8 é o passo do laço.

inovo=iatual+8i_{novo} = i_{atual} + 8

De onde vem cada valor: iatuali_{atual} = inicialização: 0 · 88 = constante: 8 (incremento do laço)

inovo=0+8i_{novo} = 0 + 8
i=8 ,imprime4i = \boxed{8\ , \text{imprime} 4}
NÃO CAIA NESSA!

Imprimir i em vez de i + 4, o que daria 0.

Passo 2 — Simular a segunda iteração

Agora i = 8. A condição 8 < 24 é verdadeira, então imprime i + 4 = 12. Depois incrementa para 16.

Por que esta fórmula: Mesma lógica: imprime i + 4 e depois soma 8.

inovo=iatual+8i_{novo} = i_{atual} + 8

De onde vem cada valor: iatuali_{atual} = passo 1: 8 · 88 = constante: 8 (incremento do laço)

inovo=8+8i_{novo} = 8 + 8
i=16 ,imprime12i = \boxed{16\ , \text{imprime} 12}
NÃO CAIA NESSA!

Esquecer que o incremento é 8, não 4.

Passo 3 — Simular a terceira iteração

Com i = 16, a condição 16 < 24 é verdadeira, imprime i + 4 = 20. Incrementa para 24.

Por que esta fórmula: Continua o mesmo padrão.

inovo=iatual+8i_{novo} = i_{atual} + 8

De onde vem cada valor: iatuali_{atual} = passo 2: 16 · 88 = constante: 8 (incremento do laço)

inovo=16+8i_{novo} = 16 + 8
i=24 ,imprime20i = \boxed{24\ , \text{imprime} 20}
NÃO CAIA NESSA!

Achar que a condição é i <= 24 e incluir 24 na saída.

Passo 4 — Verificar a condição de parada

Após o incremento, i = 24. A condição 24 < 24 é falsa, então o laço termina. Não há mais impressões.

laço encerrado

NÃO CAIA NESSA!

Incluir a iteração com i = 24, que não acontece.

Resposta: 4 12 20 — alternativa E

Link permanente: /questoes/fg075154