# מערך שיעור: פונקציות (מתודות)📋 מערך מרצה

משך: 2 שעות אקדמיות (90 דקות).

מטרת השיעור: הסטודנטים יכתבו פונקציות עם פרמטרים וערכי החזרה, ויבינו למה Overloading קיים.

בסוף השיעור הסטודנטים צריכים: לכתוב פונקציה עם פרמטרים וסוג החזרה נכון, להבדיל בין `void` לפונקציה עם ערך מוחזר, ולהסביר מתי Overloading משתלם.

דגש קריטי: התחילו תמיד מהעתק-הדבק כואב (אותו קוד בשלושה מקומות) לפני שמציגים פונקציות בכלל — זה מה שהופך את הפתרון למוחשי.

---

## מהלך השיעור

| חלק בשיעור | משך | הערות ודגשים |
| --- | --- | --- |
| פתיחה וחיבור | 5 דקות | הראו קוד עם אותו חישוב מועתק 3 פעמים |
| הבעיה: תחזוקת קוד כפול | 10 דקות | "עכשיו יש באג בחישוב — כמה מקומות צריך לתקן?" |
| הרעיון: פונקציה עם return | 20 דקות | חילוץ הקוד הכפול לפונקציה אחת, קריאה מ-3 מקומות |
| void מול ערך מוחזר | 15 דקות | הראו את שניהם, הדגישו ש-void לא ניתן לשמירה במשתנה |
| Overloading | 20 דקות | דוגמת CalculateAverage בשתי צורות |
| תרגול מודרך | 20 דקות | תרגיל 1+2 |

---

## דגשים להעברת השיעור

- ודאו שסטודנטים מבדילים בבירור בין הגדרת הפונקציה (החתימה) לקריאה לה (Call) — בלבול נפוץ אצל מתחילים.
- "not all code paths return a value" היא שגיאת קומפילציה נפוצה מאוד בהתחלה — שווה להדגים אותה בכוונה (למשל `if` בלי `else` בפונקציה שאמורה להחזיר תמיד ערך).
- Overloading — הדגישו שההבדל **חייב** להיות במספר או בטיפוס הפרמטרים, לא רק בטיפוס ההחזרה.

---

## מושגים

**Method** — בלוק קוד עם שם, ניתן לקריאה מכמה מקומות.
**Parameter** — משתנה קלט בהגדרת הפונקציה.
**Argument** — הערך האמיתי שנשלח בקריאה בפועל.
**Return Value** — הערך שהפונקציה מחזירה עם `return`.
**`void`** — טיפוס החזרה שמסמן "אין ערך מוחזר".
**Overloading** — כמה מתודות באותו שם, נבדלות בפרמטרים.

---

## תרגיל חשיבה

**שאלת פתיחה:** "יש לכם קוד שמחשב ממוצע במקום אחד בקוד. עכשיו צריך לחשב אותו גם במקום שני. מה שתי הדרכים האפשריות, ולמה אחת מהן עדיפה?"

**מהלך:** צפו לשתי תשובות — "להעתיק-להדביק" ו-"לכתוב פונקציה". תנו לסטודנטים לנמק למה פונקציה עדיפה (תחזוקה, מקום אחד לתקן, קריאות). הדגישו שהאינטואיציה הזו — "לא לחזור על עצמך" (DRY — Don't Repeat Yourself) — תחזור לאורך כל הקורס.

**מה המרצה מראה בסוף:** קחו קוד עם באג בחישוב שמופיע פעמיים (Copy-Paste). "תקנו" את הבאג רק במופע הראשון, והראו שהשני עדיין שגוי — כי הוא עותק נפרד. עכשיו הראו את אותו תיקון על גרסה עם פונקציה אחת — תיקון במקום אחד, שתי הקריאות מתוקנות מיד.
