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.