Menu
Coddy logo textTech

Złożona logika Boole’a

Część sekcji Logika i sterowanie przepływem ścieżki C# w Coddy. Lekcja 9 z 66.

Logika boolowska może stać się złożona, gdy łączysz wiele warunków. Zrozumienie kolejności operatorów i używanie nawiasów pomaga pisać jasne i poprawne wyrażenia.

Kolejność pierwszeństwa operatorów logicznych w C# jest następująca:

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

Oto przykład złożonego wyrażenia logicznego:

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

Użyj praw de Morgana, aby uprościć złożone negacje:

// Zamiast:
if (!(age >= 18 && score > 70))
{
    // Jest to równoważne:
    if (age < 18 || score <= 70)
    {
        Console.WriteLine("Not eligible");
    }
}

Ewaluacja zwarciowa: w przypadku && i || C# oblicza tylko to, co jest konieczne:

// Jeśli user ma wartość null, C# nie sprawdzi drugiego warunku
if (user != null && user.IsActive)
{
    Console.WriteLine("Active user");
}

Dla jasności używaj jawnych nawiasów, nawet jeśli nie są ściśle wymagane:

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

Wyzwanie

Średni

Utwórz metodę o nazwie determineAccess, która określa, czy użytkownik ma dostęp do systemu na podstawie następujących zasad:

  1. Przyjmuje pięć parametrów:
    • isAdmin (bool): Czy użytkownik jest administratorem
    • isLoggedIn (bool): Czy użytkownik jest obecnie zalogowany
    • timeOfDay (int): Bieżąca godzina (0-23)
    • isMaintenanceMode (bool): Czy system jest w trybie konserwacji
    • hasEmergencyAccess (bool): Czy użytkownik ma dostęp awaryjny
  2. Zwraca true, gdy spełniony jest którykolwiek z tych warunków:
    • Użytkownik jest administratorem ORAZ jest zalogowany
    • Jest godzina pracy (od 9 do 17 włącznie) ORAZ użytkownik jest zalogowany ORAZ system NIE jest w trybie konserwacji
    • Użytkownik ma dostęp awaryjny

Spróbuj swoich sił

public class DetermineAccess
{
    // Zaimplementuj metodę determineAccess
    public static bool determineAccess(bool isAdmin, bool isLoggedIn, int timeOfDay, bool isMaintenanceMode, bool hasEmergencyAccess)
    {
        // Wpisz tutaj swój kod
        
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i sterowanie przepływem

Poćwicz samodzielnie: Kompilator C# online