perl:boucles_for_foreach_while
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
perl:boucles_for_foreach_while [2009/03/15 00:44] – modification externe 127.0.0.1 | perl:boucles_for_foreach_while [2013/03/12 23:27] (Version actuelle) – root | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Les boucles ====== | ||
+ | |||
====== 1. For ====== | ====== 1. For ====== | ||
On retrouve la forme traditionnelle du C, qui se présente exactement de la même façon : | On retrouve la forme traditionnelle du C, qui se présente exactement de la même façon : | ||
+ | <code perl> | ||
for (my $i = 0; $i < 10; $i++) { | for (my $i = 0; $i < 10; $i++) { | ||
print " | print " | ||
} | } | ||
+ | </ | ||
L' | L' | ||
Ligne 12: | Ligne 16: | ||
Il est possible d' | Il est possible d' | ||
+ | <code perl> | ||
my $i = 0; | my $i = 0; | ||
for (; $i<10; ) { $i++; } | for (; $i<10; ) { $i++; } | ||
for (;;) { # boucle infinie } | for (;;) { # boucle infinie } | ||
+ | </ | ||
On peut également contrôler l' | On peut également contrôler l' | ||
* **last** : quitte immédiatement la boucle courante | * **last** : quitte immédiatement la boucle courante | ||
Ligne 22: | Ligne 27: | ||
Ces mot-clés s' | Ces mot-clés s' | ||
+ | <code perl> | ||
my ($x, $y); | my ($x, $y); | ||
for ($x = 0; $x < 80; $x++) { | for ($x = 0; $x < 80; $x++) { | ||
Ligne 29: | Ligne 35: | ||
last if ($x * $x < 900); # Termine la boucle for ($x...) | last if ($x * $x < 900); # Termine la boucle for ($x...) | ||
} | } | ||
+ | </ | ||
Il est possible toutefois de nommer les boucles, et donc de préciser explicitement quelles boucles on veut arrêter, sauter ou redémarrer : | Il est possible toutefois de nommer les boucles, et donc de préciser explicitement quelles boucles on veut arrêter, sauter ou redémarrer : | ||
+ | <code perl> | ||
BOUCLE_X: for (my $x = 0; $x < 80; $x++) { | BOUCLE_X: for (my $x = 0; $x < 80; $x++) { | ||
BOUCLE_Y: for (my $y = 0; $y < 60; $y++) { | BOUCLE_Y: for (my $y = 0; $y < 60; $y++) { | ||
Ligne 37: | Ligne 45: | ||
last BOUCLE_X if ($x * $x < 900); # Termine la boucle for ($x...) | last BOUCLE_X if ($x * $x < 900); # Termine la boucle for ($x...) | ||
} | } | ||
+ | </ | ||
Cette forme ayant l' | Cette forme ayant l' | ||
Ligne 43: | Ligne 52: | ||
Pour itérer sur une liste, il existe une instruction simple, lisible et rapide : | Pour itérer sur une liste, il existe une instruction simple, lisible et rapide : | ||
+ | <code perl> | ||
my @courses = (" | my @courses = (" | ||
foreach my $produit (@courses) { | foreach my $produit (@courses) { | ||
print " | print " | ||
} | } | ||
+ | </ | ||
Il est possible d' | Il est possible d' | ||
+ | <code perl> | ||
foreach (@courses) { | foreach (@courses) { | ||
print " | print " | ||
} | } | ||
+ | </ | ||
Enfin, on a le droit d' | Enfin, on a le droit d' | ||
+ | <code perl> | ||
print " | print " | ||
+ | </ | ||
L' | L' | ||
+ | <code perl> | ||
print " | print " | ||
for (0..9) { print " | for (0..9) { print " | ||
+ | </ | ||
On retrouve exactement les mêmes mécanismes de nommage de boucle et de contrôle avec les mots-clés last, next et redo. | On retrouve exactement les mêmes mécanismes de nommage de boucle et de contrôle avec les mots-clés last, next et redo. | ||
Ligne 67: | Ligne 84: | ||
On retrouve encore une construction qui vient du C, la boucle //while// : | On retrouve encore une construction qui vient du C, la boucle //while// : | ||
+ | <code perl> | ||
my $i = 0; | my $i = 0; | ||
while ($i < 5) { | while ($i < 5) { | ||
$i++; | $i++; | ||
} | } | ||
+ | </ | ||
Perl définit aussi son homonyme //until// où la condition est simplement inversée : | Perl définit aussi son homonyme //until// où la condition est simplement inversée : | ||
+ | <code perl> | ||
my $i = 0; | my $i = 0; | ||
until ($i >= 5) { | until ($i >= 5) { | ||
$i++; | $i++; | ||
} | } | ||
+ | </ | ||
On peut également utiliser les mots-clés //next//, //last// et //redo//. De même que pour //for// et // | On peut également utiliser les mots-clés //next//, //last// et //redo//. De même que pour //for// et // | ||
+ | <code perl> | ||
my $i = 0; | my $i = 0; | ||
COMPTEUR: while ($i <= 10) { | COMPTEUR: while ($i <= 10) { | ||
Ligne 86: | Ligne 108: | ||
$i++; | $i++; | ||
} | } | ||
+ | </ | ||
Enfin, il est possible d' | Enfin, il est possible d' | ||
+ | <code perl> | ||
my $i; | my $i; | ||
do { | do { | ||
$i++; | $i++; | ||
} while ($i < 5); | } while ($i < 5); | ||
+ | </ |
perl/boucles_for_foreach_while.1237077870.txt.gz · Dernière modification : 2013/03/12 23:27 (modification externe)