while
(tant
que)
VARIABLE
ENTIER i
DEBUT
i <-- 0
TANT QUE i < 5
FAIRE
ECRIRE(i)
i <-- i + 1
FIN TANT QUE
ECRIRE "FIN DU PROGRAMME" FIN
int i = 0;
while (i < 5) {
("%d\n", i);
printf++;
i}
("Fin du programme\n"); printf
0
1
2
3
4
Fin du programme
do-while
(faire tant que)
VARIABLE
ENTIER i
DEBUT
i <-- 0
FAIRE
ECRIRE(i)
i <-- i + 1
TANT QUE i < 3
ECRIRE "Après la boucle i vaut " i FIN
int i = 0;
do
{
("%d\n", i);
printf++;
i} while (i < 3) ;
("Après la boucle i vaut: %d", i); printf
0
1
2
Après la boucle i vaut: 3
Si l’on modifie la valeur initiale de i
(par exemple ici
on lui affecte la valeur 5), le comportement des programmes précédents
change.
Le premier programme n’entre pas dans la boucle
(i < 5
n’est jamais vrai):
VARIABLE
ENTIER i
DEBUT
i <-- 5
TANT QUE i < 5
FAIRE
ECRIRE(i)
i <-- i + 1
FIN TANT QUE
ECRIRE "FIN DU PROGRAMME" FIN
Le second programme (faire-tant que) exécute une fois la boucle puis sort aussitôt:
VARIABLE
ENTIER i
DEBUT
i <-- 5
FAIRE
ECRIRE(i)
i <-- i + 1
TANT QUE i < 5
ECRIRE "Après la boucle i vaut " i FIN
while
et
do-while
En reprenant les deux structures de contrôle précédentes, faire les exercices suivants:
for
(pour)Boucle dans laquelle on définit:
Ainsi, si on veut :
i
i
étant à 0
au départi
devant être inférieur à 5i
augmentant de 1
à chaque itérationOn écrira:
POUR i allant de 1 à 5
...
FIN POUR
Dans de nombreux langages:
for (let i = 1; i <= 5 ; i++) //...
POUR i allant de w à x
:
i
prend la valeur initiale w
i
inférieur ou égal à la valeur x
Exemple:
Pour i allant de 1 à 3
ECRIRE(i) FIN Pour
Sortie:
1
2
3
La ligne suivante a une signification différente selon la situation :
Pour i allant de 1 à 3
i
à
1i
puis vérifie si
i
est inférieur à 3i
N’EST PAS inférieur ou égal à
3Utiliser un tableau pour noter les valeurs successives des variables est indispensable (au début) à la compréhension des algorithmes.
Pour l’algorithme précédent, cela donne:
ligne | i |
Sortie | Remarque |
---|---|---|---|
1 | 1 | Entrée dans la boucle (i prend la valeur 1) |
|
2 | 1 | 1 | |
3 | 2 | Retour à la ligne 1 et incrémentation de i |
|
1 | 2 | comparaison avec la condition de sortie | |
2 | 2 | 2 | Affichage à la suite de la ligne précédente |
3 | 3 | Retour à la ligne 1 et incrémentation de i |
|
1 | 3 | comparaison avec la condition de sortie | |
2 | 3 | 3 | Affichage à la suite de la ligne précédente |
3 | 3 | Retour à la ligne 1 et incrémentation de i |
|
1 | 4 | comparaison avec la condition de sortie | |
Fin du programme | 4 | condition sortie atteinte |
for (int i = 0; i < 5 ; i++) {
("i=%d", i);
printf}
("Fin de boucle"); printf
i=1
i=2
i=3
i=4
Fin de boucle
for (int i = 1; i <= 3 ; i++) //...
for (int i = 1; i <= 3 ; i++) //...
i++
signifie: i
prend la valeur de
i + 1
for (int i = 1; i <= 3 ; i++) //...
Ce qui est strictement identique à:
for (int i = 1; i <= 3 ; i = i + 1) //...
VARIABLES
i EST_DU_TYPE NOMBRE
j EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR i ALLANT_DE 0 A 5
DEBUT_POUR
AFFICHER i
FIN_POUR
FIN_ALGORITHME
Affichage:
012345
FONCTIONS_UTILISEES
VARIABLES
i EST_DU_TYPE NOMBRE
j EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR i ALLANT_DE 0 A 5
DEBUT_POUR
AFFICHER* i
FIN_POUR
FIN_ALGORITHME
Affichage:
0
1
2
3
4
5
FONCTIONS_UTILISEES
VARIABLES
i EST_DU_TYPE NOMBRE
j EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR i ALLANT_DE 0 A 5
DEBUT_POUR
AFFICHER i // pas de saut de ligne
AFFICHER* " " // saut de ligne séparé de l'affichage de i
FIN_POUR
FIN_ALGORITHME
Affichage:
0
1
2
3
4
5
VARIABLES
i EST_DU_TYPE NOMBRE
j EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
POUR i ALLANT_DE 0 A 3
DEBUT_POUR
AFFICHER i
POUR j ALLANT_DE 0 A 4
DEBUT_POUR
AFFICHER j
FIN_POUR
AFFICHER* " "
FIN_POUR
FIN_ALGORITHME
Affichage:
001234
101234
201234
301234
Affichage correspondant à i
(boucle externe):
001234
101234
201234
301234
Affichage correspondant à j
(boucle interne):
001234
101234
201234
301234
POUR i allant de 0 à 3
ECRIRE "** i="
ECRIRE i
POUR j allant de 0 à 4
ECRIRE "j="
ECRIRE j
FIN POUR
FIN POUR
Affichera:
** i=0
j=0
j=1
j=2
j=3
j=4
** i=1
j=0
j=1
j=2
j=3
j=4
** i=2
j=0
j=1
j=2
j=3
j=4
** i=3
j=0
j=1
j=2
j=3
j=4
Faire les exercices de cette série : série d’exercices
Pour calculer la puissance d’un nombre, on peut utiliser ce programme:
VARIABLE
ENTIER nombre
ENTIER puissance
ENTIER resultat
ENTIER i
DEBUT
nombre <-- 2
puissance <-- 4
resultat <-- 1
POUR i ALLANT DE 0 à puissance
puissance <-- puissance * nombre
FIN POUR: i <-- i + 1
ECRIRE "Après la boucle i vaut " i
ECRIRE resultat
FIN
ligne | nombre | puissance | resultat | i |
---|---|---|---|---|
9 | 2 | 4 | 1 | |
10 | 2 | 4 | 1 | 0 |
11 | 2 | 4 | 2 | 0 |
10 | 2 | 4 | 2 | 1 |
11 | 2 | 4 | 4 | 1 |
10 | 2 | 4 | 4 | 2 |
11 | 2 | 4 | 8 | 2 |
10 | 2 | 4 | 8 | 3 |
11 | 2 | 4 | 16 | 3 |
10 | 2 | 4 | 16 | 4 |
14 | 2 | 4 | 16 | 4 |
Pour calculer une série de puissance, on peut donc imbriquer cette boucle dans une autre:
ligne | nombre | puissance | resultat | i | puissance <=10 | i < puissance |
---|---|---|---|---|---|---|
6 | 2 | 0 | VRAI | |||
8 | 2 | 0 | 1 | - | ||
9 | 2 | 0 | 1 | 0 | - | FAUX |
12 | 2 | 0 | 1 | |||
6 | 2 | 1 | VRAI | |||
8 | 2 | 1 | 1 | - | ||
9 | 2 | 1 | 1 | 0 | - | VRAI |
10 | 2 | 1 | 2 | 0 | - | VRAI |
9 | 2 | 1 | 1 | 1 | - | FAUX |
6 | 2 | 2 | VRAI | |||
8 | 2 | 2 | 1 | - | ||
9 | 2 | 2 | 1 | 0 | - | VRAI |