cursus.

Cours 1 · Notions de baseLeçon 3 sur 3

Conditions et booléens

20 min de lecture6 sections Version PDF

À la fin de cette leçon, vous saurez

É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é")FinSi

Attention à 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...FinSi

Le 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.

Animation · étape 1 / 80:00 / 0:12

Deux casiers : un entier lu en entrée, une chaîne à produire.

Prêt à lancer · 0:00 / 0:12
Étapes

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.

Quiz · vérifiez votre compréhension Sans réponse

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.

aba ET ba OU bNON a
VRAIVRAIVRAIVRAIFAUX
VRAIFAUXFAUXVRAIFAUX
FAUXVRAIFAUXVRAIVRAI
FAUXFAUXFAUXFAUXVRAI

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 0x200 \leq x \leq 20. En algorithmique, c'est faux :

Si 0 ≤ note ≤ 20 Alors     ← à ne pas écrire

Un 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    ...FinSi
Quiz · vérifiez votre compréhension Sans réponse

Comment traduire « x est en dehors de l'intervalle [0 ; 20] » ?

Quiz · vérifiez votre compréhension Sans réponse

Quelle est la différence entre x ← 5 et x = 5 ?

À vous

Exercice · JavaScript · à vous de jouer

Réparez la cascade pour que les quatre mentions soient atteignables.

En attente
// 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

Console de sortie
Le résultat s'affiche dans la console

À retenir

Flashcards · 1 / 2Toucher pour retourner
Fin de la leçon

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.