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 :
break
soit rencontré ;switch
se termine.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");
}
code
vaut 1, le programme affiche CanadaBelgiqueFranceSuisseCode non reconnu
code
vaut 32, le programme affiche BelgiqueFranceSuisseCode non reconnu
code
vaut 33, le programme affiche FranceSuisseCode non reconnu
code
vaut 41, le programme affiche SuisseCode non reconnu
code
n'est égal à aucune des cas, le programme affiche Code non reconnu
.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
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
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");
}
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");
}
break
, on quitte le switch
.
Essaie encore ...
Quelles propositions sont vraies ?
break
, on peut mutualiser plusieurs cas, ce qui peut être intéresant en terme de performance ou de clarté du code.
Essaie encore ...