Pular para o conteúdo principal

Questão de Programação — Programação estruturada — VUNESP 2024

ProgramaçãoProgramação estruturada
Código
vu088231
Banca
VUNESP
Órgão
UNESP
Ano
2024
Nível
Superior
Cargo
V - - Assistente de Suporte Acadêmico assistente de suporte Acadêmico IV - Área de Atuação: Pesquisa, Desenvolvimento e Inovação em Engenharia Eletrônica
Considere o seguinte código em linguagem C:Imagem associada para resolução da questãoQuando executado, o programa imprimirá:
  1. A1 4 2 5 3 6
  2. B1 2 3 4 5 6
  3. C1 2 4 5 3 6
  4. D1 3 2 6 4 5
  5. E6 5 4 3 2 1
Revelar gabarito e comentário

GabaritoB — 1 2 3 4 5 6

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 B — a conta chega a 1 2 3 4 5 6 — alternativa B.

A ideia por trás

O comando for é uma estrutura de repetição da programação estruturada que executa um bloco de código várias vezes, controlando uma variável de iteração. Ele é formado por três partes: inicialização (define o valor inicial da variável), condição (testada antes de cada repetição; se verdadeira, executa o bloco; se falsa, encerra o laço) e incremento (atualiza a variável ao final de cada repetição). O fluxo é sempre: inicialização → condição → bloco → incremento → condição → ...

A ordem de execução é rígida: primeiro a inicialização roda uma única vez; depois a condição é avaliada; se for verdadeira, o bloco é executado; em seguida o incremento é aplicado; e o ciclo recomeça pela condição. Isso significa que o bloco sempre roda ANTES do incremento — por isso, se a condição for i <= 6 e o incremento for i++, os valores impressos são 1, 2, 3, 4, 5, 6, e não 2, 3, 4, 5, 6, 7. A condição é testada no início de cada iteração, então quando i vira 7, a condição 7 <= 6 é falsa e o laço para.

Esta questão cobra exatamente a ordem de execução do for: saber que o bloco é executado antes do incremento e que a condição é testada antes de cada iteração. Basta simular a sequência de valores de i para obter a saída.

O que a questão dá

  • código em C com laço for: inicialização i = 1, condição i <= 6, incremento i++

  • corpo do laço: printf("%d ", i)

O que queremos: a sequência de números impressa pelo programa

Passo 1 — Simular a primeira iteração

Agora vamos percorrer o laço passo a passo. Na primeira iteração, i vale 1 (da inicialização). A condição 1 <= 6 é verdadeira, então o bloco executa printf("%d ", i), imprimindo 1. Depois o incremento i++ faz i virar 2.

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

Esquecer que o incremento só acontece DEPOIS do bloco, então o primeiro valor impresso é 1, não 2.

Passo 2 — Simular as iterações seguintes

O mesmo ciclo se repete: a condição é testada com o novo valor de i, o bloco imprime, e o incremento atualiza. Para i = 2, 3, 4, 5, 6, a condição é sempre verdadeira, então imprime 2, 3, 4, 5, 6.

imprime23456\boxed{\text{imprime} 2 3 4 5 6}
NÃO CAIA NESSA!

Parar antes do 6, achando que a condição é i < 6 em vez de i <= 6.

Passo 3 — Verificar o fim do laço

Após imprimir 6, o incremento faz i virar 7. Na próxima verificação, a condição 7 <= 6 é falsa, então o laço termina sem imprimir nada. A sequência completa é 1 2 3 4 5 6.

laço encerra

NÃO CAIA NESSA!

Achar que o laço imprime 7 também, por não perceber que a condição é testada antes de cada iteração.

Resposta: 1 2 3 4 5 6 — alternativa B

Link permanente: /questoes/vu088231