Comment utiliser l’instruction switch en C (avec exemples et pièges courants)

1. Introduction

L’instruction switch est un outil puissant et pratique couramment utilisé en programmation pour simplifier le branchement conditionnel. Dans le langage de programmation C, l’utilisation d’une instruction switch aide à organiser plusieurs options de manière plus claire, rendant le code plus lisible et réduisant les risques de bugs. Dans cet article, nous parcourrons les bases et les utilisations pratiques de l’instruction switch en C, avec des exemples de code réels.

2. Qu’est‑ce qu’une instruction switch en C ?

Une instruction switch est une structure de contrôle qui compare une variable spécifique à plusieurs valeurs et exécute le bloc de code correspondant. Elle est particulièrement utile lorsque les conditions sont définies par des nombres ou des types énumérés (enum). Par exemple, vous pouvez utiliser une instruction switch pour écrire un programme simple et propre qui effectue différentes actions en fonction de la sélection du menu par l’utilisateur.

switch (condition) {
case value1:
// Process for value1
break;
case value2:
// Process for value2
break;
default:
// Process if no value matches
}

Dans cette syntaxe, l’expression à l’intérieur de switch est évaluée, et le bloc de code correspondant au case approprié est exécuté. Si aucun des cas ne correspond, le bloc default s’exécute, vous permettant de gérer les valeurs inattendues de manière élégante.

侍エンジニア塾

3. Syntaxe de base de l’instruction switch

Examinons un exemple basique. Le programme suivant affiche un message en fonction de la valeur d’un lancer de dé.

int main(void) {
int dice = 3;
switch (dice) {
case 1:
printf("Rolled a 1.");
break;
case 2:
printf("Rolled a 2.");
break;
case 3:
printf("Rolled a 3.");
break;
case 4:
printf("Rolled a 4.");
break;
case 5:
printf("Rolled a 5.");
break;
case 6:
printf("Rolled a 6.");
break;
default:
printf("Invalid roll.");
break;
}
return 0;
}

Dans cet exemple, si la valeur de dice est 3, le programme affiche « Rolled a 3 ». Si une valeur invalide est fournie, le bloc default la gère en affichant « Invalid roll », assurant ainsi une gestion correcte des erreurs.

4. Exemple d’utilisation : sélection de menu avec switch

L’instruction switch est particulièrement efficace lorsqu’il s’agit de gérer différentes actions selon l’entrée de l’utilisateur. Dans l’exemple suivant, le programme affiche un message correspondant à l’aliment sélectionné.

int main(void) {
int choice;
printf("Menu:");
printf("1. Hamburger");
printf("2. Pizza");
printf("3. Pasta");
printf("Please select a number: ");
scanf("%d", &choice);

switch (choice) {
    case 1:
        printf("You selected Hamburger.");
        break;
    case 2:
        printf("You selected Pizza.");
        break;
    case 3:
        printf("You selected Pasta.");
        break;
    default:
        printf("Invalid selection.");
        break;
}
return 0;
}

Ce programme montre un message différent selon le choix du menu de l’utilisateur. En utilisant une instruction switch, le code devient plus simple, plus lisible et plus facile à maintenir.

5. Switch vs. instructions if : laquelle choisir ?

Les instructions switch et if sont toutes deux utilisées pour le branchement conditionnel, mais il existe des différences clés quant au moment où l’une ou l’autre est la plus appropriée.

Quand utiliser une instruction switch :

  • Lorsque vous comparez des valeurs fixes et effectuez un branchement en fonction de celles‑ci (par ex. sélection de menu, codes d’état).
  • Lorsque les conditions sont simples et que vous souhaitez exécuter différentes actions selon des valeurs spécifiques.

Quand utiliser une instruction if :

  • Lorsque la condition implique une logique plus complexe (par ex. vérifications d’intervalle, inégalités).
  • Lorsque les conditions sont basées sur des expressions logiques ou impliquent plusieurs variables.

Bien que switch soit idéal pour des conditions basées sur des valeurs simples, if offre plus de flexibilité pour gérer des expressions complexes. Il est important de choisir la bonne instruction en fonction de la situation.

6. Erreurs courantes et comment les éviter

Voici quelques erreurs fréquentes lors de l’utilisation des instructions switch et comment les prévenir.

1. Oublier l’instruction break (causant le passage au cas suivant)
Si vous omettez l’instruction break, le code continuera à s’exécuter dans le cas suivant même s’il ne correspond pas. On appelle cela un « fall‑through ». À moins que vous ne vouliez ce comportement, incluez toujours un break à la fin de chaque bloc case.

2. Ne pas utiliser le cas default
Lorsqu’il existe une possibilité d’entrée utilisateur ou de valeurs inattendues, inclure un cas default aide à gérer les erreurs plus sûrement. Cela réduit le risque que le programme se comporte de manière imprévisible.

7. Utilisation avancée : instructions switch avec des énumérations

Une façon puissante d’améliorer votre utilisation des instructions switch consiste à les combiner avec les énumérations (types énumérés). Les énumérations vous permettent de définir des noms significatifs au lieu de nombres bruts, rendant votre code plus intuitif et plus facile à comprendre.

enum Fruit { APPLE, BANANA, ORANGE };
int main(void) {
enum Fruit fruit = BANANA;
switch (fruit) {
    case APPLE:
        printf("You selected Apple.");
        break;
    case BANANA:
        printf("You selected Banana.");
        break;
    case ORANGE:
        printf("You selected Orange.");
        break;
    default:
        printf("Invalid selection.");
        break;
}
return 0;
}

Dans cet exemple, une enum est utilisée pour définir les options de fruits, et une instruction switch se ramifie en fonction du fruit sélectionné. Utiliser les énumérations de cette manière améliore à la fois la lisibilité et la maintenabilité de votre code.

8. Résumé

En programmation C, l’instruction switch est très efficace lorsqu’il s’agit de conditions basées sur des valeurs spécifiques. Comparé aux instructions if, le switch est mieux adapté aux branchements simples basés sur des valeurs. Il vous permet d’écrire du code efficace tout en conservant la lisibilité.

Utilisez les instructions switch dans votre programmation pour créer un code plus propre et plus structuré — surtout dans les situations où plusieurs options distinctes doivent être gérées. Avec une utilisation réfléchie, votre code deviendra plus élégant et plus facile à maintenir.