CHIARIMENTI SUI CICLI
Questo capitolo consiste in una spiegazione sull'utilizzo dei cicli, sebbene sia
alquanto breve consiglio una lettura attenta in quanto i cicli sono tra le strutture più
complesse di un linguaggio di programmazione.
Esaminiamo il seguente problema: vogliamo riempire un ListBox con dei numeri da 1 a 100
alla semplice pressione di un Button, teoricamente basterebbe provvedere a ripetere 100
volte l'istruzione ListBox1.Items.Add('1');
cambiando di volta in volta il
valore '1' con '2', '3', etc.
Converrete che non è così semplice, per risolverlo basterebbe teoricamente incrementare
una variabile numerica per 100 volte, convertirla in stringa (istruzione INTtoSTR vista
nel capitolo 4) e Aggiungere all'insieme Items della ListBox la
stringa.
A questo ci viene in contro la struttura
For <variabile di controllo>:= <Valore iniziale> To (o
DownTO) <valore finale> DO
Begin
[istruzioni...]
End;
Provate quindi ad aggiugere in un form vuoto (New Application dal menu file) un ListBox ed
un Button, all'evento onClick del Button inserite il seguente codice:
procedure TForm1.Button1Click(Sender: TObject);
Var
I: Integer;
S: String;
begin
For I:= 1 To 100 DO
Begin
S:= INTtoSTR(I);
ListBox1.Items.Add(S);
End;
end;
Ad ogni pressione del Button1 verranno aggiungi ogni volta 100 elementi sul ListBox. Ai
fini della comprensione del linguaggio consiglio di aggiungere anche il seguente codice
all'evento DblClick del ListBox.
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;
Che Vuol dire ne più ne meno che "togli il numero su cui fai doppio click"!
Provate anche ad aggiungere un secondo Button con il seguente codice:
procedure TForm1.Button2Click(Sender: TObject);
begin
ListBox1.Items.Clear;
end;
Che altro non fa se non rimuovere tutti gli elementi dell'insieme Items della ListBox.
Le caratteristiche salienti di For To Do restano l'alta velocità e la semplicità
d'utilizzo, tuttavia per utilizzare questo ciclo si devono conoscere anticipatamente
l'inizo e la fine.
A questo pone rimedio While DO, naturale evoluzione di For To Do! la sintassi di While DO
è la seguente:
While <condizione vera> DO
begin
[Istruzioni da ripetere]
end;
Supponiamo di voler creare un form nella quali finchè non si inserisce un ciclo in cui
finchè non si inserisce una password corretta venga ripetuto. Il programma potrebbe
assumere il seguente aspetto:
{$APPTYPE CONSOLE}
Program PassWord;
Uses
SysUtils;
Var
PassWord: String;
Begin
PassWord:= '';
While PassWord <> 'FINE' do
begin
Write('Inserire password: ');
ReadLn(PassWord);
PassWord:= AnsiUpperCase(PassWord);
end;
End.
Come dovreste aver imparato i programmi che iniziano con la direttiva {$APPTYPE CONSOLE}
vengono compilati in DOS mode. Il programma chiede una password finchè non si inserisce
fine. Se si fosse voluto chiedere solo per tre volte la password si sarebbe potuto
ricorrere al ciclo For To Do. Un'altro ciclo dell'object pascal è Repeat Until, tuttavia
un uso appropiato di While DO sostituisce in maniera più funzionale quest'ultimo!
Ci stiamo avvicinando alla conclusione di questo corso, con il prossimo capitolo si
concluderanno le trattazioni sulla programmazione RAD e sarete quindi già in grado di
passare alle migliaia di Tips & Tricks presenti nella rete, tuttavia raccomando la
lettura dell'integrazione sull'OOP e sulla gestione dei file incluse nel corso.
Corso interamente creato da VB.