Cours 5.6. Le break dans les switchs

Dans le cours précédent sur le switch..case, vous avez probablement remarqué que chaque cas se termine avec l'instruction break. Cette instruction met un terme à l'exécution du cas et quitte l'instruction switch.

Lorsque le break est omis, tous les cas sont exécutés (même si le test est faux) jusqu'à ce que :

Exemple

Considérons l'exemple suivant où le développeur a oublié de mettre les break :

switch (code) {
  case 1 : printf ("Canada");
  case 32 : printf ("Belgique");
  case 33 : printf ("France");
  case 41 : printf ("Suisse");
  default : printf ("Code non reconnu");
}

Exercices

Exercice 1

Modifier le code de l'exercice précédent afin qu'il puisse convertir des caractères majuscules et des minuscules. Soyez malin et utilisez les notions de ce cours.

// Caractère à convertir
char hex = 'f';
// Résultat en base 10
short dec;

// Convertit le caractère hexadécimal en base 10
// MODIFIER LE SWITCH..CASE 
// POUR ACCEPTER LES CARACTÈRES MINUSCULES
switch (hex) {
    case '0': dec=0; break;
    case '1': dec=1; break;
    case '2': dec=2; break;
    case '3': dec=3; break;
    case '4': dec=4; break;
    case '5': dec=5; break;
    case '6': dec=6; break;
    case '7': dec=7; break;
    case '8': dec=8; break;
    case '9': dec=9; break;
    case 'A': dec=10; break;
    case 'B': dec=11; break;
    case 'C': dec=12; break;
    case 'D': dec=13; break;
    case 'E': dec=14; break;
    case 'F': dec=15; break;
    default : dec = -1;
}

// Affiche le résultat de la conversion
if (dec==-1) printf ("Conversion non valide\n");
else printf ("0x%c = %d en décimal\n", hex, dec);

Voici l'affichage attendu pour char hex = 'f'; :

0xf = 15 en décimal

Exercice 2

En utilisant un switch..case, écrire un programme qui affiche si la variable lettre est une consomme ou une voyelle. On supposera que la variable lettre ne peut contenir qu'une lettre minuscule et rien d'autre. La règle est la suivante (conformément à la réponse de l'Académie française) :

char lettre = 'o';

// Affiche si la lettre est une voyelle ou une (semi-)consonne
// COMPLETEZ ICI

Voici l'affichage attendu avec char lettre = 'o';

o est une voyelle

Voici l'affichage attendu avec char lettre = 'z';

z est une consonne

Voici l'affichage attendu avec char lettre = 'y';

y est une semi-consonne
y est une voyelle

Quiz

Qu'affiche le code suivant ?

int x = 0;
switch (x) {
    case 0: printf ("Bonjour");
    case 1: printf ("Hola"); 
    case 2: printf ("Konnichiwa"); 
    default : printf ("Hello");
}
Vérifier Bravo ! Sans break, tous les cas sont exécutés, même s'ils sont faux. Essaie encore ...

Qu'affiche le code suivant ?

int x = 0;
switch (x) {
    case 0: printf ("Bonjour");
    case 1: printf ("Hola"); break;
    case 2: printf ("Konnichiwa"); 
    default : printf ("Hello");
}
Vérifier Bravo ! Au premier break, on quitte le switch. Essaie encore ...

Quelles propositions sont vraies ?

Vérifier Bravo ! Sans break, on peut mutualiser plusieurs cas, ce qui peut être intéresant en terme de performance ou de clarté du code. Essaie encore ...

Voir aussi


Dernière mise à jour : 04/10/2023