Cours introduction à la programmation en Perl, tutoriel & guide de travaux pratiques en pdf.
Les boucles
Les boucles permettent d’executer plusieurs fois les memes instructions sans avoir a ecrire plusieurs fois les memes lignes de code. Bien souvent
nous avons besoin de modifier une variable ` a chaque etape; dans ce cas nous utiliserons l’instruction for (pour en fran¸cais) dont voici la syntaxe:
for( initialisation; condition; incr´ement ) { instructions; }
La boucle for prend trois expressions entre parentheses: la premiere expression permet d’initialiser la variable de boucle, la deuxi`eme est une condition de continuation et la derniere permet de modifier la valeur de la variable de boucle. Quand la boucle demarre, la variable est initialisee (expression 1) et le test est effectue (expression 2). Si cette condition est verifiee, le bloc d’instructions est execute. Quand le bloc se termine, la variable est modifiee (expression 3) et le test est de nouveau effectue (expression 2). Si la condition est verifiee, le bloc d’instructions est r´e-execute avec la nouvelle valeur pour la variable de boucle. Tant que le test reste vrai, le bloc d’instructions et l’expression de modification de la variable sont ex´ecut´es. ` A l’arrˆ et de la boucle, les instructions qui suivent la boucle sont ex´ecut´ees. L’exemple suivant affiche tous les entiers pairs de 0 ` a 20 inclus:
for( my $i=0; $i<=20; $i+=2 ) { print « $i\n »; }
La boucle s’arrete lorsque $i vaut 22. Cette variable est d´eclar´ ee dans le bloc d’initialisation et n’existe donc que dans la boucle. Notez qu’il est tout ` a fait possible d’utiliser une variable pre-existante comme variable de boucle (et donc de ne pas faire de my dans la partie initialisation); dans ce cas, apres execution de la boucle, la variable vaut la derni`ere valeur qui lui a et e affectee au cours de la boucle. Une autre boucle existe: la boucle while (tant que en fran¸cais) dont voici la syntaxe:
while( condition ) { instructions; }
Les instructions sont effectuées tant que la condition est vraie. La partie initialisation doit avoir ´ et´ e effectuée avant la boucle; la partie modification de la variable doit avoir lieu dans le bloc d’instructions. L’exemple suivant affiche lui aussi les entiers pairs de 0 ` a 20:
my $i = 0; while( $i <= 20 ) { print « $i\n »; $i+=2; }
La seule difference entre les deux exemples est le fait que, dans le cas du while, la variable $i existe après la boucle. Comme pour le if, certaines facilit´ es sont offertes pour le while. Tout d’abord, la syntaxe suivante est correcte:
instruction while( condition );
Elle permet d’ex´ecuter plusieurs fois une instruction et une seule tant qu’une condition est verifiee. Ensuite, il existe une instruction until (jusqu’a en fran¸cais) qui a la mˆeme syntaxe que le while mais qui demande une condition d’arrêt (comme unless pour if): until(condition)est equivalent a while(!(condition)) Lors de l’execution d’une boucle, il est frequent de rencontrer des cas particuliers que l’on souhaiterait sauter ou pour lesquels on aimerait mettre fin ` a la boucle. Les instructions next, last et redo vont nous servir ` a cela dans les boucles for, while ou until. L’instructions next (suivant en fran¸cais) provoque la fin de l’ex´ecution du bloc, le programme ´evalue directement l’increment (dans le cas d’une boucle for) puis le test est effectue. L’instructions last (dernier en fran¸cais) provoque la fin de la boucle, ni l’increment ni le test ne sont effectues. L’instructions redo (refaire en fran¸cais) provoque le redemarrage du bloc d’instructions sans que la condition ni l’incrementation ne soient effectuees. L’exemple suivant est une autre fa¸con d’imprimer ` a l’ecran les entiers pairs de 0 ` a 20:
my $i = -1; while( 1 ) # 1 est vrai {