GEF 243BProgrammation informatique
appliquée
Expressions logiques
Revue
• Quelle est la valeur de a, b et c si les valeurs initiales étaient a = 2, b = 4 and c = 8b *= c++;
a += --b;
• Si a est int et initialement a = 7 quelle est la valeur de b si b est float?b = (float) (a/12);
Synopsis
• Logique• Opérateurs conditionnels
Opérateurs logiquesOpérateurs relationnels
• Expressions logiques• Expressions logiques compléments
Logique
Les insultes sont efficaces seulement là où les émotions sont présentes. "Who Mourns for Adonais?" stardate 3468.1.
Logique (logic)
• L’étude de la logique provient d’il y a bien longtemps en Grèce ancienne avec Aristote
• Beaucoup de concepts en mathématique moderne sont dues à l’élaboration des syllogismes (un mot bien bizarre) par Aristote
Touts les humains sont mortel
Les élofs sont humain
Vous allez tous mourir!
Logique (logical)
• Dans la vie nous posons souvent des questions qui peuvent avoir plusieurs réponses: Quelle est cette couleur?Comment fiable est-ce que c’est?Pourquoi trouvez-vous cela plate?...
• Ces questions sont bonnes pour la consommation par les humains, mais un ordinateur ne comprend que deux choses : on-off0-1vrai-faux
Logique (logical)
• Un morceau d’information est dit logique si il indique l’idée de vrai ou faux Une expression logique doit se réduire à une
valeur simple de vrai ou faux
• On se souvient que ANSI C99 a le type booltrue est 1 false est 0
• Vous devez avoir en inclusion stdbool.h
Opérateurs logiques
• En C il y a trois opérateurs logiques.
• Écoutez && apprenez || ! c’est votre choix.! – Opérateur non (pas)&& – Opérateur logique et|| – Opérateur logique ou
• Les opérateurs sont listés en ordre de précédence.
Logique – Table de vérité de l’opérateur non en C
x !x
false
zéro
true
1
true
non-zéro
false
0
Logique – Table de vérité de l’opérateur et en C
x y x && y
false
(0)
false
(0)
false
(0)
false
(0)true (non-
zéro)
false
(0)
true (non-zéro)
false
(0)
false
(0)
true (non-zéro)
true (non-zéro)
true
(1)
Logique – Table de vérité de l’opérateur ou en C
x y x || y
false
(0)
false
(0)
false
(0)
false
(0)true (non-zéro) true
(1)
true (non-zéro) false
(0)
true
(1)
true (non-zéro) true (non-zéro) true
(1)
Opérateurs relationnels
• Les opérateurs logiques sont la “colle” qui garde les expressions logiques ensembles.
• Les expressions logiques sont crées à partir des relations entre les données
• Par exemple, vous pouvez relier deux entiers ensemble en demandant:Est-ce que les entiers sont égales?Est-ce que un entier est plus grand que l’autre?Est-ce que un entier est le même ou plus petit?
• Il y a six opérateurs relationnels en C
Opérateurs relationnels
Opérateurs relationnels
• Les opérateurs relationnels ont des compléments
expression originale expression simplifiée
!(x < y) x >= y
!(x > y) x <= y
!(x != y) x == y
!(x <= y) x > y
!(x >= y) x < y
!(x == y) x != y
Opérateurs relationnels complément
• Les opérateurs logiques ont aussi leurs compléments : La règle de De MorganSi vous avez une expression du type !(…) et que vous
voulez enlever le non, vous appliquez le! à chaque sous expression et vous prenez le complément
(!x || !y) && z && (!t || u)
!( x && y || !z || t && !u )
Quiz Time
• Quel est l’équivalent positif de:
!( x || (y >= z) && !t || v )
!( y && !(y != z) || (v > t))