Aller au contenu principal

Conditions et tests logiques

Ce que ce chapitre apporte

  • Comprendre la notion de condition et de test logique.
  • Savoir formuler une instruction conditionnelle (si… alors… sinon).
  • Être capable de combiner plusieurs conditions avec les opérateurs logiques.
  • Apprendre à représenter un choix dans un algorithme.

Jusqu'ici, un algorithme faisait toujours la même chose. Avec les conditions, il commence à décider : afficher un message selon l'âge, appliquer un tarif selon le cas, refuser une saisie invalide. C'est le moment où un programme cesse d'être une recette et devient un comportement.

Dans un algorithme, il est souvent nécessaire de prendre une décision : faire une action seulement si une certaine situation est vraie. Les conditions permettent justement de donner cette capacité de réflexion à l'algorithme. C'est ce qui transforme une suite d'instructions en un véritable raisonnement logique.

Pourquoi utiliser des conditions ?

Définition

Une condition est une expression logique qui peut être Vraie ou Fausse. Elle permet à l'algorithme de choisir entre plusieurs chemins d'exécution.

On peut comparer une condition à un feu de signalisation :
si le feu est vert, on avance ; s'il est rouge, on s'arrête.
De même, un algorithme exécute certaines instructions seulement si la condition est remplie.

Exemple

Algorithme
pas 1 / 3
séparées par des virgules, décimales au point
Début
Lire âge
Si âge >= 18 Alors
Écrire "Tu es majeur."
FinSi
Fin

programme principal

âgesaisi20

L'algorithme vérifie si l'âge est supérieur ou égal à 18.
Si c'est le cas, il affiche un message. Sinon, il ne fait rien.

L'instruction SI…ALORS…SINON

Définition

L'instruction conditionnelle permet d'exécuter une partie du code seulement si la condition est vraie. Elle offre à l'algorithme la possibilité de prendre une décision. On l'écrit généralement ainsi :

Algorithme
Si condition Alors
instructions à exécuter si la condition est vraie
Sinon
instructions à exécuter sinon
FinSi

Cette structure est appelée conditionnelle car elle dépend d'un test : l'algorithme vérifie une condition avant d'agir. Si la condition est vraie, il exécute la première partie ; sinon, il passe à la seconde.

Exemple

Algorithme
pas 1 / 4
séparées par des virgules, décimales au point
Début
Lire température
Si température <= 0 Alors
Écrire "Il gèle !"
Sinon
Écrire "La température est positive."
FinSi
Fin

programme principal

températuresaisi-4

Ici, la variable température est évaluée. Si sa valeur est inférieure à 0, l'algorithme affiche « Il gèle ! ». Sinon, il affiche « La température est positive. »

Ce type de structure est appelé test binaire, car il n'existe que deux chemins possibles : un chemin pour la condition vraie, un autre pour la condition fausse.

L'instruction conditionnelle est donc une bifurcation : c'est comme un croisement sur une route. Selon la situation, l'algorithme choisit de tourner à gauche ou à droite, mais jamais les deux à la fois.

Organigramme
FauxVraiDébutLire temperaturetemperature > 37,5Afficher "Température normale"Afficher "Fièvre"Afficher "Contrôle terminé"Fin

La bifurcation, et le point où les deux chemins se rejoignent. La dernière ligne s'exécute dans les deux cas : c'est ce que la forme montre et qu'une lecture rapide du texte fait manquer.

Astuce

On peut omettre le Sinon s'il n'y a rien à faire lorsque la condition est fausse. Dans ce cas, l'algorithme se contente d'exécuter la partie « Alors » lorsque la condition est vraie.

Exemple sans “Sinon”

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

programme principal

températuresaisi-4

Dans cet exemple, l'algorithme affiche un message supplémentaire uniquement si la condition est vraie. Si la température est de 10, aucune alerte n'est affichée, mais le programme continue normalement.

Cette manière de faire est très fréquente, car de nombreux cas ne nécessitent pas d'alternative spécifique. Elle simplifie la lecture et évite les branches inutiles.

Enfin, il est important de remarquer que la condition évaluée doit toujours être une expression logique. Autrement dit, elle doit pouvoir être vraie ou fausse. Par exemple :

Algorithme
Si âge >= 18 Alors
Écrire "Majeur"
Sinon
Écrire "Mineur"
FinSi

Ici, le test âge >= 18 est une expression logique : il renvoie Vrai si l'âge est supérieur ou égal à 18, et Faux sinon. C'est ce résultat qui décide du chemin pris par l'algorithme.

Un Si se dessine aussi. Le parcours Flowgorithm reprend la même instruction sous forme d'organigramme : un losange, deux flèches, et les deux chemins qui se rejoignent plus bas. Voir la fourche aide beaucoup quand le texte du Si reste abstrait.

Les opérateurs logiques

Définition

Les opérateurs logiques permettent de combiner plusieurs conditions pour former des tests plus précis. Ils retournent une valeur booléenne (Vrai ou Faux).

Parfois, une seule condition ne suffit pas à décrire une situation réelle.
On veut par exemple tester si un nombre est dans un intervalle, ou si un élève a réussi ou est en rattrapage.
C'est là qu'interviennent les opérateurs logiques, qui permettent de relier plusieurs tests entre eux.

OpérateurSignificationExempleRésultat
etLes deux conditions doivent être vraiesx > 0 et x <= 10Vrai si x est compris entre 0 et 10
ouAu moins une des deux conditions est vraiex <= 0 ou x > 100Vrai si x est en dehors de l'intervalle
nonInverse le résultat de la conditionnon(x > 5)Vrai si x ≤ 5

Ces opérateurs permettent d'exprimer des raisonnements logiques :

  • et correspond à une double condition obligatoire (comme "il fait chaud et il fait beau"),
  • ou indique une alternative (comme "je prendrai du café ou du thé"),
  • non renverse une affirmation (comme "je ne suis pas fatigué").

Exemple

Algorithme
pas 1 / 5
séparées par des virgules, décimales au point
Début
Lire note
Si note >= 10 et note < 12 Alors
Écrire "Passable"
FinSi
Si note >= 12 et note < 16 Alors
Écrire "Assez bien"
FinSi
Si note >= 16 Alors
Écrire "Très bien"
FinSi
Fin

programme principal

notesaisi11

Dans cet algorithme, chaque condition décrit un intervalle précis de valeurs pour note. Si la note est de 11, seule la première condition est vraie ; si elle vaut 14, seule la deuxième s'applique ; et ainsi de suite. Cela montre que l'algorithme choisit dynamiquement le bon chemin en fonction des valeurs fournies.

Les bornes se touchent sans se recouvrir : < 12 et non <= 12. Avec <= 12 des deux côtés, une note de 12 déclencherait deux affichages, ce qui est presque toujours une erreur. Changer la valeur dans le champ de saisie et redérouler suffit pour s'en convaincre.

Les opérateurs logiques permettent donc de rendre les tests plus expressifs, en rapprochant le raisonnement du langage naturel.

Astuce

Pour vérifier si une valeur est comprise entre deux bornes, on peut combiner deux conditions avec et. Par exemple : Si âge >= 13 et âge <= 17 signifie « si l'âge est compris entre 13 et 17 ans inclus ». C'est une manière simple d'écrire des intervalles sans multiplier les Si.

Erreur fréquente

Écrire plusieurs conditions contradictoires peut rendre l'algorithme incohérent. Par exemple, Si x > 10 et x <= 5 ne sera jamais vrai.

Algorithme
pas 1 / 6
Début
x 7
Si x > 10 Alors
Écrire "grand"
Sinon
Si x >= 5 Alors
Écrire "moyen"
Sinon
Écrire "petit"
FinSi
FinSi
Fin

programme principal

x7

Changer la valeur de x en tête et redérouler : 12 donne « grand », 7 donne « moyen », 2 donne « petit ». Les trois branches se visitent ainsi en trois essais, et l'on vérifie qu'aucune n'est inatteignable.

De même, mal utiliser ou peut produire des résultats inattendus. Par exemple, Si x <= 0 ou x > 100 est vrai pour presque tous les nombres sauf ceux compris entre 0 et 100. Il faut donc toujours bien formuler la logique du test avant de l'écrire.

Les opérateurs logiques sont à la base de tout raisonnement informatique. Ils permettent à un programme de poser des questions complexes, d'analyser plusieurs situations à la fois et d'adapter son comportement selon les réponses obtenues.

Les conditions imbriquées et multiples

Définition

Les conditions peuvent être imbriquées (une dans une autre) ou multiples (enchaînées). Cela permet de gérer plusieurs cas possibles dans un même algorithme.

Exemple de condition imbriquée

Algorithme
pas 1 / 7
séparées par des virgules, décimales au point
Début
Lire âge
Si âge >= 18 Alors
Lire permis
Si permis = "oui" Alors
Écrire "Tu peux conduire."
Sinon
Écrire "Tu es majeur mais sans permis."
FinSi
Sinon
Écrire "Tu es mineur."
FinSi
Fin

programme principal

âgesaisi20

L'algorithme pose d'abord une question (âge), puis une autre (permis) seulement si la première condition est remplie. C'est un raisonnement hiérarchique.

Exemple de condition multiple

Algorithme
Si note >= 16 Alors
Écrire "Très bien"
SinonSi note >= 12 Alors
Écrire "Assez bien"
SinonSi note >= 10 Alors
Écrire "Passable"
Sinon
Écrire "Insuffisant"
FinSi

Ici, une seule condition est vraie à la fois. Dès qu'une branche est exécutée, les autres sont ignorées.

Vérification

Vérification rapideon peut se reprendre

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

2.À quoi sert FinSi ?

3.age >= 18 ET permis = Vrai est vrai quand ?

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

5.Trois cas s'excluent : moins de 10, entre 10 et 14, au-delà. Quelle structure employer ?

Exercices type

Les conditions permettent à un algorithme de s'adapter à des situations variées.
Les exemples suivants montrent comment elles peuvent être utilisées pour faire des choix logiques selon les valeurs saisies par l'utilisateur.

Exercice 1 : écrire un algorithme qui lit un nombre et affiche s'il est positif, négatif ou nul.

Afficher la solution
Algorithme
pas 1 / 5
séparées par des virgules, décimales au point
Début
Lire n
Si n > 0 Alors
Écrire "Positif"
SinonSi n < 0 Alors
Écrire "Négatif"
Sinon
Écrire "Nul"
FinSi
Fin

programme principal

nsaisi-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 le nombre n'est ni strictement positif ni strictement négatif, il ne reste qu'une possibilité.

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

n saisin > 0n < 0Branche exécutée
7vrainon testéPositif
−7fauxvraiNégatif
0fauxfauxNul
1vrainon testéPositif
−1fauxvraiNégatif
Erreur fréquente

Écrire SinonSi n <= 0 au lieu de n < 0. Le zéro tombe alors dans « Négatif », et la branche « Nul » ne s'exécute jamais : elle devient du code mort. C'est le piège classique du « ou égal » de trop, et il ne se voit qu'en testant la valeur frontière, ici 0. Testons toujours les bornes, pas seulement un cas au milieu.

Exercice 2 : Écrire un algorithme qui lit l'âge d'une personne et affiche un tarif selon sa catégorie.

Afficher la solution
Algorithme
pas 1 / 5
séparées par des virgules, décimales au point
Début
Lire âge
Si âge <= 12 Alors
Écrire "Tarif enfant"
SinonSi âge <= 26 Alors
Écrire "Tarif jeune"
SinonSi âge >= 65 Alors
Écrire "Tarif senior"
Sinon
Écrire "Tarif plein"
FinSi
Fin

programme principal

âgesaisi19

Entrée : 20
Sortie : Tarif jeune

Cet algorithme lit l'âge et choisit la catégorie tarifaire correspondante :

  • Moins de 12 ans : tarif enfant
  • Moins de 26 ans : tarif jeune
  • 65 ans et plus : tarif senior
  • Tous les autres âges : tarif plein

Le principe repose sur un enchaînement de conditions évaluées dans l'ordre. Dès qu'une condition est vraie, l'algorithme exécute l'instruction correspondante et ignore les suivantes.

Cela reproduit le raisonnement humain : « Si la personne est un enfant, je lui applique le tarif enfant. Sinon, si c'est un jeune, je lui applique le tarif jeune. Sinon, si c'est un senior, je lui applique le tarif senior. Sinon, c'est un adulte et je lui donne le tarif plein. »

À retenir

  • Une condition est une question à laquelle l'ordinateur répond par Vrai ou Faux.
  • L'instruction Si…Alors…Sinon permet de créer un choix dans l'algorithme.
  • Les opérateurs logiques permettent de combiner ou de nier plusieurs conditions.
  • Grâce aux tests, un programme peut adapter son comportement à la situation.

Prochain chapitre

Le prochain chapitre montre comment utiliser les boucles pour répéter une série d'instructions plusieurs fois.

La méthode

  1. Écrire la condition en français avant de la noter. Si la phrase contient un « et » ou un « ou », la notation les contiendra aussi.
  2. Vérifier les bornes une par une. Une condition sur un âge, une note ou une température se joue presque toujours sur la valeur limite.
  3. Distinguer strictement de largement. Entre < et <= il n'y a qu'un cas, et c'est celui qui pose problème.
  4. Vérifier que les branches couvrent tous les cas et qu'aucune n'en recouvre une autre. Une branche inatteignable est une branche fausse.
  5. Tester trois valeurs au minimum : une de chaque côté, et la borne elle-même.
  6. Se méfier des conditions enchaînées. L'ordre des branches décide, et la première qui est vraie l'emporte.

Synthèse

  • Une condition est un test dont le résultat est vrai ou faux, et rien d'autre.
  • Si … Alors … Sinon choisit entre deux chemins. Le Sinon s'omet quand il n'y a rien à faire.
  • Les opérateurs et, ou, non combinent les conditions. Un et restreint, un ou élargit.
  • La borne est l'endroit où se joue presque toute erreur de condition : < et <= ne diffèrent que d'un cas, et c'est celui-là.
  • Des branches enchaînées se lisent dans l'ordre : la première vraie l'emporte, et une branche placée trop tôt peut en rendre une autre inatteignable.
  • Toute condition se vérifie sur trois valeurs au moins : une de chaque côté, et la borne elle-même.

Mettre en pratique