Alternativa A - Somente quando se sabe quantas vezes a estrutura de repetição será executada.
Introdução à Lógica de Repetição
Para responder a essa questão, é fundamental compreender a diferença conceitual entre os laços de repetição while e for, especialmente na programação estruturada (como C, Java ou Python).
- Laço
while: É utilizado para repetição indefinida. Ele executa um bloco de código enquanto uma condição lógica for verdadeira. Não exige necessariamente um contador fixo. - Laço
for: É utilizado para repetição definida (contada). Ele geralmente possui três partes claras: inicialização, teste de condição e atualização da variável de controle.
Por que a alternativa A é correta?
A substituição de uma estrutura while por uma for só é ideal e direta quando existe um padrão de contagem previsível.
Se você sabe exatamente quantas vezes o código deve rodar (ou pode determinar isso através de um contador), a estrutura for torna-se mais adequada e legível.
\text{Exemplo}
Com while (Contagem conhecida):
int i = 0;
while (i < 10) {
printf("%d\n", i);
i++;
}
Substituindo por for:
for (int i = 0; i < 10; i++) {
printf("%d\n", i);
}
Neste caso, sabemos que o laço roda 10 vezes. A estrutura for encapsula a inicialização, o teste e o incremento em uma única linha. Se não soubéssemos o número de execuções (ex: esperar pelo usuário digitar "fim"), manteríamos o while.
Análise das outras alternativas
- B. Sempre é possível... : Embora seja tecnicamente possível escrever um
for infinito (for(;;)), nem toda lógica de while se traduz bem em for. Laços condicionais complexos (baseados em eventos externos, como leitura de arquivo até o fim) não possuem um contador natural para o for. - C. Nunca podemos... : Incorreto. Como mostrado no exemplo acima, muitas vezes podemos converter um
while em for com sucesso. - D. Somente quando... operações aritméticas : O tipo de operação (aritmética, lógica, etc.) dentro do laço não define qual estrutura usar. O que define é o controle do fluxo de execução.
- E. Somente quando não for preciso inicializar... : Pelo contrário, a estrutura
for frequentemente requer a inicialização da variável de controle na própria declaração do laço, o que é uma característica central dela.
Conclusão
A escolha entre while e for depende do conhecimento prévio da quantidade de iterações. Portanto, a substituição é válida principalmente quando temos certeza sobre quantas vezes a estrutura será executada.