Menu
Coddy logo textTech

Opérateurs logiques - Partie 3

Fait partie de la section Fundamentals du Journey C de Coddy — leçon 23 sur 63.

Lors de la vérification de plusieurs conditions, le programme s'arrête de vérifier dès qu'il connaît la réponse finale. C'est ce qu'on appelle l'évaluation par court-circuit.

Par exemple :

int x = 0;
int y = 5;
int 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 :

int result = (y / x > 2) && (x != 0);

Cela entraînera une erreur car y sera divisé par 0, ce qui est indéfini en C. Il est donc recommandé de bien réfléchir aux opérations, afin d'obtenir un code correct et efficace, mais sans erreur.

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;
int 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.

challenge icon

Défi

Facile

Créez un programme pour décider si c'est une bonne journée pour la production d'énergie par panneaux solaires

Initialisez ces variables :

  • isSunny avec la valeur 1 (true)
  • windSpeed avec la valeur 5.4
  • temperature avec la valeur 23
  • solarPanelOutput avec la valeur 9
  • isCloudy avec la valeur 0 (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

Affichez "Good day for solar energy" si toutes les conditions sont remplies, sinon affichez "Not ideal for solar energy".

Aide-mémoire

L'évaluation en court-circuit arrête de vérifier les conditions dès que le résultat final est déterminé, optimisant ainsi l'évaluation des expressions logiques.

Avec && (ET), si la première condition est fausse, la seconde ne sera pas évaluée :

int x = 0;
int result = (x != 0) && (y / x > 2);  // y/x ne sera pas évalué

Avec || (OU), si la première condition est vraie, la seconde ne sera pas évaluée :

int result = (a > 0 && b < 2) || (c < -5 && d < 10);
// Si a > 0 est faux, b < 2 ne sera pas évalué
// Si la première partie est vraie, la seconde partie ne sera pas évaluée

L'ordre est important - placez les conditions susceptibles de provoquer des erreurs (comme la division par zéro) après les vérifications de sécurité :

// Sûr : vérifie d'abord x != 0
int result = (x != 0) && (y / x > 2);

// Risqué : pourrait diviser par zéro
int result = (y / x > 2) && (x != 0);

Essayez vous-même

#include <stdio.h>

int main() {
    // Initialiser les variables
    int isSunny = 1;
    float windSpeed = 5.4;
    int temperature = 23;
    int solarPanelOutput = 9;
    int isCloudy = 0;
    
    // Créer l'expression logique
    int isGoodDay = 
    
    // Ne pas modifier ci-dessous
    if (isGoodDay) {
        printf("Good day for solar energy\n");
    } else {
        printf("Not ideal for solar energy\n");
    }
    
    return 0;
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fundamentals