O laço repita... ate é o irmão invertido do Enquanto. A filosofia dele é: "Atire primeiro, faça perguntas depois". Ele executa o bloco de código primeiro, e só no final faz a verificação. Isso garante que o código rodará pelo menos uma vez.
algoritmo "RepitaSimples"
var
i: inteiro
inicio
i <- 1
repita
escreval("Número: ", i)
i <- i + 1
// Diferente do Enquanto, o Repita PARA quando a condição se torna VERDADEIRA
ate (i > 3)
fimalgoritmoEssa estrutura é a favorita dos programadores para criar Menus de Jogos ou Sistemas, onde a tela precisa ser mostrada ao menos uma vez antes de perguntar se o usuário quer sair.
algoritmo "MenuInfinito"
var
opcao: inteiro
inicio
repita
escreval("--- MENU DO SISTEMA ---")
escreval("1. Jogar")
escreval("2. Configurações")
escreval("0. Sair do Jogo")
leia(opcao)
ate (opcao = 0)
escreval("O jogo foi encerrado.")
fimalgoritmoErros comuns e escolha do laço
O corpo executa pelo menos uma vez. A condição após ate indica a parada: se ela for verdadeira, o laço termina. Isso é diferente de ENQUANTO, cuja condição verdadeira mantém a repetição.
Compare as três estruturas no guia de estruturas de repetição e pratique os exercícios de repetição.
Por que REPITA executa pelo menos uma vez?
O algoritmo entra no bloco antes de avaliar a condição do ate. A repetição termina quando essa condição se torna verdadeira. Isso é diferente de ENQUANTO, que continua enquanto sua condição é verdadeira e pode não entrar no bloco.
algoritmo "TesteNoFinal"
var
contador, limite: inteiro
inicio
contador <- 1
limite <- 3
repita
escreval(contador)
contador <- contador + 1
ate contador > limite
fimalgoritmo
O programa imprime 1, 2 e 3, cada um em uma linha. Depois da terceira execução, o contador passa a 4 e contador > limite se torna verdadeiro. Agora troque o limite por zero: o programa ainda imprime 1 uma vez, porque o teste ocorre ao final.
Erro comum: inverter a condição de parada
Usar ate contador <= limite no mesmo exemplo interromperia a repetição cedo demais. Leia a condição como uma frase: “pare quando o contador ultrapassar o limite”. Em um menu interativo, a condição poderia ser “pare quando a opção for sair”.
Antes de escolher, compare ENQUANTO e PARA. Depois, aplique os três em exercícios de repetição.