Menu
Coddy logo textTech

לוגיקה בוליאנית מורכבת

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C# של Coddy. שיעור 9 מתוך 66.

לוגיקה בוליאנית יכולה להסתבך כשמשלבים כמה תנאים. הבנת קדימות האופרטורים ושימוש בסוגריים עוזרים לכתוב ביטויים ברורים ונכונים.

סדר הקדימות של אופרטורים בוליאניים ב-C# הוא:

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

הנה דוגמה לביטוי בוליאני מורכב:

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

השתמש בחוקי דה מורגן כדי לפשט שלילות מורכבות:

// במקום:
if (!(age >= 18 && score > 70))
{
    // זה שקול ל:
    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 כאשר אחד מהתנאים האלה מתקיים:
    • המשתמש הוא מנהל מערכת וגם מחובר
    • השעה היא בשעות הפעילות (9-17 כולל), המשתמש מחובר וגם המערכת אינה במצב תחזוקה
    • למשתמש יש גישת חירום

נסו בעצמכם

public class DetermineAccess
{
    // ממשו את המתודה determineAccess
    public static bool determineAccess(bool isAdmin, bool isLoggedIn, int timeOfDay, bool isMaintenanceMode, bool hasEmergencyAccess)
    {
        // כתבו את הקוד שלכם כאן
        
    }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר C# אונליין