Aller au contenu principal

Module 02 · Leçon 2

Conditionnelles généralisée et à choix

180 minanalyse · pascal
Affichage du code

Ce que vous saurez faire

  • Écrire une cascade Si…Sinon Si…Sinon
  • Utiliser la structure Selon pour des choix multiples
  • Choisir la bonne structure selon le nombre de cas

Avant de commencer

Vous voulez afficher la mention en fonction de la note. Avec Si...Sinon imbriqué, le code devient illisible dès 3-4 cas. Existe-t-il une structure plus claire ?


1. La conditionnelle généralisée : Si…Sinon Si…Sinon

Si note >= 16 Alors
  mention ← "Très Bien"
Sinon Si note >= 14 Alors
  mention ← "Bien"
Sinon Si note >= 12 Alors
  mention ← "Assez Bien"
Sinon Si note >= 10 Alors
  mention ← "Passable"
Sinon
  mention ← "Recalé"
FinSi

2. La structure à choix : Selon

Quand on compare une même variable à plusieurs valeurs précises, Selon (CASE en Pascal) est plus lisible.

Selon jour Faire
  1, 2, 3, 4, 5 : Ecrire("Semaine")
  6, 7 : Ecrire("Week-end")
  Sinon : Ecrire("Jour invalide")
FinSelon

Règles importantes

  1. La variable testée doit être de type ordinal (entier, caractère, booléen, énuméré). Pas de réel, pas de chaîne.
  2. Les branches sont exclusives : une seule s'exécute.
  3. On peut grouper des valeurs avec , ou des intervalles avec .. (Pascal accepte 1..5).
CASE c OF
  'a'..'z', 'A'..'Z' : Writeln('Lettre');
  '0'..'9'           : Writeln('Chiffre');
ELSE
  Writeln('Autre');
END;

3. Quand utiliser quoi ?

SituationStructure
2 casSi…Sinon
Plusieurs intervalles >=Si…Sinon Si…Sinon
Plusieurs valeurs précises (énuméré, entier petit)Selon
Type réel ou chaîneSi (Selon interdit)

4. Exercices

Exercice 1facile
Saison

Lire un mois (1 à 12), afficher la saison. Décembre, Janvier, Février = Hiver ; Mars-Mai = Printemps ; Juin-Août = Été ; Septembre-Novembre = Automne.

Voir le corrigé
CASE mois OF
  12, 1, 2 : Writeln('Hiver');
  3..5     : Writeln('Printemps');
  6..8     : Writeln('Été');
  9..11    : Writeln('Automne');
ELSE
  Writeln('Mois invalide');
END;
Exercice 2moyen
Tarif piscine (type bac courant)

Calculer le tarif d'entrée à la piscine selon l'âge :

  • 0..5 : gratuit
  • 6..12 : 2 DT
  • 13..17 : 4 DT
  • 18..64 : 6 DT
  • 65 et plus : 3 DT
Voir le corrigé
PROGRAM Piscine;
VAR
  age : integer;
  tarif : real;
BEGIN
  Write('Âge : ');
  Readln(age);
  CASE age OF
    0..5   : tarif := 0;
    6..12  : tarif := 2;
    13..17 : tarif := 4;
    18..64 : tarif := 6;
  ELSE
    tarif := 3; { 65 et plus }
  END;
  Writeln('Tarif : ', tarif:3:2, ' DT');
END.
Exercice 3difficile
Voyelle, consonne ou autre (hors bac, bonus)

Lire un caractère, indiquer s'il s'agit d'une voyelle, d'une consonne ou d'un autre caractère. Gérer majuscules et minuscules.

Voir le corrigé
PROGRAM Lettre;
VAR
  c : char;
BEGIN
  Readln(c);
  CASE c OF
    'a', 'e', 'i', 'o', 'u', 'y',
    'A', 'E', 'I', 'O', 'U', 'Y' : Writeln('Voyelle');
    'b'..'d', 'f'..'h', 'j'..'n', 'p'..'t', 'v'..'x', 'z',
    'B'..'D', 'F'..'H', 'J'..'N', 'P'..'T', 'V'..'X', 'Z' : Writeln('Consonne');
  ELSE
    Writeln('Autre');
  END;
END.

5. Erreurs fréquentes au bac

  • Utiliser Selon sur une variable réelle → erreur de compilation.
  • Oublier Sinon (ou ELSE Pascal) → cas non couverts silencieusement.
  • Mauvais ordre des conditions dans Sinon Si (du plus restrictif au moins).

6. Quiz

Quiz (5 questions)

1

La structure Selon (CASE) accepte une variable de type :

2

Pour gérer les notes >= 10 et plusieurs intervalles, on préfère :

3

Que se passe-t-il si aucune branche d'un CASE ne matche et qu'il n'y a pas de ELSE ?

4

En Pascal, peut-on écrire `CASE moyenne OF 10..20 : ...` ?

5

Dans `Si note >= 10 Sinon Si note >= 14`, où est l'erreur ?

Bravo d'être arrivé jusqu'ici. Marquez la leçon terminée pour ancrer le progrès.