Pular para o conteúdo principal

Questão de Algoritmos e Estrutura de Dados — Algoritmos — NUCEPE 2025

Algoritmos e Estrutura de DadosAlgoritmos
Código
qg578368
Banca
NUCEPE
Órgão
SEDUC-PI
Ano
2025
Nível
Superior
Cargo
Professor de Informática
Com base no algoritmo ilustrado na Figura 2, avalie as seguintes afirmações:I. Uma repetição infinita não é possível nesse tipo de estrutura.II. Se a condição de repetição for executada 10 vezes, o bloco de instruções será executado 10 vezes.III. O bloco de inicialização só é executado uma única vez pela estrutura.IV. O bloco de incremento / decremento pode realizar incrementos multiplicativos.Assinale a alternativa que contenha APENAS as afirmações corretas.
  1. AI e II.
  2. BII e III.
  3. CIII e IV.
  4. DI e III.
  5. EII e IV.
Revelar gabarito e comentário

GabaritoC — III e IV.

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

Estruturas de Repetição (For)

SE LIGUE NESSA!

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.

Afirmação I — ❌ Incorreta

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.

Afirmação II — ❌ Incorreta

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.: for(;;) ou condição invariante)

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.: i *= 2)

1Inicialização
Executa 1 vez
2Condição
Testada N vezes
Bloco executa N-1 vezes
3Incremento/decremento
Pode ser multiplicativo
4Loop infinito
Condição sempre verdadeira
for(;;)
Estrutura for
LEVELsoulevel.com.br
Estrutura for: Inicialização (Executa 1 vez); Condição (Testada N vezes, Bloco executa N-1 vezes); Incremento/decremento (Pode ser multiplicativo); Loop infinito (Condição sempre verdadeira, for(;;))
NÃO CAIA NESSA!

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

Afirmação III — ✅ Correta

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.

Afirmação IV — ✅ Correta

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