On appelle structure conditonnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent suivant la réalisation de la condition on appelle ces structures des structures de boucle.
Une expression suivie dun pointvirgule est appelée instruction. Par exemple $a++; est une instruction.
Lorsque lon veut regrouper plusieurs instructions on peut créer ce que lon appelle un bloc cestàdire un ensemble dinstructions suivies respectivement par des pointvirgules et compris entre les accolades { et }.
Les instructions if while et for peuvent par exemple être suivies dun bloc dinstructions à exécuter...
Linstruction if est la structure de test la plus basique on la retrouve dans tous les langages (Avec une syntaxe différente...). Elle permet dexécuter une série dinstructions si jamais une condition est réalisée.
La syntaxe de cette expression est la suivante :
Remarques :
La condition doit être entre des parenthèses.
Il est possible de définir plusieurs conditions à remplir avec les opérateurs ET et OU (&& et ¦¦). Par exemple linstruction suivante teste si les deux conditions sont vraies :
Linstruction cidessous exécutera les instructions si lune ou lautre des deux conditions est vraie.
Les instructions situées dans le bloc qui suit else sont les instructions qui seront exécutées si la ou les conditions ne sont pas remplies.
Contrairement au langage C les parenthèses de bloc ne peuvent pas être omises lorsquil ny a quune seule instruction !
Linstruction if dans sa forme basique ne permet de tester quune condition or la plupart du temps on aimerait pouvoir choisir les instructions à exécuter en cas de non réalisation de la condition...
Lexpression if ... else permet dexécuter une autre série dinstructions en cas de nonréalisation de la condition.
La syntaxe de cette expression est la suivante :
Il est possible de faire un test avec une structure beaucoup moins lourde grâce à la structure suivante appelée opérateur ternaire :
Remarques :
La condition doit être entre des parenthèses.
Lorsque la condition est vraie linstruction de gauche est exécutée.
Lorsque la condition est fausse linstruction de droite est exécutée.
Linstruction if ... else ne permet de tester quune condition or il est parfois nécessaire de tester plusieurs conditions de façon exclusive cestàdire que sur toutes les conditions une seule sera réalisée...
Lexpression if ... elsif ... else permet denchaîner une série dinstructions et évite davoir à imbriquer des instructions if.
La syntaxe de cette expression est la suivante :
Perl ne contient pas dinstruction switch.
Perl propose linstruction unless qui permet dexécuter une instruction seulement si la condition associée est fausse.
La syntaxe de cette expression est la suivante :
Les boucles sont des structures qui permettent dexécuter plusieurs fois la même série dinstructions jusquà ce quune condition ne soit plus réalisée...
On appelle parfois ces structures instructions répétitives ou bien itérations.
La façon la plus commune de faire une boucle est de créer un compteur (Une variable qui sincrémente cestàdire qui augmente de 1 à chaque tour de boucle) et de faire arrêter la boucle lorsque le compteur dépasse une certaine valeur.
Linstruction for permet dexécuter plusieurs fois la même série dinstructions : Cest une boucle !
Dans sa syntaxe il suffit de préciser le nom de la variable qui sert de compteur éventuellement sa valeur de départ la condition sur la variable pour laquelle la boucle sarrête (Basiquement une condition qui teste si la valeur du compteur dépasse une limite) et enfin une instruction qui incrémente (Ou décrémente) le compteur.
La syntaxe de cette expression est la suivante :
Par exemple :
Cette boucle affiche 5 fois la valeur de $i cestàdire 12345.
Elle commence à $i=1 vérifie que $i est bien inférieur à 6 etc... jusquà atteindre la valeur $i=6 pour laquelle la condition ne sera plus réalisée la boucle sinterrompera et le programme continuera son cours.
Dautre part le langage Perl autorise la déclaration de la variable de boucle dans linstruction for ellemême !
Par exemple :
Il faudra toujours vérifier que la boucle a bien une condition de sortie (i.e le compteur sincrémente correctement).
Une instruction printf(); dans votre boucle est un bon moyen pour vérifier la valeur du compteur pas à pas en laffichant !
Il faut bien compter le nombre de fois que lon veut faire exécuter la boucle :
for($i=0;$i‹10;$i++); exécute 10 fois la boucle ($i de 0 à 9).
for($i=0;$i‹=10;$i++); exécute 11 fois la boucle ($i de 0 à 10).
for($i=1;$i‹10;$i++); exécute 9 fois la boucle ($i de 1 à 9).
for($i=1;$i‹=10;$i++); exécute 10 fois la boucle ($i de 1 à 10).
Linstruction while représente un autre moyen dexécuter plusieurs fois la même série dinstructions.
La syntaxe de cette expression est la suivante :
Cette instruction exécute la liste dinstructions tant que (While est un mot anglais qui signifie tant que) la condition est réalisée.
La condition de sortie pouvant être nimporte quelle structure conditionnelle les risques de boucle infinie (Boucle dont la condition est toujours vraie) sont grands cestàdire quelle risque de provoquer un plantage du navigateur !
Linstruction until est similaire à linstruction while à la différence près que le test est inversé.
La syntaxe de cette expression est la suivante :
Linstruction foreach permet deffectuer une boucle qui parcourt une liste. À chaque tour de boucle lélément de la liste est affecté à la variable $VAR. LISTE peut par exemple être un tableau dont linstruction foreach va parcourir les enregistrements.
La syntaxe de cette expression est la suivante :
Il peut être nécessaire de faire sauter à la boucle une ou plusieurs valeurs sans pour autant mettre fin à celleci.
La syntaxe de cette expression est "next;" (Cette instruction se place dans une boucle !) on lassocie généralement à une structure conditionnelle sinon les lignes situées entre cette instruction et la fin de la boucle seraient obsolètes. Elle est très proche de linstruction continue du langage C.
Exemple : Imaginons que lon veuille imprimer pour $x allant de 1 à 10 la valeur de 1/($x7) ... Il est évident que pour $x=7 il y aura une erreur. Heureusement grâce à linstruction next il est possible de traiter cette valeur à part puis de continuer la boucle !
Il y avait une erreur dans ce programme... peutêtre ne lavezvous pas vue :
Lorsque $x est égal à 7 le compteur ne sincrémente plus il reste constamment à la valeur 7 il aurait fallu écrire :
À linverse il peut être voulu darrêter prématurément la boucle pour une autre conditon que celle précisée dans lentête de la boucle. Linstruction last permet darrêter une boucle (For ou bien While). Il sagit tout comme next de lassocier à une structure conditionnelle sans laquelle la boucle ne ferait jamais plus dun tour !
Dans lexemple de tout à lheure par exemple si lon ne savait pas à quel moment le dénominateur ($x7) sannule (Enfin cest surtout pour des équations plus compliquées) il serait possible de faire arrêter la boucle en cas dannulation du dénominateur pour éviter une division par zéro !
Ce document intitulé « Perl Les structures conditionnelles » issu de Comment Ça Marche (http://www.commentcamarche.net/) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier modifier des copies de cette page dans les conditions fixées par la licence tant que cette note apparaît clairement.