O loop do... while
A estrutura do laço do... while é muito parecida com a estrutura do laço while. A diferença básica entre elas consiste no fato de, enquanto o teste condicional no comando while é realizado no início do loop (antes das instruções), no laço do... while o teste é realizado no fim do loop (após as instruções).
Dessa forma, o programador garante que pelo menos uma vez as instruções contidas no corpo do laço serão processadas, mesmo que a condição seja falsa.
eis a sintaxe:
do
{
...
}
while(condição)
O exemplo a seguir leva um Button e um Label no Form. Quando o usuário dá um clique no Button, uma mensagem é exibida no Label e, após sete segundos (7000 milisegundos), o programa é encerrado.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
void __fastcall Esperar(int Miliseg);
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Label1->Caption = "Aguarde... Após sete segundos o programa será fechado";
Esperar(7000); // tempo que o programa aguardará até ser encerrado
Close(); // encerra o programa
}
//---------------------------------------------------------------------------
void __fastcall Esperar (int Miliseg)
{
TDateTime Hora; // declara variável da classe TDateTime
unsigned short Hor, Min, Seg, Miles; // declara vairiáveis
int Tempo;
Hora = Time(); // atribui a hora do sistema à variável Hora
/*todas as instruções abaixo serão executadas ao menos uma vez,
(independente de a condição avaliada ser verdadeira) */
do // início do loop
{
/*DecodeTime() suspende um objeto TdateTime
em horas, minutos, segundos e milisegundos*/
(Time() - Hora).DecodeTime (&Hor, &Min, &Seg, &Miles);
/*incrementa a variável Tempo*/
Tempo = (Min * 60000) + (Seg * 1000) + Miles;
/*interrompe a execução da aplicação possibilitando
ao Windows processar determinadas mensagens*/
Application->ProcessMessages();
}
/* o loop será executado enquanto Tempo for menor que Miliseg */
while (Tempo < Miliseg);
}
//---------------------------------------------------------------------------
|
HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO |