On this page
מערך שיעור: קלט/פלט בסיסי
משך: 1.5 שעות אקדמיות (68 דקות).
מטרת השיעור: הסטודנטים ידעו לקבל קלט מהמשתמש ולהמיר אותו בבטחה לטיפוס הנדרש.
בסוף השיעור הסטודנטים צריכים: להשתמש ב-Console.ReadLine לקבלת קלט, להסביר למה נדרשת המרה מפורשת, ולהעדיף TryParse על פני Parse בקוד שמטפל בקלט משתמש.
דגש קריטי: תמיד להדגים תרחיש קלט שגוי ("abc" במקום מספר) בזמן ההרצה — זו הנקודה שהופכת את הצורך ב-TryParse למוחשי, לא תיאורטי.
מהלך השיעור
| חלק בשיעור | משך | הערות ודגשים |
|---|---|---|
| פתיחה וחיבור | 5 דקות | הראו Console.ReadLine() בפעולה — משהו “קורה” רק אחרי הקלדה+Enter |
| הבעיה: string לא int | 10 דקות | נסו לחבר תוצאת ReadLine למספר — שגיאת קומפילציה |
| הרעיון: המרה מפורשת | 10 דקות | int.Parse — הדגימו על קלט תקין |
| הבעיה: קלט שגוי מקריס | 10 דקות | הזינו "abc" ל-int.Parse בשידור חי — התוכנית קורסת |
| הרעיון: TryParse | 15 דקות | פתרון: TryParse + out — בלי קריסה |
| תרגול מודרך | 15 דקות | תרגיל 1+2 מדף השיעור |
| שאלות + סיכום | 3 דקות | חיזרו על “כל קלט ממשתמש = TryParse כברירת מחדל” |
דגשים להעברת השיעור
- הקריסה החיה על
int.Parse("abc")היא הרגע הכי משכנע בשיעור — אל תדלגו עליה, גם אם זה “מיותר” מבחינתכם. outיילמד בפירוט בשיעור נפרד — כאן מספיק להראות אותו כ"תחביר שצריך כדי לקבל תשובה בטוחה מ-TryParse", בלי להסביר לעומק את מנגנון ה-reference שמאחוריו.- Interpolated strings (
$"...") שווה להראות בהשוואה לחיבור עם+— ההבדל בקריאות בולט מיד.
מושגים
Console.ReadLine() — קריאת שורת טקסט מהמשתמש; מחזירה string.
int.Parse — המרת string ל-int; זורקת חריגה על קלט לא תקין.
int.TryParse — המרה בטוחה; מחזירה bool הצלחה/כישלון.
Interpolated String — מחרוזת עם $ שמטמיעה ביטויי C# בתוכה עם {}.
תרגיל חשיבה
שאלת פתיחה: “אם אתם בונים אפליקציית קופה שמקבלת מהקופאי סכום כסף בהקלדה — מה קורה אם הוא ילחץ בטעות על אות במקום מספר? מה אתם רוצים שיקרה?”
מהלך: תנו לסטודנטים לחשוב על 2-3 תרחישי כישלון אפשריים (הקלדה שגויה, שדה ריק, רווחים מיותרים). הובילו לתובנה: קלט ממשתמש הוא תמיד בלתי-אמין, ולכן הטיפול בו חייב להיות מוגן מראש, לא “אחרי שזה קרס בפעם הראשונה”.
מה המרצה מראה בסוף: הריצו קוד עם int.Parse על קלט שגוי — קריסה עם FormatException לא ידידותי. מיד אחר כך, אותו תרחיש בדיוק עם TryParse — הודעת שגיאה מנוסחת יפה, והתוכנית ממשיכה לרוץ כרגיל.