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:
cont <- 0enquanto cont <= 3 facaescreval ("repete")cont <- cont + 1fim_enquantoA 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:
contcomeça valendo 0. - Loop 1:
- Verificação:
cont(0) é menor ou igual a 3? Sim. - Execução:
escreval ("repete")(Executado 1ª vez) - Incremento:
contagora vale 1.
- Verificação:
- Loop 2:
- Verificação:
cont(1) é menor ou igual a 3? Sim. - Execução:
escreval ("repete")(Executado 2ª vez) - Incremento:
contagora vale 2.
- Verificação:
- Loop 3:
- Verificação:
cont(2) é menor ou igual a 3? Sim. - Execução:
escreval ("repete")(Executado 3ª vez) - Incremento:
contagora vale 3.
- Verificação:
- 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:
contagora vale 4.
- Verificação:
- Parada:
- Verificação:
cont(4) é menor ou igual a 3? Não. - Fim: O loop termina.
- Verificação:
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:
- O Valor Inicial (0): O contador começa em
0, não em1. - O Operador (
<=): A condição “menor ou igual” (<=) inclui o próprio número3na 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:
- O valor inicial da variável.
- A condição de parada (especialmente
<vs<=). - Onde o incremento (
cont <- cont + 1) acontece.
