Les Boucles
Les Boucles
Les Boucles
Les boucles Les boucles sont des structures qui permettent d'excuter plusieurs fois la mme srie d'instructions jusqu' ce qu'une condition ne soit plus ralise... On appelle parfois ces structures instructions rptitives ou bien itrations. La faon la plus commune de faire une boucle, est de crer un compteur (une variable qui s'incrmente, c'est--dire qui augmente de 1 chaque tour de boucle) et de faire arrter la boucle lorsque le compteur dpasse une certaine valeur. La boucle for L'instruction for permet d'excuter plusieurs fois la mme srie d'instructions: c'est une boucle! Dans sa syntaxe, il suffit de prciser le nom de la variable qui sert de compteur (et ventuellement sa valeur de dpart, la condition sur la variable pour laquelle la boucle s'arrte (basiquement une condition qui teste si la valeur du compteur dpasse une limite) et enfin une instruction qui incrmente (ou dcrmente) le compteur. La syntaxe de cette expression est la suivante : for (compteur; condition; modification du compteur) { liste d'instructions } Par exemple : for ($i=1; $i<6; $i++) { echo "$i<br>"; } Cette boucle affiche 5 fois la valeur de $i, c'est--dire 1,2,3,4,5 Elle commence $i=1, vrifie que $i est bien infrieur 6, etc... jusqu' atteindre la valeur $i=6, pour laquelle la condition ne sera plus ralise, la boucle s'interrompra et le programme continuera son cours. D'autre part, le langage PHP autorise la dclaration de la variable de boucle dans l'instruction for elle-mme! Par exemple : for ($i=0; $i<10; $i++) { echo "$i<br>"; }
il faudra toujours vrifier que la boucle a bien une condition de sortie (i.e le compteur s'incrmente correctement) une instruction echo dans votre boucle est un bon moyen pour vrifier la valeur du compteur pas pas en l'affichant!
Page 1 sur 5
PHP 2012/2013
il faut bien compter le nombre de fois que l'on veut faire excuter la boucle: o for($i=0;$i<10;$i++) excute 10 fois la boucle ($i de 0 9) o for($i=0;$i<=10;$i++) excute 11 fois la boucle ($i de 0 10) o for($i=1;$i<10;$i++) excute 9 fois la boucle ($i de 1 9) o for($i=1;$i<=10;$i++) excute 10 fois la boucle ($i de 1 10)
L'instruction while L'instruction while reprsente un autre moyen d'excuter plusieurs fois la mme srie d'instructions. La syntaxe de cette expression est la suivante : while (condition ralise) { liste d'instructions } Cette instruction excute la liste d'instructions tant que (while est un mot anglais qui signifie tant que) la condition est ralise. La condition de sortie pouvant tre n'importe quelle structure conditionnelle, les risques de boucle infinie (boucle dont la condition est toujours vraie) sont grands, c'est--dire qu'elle risque de provoquer un plantage du navigateur! Saut inconditionnel Il peut tre ncessaire de faire sauter la boucle une ou plusieurs valeurs sans pour autant mettre fin celle-ci. La syntaxe de cette expression est "continue;" (cette instruction se place dans une boucle!), on l'associe gnralement une structure conditionnelle, sinon les lignes situes entre cette instruction et la fin de la boucle seraient obsoltes. Exemple: Imaginons que l'on veuille imprimer pour $x allant de 1 10 la valeur de 1/($x-7) ... il est vident que pour $x=7 il y aura une erreur. Heureusement, grce l'instruction continue il est possible de traiter cette valeur part puis de continuer la boucle! $x=1; while ($x<=10) { if ($x == 7) { echo "Division par zro!"; continue; } $a = 1/($x-7); echo "$a<br>"; $x++; }
Page 2 sur 5
PHP 2012/2013
Lorsque $x est gal 7, le compteur ne s'incrmente plus, il reste constamment la valeur 7, il aurait fallu crire : $x=1; while ($x<=10) { if ($x == 7) { echo "division par 0"; $x++; continue; } $a = 1/($x-7); echo "$a<br>"; $x++; } Arrt inconditionnel A l'inverse, il peut tre voulu d'arrter prmaturment la boucle, pour une autre condition que celle prcis dans l'en-tte de la boucle. L'instruction break permet d'arrter une boucle (for ou bien while). Il s'agit, tout comme continue, de l'associer une structure conditionnelle, sans laquelle la boucle ne ferait jamais plus d'un tour! Dans l'exemple de tout l'heure, par exemple si l'on ne savait pas quel moment le dnominateur ($x-7) s'annule (pour des quations plus compliques par exemple) il serait possible de faire arrter la boucle en cas d'annulation du dnominateur, pour viter une division par zro! for ($x=1; $x<=10; $x++) { $a = $x-7; if ($a == 0) { echo "division par 0"; break; } echo "1/$a<br>"; } Arrt d'excution du script PHP autorise l'utilisation de la commande exit, qui permet d'interrompre totalement l'interprtation du script, ce qui signifie que le serveur n'envoie plus d'informations au navigateur: le script est fig dans
Page 3 sur 5
PHP 2012/2013
son tat actuel. cette instruction est particulirement utile lors de l'apparition d'erreur! do-while Les boucles do-while ressemblent beaucoup aux boucles while, mais l'expression est teste la fin de chaque itration plutt qu'au dbut. La principale diffrence par rapport la boucle while est que la premire itration de la boucle do-while est toujours excute (l'expression n'est teste qu' la fin de l'itration), ce qui n'est pas le cas lorsque vous utilisez une boucle while (la condition est vrifie ds le dbut de chaque itration, et si elle s'avre FALSE ds le dbut, la boucle sera immdiatement arrte). Il n'y a qu'une syntaxe possible pour les boucles do-while : <?php $i = 0; do { echo $i; } while ($i > 0); ?> La boucle ci-dessus ne va tre excute qu'une seule fois, car lorsque l'expression est value, elle vaut FALSE (car la variable $i n'est pas plus grande que 0) et l'excution de la boucle s'arrte.
Exercice 1
Rdiger une expression conditionnelle pour tester si un nombre est la fois un multiple de 3 et de 5.
Exercice 2
crire une expression conditionnelle utilisant les variables $g$e une instruction if ete s a dans x pour slectionner une personne de sexe fminin dont lage est compris entre 21 et 40 ans et afficher un message de bienvenue appropri.
Exercice 3
Effectuer une suite de tirages de nombres alatoires jusqu obtenir une suite compose dun nombre pair suivi de deux nombres impairs.
Exercice 4
Choisir un nombre de trois chiffres. Effectuer ensuite des tirages alatoires et compter le nombre de tirages ncessaire pour obtenir le nombre initial. Arrter les tirages et afficher le nombre de coups raliss. Raliser ce script dabord avec linstruction wi avec linstruction puis h l .o fr
EXERCICE 5
Ecrire un script qui permet dafficher le rsultat suivant : Affiche: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | Page 4 sur 5
Page 5 sur 5