Exercice 1.2.2 : apprendre les structures conditionnelles JavaScript avec l'instruction "switch"
Par Alain Bontemps

Le , par vermine, Responsable JavaScript & AJAX
Exercice 1.2.2 : Les structures conditionnelles avec l'instruction "switch"
Apprendre le JavaScript en interagissant avec les passionnés


Bonjour,

Nous sommes en train de mettre en place une série d'exercices pour apprendre le JavaScript et Node.js.

Autran, Gnuum et ABCIWEB ont participé à la rédaction de ce troisième exercice qui porte sur la structure conditionnelle switch. L'exercice est accompagné d'indications théoriques en guise de cours préalable et d'une solution. Bien entendu, cette solution n'est pas nécessairement unique.

  • Objectif : Manipuler les structures conditionnelles de type switch.
  • Niveau : Facile
  • Exigence : Indispensable


Exercice 1.2.2 : Les structures conditionnelles avec l'instruction "switch"

N'hésitez pas nous faire part de vos remarques, difficultés rencontrées et autres suggestions.

Découvrez également tous nos exercices JavaScript !

Bonne chance !


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de touit touit - Membre du Club https://www.developpez.com
le 02/05/2016 à 12:38
Bonjour,

Voici ma solution en utilisant if ... else :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
 
var quantity = 2,  
    unit = 'K',  
    result = 0; 
;  
   
if (unit = 'K') { 
  result = quantity * 1024; 
  console.log( "Voici la taille en octets  " + result); 
} 
else if (unit = 'M'){ 
  result = quantity * 1024 * 1024; 
  console.log( "Voici la taille en megaoctets  " + result);} 
else if (unit = 'G') { 
   
  result = quantity *1024 * 1024 *1024; 
  console.log( "Voici la taille en gigaoctets  " + result); 
} 
else { 
   
  console.log("il y a une erreur"); 
} 
   
   
console.log(result); // Affiche le résultat (avec les valeurs par défaut, cela donnera 2048).

Et voici celle en utilisant switch :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
var quantity = 2,  
    unit = 'K',  
    result = 0; 
;  
 
 
switch (unit) { 
     
  case 'K': 
    result = 1024 * quantity; 
    console.log( "Voici la taille en octets  " + result); 
 
    break; 
  case 'M': 
    result = 1024 * 1024* quantity ; 
    console.log( "Voici la taille en megaoctets  " + result); 
    break; 
  case 'G': 
    result = 1024 * 1024 * 1024 * quantity; 
    console.log( "Voici la taille en gigaoctets  " + result): 
    break; 
  default :  
    console.log("il y a une erreur"); 
}
Avatar de Gnuum Gnuum - Membre expérimenté https://www.developpez.com
le 14/05/2016 à 9:15
La résolution avec le if...else ne fonctionne pas. L'exemple que tu as pris t'en donne l'illusion mais ce n'est pas le cas. Pourquoi?

En fait quand tu fais if(unit ='K'){, tu ne compares pas la variable unit et la valeur 'K' mais tu assigne la valeur 'K' à la variable unit (unit va prendre la valeur 'K' pour le dire autrement). Ensuite le if évalue la valeur de unit qui est une chaîne de caractères non vide et donc évaluée à true. Ce qui fait que tu exécutes les instructions contenue dans ce if.
Vu que tu as pris comme exemple la lettre K, ton code semble fonctionner. Cependant si tu changes la lettre, tu verras que ton code rentre toujours dans la lettre K.

C'est un problème classique du jeune programmeur. L'opérateur de comparaison d'égalité n'est pas
= mais == ou ===. = sert à assigner une valeur à une variable.
Une technique qu'utilise certains développeurs pour éviter cette erreur bête (souvent liée à une inattention) mais qui peut faire perdre pas mal de temps est d'inverser la valeur testée et la variable:
Code javascript : Sélectionner tout
1
2
if ('K' === unit) { // est équivalent à if (unit === 'K') { 
if ('K' = unit) { // lève une erreur car tu ne peux pas assigner le contenu d'une variable à une valeur

Le switch semble être correct, bravo!

En ce qui concerne ta façon de coder, fais bien attention à respecter des conventions strictes. Ne saute pas des lignes à tel endroit si tu ne le fais pas de la même manière dans un autre endroit similaire, si tu mets un espace devant tes accolades, fais le bien partout, ...
Avatar de Beginner. Beginner. - Membre éprouvé https://www.developpez.com
le 28/05/2016 à 19:23
Salut,

Je poste ma réponse :

Code javascript : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
'use strict'; 
  
var quantity = 2, 
    unit = 'K', 
    result; 
  
  
if (unit === "K") { 
    result = 1024 * quantity; 
} 
else if (unit === "M") { 
    result = 1024 * 1024 * quantity; 
} 
else if (unit === "G") { 
    result = 1024 * 1024 * 1024 * quantity; 
} 
else if (unit === "T") { 
    result = 1024 * 1024 * 1024 * 1024 * quantity; 
} 
else { 
    result = false; 
} 
  
console.log("resultat avec if else : " + result); // Affiche le résultat (avec les valeurs par défaut, cela donnera 2048). 
  
switch (unit) { 
    case 'K': 
        result = 1024 * quantity; 
        break; 
  
    case 'M': 
        result = 1024 * 1024 * quantity; 
        break; 
  
    case 'G': 
        result = 1024 * 1024 * 1024 * quantity; 
        break; 
  
    case 'T': 
        result = 1024 * 1024 * 1024 * 1024 * quantity; 
        break; 
  
    default: 
        result = false; 
} 
  
console.log("resultat avec switch : " + result);
Responsable bénévole de la rubrique JavaScript : Xavier Lecomte -