User Tools

Site Tools


repeticao_condicional_com_teste_no_final_repeat-until

O repeat-until é o comando de repetição condicional com teste no final. Funciona de modo contrastante ao while-do, ou seja, repete até que uma dada expressão booleana resulte em verdadeiro. Esta expressão é avaliada após o bloco de instruções ter sido executado.

Sintaxe:

repeat
   <comandos>;
until <expressao booleana>;

As palavras repeat e until são reservadas. Contrariamente ao comando while-do, o repeat-until pode executar vários comandos sem a delimitação de bloco por begin e end (ver seção Delimitadores de bloco).

Como em Pascal todo comando termina por ponto-e-vírgula e, neste caso, o comando repeat-until termina somente após a expressão booleana, então o ponto-e-vírgula somente aparece no final, e não no meio da construção.

Exemplo:

program exemplo_repeat_until_1;
 var
    n : integer;
 begin
    writeln('Informe um numero inteiro positivo: ');
    read(n);

    repeat
       writeln(n);
       n := n - 1;
    until n <= 0;
    writeln ('Fim.');
end.

O programa imprime de maneira decrescente todos os números entre n e 1. Contudo, aqui reside a principal diferença entre o repeat-until e o while-do: se o número lido for negativo ou nulo, o número será impresso seguido da mensagem de “Fim.”. Isto ocorre porque a avaliação da expressão somente é feita após a execução do bloco de comandos.

Dependendo da avaliação da expressão booleana, é possível definir um laço de execução infinita, tal como apresentado no exemplo a seguir. Um inteiro positivo, não nulo, lido do teclado é imprimido infinitamente. Caso um número nulo ou negativo seja lido, o programa termina após imprimir o número uma única vez e exibir a mensagem “Fim.”.

Exemplo:

program exemplo_repeat_until_2;
 var
    n : integer;
 begin
    writeln('Informe um numero inteiro positivo: ');
    read(n);

    repeat
       writeln(n);
    until n <= 0;
    writeln ('Fim.');
 end.
repeticao_condicional_com_teste_no_final_repeat-until.txt · Last modified: 2019/04/24 11:45 by castilho