Perl/Cicli: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m ha spostato Linguaggio Perl/Le istruzioni:I CICLI a Linguaggio Perl/Le istruzioni/I cicli: sottopaginazione più corretta
sintassi codice colorata
Riga 10:
Il ciclo for è quello più comune a molti linguaggi.
Da questo è possibile ottenere delle altre tipologie ma nell'uso generale si preferisce utilizzarlo quando il numero di iterazioni è noto.La sua sintassi è la seguente:
 
<source lang=perl>
for ( <inizio> ; <condizione> ; <incremento> )
{
... istruzioni ...
}
</source>
vediamo un esempio [ciclo finito]:
 
<source lang=perl>
my $max_valore = 10;
Line 26 ⟶ 29:
}
print "b=$b\n";
</source>
 
che produrrà :
 
Line 42 ⟶ 47:
vediamo ora che cosa succede se togliamo la condizione (CTRL+C per fermare) [ciclo infinito1 no condizione]:
 
<source lang=perl>
my $b;
for ( $b = 0 ; ; $b++ )
Line 48 ⟶ 54:
}
print "Ultima iterazione numero $b\n";
</source>
 
Sorpresi ? se non c'è una condizione che ferma il ciclo (o se questa non si verifica mai!) il ciclo continua indefinitamente!
Line 53 ⟶ 60:
vediamo ora che cosa succede se togliamo l'incremento (CTRL+C per fermare) [ciclo infinito2 no incremento]:
 
<source lang=perl>
my $max_valore = 10;
Line 61 ⟶ 69:
}
print "b=$b\n";
</source>
 
Sorpresi ? se non c'è un incremento la condizione che ferma il ciclo sarà sempre vera quindi il ciclo continua indefinitamente!
Line 69 ⟶ 78:
vediamo ora che cosa succede se togliamo l'inizio [ciclo finito senza inizio]:
 
<source lang=perl>
my $max_valore = 10;
Line 77 ⟶ 87:
}
print "b=$b\n";
</source>
 
che produrrà:
Line 100 ⟶ 111:
 
 
<source lang=perl>
while ( <condizione> )
{
Line 109 ⟶ 121:
... istruzioni ...
}
</source>
 
Vediamo come ottenere i cicli precedenti con while e until:
[ciclo finito]
 
<source lang=perl>
my $max_valore = 10;
Line 133 ⟶ 147:
}
print "b=$b\n";
</source>
 
[ciclo infinito1 no condizione]: la condizione è necessaria quindi questo caso non è possibile.
Line 138 ⟶ 153:
[ciclo infinito2 no incremento] (CTRL + C per terminare):
 
<source lang=perl>
my $max_valore = 10;
Line 156 ⟶ 172:
}
print "b=$b\n";
</source>
[ciclo finito senza inizio ] :
 
<source lang=perl>
my $max_valore = 10;
Line 179 ⟶ 197:
}
print "b=$b\n";
</source>
 
==== Do ... While e Do ... Until ====
Line 186 ⟶ 205:
Si basa sul principio di while e until con l'unica differenza che la condizione viene verificata alla fine del blocco di istruzioni , pertanto almeno una volta le istruzioni vengono eseguite.
 
<source lang=perl>
do
{
Line 197 ⟶ 217:
}
until ( <condizione> );
</source>
 
NOTA:avete notato il ; alla fine ?
Line 203 ⟶ 224:
[ciclo finito]
 
<source lang=perl>
my $max_valore = 10;
Line 227 ⟶ 249:
print "b=$b\n";
</source>
 
[ciclo infinito1 no condizione]: la condizione è necessaria quindi questo caso non è possibile.
 
[ciclo infinito2 no incremento] (CTRL + C per terminare):
 
<source lang=perl>
my $max_valore = 10;
Line 252 ⟶ 277:
print "b=$b\n";
</source>
[ciclo finito senza inizio ] :
 
<source lang=perl>
my $max_valore = 10;
Line 277 ⟶ 304:
} until ( $b > $max_valore - 1 );
print "b=$b\n";
</source>
 
E' opportuno precisare che modificando opportunamente i valori iniziali , è possibile ottenere che venga eseguito almeno una volta il ciclo utilizzando while o until
Line 282 ⟶ 310:
[do ... while ]
 
<source lang=perl>
my $anni = 15;
 
Line 289 ⟶ 318:
$anni-- ;
} while ( $anni > 0 );
</source>
 
che produce :
Line 312 ⟶ 342:
[do ... until ]
 
<source lang=perl>
my $anni = 15;
 
Line 339 ⟶ 370:
$anni-- ;
}
</source>
 
==== Foreach ====
Questa istruzione consente di "scandire" una lista (array).
 
<source lang=perl>
foreach <variabile> ( <lista> )
{
... istruzioni ...
}
</source>
 
Vediamo ora come è possibile creare il [ciclo finito]:
 
<source lang=perl>
my $max_valore = 10;
Line 359 ⟶ 394:
}
print "b=$b\n";
</source>
 
che produrrà :
iterazione numero 0
Line 377 ⟶ 414:
Questo costrutto è utile quando "al termine di ogni iterazione" occorre compiere una serie di incrementi oppure quando si vuole "evidenziare" l'incremento:
 
<source lang=perl>
while ( <condizione> )
{
Line 412 ⟶ 450:
}
# Nota Last passa qui (termina fuori)
</source>
 
E' un modo per riproporre lo spazio per l'incremento del ciclo for.
Line 417 ⟶ 456:
Esempio:
 
<source lang=perl>
my $b = 15;
my $salto = 17;
Line 429 ⟶ 469:
{
$b++;
}
}</source>
 
che produce :
Line 440 ⟶ 481:
Esempio:
 
<source lang=perl>
my $b = 15;
my $salto = 17;
Line 452 ⟶ 494:
{
print "continue b=$b\n";
}
}</source>
 
che produce: