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
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.
| Écriture | Se lit | Exemple vrai |
|---|---|---|
= | est égal à | 4 = 4 |
<> | est différent de | 3 <> 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.
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.
programme principal
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.
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.
programme principal
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.
1.Dans un Si … Alors … Sinon … FinSi, combien de branches s'exécutent ?
2.À quoi sert FinSi ?
Combiner des conditions : ET, OU, NON
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érateur | Vrai quand | Exemple | Vrai pour |
|---|---|---|---|
ET | les deux conditions sont vraies | x > 0 ET x <= 10 | x strictement positif et au plus égal à 10 : 0 est exclu, 10 est compris |
OU | au moins une des deux est vraie | x <= 0 OU x > 100 | x inférieur ou égal à 0, ou strictement supérieur à 100 |
NON | la condition est fausse | NON (x > 5) | x inférieur ou égal à 5 |
ETexige les deux :temperature >= 18 ET temperature <= 22n'est vraie que dans la plage, bornes comprises. Il restreint.OUest 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) ; leOUlogique ne l'est jamais. Il élargit.NONrenverse une condition, et ne porte que sur ce qui le suit immédiatement :NON x > 5 ET x < 20se lit(NON x > 5) ET x < 20. Des parenthèses s'imposent dès qu'il doit porter sur plus d'une comparaison.
programme principal
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 :
programme principal
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.
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 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.
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 :
programme principal
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 :
programme principal
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.
programme principal
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.
programme principal
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.
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 ».
programme principal
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 saisie | variation > 0 | variation < 0 | Branche exécutée |
|---|---|---|---|
| 7 | vrai | non testé | Hausse |
| -7 | faux | vrai | Baisse |
| 0 | faux | faux | Stable |
| 1 | vrai | non testé | Hausse |
| -1 | faux | vrai | Baisse |
É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.
programme principal
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
La borne qui décide, la branche jamais atteinte, et ce que et, ou et non recouvrent.
- La borne qui décide2 · Appliquer
- Une branche jamais atteinte3 · Combiner
- Combiner des conditions3 · Combiner
- Le seuil de réapprovisionnement2 · Appliquer
- La livraison offerte à partir de2 · Appliquer
- Le tarif réduit3 · Combiner