Aller au contenu principal

switch. . .case

L'instruction switch . . .case est une sélection à n branches.

Elle est utilisée dans le cas où l'on doit vérifier si une variable ou une expression est égale à des valeurs déterminées. Les instructions à effectuer sont indiquées pour chacune des valeurs (case) de la variable ou de l'expression.

Le switch est un raccourci d'écriture d'un if imbriqué dont les conditions sont des comparaisons d'égalité sur la même variable ou expression.

Syntaxe de la structure switch

StructureExplications
switch (expression)
{
case constante :
instructions;
break;

[default :
instructions;
break;]
}
Les [ ] indiquent que cette section est facultative.

expression : sélecteur qui peut être de type entier ou de type chaîne

instruction(s): les instructions à exécuter lorsque le contrôle est transféré au case ou à default.

break : instruction de saut qui transfère le contrôle à la fin du switch.

Fonctionnement

  • Il peut y avoir un nombre quelconque d’étiquettes case.
  • Les étiquettes case ne peuvent pas avoir la même valeur.
  • L’instruction de saut break est nécessaire après chaque bloc.
  • Les étiquettes case sont exécutées dans l’ordre. Placer le cas qui se produit le plus souvent au début.
  • S’il n’y a pas d’étiquette default, le contrôle est transféré à l’extérieur du switch.
  • Il est possible d’empiler les étiquettes case. Voir les cas "Très Petit" et "Petit" dans l'exemple #1 ci-dessous.

Exemple #1

La comparaison est effectuée avec la variable choixGrandeur de type string.

Version switchVersion if
decimal cout = 0;
string choixGrandeur = "";
...
switch (choixGrandeur)
{
case "Très Petit" :
case "Petit" :
cout += 1.75;
break;
case "Moyen" :
cout += 2.25;
break;
case "Grand" :
cout += 3.75;
break;
default :
cout += 4.50;
break;
}//fin du switch
// Le switch est équivalent à la structure if imbriqué.

decimal cout =0;

if( choixGrandeur == "Très Petit" || choixGrandeur == "Petit" )
cout += 1.75;
else if ( choixGrandeur == "Moyen" )
cout += 2.25;
else if ( choixGrandeur == "Grand" )
cout += 3.75;
else
cout += 4.50;

Exemple #2

La comparaison est effectuée avec la variable choix de type int.

Version switchVersion if
decimal prixItem = 0;
int quantite = 0;
...
switch ( choix )
{
case 0 :
prixItem = 0.40m;
quantite = 150;
break;
case 1 :
prixItem = 0.50m;
quantite = 250;
break;
case 2 :
prixItem = 0.60m;
quantite = 350;
break;
case 3 :
prixItem = 0.70m;
quantite = 450;
break;
}//fin du switch
// Le switch est équivalent un if imbriqué.

decimal prixItem = 0;
int quantite = 0;

if( choix == 0 )
{
prixItem = 0.40m;
quantite = 150;
}
else if ( choix == 1 )
{
prixItem = 0.50m;
quantite = 250;
}
else if ( choix == 2 )
{
prixItem = 0.60m;
quantite = 350;
}
else if ( choix == 3 )
{
prixItem = 0.70m;
quantite = 450;
}

Exemple #3

La comparaison est effectuée avec la variable cote de type char.

Version switchVersion if
char cote;
...
switch ( cote )
{
case 'A' :
Console.WriteLine("Excellent!");
break;
case 'B' :
Console.WriteLine("C'est bien!");
break;
case 'C' :
case 'D' :
Console.WriteLine("Passable...");
break;
case 'E' :
Console.WriteLine("Échec!");
break;
}//fin du switch
// Le switch est équivalent un if imbriqué.

if( cote == 'A' )
{
Console.WriteLine("Excellent!");
}
else if ( cote == 'B' )
{
Console.WriteLine("C'est bien!");
}
else if ( cote == 'C' || cote == 'D' )
{
Console.WriteLine("Passable...");
}
else if ( cote =='E' )
{
Console.WriteLine("Échec!");
}