Menu
Coddy logo textTech

פישוט תנאים מקוננים

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

תנאים מקוננים עלולים להקשות על קריאת הקוד ועל התחזוקה שלו. השטחה משפרת את הקריאות באמצעות צמצום רמות ההזחה.

הנה דוגמה לתנאים מקוננים לעומק:

if (userLoggedIn)
{
    if (userHasPermission)
    {
        if (fileExists)
        {
            // עבד את הקובץ
            ProcessFile();
        }
        else
        {
            Console.WriteLine("File not found");
        }
    }
    else
    {
        Console.WriteLine("No permission");
    }
}
else
{
    Console.WriteLine("Not logged in");
}

אפשר לפשט זאת באמצעות החזרות מוקדמות או סעיפי הגנה:

if (!userLoggedIn)
{
    Console.WriteLine("Not logged in");
    return;
}

if (!userHasPermission)
{
    Console.WriteLine("No permission");
    return;
}

if (!fileExists)
{
    Console.WriteLine("File not found");
    return;
}

// עבד את הקובץ
ProcessFile();

שימו לב שלקוד השטוח יש פחות הזחה וקל יותר לעקוב אחריו.

challenge icon

אתגר

קל

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

תנאי יציאה מוקדמת הוא פקודת החזרה מוקדמת שמטפלת מיד בתנאי מסוים, ומאפשרת לשאר הפונקציה להתמקד ב״נתיב השמח״.

המשימה שלכם היא להשלים את תנאי היציאה המוקדמת שמומשו באופן חלקי בשיטה CheckScholarshipEligibility, בהתאם לכללים האלה:

  1. אם הגיל קטן מ־17, החזירו מיד "Not eligible due to age requirement"
  2. אם GPA ≥ 3.5 וגם לתלמיד יש המלצה, העניקו מלגה מלאה
  3. אם GPA ≥ 3.8, העניקו מלגה מלאה (גם ללא המלצה)
  4. אם GPA ≥ 3.0 וגם לתלמיד יש המלצה, העניקו מלגה חלקית
  5. אם GPA נמצא בין 3.5 ל־3.8, העניקו מלגה חלקית
  6. בכל המקרים האחרים, החזירו "Not eligible for scholarship"

נסו בעצמכם

using System;

class Program
{
    public static void CheckScholarshipEligibility(int age, double gpa, bool hasRecommendation)
    {
        // תנאי יציאה מוקדמת לבדיקת דרישת הגיל
        if (age < 17)
        {
            Console.WriteLine("Not eligible due to age requirement.");
            return;
        }
        
        // תנאי יציאה מוקדמת למלגה מלאה עם המלצה
        if (/* השלימו את התנאי הזה */)
        {
            Console.WriteLine("Full scholarship granted!");
            return;
        }
        
        // תנאי יציאה מוקדמת למלגה מלאה עם GPA יוצא דופן
        if (/* השלימו את התנאי הזה */)
        {
            Console.WriteLine("Full scholarship granted!");
            return;
        }
        
        // תנאי יציאה מוקדמת למלגה חלקית עם המלצה
        if (/* השלימו את התנאי הזה */)
        {
            Console.WriteLine("Partial scholarship granted.");
            return;
        }
        
        // תנאי יציאה מוקדמת למלגה חלקית עם GPA טוב
        if (/* השלימו את התנאי הזה */)
        {
            Console.WriteLine("Partial scholarship granted.");
            return;
        }
        
        // מקרה ברירת המחדל: אין זכאות
        Console.WriteLine("Not eligible for scholarship.");
    }
    
    static void Main(string[] args)
    {
        // מקרי בדיקה לקבלת משוב מיידי
        Console.WriteLine("Test Case 1: Age 16, GPA 4.0, Has Recommendation: True");
        CheckScholarshipEligibility(16, 4.0, true);
        
        Console.WriteLine("\nTest Case 2: Age 18, GPA 3.9, Has Recommendation: False");
        CheckScholarshipEligibility(18, 3.9, false);
        
        Console.WriteLine("\nTest Case 3: Age 17, GPA 3.6, Has Recommendation: True");
        CheckScholarshipEligibility(17, 3.6, true);
        
        Console.WriteLine("\nTest Case 4: Age 19, GPA 3.2, Has Recommendation: True");
        CheckScholarshipEligibility(19, 3.2, true);
        
        Console.WriteLine("\nTest Case 5: Age 18, GPA 2.8, Has Recommendation: False");
        CheckScholarshipEligibility(18, 2.8, false);
    }
}
quiz iconבחנו את עצמכם

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

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

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