Aller au contenu
M02 · B. Formuler un traitement

Conditions et boucles : Si, TantQue, Pour

Écrire des traitements alternatifs (Si ... Sinon) et itératifs (TantQue, Pour, Répéter), et suivre leur exécution dans une table de trace.

1Situer

Un club de sport veut un petit outil pour ses entraîneurs : additionner les points marqués par un joueur sur N matchs, dire si un numéro de maillot est pair ou impair pour former deux équipes, et afficher une table de multiplication pour les plus jeunes. Trois besoins, trois structures.

2Comprendre

La boucle TantQue, tour par tour
vrai faux S ← 0 ; I ← 1 I <= 3 ? S ← S + I I ← I + 1 Ecrire(S) VARIABLES I = 1 S = 0 tour 0 Console : 6

Initialisation : S ← 0 et I ← 1.

1 / 9

Un algorithme combine trois types de traitement : séquentiel (les instructions dans l’ordre), alternatif (un choix) et itératif (une répétition).

Le traitement alternatif : Si

Si r = 1 Alors
  EcrireAvecSaute(n, " est impair")
Sinon
  EcrireAvecSaute(n, " est pair")
FinSi

La condition est une expression qui vaut vrai ou faux. On peut combiner des conditions avec Et, Ou, Non, et enchaîner plusieurs cas avec SinonSi. Pour comparer une variable à une liste de valeurs, Selon est plus lisible.

Les traitements itératifs : les boucles

BoucleQuand l’utiliserCondition testée
TantQue ... FinTantQueon ne sait pas combien de toursavant chaque tour
Pour i ← 1 jusqu'à N ... FinPourle nombre de tours est connucompteur automatique
Répéter ... Jusqu'àau moins un tour (saisie contrôlée)après chaque tour

Les pièges classiques

  1. La boucle infinie : si rien ne change dans la condition (I jamais augmenté), la boucle ne s’arrête pas.
  2. Le décalage d’un tour : I < N au lieu de I <= N oublie le dernier élément.
  3. L’initialisation oubliée : une somme doit partir de 0, un produit de 1.

La table de trace sous la simulation note chaque pas : instruction, valeurs des variables, résultat des conditions. C’est exactement ce qu’on vous demande de faire sur papier à l’examen.

Exemple simple

Remplir une bouteille au robinet

Tant que la bouteille n'est pas pleine, on laisse couler. C'est une boucle TantQue : on vérifie la condition avant chaque tour, et on s'arrête dès qu'elle devient fausse.

TantQue bouteille non pleine Faire
    laisser couler
FinTantQue
Exemple simple

Le tarif du hammam (Si … Sinon)

Un enfant de moins de 12 ans paie 10 DH, un adulte 20 DH. Selon l'âge, on prend un chemin ou l'autre, jamais les deux.

Si age < 12 Alors
    prix ← 10
Sinon
    prix ← 20
FinSi

3Manipuler

Lancez « Pas à pas », saisissez N = 3, puis avancez ligne par ligne. Regardez la condition I <= N être testée avant chaque tour, et la table de trace se remplir.
Autres exemples :Plein écran

4Pratiquer

Exercice 1 · Mention d'un stagiaire

Lisez une moyenne sur 20 et affichez la mention : « Très bien » (≥ 16), « Bien » (≥ 14), « Assez bien » (≥ 12), « Passable » (≥ 10), sinon « Non admis ».

Voir un indice

Utilisez SinonSi pour enchaîner les tests du plus grand au plus petit seuil.

Voir le corrigé
Algorithme Mention
Variables
  moy : réel
Début
  Ecrire("Moyenne : ")
  Lire(moy)
  Si moy >= 16 Alors
    EcrireAvecSaute("Très bien")
  SinonSi moy >= 14 Alors
    EcrireAvecSaute("Bien")
  SinonSi moy >= 12 Alors
    EcrireAvecSaute("Assez bien")
  SinonSi moy >= 10 Alors
    EcrireAvecSaute("Passable")
  Sinon
    EcrireAvecSaute("Non admis")
  FinSi
Fin

Exercice 2 · Factorielle avec Pour

Lisez un entier n positif et calculez n! = 1 × 2 × ... × n avec une boucle Pour. Vérifiez dans l'atelier que 5! = 120.

Voir le corrigé
Algorithme Factorielle
Variables
  n, i, f : entier
Début
  Ecrire("n = ")
  Lire(n)
  f ← 1
  Pour i ← 1 jusqu'à n Faire
    f ← f * i
  FinPour
  EcrireAvecSaute(n, "! = ", f)
Fin

Exercice 3 · Saisie contrôlée

Demandez une note jusqu'à ce qu'elle soit comprise entre 0 et 20, puis affichez-la. Quelle boucle convient le mieux ?

Voir un indice

La saisie doit avoir lieu au moins une fois.

Voir le corrigé
Algorithme NoteValide
Variables
  note : réel
Début
  Répéter
    Ecrire("Note (0 à 20) : ")
    Lire(note)
  Jusqu'à note >= 0 Et note <= 20
  EcrireAvecSaute("Note retenue : ", note)
Fin

5Vérifier

1. Avec S ← 0, I ← 1 et TantQue I <= 3 (S ← S + I, I ← I + 1), combien de fois le corps de la boucle s'exécute-t-il ?
2. Quelle boucle exécute toujours son corps au moins une fois ?
3. Quand préférer Pour à TantQue ?
4. Que vaut 17 Mod 5 ?