GEF 243B Programmation informatique appliquée Expressions logiques §5.1
Revue Quelle est la valeur de a, b et c si les valeurs initiales étaient a = 2, b = 4 and c = 8 b *= 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); C = 9, b = 31 and a = 33. b = 0.0 JGA Beaulieu
Synopsis Logique Opérateurs conditionnels Expressions logiques Opérateurs logiques Opérateurs relationnels Expressions logiques Expressions logiques compléments Tell them to note that there is a difference between conditional and logical, this will be explained as we go. JGA Beaulieu
"Who Mourns for Adonais?" stardate 3468.1. Logique There is a difference between logic and logical data. Mr Spock is logical because he uses logic. Insufficient facts always invite danger. "Space Seed," stardate 3141.9. As we know, the value of pi is a transcendental figure without resolution. "Wolf in the Fold," stardate 3615.4. Madness has no purpose. Or reason. But it may have a goal. "The Alternative Factor," stardate 3088.7. Computers make excellent and efficient servants, but I have no wish to serve under them. Captain, a starship also runs on loyalty to one man. And nothing can replace it or him. "The Ultimate Computer," stardate 4729.4. Totally illogical, there was no chance. "The Galileo Seven," stardate 2822.3. Earthment like Rameses, Alexander, Ceasar, Napoleon, Hitler, Lee Kuan. Your whole Earth history is made up of men seeking absolute power. "Patterns of Force," stardate 2534.7. Les insultes sont efficaces seulement là où les émotions sont présentes. "Who Mourns for Adonais?" stardate 3468.1. JGA Beaulieu
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! Syllogistic logic is a form of deductive reasoning consisting of a major premise, a minor premise, and a conclusion; for example, All humans are mortal, the major premise, I am a human, the minor premise, therefore, I am mortal, the conclusion. It often results in nonsensical arguments: All bakers have bread; you have some bread, therefore you are a baker. En français premise est prémisse JGA Beaulieu
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-off 0-1 vrai-faux What do we mean when we say logical expression? It leads to one of two conclusions: true or false JGA Beaulieu
On se souvient que ANSI C99 a le type bool 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 bool true est 1 false est 0 Vous devez avoir en inclusion stdbool.h Cependant ceci a été fait pour vous dans le SpiderRobot So a logical expression is one that leads to one of two possibilities, true or false. JGA Beaulieu
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. These are the three logical operators that are used to define logical expression or glue them together. They are listed in order of precedence. JGA Beaulieu
Logique – Table de vérité de l’opérateur non en C x !x false zéro true 1 non-zéro Note that the !x when x is zero results in the default value of 1. It could have been any other nonzero value, but the compiler defaults to 1. This is because if(!x) is the same as writing if(x==0), so if x is zero, it is replaced with the default compiler value of 1. When you see zero, read false and nonzero read true. JGA Beaulieu
Logique – Table de vérité de l’opérateur et en C x y x && y false (0) true (non-zéro) true (1) JGA Beaulieu
Logique – Table de vérité de l’opérateur ou en C x y x || y false (0) true (non-zéro) true (1) JGA Beaulieu
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 JGA Beaulieu
Opérateurs relationnels Reminder, the higher the precedence number, the higher the precedence. This should be no surprise to them since they have done Java JGA Beaulieu
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 Sometimes when you write code, you write an expression in the negative. The human brain is much simpler at positive thinking, well for most of us anyway. JGA Beaulieu
Opérateurs relationnels complément Les opérateurs logiques ont aussi leurs compléments : La règle de De Morgan Si 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 ) Remember positive logic is easier to learn than negative logic. The complement of !|| is &&, !&& is || and !! is nothing. If there are relational relationship then you apply the complement on the previous slide. && is higher precedence than ||, which is why this works! (!x || !y) && z && (!t || u) JGA Beaulieu
Quiz Time Quel est l’équivalent positif de: !( x || (y >= z) && !t || v ) !( y && !(y != z) || (v > t)) Send the students to the blackboard and ask them to solve one of the problem. !x && ((y<z) || t) && !v ( !y||(y!=z) ) && (v<=t) JGA Beaulieu