I cicli, detti anche istruzioni di
iterazione, sono dei
costrutti nativi che ci consentono di eseguire ciclicamente e quindi di
ripetere
determinati comportamenti; per ciclo, intendiamo quindi la
ripetizione di certi comandi per un determinato numero di
volte.
Il ciclo for è sicuramente una delle istruzioni di iterazione
maggiormente impiegata,
anche perché non si tratta di un costrutto proprio
soltanto del linguaggio Perl. Presentiamo di seguito un
breve esempio
della funzione svolta da for:
#!/usr/local/bin/perl
@famiglia = ("padre",
"madre", "figlio", "figlia");
for ($i=0; $i<=$#famiglia; $i++)
{
print
"$famiglia[$i]n";
}
Nell'esempio proposto, abbiamo utilizzato un ciclo
for con lo scopo
di
stampare a video tutti gli elementi di un array.
Un ciclo
for si ottiene utilizzando una sintassi che
comprende il
costrutto
for seguito da tre istruzioni che hanno il compito di
definire il ciclo;
abbiamo poi le istruzioni che dovranno essere eseguite
ripetutamente.
Analizziamo le tre istruzioni per
la definizione del ciclo:
- la prima, nel nostro caso "$i=0", stabilisce un valore
iniziale;
essa deve essere eseguita una sola volta ad inizio ciclo.
- La seconda, nel nostro caso "$i<=$#famiglia"
("$#famiglia" indica l'ultimo valore dell'array), è
chiamata condizione di
terminazione; essa deve essere valutata
prima di ogni iterazione e restituisce FALSE quando il ciclo si
interrompe.
- La terza, nel nostro caso "$i++", svolge la funzione di
incrementare il
valore dato alla prima; essa viene rieseguita ad ogni
iterazione fino a quando la condizione di terminazione
non
restituisce FALSE e il cilclo si ferma.
Nel nostro esempio, la variabile "$i"
(contatore), assume
all'inizio un valore pari a "0"; ad ogni ciclo il contatore
subisce un
incremento unitario ("$i++"); quando il contatore
raggiunge un valore pari al numero degli elementi
dell'
array
("$i<=$#famiglia") il ciclo termina.
Un'altro costrutto d'iterazione
da analizzare è
foreach, per molti
versi simile a
for; attraverso
foreach è
possibile inserire
di seguito all'interno di una variabile tutti gli elementi di un
array.
Proponiamo quindi un esempio sull'utilizzo di questo nuovo
costrutto:
#!/usr/local/bin/perl
@famiglia = ("padre", "madre", "figlio", "figlia");
foreach
$famigliare (@famiglia)
{
print "$famigliaren";
}
Come si avrà avuto modo di notare, le
differenze anche sintattiche tra
foreach e
for sono veramente minime. Nell'esempio proposto,
ad ogni ripetizione del ciclo la variabile "$famigliare" assume
un valore pari a quello
dell'elemento estratto in quel momento dall'array
"@famiglia".
Il costrutto di iterazione
while, considerato come un particolare
tipo di
if ripetuta, consente di ciclare un determinato blocco
di
istruzioni fino a quando una condizione risulta vera, nel momento in cui
essa dovesse restituire FALSE il
ciclo si bloccherebbe; se la condizione
dovesse risultare falsa prima di iniziare il ciclo questo non potrà
essere eseguito.
Vediamo un esempio:
#!/usr/local/bin/perl
@famiglia = ("padre", "madre",
"figlio", "figlia");
while (@famiglia)
{
$famigliare = shift @famiglia;
print
"$famigliaren";
}
Grazie a
while verrà visualizzato tutto il contenuto in valori
dell'
array famiglia.