החומר המופיע בעמוד זה פורסם לראשונה בכתב העת "הבטים בהוראת מדעי המחשב" גליון ספטמבר 1995, עמודים 40-45

לא ניתן לעשות שימוש מסחרי בחומר זה ללא רשות בכתב מן המחברים או מערכת כתב העת

מודל האנשים הקטנים

"מגוון – מחקר ופיתוח בהוראת מדעי המחשב"

המחלקה להוראת הטכנולוגיה והמדעים, טכניון

 

הסבר כללי

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

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

 

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

 

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

 

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

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

 
מודל האנשים הקטנים ותרומתו להסברת נושא הפרמטרים

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

 

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

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

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

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

        א.        כל האנשים מכירים את כל הוראות היסוד של פסקל ויודעים לבצען.

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

 

נסביר את פעולת המודל בעזרת התכנית הבאה:

Program Dugma;

Procedure Print_Message;

Begin

              Writeln ('This is a message');

End;

Procedure Print_Number (Number : Integer);

Begin

              Writeln ('Number=', Number);

End;

Procedure Many_Things  (N1, N2 : Integer);

Begin

              Print_Message;

              If  N1 > N2

                           Then Print_Number (N1*2)

                           Else Print_Number (N2*2);

              Writeln ('I had to do many things');

End;

Begin

              Writeln ('This is the beginning of program dugma');

              Print_Message;

              Print_Number (5);

              Many_Things  (11, 4);

              Writeln ('This is the end of program dugma');

End.

כעת, נבקש מדני לבצע את התכנית Dugma

דני יצטרך לבצע עבורנו את כל ההוראות הרשומות בתכנית הראשית.

דני מתחיל בשורה הראשונה (בתכנית הראשית) וקורא שם את ההוראה הבאה:

Writeln ('This is the beginning of program dugma');

 

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

 

דני עובר לשורה השניה בתכנית הראשית וקורא את ההוראה  Print_Message .

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

 

פנחס בא לעזרת דני, לוקח עותק של ההליך Print_Message  ומתחיל לבצע אותו.

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

לפיכך, הוא מדפיס על המסך      This is a message   (זוהי הודעה).

 

שימו לב שבינתיים, דני יושב לנוח עד שפנחס יסיים את המשימה שהוטלה עליו.

 

לאחר מכן, עובר פנחס לשורה הבאה ורואה שזהו סוף ההליך.

הוא פונה למי שקרא לו (דני) ומודיע על סיום תפקידו.

 

כעת יכול דני להמשיך בעבודתו. הוא יודע שההוראות המופיעות בהליך Print_Message   בוצעו בנאמנות על-ידי פנחס ולכן הוא יכול להמשיך לשורה הבאה בתכנית הראשית.

 

בשורה השלישית קורא דני את ההוראה    Print_Number (5);

 

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

 

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

היא מכניסה לכיס את המספר 5 (שקיבלה מדני)  וניגשת לבצע את ההוראה   Print_Number (5);

הכיס ישאר צמוד אל פנינה כל זמן עבודתה.

 

בשורה הראשונה קוראת פנינה   Number); ,Writeln ('Number='

היא מבינה שעליה להדפיס את המספר הנמצא בתוך הכיס ששמו Number .

פנינה מסתכלת בכיס, מוצאת שם את המספר 5  ומדפיסה על המסך  Number=5 .

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

 

דני ממשיך לבצע את עבודתו ובשורה הרביעית הוא קורא את ההוראה               Many_Things_To_Do (11, 4);

הוא פונה למנחם ומבקש ממנו עזרה.

 

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

לכיס הראשון בשם N1 הוא מכניס את המספר 11  ולכיס השני בשם N2 הוא מכניס את המספר 4, וניגש לבצע את ההוראות שבגוף ההליך.

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

 

פלורט שמחה לסייע למנחם. היא מדפיסה על המסך את ההודעה  This is a message  ומודיעה למנחם שסיימה את עבודתה.

מנחם מודה לה וממשיך בעבודתו.

בשורה השנייה קורא מנחם הוראת תנאי. זוהי הוראת יסוד בפסקל ולכן הוא יודע כיצד לבצעה. עליו לבדוק את התנאי  n1>n2, כלומר עליו לבדוק האם  11>4  ? התשובה חיובית ולכן עליו לבצע את ההוראה print_number (n1*2). זו אינה הוראת יסוד והוא מבקש עזרה מפיני ומוסר לו את המספר 22 .

 

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

הוא מבצע את ההוראות בגוף ההליך ומדפיס על המסך number=22 .

פיני מודיע למנחם שסיים והולך לדרכו.

 

מנחם ממשיך לשורה הבאה (הוראת הדפסה). הוא מדפיסI had to do many things    

ומודיע לדני שסיים את עבודתו.

 

דני ממשיך לשורה הבאה, קורא את הוראת ההדפסה ומדפיס על המסך את ההודעהThis is the end of program dugma 

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

 
תרגיל

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

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

 

נבקש מפנחס לבצע את התכנית People.

פנחס מתחיל בשורה ראשונה של התכנית הראשית ומדפיס על המסך  what a nice day!

בשורה השנייה הוא נתקל במילה החדשה   Numbers (... , ...)

ולכן הוא קורא לנירה ומוסר לה 12  ו- 35- .

 

נירה רואה שלא קיים שויון בין 12 ל- 35-  ולכן היא מדפיסה not equal     ומסיימת.

 

פנחס ממשיך לשורה הבאה בתכנית הראשית ומציב לתוך קופסה בשם Num   את תוצאת החישוב 5-100.

בשורה הבאה (רביעית עד כה) פנחס שוב נתקל במילה חדשה Numbers (.. , ..)

ולכן הוא קורא לעזרתו את נחום.

 

פנחס מוסר לנחום את ערכו של Num ואת תוצאת החיבור 5+90.

נחום מגלה שיש שויון בין המספרים שקיבל ולכן פונה למירי שתבצע עבורו את Message.

 

מירי מדפיסה  this is NOT a message  ומסיימת.

גם נחום מסיים והולך לדרכו.

פנחס מדפיס  great! this is the end   ומסיים גם הוא.

 

השימוש במודל האנשים הקטנים במהלך ההוראה

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

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

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

השלב האפשרי הבא בשימוש במודל, הוא בעת הדיון ברקורסיה.

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

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

 

טבלה המסכמת את המאפיינים המרכזיים של מודל האנשים הקטנים

 

מאפיינים בקהילית האנשים הקטנים

מאפיינים במדעי המחשב

המלים שכל האנשים מכירים בעל-פה ומסוגלים לבצע.

מילות היסוד בשפה  

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

שמות הפרוצדורות

דף המכיל את פירוש המלה החדשה (ההוראות שלה).

טקסט של פרוצדורה

פנייה לאחד האנשים לביצוע מילה חדשה. האיש לוקח מהספריה עותק ומבצע את ההוראות לפי סדרן.

הרצת פרוצדורה

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

סיום הרצת פרוצדורה

              

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

פרוצדורה

שקוראת לתת פרוצדורה

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

פונקציה

כיס בבגדיו של האיש הקטן המבצע מילה חדשה.

פרמטר    

שם המודבק (או תפור) על הכיס.

שם הפרמטר - פרמטר פורמלי

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

ערך הפרמטר בעת הרצת הפרוצדורה - פרמטר אקטואלי

לאנשים שונים יכולים להיות כיסים בעלי אותו שם.

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

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

העברת פרמטרים

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

פרוצדורה רקורסיבית

 

אתר הבטים

תוכן לפי נושאים

תוכן לפי גליונות

גליון ספטמבר 95

חזרה לתחילת העמוד