Cet article est une ébauche concernant l’informatique.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

En programmation informatique, switch (« aiguillage » en anglais), parfois aussi select (comme en VB) ou inspect ou case of (Pascal, Modula 2) ou Match (Rust et Python) est une instruction qui permet d'effectuer un branchement à partir de la valeur d'une variable. Elle peut dans certains cas remplacer une série (souvent peu élégante) de ifelse. On l'utilise lorsque les cas à gérer sont nombreux.

Ce mécanisme est préfiguré dans les années 1960 par les branchements calculés.

Fonctionnement

Switch évalue l'expression qui lui est donnée et aiguille le programme vers le cas correspondant à la valeur effective de cette expression. Les cas sont indiqués par l'instruction case.

Justification

Ce genre de constructions a été introduit pour

Conditions d'utilisation

En C

En C, les switch s'appuient sur une valeur entière ou de type énuméré. Les valeurs d'aiguillage doivent être des nombres entiers (attention, impossible d'utiliser une variable, même constante ; ces entiers peuvent cependant être cachés derrière des macros) ou des énumérateurs.

Lorsque le programme est aiguillé, il entre dans le bloc du switch et n'en sort que lorsqu'un break est rencontré. Si la valeur de l'expression donnée ne correspond à aucun des cas, le pointeur programme est aiguillé vers l'instruction default qui doit apparaître après tous les case. Si le bloc n'en possède pas, il est sauté.

En Pascal

En Pascal, l'instruction case teste des conditions à valeurs booléennes, des entiers, des chaînes de caractères ou des énumérateurs. Au premier sélecteur amorcé, l'instruction correspondante (délimitée par un bloc BEGIN END) est exécutée et le pointeur programme passe à l'instruction qui suit tout le bloc case ; contrairement au switch du langage C, les différentes clauses sont donc mutuellement exclusives.

En PHP

En PHP, switch fonctionne tant que l'égalité peut être vérifiée entre la variable testée et les valeurs des cas.

En Python

En Python, l'instruction switch existe à partir de la mise à jour 3.10 sous le nom de match.

Voir aussi

Niklaus Wirth, 1985, Algorithms and data structures. Prentice Hall 1985, (ISBN 978-0-13-022005-9).

Niklaus Wirth, 1984, (trad.  Jacques André), Programmer en Modula 2, Presses Polytechniques et Universitaires Romandes, Lausanne (ISBN 2-88074-063-0)

Syntaxe

switch (variable) {
    case "valeur1": action1; break;
    case "valeur2": action2; break;
    case "valeur3": action3; break;
    case "valeur4": action4; break;
    default: actionpardefaut;
}

La syntaxe est identique en C (sauf pour ce qui est des chaînes de caractères).

En C on aurait donc :

switch(x) // x doit obligatoirement être un entier, les printf sont des exemples d'instructions
{
case 1: printf(" nous sommes dans le cas où x = 1"); break;
case 2: printf(" nous sommes dans le cas où x = 2"); break;
case 3: printf(" nous sommes dans le cas où x = 3"); break;
case 4: printf(" nous sommes dans le cas où x = 4"); break;
}

Implémentation

« Python 3.10 ».