CAPITOLO 9

CHIARIMENTI SUI CICLI


FOR TO DO

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.


WHILE DO

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.