Cassic

Estrutura de Repetição com Teste Lógico no Início do Looping "while... do..."

Autor: Tadeu Pereira


  Essa instrução executa um bloco de comandos enquanto a condição booleana for verdadeira. Se a condição antes de while... do... já começar falsa o bloco de comandos não será executado nenhuma vez.

  Sintaxe:
  while condição do {bloco de comandos};

  begin
   { ... comandos iniciais ... }
   while numero < 10 do
    { ... bloco de comandos ... }
   { ... comandos finais ... }
  end;

  Abra um novo projeto, insira no formulário um Button:

Formulário
Propriedade
Valor
Height
169
Width
235
Button
Propriedade
Valor
Caption
Contar
Left
76
Name
BtnContar
Top
55


Figura 1 – Projeto WhileDo

  Entre com o código em negrito no evento OnClick do componente BtnContar:

01
procedure TForm1.BtnContarClick(Sender: TObject);
02
var
03
  x: Integer;
04
begin
05
  x := 0;
06
  while ( x < 10 ) do
07
   begin
08
   Inc( x );
09
   ShowMessage('O valor atual de x é ' + IntToStr(x));
10
   end;
11
  MessageDlg('Valor final de x é ' + IntToStr(x),
12
   mtInformation, [mbOk], 0);
13
end;

  A função Inc(x) captura o valor da variável x incrementa de 1 e coloca esse valor de volta em x. Para entender melhor imagine que x é igual a 3, após a função x será igual a x mais 1, escrevendo de outra maneira x ? x + 1, logo x ? 3 + 1 ou x ? 4.

  Nesse exemplo a variável x está sendo usada para controle da estrutura de repetição que inicia na linha 06 e termina na linha 10.

  O bloco de comandos será executado enquanto x for menor que 10. Quando x atingir 10 a linha 09 mostrará a mensagem "O valor atual de x é 10" e só então vai para a linha 11 e mostra a mensagem "Valor final de x é 10", logo o x com o valor 10 aparecerá duas vezes, uma dentro do loop e outra quando o loop é abandonado.

Observação
  Embora estejamos utilizando a variável x para controlar o loop, note que a instrução é mantida pela condição lógica ( x < 10 ) da linha 06, enquanto essa condição for verdadeira o bloco de comandos será executado.