Mission Carthage

Accueil › Cours › Le choix multiple : Selon

Selon et match…case : choix multiple en algo et Python

Chapitre 13 · 3ème Maths, Sciences, Technique, 3ème SI, Bac Maths, Sciences, Technique, Bac SI

Choisis un traitement selon la valeur d'une variable, avec Selon en algorithme et match…case en Python.

Les leçons de ce chapitre

  1. Un cas par valeur
  2. Des intervalles de valeurs
  3. Selon avec des caractères

Leçon 13.1 : Un cas par valeur

8 min

La structure à choix multiple compare une seule variable (le sélecteur) à une liste de valeurs. Chaque valeur a son traitement. C'est plus clair qu'une longue chaîne de Sinon Si quand on teste toujours la même variable.

Astuce : Un seul cas est exécuté : le premier qui correspond. Il n'y a pas besoin de break comme dans d'autres langages.

Attention : Le sélecteur doit être un entier, un caractère ou une chaîne. On ne fait pas Selon sur une condition comme x > y.

En Python

Le menu d'un petit restaurant : le client tape un numéro, le programme affiche le plat et son prix.

print("1 : Lablabi, 2 : Fricassé, 3 : Brik")
choix = int(input())
match choix:
    case 1:
        print("Lablabi : 3 DT")
    case 2:
        print("Fricassé : 1 DT")
    case 3:
        print("Brik : 2 DT")
    case _:
        print("Choix invalide")

En algorithme

Le même menu avec Selon. Remarque Sinon pour tous les autres numéros.

Algorithme Menu
Début
  Ecrire("1 : Lablabi, 2 : Fricassé, 3 : Brik")
  Lire(choix)
  Selon choix
    1 : Ecrire("Lablabi : 3 DT")
    2 : Ecrire("Fricassé : 1 DT")
    3 : Ecrire("Brik : 2 DT")
    Sinon Ecrire("Choix invalide")
  FinSelon
Fin

TDO
Objet | Type/Nature
choix | Entier

Leçon 13.2 : Des intervalles de valeurs

9 min

Un cas de Selon peut couvrir un intervalle : 10..13 : … veut dire « de 10 à 13, bornes comprises ». C'est pratique pour des notes, des âges ou des tranches de prix.

En Python, un case peut avoir une garde : case _ if 10 <= note <= 13:. Le cas est choisi seulement si la condition après if est vraie. On peut aussi écrire la même chose avec if … elif … else.

Attention : Les intervalles ne doivent pas se chevaucher : avec 0..10 puis 10..13, la valeur 10 tombe dans le premier cas seulement. Vérifie chaque borne.

En Python

Une note entière sur 20 devient une appréciation. Les gardes if remplacent les intervalles.

note = int(input())
match note:
    case _ if 0 <= note <= 9:
        print("Insuffisant")
    case _ if 10 <= note <= 13:
        print("Moyen")
    case _ if 14 <= note <= 20:
        print("Bien")
    case _:
        print("Note invalide")

En algorithme

En algorithme, l'intervalle s'écrit directement avec deux points.

Algorithme Appreciation
Début
  Lire(note)
  Selon note
    0..9 : Ecrire("Insuffisant")
    10..13 : Ecrire("Moyen")
    14..20 : Ecrire("Bien")
    Sinon Ecrire("Note invalide")
  FinSelon
Fin

TDO
Objet | Type/Nature
note | Entier

Leçon 13.3 : Selon avec des caractères

9 min

Le sélecteur peut être un caractère ou une chaîne : un opérateur +, une lettre, une commande comme "haut". Les valeurs s'écrivent entre guillemets.

Selon ou Si généralisé ?

Astuce : Dans un cas, on peut mettre plusieurs instructions, et même un Si. Par exemple pour refuser une division par zéro.

En Python

Une calculatrice : on lit deux nombres et un opérateur. Le cas "/" contient un test pour éviter la division par zéro.

a = int(input())
op = input()
b = int(input())
match op:
    case "+":
        print(a + b)
    case "-":
        print(a - b)
    case "*":
        print(a * b)
    case "/":
        if b != 0:
            print(a / b)
        else:
            print("Division impossible")
    case _:
        print("Opérateur inconnu")

En algorithme

Les valeurs du sélecteur sont des caractères, donc entre guillemets.

Algorithme Calculatrice
Début
  Lire(a)
  Lire(op)
  Lire(b)
  Selon op
    "+" : Ecrire(a + b)
    "-" : Ecrire(a - b)
    "*" : Ecrire(a * b)
    "/" : Si b ≠ 0 Alors
            Ecrire(a / b)
          Sinon
            Ecrire("Division impossible")
          FinSi
    Sinon Ecrire("Opérateur inconnu")
  FinSelon
Fin

TDO
Objet | Type/Nature
a, b | Entier
op | Caractère

S'entraîner gratuitement

Chaque leçon a 3 exercices gratuits avec indices pour appliquer ce chapitre avec Hannibot.

Ouvrir le chapitre dans Mission Carthage Essayer dans le compilateur en ligne

← Chapitre précédent : Mise en forme : CSS · Chapitre suivant : Les tris →

Tous les chapitres · Voir les devoirs corrigés de 2ème TI

Cours écrit pour Mission Carthage d'après le programme officiel. Ton professeur reste la référence.