Aller au contenu principal

Conditions et tests logiques

Ce que ce chapitre apporte 5 points
  • Écrire une comparaison avec les six opérateurs, en sachant de quel côté chacun range la borne.
  • Employer Si … Alors … Sinon, avec ou sans Sinon, et lire l'organigramme correspondant.
  • Combiner des conditions avec ET, OU et NON, et nier une condition composée.
  • Imbriquer des conditions, puis enchaîner plusieurs cas avec SinonSi, dans l'ordre qui convient.
  • Vérifier une condition sur trois valeurs au moins : une de chaque côté de la borne, et la borne elle-même.

Un four de traitement thermique doit passer en alarme à partir de 75 degrés, et s'arrêter d'urgence à partir de 90. Le capteur relève 75 degrés pile. La consigne dit « alarme » ; l'automate, lui, fera ce que dit sa condition, et tout se joue sur un signe, < ou <=. Mal placé, il fait afficher « Surveillance », ou les deux messages, ou aucun. D'où la question de ce chapitre : comment écrire une condition qui range chaque valeur dans la bonne branche, borne comprise, et comment s'en assurer avant la mise en service.

Le chapitre sur le pseudo-code a montré un Si : une condition, deux branches, une seule exécutée. Celui sur les variables a posé les deux valeurs booléennes, Vrai et Faux, que rend toute condition. Ce chapitre apprend à écrire la condition elle-même : comparer, combiner deux tests par ET, OU et NON, enchaîner plusieurs cas, et surtout placer la borne au bon endroit, là où se logent presque toutes les erreurs de condition.

Comparer : six opérateurs, et une borne

Définition

Une condition est une expression dont le résultat est vrai ou faux, et rien d'autre. Le plus souvent, c'est une comparaison entre deux valeurs, et son résultat est l'une des deux valeurs booléennes du chapitre précédent, Vrai ou Faux.

ÉcritureSe litExemple vrai
=est égal à4 = 4
<>est différent de3 <> 4
<est strictement inférieur à3 < 4
<=est inférieur ou égal à4 <= 4
>est strictement supérieur à5 > 4
>=est supérieur ou égal à4 >= 4

Le signe = compare, il ne range rien : Si n = 0 Alors pose une question, n ← 0 change n. Python rend la confusion plus facile encore, puisqu'il écrit la comparaison == et l'affectation =.

Les quatre derniers opérateurs vont par paires, et chaque paire ne diffère que d'un cas : la borne. x < 4 et x <= 4 donnent la même réponse pour toute valeur, sauf pour 4. C'est pourquoi une comparaison se relit toujours en se demandant de quel côté tombe la borne. Le vocabulaire suit la même règle : « positif » comprend 0, et l'on écrit « strictement positif » quand 0 est exclu, x >= 0 d'un côté, x > 0 de l'autre.

Vérification rapideon peut se reprendre

Pour quelle valeur x < 10 et x <= 10 donnent-ils des réponses différentes ?

Si … Alors … Sinon, avec ou sans Sinon

La forme vient du chapitre sur le pseudo-code : une condition après Si, la branche à exécuter quand elle est vraie après Alors, celle à exécuter sinon après Sinon, et FinSi pour refermer le tout. Une seule des deux branches s'exécute, jamais les deux.

Algorithme
pas 1 / 4
séparées par des virgules, décimales au point
Début
Lire temperature
Si temperature <= 0 Alors
Écrire "Il gèle !"
Sinon
Écrire "Pas de gel"
FinSi
Écrire "Relevé enregistré"
Fin

programme principal

temperaturesaisi-4

Si la valeur lue est inférieure ou égale à 0, l'algorithme affiche « Il gèle ! ». Sinon, c'est-à-dire pour toute température strictement positive, il affiche « Pas de gel ». Dans les deux cas, il affiche ensuite « Relevé enregistré », puisque cette ligne suit le FinSi. Saisir 0 dans le champ : c'est la borne, et elle tombe du côté du gel, parce que la condition écrit <=.

Le parcours Flowgorithm dessine chaque Si de cette façon : un losange, deux chemins, et le point où ils se rejoignent plus bas.

Organigramme
FauxVraiDébutLire temperaturetemperature <= 0Afficher "Pas de gel"Afficher "Il gèle !"Afficher "Relevé enregistré"Fin

Le même algorithme, dessiné. Le losange porte la condition, les deux chemins sont les deux branches, et ils se rejoignent avant la dernière ligne : elle s'exécute dans les deux cas, ce que la forme montre et qu'une lecture rapide du texte fait manquer.

Quand il n'y a rien à faire si la condition est fausse, le Sinon s'omet. L'algorithme exécute alors la branche Alors quand la condition est vraie, et passe directement à la suite sinon.

Algorithme
pas 1 / 4
séparées par des virgules, décimales au point
Début
Lire temperature
Si temperature <= 0 Alors
Écrire "Attention, il gèle !"
FinSi
Écrire "Relevé enregistré"
Fin

programme principal

temperaturesaisi-4

Saisir 10 dans le champ : aucune alerte ne s'affiche, et l'algorithme continue normalement. Cette forme est très fréquente, car bien des cas ne demandent rien quand la condition est fausse.

Vérification rapideon peut se reprendre

1.Dans un Si … Alors … Sinon … FinSi, combien de branches s'exécutent ?

2.À quoi sert FinSi ?

Combiner des conditions : ET, OU, NON

Définition

Les opérateurs logiques ET, OU et NON combinent des conditions pour en former une nouvelle, qui vaut elle aussi Vrai ou Faux. Ils s'écrivent en majuscules.

Une seule comparaison ne suffit pas toujours à décrire une situation réelle : une température doit rester dans une plage, une alarme se déclenche dès que l'un de deux seuils est franchi.

OpérateurVrai quandExempleVrai pour
ETles deux conditions sont vraiesx > 0 ET x <= 10x strictement positif et au plus égal à 10 : 0 est exclu, 10 est compris
OUau moins une des deux est vraiex <= 0 OU x > 100x inférieur ou égal à 0, ou strictement supérieur à 100
NONla condition est fausseNON (x > 5)x inférieur ou égal à 5
  • ET exige les deux : temperature >= 18 ET temperature <= 22 n'est vraie que dans la plage, bornes comprises. Il restreint.
  • OU est vrai dès qu'une des deux conditions l'est, et il l'est encore quand les deux le sont : « la température dépasse 80 ou la pression dépasse 5 » déclenche l'alarme dans les deux cas, et aussi quand les deux seuils sont franchis à la fois. Le « ou » du français est souvent exclusif (« café ou thé », l'un ou l'autre mais pas les deux) ; le OU logique ne l'est jamais. Il élargit.
  • NON renverse une condition, et ne porte que sur ce qui le suit immédiatement : NON x > 5 ET x < 20 se lit (NON x > 5) ET x < 20. Des parenthèses s'imposent dès qu'il doit porter sur plus d'une comparaison.
Algorithme
pas 1 / 3
séparées par des virgules, décimales au point
Début
Lire temperature, pression
Si temperature > 80 OU pression > 5 Alors
Écrire "Alarme"
Sinon
Écrire "Normal"
FinSi
Fin

programme principal

temperature90pressionsaisi6

Avec 90 et 6, les deux seuils sont franchis, et l'alarme se déclenche : le OU n'exige pas qu'une seule des deux conditions soit vraie. Saisir 50 et 2 pour voir la seule combinaison qui affiche « Normal ».

Nier une condition composée

Être compris entre 0 et 20, c'est n >= 0 ET n <= 20. Ne pas l'être, c'est être en dessous de 0 ou au-dessus de 20 : n < 0 OU n > 20. La négation d'un ET devient un OU, et chaque comparaison s'inverse, >= devenant < et <= devenant >. Réciproquement, la négation d'un OU devient un ET. La règle surprend à la première lecture, et se vérifie sur trois valeurs : -5 et 30 sont hors de l'intervalle, 10 est dedans.

Trois plages, trois Si

Trois Si indépendants peuvent classer une valeur dans des plages qui se suivent, chaque plage s'écrivant avec un ET. Voici l'échelle d'alarme d'un four, relevée en degrés :

Algorithme
pas 1 / 5
séparées par des virgules, décimales au point
Début
Lire temperature
Si temperature >= 60 ET temperature < 75 Alors
Écrire "Surveillance"
FinSi
Si temperature >= 75 ET temperature < 90 Alors
Écrire "Alarme"
FinSi
Si temperature >= 90 Alors
Écrire "Arrêt d'urgence"
FinSi
Fin

programme principal

temperaturesaisi70

Chaque condition décrit une plage de valeurs. Pour 70, seule la première est vraie ; pour 80, seule la deuxième ; en dessous de 60, aucune, et rien ne s'affiche. Les bornes se touchent sans se recouvrir : le premier test s'arrête avant 75 (< 75), le second commence à 75 (>= 75). Saisir 75 dans le champ et redérouler : un seul message s'affiche, « Alarme ». Avec temperature <= 75 dans le premier test, la même saisie satisferait les deux premières conditions et afficherait « Surveillance » puis « Alarme » ; un tableau de trace à la main suffit à le constater.

Trois Si indépendants conviennent ici, parce que les plages ne se recouvrent pas. Ils testent pourtant les trois conditions à chaque fois, et une borne mal écrite suffit à déclencher deux affichages. La fin du chapitre donne une écriture qui évite les deux défauts.

Écrire un intervalle

Une valeur comprise entre deux bornes s'écrit avec deux comparaisons reliées par ET : temperature >= 18 ET temperature <= 22 signifie « comprise entre 18 et 22 degrés, bornes comprises ». L'écriture des mathématiques, 18 <= temperature <= 22, n'est pas acceptée ici : chaque comparaison se fait entre deux valeurs, et chacune s'écrit en entier.

Une condition que rien ne vérifie, une autre que tout vérifie

Une condition contradictoire n'est jamais vraie : x > 10 ET x <= 5 ne laisse passer aucun nombre, puisqu'aucun ne dépasse 10 tout en valant au plus 5. La branche qu'elle garde ne s'exécutera jamais.

À l'inverse, un OU mal choisi rend un test toujours vrai : x > 0 OU x < 100 est vrai pour tout nombre, puisque chacun est soit strictement positif, soit inférieur à 100. L'intention était sans doute x > 0 ET x < 100. Dans les deux cas, l'algorithme ne signale rien : seul un essai sur des valeurs choisies de part et d'autre de chaque borne le révèle.

Vérification rapideon peut se reprendre

1.age >= 18 ET permis = "oui" est vraie quand ?

2.Comment écrire « n n'est pas compris entre 0 et 20 » ?

Imbriquer des conditions

Une condition peut se placer à l'intérieur d'une branche d'une autre. La seconde question n'est alors posée que si la première a reçu la bonne réponse :

Algorithme
pas 1 / 5
séparées par des virgules, décimales au point
Début
Lire age
Si age >= 18 Alors
Lire permis
Si permis = "oui" Alors
Écrire "Conduite autorisée"
Sinon
Écrire "Majeur sans permis"
FinSi
Sinon
Écrire "Mineur"
FinSi
Fin

programme principal

agesaisi20

L'algorithme pose d'abord la question de l'âge, puis celle du permis, et seulement aux majeurs : demander son permis à un mineur n'aurait pas de sens. Chaque Si a son propre FinSi, et les filets verticaux montrent lequel referme lequel. Ici encore, permis = "oui" compare permis au texte « oui » : il ne range rien.

Une imbrication sert aussi à distinguer plus de deux cas. Pour classer une valeur en « grand », « moyen » ou « petit », un second Si se loge dans le Sinon du premier :

Algorithme
pas 1 / 5
séparées par des virgules, décimales au point
Début
Lire x
Si x > 10 Alors
Écrire "grand"
Sinon
Si x >= 5 Alors
Écrire "moyen"
Sinon
Écrire "petit"
FinSi
FinSi
Fin

programme principal

xsaisi7

Saisir 12, puis 7, puis 2 dans le champ et redérouler : 12 donne « grand », 7 « moyen », 2 « petit ». Les trois branches se visitent ainsi en trois essais, ce qui prouve qu'aucune n'est inatteignable.

Enchaîner plusieurs cas : SinonSi

La cascade précédente, qui teste x > 10 puis, dans son Sinon, x >= 5, est si fréquente qu'elle a une écriture plus courte. SinonSi remplace un Sinon qui ne contiendrait qu'un Si : un seul FinSi ferme l'ensemble, et les cas s'alignent au lieu de s'enfoncer d'un cran à chaque test.

Algorithme
pas 1 / 4
séparées par des virgules, décimales au point
Début
Lire x
Si x > 10 Alors
Écrire "grand"
SinonSi x >= 5 Alors
Écrire "moyen"
Sinon
Écrire "petit"
FinSi
Fin

programme principal

xsaisi7

Les conditions sont testées dans l'ordre, de haut en bas, et seule s'exécute la branche de la première condition vraie ; les suivantes ne sont même pas évaluées. Plusieurs conditions peuvent pourtant être vraies en même temps. Sur l'échelle d'alarme du four, réécrite ici avec SinonSi, une température de 95 vérifie les trois tests >= 90, >= 75 et >= 60 ; elle déclenche l'arrêt d'urgence parce que ce test vient en premier.

Algorithme
pas 1 / 3
séparées par des virgules, décimales au point
Début
Lire temperature
Si temperature >= 90 Alors
Écrire "Arrêt d'urgence"
SinonSi temperature >= 75 Alors
Écrire "Alarme"
SinonSi temperature >= 60 Alors
Écrire "Surveillance"
Sinon
Écrire "Normal"
FinSi
Fin

programme principal

temperaturesaisi95
À manipuler
Dérouler avec la saisie 95 en avançant par « suivant ▶ » : la ligne surlignée passe du premier test à « Arrêt d'urgence », et le déroulement s'arrête là, au pas « 3 / 3 », sans passer par aucun des autres tests. Remplacer ensuite 95 par 80, puis par 65, puis par 40, dans le champ « Ce que Lire reçoit », et noter chaque fois le nombre total de pas affiché à droite des boutons : 4, 5, puis 6. Chaque test écarté ajoute un pas, et un seul Écrire s'exécute à chaque déroulement : la cascade s'arrête au premier test vrai, même quand les suivants l'auraient été aussi.

Comparée aux trois Si indépendants, cette écriture ne répète aucune borne : une fois le premier test écarté, la température est forcément inférieure à 90, et le deuxième test n'a pas à le redire. Elle traite aussi le cas « Normal », que les trois Si laissaient sans réponse, et elle n'exécute jamais plus d'une branche.

L'ordre des branches fait donc partie de l'algorithme. Placer temperature >= 60 en tête afficherait « Surveillance » pour 95 comme pour 60, et les branches « Alarme » et « Arrêt d'urgence » ne s'exécuteraient jamais : elles seraient devenues du code mort. D'où la règle, pour une échelle de seuils testés par >= : commencer par le plus haut.

Vérification rapideon peut se reprendre

Trois cas s'excluent : moins de 10, de 10 à 14, au-delà de 14. Quelle écriture est la plus sûre ?

Mettre en pratique

Une condition se vérifie aussi en comptant ce qu'elle laisse passer. C'est sur ces comptes que la borne se trahit : une valeur de trop, ou une de moins.

Compter ce que laisse passer une condition

  • 1.

    La plage de confort d'un local s'écrit temperature >= 18 ET temperature <= 22. Combien de températures entières y tombent ?

  • 2.

    Même question pour temperature > 18 ET temperature < 22.

  • 3.

    Sur l'échelle d'alarme du four, « Surveillance » s'affiche pour temperature >= 60 ET temperature < 75. Combien de températures entières la déclenchent ?

  • 4.

    Dans l'exercice des tarifs, combien d'âges entiers paient le tarif jeune ?

  • 5.

    Et combien d'âges entiers paient le tarif plein ?

  • 6.

    Un capteur rend des valeurs entières de -5 à 30. Combien d'entre elles vérifient n < 0 OU n > 20 ?

La variation d'un stock sur une journée est un entier, strictement positif quand des pièces sont entrées, strictement négatif quand il en est sorti, nul sinon. Écrire un algorithme qui lit cette variation et affiche « Hausse », « Baisse » ou « Stable ».
Algorithme
pas 1 / 4
séparées par des virgules, décimales au point
Début
Lire variation
Si variation > 0 Alors
Écrire "Hausse"
SinonSi variation < 0 Alors
Écrire "Baisse"
Sinon
Écrire "Stable"
FinSi
Fin

programme principal

variationsaisi-3

Les conditions sont évaluées dans l'ordre, et dès que l'une est vraie les suivantes sont ignorées. Le dernier Sinon n'a donc pas besoin de test : si la variation n'est ni strictement positive ni strictement négative, il ne reste qu'une possibilité, zéro.

Vérification des trois cas, plus les valeurs frontières :

Variation saisievariation > 0variation < 0Branche exécutée
7vrainon testéHausse
-7fauxvraiBaisse
0fauxfauxStable
1vrainon testéHausse
-1fauxvraiBaisse
Le « ou égal » de trop

Écrire SinonSi variation <= 0 au lieu de variation < 0. Le zéro tombe alors dans « Baisse », et la branche « Stable » ne s'exécute jamais : elle devient du code mort. L'erreur ne se voit qu'en testant la valeur frontière, ici 0 : tester toujours les bornes, pas seulement un cas au milieu.

Écrire un algorithme qui lit l'âge d'une personne et affiche son tarif : enfant jusqu'à 12 ans inclus, jeune de 13 à 26 ans, senior à partir de 65 ans, plein pour tous les autres âges.
Algorithme
pas 1 / 4
séparées par des virgules, décimales au point
Début
Lire age
Si age <= 12 Alors
Écrire "Tarif enfant"
SinonSi age <= 26 Alors
Écrire "Tarif jeune"
SinonSi age >= 65 Alors
Écrire "Tarif senior"
Sinon
Écrire "Tarif plein"
FinSi
Fin

programme principal

agesaisi20

Entrée : 20
Sortie : Tarif jeune

L'algorithme choisit la catégorie dans l'ordre des branches :

  • 12 ans ou moins : tarif enfant ;
  • de 13 à 26 ans : tarif jeune ;
  • 65 ans et plus : tarif senior ;
  • de 27 à 64 ans : tarif plein.

Le deuxième test n'a pas à redire age >= 13 : une fois le premier écarté, l'âge dépasse forcément 12. Le Sinon ramasse tous les âges que les trois tests ont laissés, de 27 à 64 ans. Les bornes se vérifient par paires, de part et d'autre de chaque seuil : 12 et 13, 26 et 27, 64 et 65.

Chapitre révisé en octobre 2026 · Une erreur dans ce chapitre ?

Dans la bibliothèque d'exercices