Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
Les structures de contrôle itératives
Il va souvent arriver que vous vouliez faire faire la même action (ou presque la même), plusieurs fois à un programme. Une possibilité est d'écrire plusieurs fois la même instruction. Une autre possibité est d'utiliser une structure de contrôle qui va refaire une même instruction autant de fois que nécessaire.
Regardons cela avec un exemple. Si je souhaite dessiner un carré d'astérisques de côté 5, je peux écrire le code suivant :
C'est faisable, ça fonctionne, mais si j'avais voulu faire un carré de taille 100, ce serait déjà beaucoup plus pénible et un carré de côté 1000, cela devient quasiment impossible.
Utilisons plutôt une structure de contrôle itérative :
- Exécute les deux codes ci-dessus. A-t-on le même résultat ?
- Modifie le deuxième code en remplaçant 5 par 10. Que se passe-t-il ?
- Ajoute l'instruction
echo "Fin";
à la ligne 7 et observe ce qui se passe.
La structure de contrôle While
La syntaxe de cette structure de contrôle est :
while (cond) {
code
}
Cette structure de contrôle va nous permettre de répéter le bloc code
tant que la condition cond
vaut true. La condition cond
peut être n'importe quelle expression booléenne. Lorsque la condition cond
devient false, le block code
n'est plus répété et le code qui suit le bloc est exécuté.
Il faut faire attention à ce que la condition cond
devienne false à un moment donné, sinon le programme va partir dans une boucle infinie.
Dans notre exemple,
- au début, la condition
$compteur < 5
vaut true, puisque$compteur
vaut 0. On exécute donc une première fois le bloc composé des lignes 4 et 5 : on affiche alors une ligne de 5 étoiles, puis$compteur
est incrémenté de 1 et vaut maintenant 1. - On revérifie la condition
$compteur < 5
qui vaut encore true puisquecompteur
vaut 1. On exécute donc une nouvelle fois le bloc des lignes 4 et 5. On affiche une ligne de 5 étoiles, puis on incrémente$compteur
. - On revérifie la condition
$compteur < 5
qui vaut true et on exécute à nouveau le même bloc...
A force d'incrémenter la variable compteur
, celle-ci va finir par prendre la valeur 6, et la condition $compteur < 5
vaudra alors false, on arrête d'éxécuter le bloc des lignes 4 et 5 encore et encore. Ici, il n'y a plus de code après ce bloc, donc le programme s'arrête.
Regardons un autre exemple. On va essayer d'afficher la liste des nombres pairs de 2 à 10. Ici, aussi on va utiliser la structure de contrôle while
.
La structure de contrôle for
Il arrivera souvent que l'on utilise les structures itératives pour répéter un bloc d'instructions un certain nombre de fois, comme nous venons de le faire dans les exemples ci-dessus, et notre code aura la forme suivante :
$compteur = 0
while ($compteur < nombre) {
code
$compteur = $compteur + 1;
}
où nombre
sera le nombre de répétitions du bloc, et code
le code à exécuter. La structure de contrôle for, qui est plus compacte, peut alors être utilisée
de manière équivalente :
for ($compteur = 0; $compteur < nombre ; $compteur = $compteur + 1){
code
}
NB : A la place de $compteur = $compteur + 1
, on peut utiliser $compteur++
qui est équivalent.
De manière générale, la syntaxe de la structure de contrôle for est :
for (initialisation; condition ; modification){
code
}
où initialisation
consiste à donner une première valeur à une variable, condition
va tester cette variable par rapport à certains critères, et
modification
va modifier la valeur de cette même variable afin que la valeur de condition
deviennent false à un moment donné.
- Essayer de refaire le code qui affiche un carré d'astéristique de taille 5, mais en utilisant un for.
- Essayer de refaire le code qui affiche les nombres pairs de 2 à 10, mais en utilisant un for.
La structure de contrôle do-while
Dans certains cas, on souhaitera faire un premier tour de boucle avant de tester la condition pour savoir si on continue. Dans ce cas, on peut utiliser la structure de contrôle do-while, dont voici la syntaxe :
<?php
do {
code
} while (cond);
On exécute donc une première fois le bloc de code, puis on vérifie la condition cond
. Si elle vaut true, alors on repart dans le bloc de code, sinon on continue le reste du programme.
Voici un exemple:
Dans cette exemple, on est sûr de poser au moins une fois la question "Tu aimes la programmation ?".
Explications supplémentaires
Existe-t-il d'autres structures de contrôles itératives ?
Oui, nous verrons la structure de contrôle foreach dans le prochain chapitre sur les tableaux.
Est-ce que je peux mettre une structure itérative dans le bloc de code d'une autre structure itérative ?
Oui, c'est tout à fait possible, et on le fait assez régulièrement quand on code. La structure qui est la plus à l'intérieur sera alors exécutée plusieurs fois.
Admettons, qu'on ait un for qui répète son code 2 fois et qu'à l'intérieur de son code il y ait un autre for qui lui répète son code 3 fois. Alors le code du deuxième for sera répété en tout 6 fois.
N'hésite pas à changer les conditions des deux for (pour exemple en mettant $i < 3
et $j < 2
) et voir le résultat que s'affichera.