היישום אינו מחובר לאינטרנט

תיכנות לולאות

עבודה מס' 064479

מחיר: 167.95 ₪   הוסף לסל

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

3,482 מילים ,19 מקורות ,2000

תקציר העבודה:

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

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

תוכן עניינים:
1. מבוא
2. סקירת ספרות
2.1 שגיאות כלליות של מתכנתים מתחילים
2.2 שגיאות ספיציפיות בלולאות
2.2.1 שגיאות בלולאות for בלבד
2.2.2 שגיאות הקשורות לשימוש בזקיף
2.2.3 שגיאות הקשורות ליציאה מלולאות
2.2.4 לולאות אינסופיות
2.2.5 שגיאות הנוצרות עקב גישות לימוד שונות
2.2.6 שגיאות הקשורות להבדלים בין סוגי לולאות
3. סיכום
4. ביבליוגרפיה

קטע מהעבודה:

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

מקורות:



Untitled
תיכנות לולאות
תוכן עניינים:
מבוא
סקירת ספרות
שגיאות כלליות של מתכנתים מתחילים
שגיאות ספיציפיות בלולאות
שגיאות בלולאות for בלבד
שגיאות הקשורות לשימוש בזקיף
שגיאות הקשורות ליציאה מלולאות
לולאות אינסופיות
שגיאות הנוצרות עקב גישות לימוד שונות
שגיאות הקשורות להבדלים בין סוגי לולאות
סיכום
ביבליוגרפיה
מבוא
תכנות כתחום דעת הוא תופעה חדשה יחסית בלימודי תיכון ולכן קשה עדיין לדעת מהן מגבלותיהם של תלמידים בתחום זה, ממה הן נובעות ומהן התפיסות המוטעות שהם מפתחים. הבנת התפיסות המוטעות בקרב מתכנתים מתחילים משרתת תפקיד חשוב בכך שהיא מעמיקה את התובנות לגבי לימוד תחומי דעת מורכבים בכלל.
לדעת החוקרים אחד מרכיבי הלימוד החשובים בתחום התכנות הם: הבנת מכונה וירטואלית שאינה תלויית שפה. הבנה נכונה של הנושא תגרום למתכנת לחשוב בצורה נכונה בכל שפה או סביבת עבודה בה הוא מתכנת. לכן עבודות המחקר השונות צריכות להתמקד בבעיות מהותיות אלו ופחות בבעיות של סמנטיקה. קבוצות מחקר בעבר שסיווגו את הבעיות
לסוגים שונים, שגו בכך שהתמקדו בתדירות שבה מופיע כל סוג ולא בחנו את שורש הבעיות. קבוצות המחקר המאוחרות יותר שבראשן עמד סולוויי החלו להבין זאת.
בעבודה זו בחרתי לבחון את התפיסות המוטעות שיש למתכנתים מתחילים בנושא: לולאות, משום שהן מהוות חלק חשוב בתכנות הבסיסי. הבעיות בתחום הן רבות ונובעות מסיבות מגוונות, עד היום יש מחלוקות לגבי שיטות הוראת הנושא כדי לצמצם את השגיאות בנושא .למרות המחקרים הרבים והממצאים הקיימים, ישנם מספר כיווני מחקר שטרם
נבדקו והייתי רוצה לעלות אותם בעבודה זו.
2. סקירת ספרות
שגיאות של מתכנתים מתחילים בקשר ללולאות, מתוארים בספרות מכיוונים שונים וממקורות רבים. חלק מהבעיות טמונות בתפיסות מוטעות שיש לתלמידים בתכנות בכלל, המשליכות גם על לולאות, וחלקן נובע משימוש לא נכון, או תפיסות מוטעות הקשורות ספציפית ללולאות. אבחנה נוספת בין שגיאות נעשית לגבי התלות או האי תלות בשפת
התכנות עצמה, השגיאות המהותיות הן אלה שאינן תלויות שפה ועליהן נרחיב בעיקר בחלק זה.
2.1 שגיאות כלליות של מתכנתים מתחילים:
ידע שברירי - בהגדרתו הכללית זהו ידע לא מדויק שיש בידי התלמיד. ניתן לאפיין מספר סוגים של ידע כזה: ידע חלקי או שגוי של תבניות מסוימות בתכנות, ידע קיים אך אי היכולת לשלוף אותו בזמן נתון מתוך מאגר הידע שלו, ידע מגובב (ערבוב של תחבירי פקודות), וידע לא מתאים (שימוש בפקודה נכונה אך לא במקום הנכון).
תרגום לשפה טבעית - מתכנתים מתחילים נוטים לבצע אנלוגיה לשפה טבעית, בייחוד שמדובר במבני שפה בעלי משמעות. למשל בעיית ה - "while demon" המושג: while באנגלית פירושו, "כל עוד" - מתפרש אצל תלמידים כתנאי שנבדק תמידית לדוגמה: "כל עוד אתה בכביש המהיר המשך ישר" ונוטים להשליך שאת ללולאות while בתכנות. במחקר של
סולוויי (1981), 34% מהנשאלים שהיו סטודנטים בקורס "מבוא לתכנות", שגו בכך שטענו, כי תנאי הבקרה נבדק בכל שלב בלולאה. כלומר אם תנאי הבקרה הפסיק להתקיים והמפרש טרם הגיע לבדיקת התנאי, בכל זאת תתבצע יציאה מהלולאה. דוגמה נוספת לשגיאה תחבירית היא של תלמיד במחקרו של סולוויי, השתמש בלולאה repeat until והוסיף
את המילה then שקיימת רק בהקשר של פקודת if, בגלל התרגום לאנגלית (until then) וטען שהפקודות שמופיעות אחרי ה - then הן הפקודות לביצוע, כשתנאי הלולאה מפסיק להתקיים.
"באג המקביליות" - מתכנתים שאינם מבינים היטב את יכולות המפרש להריץ שורה אחר שורה, נוטים לחשוב שהמפרש יכול לבדוק במקביל את כל הפקודות הכתובות בתכנית ולכן אם תנאי מסוים החל להתקיים, למרות שהמפרש כבר חלף עליו, טעות נפוצה תהיה לחשוב שהפקודה שנמצאת תחת תנאי זה תתבצע, למרות שהמפרש כבר חלף עליה.
באגים מכוונים - תלמידים רואים תכנית ונדמה להם שהיא מבצעת משהו מסוים, אם זה בגלל תרגום חופשי של משתנים או פירוש לא מדויק של התכנית או זיהוי תבנית, שהופיעה בעבר בהקשר אחר.
באגים אגוצנטריים - באגים הנובעים מאופן חשיבה מוטעה של תלמיד, שהמחשב יבין את כוונתו, גם אם לא כתב באופן מדויק, למשל: התלמיד השמיט שורת קוד של קידום הלולאה ומצפה מהמחשב להבין, שהיות והוא השתמש בלולאה יבצע זאת בעצמו. אי ביצוע של אתחול משתנים הקשורים ללולאה (המחשב יאתחל בעצמו), או שימוש כפול במשתנה
לצורך קריאת נתונים בלולאה ולצורך בקרה (המחשב יידע להבדיל בין שני התפקידים השונים של אותו משתנה).
לפי פיא (1986) למרות שתלמידים נאמר שהמחשב הוא "גולם", הם מייחסים לו תכונות חשיבה ויכולת החלטה ואינן מבינים שמדובר רק במכניזם בעל יכולת פירוש של הוראות נכונות דקדוקית, מדויקות וחד משמעיות בלבד.
לפי פיא (1986) ה"באגים" הם שיטתיים ולא אקראיים. הם לא נובעים מעבודה מרושלת ורענון של מבני התכנית או תדרוך לא יועילו לפתור אותם. מקורם של הבאגים הוא טמון עמוק יותר בידע אינטואיטיבי לגבי מושג התכנות, ידע קודם שרכשו (והוא עשוי להיות שגוי) והמיפוי האוטומטי משפה טבעית לשפת מחשב, שמצוי באופן אינדיבידואלי
בקרב כל תלמיד. לדעת פיא על מנת לפתור את הבאגים מהסוג שתואר יש לארגן פעילויות לתלמידים בהן יש סיכוי שאותם "באגים" יופיעו בתדירות גבוהה ויהיה קל "ללכוד" אותם. חשוב שהתלמידים יעברו שורה שורה ויאמרו בכל רם, כיצד המפרש מבין אותם. יש לספק לתלמידים מודלים להבהרת תהליכי הבקרה על הנתונים. פרקינס (1986) מוסיף
נושא הרפלקציה חשוב אצל תלמיד, כשהוא מקבל שאלה כגון: הדפסה של שורת כוכביות, למשל הוא צריך לשאול את עצמו שאלות כגון: האם יש פקודה שמאפשרת חזרה על פעולה ? ולענות לעצמו - לולאה , אם כן איזה סוג של לולאה ? התלמיד בונה לעצמו בסיס מידע של תבניות ואסטרטגיות ויוכל לשלוף ממנו בהמשך. בוליי (1991) טוען שיש לבצע
הדגמות תיאורטיות של מה שמתבצע בתוך המחשב ,למנוע אנלוגיות לאנגלית, מה שימנע הכללת יתר לשפה טבעית.
2.2 שגיאות ספציפיות בלולאות:
במחקר של ג'נטר וסטיבנס (1983) שנערך בקרב 68 תלמידי י"א י"ב עם רקע מתמטי חזק. המחקר נערך לאחר שסיימו קורס "מבוא לתכנות" והשגיאות הנפוצות היו כדלקמן:
תלמידים נטו לחשוב שהפקודה שבאה אחרי סיום הלולאה, היא חלק מהלולאה ולכן הניחו שהתבצעה מספר פעמים. באופן מפתיע תלמידים שטעו בתכנית עם לולאת for לאו דווקא טעו בתכנית דומה עם לולאת while ולהפך.
תלמידים נטו לחשוב שכל הפקודות בלולאה מתבצעות פעם אחת, למעט הפקודה האחרונה בגוף הלולאה, שמתבצעת מספר פעמים, באופן מפתיע שגיאה זו הופיעה רק כשהפקודה האחרונה בגוף הלולאה הייתה פקודת הדפסה.
שימוש מוטעה בבלוק של begin ו - end ללא לולאה בתכנית כתובה, גרם לתלמידים לחשוב, שאכן מדובר בלולאה.
בלולאות שהכילו פקודה אחת בלבד ללא בלוק של begin ו - end הניחו התלמידים שהפקודה שבאה אחרי גוף הלולאה משויכת לפקודה שלפניה. גם אם ידעו מה יהיה הפלט של התכנית, ההסבר לכך לא היה נכון.
טעות בזיהוי סיום הלולאה. כשליש מהתלמידים טענו שבסיום כל איטרציה יש חזרה לתחילת התכנית לביצוע אתחול המשתנים בשנית. טעות זו קרתה רק בתכניות קצרות.
בלבול בסדר ביצוע הפעולות. למרות שתכנית מסוימת הייתה כתובה בסדר מסוים, תלמידים הניחו שהרצה תתבצע באופן אחר, רק משום שזה מסתדר עם ההגיון הבריא שלהם. זה קרה בתכנית שבה הופיעו בלולאה פעולת הדפסה של משתנה ולאחר מגן פעולת קידום. התלמידים לא הבינו, מה הטעם להדפיס ערך שכבר ידוע ולכן האמינו שהמחשב קודם
יקדם את קודם את ערכו ואחר כך ידפיס את ערכו החדש.
שגיאות בלולאות for בלבד שיפורטו בהמשך.
במחקר זה הטעויות סווגו לרמות קושי שונות ולשני סוגים של מקורות לבעיה: חוסר תשומת לב או ידע שנדרש ופגם באינטראקציה בין החומר הפורמלי הנלמד לידע הכללי של התלמיד.
בעיות מבניות נוספות גילו סולוויי ובונר במחקרם:
תלמידים לא תמיד יודעים לכתוב לולאה בצורה כללית ומבצעים חזרה של אותן הפקודות עבור האיטרציה הראשונה והשנייה.
שימוש במונה וצובר: שאלה של חישוב ממוצע של סדרת מספרים שנקלטת מהמשתמש. כל הנבחנים ידעו להגדיר מונה בצורה נכונה, אולם רק 83% ידעו להוסיף פקודת צובר נכונה ולרשום את פקודת חישוב הממוצע מחוץ ללולאה. תלמידה שהצליחה לבצע זאת, טענה שכתבה את הפקודה כך שהמחשב יוכל להשתמש בערך הצובר, כשיוצאים מהלולאה.
2.2.1 שגיאות בלולאת for בלבד -
לפי סולוויי, תלמידים מתקשים בהבנה של קידום אוטומטי של מונה הלולאה בכל איטרציה. הם התקשו להבין שבכל איטרציה אותו ביטוי נבדק מול ערך אחר.
תלמידים חשבו שמשתנה הבקרה של הלולאה אינו מוכר בגוף הלולאה.
בלבול בין משתני הקליטה למשתני הלולאה. למשל: בלולאת for שרצה מ 1 עד 3, וכללה פקודת קליטה למשתנה, היה נדמה לתלמידים שהערכים האפשריים לקליטה הם 1 עד 3 בלבד, ואם נקלט ערך אחר, מתבצעת יציאה מהלולאה.
בלולאת for שבתוכה מופיעות פקודת קליטת משתנה והדפסתו, הניחו התלמידים שכל הערכים שנקלטו יודפסו בזה אחר זה מספר פעמים כגודל הלולאה במקום להבין שכל ערך יודפס מיד לאחר שנקלט פעם אחת בלבד.
על פי ליברמן (1996) תלמידים נוטים לקדם את משתנה הבקרה, למרות שהמהדר מאפשר זאת (זוהי טעות לוגית).
2.2.2 שגיאות הקשורות לשימוש בזקיף -
דרך לסיום לולאה היא שימוש בערך דמי, הנועד להתרות על סיום הקלט. סולוויי מראה במחקריו את הקושי בשימוש בזקיף בבעיה כגון: קליטת סדרת מספרים עד זקיף מסוים וחישוב הממוצע שלהם. בלולאות while , הייתה בעיה כשהתלמידים הגדירו פקודת קלט אחת מחוץ ללולאה ושכחו להתחשב בה ובכך קלטו יותר מדי נתונים. בלולאת repeat
הייתה בעיית קצה וערך הזקיף נכלל בטעות בממוצע.
2.2.3 שגיאות הקשורות ליציאה מלולאות -
בנושא יציאה מלולאות קיים וכוח אקדמי בנוגע להיתר השימוש בהן. הטענה המרכזית היא שהיציאה פוגעת במבניות של התכנית. בשפת פסקל הסטנדרטית, כשתלמידים לא הורשו להשתמש בפקודות יציאה, נתגלו שגיאות בכתיבת לולאות קשות, כגון: חיפוש ערך ברשימת ערכים.
הפתרון שהוצע היה שימוש במשתנה דגל בוליאני ,שיאותחל כ"שקר" וברגע שהתנאי ליציאה יקיים יהפוך ל"אמת". אולם השימוש בדגל מקשה יותר על תלמידים משום שהוא מצריך תוספת של תנאי למשתנה הבקרה והשימוש בו רחוק יותר מהשפה הטבעית מאשר שימוש בפקודת יציאה. במספר בתי ספר תיכון נלמד משתנה הדגל רק לאחר שנלמדים משתנים
בוליאנים, אולם למרות זאת השימוש בזקיף קל לתלמידים יותר מאשר השימוש בדגל.
הדיון נפתח מחדש כשנכנסו לשוק שפות כגון: C , ADA. שהתירו פקודות goto ו - break.
בן ארי (1996) טוען שהמבניות של התכנית נשמרת כל עוד משתמשים ביציאה מלולאות במקרים הבאים: שימוש ב- break או שימוש ב- return באמצע לולאה או פונקציה.
החשש היה שהסטודנטים ישתמשו בתבניות יציאה לרעה, כל אימת נוח להם לעשות זאת. אולם מחקרים הראו שרובם המכריע של סטודנטים שסיימו קורס "מבוא לתכנות" השתמשו בפקודות היציאה רק בדומה לדוגמאות שהוצגו להם בכיתה. ממצאים אלו תואמים את מחקרו של שפרד (1979) שהציג איך שימוש ביציאה מלולאות לא פוגם בקריאות שלהן.
לפי בן ארי (1979) שימוש באמצעות exit מלולאה הוא כלי מצוין כדי לקבוע אם התוכנית מובנית ומהו טיב התכנית.
2.2.4 לולאות אינסופיות -
לולאות אינסופיות הן האויב הגרוע של המתכנת (מנגר, 2000). לולאות אמורות להיות בנויות כך שהן יתבצעו מספר סופי של פעמים, אך זה לא מובטח אם המתכנת אינו בונה אותן כראוי. סביר להניח שמקורן במבנה בקרה שגוי, זה קורה בעיקר כשמתכנתים מתחילים משתמשים בתנאי שאינו חסם עליון או מכניסים ללולאה שורות קוד המשבשות את
ערך משתנה הבקרה מבלי לשים לב.
2.2.5 שגיאות הנוצרות עקב גישות לימוד שונות -
אנשי ההוראה והמחקר חלוקים לגבי מספר נושאים מהותיים בנושא לימוד הלולאות. נציג פה מספר גישות ללימוד לולאות, שיכולות לפתור קשיים מסוימים, מאידך יכולות ליצור בעיות נוספות.
לימוד תבניות.
שאקלפורד וברדה (1993) מציעים את התבניות הבאות לשימוש בלולאות:
חוקים תאוריים לסיווג לולאות:
שימוש בלולאת for אם מספר האיטרציות ידוע.
שימוש בלולאת while אם מספר האיטרציות אינו ידוע.
שימוש בלולאת repeat אם מספר האיטרציות לא ידוע, אך חייב להתבצע לפחות פעם אחת.
חוקים קונסטרוקטיביים - המתבססים על חישוב מתמטי של משתנה הבקרה:
שימוש בלולאת for אם ערך המונה עולה באופן אחיד.
שימוש בלולאת while אם ערך המונה מתקיים גם בלי הלולאה וצריך רק לגשת אליו דרך הלולאה.
שימוש בלולאת repeat אם ערכו של המונה קיים רק לאחר חישוב בתוך הלולאה.
לפי מחקר של מן (1991), 18 מתוך 22 סטודנטים שקבלו חוקים קונסטרוקטיביים כתבו לולאות נכונות. ההצלחה בקרב הקבוצה שקבלה חוקים תיאוריים הייתה מועטה יותר, רק 12 מתוך 22 סטודנטים. הבעיות היו בעיקר בגוף לולאת ה - while.
לפי קלנסי ולין, תבניות מבטיחות גמישות, אך הן מופשטות דיו כדי ליצור בעיות אחרות. התבניות שצוינו לעיל נועדו לבצע אבחנה בין הסוגים השונים של לולאות, כדי להקל על סטודנטים בבחירה שלהם. התבניות לקראת סיום הלימוד צריכות להיות מופשטות יותר, כמו כן יש המלצה להשתמש בתבניות שנבנו על ידי אחרים.
- אלו סוגי לולאות יש ללמד , מתי ובאיזה הקשר ?
הדיון בנושא סוגי הלולאות שיש להציג בפני תלמידים גם הוא שנוי במחלוקת בקרב אנשי דעת רבים. הסיבות לכך הן שלא כל סוגי הלולאות נמצאות באותה רמת קושי, כמו כן אפשר להסתדר רק עם חלק מהן, בנוסף נשאלת השאלה באיזה סדר ללמד אותן ולאלו מבני שפה נוספים כדאי לקשרן כך שהחיבור ייראה הגיוני וברור לתלמידים.
אטווד ורג'נר במאמרם "Teaching subjects of pascal" טוענים שלמרות הקשר המתבקש אין לערבב נושאים כלל. יש ללמוד כל נושא, בין היתר לולאות בנפרד. הם טוענים שלא כדאי להעמיס על התלמיד ולמרות שיש קשר בין לולאת while ללולאת for יש ללמד קודם כל את while לעומק, שהיא לולאה "חזקה" יותר ורק כשהמבנה שלה מובן לעמוק
להציג את for כמקרה פרטי שלה. לולאת ה - for נלמדת בהקשר של מערכים (ריצה לפי אינדקס) ובחיפוש ליניארי , אלגוריתם שנראה טבעי יותר לתלמידים לממש באמצעות for. הם עורכים במאמרם השוואה דומה למקרים פרטיים אחרים בתכנות, למשל: case כמקרה פרטי של if.
גרייס (1974) טוען שבכל הקשור לאיטרציות, מספיק ללמד לולאת while ללא הגבלות של יציאה ובכך להקטין את כמות הבאגים. כמו כן הוא מוסיף שניתן להוכיח מתמטית כי כל אלגוריתם ניתן למימוש באמצעות 4 משפטים בסיסיים בתכנות, ביניהם שני סוגי לולאות (בלי for). לטענתו אין ללמד for משום שתלמידים רבים מתקשים בהבנת
האיטרציות בלולאה זו ונוטים לחשוב שגוף הלולאה מתבצע פעם אחת בלבד, זאת מפני שהמונה מתקדם אוטומטית.
סמוריי ורי'צי (1984) לעומת זאת טוענים שלא ניתן ללמד באופן עצמאי, כי הן קשורות לנושא ההשמה, וחלק גדול מהבאגים של מתכנתים מתחילים קשורות לאופן ההשמה בהקשר של לולאות. השמת משתנים מקבלים משמעות "חזקה" יותר בלולאות ולכן בעת בניית לולאה יש לבצע תכנון נכון של משתנים (כגון: הבדלה בין מונה לצובר)
סמוריי וריצ'י ערכו מחקר בקרב 18 תלמידי תיכון ובחנו את תוצאותיהם לאורך פרק זמן של 30 שבועות. הם מציגים במחקרם מספר שאלות על לולאות ברמות קושי שונות, כל שאלה מחייבת שימוש במספר שונה של מונים וצוברים.השאלון כלל בעיות של: קליטת רצף מספרים, שימוש בפקודת קליטה בתוך לולאה ובעיה שלא ניתנת למימוש בלולאת
for.
בתום תקופת הלימוד התעוררו עדיין בעיות מהותיות: נטייה להתחיל עם החלק הדקלרטיבי (בהגדרת משתנים גלובליים) במקום החלק הפרוצדורלי (כתיבת הלולאה עצמה) - בעיה שהלכה ונעלמה עם הזמן, כתיבה נכונה של משתנה הבקרה אך שימוש לא נכון בהשמה (נובעות מתרגום ישיר מאלגברה), שימוש נכון בפקודות קלט בתוך הלולאה, אך חוסר
אתחול או אתחול שגוי.
לפי היסדייל (1988) ספרי הלימוד בפסקל מציגים את לולאת while כתחליף ללולאת for וזה גורר שתי תוצאות לא רצויות: תלמידים מפקפקים בצורך ללמוד את לולאת for ובנוסף הם מפספסים את העיקרון של המקרה הפרטי של for, שהוא קל יותר ליישום במקרה של מספר איטרציות ידוע, עיקרון שעוזר בבניה נכונה של לולאות.
כותבי ספרי הלימוד שוגים בכך שהם מציגים את השוני בין סוגי הלולאות באמצעות הדגמה בלבד של קודים שונים ובכך מעודדים שכתוב נכון של לולאה, אך לא בנייה מחדש. בעיה זו שאולה מבעיה אחרת שמציגים ברטין וסקרדמיליה (1982) בה תלמידים מתקשים מעדיפים לשכתב חיבור על ידי תיקון קל של משפטים, מאשר לשנות את מבנהו הכללי.
היסדייל מוסיף כי סוגים שונים של לולאות נבנו במיוחד כדי לתת מענים שונים למתכנתים, ולרוע מזל מתכנתים מתחילים מסוגלים לראות את השוני בין הסוגים רק ברמה המבנית / תחבירית ולא ברמה האופרטיבית. השוני צריך להילמד כבר בשלב מוקדם של תכנון ובנייה של לולאות.
- גישת "קריאה ועיבוד" לעומת "עיבוד וקריאה"
בגישת "קריאה עיבוד" (R-P) מתבצעת קודם קריאת הנתון ורק אחר כך עיבוד (או בדיקה), גישה זו ממומשת בלולאת repeat או while , לעומת הגישה ההפוכה (P-R) שממומשת בלולאת repeat. מתכנתים מתחילים נוטים להתבלבל בגישה השניה, משום שהיא לא מתיישבת עם השפה הטבעית שלהם, הם מבינים שקודם כל צריך לקרוא נתון ואחר-כך לבצע
עיבוד (קידום הלולאה, למשל) ולכן רובם בוחרים להשתמש בגישה הראשונה, אולם גם בה טמון קושי והוא הצורך לבצע קליטה פעמיים, פעם ראשונה מחוץ ללולאה ופעם שנייה בתוכה, ומכאן שהם יכולים גם לטעות במספר האיטרציות ולגרום לכך שהלולאה תתבצע n+1 פעמים במקום n פעמים. גריי , גולדברג וביירנס (1993) הגיעו לממצאים דומים
וטוענים שאצל מתכנתים מתקדמים יש מעבר לגישת (P-R), שהיא חסכונית יותר ותואמת יותר את מבניות שפת פסקל.
כדי למנוע בלבול וליצור אחידות יש המשתמשים בלולאת דמי שנקראת loop שדומה לגישה הראשונה ומאפשרת גם יציאה ממנה. סולוויי, בונר וארליך תומכים בגישה זו ובמחקרם מראים, כיצד לולאת while דמי (שלא קיימת בפסקל סטנדרטי) קלה יותר להבנה אצל מתכנתים מתחילים, לכן כדי אולי להתחיל בלימוד אלגוריתמי תיאורטי של לולאות
ובכך להימנע ממגבלות שפה.
2.2.6 שגיאות הקשורות להבדלים בין סוגי לולאות
עבודת המחקר שנעשתה עד כה בהשוואה ישירה בין סוגי לולאות מובאת במאמרם של וו ואנדרסון: "Strategy Selection and change in Pascal Programming". מטרת המחקר הייתה לבדוק האם תלמידים יודעים לבצע אדפטציה נכונה בין לולאת while ללולאת repeat ולהפך. לולאות for לא נבדקו משום שנועדו למספר איטרציות ידוע מראש וזו
לא הייתה מטרת המחקר.
במחקר נערך שלושה ניסויים: בניסוי הראשון יכלו התלמידים לבחור את סוג הלולאה והם נתבקשו לפתור בעיות מסוגים שונים:
בעיות שהמימוש הטריוואלי הוא לולאת while (W)
בעיות שהמימוש הטירוואלי הוא לולאת repeat (R)
לולאות שקל לממש בשתי הדרכים (NE)
לולאות שקשה לממש בשתי הדרכים (NH), למשל יציאה מלולאת וכאן נבחנה מידת השימוש ב - goto (אסטרטגיית - G)
תוצאות הניסוי הראו שרוב התלמידים אכן בחרו בסוג הלולאה המתבקש בבעיות מסוג W ,R , אולם בבעיות (NH , NE) לא בלטה אסטרטגיה בולטת לבחירת סוג לולאה.
השימוש באסטרטגיית G היה נפוץ בבעיות ( W, NH,).
בניסוי השני חלקו השני של הניסוי נכפה על התלמידים להשתמש בסוג מסוים של הלולאה, גם אם הסוג לא תאם את הבעיה. עקב כך חלה ירידה ברמת היעילות של התכניות, אולם בדיקה זו הייתה הכרחית לניסוי. התלמידים חולקו ל - 4 קבוצות: קבוצה שנתבקשה להשתמש בלולאותwhile בלבד, קבוצה שנתבקשה להשתמש בלולאת repeat בלבד,
קבוצה שקבלה חופש בחירה בבעיות N למיניהן וקבוצה שקבלה חופש בחירה לגבי כל הבעיות. סוגי הבעיות היו כמו בניסוי הקודם. אלמנט נוסף שנבדק כאן היה זמן הפתרון והשוואה בין הקבוצות השונות.
התוצאות אכן הראו שהקבוצות שנכפה עליהן סוג הלולאה, היו איטיות יותר בבעיות בהן טבען של השאלות היה הפוך. הקבוצה שקבלה חופש מלא עמדה באותו קצב כמו שאר הקבוצות בשאלות בהן סוג הלולאה תאם את טבען של השאלות.
הניסוי השלישי נועד כדי לבדוק מגמתיות של בחירת סוג לולאה לאורך זמן . התלמידים חולקו לקבוצות,כשכל קבוצה קבלה סדרה של בעיות ברצפים שונים. למשל: קבוצה אחת קבלה קודם כל רצף של בעיות R , אחר-כך רצף בעיות W ולבסוף רצף בעיות N למיניהן.
התוצאות הראו שהתלמידים יודעים לעבור לפתרון מסוג אחד לאחר כשצריך, אולם כשמתחיל רצף של בעיות מסוג N, יש מגמה להמשיך באותו סוג לולאה שאתו עבדו קודם לכן.
סיכום
התוצאות הכלליות לא מצביעות על קשיים מהותיים ופערים תהומיים בין משתתפי הניסוי. רוב התלמידים יודעים לאבחן את סוג הלולאה הרלבנטי של השאלה, אולם מתקשים לתרגם אותן לסוג לולאה שהוא פחות תואם את טבע השאלה. תוצאות אלו מקבלות חיזוק ממחקרים דומים כגון: רדר (1987), זיגלר וג'נינקס (1989) ועוד.
המחקר בנושא ההשוואה בין סוגים של לולאות שנעשה עד כה הוא מועט ועסק רק בהשוואה בין לולאות while ל - repeat, אי לכך אני רואה צידוק בעבודה זו לבדוק גם את ההבדלים בין לולאות while ל -for ובהשוואה זו נכנס אלמנט חשוב נוסף והוא חוסר האפשרות לתרגם לולאותwhile מסוימות ללולאות for. מכאן ששאלות המחקר יהיו:
האם תלמידים יודעים לזהות מקרים כאלו ? האם תלמידים מבינים מכך שלולאת for היא מקרה פרטי של while ? האם תלמידים יודעים להשתמש בלולאת while כשנתוני הבעיה מרמזים על שימוש ברור בלולאת for ? אין לי ספק שעבודה זו תשפוך אור בכל הנוגע לשאלות אלו.
ביבליוגרפיה:
Sleeman D. , T.Putnam R., Baxter J., Kuspa L., "Pascal and high school students: A study of Errors" ,Educational Computing Research, Vol 2(1), 1986
Soloway E., Spohner J., Littman D., "Enum Pluribus Generating Alternative design", Teaching and learning Computers, 1988 Hillsdale, 139-140
Bonar J., Soloway E., "Uncovering Principles of Novice Programming", ACM SIGACT-SIGPLAN symposium 1983, 10-13
Du Boulay B., "Some Difficulties of Learning to Program", Educational Computing Research, Vol. 2(1),1986, 69-72
Sleeman D. , T.Putnam R., Baxter J., Kuspa L., "A Case Study of Student's Errors", Teaching and learning Computers, 1988, 238-253
J. Clancy M., M.C. Linn, "Patterns and Pedagogy", March 1999 ACM SIGCSE Bulleting, 37-40
Shackelford, R.L , Barde, A.N, "Why can't smart students Solve Simple Programming Problems?", International Journal of Man-machine Studies, Vol. 38, Num. 64 (June 1993), 985-997
Samurcay R., "Learning Programming: An Analysis of Looping Strategies Used by Beginning Students", For the learning of Mathematics, Vol. 5(1), 1985, 37-43, FLM Publishing Association
S. Roberts E., "Loop Exits and Structured Programming: Reopening the Debate", March 1995 ACM SIGCSE Bulleting, 268-272
Ben-Ari M., "Structure Exits, Not Loops", Sept. 1996 ACM SIGCSE Bulleting Vol.28 No.3, 51-59
Perkins, D.N., Schwartz, S., Simmons, R. (1988). "Instructional strategies for the problems of novice programmers". In Mayer R.E. (ed.), Teaching and Learning Computer Programming, multiple research perspectives. Lawrence Erlbaum Associates, Inc., 154-175.
Bonar, J. ,Soloway, E. (1985)." Preprogramming knowledge: A major source of misconceptions in novice programming", Human Computer Interaction, Vol. 1(2), 326-328
Searle J.R, "Infinitive Loops and how to Create Them", Jan. 1987 ACM SIGAPL vol. 17 Num.4
Wu Q., Anderson J.R, "Strategy Selection and Change in PASCAl Programming", Empirical Studeis of Programming, 4th Workshop, 227-237
Soloway, J. Bonar, K. Ehrlich, "Cognitive Strategies and looping constructs: An Empirical Study, November 1983 Comunications of the ACM, Vol.26(11)
Gries D., "What should we teach in an introductory Programming course?", Jan. 1974 SIGCSE Bulletin, Vol. 6(1), 81-84
Pea R.D, "Language-Independent Conceptual `Bugs' in Novice Programming", Educational Computing Research, Vol. 2(1),1986, 25-34
Gray W.D, Goldberg N.C, Byrnes S.A, (1993), "Novice and Programming: Merely Difficult Subject (why?) or a Means to Mastering Metacognitive Skills?", Journal of Educational Research on Computers, Vol. 9(1),131-140.
Atwood J.W, Regener E., "Teaching subjects of PASCAL", Feb. 1981 ACM SIGCSE Bulletin, Vol. 13(1), 97-99
1

תגים:

תכנות · לולאות · תבנית · מחשב · מתכנתים

אפשרויות משלוח:

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

אפשרויות תשלום:

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

אודות האתר:

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