Opérateurs logiques, partie 3
Fait partie de la section Fondamentaux du Journey C++ de Coddy — leçon 26 sur 74.
Lors de la vérification de plusieurs conditions, l'ordinateur s'arrête de vérifier dès qu'il connaît la réponse finale (c'est ce qu'on appelle l'évaluation court-circuit).
Par exemple :
int x = 0;
int y = 5;
bool result = x != 0 && y / x > 2;Ici x est égal à 0, par conséquent il n'évaluera pas y / x > 2. Si nous devions inverser l'ordre :
bool result = y / x > 2 && x != 0;Cela entraînera une erreur car y sera divisé par 0, ce qui est illégal en mathématiques.
Cette technique est utilisée pour optimiser l'évaluation des expressions logiques. Par exemple :
int a = 0;
int b = 2;
int c = 3;
int d = 5;
bool result = (a > 0 && b < 2) || (c < -5 && d < 10);Dans cet exemple, b < 2 et d < 10 ne seront pas évalués car a > 0 et c < -5 sont tous deux faux.
Défi
DébutantCréez un programme pour décider si c'est une bonne journée pour la production d'énergie par panneaux solaires
Initialisez ces variables :
isSunnyavec la valeur truewindSpeedavec la valeur 5.4temperatureavec la valeur 23solarPanelOutputavec la valeur 9isCloudyavec la valeur false
Créez une expression logique qui vérifie TOUTES ces conditions :
- Il fait beau (sunny)
- La vitesse du vent est inférieure à 10
- La production du panneau solaire est inférieure à 15
- La température est supérieure à 20 OU il n'y a PAS de nuages
Aide-mémoire
L'évaluation en court-circuit signifie que l'ordinateur arrête de vérifier les conditions dès qu'il connaît la réponse finale.
Avec && (ET), si la première condition est fausse, la seconde ne sera pas évaluée :
int x = 0;
int y = 5;
bool result = x != 0 && y / x > 2; // y / x > 2 n'est pas évaluéeAvec || (OU), si la première condition est vraie, la seconde ne sera pas évaluée :
bool result = (a > 0 && b < 2) || (c < -5 && d < 10);
// Si a > 0 est faux, alors c < -5 et d < 10 ne seront pas évaluésCela évite les erreurs (comme la division par zéro) et optimise les performances en évitant les évaluations inutiles.
Essayez vous-même
#include <iostream>
int main() {
// Initialiser les variables
// L'expression logique complète
bool result =
// Afficher les résultats
std::cout << "1. Is it sunny? " << std::boolalpha << isSunny << std::endl;
std::cout << "2. Is wind speed safe? " << (windSpeed < 10) << std::endl;
std::cout << "3. Do panels produce less? " << (solarPanelOutput < 15) << std::endl;
std::cout << "4. Is temperature good OR no clouds? " << (temperature > 20 || !isCloudy) << std::endl;
std::cout << "5. Final result: " << result << std::endl;
return 0;
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloIncrémentation / DécrémentationPost-incrémentation / Post-décrémentationRaccourcis arithmétiquesOpérateurs de comparaisonComparaison de chaînes7Bases des entrées/sorties
Instruction coutInstruction cinSaisie de chaînes de caractèresRécapitulatif - Jusqu'à 120Récapitulatif - Vrai ou Faux5Opérateurs, partie 2
Opérateurs logiques, partie 1Opérateurs logiques, partie 2Récapitulatif - Logique simpleOpérateurs logiques, partie 33Variables - Partie 2
Déclaration de typeConventions de nommageRécapitulatif - Initialisation des variablesType Casting - Partie 1Type Casting - Partie 26Prise de décision
L'instruction IfIf - ElseL'instruction SwitchOpérateur conditionnelRécapitulatif - If ElseIf - Else imbriqués