Résumé
Une condition est une expression dont la valeur est vraie ou fausse. Cette leçon étudie comment on les construit en C++ : les six opérateurs relationnels, qui comparent deux valeurs et produisent un bool ; les trois connecteurs logiques, &&, || et !, qui combinent des conditions comme la conjonction, la disjonction et la négation de la logique, et la priorité qui les ordonne entre eux et par rapport à l’arithmétique. Elle étudie aussi deux traits par lesquels C++ s’écarte de l’écriture mathématique : la chaîne 1 < x < 5, qui compile et ne signifie pas ce qu’elle semble dire, et l’évaluation en court-circuit, par laquelle le second opérande de && et de || n’est pas évalué quand le premier décide déjà du résultat, ce qui permet de protéger une opération dangereuse. Elle se termine par la négation des conditions composées au moyen des lois de De Morgan, vérifiée par des tables de vérité, et par son exemple central : la condition d’année bissextile et sa négation. L’unité n’a pas encore de décisions : les conditions sont évaluées et affichées comme true ou false, et la leçon Décisions leur confiera la conduite du programme.
Objectifs d’apprentissage
- Écrire en C++ des conditions composées qui traduisent des énoncés comme « est compris entre 1 et 10, bornes incluses ».
- Nier une condition composée avec les lois de De Morgan et vérifier l’équivalence par une table de vérité.
- Utiliser l’évaluation en court-circuit pour protéger une opération, comme dans
count != 0 && total / count > 2. - Détecter l’erreur qui consiste à écrire
1 < x < 5, expliquer ce qu’elle calcule et la corriger.
La condition comme expression
La leçon Caractères, booléens, conversions et constantes a présenté le type bool, avec ses deux valeurs true et false, et la leçon Arithmétique a montré qu’une expression a un arbre, que fixent la priorité et l’associativité, et un type, que fixent ses opérandes. Cette leçon réunit les deux idées. Une condition est une expression de type bool : non pas une instruction qui pose une question, mais un calcul dont le résultat est une réponse. count < 10 se calcule comme count + 1 : on prend les opérandes, on applique l’opérateur et on obtient une valeur, à ceci près que la valeur est true ou false au lieu d’un nombre. S’il en est ainsi, tout ce qui vaut pour les expressions arithmétiques vaut pour les conditions : elles ont une priorité, elles ont un arbre, on peut les ranger dans une variable nommée (const bool inRange{…}) et on peut les afficher. Il s’ensuit la question qui parcourt la leçon : étant donné une phrase (« l’année est bissextile », « l’âge est compris entre 18 et 65 »), quelle expression a exactement cette valeur de vérité pour toutes les données possibles ?
Chargement du contenu…