Instruction switch en C et C++

Instruction switch en C et C++

L'instruction switch est une instruction multidirectionnelle utilisée pour gérer les décisions. Cela fonctionne presque exactement comme la déclaration if-else. La différence est que l'instruction switch génère un code plus lisible par rapport à l'instruction if-else. De plus, elle s'exécute parfois plus rapidement que son homologue if-else.

Syntaxe
                                switch(expression)
                                {
                                    case val1:
                                        instruction1;
                                        instruction2;
                                        ...
                                    case val2:
                                        instruction3;
                                        instruction4;
                                        ...
                                    case val3:
                                        instruction5;
                                        instruction6;
                                        ...
                                    default:
                                        instruction7;
                                        ...
                                }
                            

"expression" dans l'instruction switch peut être toute expression valide qui donne une valeur entière. L’expression peut également être un caractère (car tous les caractères sont finalement convertis en un entier avant toute opération), mais il ne peut s'agir ni de virgule flottante(float, double) ni de chaîne.

val1, val2 et ainsi de suite après le mot clé "case" doit être de type entier (comme int, long int, etc.) ou de type caractère. elle peut aussi être une expression qui donne une valeur entière. Chaque cas doit avoir une seule valeur. Les valeurs multiples dans la déclaration case ne sont pas autorisées. de plus, toutes les les valeurs doivent être uniques.

Après chaque cas, nous pouvons avoir n'importe quel nombre d'instructions ou aucune. S'il existe plusieurs instructions, vous n'avez pas besoin de les inclure entre accolades ({}).

Voici quelques expressions de switch valides et des valeurs de cas.

Exemple 1
                                int addition(int x, int y){
                                    return x+y;
                                }
                                int a;
                                float b;
                                char c;

                                switch(a){ // valide

                                }
                                switch(c){ // valide

                                }

                                switch(b){ // invalide (valeur réelle)

                                }

                                switch(2+3){ // valide

                                }

                                switch(a+c){ // valide

                                }

                                switch(a+4){ // valide

                                }
                                switch("nom"){ // invalide (chaine de caractères)

                                }

                                switch(addition(a,2)){ // valide

                                }
                            
Exemple 2
                                case 2:// valide
                                case 2+3:// valide
                                case 'a': // valide
                                case 'a' < 'c':// valide

                                case 1,2,3: // invalide (valeurs multiples)
                                case 3.5: // invalide (valeur réelle)
                                case a: // invalide (les variables ne sont pas autorisées)
                            
Comment ça marche

Tout d'abord, l'expression de switch est évaluée, puis la valeur de cette expression est comparée à chaque cas, un par un. Si la valeur de l'expression correspond à une valeur de case, les instructions sous ce cas sont exécutées. Si la valeur de l'expression ne correspond à aucune valeur de case, les instructions de default sont exécutées. L'instruction default est facultative si elle est omise et qu'aucun cas ne correspond, aucune action n'a lieu.

Exemple 3

voici un programme qui à partir d’un nombre compris entre 1 et 7 affiche le jour correspondant

                                #include< stdio.h>

                                int main(void){
                                    int jour;

                                    printf("saisir le numéro du jour : ");
                                    scanf("%d",&jour);

                                    switch(jour){
                                        case 1 : printf("Lundi");
                                        case 2 : printf("Mardi");
                                        case 3 : printf("Mercredi");
                                        case 4 : printf("Jeudi");
                                        case 5 : printf("Vendredi");
                                        case 6 : printf("Samedi");
                                        case 7 : printf("Dimanche");
                                        default: printf("jour invalide");
                                    }

                                    return 0;
                                }
                            
Exemple 4 : Une calculatrice simple
                                #include< stdio.h>

                                int main(void){
                                    int a,b;
                                    char op;

                                    printf("saisir une valeur pour a");
                                    scanf("%d",&a);

                                    printf("saisir une valeur pour b");
                                    scanf("%d",&b);

                                    printf("saisir l'opérateur :");
                                    scanf("%c",&op);

                                    switch(op){
                                        case '+' : printf("%d + %d = %d",a,b,(a+b));
                                        case '-' : printf("%d - %d = %d",a,b,(a-b));
                                        case '*' : printf("%d * %d = %d",a,b,(a*b));
                                        case '/' : printf("%d / %d = %d",a,b,(a/b));
                                        default: printf("opérateur invalide");
                                    }

                                    return 0;
                                }
                            

Rédigé par M. ESSADDOUKI

Many people realize their hearts desires late in life. Continue learning, never stop striving and keep your curiosity sharp, and you will never become too old to appreciate life.