Progr.IMT&ELProgr.IMT&EL
bool a, b;
0 && b =
a&&b
ET LOGIQUE
0
01
11
00
01 && b =
Evaluation paresseuse du ET logique:
L’opérande droit n'est PAS évalué
si celui de gauche vaut 0
a
b
0
b
LeETlogique
Ex: donner l'expression qui est vraie quand l'entier k
est compris entre 10 et 20 (bornes exclues): S43b9/12
Progr.IMT&ELProgr.IMT&EL
bool a, b;
0¦¦b =
a¦¦b
OU LOGIQUE
0
01
11
10
11¦¦b =
b
a1
b
LeOUlogique
Evaluation paresseuse du OU logique:
L’opérande droit n'est PAS évalué
si celui de gauche vaut 1
Ex: donner l'expression qui est vraie quand l'entier k est
strictement à l'extérieur de l'intervalle [10, 20] :
S43b10/12
Progr.IMT&EL
#define MAX 10
...
int tab[MAX];
...
if( i< MAX && tab[i] != 0)
tab[i]++ ;
autreexemple
LoideDeMorgan
SoitP1etP2deuxopérandesdevaleurVRAIouFAUX:
!(P1 && P2) == !P1 || !P2
!(P1 || P2) == !P1 && !P2
Ex: donner LA NEGATION de l'expression qui est vraie quand l'entier k
est compris entre 10 et 20 (bornes exclues): S43b11/12
Progr.IMT&ELRésumé
•Le type booléen n’existe pas en C standard 89, on
travaille le type entier à la place
•les valeurs booleennes FAUX / VRAI sont traitées comme
les entiers 0 / 1 .
•Réciproquement les opérateurs logiques convertissent
les valeurs de leur opérandes en FAUX (si égal à 0) ou en
VRAI (si ≠ 0)
•Le C standard 99 offre le type bool (include <stdbool.h> )
•Le C exploite les propriétés des opérateurs logiques pour
faire moins de calcul (évaluation paresseuse)
•Il faut maitriser les lois de De Morgan pour construire des
conditions complexes avec les opérateurs logiques
S43b12/12