User Tools

Site Tools


repeticao_condicional_com_teste_no_inicio_while-do

Em Pascal, o while-do é o comando de repetição condicional com teste no início. Usa-se o while-do para repetir um comando enquanto a avaliação de sua expressão booleana resulte em verdade (true). Tal expressão é avaliada antes do comando ser executado.

Sintaxe:

while <expressao booleana> do
   comando>;

As palavras while e do são reservadas. O comando a ser executado é único. Caso o programador deseje executar uma sequência de comandos, o delimitador de blocos deve ser utilizado (ver seção Delimitadores de bloco).

Como em Pascal todo comando termina por ponto-e-vírgula e, neste caso, o comando while-do termina somente após o <comando>, então o ponto-e-vírgula somente aparece no final, e não no meio da construção.

Exemplo:

program exemplo_while_do_1;
 var
    n : integer;
 begin
    writeln('Informe um numero inteiro positivo: ');
    read(n);
 
    while n > 0 do
       begin
          writeln(n);
          n := n - 1;
       end;
    writeln ('Fim.');
 end.

O programa imprime, de maneira decrescente, todos os números entre n e 1. Se o número lido for negativo ou nulo, então a mensagem “Fim.” é impressa imediatamente, isto é, nenhum número aparece na tela. Isto ocorre porque a avaliação da expressão condicional ocorre antes do bloco de instruções ser executado.

Como o while-do repete um bloco de instruções enquanto determinada condição for verdadeira, é possível definir um laço de execução infinita caso a expressão avaliada nunca se altere para falsa.

No código a seguir, se um número negativo ou nulo for digitado como entrada, o programa termina sem nunca ter impresso número algum na saída. Contudo, se o número entrado for positivo e não nulo, será impresso infinitamente.

Exemplo:

program exemplo_while_do_2;
 var
    n : integer;
 begin
    writeln('Informe um numero inteiro positivo: ');
    read(n);
    
    while n > 0 do
       writeln(n);
    writeln ('Fim.');
 end.
repeticao_condicional_com_teste_no_inicio_while-do.txt · Last modified: 2019/04/25 10:51 by castilho