CHAPITRE 4 : LA BOUCLE TANTQUE

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
IterationConditionAfficheNouveau i
11 <= 1012
22 <= 1023
…………
1010 <= 101011
Fin11 <= 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
Etapei avantConditionAffichagei apres
11vrai12
22vrai23
33vrai34
44vrai45
Fin5faux-arret

8. POUR ou TANTQUE ?

POURTANTQUE
Nombre d'iterations connuNombre d'iterations inconnu
Compteur automatiqueVariable modifiee manuellement
Parcours, comptageArret dependant d'une condition
Plus simplePlus 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.
★ ★ ★ ★ ★
2 votes. Moyenne 5 sur 5.

Ajouter un commentaire

Anti-spam