O que fazer quando não sabemos quantas voltas precisamos dar? (Ex: "fique esperando no ponto enquanto o ônibus não chega"). O laço enquanto resolve isso. Ele repete o bloco de código indefinidamente enquanto sua condição for VERDADEIRA.
algoritmo "ContadorManual"
var
contador: inteiro
inicio
contador <- 1
enquanto (contador <= 5) faca
escreval("Valor atual: ", contador)
// No Enquanto, NÓS devemos aumentar a variável, senão vira um loop infinito!
contador <- contador + 1
fimenquanto
fimalgoritmoA principal característica do enquanto é que ele faz o teste antes de rodar o código. Ou seja, se a condição for falsa logo de cara, o código não será executado nenhuma vez. Isso é perfeito para criar sistemas de bloqueio de senhas.
algoritmo "BloqueioSenha"
var
senha: caractere
inicio
senha <- ""
enquanto (senha <> "secreta123") faca
escreva("Digite a senha para acessar: ")
leia(senha)
fimenquanto
escreval("Acesso Permitido! Bem-vindo.")
fimalgoritmoErros comuns e escolha do laço
A condição é testada antes do corpo, portanto o laço pode executar zero vezes. Atualize a variável testada ou leia um novo valor dentro do bloco: sem essa mudança, a condição pode permanecer verdadeira indefinidamente.
Compare as três estruturas no guia de estruturas de repetição e pratique os exercícios de repetição.
Exemplo explicado: somar de 1 até um limite
O laço verifica a condição antes de cada volta. Neste exemplo, soma acumula os valores e contador controla quando parar. Inicialize ambos antes da repetição: a soma deve conservar o resultado das voltas anteriores.
algoritmo "SomarComEnquanto"
var
contador, limite, soma: inteiro
inicio
contador <- 1
limite <- 4
soma <- 0
enquanto contador <= limite faca
soma <- soma + contador
contador <- contador + 1
fimenquanto
escreval("Soma: ", soma)
fimalgoritmo
| Valor somado | Soma acumulada | Próximo contador |
|---|---|---|
| 1 | 1 | 2 |
| 2 | 3 | 3 |
| 3 | 6 | 4 |
| 4 | 10 | 5 |
A saída é Soma: 10. Ao testar novamente, o contador vale 5 e a condição é falsa. Se você trocar o limite por zero, o bloco não será executado e a soma continuará zero.
Como evitar repetição infinita
Remover a atualização do contador mantém a condição verdadeira neste programa. Use o botão Parar se estiver experimentando essa alteração. Verifique qual variável altera a condição e em que linha ela muda. Compare esse teste inicial com REPITA ATÉ e acompanhe os valores com depuração e teste de mesa.