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 :
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;
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.
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.
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.
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.
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.
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:
Il existe encore un autre moyen de construire une expression logique : en utilisant des opérateurs de comparaison.
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 |
= | = | == |
≠ | <> | != |
< | < | < |
> | > | > |
≤ | <= | <= |
≥ | >= | >= |
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 |