Chapitre 5 : Les booléens.

Introduction :

Un ordinateur ne connaît au fond que deux états : le courant passe, ou il ne passe pas. Mais comment, à partir d'un choix aussi pauvre que « oui / non », une machine peut-elle comparer, décider, suivre un chemin plutôt qu'un autre ?

Dès 1847, George Boole imaginait une algèbre fondée sur ces deux seules valeurs. Et si toute la logique d'un programme pouvait s'y ramener ?

1. Définition :

Un booléen n'a que deux valeurs possibles : VRAI(True) ou FAUX(False).

Il peut être associé aux nombres 0 et 1.

2. Définition :

Dans l'algèbre de Boole, il y a trois opérations fondamentales :

Ce sont des fonctions que l'on appelle "fonction logique".

3. Tables de vérité :

On peut résumer une fonction logique à l'aide d'une table de vérité.

Il faut énumérer toutes les possibilités d'entrées et regarder les sorties possibles.

4. Exercice : tables de vérité des fonctions "ou", "et" et "non".

À faire dans le cahier.

Compléter les tables de vérité suivantes :

5. Exercice : table de vérité de not(x or y) and z.

À faire dans le cahier.

Compléter la table de vérité suivante

\(x\) \(y\) \(z\) \(x \text{ or } y\) \( not(x \text{ or } y)\) \( not(x \text{ or } y) \text{ and } z\)
F F F
F F V
F V F
F V V
V F F
V F V
V V F
V V V

6. Exercice : table de vérité de not(x) or ((x and y) or z).

À faire dans le cahier.

Compléter la table de vérité suivante

\(x\) \(y\) \(z\) \(x \text{ and } y\) \((x \text{ and } y) \text{ or } z\) \(not(x) or ((x \text{ and } y) \text{ or } z)\)
F F F
F F V
F V F
F V V
V F F
V F V
V V F
V V V

7. Exercice : Simplification logique

À faire dans le cahier.

On considère le programme suivant :

def test_bool(a,b,c):
    return not(a) or ((b and c) or a)

Simplifier l'écriture de ce code à l'aide d'une table de vérité.

Écrire ensuite une fonction simplifie qui doit toujours renvoyer le même booléen que test_bool aurait renvoyé pour les mêmes arguments a, b, c.

def simplifie(a,b,c): return ...

    
>>>

8. OU exclusif :

À faire dans le cahier.

Établir la table de vérité de l'expression (x and not(y)) or (not(x) and y ).

Cette fonction est appelée "xor" ou "ou exclusif".

9. Distributivité :

À faire dans le cahier.

On veut savoir si la distributivité marche avec les booléens.

Soit \(a\), \(b\) et \(c\) des booléens

  1. Établir la table de vérité de \(a \times (b+c) \).
  2. Établir la table de vérité de \(a \times b + a \times c \).
  3. Conclure si l'égalité \(a \times (b+c) = a \times b + a \times c \) est vraie ou non.

10. QCM : évaluation d'expressions booléennes.

À faire dans le cahier.

Tu noteras dans ton cahier les questions et les bonnes réponses associées.

Pour chaque expression, indique si elle vaut True ou False.

  1. Que vaut (3 > 2) or (7 == 9) ?
    1. True
    2. False
  2. Que vaut not (3 > 12) ?
    1. True
    2. False
  3. Que vaut (3 > 2) and (7 == 9) ?
    1. True
    2. False
  4. Que vaut not ( (12 > 3) and (8 == 4 + 4)) ?
    1. True
    2. False
  5. Que vaut (5 <= 5) and (10 != 2 * 5) ?
    1. True
    2. False
  6. Que vaut not (7 < 3) or (4 >= 4) ?
    1. True
    2. False
  7. Que vaut (2 + 3 == 5) and not (6 < 2) ?
    1. True
    2. False
  8. Que vaut not( (10 > 1) or (3 == 8) ) ?
    1. True
    2. False
  9. Que vaut (4 != 4) or ( (3 < 9) and (2 >= 1) ) ?
    1. True
    2. False
  10. Que vaut (7 >= 7) and not(5 > 10) ?
    1. True
    2. False
  11. Que vaut not( (2 == 2) and (3 != 3) ) ?
    1. True
    2. False
  12. Que vaut (1 < 0) or not(4 <= 4) ?
    1. True
    2. False
  13. Que vaut (8 > 3) and (2 < 1 or 5 == 5) ?
    1. True
    2. False
  14. Que vaut not( (9 < 2) or (3 >= 1 and 6 == 3 * 2) ) ?
    1. True
    2. False
  15. Que vaut (0 == 0) or (1 == 2 and not(3 < 7)) ?
    1. True
    2. False
  16. Que vaut not( not(5 > 2) ) ?
    1. True
    2. False
  17. Que vaut (4 + 1 > 2 * 3) or (10 / 2 == 5) ?
    1. True
    2. False
  18. Que vaut (3**2 == 9) and not(8 % 2 != 0) ?
    1. True
    2. False
  19. Que vaut not( (1 != 1) or (2 == 2 and 3 < 1) ) ?
    1. True
    2. False
  20. Que vaut (7 > 1) and ( (2 > 9) or not(4 < 2) ) ?
    1. True
    2. False