Annonce

Réduire
Aucune annonce.

Cours langage C n°5 - La structure conditionnelle switch-case-break

Réduire
Ceci est une discussion importante.
X
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Cours langage C n°5 - La structure conditionnelle switch-case-break

    SWITCH-CASE-BREAK

    Pourquoi un cours spécifique sur la syntaxe switch-case-break

    On le voit dans le titre, il y a trois mots clé... Qui puis est, une syntaxe différente sera présentée, pouvant déstabiliser le débutant.

    Elle sert à quoi cette syntaxe ?

    À la même chose strictement que les mots clés if-else if-else vu dans le cours n°4...

    Son intérêt vous le verrez par vous même, lorsque vous sentirez que la syntaxe if-else if-else est très lourde (beaucoup de else if)

    Exemple de problème où l'on verra un intérêt

    Imaginons des notes triées par grade ('A', 'B', 'C' et 'D') représentant les mentions suivantes

    'A' -> Félicitation
    'B' -> Très bien
    'C' -> Bien
    'D' -> Passable
    Sans grade -> Aucune mention

    Avec une syntaxe if-else if-else, ça pèserait tout de suite sur le code

    Code:
    char grade;
    
    /* code */
    
    if (grade == 'A')
    {
        puts("Félicitation");
    }
    else if (grade == 'B')
    {
        puts("Très bien");
    }
    /* ... */
    else
    {
        puts("Aucune mention");
    }
    
    /* suite du code */
    On voit bien que le code devient lourd, et là j'ai pris un exemple simple, imaginez cela dans le chiffrement, voir post de xhacker, vous vous ferez votre propre opinion.

    Pour éviter ce genre de code très lourd, tant dans la lisibilité que dans votre patience à écrire du code, je vous rassure, on peut vous soulager le travail

    SWITCH

    On pourrait le traduire dans le sens si ma variable...

    Sa syntaxe est habituel !

    Code:
    switch (grade)
    {
    
    /* suite */
    
    }
    grade est la variable que l'on souhaite tester/comparer à d'autres variables ou valeurs.

    CASE

    On pourrait le traduire dans le sens vaut/est égale

    Sa syntaxe est inhabituel ! et se complète avec switch

    Code:
    switch (grade)
    {
        case 'A':
            puts("Félicitation");
        case 'B':
            puts("Très bien");
        case 'C':
            puts("Bien");
        case 'D':
            puts("Passable");
        default:
            puts("Aucune mention");
    }
    On remarquera deux choses :
    1. default remplace case est peut être traduit par la valeur par défaut dans les autres cas sera
    2. Pas de possibilité de quitter switch, on utilisera break (voir ci-dessous)



    BREAK

    Elle indique une cassure, un arrêt ou une sortie, on pourrait traduire par sortie de la structure conditionnelle switch.

    Quand on indique la mention, nous devons quitter la structure conditionnelle switch afin de continuer la suite du code.

    Syntaxiquement, voici ce que ça donne

    Code:
    switch (grade)
    {
        case 'A':
            puts("Félicitation");
            break;
        case 'B':
            puts("Très bien");
            break;
        case 'C':
            puts("Bien");
            break;
        case 'D':
            puts("Passable");
            break;
        default:
            puts("Aucune mention");
            break;
    }
    EXERCICES

    Exercice n°1:

    Complétez le code suivant

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
        int choix;
    
        /* Affichage du menu */
    
        printf("Entrez votre choix: ");
        if (scanf("%d", &choix) == EOF) exit(EXIT_FAILURE); /* demande utilisateur en console (pas s'en préoccuper) */
    
        /* Selon le choix (utilisation de switch-case-break) afficher le choix utilisateur (chaine de caractères) */
    
        return 0;
    }
    1. Afficher le menu suivant
      • 1-Ouvrir
      • 2-Sauvegarder
      • 3-Quitter

    2. Prendre en compte les différents choix utilisateurs (1, 2 ou 3), par défaut on quittera le programme (return -1) et on affichera les lignes suivantes:
      1 -> Ouverture
      2 -> Sauvegarde
      3 -> Au revoir


    Merci de m'avoir lu et à bientôt pour le prochain cours

  • #2
    Merci pour le cour voila ma réponse: et juste

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
        int choix;
        printf("Affichage du menu\n"); /* Affichage du Menu */
        printf("_________________\n\n");
        printf("1-Ouvrir\n");
        printf("2-Sauvegarder\n");
        printf("3-Quitter\n");
        printf("Entrez votre choix: ");
        if (scanf("%d", &choix) == EOF) exit(EXIT_FAILURE); /* demande utilisateur en console (pas s'en préoccuper) */
    
    switch(choix){
    	case 1:
    	 printf("ouverture");
            break;
        	case 2:
    	 printf("sauvegarde");
            break;
            case 3:
    	 printf("Au revoir");
            break;
    }
        return 0;
    }
    Dernière modification par DreAmuS, 03 juillet 2014, 13h43.

    Commentaire


    • #3
      @Dreamus,

      C'est parfait
      Dernière modification par fred, 03 juillet 2014, 13h48.

      Commentaire


      • #4
        J'ai éditer en effet je n'avais pas créé un menu j'ai fait au mieux. Ensuite honte à moi de mettre entre '' un entier voila il fonctionne nickel merci pour ce cours excellent !

        Commentaire


        • #5
          merci pour ce cours excellent !
          Bouton Thanks

          Commentaire


          • #6
            Bonjour à tous,

            Code:
            #include <stdio.h>
            #include <stdlib.h>
            
            int main(void)
            {
            
                // === Exercice ===
            
                int choix;
            
                printf("=== MENU ===\n");
                printf("1.Ouvrir\n");
                printf("2.Sauvegarder\n");
                printf("3.Quitter\n");
                printf("Entrez votre choix: ");
                scanf("%d", &choix);
            
                if (choix < 1 || choix > 3)
                {
                    printf("Choix incorrect !");
                    exit(EXIT_FAILURE);
                }
                else
                {
                    switch(choix)
                    {
                    case 1:
                        printf("Ouverture");
                        break;
                    case 2:
                        printf("Sauvegarde");
                        break;
                    case 3:
                        printf("Fermeture");
                        break;
                    }
                }
            
                return 0;
            }
            deux et deux font cinq

            Commentaire


            • #7
              Merci pour ce tuto

              Code:
              #include <stdio.h>
              #include <stdlib.h>
              
              int main(void)
              {
                  int choix;
              
                  printf("1-Ouvrir\n2-Sauvegarder\n3-Quitter\n\nEntrez votre choix: ");
              
                  if (scanf("%d", &choix) == EOF) exit(EXIT_FAILURE);
              
                  switch (choix)
                  {
                  case  1:
                      puts("Ouverture");
                      break;
                  case 2:
                      puts("Sauvegarde");
                      break;
                  case 3:
                      puts("Au revoir");
                      break;
                  default:
                      return -1;
              
                  }
              
                  return 0;
              }
              J'ai deux questions:

              -Il vaut mieux mettre mon menu d'une seule traite ou appeler plusieurs fois printf?
              -Pourquoi quand j'entre des caractères la réponse est forcément "Sauvegarder"?
              Dernière modification par antcroca159, 18 janvier 2015, 00h42.

              Commentaire


              • #8
                Exercice n°1 :

                Code:
                #include <stdio.h>
                #include <stdlib.h>
                
                int main(void)
                {
                    int choix;
                    puts("\n 1-Ouvrir \n 2-Sauvegarder \n 3-Quitter \n");
                    /* Affichage du menu */
                
                    printf("Entrez votre choix: ");
                    if (scanf("%d", &choix) == EOF) exit(EXIT_FAILURE); /* demande utilisateur en console (pas s'en préoccuper) */
                
                    /* Selon le choix (utilisation de switch-case-break) afficher le choix utilisateur (chaine de caractères) */
                    switch (choix)
                    {
                        case 1:
                            puts("Ouverture");
                            break;
                        case 2:
                            puts("Sauvegarde");
                            break;
                        case 3:
                            puts("Au revoir !");
                            break;
                        default:
                            return -1;
                    }
                    return 0;
                }
                Mon blog : http://rootsheep.info

                Commentaire


                • #9
                  Pourquoi quand j'entre des caractères la réponse est forcément "Sauvegarder"?
                  C'est à dire ? Car normalement tu dois entrer un entier, non ?

                  Commentaire

                  Chargement...
                  X