Menu
Coddy logo textTech

Logique booléenne complexe

Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 9 sur 66.

La logique booléenne peut devenir complexe lors de la combinaison de plusieurs conditions. Comprendre la priorité des opérateurs et utiliser des parenthèses aide à écrire des expressions claires et correctes.

L'ordre de précédence des opérateurs booléens en C# est :

  1. NON (!)
  2. ET (&&)
  3. OU (||)

Voici un exemple d'une expression booléenne complexe :

bool isValid = age >= 18 && (score > 70 || hasPriorExperience) && !isBlacklisted;

Utilisez les lois de De Morgan pour simplifier les négations complexes :

// Instead of:
if (!(age >= 18 && score > 70))
{
    // This is equivalent to:
    if (age < 18 || score <= 70)
    {
        Console.WriteLine("Not eligible");
    }
}

Évaluation à court-circuit : Avec && et ||, C# n'évalue que ce qui est nécessaire :

// If user is null, C# won't evaluate the second condition
if (user != null && user.IsActive)
{
    Console.WriteLine("Active user");
}

Utilisez des parenthèses explicites pour plus de clarté, même lorsque ce n'est pas strictement requis :

bool result = (isWeekend || isHoliday) && (hour > 10 && hour < 20);
challenge icon

Défi

Moyen

Créez une méthode appelée determineAccess qui détermine si un utilisateur a accès à un système en fonction de ces règles :

  1. Prend cinq paramètres :
    • isAdmin (bool) : Indique si l'utilisateur est un administrateur
    • isLoggedIn (bool) : Indique si l'utilisateur est actuellement connecté
    • timeOfDay (int) : L'heure actuelle (0-23)
    • isMaintenanceMode (bool) : Indique si le système est en mode maintenance
    • hasEmergencyAccess (bool) : Indique si l'utilisateur a un accès d'urgence
  2. Retourne true lorsque AU MOINS UNE de ces conditions est vraie :
    • L'utilisateur est un administrateur ET est connecté
    • L'heure est entre les heures de bureau (9-17 incluses) ET l'utilisateur est connecté ET le système N'EST PAS en mode maintenance
    • L'utilisateur a un accès d'urgence

Aide-mémoire

Priorité des opérateurs booléens en C# (du plus élevé au plus bas) :

  1. NON (!)
  2. ET (&&)
  3. OU (||)

Expressions booléennes complexes :

bool isValid = age >= 18 && (score > 70 || hasPriorExperience) && !isBlacklisted;

Lois de De Morgan pour simplifier les négations :

// Au lieu de :
if (!(age >= 18 && score > 70))
{
    // Ceci est équivalent à :
    if (age < 18 || score <= 70)
    {
        Console.WriteLine("Not eligible");
    }
}

L'évaluation à court-circuit évite les erreurs en n'évaluant que ce qui est nécessaire :

// Si user est null, C# n'évaluera pas la seconde condition
if (user != null && user.IsActive)
{
    Console.WriteLine("Active user");
}

Utilisez des parenthèses explicites pour plus de clarté :

bool result = (isWeekend || isHoliday) && (hour > 10 && hour < 20);

Essayez vous-même

public class DetermineAccess
{
    // Implémentez la méthode determineAccess
    public static bool determineAccess(bool isAdmin, bool isLoggedIn, int timeOfDay, bool isMaintenanceMode, bool hasEmergencyAccess)
    {
        // Écrivez votre code ici
        
    }
}
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 Logique & Flux