Menu
CoddyTech

المنطق البولياني المعقد

جزء من قسم المنطق وتدفق التنفيذ في رحلة C# على Coddy. الدرس 9 من 66.

قد يصبح المنطق البولياني معقدًا عند الجمع بين شروط متعددة. ويساعد فهم أسبقية العوامل واستخدام الأقواس على كتابة تعبيرات واضحة وصحيحة.

ترتيب أسبقية العوامل المنطقية في C# هو:

  1. ليس (!)
  2. و (&&)
  3. أو (||)

إليك مثالًا على تعبير منطقي معقد:

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

استخدم قوانين دي مورغان لتبسيط النفي المعقد:

  • !(A && B) يكافئ !A || !B
  • !(A || B) يكافئ !A && !B

نفي المقارنة يعكسها: تصبح >= <، وتصبح > <=. هذان الشرطان متكافئان:

// بدلاً من:
if (!(age >= 18 && score > 70))
{
    Console.WriteLine("Not eligible");
}

// اكتب ما يعادله:
if (age < 18 || score <= 70)
{
    Console.WriteLine("Not eligible");
}

التقييم بالتوقف القصير: باستخدام && و ||، لا يقيّم C# إلا ما يلزم:

// إذا كان user يساوي null، فلن تُقيّم C# الشرط الثاني
if (user != null && user.IsActive)
{
    Console.WriteLine("Active user");
}

استخدم الأقواس الصريحة للوضوح، حتى عندما لا تكون مطلوبة تمامًا:

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

التحدي

متوسط

أنشئ دالة باسم determineAccess تحدد ما إذا كان لدى المستخدم صلاحية الوصول إلى نظام بناءً على القواعد التالية:

  1. تأخذ خمس مُدخلات:
    • isAdmin (bool): ما إذا كان المستخدم مسؤولًا
    • isLoggedIn (bool): ما إذا كان المستخدم مسجّل الدخول حاليًا
    • timeOfDay (int): الساعة الحالية (0-23)
    • isMaintenanceMode (bool): ما إذا كان النظام في وضع الصيانة
    • hasEmergencyAccess (bool): ما إذا كان لدى المستخدم صلاحية وصول طارئة
  2. تُعيد true عندما يتحقق أيٌّ من الشروط التالية:
    • المستخدم مسؤول AND ومسجّل الدخول
    • الوقت ضمن ساعات العمل (9-17 شاملًا) AND المستخدم مسجّل الدخول AND النظام ليس في وضع الصيانة
    • لدى المستخدم صلاحية وصول طارئة

جرّب بنفسك

public class DetermineAccess
{
    // نفّذ الدالة determineAccess
    public static bool determineAccess(bool isAdmin, bool isLoggedIn, int timeOfDay, bool isMaintenanceMode, bool hasEmergencyAccess)
    {
        // اكتب شيفرتك هنا
        
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم C# عبر الإنترنت