CHAPITRE 6 : CHOISIR SA BOUCLE : COMPARAISON ET INVARIANTS

Les trois structures repetitives ont le meme objectif, mais ne s'emploient pas dans les memes situations. Ce chapitre vous donne une methode pour choisir sans hesiter.

1. Comparaison complete

CriterePOURTANTQUEREPETER
Nombre d'iterations connuOuiNonNon
Test de la conditionAutomatiqueAvantApres
Execution minimaleDepend des bornes0 fois possible1 fois obligatoire
Variable de controleAutomatiqueManuelleManuelle
Usage principalComptage, parcoursAttente d'une conditionCondition d'arret

2. L'arbre de decision

Le nombre de repetitions est-il connu ?

            Oui  ──────────────▶  POUR

            Non
             │
             ▼
La premiere execution est-elle obligatoire ?

        Oui  ─────▶  REPETER

        Non  ─────▶  TANTQUE

Cet arbre suffit, dans la grande majorite des cas, a choisir des la lecture de l'enonce.

3. Trois situations typiques

Nombre d'iterations connu

Pour i de 1 a 100 Faire
    Lire(T[i]);
FinPour

Nombre d'iterations inconnu

Lire(x);

TantQue(x <> 0) Faire
    ...
    Lire(x);
FinTantQue

Premiere execution obligatoire

Repeter
    Lire(note);
Jusqu'a(note >= 0 ET note <= 20)

4. L'invariant de boucle

Un invariant est une propriete qui reste vraie :

  • avant la premiere iteration ;
  • apres chaque iteration ;
  • lorsque la boucle se termine.

Il permet de demontrer qu'un algorithme est correct.

Les trois proprietes

ProprieteSignification
InitialisationL'invariant est vrai avant le premier passage
MaintenanceS'il est vrai avant une iteration, il le reste apres
TerminaisonA l'arret, il permet de conclure que le resultat est correct

Un exemple

s <- 0;

Pour i de 1 a n Faire
    s <- s + i;
FinPour

Invariant : avant chaque iteration, s contient deja la somme 1 + 2 + … + (i-1).

Verifions : avant l'iteration ou i = 4, on a s = 6, et en effet 1 + 2 + 3 = 6. Apres cette iteration, s = 10 : l'invariant reste vrai. Quand la boucle s'arrete, i = n+1 et s contient 1 + 2 + … + n. La demonstration est faite.

5. Les tableaux de trace

Un tableau de trace suit l'evolution des variables. C'est l'outil a degainer des qu'un algorithme resiste.

s <- 0;

Pour i de 1 a 4 Faire
    s <- s + i;
FinPour
is avants apres
101
213
336
4610

6. Les boucles imbriquees

Pour i de 1 a 3 Faire
    Pour j de 1 a 2 Faire
        Ecrire(i, j);
    FinPour
FinPour
(1,1) (1,2) (2,1) (2,2) (3,1) (3,2)

Elles servent aux matrices, aux tableaux a deux dimensions, a certains tris et a certaines recherches. Le tri a bulles, que nous verrons plus loin, utilise une boucle TANTQUE contenant une boucle POUR.

7. Les pieges a connaitre

  • Confondre = et <- : Si(x = 5) pour tester, x <- 5; pour affecter
  • Oublier d'initialiser la variable
  • Ne jamais modifier la variable de controle → boucle infinie
  • Choisir la mauvaise boucle : pour lire un tableau de taille connue, c'est POUR
  • Confondre condition d'entree et condition de sortie

8. Les questions classiques

QuestionReponse attendue
Difference entre TANTQUE et REPETER ?TANTQUE a une condition d'entree, REPETER une condition de sortie
Une boucle TANTQUE peut-elle ne jamais s'executer ?Oui, si la condition est fausse au depart
Une boucle REPETER peut-elle ne jamais s'executer ?Non, elle s'execute au moins une fois
Qu'est-ce qu'une boucle infinie ?Une boucle dont la condition d'arret n'est jamais satisfaite
A quoi sert un invariant ?A demontrer que la boucle est correcte

A retenir

  • POUR → nombre d'iterations connu
  • TANTQUE → condition d'entree
  • REPETER…JUSQU'A → condition de sortie
  • L'invariant demontre la correction d'un algorithme
  • Le tableau de trace suit l'evolution des variables

Exercices d'application

Exercice 1. Choisir la bonne bouclePour chacun de ces cas, indiquez la boucle adaptee et justifiez : lire 50 notes ; lire jusqu'a la valeur 0 ; demander un mot de passe jusqu'a ce qu'il soit correct ; afficher une table de multiplication.
Exercice 2. Tableau de traceDressez le tableau de trace de : s <- 1; Pour i de 1 a 5 Faire s <- s * i; FinPour. Que calcule cet algorithme ?
Exercice 3. InvariantPour l'algorithme qui cherche le maximum d'un tableau, enoncez l'invariant de boucle et verifiez les trois proprietes.

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