Perl/Cicli: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
m Update syntaxhighlight tags - remove use of deprecated <source> tags
 
Riga 12:
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:
 
<sourcesyntaxhighlight lang=perl>
for ( <inizio> ; <condizione> ; <incremento> )
{
... istruzioni ...
}
</syntaxhighlight>
</source>
vediamo un esempio [ciclo finito]:
 
<sourcesyntaxhighlight lang=perl>
my $max_valore = 10;
Riga 30:
}
print "b=$b\n";
</syntaxhighlight>
</source>
 
che produrrà :
Riga 48:
vediamo ora che cosa succede se togliamo la condizione (CTRL+C per fermare) [ciclo infinito1 no condizione]:
 
<sourcesyntaxhighlight lang=perl>
my $b;
for ( $b = 0 ; ; $b++ )
Riga 55:
}
print "Ultima iterazione numero $b\n";
</syntaxhighlight>
</source>
 
Sorpresi? se non c'è una condizione che ferma il ciclo (o se questa non si verifica mai!) il ciclo continua indefinitamente!
Riga 61:
Vediamo ora che cosa succede se togliamo l'incremento (CTRL+C per fermare) [ciclo infinito2 no incremento]:
 
<sourcesyntaxhighlight lang=perl>
my $max_valore = 10;
Riga 70:
}
print "b=$b\n";
</syntaxhighlight>
</source>
 
Sorpresi? se non c'è un incremento, la condizione che ferma il ciclo sarà sempre vera; quindi, il ciclo continua indefinitamente!
Riga 80:
vediamo ora che cosa succede se togliamo l'inizio [ciclo finito senza inizio]:
 
<sourcesyntaxhighlight lang=perl>
my $max_valore = 10;
Riga 89:
}
print "b=$b\n";
</syntaxhighlight>
</source>
 
che produrrà:
Riga 113:
 
 
<sourcesyntaxhighlight lang=perl>
while ( <condizione> )
{
Riga 123:
... istruzioni ...
}
</syntaxhighlight>
</source>
 
Vediamo come ottenere i cicli precedenti con while e until:
[ciclo finito]
 
<sourcesyntaxhighlight lang=perl>
my $max_valore = 10;
Riga 149:
}
print "b=$b\n";
</syntaxhighlight>
</source>
 
[ciclo infinito1 no condizione]: la condizione è necessaria quindi questo caso non è possibile.
Riga 155:
[ciclo infinito2 no incremento] (CTRL + C per terminare):
 
<sourcesyntaxhighlight lang=perl>
my $max_valore = 10;
Riga 174:
}
print "b=$b\n";
</syntaxhighlight>
</source>
[ciclo finito senza inizio ] :
 
<sourcesyntaxhighlight lang=perl>
my $max_valore = 10;
Riga 199:
}
print "b=$b\n";
</syntaxhighlight>
</source>
 
==== Do ... While e Do ... Until ====
Riga 207:
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.
 
<sourcesyntaxhighlight lang=perl>
do
{
Riga 219:
}
until ( <condizione> );
</syntaxhighlight>
</source>
 
NOTA:avete notato il ; alla fine ?
Riga 226:
[ciclo finito]
 
<sourcesyntaxhighlight lang=perl>
my $max_valore = 10;
Riga 251:
print "b=$b\n";
</syntaxhighlight>
</source>
 
[ciclo infinito1 no condizione]: la condizione è necessaria quindi questo caso non è possibile.
Riga 257:
[ciclo infinito2 no incremento] (CTRL + C per terminare):
 
<sourcesyntaxhighlight lang=perl>
my $max_valore = 10;
Riga 279:
print "b=$b\n";
</syntaxhighlight>
</source>
[ciclo finito senza inizio ] :
 
<sourcesyntaxhighlight lang=perl>
my $max_valore = 10;
Riga 306:
} until ( $b > $max_valore - 1 );
print "b=$b\n";
</syntaxhighlight>
</source>
 
È opportuno precisare che modificando opportunamente i valori iniziali , è possibile ottenere che venga eseguito almeno una volta il ciclo utilizzando while o until
Riga 312:
[do ... while ]
 
<sourcesyntaxhighlight lang=perl>
my $anni = 15;
 
Riga 320:
$anni-- ;
} while ( $anni > 0 );
</syntaxhighlight>
</source>
 
che produce :
Riga 344:
[do ... until ]
 
<sourcesyntaxhighlight lang=perl>
my $anni = 15;
 
Riga 372:
$anni-- ;
}
</syntaxhighlight>
</source>
 
==== Foreach ====
Questa istruzione consente di "scandire" una lista (array).
 
<sourcesyntaxhighlight lang=perl>
foreach <variabile> ( <lista> )
{
... istruzioni ...
}
</syntaxhighlight>
</source>
 
Vediamo ora come è possibile creare il [ciclo finito]:
 
<sourcesyntaxhighlight lang=perl>
my $max_valore = 10;
Riga 396:
}
print "b=$b\n";
</syntaxhighlight>
</source>
 
che produrrà :
Riga 416:
Questo costrutto è utile quando "al termine di ogni iterazione" occorre compiere una serie di incrementi oppure quando si vuole "evidenziare" l'incremento:
 
<sourcesyntaxhighlight lang=perl>
while ( <condizione> )
{
Riga 452:
}
# Nota Last passa qui (termina fuori)
</syntaxhighlight>
</source>
 
È un modo per riproporre lo spazio per l'incremento del ciclo for.
Riga 458:
Esempio:
 
<sourcesyntaxhighlight lang=perl>
my $b = 15;
my $salto = 17;
Riga 472:
$b++;
}
</sourcesyntaxhighlight>
 
che produce :
Riga 483:
Esempio:
 
<sourcesyntaxhighlight lang=perl>
my $b = 15;
my $salto = 17;
Riga 497:
print "continue b=$b\n";
}
</sourcesyntaxhighlight>
 
che produce: