Conditions Bac 2026

Séance 2 : Structures conditionnelles & Choix multiples

Objectifs : Structures Si (simple, alternative, généralisée), Selon / match-case et opérateurs relationnels / logiques.
Phase {{ currentPhase === 'all' ? 'Toutes' : currentPhase + ' / ' + phases.length }}
Phase active :
{{ currentPhase === 'all' ? 'Vue complète (Toutes les phases)' : phases[currentPhase - 1].title }}
Étape 1

Situation & Simulateur (Tarif d'accès)

15 minutes
Énoncé de la situation-problème
Complexe Sportif

Un complexe sportif souhaite automatiser la facturation d'un accès journalier dont le tarif de base est fixé à 20 DT.

Le client indique son âge (entier positif) et choisit une formule via un code caractère (majuscule ou minuscule) :

  • Formule Piscine ('P' ou 'p') : supplément de +5 DT.
  • Formule Musculation ('M' ou 'm') : supplément de +10 DT.
  • Formule Accès Total ('T' ou 't') : supplément de +15 DT.
  • Tout autre code : la formule est considérée comme invalide.

Si la formule est valide, le prix brut est calculé par : Prix brut = 20 DT + Supplément. Une remise selon l'âge est ensuite appliquée pour obtenir le montant net à payer :

  • Moins de 12 ans (< 12) : Gratuit (remise de 100%, net = 0 DT).
  • De 12 à 17 ans inclus : Réduction de 50% (prix_net = prix_brut * 0.5).
  • 60 ans et plus (≥ 60) : Réduction de 20% (prix_net = prix_brut * 0.8).
  • De 18 à 59 ans : Plein tarif (sans remise, prix_net = prix_brut).
Illustration du Complexe Sportif (Piscine et Musculation)
Accès Journalier : Piscine | Muscu | Total
Travail demandé : Écrire l'algorithme (puis le programme Python correspondant) permettant de saisir l'âge et la formule, puis de calculer et d'afficher le montant net à payer (en DT), ou le message d'erreur "Formule invalide !" si le code est non reconnu.
1. Formules & Suppléments :
  • 'P'Piscine
    +5 DT
  • 'M'Musculation
    +10 DT
  • 'T'Total
    +15 DT
  • AutreInvalide
    Erreur
Prix brut = 20 DT + Supplément.
2. Remises par Âge :
  • < 12 ansEnfant
    Gratuit
  • 12 à 17 ansJunior
    -50%
  • ≥ 60 ansSenior
    -20%
  • 18 à 59 ansAdulte
    Plein tarif
Structure : Si ... Sinon Si ... Sinon.
Simulateur : Arbre de décision
Profils :
age = ans
Saisie :
Branche A : Formule (match / Selon)
case "P" | "p": → +5 DT (Piscine)
Active
case "M" | "m": → +10 DT (Muscu)
Active
case "T" | "t": → +15 DT (Total)
Active
case _: (Sinon) → Invalide (Erreur)
Erreur
Branche B : Remise selon l'âge (if-elif-else / Sinon Si)
if age < 12: → Gratuit
Active
elif 12 ≤ age ≤ 17: → -50%
Active
elif age ≥ 60: → -20%
Active
else: → Plein tarif
Active
Détail du calcul :
Tarif de base : 20.0 DT
Formule : {{ formuleNom }}
Validité : {{ isFormuleValid ? 'Vrai' : 'Faux' }}
Prix brut : {{ isFormuleValid ? (prixBrut + '.0 DT') : '—' }}
Remise : {{ isFormuleValid ? reductionLabel : '—' }}
Net à payer : {{ isFormuleValid ? prixNetFormatted : 'Erreur' }}
Sortie console
{{ terminalOutput }}
Questions orales :
{{ q.question }}
Algo :
{{ q.algoAns }}
Python :
{{ q.pyAns }}
Étape 2

Structures conditionnelles & Opérateurs

15 minutes
Vue d'ensemble : Les 4 Structures Conditionnelles Organigrammes décisionnels
Infographie didactique des 4 structures conditionnelles : Forme simple, Forme alternative, Forme généralisée, Choix multiple (Selon / match-case)
De gauche à droite : 1. Forme simple • 2. Forme alternative (if-else) • 3. Forme généralisée (if-elif-else) • 4. Choix multiple (Selon / match-case)
Structure / Opération Algorithmique Python (3.10+)
Forme simple
Si Condition Alors
    Traitement
FinSi
if Condition:
    Traitement
Forme alternative
Si Condition Alors
    Traitement1
Sinon
    Traitement2
FinSi
if Condition:
    Traitement1
else:
    Traitement2
Forme généralisée
Si C1 Alors
    Traitement1
Sinon Si C2 Alors
    Traitement2
Sinon
    TraitementN
FinSi
if C1:
    Traitement1
elif C2:
    Traitement2
else:
    TraitementN
Choix multiple
Valeurs & Intervalles
Selon Sélecteur
    val1, val2 : T1
    v_min .. v_max : T2
    Sinon
        TN
Fin Selon
match Sélecteur:
    case val1 | val2:
        T1
    case s if v_min <= s <= v_max:
        T2
    case _:
        TN
Opérateurs logiques
Non, Et, Ou
not, and, or
Comparaisons & Appartenance
= , ≠ , < , ≤ , > , ≥ , ∈
== , != , < , ≤ , > , ≥ , in
Exemple d'intervalle dans un Selon (Tranches de valeurs) Intervalle : ..

En algorithmique, un intervalle s'écrit avec deux points borne_min .. borne_max (bornes incluses). En Python (match-case), on utilise une condition de garde (case x if ...:).

Algorithmique :
Selon note
    0 .. 9 : Écrire("Insuffisant")
    10 .. 13 : Écrire("Moyen")
    14 .. 16 : Écrire("Bien")
    17 .. 20 : Écrire("Très Bien")
    Sinon
        Écrire("Note invalide")
Fin Selon
Python (3.10+) :
match note:
    case n if 0 <= n <= 9:
        print("Insuffisant")
    case n if 10 <= n <= 13:
        print("Moyen")
    case n if 14 <= n <= 16:
        print("Bien")
    case n if 17 <= n <= 20:
        print("Très Bien")
    case _:
        print("Note invalide")
À retenir :
  • Selon : Le sélecteur doit être un Entier ou un Caractère.
  • Clause par défaut : case _ : en Python correspond au Sinon du Selon.
  • Indentation : 4 espaces obligatoires en Python (remplace FinSi / Fin Selon).
Égalité : = vs ==

En algo : = (affectation : ←). En Python : == (affectation : =).

valide ← (age = 18)
valide = (age == 18)
Choix multiple (|)

En Python, séparer les options d'un case par | (et non une virgule).

case "P" | "p":  # Correct
# Erreur : case "P", "p":
Encadrement

En algo : avec Et. En Python : comparaison chaînée directe.

(age ≥ 12) Et (age ≤ 17)
12 <= age <= 17
Étape 3

Bilan & Auto-évaluation (Questions flash & Quiz)

5 minutes
Questions Flash :
{{ f.expr }}
Afficher la réponse
Algo : {{ f.resAlgo }}
{{ f.resPy }}
{{ f.type }}

Quiz d'auto-évaluation

Testez vos acquis sur les conditions, match-case et opérateurs logiques.
Score : {{ quizScore }} / {{ quizQuestions.length }}
Q{{ idx + 1 }}. {{ q.question }}
{{ opt }}
Explication : {{ q.explanation }}
Séance 2 terminée !