26/04/2017
1
Algorithmes…et programmes en PHP
Structures répétitives
Les structures répétitives
Les boucles peuvent être non déterministes ou déterministes.
Les boucles non-déterministes : On ne sait pas à l’avance combien de fois se fera la boucle, ni quand elle s’arrêtera (voire si elle s’arrêtera) :
REPETER...JUSQU’A TANT QUE
Les boucles déterministes: On connaît à l’avance le nombre d’itérations :
POUR
L’instruction REPETER … JUSQU’A
Syntaxe
La forme générale de cette boucle est :
Répéter
Instruction1 Instruction2 Instruction3 Jusqu’a condition
Si condition est VRAI alors la boucle s’arrête.
Si condition est FAUSSE alors la boucle continue.
Remarque : le test est un test d’arrêt
L’instruction REPETER … JUSQU’A
Exemple
Programme Principal Variables
Nb , n : Entiers Début
Afficher "Entrez un nombre:"
Saisir n
RépéterAfficher "Entrez un nombre (0 pour Fin):"
Saisir Nb
Afficher "La multiplication par ",n," est:", Nb*n
Jusqu’à Nb = 0Fin
L’instruction REPETER … JUSQU’A
Remarques:
Le test d’arrêt de la boucle est effectué à la fin => La boucle s’exécute toujours au moins une fois .
La variable utilisée dans le test d’arrêt (ou de continuité) doit toujours évoluer dans le corps de la boucle, si on veut que la boucle s’arrête un jour.
Faire « tourner à la main » le programme pour vérifier qu’il correspond bien à l’algorithme désiré.
Comprendre une boucle…
Faites tourner « à la main » l’algorithme ci-dessous afin de trouver le rôle du programme:
Programme Principal Variables
nb: Entier Début
Répéter
Afficher "Saisir un nombre strictement positif"
Afficher "Saisir 0 (zero) pour arreter le programme"
Saisir nb si nb>0
si (nb MOD 2) = 0
afficher nb, " est pair"
finSi si (nb MOD 3) = 0
afficher nb, " est divisible par 3"
finSi finSi Jusqu’à (nb = 0 ) Fin
26/04/2017
2 Exercice:
Faire un algorithme qui calcule la somme de n nombres saisis. Il faut saisir la valeur 0 pour arrêter la structure répétitive.
Programme Somme Variables
Nb , resultat : Entiers Début
resultat 0
RépéterAfficher "Entrez un nombre (0 pour Fin):"
Saisir Nb
resultat resultat + Nb
Jusqu’à Nb = 0Afficher "La somme est:", resultat Fin
L’instruction POUR … FAIRE … FIN POUR
La boucle POUR est déterministe => on l’utilisera quand on connaît a l’avance le nombre d’itérations.
Elle utilise un compteur de boucle qui est un entier .
Syntaxe 1
Syntaxe 2
Où variable, c1, c2 et N sont des entiers
Pour variable variant de c1 à c2 faire Instruction1
Instruction2 Instruction3 Fin Pour
Pour variable variant de c1 à c2 par pas de N faire Instruction1
Instruction2 Instruction3 Fin Pour
L’instruction POUR … FAIRE … FIN POUR
Exemple
Programme Principal Variables
i, nb : Entiers Début
Afficher "Entrez un nombre :"
Saisir nb
Pour i variant de 1 à nb faire Afficher i
Fin Pour Fin
L’instruction POUR … FAIRE … FIN POUR
Remarques:
Le compteur de la boucle POUR doit être un entier .
Si la valeur finale est atteinte dès le premier passage => la boucle s’exécute zéro fois.
A la sortie de la boucle, le compteur possède la dernière valeur affecté par la boucle.
Le compteur de la boucle (i) ne doit jamais être modifié dans le corps de la boucle !
Imbrication des boucles POUR
Les instructions d’une boucle POUR peuvent être une autre boucle POUR.
Comme le montre l’exemple ci-dessous.
Exemple
Remarques: Le compteur de la boucle interne (i) tourne plus vite que celui de la boucle externe (base)
Programme Principal Variables
i, base, res :Entiers Début
Pour base variant de 1 à 12 faire
Afficher "Table de multiplication de :", base Pour i variant de 1 à 10 faire
res i * base
Afficher i," X ", base," = ", res Fin Pour
Fin Pour Fin
Instructions à l’intérieur des structures répétitives
A l’intérieur des structures répétitives, on peut exécuter:
Des instructions simples (affectations, calculs, saisie, affichage) Des structures répétitives de même nature ou de nature
différente
Des structures conditionnelles
26/04/2017
3
- Les structures répétitives en PHP…
Structures répétitives
Structures répétitives
Exemple introductif : Ecrire les 10 premiers nombres entiers
Cette solution est peu intéressante… surtout si nous devons écrire les 100 premiers entiers… voire plus
Pour éviter cela, nous allons demander au programme de faire la répétition lui-même grâce aux structures répétitives
14
<?PHP echo "\n1";
echo "\n2";
echo "\n3";
echo "\n4";
echo "\n5";
echo "\n6";
echo "\n7";
echo "\n8";
echo "\n9";
echo "\n10";
?>
Structures répétitives
La structure FOR
for($i=1;$i<=10;$i++){
echo "\n$i";
}
15 Les instructions à répéter sont incluses entre les accolades ouvrantes et fermantes
Les conditions de la boucle sont au nombre de 3. Elles sont écrites entre parenthèses et séparées par des point-virgules
La 3ièmeexpression indique l’opération à faire après chaque tour de boucle
La 1èreexpression indique ce qu’il faut faire avant d’exécuter les instructions
La 2ièmeexpression indique la condition qui indique si on doit continuer la boucle
Structures répétitives
Exercice: Avec une instruction FOR, écrire 10 fois le mot Bonjour séparés par des espaces
16
Structures répétitives
Autre structure: FAIRE TANT QUE ou DO WHILE
do {
echo "\n$i";
$i++;
}while($i<=10);
17 Les instructions à répéter sont incluses entre les
accolades ouvrantes et fermantes
La condition de la boucle est écrite entre parenthèses et se termine par un point virgule
La condition doit retourner un booléen : TRUE ou FALSE.
Elle indique si on doit continuer la boucle
Structures répétitives
Exercice: Afficher les 10 premiers nombres pairs
18
<?PHP
for($i=0; $i<10; $i++){
echo ($i*2)."\n";
}
?>