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 :
- NON (!)
- ET (&&)
- 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);Défi
MoyenCré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 :
- 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
- 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) :
- NON (!)
- ET (&&)
- 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
}
}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
1Tableaux multidimensionnels
Bases des tableaux 2DDéclaration et initialisation en 2DAccès aux éléments d'un tableau 2DBoucles imbriquées et tableaux 2DTableaux irréguliersOpérations matricielles courantesRécapitulatif - Multidimensionnel4Techniques de contrôle de flux
Retours anticipésClauses de gardeInstructions de saut (goto)Break et ContinueAplatir les conditionnelles imbriquées2Prise de décision avancée
Conditions multiplesLogique booléenne complexeComparaison If vs SwitchInstructions Switch imbriquéesRécapitulatif - Décisions avancées5Gestion des exceptions
Bases du Try-CatchTypes d'exceptionsBlocs Catch multiplesManipulation de fichiersLe bloc FinallyUsing vs Try-FinallyExceptions personnaliséesRécapitulatif - Gestion des erreurs3Améliorations des boucles
Performance des bouclesItération de structures complexesChaque type de boucleRefactorisation des bouclesRécapitulatif - Boucles optimisées6Gestion des valeurs nulles
Les bases des références nullesTypes valeur nullablesPatterns de vérification de nullitéProgrammation défensiveRécapitulatif - Null Safety