Exercice 11/16

Soit la variable number déjà déclarée et qui contient une valeur aléatoire qui peut-être 0, 1, 2, 3, 4 ou 5.

Dans le fichier "script.js" :

  • écrivez une structure switch;
  • vérifiez les cas possibles d'égalité de 1 à 5;
  • pour chaque cas, si il est vérifié, écrivez un alert(); qui affichera la valeur de number;
  • si les cas de 1 à 5 ne sont pas vérifiés, écrivez alert(); qui concatènera "La valeur est forcément zéro : " et la valeur de number;
  • cliquez sur "Soumettre ma réponse".

Leçon 11/16

Vous venez de voir la première structure conditionnelle if elseif else.

Dans l'exercice précédent vous avez testé si number était positif, négatif ou égale à zéro. Imaginez une situation dans laquelle vous devez tester toutes les possibilités pour cette même variable number.

Il va falloir vérifier si number est égale à -10, -9, -8 ... jusqu'à 10. Avec une structure de type if elseif else, le code devient vite lourd et pas forcément lisible.

C'est là qu'intervient la structure switch :

switch (maVariable)
{
    case valeur1:instruction1;
    break;
    case valeur2:instruction2;
    break;
    case valeur3:instruction3;
    break;
    default:instruction4;
}

Comment ça marche ?

  • il faut le mot-clé switch suivi de la variable à tester entre parenthèses ();
  • ensuite tout se passe entre une seule paire d'accolades {};
  • chaque possibilité est testée avec le mot-clé case suivi de la valeur à laquelle doit être comparée maVariable;
  • attention, case vérifie uniquement si maVariable est égale à la valeur spécifiée (ici valeur1, valeur2, valeur3) et rien d'autre;
  • si l'égalité est vérifiée, alors l'instruction qui suit le double-point : est exécutée;
  • pour chaque case il faut un break qui permet d'arrêter le switch si l'égalité est vérifiée car pas besoin d'aller plus loin;
  • si aucun des case n'est vérifié, alors on exécute l'instruction par défaut avec le mot-clé default;

Remarque :

Avec case c'est une égalité stricte === qui est testée, c'est-à-dire que le contenu et le type de maVariable doivent être identique soit à valeur1 ou valeur2 ou valeur3.

Une structure conditionnelle doit rester lisible, surtout quand elle devient complexe, aussi il est fortement conseillé de l'écrire comme ceci :

switch ()
{
    case valeur:instruction1;
    break;
    case valeur:instruction2;
    break; 
    default:instruction3;
}
  • un espace entre le switch et les parenthèses ();
  • allez à la ligne pour ouvrir les accolades {};
  • indentez le code entre les accolades avec une tabulation pour bien voir la hiérarchie;
  • une espace entre le case et la valeur suivie immédiatement par : puis l'instruction;
  • n'oubliez pas les ; en fin de ligne;

Cet exemple est une très bonne façon d'écrire un switch et dans cet exercice vous devez utiliser ce modèle.

Commentaires les mieux notés

491 Commentaires

  • pascalhuppermans-100

    pascalhuppermans-100

    Bonjour j'ai l'impression que mon code est bon mais ça me dit que je dois avoir un discriminant ... je ne vois pas où se situe mon oubli

    le 07/03/2023 à 12h34

  • Patricio M

    Patricio M Admin

    Pascal, ton dernier code est bon!

    le 08/03/2023 à 08h00

  • ericdav44-12

    ericdav44-12

    Bonsoir, je ne vois pas mon erreur. default: alert ("La valeur est forcément zéro:"+number); } et on me dit Dans votre switch, cas default, votre alert doit afficher quelque chose de particulier (regardez les instructions) Si quelqu'un peut m'aider, merci

    le 04/03/2023 à 20h35

  • Patricio M

    Patricio M Admin

    TOn code est bon, regarde cet exemple AVEC un espace "La valeur est forcément zéro : " +number);

    le 06/03/2023 à 07h54

  • nolan.orro-7

    nolan.orro-7

    Bonjour, je ne comprends pas mon erreur j'ai cherché sur internet et dans les commentaires j'ai l'impression d'avoir le bon code. Quelqu'un pourrait m'aider svp ?

    le 02/03/2023 à 14h34

  • Patricio M

    Patricio M Admin

    Nolan, good, ton code est bon!

    le 03/03/2023 à 09h29

  • olocard-16

    olocard-16

    Bonjour, J'ai tenté un code minimaliste fonctionnel, mais qui ne semble pas répondre aux critères de validation. Pourriez-vous me confirmer qu'il est tout de même correct ? switch (number) { case 1: case 2: case 3: case 4: case 5: alert(number); break; default: alert("La valeur est forcément zéro : " + number); }

    le 15/02/2023 à 08h15

  • Patricio M

    Patricio M Admin

    Ton dernier code fonctionne très bien! Le code minimaliste focntionne aussi ;))

    le 16/02/2023 à 10h48

  • cel.busi-87

    cel.busi-87

    Bonjour, je ne comprends pas ce qu'il veut me dire par les instructions sur le "default", une aide svp?

    le 18/01/2023 à 13h41

  • Patricio M

    Patricio M Admin

    default correspond à tout les autres cas. Tu concatènes avec un + et number par la suite. N"oublies pas le BREAK pour ce cas aussi...

    le 19/01/2023 à 08h44

  • kahina-taleb-70

    kahina-taleb-70

    /* Pas besoin de modifier la variable number */ var number = Math.floor((Math.random() * 6)); /* Votre switch ici */ switch(number){ case 1: alert(number); break; case 2: alert(number); break; case 3: alert(number); break; case 4: alert(number); break; case 5: alert(number); break; default: alert( "La valeur est forcément zéro : " + number); break; } mon code est bon

    le 27/12/2022 à 19h05

  • Patricio M

    Patricio M Admin

    Kahina, ton dernier code est bon!

    le 02/01/2023 à 08h10

  • belgaila.mohamed.zakaria-95

    belgaila.mohamed.zakaria-95

    je l'ai minimisé et pourtant ça se valide pas! j'ai mis case0 break puis le reste des numéros

    le 06/12/2022 à 19h51

  • Patricio M

    Patricio M Admin

    Ta logique est bonne, mais la consigne demande une autre chose... tu dois vérifier tout les cas et le default doit être le zéro

    le 07/12/2022 à 08h30

  • anaismaillet30-62

    anaismaillet30-62

    Bonsoir, var number = Math.floor((Math.random() * 6)); switch (number) { case 1:alert(number); break; case 2:alert(number); break; case 3:alert(number); break; case 4:alert(number); break; case 5:alert(number); break; default:alert("La valeur est forcément zéro:"+number);} Je ne comprends pas pourquoi lorsque je soumets on me dit dans default doit s'afficher les instructions

    le 02/11/2022 à 17h27

  • Patricio M

    Patricio M Admin

    ton code est bon. Indentes bien avec TAB et les { } dans la même ligne verticale

    le 03/11/2022 à 08h23

  • chrislyane-36

    chrislyane-36

    bonjour, pouvez m'aider

    le 01/11/2022 à 07h52

  • Patricio M

    Patricio M Admin

    Oui, mais ton code est bon, donc tu as trouvé toute seule la réponse :)

    le 02/11/2022 à 10h09

  • mathieuglb-94

    mathieuglb-94

    Erreur trouvée ! (espace obligatoire avant et après les 2 points suivant le mot "zéro" (si ça peut aider)

    le 12/10/2022 à 23h37

  • Patricio M

    Patricio M Admin

    Oui, sinon tout est collé. Indentes bien ton code ;)

    le 13/10/2022 à 11h36

  • wilsonjeanclaude15-97

    wilsonjeanclaude15-97

    Gros bug svp remedier à cela

    le 28/09/2022 à 11h40

  • Patricio M

    Patricio M Admin

    Dans le default, tu dois écrire ALERT, sinon il ne sait pas quoi faire

    le 28/09/2022 à 15h12

  • Bouss-14

    Bouss-14

    Bonjour je ne comprend pas mon erreur merci.

    le 18/07/2022 à 21h32

  • meriam

    meriam Admin

    Bonjour, vous devez utiliser la struture switch (pas swwitch)

    le 18/07/2022 à 23h19

  • Marie

    Marie

    Bonjour, je ne trouve pas mon erreur. Je vous remercie

    le 31/05/2022 à 14h11

  • meriam

    meriam Admin

    Bonjour, il faut corriger le message de default :La valeur est forcément zéro (ajoutez la lettre r à forcément)

    le 01/06/2022 à 20h01

  • julien.blacteau-1

    julien.blacteau-1

    Je ne comprend pas pourquoi ça ne fonctionne pas...

    le 28/05/2022 à 10h47

  • meriam

    meriam Admin

    Bonjour, au niveau du message default, laissez un espace avant et aprés les deux point :

    le 30/05/2022 à 15h42

  • aoudeche.amina1-26

    aoudeche.amina1-26

    Bonjour je ne trouves pas mon erreur pouvez-vous m’aider svp

    le 24/03/2022 à 16h00

  • meriam

    meriam Admin

    Bonjour, au niveau du message default, ajoutez un espace aprés les deux points ==> alert("La valeur est forcément zéro : "+number);

    le 28/03/2022 à 14h33

index.html
script.js
<!DOCTYPE HTML> <html> <head> <title>La structure switch</title> <script src="script.js"></script> </head> <body> </body> </html>
/* Pas besoin de modifier la variable number */ var number = Math.floor((Math.random() * 6)); /* Votre switch ici */