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 Java, la valeur vrai est représenté par true et la valeur faux par false.

D'autre part, le type booléen se note boolean et une variable booléenne se déclare de la manière suivante:

  boolean nom de la variable;

Optionnellement une variable booléenne peut être initialisée dans sa déclaration. On pourrait par exemple écrire:

  boolean RuptureDeStock = 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 Java, l'opérateur de négation se note !.

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

X ! X
true false
false true

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

ArticleDisponible = ! 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 Java par l'opérateur &&, permet d'exprimer le fait que deux choses sont vraies simultanément.

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

X Y X && 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 && 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 Java par l'opérateur ||. Voici, sa table de vérité:

X Y X || 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 || 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 déclaré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 d'autres expressions logiques avec les opérateurs !, &&, ||.

Supposons par exemple que x, y et z soient des variables booléennes. Alors ! x, x && y, x || y sont des expressions logiques. Tout comme z || (x && y), (! z && x) && (x || 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 et Java
= = ==
<> !=
< < <
> > >
<= <=
>= >=
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