Écrire des tests corrects, enchaîner les cas, combiner avec ET, OU et NON.
Jusqu'ici, nos algorithmes exécutaient toutes leurs lignes, dans l'ordre, à chaque fois. Un algorithme utile doit pouvoir choisir : afficher un message d'erreur seulement si la saisie est invalide, appliquer une réduction seulement aux adhérents.
Une condition vaut VRAI ou FAUX
C'est le point de départ, et il n'admet aucune nuance. note ≥ 10 n'est pas « la note »,
n'est pas « 10 » : c'est une expression qui, une fois évaluée, vaut VRAI ou FAUX.
Rien d'autre. Pas « à peu près vrai », pas « vrai pour la plupart des étudiants ».
Ces expressions ont même un type, le booléen, et on peut les ranger dans une variable :
majeur ← (age ≥ 18)Si majeur Alors Écrire("Accès autorisé")FinSiAttention à ne pas confondre deux symboles qui se ressemblent : ← affecte, = compare.
x ← 5 met 5 dans x ; x = 5 demande si x vaut 5 et répond VRAI ou FAUX. Les langages
qui écrivent les deux avec le signe = (comme C ou JavaScript, avec = et ==) causent
des bugs par milliers pour cette seule raison.
Les opérateurs de comparaison sont =, ≠, <, >, ≤ et ≥. Ils s'appliquent aux
nombres, mais aussi aux chaînes (ordre alphabétique).
Si, Sinon, et l'ordre des cas
Si condition Alors ...instructions si VRAI...Sinon ...instructions si FAUX...FinSiLe Sinon est facultatif. Quand il est là, exactement une des deux branches s'exécute —
jamais les deux, jamais aucune.
Pour plus de deux cas, on enchaîne avec SinonSi. Et là, l'ordre des tests décide de
tout : la cascade s'arrête au premier test vrai et ignore tous les suivants.
Deux casiers : un entier lu en entrée, une chaîne à produire.
Deux enseignements dans cette trace. D'abord, à l'étape 5, on n'a pas eu besoin d'écrire
note ≥ 10 ET note < 14 : arriver à ce test signifie déjà que les deux précédents ont
échoué. Une cascade bien ordonnée s'écrit avec des conditions plus simples qu'une série de
Si indépendants. Ensuite, à l'étape 7, le bloc Sinon n'est même pas examiné : on saute
directement au FinSi.
Avec cette cascade — Si note ≥ 10 Alors « Passable » SinonSi note ≥ 16 Alors « Très bien » — quelle mention obtient un étudiant qui a 18 ?
ET, OU, NON
Trois opérateurs suffisent à combiner les conditions.
| a | b | a ET b | a OU b | NON a |
|---|---|---|---|---|
| VRAI | VRAI | VRAI | VRAI | FAUX |
| VRAI | FAUX | FAUX | VRAI | FAUX |
| FAUX | VRAI | FAUX | VRAI | VRAI |
| FAUX | FAUX | FAUX | FAUX | VRAI |
ET est exigeant : il faut que tout soit vrai. OU est accueillant : il suffit qu'au
moins une chose le soit — et c'est un « ou » inclusif, contrairement au français courant
où « fromage ou dessert » veut dire l'un ou l'autre mais pas les deux.
Une négation se distribue en inversant l'opérateur. NON(age ≥ 18 ET inscrit) ne signifie
pas age < 18 ET NON inscrit, mais age < 18 OU NON inscrit : il suffit qu'une des deux
conditions tombe pour que l'ensemble tombe. En cas de doute, le plus sûr reste de laisser
le NON devant la parenthèse plutôt que de le distribuer de tête.
Le piège des intervalles
En mathématiques on écrit . En algorithmique, c'est faux :
Si 0 ≤ note ≤ 20 Alors ← à ne pas écrireUn opérateur de comparaison prend deux opérandes et rend un booléen. La machine évalue donc
0 ≤ note, obtient VRAI ou FAUX, puis essaie de comparer ce booléen à 20 — ce qui n'a
aucun sens, et selon le langage produit une erreur ou, pire, un résultat silencieusement
faux. Un intervalle s'écrit toujours avec deux comparaisons complètes reliées par ET :
Si note ≥ 0 ET note ≤ 20 Alors ...FinSiComment traduire « x est en dehors de l'intervalle [0 ; 20] » ?
Quelle est la différence entre x ← 5 et x = 5 ?
À vous
Réparez la cascade pour que les quatre mentions soient atteignables.
// Complétez la cascade. L'ordre des tests décide de tout : // mettez le test le plus permissif en premier et les autres deviennent // inatteignables. function mention(note) { if (note >= 10) return "Passable"; // ← ce test est-il au bon endroit ? return "Insuffisant"; } for (const n of [18, 15, 13, 7]) { console.log(n, "->", mention(n)); } // attendu : Très bien / Bien / Passable / Insuffisant
À retenir
Vous avez parcouru les 6 sections.
Marquez-la terminée pour faire avancer votre parcours, ou revenez sur un point avant de passer à la suite.