Menu
CoddyTech

Komplexe boolesche Logik

Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy. Lektion 9 von 66.

Boolesche Logik kann komplex werden, wenn mehrere Bedingungen kombiniert werden. Wenn du die Operatorrangfolge verstehst und Klammern verwendest, kannst du klare, korrekte Ausdrücke schreiben.

Die Reihenfolge der Priorität boolescher Operatoren in C# lautet:

  1. NICHT (!)
  2. UND (&&)
  3. ODER (||)

Hier ist ein Beispiel für einen komplexen booleschen Ausdruck:

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

Verwende die Gesetze von De Morgan, um komplexe Negationen zu vereinfachen:

  • !(A && B) ist dasselbe wie !A || !B
  • !(A || B) ist dasselbe wie !A && !B

Die Negation eines Vergleichs kehrt ihn um: >= wird zu < und > wird zu <=. Diese beiden Bedingungen sind gleichwertig:

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

// schreibe die entsprechende Variante:
if (age < 18 || score <= 70)
{
    Console.WriteLine("Not eligible");
}

Kurzschlussauswertung: Bei && und || wertet C# nur das aus, was nötig ist:

// Wenn user null ist, wertet C# die zweite Bedingung nicht aus
if (user != null && user.IsActive)
{
    Console.WriteLine("Active user");
}

Verwende zur besseren Verständlichkeit explizite Klammern, auch wenn sie nicht unbedingt erforderlich sind:

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

Aufgabe

Mittel

Erstelle eine Methode namens determineAccess, die anhand der folgenden Regeln bestimmt, ob ein Benutzer Zugriff auf ein System hat:

  1. Nimmt fünf Parameter entgegen:
    • isAdmin (bool): Gibt an, ob der Benutzer Administrator ist
    • isLoggedIn (bool): Gibt an, ob der Benutzer derzeit angemeldet ist
    • timeOfDay (int): Die aktuelle Stunde (0-23)
    • isMaintenanceMode (bool): Gibt an, ob sich das System im Wartungsmodus befindet
    • hasEmergencyAccess (bool): Gibt an, ob der Benutzer Notfallzugriff hat
  2. Gibt true zurück, wenn eine beliebige dieser Bedingungen zutrifft:
    • Der Benutzer ist Administrator UND angemeldet
    • Die Uhrzeit liegt innerhalb der Geschäftszeiten (9-17 einschließlich) UND der Benutzer ist angemeldet UND das System befindet sich NICHT im Wartungsmodus
    • Der Benutzer hat Notfallzugriff

Probier es selbst

public class DetermineAccess
{
    // Implementiere die Methode determineAccess
    public static bool determineAccess(bool isAdmin, bool isLoggedIn, int timeOfDay, bool isMaintenanceMode, bool hasEmergencyAccess)
    {
        // Schreibe deinen Code hier
        
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-C#-Compiler