Aller au contenu principal

Module 02 · Leçon 1

Structure conditionnelle : l'alternative

180 minanalyse · pascal
Affichage du code

Ce que vous saurez faire

  • Écrire une instruction Si…Alors…Sinon
  • Évaluer une condition booléenne composée
  • Imbriquer plusieurs conditionnelles

Avant de commencer

Tout programme a besoin de prendre des décisions : si la moyenne est supérieure à 10, l'élève est reçu, sinon il est recalé. Comment exprimer cela dans un algorithme ?


1. La structure Si…Alors…Sinon

Si moyenne >= 10 Alors
  Ecrire("Reçu")
Sinon
  Ecrire("Recalé")
FinSi

Variante : Si sans Sinon

Si stock = 0 Alors
  Ecrire("Rupture de stock")
FinSi

Quand on ne veut rien faire dans le cas faux, on omet le Sinon.


2. Conditions composées

Une condition peut combiner plusieurs tests avec les opérateurs logiques :

AlgoPascalSens
ETANDLes deux conditions doivent être vraies
OUORAu moins une des deux doit être vraie
NONNOTInverse la valeur

Exemple : tester une plage

Si (note >= 0) ET (note <= 20) Alors
  Ecrire("Note valide")
Sinon
  Ecrire("Note invalide")
FinSi

3. Imbrication

Quand il y a plus de deux cas, on peut imbriquer :

Si note >= 16 Alors
  Ecrire("Très Bien")
Sinon
  Si note >= 14 Alors
    Ecrire("Bien")
  Sinon
    Si note >= 12 Alors
      Ecrire("Assez Bien")
    Sinon
      Ecrire("Passable ou recalé")
    FinSi
  FinSi
FinSi

C'est lisible mais l'imbrication profonde vite illisible. La leçon suivante introduit la conditionnelle généralisée qui résout ce problème.


4. Exercices

Exercice 1facile
Plus grand de deux

Lire deux entiers a et b, afficher le plus grand.

Voir le corrigé
PROGRAM PlusGrand;
VAR
  a, b : integer;
BEGIN
  Readln(a, b);
  IF a > b THEN
    Writeln('Le plus grand : ', a)
  ELSE
    Writeln('Le plus grand : ', b);
END.
Exercice 2moyen
Année bissextile (type bac courant)

Une année est bissextile si elle est divisible par 4 et non divisible par 100, ou bien divisible par 400. Écrire un programme qui lit une année et indique si elle est bissextile.

Voir le corrigé
PROGRAM Bissextile;
VAR
  a : integer;
  bis : boolean;
BEGIN
  Write('Année : ');
  Readln(a);
  bis := ((a MOD 4 = 0) AND (a MOD 100 <> 0)) OR (a MOD 400 = 0);
  IF bis THEN
    Writeln(a, ' est bissextile')
  ELSE
    Writeln(a, ' n''est pas bissextile');
END.
Exercice 3difficile
Triangle (hors bac, bonus)

Lire trois entiers strictement positifs a, b, c. Indiquer si on peut former un triangle (somme de deux côtés > troisième), et si oui s'il est équilatéral, isocèle ou quelconque.

Voir le corrigé
PROGRAM Triangle;
VAR
  a, b, c : integer;
BEGIN
  Readln(a, b, c);
  IF (a + b <= c) OR (b + c <= a) OR (a + c <= b) THEN
    Writeln('Pas un triangle')
  ELSE
  BEGIN
    IF (a = b) AND (b = c) THEN
      Writeln('Équilatéral')
    ELSE IF (a = b) OR (b = c) OR (a = c) THEN
      Writeln('Isocèle')
    ELSE
      Writeln('Quelconque');
  END;
END.

5. Erreurs fréquentes au bac

  • Mettre un ; avant ELSE en Pascal → erreur de compilation.
  • Oublier les parenthèses autour des sous-conditions composées.
  • Confondre = (égalité) et := (affectation).
  • Ne pas couvrir le cas frontière (>= vs >).

6. Quiz

Quiz (5 questions)

1

Que vaut `(5 > 3) ET (2 = 2)` ?

2

En Pascal, l'instruction correcte est :

3

Quelle expression teste si `x` est dans `[0, 100]` ?

4

Que fait `Si NON (a > b) Alors Ecrire(b)` ?

5

Combien de cas distincts peut-on gérer avec un Si...Sinon imbriqué de profondeur 2 ?

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