Questão de Programação — Programação estruturada — FGV 2024
Programação›Programaçã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.
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.
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.
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.
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.
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.