Les Expressions Logiques



I - Variable booléenne

Le type booléen est un type de variable qui existe dans tous les langages de programmation, tout comme les types numériques ou le type chaine de caractères.

Une variable de ce type sert à représenter une information qui peut être vraie ou fausse.

Par exemple dans un programme de gestion de marchandises, on pourrait avoir une variable RuptureDeStock qui nous permettrait de savoir si le stock de marchandises est épuisé.

De manière générale :

Une variable booléenne ou booléen est une variable qui peut prendre deux valeurs: vrai et faux.

La représentation du vrai et du faux dépend du langage de programmation. En Python, la valeur vrai est représenté par True et la valeur faux par False. Ce sont les deux seuls littéraux de type booléen.

Une variable deviendra donc booléenne dès qu'on lui affectera la valeur True ou False. Par exemple, juste après l'affectation suivante :

  RuptureDeStock = True

RuptureDeStock est une variable booléenne de valeur True.

II - Opérateurs logiques

Nous avons déjà vu quelques opérateurs: les opérateurs arithmétiques, qui agissent sur des nombres ainsi que l'opérateur de concaténation, qui agit sur des chaines de caractères.

De la même manière, il existe des opérateurs logiques. Ceux-ci permettent de calculer une valeur logique (donc vrai ou faux) à partir d'autres valeurs logiques.

Il existe principalement trois opérateurs logiques : la négation , la conjonction et la disjonction.

II-1 La négation

En logique, la négation permet de représenter le contraire d'une proposition.

Si quelque chose est vrai, alors son contraire est faux et réciproquement.

En Python, l'opérateur de négation se note not.

La table suivante (que l'on appelle table de vérité) résume l'effet de l'opérateur de négation

X not X
True False
False True

Par exemple, avec deux variables booléennes ArticleDisponible et RuptureDeStock, on pourrait écrire :

ArticleDisponible = not RuptureDeStock

Si RuptureDeStock vaut True avant cette affectation, alors ArticleDisponible vaudra False après cette affectation.

Inversement, si RuptureDeStock vaut False avant cette affectation, alors ArticleDisponible vaudra True après cette affectation.

II-2 La conjonction ou le "et logique"

La conjonction ou le et logique, représentée en Python par l'opérateur and, permet d'exprimer le fait que deux choses sont vraies simultanément.

Voilà la table de vérité de l'opérateur and :

X Y X and Y
False False False
False True False
True False False
True True True

Prenons un exemple.

La variable booléenne AmpouleFonctionne représente le fait qu'une ampoule électrique fonctionne.

Une autre variable booléenne InterrupteurOn est vraie si et seulement si l'interrupteur est en position On.

La variable booléenne LumiereAllumee représente le fait que la lumière est allumée.

Après l'affectation suivante :

  LumiereAllumee = AmpouleFonctionne and InterrupteurOn

la variable LumiereAllumee ne vaudra True que si les variables AmpouleFonctionne et InterrupteurOn valaient également True juste avant l'affectation.

II - 3 La disjonction (ou logique)

La disjonction (également appelée ou logique) de deux propositions est vraie si et seulement si au moins une de ces deux propositions est vraie.

Autrement dit, la disjonction de deux propositions n'est fausse que lorsque ces deux propositions sont fausses.

Par exemple, la proposition "Il est bête ou il ne comprend pas" ne sera fausse que si l'individu en question n'est pas bête et a très bien compris.

Attention ! le ou logique n'est pas un ou exclusif. La disjonction de deux propositions est vraie lorsque les deux propositions sont vraies. Par exemple, l'affirmation "Il pleut ou il y a du soleil" est vraie lorsqu'il pleut et qu'il y a du soleil en même temps.

L'opérateur de disjonction est représenté en Python par l'opérateur or. Voici, sa table de vérité:

X Y X or Y
False False False
False True True
True False True
True True True

Prenons un exemple.

La variable booléenne AmpouleFouttue représente le fait qu'une ampoule électrique ne fonctionne pas.

Une autre variable booléenne InterrupteurOff est vraie si et seulement si l'interrupteur est en position Off.

La variable booléenne LumiereEteinte représente le fait que la lumière est éteinte.

Après l'affectation suivante :

  LumiereEteinte = AmpouleFouttue or InterrupteurOff 

la variable LumiereEteinte ne vaudra True que si la variable AmpouleFouttue et/ou la variable InterrupteurOff avaient la valeur True juste avant l'affectation.

III - Expressions logiques

Une expression logique est une expression de type booléen, c'est à dire une expression pouvant prendre la valeur vrai ou faux.
III-1 Les variables booléennes

Vous connaissez déjà un cas particulièrement simple d'expression logique : ce sont les noms de variables booléennes.

Par exemple, si la variable LumiereEteinte est utilisée comme une variable booléenne, le simple nom de variable LumiereEteinte peut être considéré comme une expression logique.

III-2 Utilisation des opérateurs logiques

On peut également construire des expressions logiques en combinant des expressions logiques avec les opérateurs not, and et or.

Supposons par exemple que x, y et z soient des variables booléennes. Alors not x, x or y, x or y sont des expressions logiques. Tout comme z or (x and y), (not z and x) and (x or y), ...

De manière générale:

Note importante:

III-3 Utilisation des opérateurs de comparaison

Il existe encore un autre moyen de construire une expression logique : en utilisant des opérateurs de comparaison.

Un opérateur de comparaison est un opérateur qui permet de comparer deux expressions de même type.
III-3-1 Les six opérateurs

Il existe six opérateurs de comparaison :

Symbole
mathématique
Signification
= Egal à
Différent de
< Strictement inférieur à
> Strictement supérieur à
Inférieur ou égal à
Supérieur ou égal à

La notation des opérateurs de comparaison varie selon les langages:

Symbole
mathématique
Pascal Langage C, Java et Python
= = ==
<> !=
< < <
> > >
<= <=
>= >=
III-3-2 Comparaison d'expressions numériques

L'utilisation la plus fréquente des opérateurs de comparaison est la comparaison d'expressions numériques.

Le plus simple est la comparaison directe de deux variables numériques. Exemple:

x y x == y x != y x < y x >= y x > y x <= y
1 1 True False False True False True
1 2 False True True False False True
2 1 False True False True True False

Mais on peut bien sur comparer des expressions numériques quelconques. Par exemple, pour x=1 et y = 2 on aurait :

Expression logique Valeur
(x+1) == y True
(x+1)*(y+1) == 6 True
x+1 <= 2 True
x-1 < -y False
III-3-3 Comparaison de chaines de caractères

En Python, les six opérateurs de comparaison peuvent être utilisés avec des chaines de caractères, en se basant sur l'ordre lexicographique. Pour des chaines constituées de lettres uniquement, cet ordre est équivalent à l'ordre alphabétique. Exemple:

x y x = y x != y x < y x >= y x > y x <= y
'Trac' 'Trac' True False False True False True
'Trac' 'Truc' False True True False False True
'Truc' 'Trac' False True False True True False

Pour des chaines qui ne contiennent pas uniquement des lettres on se base sur l'ordre des caractères dans la table ASCII.