Questão de Algoritmos e Estrutura de Dados — Algoritmos — NUCEPE 2025
- Código
- qg578368
- Banca
- NUCEPE
- Órgão
- SEDUC-PI
- Ano
- 2025
- Nível
- Superior
- Cargo
- Professor de Informática
- AI e II.
- BII e III.
- CIII e IV.
- DI e III.
- EII e IV.
GabaritoC — III e IV.
A Figura 2, que ilustra o algoritmo, não está disponível. A análise a seguir considera a estrutura de repetição conhecida como "para" (for), que possui inicialização, condição e incremento/decremento, conforme usual em pseudocódigo e linguagens de programação.
Gabarito: letra C. Apenas as afirmações III e IV estão corretas. O bloco de inicialização executa uma única vez (III) e o incremento pode ser multiplicativo (IV). A afirmação I é falsa porque é possível loop infinito; a II é falsa porque o número de execuções do bloco é geralmente uma unidade a menos que o número de testes da condição.
Em estruturas de repetição como o "for", é possível criar um loop infinito se a condição for sempre verdadeira (ex.: enquanto verdadeiro) ou se não houver condição de parada (ex.: for(;;) em linguagens como C). Portanto, a afirmação é falsa.
No "for", a condição é avaliada antes de cada iteração. Se a condição for avaliada 10 vezes, significa que em 9 delas foi verdadeira (executou o bloco) e na décima foi falsa (encerrou o loop). Logo, o bloco de instruções terá sido executado 9 vezes, não 10. Essa é uma pegadinha clássica: confundir o número de testes com o número de execuções.
Afirmação | Correta? | Justificativa |
|---|---|---|
I. Repetição infinita não é possível | ❌ Incorreta | É possível loop infinito se a condição for sempre verdadeira (ex.: |
II. Condição testada 10 vezes → bloco executa 10 vezes | ❌ Incorreta | A condição é testada uma vez a mais que o bloco; se testada 10 vezes, o bloco executa 9 vezes |
III. Inicialização executada uma única vez | ✅ Correta | O bloco de inicialização roda exatamente uma vez, antes do primeiro teste da condição |
IV. Incremento pode ser multiplicativo | ✅ Correta | O incremento/decremento aceita qualquer expressão de atribuição, inclusive multiplicativa (ex.: |
A banca explora a confusão entre "número de vezes que a condição é testada" e "número de vezes que o bloco é executado". Lembre-se: no for, a condição é testada uma vez a mais que o bloco (a última testa e sai). Portanto, se a condição é testada N vezes, o bloco executa N-1 vezes (quando a entrada é pela condição).
A inicialização (ex.: i = 0) é executada exatamente uma vez, antes do início das repetições. Essa é uma característica fundamental da estrutura for, que a distingue de um simples while.
O bloco de incremento/decremento pode conter qualquer expressão de atribuição, inclusive multiplicativa (ex.: i = i * 2 ou i *= 2). A linguagem de pseudocódigo ou programação não restringe o operador a apenas aditivo. Portanto, a afirmação está correta.
Conclusão: Afirmações corretas: III e IV → alternativa C.
Link permanente: /questoes/qg578368