Outils pour utilisateurs

Outils du site


nsi:premiere:logique:expressions

Expressions logiques

Exemple

“Un individu est un super-héros s'il a des super-pouvoirs ou des super-gadgets et si ce n'est pas un vilain.”

On identifie ici :

  • des booléens :
    1. “est un super-héros” → SH
    2. “a des super-pouvoirs” → SP
    3. “a des super-gadgets” → SG
    4. “est un vilain” → V
  • des opérateurs logiques :
    1. “ou” → or
    2. “et” → and
    3. “ne… pas” → not

On peut reformuler : SH = SP or SG and not V

Décider pour les cas suivants : Batman, Superman, le Joker, Magneto.

Pour l'instant L'expression est ambiguë : Il faudrait clarifier l'ordre dans lequel le calcul est fait, définir des priorités ou mettre des parenthèses.

  1. SH = (SP or SG) and (not V)
  2. SH = SP or (SG and (not V))

Dans notre exemple, nous voulons le parenthésage numéro 1

Opérateurs logiques

On peut prouver que les opérateurs or, and et not suffisent à faire tout ce qui est nécessaire. Il faut donc très bien les comprendre.

not

not a est vrai si et seulement si a est faux.

On peut représenter cela sous forme d'un tableau de vérité.

a not a
False True
True False

Il est plus commode d'écrire 0 pour False et 1 pour True :

a not a
0 1
1 0

or

a or b est vrai si et seulement si au moins un parmi a et b est vrai.

On peut représenter cela sous forme d'un tableau de vérité.

a b a or b
False False False
False True True
True False True
True True True

Il est plus commode d'écrire 0 pour False et 1 pour True :

a b a or b
0 0 0
0 1 1
1 0 1
1 1 1

On peut généraliser au cas d'un ou à plus de 2 opérandes :

a or b or c or d or ... est vrai si et seulement si au moins 1 des opérandes est vraie.

and

a and b est vrai si et seulement si a et b sont tous les deux vrais.

On peut représenter cela sous forme d'un tableau de vérité.

a b a and b
False False False
False True False
True False False
True True True

Il est plus commode d'écrire 0 pour False et 1 pour True :

a b a and b
0 0 0
0 1 0
1 0 0
1 1 1

On peut généraliser au cas d'un ou à plus de 2 opérandes :

a and b and c and d and ... est faux si et seulement si au moins 1 des opérandes est fausse.

Expressions

Comme on peut assembler des + et des - pour former une expression mathématique, on va pouvoir combiner des or, des and et des not pour former une expression logique.

On peut par exemple tester ces expressions en console :

>>> (True or True) and False
False
>>> True or (True and False)
True
>>> True or True and False
True
>>> not ( True and False ) and (False or True and True)
True

On décide, par convention, que not a la priorité d'exécution la plus élevée, and vient en second et or est le moins prioritaire. Autrement dit not a and b or c est équivalent à ((not a) and b) or c.

En Python, les opérateurs de comparaison sont prioritaires sur les opérateurs logiques. Ainsi,
(x >= 3) and (x < 10)x >= 3 and x < 10
Ce qui permet d'alléger grandement les expressions.

nsi/premiere/logique/expressions.txt · Dernière modification : de goupillwiki