מאגר טיפים להוראת עיצוב תכנה

המחשת רקורסיה בעזרת בבושקות ("ראש" ו"רגליים")

ויקטוריה צורי

 

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

 

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

יותר מסובך, כאשר בפונקציה מסוימת ישנן יותר מקריאה רקורסיבית אחת.

 

טיפ אישי:

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

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

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

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

 

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

 

לאתר עיצוב תכנה

למאגר טיפים בעיצוב תכנה

חזרה