Opérations booléennes fondamentales
Les opérations booléennes fondamentales constituent le coeur de l'algèbre de Boole. Elles permettent de manipuler des variables ne pouvant prendre que deux valeurs possibles : vrai et faux, ou encore 1 et 0. Toutes les expressions logiques utilisées en programmation, en électronique numérique et dans la conception des processeurs reposent sur un petit nombre d'opérations élémentaires.
Ces opérations servent à prendre des décisions, à contrôler l'exécution d'un programme, à effectuer des comparaisons, à simplifier des expressions logiques et à construire des circuits numériques. Les instructions conditionnelles, les boucles, les portes logiques, les filtres de recherche ainsi que les systèmes de contrôle utilisent continuellement ces opérateurs.
L'algèbre de Boole classique repose principalement sur trois opérations fondamentales :
- la négation (NON),
- la conjonction (ET),
- la disjonction (OU).
À partir de ces trois opérations, il est possible de construire toutes les autres opérations logiques telles que le OU exclusif (XOR), le NAND, le NOR, l'implication ou l'équivalence logique.
Les trois opérations fondamentales
Les opérations booléennes de base sont les suivantes :
| Nom | Symbole courant | Description |
|---|---|---|
| NON | ¬A, !A, NOT A | Inverse une valeur booléenne |
| ET | A ∧ B, A AND B | Vrai uniquement si les deux opérandes sont vrais |
| OU | A ∨ B, A OR B | Vrai si au moins un opérande est vrai |
Ces trois opérations sont suffisantes pour exprimer n'importe quelle fonction booléenne.
La négation (NON)
L'opérateur NON inverse une valeur logique.
Si la valeur est vraie, elle devient fausse.
Si elle est fausse, elle devient vraie.
Sa définition est extrêmement simple :
| A | NON A |
|---|---|
| 0 | 1 |
| 1 | 0 |
On l'écrit selon les notations :
| NON A |
ou
| ¬A |
ou encore
| !A |
suivant le langage de programmation.
Exemple de négation
Supposons :
| UtilisateurConnecté = VRAI |
Alors :
| NON UtilisateurConnecté |
produit :
| FAUX |
De même :
| NON FAUX |
donne :
| VRAI |
Utilisation de NON
La négation est très utilisée pour inverser une condition.
Par exemple :
|
SI NON FichierExiste ALORS CréerFichier FIN SI |
Le programme exécute l'instruction uniquement lorsque le fichier n'existe pas.
La conjonction (ET)
L'opérateur ET exige que toutes les conditions soient vraies.
Si une seule condition est fausse, le résultat devient faux.
Sa table de vérité est :
| A | B | A ET B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Le résultat est donc vrai uniquement dans un seul cas.
Exemple de ET
Considérons :
|
CompteActif = VRAI MotDePasseValide = VRAI |
L'expression :
| CompteActif ET MotDePasseValide |
renvoie :
| VRAI |
En revanche :
|
CompteActif = VRAI MotDePasseValide = FAUX |
produit :
| FAUX |
Utilisation du ET
Le ET permet de vérifier plusieurs contraintes simultanément.
Exemple :
|
SI EstMajeur ET PossèdePermis ALORS AutoriserLocation FIN SI |
Les deux conditions doivent être satisfaites.
La disjonction (OU)
L'opérateur OU est moins restrictif.
Il suffit qu'une seule condition soit vraie.
Sa table de vérité est :
| A | B | A OU B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
Le seul cas faux est lorsque les deux opérandes sont faux.
Exemple de OU
Supposons :
|
Administrateur = FAUX SuperUtilisateur = VRAI |
Alors :
| Administrateur OU SuperUtilisateur |
renvoie :
| VRAI |
L'utilisateur possède donc suffisamment de privilèges.
Utilisation du OU
Le OU est utilisé lorsqu'il existe plusieurs moyens d'obtenir un résultat.
Exemple :
|
SI PaiementCarte OU PaiementComptant ALORS ValiderCommande FIN SI |
L'un des deux paiements suffit.
Priorité des opérateurs
Lorsque plusieurs opérations sont présentes dans une même expression, un ordre de priorité est appliqué.
En général :
- NON
- ET
- OU
Ainsi :
| NON A ET B |
est interprété comme :
| (NON A) ET B |
et non :
| NON (A ET B) |
Les parenthèses permettent de lever toute ambiguïté.
Expressions booléennes
Les opérations peuvent être combinées.
Par exemple :
|
(A ET B) OU (C ET NON D) |
Une expression complexe est toujours évaluée pour produire une seule valeur booléenne.
Exemple
Considérons :
|
A = VRAI B = FAUX C = VRAI D = FAUX |
L'expression :
|
(A ET B) OU (C ET NON D) |
devient :
|
(VRAI ET FAUX) OU (VRAI ET VRAI) |
soit :
| FAUX OU VRAI |
Le résultat final est :
| VRAI |
Évaluation d'une condition
Les langages de programmation utilisent continuellement les opérations booléennes.
Par exemple :
|
SI Solde > 0 ET CompteActif ALORS |
La comparaison :
| Solde > 0 |
retourne déjà une valeur booléenne.
Le ET combine ensuite les deux résultats.
Court-circuit logique
La plupart des langages modernes utilisent l'évaluation dite à court-circuit (short-circuit evaluation).
Avec un ET :
| A ET B |
si A est faux, B n'est même pas évalué.
En effet, le résultat sera forcément faux.
Inversement, avec un OU :
| A OU B |
si A est vrai, B n'est pas évalué.
Le résultat est déjà connu.
Exemple
|
SI Pointeur ≠ NULL ET Pointeur->Valeur = 10 |
Le second test n'est exécuté que si le pointeur est valide.
Cette technique évite de nombreuses erreurs.
Opérations dérivées
À partir de NON, ET et OU, on construit facilement d'autres opérateurs.
Les plus connus sont :
| Opération | Description |
|---|---|
| XOR | OU exclusif |
| NAND | NON(ET) |
| NOR | NON(OU) |
| XNOR | Équivalence logique |
| Implication | Si A alors B |
Ces opérateurs seront étudiés dans les chapitres suivants.
Exemple de combinaison
Une condition complexe peut s'écrire :
|
SI ( EstAdministrateur OU EstModérateur ) ET CompteActif ET NON CompteSuspendu ALORS AutoriserConnexion FIN SI |
L'algèbre de Boole permet d'écrire ce type de décision de façon très concise.
Utilisation dans les circuits électroniques
Les opérations booléennes ne servent pas uniquement en programmation.
Chaque opération correspond également à une porte logique.
| Opération | Porte logique |
|---|---|
| NON | Inverseur |
| ET | Porte AND |
| OU | Porte OR |
Ces portes constituent les briques élémentaires des processeurs modernes.
Représentation binaire
Dans un ordinateur :
| 0 |
correspond généralement à :
| FAUX |
et
| 1 |
à :
| VRAI |
Les opérations booléennes peuvent ainsi être réalisées directement sur les bits du processeur.
Exemple en pseudocode
|
MODULE AutoriserAccès SI CompteActif ET MotDePasseValide ET NON CompteBloqué ALORS RETOURNER VRAI SINON RETOURNER FAUX FIN SI FIN MODULE |
Exemple en Java
- boolean autoriser =
- compteActif
- && motDePasseValide
- && !compteBloque;
Exemple en C
- bool autoriser =
- compteActif
- && motDePasseValide
- && !compteBloque;
Exemple en Pascal
- Autoriser :=
- CompteActif
- and MotDePasseValide
- and not CompteBloque;
Exemple en Visual Basic
- Autoriser =
- CompteActif AndAlso
- MotDePasseValide AndAlso
- Not CompteBloque
Exemple en Python
- autoriser = (
- compte_actif
- and mot_de_passe_valide
- and not compte_bloque
- )
Tableau récapitulatif
| Opération | Résultat |
|---|---|
| NON | Inverse une valeur |
| ET | Toutes les conditions doivent être vraies |
| OU | Au moins une condition doit être être vraie |
Bonnes pratiques
Pour écrire des expressions booléennes lisibles, il est recommandé de :
- utiliser des noms de variables explicites ;
- éviter les doubles négations ;
- ajouter des parenthèses lorsque l'expression devient complexe ;
- limiter le nombre d'opérations dans une même condition ;
- utiliser le court-circuit lorsque le langage le permet ;
- décomposer les expressions longues en variables intermédiaires ;
- documenter les conditions particulièrement complexes.
Remarque
Les opérations NON, ET et OU représentent les fondations de toute l'algèbre de Boole. Elles sont utilisées aussi bien dans les langages de programmation que dans les circuits électroniques, les processeurs, les compilateurs, les bases de données ou les systèmes de contrôle industriels. Toutes les opérations logiques plus avancées peuvent être construites à partir de ces trois opérateurs élémentaires, ce qui en fait les briques fondamentales de l'informatique moderne.