5.2.3 Le choix multiple : l'instruction switch

Icône de l'outil pédagogique Le choix multiple : l'instruction switch

Il est utile de pouvoir choisir un traitement parmi plusieurs en fonction de la valeur d'une variable entière. S'il n'existe que deux actions possibles, l'instruction if ... else convient très bien. Sinon, un aiguillage direct vers le traitement voulu peut souvent être réalisé à l'aide de l'instruction switch.

La différence avec if… else if…else est qu’avec switch, la condition d’aiguillage doit porter sur la comparaison d’une variable entière avec des valeurs constantes, et non sur une condition quelconque (l’aiguillage en fonction de conditions comme delta>0, delta<0 ou mesure==0.0, doit être réalisés avec if…else if)

La syntaxe de l'instruction switch est :

switch( expr ) Les instructions entre crochets sont optionnelles

{
case constante_1 : [suite d'instructions 1 ;]
[break ;]
case constante_2 : [suite d'instructions 2 ;]
[break ;]
...
case constante_n : [suite d'instructions n ;]
[break ;]
[ default : suite d'instructions ]
}

 

L'aiguillage se fait en fonction de la valeur de l'expression expr : celle‐ci doit être de type entier ou caractère (rappel : un caractère est un cas particulier d'entier).

Notez que si le choix ne se fait pas en fonction d'une expression entière, il faut recourir au if ‐ else if ‐ else if vu précédemment.

Si la valeur entière de expr correspond à une des constantes entières constante_i, le traitement correspondant est exécuté. Sinon, le traitement par défaut default est utilisé.

Effectuez l'aiguillage en fonction d'une variable entière plutôt que d'une expression : switch(choix) est préférable à switch(2*k+1)

 

Exemple 34 : Utilisation de l’aiguillage switch :


Après un case, la suite d'instructions est optionnelle. Plusieurs valeurs distinctes peuvent ainsi donner accès à une même suite d'instructions :

Exemple 35 : Réunir des traitements communs avec switch

Dans cet exemple, instructions 2 sera exécutée si expr vaut 2, 4 ou 5.

L'instruction break est le seul moyen de sortir du switch quand le traitement relatif à une valeur a été exécuté : break fait passer à l'instruction qui suit le switch. Sans un break après instruction 1 dans l'exemple précédent, instruction 2 aurait été exécutée à la suite d'instruction 1.

L'exemple suivant illustre une utilisation très fréquente de l'instruction switch : l'écriture de menus. L'itération do ... while permet de revenir au menu à la fin du traitement d'une option et gère les mauvaises réponses de l'utilisateur. (debug)

 

Exemple 36 : Utilisation de switch pour écrire un menu :