Menu
CoddyTech

Karmaşık Boolean Mantığı

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

Birden fazla koşulu birleştirirken Boole mantığı karmaşık hâle gelebilir. İşleç önceliğini anlamak ve parantez kullanmak, anlaşılır ve doğru ifadeler yazmaya yardımcı olur.

C# dilinde boolean işleçlerinin öncelik sırası şöyledir:

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

Karmaşık bir boole ifadesine bir örnek:

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

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

  • !(A && B) ile !A || !B aynı anlama gelir
  • !(A || B) ile !A && !B aynı anlama gelir

Bir karşılaştırmayı olumsuzlamak karşılaştırma işaretini tersine çevirir: >=, < olur ve >, <= olur. Aşağıdaki iki koşul eşdeğerdir:

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

// eşdeğerini yazın:
if (age < 18 || score <= 70)
{
    Console.WriteLine("Not eligible");
}

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

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

Zorunlu olmasalar bile açıklık için açık parantezler kullanın:

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

Görev

Orta

Bu kurallara göre bir kullanıcının sisteme erişimi olup olmadığını belirleyen determineAccess adlı bir yöntem oluştur:

  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): Geçerli saat (0-23)
    • isMaintenanceMode (bool): Sistemin bakım modunda olup olmadığı
    • hasEmergencyAccess (bool): Kullanıcının acil durum erişimi olup olmadığı
  2. Bu koşullardan ANY biri doğru olduğunda true döndürür:
    • Kullanıcı yönetici VE oturum açmış
    • Saat iş saatleri arasındadır (9-17 dahil) VE kullanıcı oturum açmıştır VE sistem bakım modunda DEĞİLDİR
    • Kullanıcının acil durum erişimi vardır

Kendin dene

public class DetermineAccess
{
    // determineAccess metodunu uygulayın
    public static bool determineAccess(bool isAdmin, bool isLoggedIn, int timeOfDay, bool isMaintenanceMode, bool hasEmergencyAccess)
    {
        // Kodunuzu 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

Kendi başına pratik yap: Online C# derleyicisi