Exercice : Défi final
On dispose du programme suivant :
const grade = 'A'
if (grade === 'A') {
console.log('Mention exceptionnelle')
} else if (grade !== 'A' && grade !== 'B' && grade !== 'C' && grade !== 'D' && grade !== 'E' && grade !== 'F') {
console.log('Pas de note')
}
Question
Qu'affiche le programme si grade vaut 'A' ?
Solution
Mention exceptionnelle
Question
Qu'affiche le programme si grade vaut 'C' ? Pourquoi ?
const grade = 'C'
if (grade === 'A') {
console.log('Mention exceptionnelle')
} else if (grade !== 'A' && grade !== 'B' && grade !== 'C' && grade !== 'D' && grade !== 'E' && grade !== 'F') {
console.log('Pas de note')
}
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.
const grade = 'C'
if (grade === 'A') {
console.log('Mention exceptionnelle')
} else if (grade !== 'A' && grade !== 'B' && grade !== 'C' && grade !== 'D' && grade !== 'E' && grade !== 'F') {
console.log('Pas de note')
}
Indice
La clause else if contient un test qui est redondant avec le if.
Solution
const grade = 'C'
if (grade === 'A') {
console.log('Mention exceptionnelle')
} else if (grade !== 'B' && grade !== 'C' && grade !== 'D' && grade !== 'E' && grade !== 'F') {
console.log('Pas de note')
}
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
const grade = 'C'
if (grade === 'A') {
console.log('Mention exceptionnelle')
} else if (grade === 'B') {
console.log('Mention très bien')
} else if (grade === 'C') {
console.log('Mention bien')
} else if (grade === 'D' || grade === 'E') {
console.log('Admis')
} else if (grade !== 'F') {
console.log('Pas de note')
}
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
const grade = 'F'
if (grade === 'A') {
console.log('Mention exceptionnelle')
} else if (grade === 'B') {
console.log('Mention très bien')
} else if (grade === 'C') {
console.log('Mention bien')
} else if (grade === 'D' || grade === 'E') {
console.log('Admis')
} else if (grade === 'F') {
console.log('Non admis')
} else {console.log('Pas de note')
}