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 denumber
; - 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 denumber
; - 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éemaVariable
; - attention,
case
vérifie uniquement simaVariable
est égale à la valeur spécifiée (icivaleur1, 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 unbreak
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.
491 Commentaires
-
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 oublile 07/03/2023 à 12h34
-
Patricio M Admin
Pascal, ton dernier code est bon!
le 08/03/2023 à 08h00
-
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, mercile 04/03/2023 à 20h35
-
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
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 Admin
Nolan, good, ton code est bon!
le 03/03/2023 à 09h29
-
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 Admin
Ton dernier code fonctionne très bien! Le code minimaliste focntionne aussi ;))
le 16/02/2023 à 10h48
-
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 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
/* 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 bonle 27/12/2022 à 19h05
-
Patricio M Admin
Kahina, ton dernier code est bon!
le 02/01/2023 à 08h10
-
belgaila.mohamed.zakaria-95
je l'ai minimisé et pourtant ça se valide pas! j'ai mis case0 break puis le reste des numérosle 06/12/2022 à 19h51
-
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
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 instructionsle 02/11/2022 à 17h27
-
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
bonjour, pouvez m'aiderle 01/11/2022 à 07h52
-
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
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 Admin
Oui, sinon tout est collé. Indentes bien ton code ;)
le 13/10/2022 à 11h36
-
wilsonjeanclaude15-97
Gros bug svp remedier à celale 28/09/2022 à 11h40
-
Patricio M Admin
Dans le default, tu dois écrire ALERT, sinon il ne sait pas quoi faire
le 28/09/2022 à 15h12
-
Bouss-14
Bonjour je ne comprend pas mon erreur merci.le 18/07/2022 à 21h32
-
meriam Admin
Bonjour, vous devez utiliser la struture switch (pas swwitch)
le 18/07/2022 à 23h19
-
Marie
Bonjour, je ne trouve pas mon erreur. Je vous remerciele 31/05/2022 à 14h11
-
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
Je ne comprend pas pourquoi ça ne fonctionne pas...le 28/05/2022 à 10h47
-
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
Bonjour je ne trouves pas mon erreur pouvez-vous m’aider svple 24/03/2022 à 16h00
-
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
Commentaires les mieux notés