Menu
Coddy logo textTech

Complex Boolean Logic

Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası — ders 9 / 66.

Boolean mantığı, birden fazla koşulu birleştirirken karmaşık hale gelebilir. Operatör önceliğini anlamak ve parantez kullanmak, net ve doğru ifadeler yazmaya yardımcı olur.

C#'ta mantıksal operatörlerin öncelik sırası şöyledir:

  1. DEĞİL (!)
  2. VE (&&)
  3. VEYA (||)

İşte karmaşık bir boolean ifadesi örneği:

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

Karmaşık olumsuzlamaları basitleştirmek için De Morgan Yasalarını kullanın:

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

Kısa devre değerlendirmesi: && ve || ile, C# yalnızca gerekli olanı değerlendirir:

// Eğer user null ise, C# ikinci koşulu değerlendirmeyecek
if (user != null && user.IsActive)
{
    Console.WriteLine("Active user");
}

Netlik için, katı bir şekilde gerekli olmasa bile açık parantezler kullanın:

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

Görev

Orta

determineAccess adında bir metot oluşturun. Bu metot, bir kullanıcının sisteme erişim hakkının olup olmadığını şu kurallara göre belirler:

  1. Beş parametre alır:
    • isAdmin (bool): Kullanıcının yönetici olup olmadığı
    • isLoggedIn (bool): Kullanıcının şu anda oturum açmış olup olmadığı
    • timeOfDay (int): Mevcut saat (0-23)
    • isMaintenanceMode (bool): Sistemin bakım modunda olup olmadığı
    • hasEmergencyAccess (bool): Kullanıcının acil erişim hakkının olup olmadığı
  2. Bu koşullardan HERHANGİSİ doğru olduğunda true döndürür:
    • Kullanıcı yönetici VE oturum açmış ise
    • Saat iş saatleri arasında (9-17 dahil) VE kullanıcı oturum açmış VE sistem bakım modunda DEĞİL ise
    • Kullanıcı acil erişime sahip ise

Kopya kağıdı

C#'ta Boolean operatör önceliği (en yüksekten en düşüğe):

  1. DEĞİL (!)
  2. VE (&&)
  3. VEYA (||)

Karmaşık boolean ifadeleri:

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

Negasyonları basitleştirmek için De Morgan Yasaları:

// Bunun yerine:
if (!(age >= 18 && score > 70))
{
    // Bu eşdeğerdir:
    if (age < 18 || score <= 70)
    {
        Console.WriteLine("Not eligible");
    }
}

Kısa devre değerlendirmesi, yalnızca gerekli olanı değerlendirerek hataları önler:

// Eğer user null ise, C# ikinci koşulu değerlendirmeyecek
if (user != null && user.IsActive)
{
    Console.WriteLine("Active user");
}

Açıklık için açık parantezler kullanın:

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

Kendin dene

public class DetermineAccess
{
    // determineAccess metodunu uygulayın
    public static bool determineAccess(bool isAdmin, bool isLoggedIn, int timeOfDay, bool isMaintenanceMode, bool hasEmergencyAccess)
    {
        // Kodu buraya yazın
        
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler