פרק 7 - פונקציות


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

הערה: חלק מהמורים מלמדים פונקציות מוקדם יותר – כבר לאחר לולאת for ולפני לולאת while או אפילו לפני for. עם זאת, בסילבוס זה הוחלט ללמד פונקציות רק לאחר לולאות for, while ולולאות מקוננות, כחלק משלב חשיבה אלגוריתמי מתקדם. אומנם אישית אני ממליץ ללמד פונקציות מוקדם יותר, אך נתיישר עם הסילבוס ונציג את הפרק בהמשך לפרק 6.

7.1 פונקציות ללא פרמטרים

פונקציה ללא פרמטרים (void) היא פונקציה שקוראים לה מתוך Main כדי לבצע משימה מובחנת ואינה מקבלת קלט חיצוני.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void PrintStars10()
{
    for (int i = 0; i < 10; i++)
        Console.Write("*");
    Console.WriteLine();
}

public static void Main()
{
    // קריאה לפונקציה 3 פעמים
    PrintStars10();
    PrintStars10();
    PrintStars10();
}

דוגמאות נוספות

הדפסת סכום המספרים הזוגיים מ-1 עד 100
public static void SumEven100()
{
    int sum = 0;
    for (int num = 1; num <= 100; num++)
        if (num % 2 == 0)
            sum += num;
    Console.WriteLine($"Sum of even numbers 1-100 is {sum}");
}
תרשים זרימה של קריאה ל-3 פונקציות
flowchart TD Start([1.התכנית מתחילה בקריאה ל-Main]) --> Main Main["Main Method"] --> |"2.קריאה ל- ;()SayHello"| SayHello[הפונקציה SayHello
Hello World מדפיסה] SayHello --> |return| Main Main --> |"3.קריאה ל- ;()AddNumbers"| AddNumbers[הפונקציה AddNumbers
מחשבת 3+5
ומדפיסה את התוצאה] AddNumbers --> |return| Main Main --> |"4.קריאה ל- ;()SayGoodbye"| SayGoodbye[הפונקציה SayGoodbye
מדפיסה Goodbye] SayGoodbye --> |return| Main Main --> End([5.סיום]) style Main fill:#4fc3f7,stroke:#0277bd,stroke-width:4px,color:#fff style SayHello fill:#ffb74d,stroke:#f57c00,stroke-width:2px style AddNumbers fill:#ffb74d,stroke:#f57c00,stroke-width:2px style SayGoodbye fill:#ffb74d,stroke:#f57c00,stroke-width:2px style Start fill:#81c784,stroke:#388e3c,stroke-width:2px style End fill:#e57373,stroke:#d32f2f,stroke-width:2px linkStyle default stroke:#666666,stroke-width:3px

7.2 פונקציות עם פרמטרים

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

1
2
3
4
5
6
7
8
9
10
11
12
13
public static void PrintStars(int length)
{
    for (int i = 0; i < length; i++)
        Console.Write("*");
    Console.WriteLine();
}

public static void Main()
{
    PrintStars(5);   // *****
    PrintStars(10);  // **********
    PrintStars(3);   // ***
}

דוגמאות נוספות

PrintRectangle(rows, cols)
public static void PrintRectangle(int rows, int cols)
{
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < cols; j++)
            Console.Write("*");
        Console.WriteLine();
    }
}
SayHello(string userName)

csharp public static void SayHello(string userName) { Console.WriteLine($"שלום, {userName}!"); } </details>

סיכום הביניים

בפרקים 7.1–7.2 למדנו להגדיר פונקציות מסוג void ללא פרמטרים ועם פרמטרים. בפונקציות אלה ניתן לאגד קוד חוזר, לשפר קריאות ולהפוך את הקוד לגמיש יותר. בפונקציות הבאות (פרק 7.3) נלמד על פונקציות שמחזירות ערך (return), כולל טיפוסי ערך בסיסיים ובוליאני.