Switch (instruction)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Switch.

En programmation informatique, switch (« aiguillage » en anglais), parfois aussi select (comme en VB) ou inspect 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.

Fonctionnement[modifier | modifier le code]

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.

Lorsque le programme est aiguillé, il entre dans le bloc du switch et n'en sort que lorsqu'un break est rencontré, ou au début du cas suivant, selon le langage. Si la valeur de l'expression donnée ne correspond à aucun des cas, le 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é.

Conditions d'utilisation[modifier | modifier le code]

En C[modifier | modifier le code]

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.

En PHP[modifier | modifier le code]

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[modifier | modifier le code]

En Python, l'instruction switch n'existe pas ; il faut la remplacer par une suite de si/sinon, ou en passant par un lambda-calcul.

Syntaxe[modifier | modifier le code]

  • En PHP :
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).

Implémentation[modifier | modifier le code]

Si le nombre de valeurs est faible, l'instruction switch peut être convertie par le compilateur en une simple liste de comparaisons. Si le nombre de valeurs est élevé, le compilateur aura intérêt à générer une table de branchements.