Estruturas de Repetição Condicionais: A Pegadinha do Loop “Enquanto” – Por que cont <= 3 Executa 4 Vezes (e Não 3!)

Estruturas de Repetição Condicionais: A Pegadinha do Loop “Enquanto” – Por que cont <= 3 Executa 4 Vezes (e Não 3!)

Olá, estudante! Aqui é o Ciberdicas, e hoje vamos mergulhar em um dos conceitos fundamentais da programação: as estruturas de repetição condicionais, e analisar um erro muito comum que confunde a cabeça de muitos alunos.

Vamos desvendar o código apresentado e descobrir por que a contagem de execuções nem sempre é o que parece à primeira vista!


O Desafio: Analisando o Loop “Enquanto”

Muitas vezes, nos deparamos com um problema que pede um número de repetições, mas o código parece dizer outra coisa. Foi o que aconteceu na questão que recebemos:

O Problema: Um aluno se deparou com o seguinte pseudocódigo:

  1. cont <- 0
  2. enquanto cont <= 3 faca
  3. escreval ("repete")
  4. cont <- cont + 1
  5. fim_enquanto

A Dúvida: Qual alternativa descreve corretamente a execução deste código?

A) A estrutura executa 4 vezes.

B) A estrutura executa 3 vezes.

C) A estrutura executa 2 vezes.

D) A estrutura não executa nenhuma vez.

Muitos olham rapidamente para a condição (cont <= 3) e para a alternativa B (3 vezes) e assumem que ela é a correta. Mas será que é?

Vamos fazer um “Teste de Mesa” (trace) para seguir a execução passo a passo.


Entendendo a Execução: O Teste de Mesa

A estrutura enquanto (conhecida como while em muitas linguagens) verifica a condição antes de executar o bloco de código.

  • Inicialização: cont começa valendo 0.
  • Loop 1:
    • Verificação: cont (0) é menor ou igual a 3? Sim.
    • Execução: escreval ("repete") (Executado 1ª vez)
    • Incremento: cont agora vale 1.
  • Loop 2:
    • Verificação: cont (1) é menor ou igual a 3? Sim.
    • Execução: escreval ("repete") (Executado 2ª vez)
    • Incremento: cont agora vale 2.
  • Loop 3:
    • Verificação: cont (2) é menor ou igual a 3? Sim.
    • Execução: escreval ("repete") (Executado 3ª vez)
    • Incremento: cont agora vale 3.
  • Loop 4 (A Pegadinha!):
    • Verificação: cont (3) é menor ou igual a 3? Sim! (Porque 3 é igual a 3).
    • Execução: escreval ("repete") (Executado 4ª vez)
    • Incremento: cont agora vale 4.
  • Parada:
    • Verificação: cont (4) é menor ou igual a 3? Não.
    • Fim: O loop termina.

A Resposta Correta e a Confusão Comum

Como vimos no Teste de Mesa, o comando escreval foi executado um total de 4 vezes.

Portanto, a alternativa correta é a A) A estrutura executa 4 vezes.

Por que tantos alunos escolhem a “B) 3 vezes”?

Esse é um erro clássico chamado “Off-by-one error” (ou erro de “mais ou menos um”). A confusão acontece por dois motivos:

  1. O Valor Inicial (0): O contador começa em 0, não em 1.
  2. O Operador (<=): A condição “menor ou igual” (<=) inclui o próprio número 3 na contagem.

O loop executou para os valores de cont: 0, 1, 2 e 3. Se contarmos esses valores, temos 4 execuções.


Complementando o Conhecimento: Como Fazer Executar 3 Vezes?

Se o objetivo original do programador fosse executar o bloco exatamente 3 vezes (como sugerido na alternativa B), o código precisaria ser ajustado.

Para executar 3 vezes (usando os valores 0, 1 e 2), a condição deveria ser:

Snippet de código

enquanto cont < 3 faca 
// Pararia quando o cont fosse 3

Ou (menos comum, mas válido):

Snippet de código

enquanto cont <= 2 faca
// Pararia quando o cont fosse 3

O Ciberdica de Ouro: Ao analisar loops, sempre preste atenção em três coisas:

  1. O valor inicial da variável.
  2. A condição de parada (especialmente < vs <=).
  3. Onde o incremento (cont <- cont + 1) acontece.

Thales de Oliveira Gomes

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *