Le type boolĂ©enâïž
En 1847, George Boole invente une algÚbre pour formaliser la logique. Il définit trois opérateurs de base, qui vont permettre de traiter tous les problÚmes de logique.
I. Exemples de propositions et opĂ©rateurs de basesâïž
Exemple
a : Au self, il y a des frites tous les jours
b : Il est interdit de fumer dans le lycée
Une proposition peut ĂȘtre vraie ou fausse
Vrai : True ou 1
Faux : False ou 0
Donner la valeur de vérité des propositions a et b
a : Au self, il y a des frites tous les jours
b : Il est interdit de fumer dans le lycée
a est une proposition ...
b est une proposition ...
Opérateur ou
a : Au self, il y a des frites tous les jours
b : Il est interdit de fumer dans le lycée
a ou b est une proposition ...
On peut noter a or b, ou a \(\vee\) b (correspond au symbole \(\cup\))
a ou b est une proposition ...
Opérateur et
a : Au self, il y a des frites tous les jours
b : Il est interdit de fumer dans le lycée
a et b est une proposition ...
On peut noter a and b, ou a \(\wedge\) b (correspond au symbole \(\cap\))
a et b est une proposition ...
Opérateur non
a : Au self, il y a des frites tous les jours
b : Il est interdit de fumer dans le lycée
non a : ...
non b : ...
On peut noter not a ou \(\neg\)a
non a est une proposition ...
non b est une proposition ...
II. Tables de vĂ©ritĂ©sâïž
On jette deux dés
Des propositions peuvent ĂȘtre vraies ou fausses.
Par exemple : on jette deux dés.
x : le résultat du premier dé est pair
y : le résultat du deuxiÚme dé est pair
Arbre de toutes les possibilités :
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
Présentation des tables de vérités
La présentation usuelle reprend l'ordre trouvé avec l'arbre ci-dessus :
- Pour une seule proposition x:
x | ... |
---|---|
0 | ... |
1 | ... |
- Pour deux propositions x et y
x | y | ... |
---|---|---|
0 | 0 | ... |
0 | 1 | ... |
1 | 0 | ... |
1 | 1 | ... |
Table de vérité de l'opérateur non
Compléter la table de vérité
\(x\) | \(\overline{x}\) |
---|---|
0 | ... |
1 | ... |
Table de vérité de l'opérateur ou
Compléter la table de vérité
x | y | x \(\vee\) y |
---|---|---|
0 | 0 | ... |
0 | 1 | ... |
1 | 0 | ... |
1 | 1 | ... |
On peut faire l'analogie avec des interrupteurs en parallĂšle.
Table de vérité de l'opérateur et
Compléter la table de vérité
x | y | x \(\wedge\) y |
---|---|---|
0 | 0 | ... |
0 | 1 | ... |
1 | 0 | ... |
1 | 1 | ... |
On peut faire l'analogie avec des interrupteurs en série.
Remarque
On peut écrire toutes les tables de vérités en remplaçant les 0 par des F (pour Faux), et les 1 par des V (pour Vrai)
III. Exemples dâexpressions boolĂ©ennes :âïž
1. non (a et b)âïž
non (a et b)
Démontrer en utilisant des tables de vérité que les expressions booléennes suivantes sont équivalentes :
- not (a and b)
- not a or not b
Pour cela recopier et remplir les tables de vérités suivantes :
a | b | a et b | non (a et b) |
---|---|---|---|
... | ... | ... | ... |
... | ... | ... | ... |
... | ... | ... | ... |
... | ... | ... | ... |
a | b | non a | non b | (non a) or (nonb) |
---|---|---|---|---|
... | ... | ... | ... | ... |
... | ... | ... | ... | ... |
... | ... | ... | ... | ... |
... | ... | ... | ... | ... |
Les derniĂšres colonnes de ces deux tableaux sont \(\hspace{7em}\), ce qui prouve ...
2. non (a ou b)âïž
non (a ou b)
Démontrer en utilisant des tables de vérité que les expressions booléennes suivantes sont équivalentes :
- not (a or b)
- not a and not b
Pour cela recopier et remplir les tables de vérités suivantes :
a | b | a ou b | non (a ou b) |
---|---|---|---|
... | ... | ... | ... |
... | ... | ... | ... |
... | ... | ... | ... |
... | ... | ... | ... |
a | b | non a | non b | (non a) and (nonb) |
---|---|---|---|---|
... | ... | ... | ... | ... |
... | ... | ... | ... | ... |
... | ... | ... | ... | ... |
... | ... | ... | ... | ... |
Les derniĂšres colonnes de ces deux tableaux sont \(\hspace{7em}\), ce qui prouve ...
Remarque : ces deux propriétés sont connues sous le nom de lois de De Morgan.
IV. Un opĂ©rateur supplĂ©mentaire : xorâïž
Fromage ou dessert ?
Lorsquâau restaurant on vous demande « fromage ou dessert ? », quels sont les possibilitĂ©s auxquelles vous avez le droit ?
On peut choisir ...
Il sâagit du « ou » exclusif, notĂ© xor.
Exemple du jardinier
Un jardinier doit Ă©laguer tous les arbres qui mesurent plus de 10 mĂštres ou qui ont plus de 10 ans. Peut-il tailler des arbres qui mesurent plus de 10 mĂštres et ont plus de 10 ans ?
Il ...
Il sâagit du « ou » inclusif, notĂ© or.
Table de vérité de l'opérateur xor
Recopier et compléter la table de vérité
x | y | x xor y |
---|---|---|
... | ... | ... |
... | ... | ... |
... | ... | ... |
... | ... | ... |
V. Variables boolĂ©ennes et Pythonâïž
1. Les variables boolĂ©ennesâïž
Tester en console
Que s'affiche-t-il dans la console ?
Des variables booléennes
Souvent les variables booléennes sont le résultat de tests :
Que s'affiche-t-il dans la console ?
2. Python et les opĂ©rateursâïž
Les booléens en Python
En Python, les booléens peuvent prendre les valeurs True
et False
.
Les opérations booléennes de bases sont and
, or
et not
.
Tester en console
Que s'affiche-t-il dans la console ?
Les priorités
Comme pour les opérations mathématiques, il y a des priorités sur les opérations booléennes.
Que s'affiche-t-il dans la console ?
Les priorités
Le ... est prioritaire sur le ... . De mĂȘme, ... est prioritaire sur les autres opĂ©rations.
Que s'affiche-t-il dans la console ?
Attention
Pour Ă©viter toute confusion, il est vivement recommandĂ© dâutiliser des parenthĂšses.
3. Exemplesâïž
Question 1
Expliquer pourquoi lâexpression 3 == 3 or x == y est vraie pour toute valeur de x et de y.
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
Question 2
Expliquer pourquoi lâexpression 1 == 2 and x == y est fausse pour toute valeur de x et de y.
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
VI. CaractĂšre sĂ©quentiel de certains opĂ©rateurs boolĂ©ens.âïž
Python paresseux
Lorsque Python Ă©value une expression boolĂ©enne, il le fait de façon paresseuse. Câest Ă dire que si la partie gauche dâun or est vraie, il nâĂ©value pas la partie droite. De mĂȘme si la partie gauche dâun and est fausse, la partie droite nâest pas Ă©valuĂ©e.
Tester les Ă©valuations paresseuses
Que s'affiche-t-il dans la console ?
Diviser par 0 ?
Si la division 1/x Ă©tait Ă©valuĂ©e, il y aurait une erreur, puisque lâon ne peut pas diviser par 0.
Python paresseux
Dans les deux cas, lâĂ©valuation nâest pas faite puisque le rĂ©sultat de lâexpression a dĂ©jĂ pu ĂȘtre dĂ©terminĂ© grĂące Ă la partie gauche.
VII. Exercicesâïž
Exercice 1
Déterminer la table de vérité de : a ou (non b)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
Exercice 2
Déterminer la table de vérité de : (non a) et b
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
Exercice 3 Ă utiliser pour les exercices suivants
Faire un arbre de toutes les possibilitĂ©s avec trois propositions a, b et c comme nous lâavons fait en cours pour deux propositions.
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
Exercice 4
Déterminer la table de vérité de : (a ou b) et c
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
Exercice 5
Déterminer la table de vérité de : (a et b) ou c
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
Exercice 6
DĂ©montrer que a xor b est Ă©quivalent Ă : (a ou b) et (non (a et b))
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)
\(\hspace{5em}\)