Questão de Programação — Programação estruturada — VUNESP 2024
Programação›Programaçã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:Quando executado, o programa imprimirá:
A1 4 2 5 3 6
B1 2 3 4 5 6
C1 2 4 5 3 6
D1 3 2 6 4 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.
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.
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.