Chapitre 15 - Booléens et tables de vérité▲
Les booléens ont été inventés par Monsieur Boole dans le but de créer des fonctions de base, manipulant des valeurs logiques, qui, associées les unes aux autres, pourraient donner d'autres fonctions beaucoup plus complexes.
Les booléens (boolean en anglais et en Pascal) ne peuvent prendre que deux valeurs possibles : faux (false) ou vrai (true), et sont souvent codées en 0 ou 1.
Ces valeurs sont analogues aux états possibles d'un interrupteur : ouvert ou fermé, d'une lampe : allumée ou éteinte.
En bref, les booléens ne sont utiles que pour connaître un état : vrai ou faux et en général pour caractériser si une condition est vraie ou fausse.
Vous les utilisez déjà sans toujours le savoir dans les blocs if, until et while : si telle condition est vraie, alors..., ...jusqu'à ce que la condition soit vraie, tant que la condition est vraie...
Boole inventa une algèbre qui porte son nom : l'algèbre de Boole.
C'est cette dernière qui nous permet de faire des opérations sur les booléens grâce à des opérateurs (voir chapitre 2 sur les opérateurs) : NOT (non), OR (ou), AND (et), XOR (ou exclusif), NAND (inverse de et), NOR (inverse de ou).
En Turbo Pascal 7.0 n'existent que les opérateurs NOT, OR, AND et XOR, qui suffisent (en les combinant) à retrouver les autres.
Ainsi, NAND = NOT(AND) et NOR = NOT(OR).
Les tables de vérité des opérateurs logiques disponibles sur Turbo Pascal 7.0 se trouvent en fin de chapitre.
Syntaxe :
Var
nom_de_variable : Boolean
;
Pour donner une valeur à une variable booléenne, on procède comme pour tout autre type de variable, à l'aide de l'opérateur d'assignation := .
Syntaxes :
nom_de_variable := true
;
nom_de_variable := false
;
Pour assigner à une variable le résultat d'une condition, on peut remplacer la syntaxe une structure IF :
if
condition then
nom_de_variable_booleenne := true
;
par une syntaxe bien plus simple :
nom_de_variable := condition;
Exemple :
Test := (x > 100
) and
(u = 'coucou'
);
Dans une structure if, until ou while), on peut avantageusement utiliser une condition sans spécifier sa valeur qui sera alors prise par défaut égale à true.
C'est-à -dire que si on ne précise pas la valeur d'une variable booléenne ou d'une condition dans une structure if, par exemple, le compilateur Turbo Pascal se dira systématiquement : si variable est true, alors faire...
Il devient donc inutile de spécifier la valeur de la variable dans ce cas là .
Syntaxes :
if
nom_de_variable_booleenne then
instruction;
{ ou }
if
condition then
instruction;
repeat
instructions
until
nom_de_variable;
{ ou }
repeat
instructions
until
condition;
while
nom_de_variable do
instruction;
{ ou }
while
condition do
instruction;
Nous avons vu plus haut que les opérateurs spécifiques aux booléens (NOT, OR, AND, XOR) pouvaient se composer pour donner des expressions plus complexes.
Il est bien entendu possible d'introduire dans ces expressions le opérateurs relationnels (=, <, >, <=, >=, <>) et, plus généralement, tous les autres opérateurs disponibles en Turbo Pascal.
Vous pouvez même utiliser directement des expressions, qu'elles soient mathématiques ou non.
Exemples :
Test := (Length(u) <= 20
) or
((sin(a) * pi) < x);
Ici, la variable booléenne test devient vraie si la longueur de la chaîne u n'excède pas 20 caractères ou si le sinus de l'angle a multiplié par la valeur de pi est strictement inférieur à la valeur de x.
if
(a = 0
) or
((b = 0
) and
(c = 0
)) then
Writeln('La lampe est allumée'
);
Ici, écriture à l'écran d'un message si a est nul ou si (b et c) sont simultanément nuls.
Note : si vous affichez à l'écran la valeur d'une variable booléenne, il s'affichera FALSE ou TRUE (selon sa valeur effective) en caractères majuscules.