Exercice : Défi final

On dispose du programme suivant :

1
const grade = 'A'
2
3
if (grade === 'A') {
4
  console.log('Mention exceptionnelle')
5
} else if (grade !== 'A' && grade !== 'B' && grade !== 'C' && grade !== 'D' && grade !== 'E' && grade !== 'F') {
6
  console.log('Pas de note')
7
}

Question

Qu'affiche le programme si grade vaut 'A' ?

Solution

Mention exceptionnelle

Question

Qu'affiche le programme si grade vaut 'C' ? Pourquoi ?

1
const grade = 'C'
2
3
if (grade === 'A') {
4
  console.log('Mention exceptionnelle')
5
} else if (grade !== 'A' && grade !== 'B' && grade !== 'C' && grade !== 'D' && grade !== 'E' && grade !== 'F') {
6
  console.log('Pas de note')
7
}

Solution

Il n'affiche rien, parce qu'aucune alternative n'existe pour indiquer quoi faire si une note n'est pas égale à A mais est néanmoins valide (entre A et F).

Question

Ce code contient un test inutile, trouver lequel et le supprimer.

1
const grade = 'C'
2
3
if (grade === 'A') {
4
  console.log('Mention exceptionnelle')
5
} else if (grade !== 'A' && grade !== 'B' && grade !== 'C' && grade !== 'D' && grade !== 'E' && grade !== 'F') {
6
  console.log('Pas de note')
7
}

Indice

La clause else if contient un test qui est redondant avec le if.

Solution

1
const grade = 'C'
2
3
if (grade === 'A') {
4
  console.log('Mention exceptionnelle')
5
} else if (grade !== 'B' && grade !== 'C' && grade !== 'D' && grade !== 'E' && grade !== 'F') {
6
  console.log('Pas de note')
7
}
8

La vérification grade !== 'A' est inutile : en effet les conditions du else if ne seront évaluées que si grade n'est pas égal à A.

Question

Améliorer le programme afin :

  • d'ajouter les mentions « Très bien » en cas de B et « Bien » en cas de C.

  • de mentionner « Admis » en cas de D ou de E.

Indice

Penser à supprimer les tests inutiles dans le dernier else if.

Solution

1
const grade = 'C'
2
3
if (grade === 'A') {
4
  console.log('Mention exceptionnelle')
5
} else if (grade === 'B') {
6
  console.log('Mention très bien')
7
} else if (grade === 'C') {
8
  console.log('Mention bien')
9
} else if (grade === 'D' || grade === 'E') {
10
  console.log('Admis')
11
} else if (grade !== 'F') {
12
  console.log('Pas de note')
13
}
14

Question

On souhaite enfin ajouter l'information « Non admis » pour les notes F.

Ajouter ce cas et transformer le dernier else if en conséquence.

Solution

1
const grade = 'F'
2
3
if (grade === 'A') {
4
  console.log('Mention exceptionnelle')
5
} else if (grade === 'B') {
6
  console.log('Mention très bien')
7
} else if (grade === 'C') {
8
  console.log('Mention bien')
9
} else if (grade === 'D' || grade === 'E') {
10
  console.log('Admis')
11
} else if (grade === 'F') {
12
  console.log('Non admis')
13
} else {
14
  console.log('Pas de note')
15
}
16