(דגש משיעור 1) הכרזה לעומת השמה
חשוב להבחין בין הכרזה על משתנה (declaration) לבין השמה של ערך למשתנה (assignment).
דוגמה נכונה:
1
2
int x; // הכרזה
x = 10; // השמה
שגיאה נפוצה:
1
2
int y;
y = y + 1; // שגיאה: שימוש במשתנה ללא ערך התחלתי
אזהרה: בדוגמה השגויה שלעיל תקבלו שגיאה מסוג Use of unassigned local variable 'y'
. ודאו (כמעט) תמיד לתת ערך התחלתי למשתנה לפני שמשתמשים בו בחישוב.
VS נותן חיווי על כל שגיאה שתמנע קומפילציה (הידור). ניתן ללחוץ על סימן ה-x האדום כדי להציג את השגיאות הקיימות בקוד ולקבל מידע מפורט. לוקח זמן רב עד שתלמידים לומדים להתייחס למידע שזמין להם.
החלפת ערכים בין משתנים
השאלה שייכת לפרק 1, אך לא מתאימה ברמת הקושי לשיעור ראשון ולכן נמצאת כאן
כאשר אנו רוצים להחליף ערכים בין שני משתנים, נדרש לנו משתנה עזר שלישי. זוהי אנלוגיה דומה לשאלה: כיצד מחליפים תוכן בין שני ספלי תה?
נניח שיש לנו שני ספלים:
- ספל A מכיל תה ירוק
- ספל B מכיל תה שחור
כדי להחליף את התכולה שלהם, נזדקק לכלי שלישי (ספל temp):
- נשפוך את התוכן של ספל a לתוך ספל temp (ריק)
- נשפוך את התוכן של ספל b לתוך ספל a (שהתרוקן)
- נשפוך את התוכן של ספל temp לתוך ספל b
באותו אופן פועלת החלפת ערכים בתכנות - נדרש משתנה עזר זמני (temp).
קילטו שני מספרים והפכו את הסדר בינהם. נסו לפתור לבד
פתרון
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
static void Main()
{
// קלט שני מספרים
Console.WriteLine("Enter first number:");
int a = int.Parse(Console.ReadLine()); // קליטת המספר הראשון
Console.WriteLine("Enter second number:");
int b = int.Parse(Console.ReadLine()); // קליטת המספר השני
Console.WriteLine($"Before swap: a = {a}, b = {b}");
// החלפת הערכים באמצעות משתנה זמני
int temp = a; // במשתנה זמני a שמירת הערך של
a = b; // a לתוך b הצבת הערך של
b = temp; // b שנמצא במשתנה הזמני, לתוך a הצבת הערך המקורי של
Console.WriteLine($"After swap: a == {a}, b == {b}");
}
בפתרון זה נעשה שימוש בסימן $ כדי לבצע string interpolation. זוהי צורת רישום מומלצת אך ניתן להשאיר אותה לשלב לימוד מאוחר או לא ללמד כלל. רישום זה מקובל גם בפייתון באמצעות התחילית f. אינו קיים ב-Java. מרגע שהוכרז $ ניתן לעטוף משתנים וחישובים בסוגריים מסולסלים ולכלול אותם ישירות בתוך המחרוזת. רישום זה מייתר את השימוש בסימן + לחיבור מחרוזות.
על בסיס זמן פנוי, ראו גם את פתרון השאלה הדומה, במחרוזות כאן. וראו עד כמה שימוש במשתנים בעלי שם משמעותי עוזר להבין את הפתרון
סרטון - כיצד ניתן להעזר בשגיאות שמציג Visual Studio?
לפניכים סרטון הדרכה קצר המדגים כיצד ניתן להשתמש ב-Visual Studio כדי להבין ולתקן שגיאות קומפילציה בקוד. בסוף הסרטון אני מראה כיצד להשתמש בקיצור שהוספתי בעצמי.
מהי טבלת מעקב
טבלת מעקב מציגה את הערכים של המשתנים בכל שורת קוד רלוונטית לצורך הבנת השינויים שלהם במהלך הריצה. בהמשך ניתן להציג בטבלה דברים נוספים. בדרך כלל בסיום מעקב נרצה להבין מה מטרת הקוד (להבין את החוקיות). (לעיתים נשתמש בה כדי למצוא שגיאה)
לדוגמא נעקוב אחר הקוד הבא:
1
2
3
4
5
6
7
8
9
10
11
static void Main(String[] args)
{
int a = 5; // initial value of a
int b = 3; // initial value of b
a = a + b;
b = a - b;
a = a - b;
Console.WriteLine($"a = {a}, b = {b}");
}
טבלת המעקב
# | a | b |
---|---|---|
3 | 5 | |
4 | 3 | |
6 | 8 | |
7 | 5 | |
8 | 3 |
פלט סופי
a = 3, b = 5
אני מרגיל תלמידים להשאיר תאים ריקים או לסמן קו במקום שאין שינוי בערכים. כך יש פחות עומס, קל יותר למלא וקל יותר לראות מה קורה. אין חשיבות לצורה כל עוד מי שרושם מצליח להיעזר בטבלה כדי לזהות חוקיות מסויימת ולהבין מה קורה, (כן צריך גם שהמורה יבין)
מה מטרת הקוד? (זוהי שאלה ששואלים בכל פעם שמבצעים מעקב) דוגמא טיפוסית (שגויה) לתשובה של תלמיד שלא מצא חוקיות מתמטית היא תיאור מפורט של “מה עושה הקוד”. האלגוריתם שם ב-a את הסכום של שני המשתנים ואז -b את ההפרש שלהם, ואז שם אותו ב-b ולבסוף מדפיס את הערכים שלהם.
חיפוש מידע באתר
בסרטון הבא ניתן לראות כיצד לבצע חיפוש באתר באמצעות מילות מפתח
הוספת התוסף codeblocks ל- google docs
הוספת codeblocks, פירמוט הקוד, ודגש על חלוקה בשלמים
אלו 2 סרטונים שהכנתי ושלחתי בקבוצה. קשה לי להאמין שנספיק להדגים את זה. צפו בהם בזמנכם החופשי. כפי שכבר שאלו בקבוצה "למה צריך לפרמט?" והתשובה היתה לא צריך. זה nice to have זה הכל.⬅ להיכרות עם הקיצורים השימושיים והוספת קיצורים משלכם snippets נוספים