Menu
CoddyTech

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 lorsqu’on combine plusieurs conditions. Comprendre la priorité des opérateurs et utiliser des parenthèses aide à écrire des expressions claires et correctes.

L’ordre de priorité des opérateurs booléens en C# est :

  1. NOT (!)
  2. AND (&&)
  3. OR (||)

Voici un exemple d’expression booléenne complexe :

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

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

  • !(A && B) équivaut à !A || !B
  • !(A || B) équivaut à !A && !B

La négation d’une comparaison inverse l’opérateur : >= devient < et > devient <=. Ces deux conditions sont équivalentes :

// Au lieu de :
if (!(age >= 18 && score > 70))
{
    Console.WriteLine("Not eligible");
}

// écrivez l’équivalent :
if (age < 18 || score <= 70)
{
    Console.WriteLine("Not eligible");
}

Évaluation en court-circuit : avec && et ||, C# n’évalue que ce qui est nécessaire :

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

Utilisez des parenthèses explicites pour plus de clarté, même lorsqu’elles ne sont pas strictement nécessaires :

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

Défi

Moyen

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

  1. Prend cinq paramètres :
    • isAdmin (bool) : indique si l’utilisateur est 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 dispose d’un accès d’urgence
  2. Renvoie true lorsque l’une de ces conditions est vraie :
    • L’utilisateur est administrateur ET est connecté
    • L’heure se situe dans les heures ouvrables (9-17 inclus) ET l’utilisateur est connecté ET le système n’est PAS en mode maintenance
    • L’utilisateur dispose d’un accès d’urgence

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

Entraînez-vous par vous-même : Compilateur C# en ligne