# מערך שיעור: תנאים ולולאות📋 מערך מרצה

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

מטרת השיעור: הסטודנטים ידעו לבחור נכון בין `if`/`switch` להחלטות, ובין `for`/`while`/`foreach` לחזרות.

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

דגש קריטי: הדגימו לולאה אינסופית בכוונה (ואז עצרו אותה) — זו הדרך הכי מהירה ללמד "למה `while` בלי תנאי עצירה מסוכן".

---

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

| חלק בשיעור | משך | הערות ודגשים |
| --- | --- | --- |
| פתיחה וחיבור | 5 דקות | שאלו: "איך תוכנית 'מחליטה' משהו?" |
| הרעיון: if/else | 15 דקות | דוגמת גיל, הראו גם `else if` שרשרת |
| הרעיון: switch | 15 דקות | השוו לשרשרת if/else ארוכה על אותו משתנה |
| הרעיון: for | 15 דקות | ספירה מ-1 עד N, הדגישו i++ ותנאי עצירה |
| הרעיון: while + לולאה אינסופית | 15 דקות | הדגימו while(true) בלי break — עצרו עם Ctrl+C |
| foreach | 10 דקות | על מערך פשוט, השוו ל-for עם אינדקס |
| תרגול מודרך | 15 דקות | תרגיל 1+2 |

---

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

- הדגמת הלולאה האינסופית בשידור חי (ועצירתה עם Ctrl+C) משאירה רושם חזק יותר מכל הסבר תיאורטי — לא לדלג עליה.
- `switch expression` (עם `=>`) הוא התחביר המודרני; אם רלוונטי, אפשר להזכיר בקצרה שקיים גם `switch` "קלאסי" עם `case:`/`break;`, אך להתמקד בגרסה המודרנית.
- off-by-one errors (`<=` במקום `<`) כדאי להדגים בפועל על מערך — IndexOutOfRangeException אמיתי משכנע יותר מאזהרה מילולית.

---

## מושגים

**`if`/`else if`/`else`** — ריצה מותנית של קוד.
**`switch`** — בחירה בין כמה מקרים לפי ערך אחד.
**`for`** — לולאה עם מספר איטרציות ידוע מראש.
**`while`** — לולאה שתלויה בתנאי דינמי.
**`foreach`** — מעבר על כל איברי אוסף בלי ניהול אינדקס.
**לולאה אינסופית** — לולאה שהתנאי שלה אף פעם לא הופך לשקר.

---

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

**שאלת פתיחה:** "מתי הייתם בוחרים `for` ומתי `while` — תנו דוגמה אחת מהחיים האמיתיים (לא קוד) לכל אחד."

**מהלך:** אספו דוגמאות מהכיתה. טובות ל-`for`: "לספור מ-1 עד 10", "לעבור על כל יום בשבוע". טובות ל-`while`: "להמשיך למלא כוס עד שהיא מלאה", "לנסות להתחבר עד שמצליחים". הובילו לכלל: מספר איטרציות ידוע מראש → `for`; תלוי בתנאי דינמי → `while`.

**מה המרצה מראה בסוף:** כתבו את אותה לוגיקה (הדפסת המספרים 1 עד 5) פעם עם `for` ופעם עם `while` עם מונה ידני — הראו שהתוצאה זהה, אבל `for` קצר וממוקד יותר כי מספר האיטרציות ידוע מראש.
