VisuAlg Web

REPITA ATÉ no Portugol e VisuAlg

Aprenda REPITA ATÉ no VisuAlg: teste ao final, primeira execução obrigatória e diferença entre as condições de parada.

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.

Exemplo de códigoVisuAlg
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)

fimalgoritmo

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

Exemplo de códigoVisuAlg
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.")

fimalgoritmo
Exercício Prático: Faça um código usando Repita que peça ao usuário para adivinhar o número 7. O laço só acaba quando ele acertar.

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

Exemplo de códigoVisuAlg
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.