La boucle TANTQUE repete un traitement tant qu'une
condition est vraie. Contrairement a POUR, le nombre de repetitions n'est
generalement pas connu a l'avance.
1. Fonctionnement
Condition
│
┌──────┴──────┐
VRAI FAUX
│ │
▼ ▼
Executer le Sortir de
traitement la boucle
│
└─────────────┘
La condition est verifiee avant chaque iteration. C'est pourquoi on dit que
TANTQUE possede une condition d'entree. Retenez bien cette expression.
2. Syntaxe
TantQue(condition) Faire
Instructions
FinTantQue
Une notation abregee existe aussi : Ftq au lieu de FinTantQue.
3. Premier exemple
i <- 1;
TantQue(i <= 10) Faire
Ecrire(i);
i <- i + 1;
FinTantQue
Iteration
Condition
Affiche
Nouveau i
1
1 <= 10
1
2
2
2 <= 10
2
3
…
…
…
…
10
10 <= 10
10
11
Fin
11 <= 10 faux
-
arret
4. Les trois conditions a respecter
Une boucle TANTQUE correcte suppose toujours :
la variable de controle est initialisee avant la boucle ;
elle est modifiee a l'interieur de la boucle ;
la condition finira par devenir fausse.
5. La boucle infinie
Une boucle infinie ne se termine jamais.
i <- 1;
TantQue(i > 0) Faire
Ecrire(i); // i n'est jamais modifie
FinTantQue
La condition reste vraie indefiniment : le programme ne s'arrete jamais.
Trois facons de la provoquer
Oublier l'initialisation : i n'a jamais recu de valeur
Ne jamais modifier la variable de controle
Modifier la mauvaise variable : on incremente j alors que la
condition porte sur i
6. Calcul d'une somme
Lire(N);
i <- 1;
somme <- 0;
TantQue(i <= N) Faire
somme <- somme + i;
i <- i + 1;
FinTantQue
Ecrire(somme);
7. Tableau de trace
i <- 1;
TantQue(i <= 4) Faire
Ecrire(i);
i <- i + 1;
FinTantQue
Etape
i avant
Condition
Affichage
i apres
1
1
vrai
1
2
2
2
vrai
2
3
3
3
vrai
3
4
4
4
vrai
4
5
Fin
5
faux
-
arret
8. POUR ou TANTQUE ?
POUR
TANTQUE
Nombre d'iterations connu
Nombre d'iterations inconnu
Compteur automatique
Variable modifiee manuellement
Parcours, comptage
Arret dependant d'une condition
Plus simple
Plus souple
9. Quand choisir TANTQUE
Le nombre de repetitions est inconnu
On attend qu'une condition devienne fausse
On lit des donnees jusqu'a une valeur sentinelle
On recherche une valeur
On effectue un calcul iteratif
A retenir
TANTQUE possede une condition d'entree
La condition est testee avant chaque iteration
La boucle peut ne jamais s'executer si la condition est fausse au depart
Une mauvaise mise a jour provoque une boucle infinie
Exercices d'application
Exercice 1. Saisie jusqu'a zeroLisez des nombres jusqu'a ce que l'utilisateur saisisse 0, puis affichez leur somme. Attention a la premiere lecture.
Exercice 2. Compte a reboursAffichez les nombres de 10 a 1 avec une boucle TANTQUE, puis « Decollage ».
Exercice 3. Reperer l'erreurExpliquez pourquoi ce code boucle indefiniment et corrigez-le : i <- 1; TantQue(i <= 5) Faire Ecrire(i); FinTantQue
Cherchez avant de regarder la solution : c'est en butant sur les difficultes que l'on progresse.
Questions / Réponses
Aucune question. Soyez le premier à poser une question.