Pular para o conteúdo principal

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

ProgramaçãoProgramação estruturada
Código
fg096715
Banca
FGV
Órgão
TCE-GO
Ano
2024
Nível
Superior
Cargo
Analista de Controle Externo - Tecnologia da Informação
Na programação estruturada, os laços de repetição são fundamentais para executar uma determinada sequência de instruções várias vezes, facilitando a automação de tarefas repetitivas. Dois dos laços mais comuns são os comandos "for" e "while", cada um com suas características específicas.Assinale a opção que descreve corretamente as diferenças entre os laços "for" e "while" na programação estruturada.
  1. AO laço "for" é adequado para situações em que o número de iterações é conhecido antecipadamente, enquanto o laço "while" atende situações em que o número de iterações é desconhecido e depende de uma condição.
  2. BO laço "for" é usado quando se deseja percorrer uma coleção de elementos, como uma lista ou um array, enquanto o laço "while" é aplicado em situações em que é necessário repetir uma ação até que uma condição específica seja atendida.
  3. CO laço "for" é uma opção mais flexível, pois permite a declaração e inicialização de variáveis de controle dentro da própria estrutura do laço, enquanto o laço "while" exige que essas variáveis sejam definidas antes do laço.
  4. DO laço "while" é mais propenso a causar loops infinitos se a condição de parada não for adequadamente definida, enquanto o laço "for" oferece controle sobre o número de iterações devido à sua estrutura mais definida.
  5. EO laço "while" é mais eficiente em termos de desempenho do que o laço "for", pois avalia a condição de parada apenas no início de cada iteração, enquanto o laço "for" precisa avaliar a condição a cada iteração.
Revelar gabarito e comentário

GabaritoA — O laço "for" é adequado para situações em que o número de iterações é conhecido antecipadamente, enquanto o laço "while" atende situações em que o número de iterações é desconhecido e depende de uma condição.

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”.

Laços for e while na programação estruturada

Gabarito: letra A. A alternativa A capta a essência da distinção: o for é ideal quando o número de iterações é conhecido de antemão (ex.: percorrer um vetor de tamanho fixo), enquanto o while é usado quando a repetição depende de uma condição que pode mudar durante a execução, tornando o número de iterações imprevisível. Essa é a diferença conceitual clássica ensinada em programação estruturada.

A questão cobra o entendimento fundamental sobre quando usar cada estrutura, sem depender de detalhes específicos de linguagem. Vejamos cada alternativa:

Critério

Laço for

Laço while

Número de iterações

Conhecido antecipadamente

Desconhecido, depende de condição

Estrutura típica

Contagem definida (início, fim, passo)

Condição lógica reavaliada a cada ciclo

Uso conceitual clássico

Iterações contadas

Repetição condicional

Alternativa A — ✅ Correta ⟵ GABARITO

O laço for é tipicamente empregado em iterações contadas (ex.: for (i=0; i<10; i++)), onde o início, fim e passo são definidos na própria cabeça do laço. Já o while se baseia em uma condição lógica que é reavaliada a cada ciclo, adequado para situações em que o término depende de um evento externo ou de um estado que não pode ser previsto numericamente. Essa descrição alinha-se perfeitamente com os manuais de programação estruturada.

Alternativa B — ❌ Incorreta

Afirma que for é usado para percorrer coleções e while para repetir até uma condição ser atendida. Embora o for seja muito usado para coleções (especialmente o foreach), o while também pode percorrer coleções com um contador manual. Além disso, o for também pode ser usado sem coleções (ex.: contagem numérica). A distinção não é entre coleção e condição, mas sim entre iteração conhecida versus condicional.

Alternativa C — ❌ Incorreta

A afirmação sobre declaração de variáveis dentro do for é verdadeira em algumas linguagens (C, Java), mas não é a diferença conceitual principal. Em muitas linguagens (ex.: Python), o while também permite declaração de variáveis antes do laço. A flexibilidade não é um critério universal e a descrição é secundária e dependente de sintaxe.

Alternativa D — ❌ Incorreta

Diz que o while é mais propenso a loops infinitos e que o for controla melhor o número de iterações. Na prática, ambos podem gerar loops infinitos se mal escritos (ex.: for(;;)). O for não oferece controle inato maior; a diferença está na semântica de uso, não na propensão a erros.

Alternativa E — ❌ Incorreta

Alega que o while é mais eficiente porque avalia a condição apenas no início, enquanto o for avalia a cada iteração. Isso é falso: tanto o for quanto o while avaliam a condição de continuação a cada iteração (a condição do for é reavaliada a cada volta, exatamente como no while). O desempenho é equivalente e depende do compilador/interpretador, não da estrutura.

PEGA ESSA DICA!

Na prova, lembre-se do critério decisivo: número de iterações conhecido x desconhecido. Essa é a bússola. Se a banca falar em "coleção" ou "variável de controle", desconfie: são aspectos secundários ou linguagem-dependentes.

Conclusão: A alternativa A é a única que descreve corretamente a diferença fundamental entre os laços for e while no paradigma da programação estruturada.

Link permanente: /questoes/fg096715