לוגיקה בוליאנית מורכבת
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C# של Coddy. שיעור 9 מתוך 66.
לוגיקה בוליאנית יכולה להסתבך כשמשלבים כמה תנאים. הבנת קדימות האופרטורים ושימוש בסוגריים עוזרים לכתוב ביטויים ברורים ונכונים.
סדר הקדימות של אופרטורים בוליאניים ב-C# הוא:
- NOT (!)
- AND (&&)
- 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);אתגר
בינוניצרו מתודה בשם determineAccess שקובעת אם למשתמש יש גישה למערכת על סמך הכללים האלה:
- מקבלת חמישה פרמטרים:
- isAdmin (bool): האם המשתמש הוא מנהל מערכת
- isLoggedIn (bool): האם המשתמש מחובר כרגע
- timeOfDay (int): השעה הנוכחית (0-23)
- isMaintenanceMode (bool): האם המערכת נמצאת במצב תחזוקה
- hasEmergencyAccess (bool): האם למשתמש יש גישת חירום
- מחזירה true כאשר אחד מהתנאים האלה מתקיים:
- המשתמש הוא מנהל מערכת וגם מחובר
- השעה היא בשעות הפעילות (9-17 כולל), המשתמש מחובר וגם המערכת אינה במצב תחזוקה
- למשתמש יש גישת חירום
נסו בעצמכם
public class DetermineAccess
{
// ממשו את המתודה determineAccess
public static bool determineAccess(bool isAdmin, bool isLoggedIn, int timeOfDay, bool isMaintenanceMode, bool hasEmergencyAccess)
{
// כתבו את הקוד שלכם כאן
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מערכים רב־ממדיים
יסודות מערכים דו־ממדייםהכרזה ואתחול של מערכים דו־ממדייםגישה לאיברי מערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםמערכים משונניםפעולות מטריצה נפוצותחזרה – מערכים רב־ממדיים7אופרטורים לוגיים מתקדמים
הערכה בקיצור דרךאופרטורים לוגיים מותניםקדימות אופרטוריםסיכום – אופרטורים מתקדמים2קבלת החלטות מתקדמת
תנאים מרוביםלוגיקה בוליאנית מורכבתהשוואה בין If ל-Switchהצהרות Switch מקוננותסיכום — קבלת החלטות מתקדמת5טיפול בחריגות
יסודות try-catchסוגי חריגותבלוקי catch מרוביםעבודה עם קבציםבלוק finallyשימוש ב-using לעומת try-finallyחריגות מותאמות אישיתסיכום – טיפול בשגיאות3שיפורים בלולאות
ביצועי לולאותאיטרציה במבנים מורכביםכל אחד מסוגי הלולאותרפקטורינג של לולאותסיכום – לולאות שעברו אופטימיזציה6טיפול בערכי Null
יסודות הפניה ל-Nullטיפוסי ערכים שניתנים ל-Nullדפוסי בדיקת Nullתכנות הגנתיסיכום – בטיחות מול Nullתרגלו בעצמכם: קומפיילר C# אונליין