You are on page 1of 23

‫בית הספר לחינוך‬

‫הכשרת אקדמאים להוראה‬


‫תוכנית מואצת להסבת מהנדסים להוראה‬

‫הצעה לבחינת בגרות ‪899222‬‬


‫עבודת סיום סטאז'‬

‫קורס‪ :‬מתודיקה של הוראת מדעי המחשב – טכנולוגית‬


‫מרצה‪ :‬ד"ר נוע רגוניס‬
‫מגיש‪ :‬חזי רזניקוב‬
‫תאריך הגשה‪10/4/2012 :‬‬

‫‪1‬‬
‫מבוא‬
‫בחינת הבגרות שנבחרה לצורך עבודת הגמר היא שאלון ‪ 2( 899222‬יחידות לימוד לתלמידי יסודות‬
‫מדעי המחשב ‪ 1‬ו‪ .)2-‬ניסיתי לשמור על מבנה השאלון ודרגת הקושי של השאלות בחלקים השונים‬
‫בהתאם לבחינות מהשנים ‪.2011 – 2007‬‬

‫העבודה מקיפה את ההיבטים השונים בבניית שאלון הבגרות‪ ,‬ומכילה את הפרקים הבאים‪:‬‬

‫מבנה הבחינה והשיקולים בבחירת השאלות‬ ‫‪‬‬


‫פתרון הבחינה‬ ‫‪‬‬
‫ניתוח זמן הפתרון ובחינת מסגרת הזמן לתלמידים‬ ‫‪‬‬
‫מחוון לבדיקה‬ ‫‪‬‬
‫רפלקציה על התהליך‬ ‫‪‬‬

‫מבנה הבחינה והשיקולים בבחירת השאלות‬


‫התחושה הכללית מעיון בבחינות משנים קודמות היא שהבחינה אמורה להיות קלה מספיק על מנת‬
‫שמרבית התלמידים יוכלו לעבור אותה‪ ,‬כאשר גם השאלות המאתגרות יותר אינן ברמת קושי גבוהה‬
‫במיוחד‪ .‬הדבר מתבטא בצורה מובהקת בפרק א' המהווה ‪ 50%‬מכלל הציון‪ ,‬ובו חמש שאלות בדרגת‬
‫קושי נמוכה ולעיתים נמוכה מאד‪.‬‬

‫שמרתי על המבנה הכללי של הבחינה כמו על תמהיל סוגי השאלות‪ ,‬ולקחתי חופש רקבבחירת תכני‬
‫השאלות ותחומי הידע והמיומנויות הנדרשים על מנת לענות עליהן ובדרגות הקושי של השאלות‬
‫הקשות‪.‬‬

‫הטבלה הבאה מרכזת את מבנה השאלון ואת תחומי הידע והמיומניות הנבדקים בכל אחת מהשאלות‬
‫שבניתי‪:‬‬

‫תחומי ידע ומיומנות נבדקים‬ ‫מבנה השאלות‬ ‫מבנה הפרק‬


‫שאלת מעקב אלגוריתם פשוטה‬ ‫שאלה ‪ – 1‬הבנת אלגוריתם פשוט‬ ‫חלק א –‪ 50‬נקודות‬
‫הבנת השימוש בלולאה בתוך‬ ‫באמצעות טבלת מעקב עבור קלט‬ ‫(‪ 10‬נקודות לכל שאלה)‪.‬‬
‫אלגוריתם‬ ‫נתון‪.‬‬
‫בניית תנאי מורכב‬ ‫‪ 5‬שאלות קלות (ללא‬
‫בחירה)‪ .‬מבנה הפרק (סוג‬
‫כתיבת קוד פשוט‬ ‫שאלה ‪ – 2‬כתיבת קטע קוד המבצע‬ ‫השאלות ואפילו סדר‬
‫הבנת הצורך לבחור משתני‬ ‫פעולה פשוטה‬ ‫הופעתן) די קבוע‪.‬‬
‫‪ double‬ולא ‪int‬‬
‫שימוש בפקודות קלט‪/‬פלט‬
‫לולאת ‪ while‬עם זקיף‬

‫שאלת מעקב אחרי קטע תכנית‬ ‫שאלה ‪– 3‬מעקב אחרי קטע תכנית‬
‫פשוט‬ ‫באמצעות טבלת מעקב עבור קלט‬
‫הבנה שהצבה מוחקת ערך‬ ‫נתון‪ .‬בנוסף שאלת הבנה המבקשת‬
‫קודם‬ ‫דוגמה לקלט אחר אשר יעמוד בתנאי‬
‫סעיף חשיבה (פשוט) לנושא‬
‫‪2‬‬
‫קלט מייצג‬ ‫מסוים‬

‫כתיב קוד פשוט‬ ‫שאלה ‪ – 4‬כתיבת קטע קוד המבצע‬


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

‫כתיבת פעולה פשוטה המחזירה‬ ‫שאלה ‪– 5‬כתיבת תכנית המבצעת‬


‫ערך‬ ‫קלט‪/‬פלט תוך צבירה ו‪/‬או מניה של‬
‫שימוש בתנאי בוליאני מורכב‬ ‫נתונים על פי תנאים מסוימים‬

‫פתרון שאלת "סיפור" (כולל‬ ‫שאלה ‪– 6‬כתיבת תכנית על פי מפרט‬ ‫חלק ב –‪ 30‬נקודות‬
‫נתונים בשאלה שאינם‬ ‫עשיר במספר מרכיבים‪ ,‬תוך ביצוע‬ ‫(‪ 15‬נקודות לכל שאלה)‪.‬‬
‫רלבנטיים)‬ ‫קלט ופלט‬
‫שימוש במערך צוברים‬ ‫‪ 2‬שאלות מתוך ‪ .3‬דרגת‬
‫שימוש במציין המהווה מספר‬ ‫קושי בינונית‪.‬‬
‫מתמודד‬
‫מציאת ערך גבוה במערך‬

‫פתרון בעיה מורכבת בעלת אופי‬ ‫שאלה ‪–7‬כתיבת תכנית על פי מפרט‬


‫"מתמטי"‬ ‫עשיר במספר מרכיבים‪ ,‬תוך שימוש‬
‫שימוש בשארית ובחלוקה של‬ ‫בפעולה פשוטה המוגדרת בגוף‬
‫משתני ‪int‬‬ ‫השאלה‬
‫תנאי בוליאני מורכב‬

‫שאלת מעקב וניתוח מסובכת‬ ‫שאלה ‪–8‬מעקב אחרי קטע קוד‬


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

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

‫שאלה מורכבת‬ ‫שאלה ‪ - 10‬כתיבת פעולה או שתיים‬


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

‫‪3‬‬
4
‫שאלות הבחינה‬
‫פרק ראשון(‪ 50‬נקודות)‬

‫ענה על חמש השאלות ‪( 1-5‬לכל שאלה – ‪ 10‬נקודות)‬

‫שאלה ‪1‬‬

‫לפניך אלגוריתם‪:‬‬

‫‪z 0 .1‬‬
‫‪ .2‬קלוט מספר למשתנה ‪n‬‬
‫‪ .3‬עבור ‪ i‬מ‪ 1-‬עד ‪( n‬כולל) בצע‪:‬‬
‫קלוט מספר למשתנה ‪a‬‬ ‫‪.3.1‬‬
‫קלוט מספר למשתנה ‪b‬‬ ‫‪.3.2‬‬
‫קלוט מספר למשתנה ‪c‬‬ ‫‪.3.3‬‬
‫אם (‪ )a>b‬וגם (‪)b>c‬‬ ‫‪.3.4‬‬
‫‪zz+1‬‬ ‫‪.3.4.1‬‬
‫‪ .4‬הצג כפלט את הערך של ‪z‬‬

‫עקוב באמצעות טבלת מעקב אחר ביצוע האלגוריתם בעבור הקלט (משמאל לימין)‬
‫‪ 3 4 6 6 4 7 2‬ורשום מה יהיה הפלט‪.‬‬

‫בטבלת המעקב יש לכלול‪:‬‬

‫עמודה לכל אחד מהמשתנים באלגוריתם‪,‬‬

‫עמודה שבה יצוין אם התנאי שבשורה ‪ 3.4‬מתקיים או אינו מתקיים‪ ,‬ועמודה בעבור הפלט‪.‬‬

‫שאלה ‪2‬‬

‫סכום הזוויות במשולש הינו ‪ 180‬מעלות‪ .‬כתוב קטע תכנית הקולט שלשות של מספרים ממשיים‬
‫המכילים המייצגים את מספר המעלות של זוויות של משולש ובדוק ובודק האם כל שלשה מייצגת‬
‫משולש חוקי‪ .‬הדיוק הנדרש לבדיקה כל זווית הוא ‪ 2‬ספרות אחרי הנקודה‪.‬‬

‫לכל שלשה הדפס את הזוויות‪ ,‬את סכומן‪ ,‬והודעה אם המשולש תקין או לא‪.‬‬

‫הקלט יסתיים כאשר אחת הזוויות בשלשה היא ‪.0‬‬

‫הערה‪ :‬אין צורך לבדוק את תקינות הקלט‪.‬‬

‫שאלה ‪3‬‬

‫‪5‬‬
‫לפניך קטע תכנית‪.‬‬

‫‪ a, b‬הם משתנים מטיפוס שלם‪.‬‬

‫;))(‪a = int.Parse (Console.ReadLine‬‬


‫;))(‪b = int.Parse (Console.ReadLIne‬‬
‫;)‪Console.WriteLine (a + “ “ + b‬‬
‫)‪if (a > b‬‬
‫{‬
‫;))(‪b = int.Parse (Console.ReadLine‬‬
‫}‬
‫;)‪Console.WriteLine (a + “ “ + b‬‬
‫א‪ .‬עקוב באמצעות טבלת מעקב אחר ביצוע קטע התכנית בעבור הערכים הבאים (משמאל לימין)‬

‫‪ 8 5 7‬ורשום את הפלט שיתקבל‪.‬‬


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

‫שאלה ‪4‬‬

‫כתוב קטע תכנית הקולט מספר ‪ m‬ובונה מערך חד ממדי‪ a‬בגודל ‪.m‬‬

‫אם ‪ m‬זוגי‪ ,‬הכנס לכל אברי המערך מספרים זוגיים רציפים ועולים החל מ‪ .0 -‬אם ‪ m‬אי‪-‬זוגי‪ ,‬הכנס לכל‬
‫אברי המערך ערכים רציפים ועולים החל מ‪.1-‬‬

‫חשב והדפס את סכום האברים במערך‪.‬‬

‫שאלה ‪5‬‬

‫כתוב פעולה בשם ‪daysInMonth‬המחזירה את מספר הימים בחודש‪ .‬הפעולה מקבלת שני פרמטרים‪:‬‬
‫שנה (‪ 4‬ספרות) וחודש (שתי ספרות)‪ ,‬וקובעת את מספר הימים בחודש לפי הכללים הבאים‪:‬‬

‫בחודשים ינואר‪ ,‬מרץ‪ ,‬מאי‪ ,‬יולי‪ ,‬אוגוסט‪ ,‬אוקטובר ודצמבר – יש ‪ 31‬יום‪.‬‬

‫בשאר החודשים מלבד פברואר יש ‪ 30‬יום‪.‬‬

‫בחודש פברואר יש ‪ 28‬יום‪ ,‬אלא אם כן השנה מתחלקת ב‪ 4-‬ללא שארית ואז יש ‪ 29‬ימים‪.‬‬

‫‪6‬‬
‫פרק שני(‪ 30‬נקודות)‬

‫ענה על שתיים מהשאלות ‪( 6-8‬לכל שאלה – ‪ 15‬נקודות)‬

‫שאלה ‪6‬‬

‫בשלב הגמר בתחרות "טבח נולד" מתמודדים ‪ 10‬משתתפים וכל אחד מכין ‪ 3‬מנות‪ :‬מנה ראשונה‪ ,‬מנה‬
‫עיקרית וקינוח‪ .‬לכל מתמודד יש מספר אישי בין ‪ 1‬ל‪.10 -‬‬

‫כל אחד מחמשת השופטים בוחר שני מתמודדים בלבד‪ ,‬אחד למקום הראשון ואחד למקום השני‪:‬‬
‫המקום הראשון מקבל ‪ 5‬נקודות והמקום השני ‪ 2‬נקודות‪.‬‬

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

‫התכנית תדפיס את מספר הזוכה (הנח שיש זוכה יחיד)‪.‬‬

‫שאלה ‪7‬‬

‫מספר "מיוחד" הוא מספר תלת ספרתי אשר מתחלק בכל אחת מספרותיו‪.‬‬
‫לדוגמה‪ ,‬המספר ‪ 735‬הוא מספר מיוחד מפני שהוא מתחלק בכל אחת מספרותיו ‪5 ,3 ,7‬‬
‫מספר "כמעט מיוחד" הוא מספר תלת ספרתי אשר מתחלק רק ב‪ 2 -‬שתיים מספרותיו‪.‬‬
‫לדוגמה‪ ,‬המספר ‪ 375‬הוא מספר "כמעט מיוחד" מפני שהוא מתחלק ב‪ 5 ,3 -‬אך לא ב‪.7 -‬‬

‫כתוב תכנית אשר קולטת מספר תלת ספרתי ובודקת האם המספר שנקלט הוא "מיוחד" או "כמעט‬
‫מיוחד" ומדפיסה הודעה מתאימה‪.‬‬

‫הערה‪ :‬אין צורך לבדוק את תקינות הקלט‪.‬‬

‫שאלה ‪8‬‬

‫לפניך קטע תכנית‪.‬‬

‫;‪int N‬‬
‫;‪int i, j, step, count=0, col‬‬
‫;]‪int[,] a = new int[N,N‬‬
‫)‪if (N % 2 == 0‬‬
‫;‪step = 1‬‬
‫‪else‬‬
‫;‪step = -1‬‬

‫)‪for (i = 0; i < N; i++‬‬


‫{‬
‫;‪step = step * -1‬‬
‫)‪if (step == 1‬‬
‫;‪j = 0‬‬
‫‪else‬‬
‫;‪j = N - 1‬‬
‫;‪col = 0‬‬

‫‪7‬‬
‫)‪while (col < N‬‬
‫{‬
‫;‪count++‬‬
‫;‪a[i, j] = count‬‬
‫;‪col++‬‬
‫;‪j = j + step‬‬
‫}‬
‫}‬
‫א‪ .‬עקוב בעזרת טבלת מעקב אחרי ביצוע קטע התכנית עבור ‪.N=3‬‬
‫בטבלת המעקב יש לכלול עמודות עבור ]‪i, j, step, count, col, a[i,j‬‬
‫ב‪ .‬סרטט רשום את ערכי המערך ‪ a‬בגודל ‪ 3x3‬ומלא אותו בערכיםשהתקבל בהתאם מביצוע‬
‫לקטע התוכנית עבור ‪.N=3‬‬
‫סרטט מערך בגודל ‪ 4x4‬ומלא אותו בערכים בהתאם לקטע התוכניתעבור ‪.N=4‬‬ ‫ג‪.‬‬

‫פרק שלישי(‪ 20‬נקודות)‬

‫ענה על אחת מהשאלות ‪:9-10‬‬

‫שאלה ‪9‬‬

‫במשחק סודוקו יש "לוח גדול" בן ‪ 9‬שורות ו‪ 9 -‬עמודות (סה"כ ‪ 81‬תאים)‪ ,‬המחולק ל‪ 9-‬לוחות קטנים‬
‫כאשר בכל "לוח קטן" יש ‪ 3‬שורות ו‪ 3-‬עמודות‪ .‬בכל תא בלוח ניתן לכתוב סיפרה אחת בין ‪ 1‬ל‪.9-‬‬

‫חידת סודוקו מציגה מספר ספרות במקומות שונים על הלוח‪ ,‬והפותר נדרש למלא את כל התאים‬
‫שבהם לא הוכנס ערך התחלתי לפי הכללים הבאים‪:‬‬

‫כללי לוח גדול ‪ -‬כל שורה וכל עמודה בלוח הגדול חייבת להכיל את כל הספרות מ‪ 1-‬ועד ‪.9‬‬

‫כללי לוח קטן ‪ -‬כל לוח קטן חייב להכיל את כל הספרות מ‪ 1-‬ועד ‪ .9‬לוח קטן מזוהה בתוך הלוח הגדול‬
‫על פי מספר השורה ומספר העמודה של התא השמאלי העליון שלו‪ .‬לדוגמה‪ ,‬לוח קטן (‪ , )0,0‬לוח קטן‬
‫(‪ )3,6‬או לוח קטן (‪.)6,6‬‬
‫‪5 3 4 6 7 8 9‬‬ ‫‪1‬‬ ‫‪2‬‬
‫‪ 6 7 2 1 9 5 3‬הדוגמה המערך המוצג הוא שלהבאה מציגה חידת סודוקו פתורה‪:‬‬ ‫‪4‬‬ ‫‪8‬‬
‫‪1 9 8 3 4 2 5‬‬ ‫‪6‬‬ ‫‪7‬‬
‫‪8 5 9 7 6 1 4‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪4 2 6 8 5 3 7‬‬ ‫‪9‬‬ ‫‪1‬‬
‫‪7 1 3 9 2 4 8‬‬ ‫‪5‬‬ ‫‪6‬‬
‫‪9 6 1 5 3 7 2‬‬ ‫‪8‬‬ ‫‪4‬‬
‫‪2 8 7 4 1 9 6‬‬ ‫‪3‬‬ ‫‪5‬‬
‫‪3 4 5 2 8 6 1‬‬ ‫‪7‬‬ ‫‪9‬‬

‫אם נסתכל על שורה ‪ 0‬למשל‪ ,‬נראה שהיא מכילה (משמאל לימין) את המספרים‬

‫‪2 1 9 8 7 6 4 3 5‬‬

‫‪8‬‬
‫ואילו העמודה מספר ‪ 0‬מכילה (מלמעלה למטה) את המספרים ‪ . 3 2 9 7 4 8 1 6 5‬כפי שניתן‬
‫לראות‪ ,‬כל שורה וכל עמודה מכילה את כל הספרות בין ‪ 1‬ל‪.9 -‬‬

‫בצורה דומה‪ ,‬אם נסתכל על הלוח הקטן המתחיל בשורה ‪ 3‬ועמודה ‪ ,0‬נראה את הספרות (משמאל‬
‫לימין ומלמעלה למטה) ‪( 3 1 7 6 2 4 9 5 8‬שהן כל הספרות מ‪ 1-‬ועד ‪.)9‬‬

‫א‪ .‬כתוב פעולה בשם ‪ Gadol‬המקבלת כפרמטר "לוח גדול" ומחזירה ‪ True‬אם הלוח הגדול עונה‬
‫על כללי הלוח הגדול ו‪ False -‬אחרת‪.‬‬
‫ב‪ .‬כתוב פעולה בשם ‪ Katan‬המקבלת כפרמטרים "לוח גדול" ואת מספר השורה ומספר העמודה‬
‫שבה מתחיל "לוח קטן" בתוך הלוח הגדול (כלומר השורה והעמודה של התא העליון השמאלי‬
‫של הלוח הקטן)‪ ,‬ומחזירה ‪ True‬אם הלוח הקטן עונה על כללי הלוח הקטן ו‪ False -‬אחרת‪.‬‬
‫ג‪ .‬כתוב תוכנית הבודקת אם לוח סודוקו עונה לכללי המשחק‪ ,‬תוך שימוש בשתי הפעולות הנ"ל‪,‬‬
‫והדפס הודעה מתאימה‪ .‬הנח כי יש כבר ערכים בתוך הלוח והם תקיניםבטווח הערכים ‪.1-9‬‬

‫שאלה ‪10‬‬

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

‫לדוגמה‪ ,‬אם הצופן מחליף את האות ‪ A‬במספר ‪ ,34‬ואת האות ‪ B‬במספר ‪ ,92‬הרי מחרוזת התווים‬
‫‪ ABBA‬תיוצג ע"י מחרוזת מספרית המכילה ‪.34929234‬‬

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

‫‪9‬‬
‫פתרון הבחינה‬
1 ‫שאלה‬

)‫ (משמאל לימין‬:‫הקלט‬
3 4 6 6 4 7 2

:‫טבלת מעקב‬

n i a b c ( && )a>b( z
)b>c
2 0
1 7 4 6 False
2 6 4 3 True 1

.1 ‫ בסוף האלגוריתם יהיה‬z ‫ערכו של המשתנה‬

2 ‫שאלה‬

double zavit1, zavit2, zavit3, all;


zavit1 = double.Parse (Console.ReadLine());
zavit2 = double.Parse (Console.ReadLine());
zavit3 = double.Parse (Console.ReadLine());
while (zavit1 != 0.0 && zavit2 != 0.0 && zavit3 != 0.0)
{
all = zavit1 + zavit2 + zavit3;
Console.WriteLine(zavit1 + " " + zavit2 + " " + zavit3 + " ‫;)" הזוויות הן‬
Console.WriteLine(all + "‫;)" סכום הזוויות במשולש הוא‬
if (all == 180.0)
Console.WriteLine("‫;)"המשולש חוקי‬
else
Console.WriteLine("‫;)"המשולש אינו חוקי‬
zavit1 = double.Parse(Console.ReadLine());
zavit2 = double.Parse(Console.ReadLine());
zavit3 = double.Parse(Console.ReadLine());
}
3 ‫שאלה‬

7 5 8 ‫א) הקלט‬

a b a>b ‫פלט‬
7 5 5 7
TRUE
8 8 7

10
‫ אזי לא תתבצע קריאה נוספת ושתי השורות‬b ‫ יהיה קטן או שווה למשתנה‬a ‫ב) במידה ומשתנה‬
5 7 8 ‫ דוגמה לקלט כזה‬.‫שתודפסנה תהיינה זהות‬

4 ‫שאלה‬

int m, sum=0;
Console.WriteLine("‫;)" הכנס את גודל המערך‬
m = int.Parse(Console.ReadLine());
int[] a = new int[m];
for (int i = 0; i < m; i++)
{
a[i] = (2 * i) + (m % 2);
sum += a[i];
}
Console.WriteLine(sum + " ‫;)" סכום אברי המערך הוא‬

5 ‫שאלה‬

//‫ הפעולה מקבלת שנה ומספר חודש‬:‫טענת כניסה‬


// ‫ הפעולה מחזירה את מספר הימים בחודש‬:‫טענת יציאה‬
static int daysInMonth(int year, int month)
{
int[] daysPerMonth = {0,31,28,31,30,31,30,31,31,30,31,30,31};
if (month == 02 && year % 4 == 0)
return 29;
else
return daysPerMonth[month];
}

6 ‫שאלה‬

using System;
namespace BagrutQuestions
{
class Program
{
static void Main(string[] args)
{
int[] cook = new int[11];
int i, firstPlace, secondPlace, iWinner;
for (i = 0; i <= 10; i++)
cook[i] = 0;

11
// ‫קרא ושקלל את בחירות השופטים‬
for (i = 1; i <= 5; i++)
{
firstPlace = int.Parse(Console.ReadLine());
cook[firstPlace] += 5;
secondPlace = int.Parse(Console.ReadLine());
cook[secondPlace] += 2;
}
// ‫מצא את המתמודד בעל הניקוד הגבוה ביותר‬
iWinner = 0;
for (i=1; i<=10; i++)
if (cook[i] > cook[iWinner])
iWinner = i;
Console.WriteLine(iWinner + "‫הזוכה הוא מתמודד מספר‬ ");
}
}
}

7 ‫שאלה‬

using System;
namespace BagrutQuestions
{
class Program
{
static void Main(string[] args)
{
int number = int.Parse(Console.ReadLine());
int leftDigit, midDigit, rightDigit, dividers = 0;
rightDigit = number % 10;
midDigit = (number / 10) % 10;
leftDigit = number / 100;
if (number % rightDigit == 0)
dividers += 1;
if (number % midDigit == 0)
dividers += 1;
if (number % leftDigit == 0)
dividers += 1;
if (dividers == 3)
Console.WriteLine("‫ " מספר מיוחד‬+ number);
else
if (dividers == 2)
Console.WriteLine("‫ " מספר כמעט מיוחד‬+ number);
}
}
}

8 ‫שאלה‬

:N=3 ‫א) טבלת מעקב עבור‬

i j step count col a[i,j]


-1 0

12
0 0 1 0
1 1 1 a[0,0] = 1
2 2 2 a[0,1] = 2
3 3 3 a[0,2] = 3
1 2 -1 0
1 4 1 a[1,2] = 4
0 5 2 a[1,1] = 5
-1 6 3 a[1,0] = 6
2 0 1 0
1 7 1 a[2,0] = 7
2 8 2 a[2,1] = 8
3 9 3 a[2,2] = 9
3

N=3 ‫ב) מערך עבור‬

1 2 3
6 5 4
7 8 9

N=4 ‫מערך בגודל‬ )‫ג‬

4 3 2 1
5 6 7 8
12 11 10 9
13 14 15 16

9 ‫שאלה‬

Gadol ‫א) הפעולה‬


// function Gadol checks whether each row and each column
// contain all digits between 1 and 9. It gets as a parameter
// a 9x9 Soduko board, and return True if the solution is
// correct
staticboolGadol(int[,] A)
{
int[] appear = new int[9];
int i, j, k;
for (i = 0; i < 9; i++)
{
for (k = 0; k < 9; k++)
appear[k] = 0;
for (j = 0; j < 9; j++)
appear[A[i, j]-1] = 1;
for (k = 0; k < 9; k++)
if (appear[k] != 1)

13
return false;
}
for (j = 0; j < 9; j++)
{
for (k = 0; k < 9; k++)
appear[k] = 0;
for (i = 0; i < 9; i++)
appear[A[i, j]-1] = 1;
for (k = 0; k < 9; k++)
if (appear[k] != 1)
return false;
}
return true;
}
Katan ‫ב) הפעולה‬
// function Katan checks whether a 3x3 matrix contains all
// digits from 1 to 9. It gets as parameters the 9x9 Sudoku
// matrix and the row and column of the left and upper corner
// the small matrix. It returns TRUE if it contains all
// digits
static bool Katan(int[,] A, int row, int col)
{
int[] appear = new int[9];
int i, j, k;
for (k = 0; k < 9; k++)
appear[k] = 0;
for (i = row; i < row+3; i++)
{
for (j = col; j < col+3; j++)
appear[A[i, j]-1] = 1;
}
for (k = 0; k < 9; k++)
if (appear[k] != 1)
return false;

return true;
}
:‫ג) תוכנית ראשית לבדיקת הסודוקו‬
using System;
namespace BagrutQuestions
{
class Program
{

static void Main(string[] args)


{
int i, j;
int[,] sudoku = new int[9, 9];
bool takin;
takin = Gadol(sudoku);

for (i = 0; i < 9 && takin; i+=3)


for (j = 0; j < 9 && takin; j+=3)
takin = Katan(sudoku, i, j);
if (takin)
Console.WriteLine("Sudoku Takin");

14
else
Console.WriteLine("Sudoku Lo Takin");
}
}
}

15
10 ‫שאלה‬

:‫ לקריאת הצופן‬getZofan ‫ הפעולה‬.‫א‬


// function getZofan reads 27 pairs of a letter and numeric
// value combination and returns an array containing the
// numeric coding for all letters. First entry is for A,
// secondfor B, and the last one for space.
static void getZofan(string[] zofan)
{
int i, code;
int misparOtiot = zofan.Length;
char ot;
for (i = 0; i < misparOtiot; i++)
{
ot = char.Parse(Console.ReadLine());
code = int.Parse(Console.ReadLine());
if (ot == ' ')
zofan[misparOtiot - 1] = code.ToString();
else
zofan[ot - 'A'] = code.ToString();
}
}

:‫ להצפנת מחרוזת‬encode ‫ הפעולה‬.‫ב‬


//function encode gets a string line for encoding and the
//encoding table and returns the encoded line
static string encode(string line, string[] zofan)
{
string newLine = "";
int i;
for (i = 0; i < line.Length; i++)
{
if (line[i] == ' ')
newLine += zofan[zofan.Length - 1];
else
newLine += zofan[line[i] - 'A'];
}
return newLine;
}

:‫ הפעולה הראשית‬.‫ג‬
static void Main(string[] args)
{
int misparOtiot = 27;
string[] zofan = new string[misparOtiot];
getZofan(zofan);
string line = Console.ReadLine();
string newLine = encode(line, zofan);
Console.WriteLine("Line before encodong *" + line + "*");
Console.WriteLine("Line after encoding *" + newLine +
"*");
}

16
‫זמני הפתרון‬
‫במהלך שנת הלימודים נתקלתי בשתי בעיות עיקריות בתהליך הכנת הבחינות‪:‬‬

‫השאלות שאני מחבר קשות יותר ממה שאני מעריך‬ ‫‪‬‬


‫הזמן שלוקח לתלמידים לענות על השאלות גבוה לאין שיעור מהערכת הזמן שלי‬ ‫‪‬‬

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

‫הפקטור הנ"ל מביא בחשבון מספר גורמים‪:‬‬

‫אני כבר הכרתי את השאלות ולכן אינני משקיע זמן בקריאתן והבנתן‬ ‫‪‬‬
‫בשאלות בהן נדרשת הבנה של טריק מסוים‪ ,‬הטריק הזה כבר ידוע לי (למשל בשאלות‬ ‫‪‬‬
‫המצריכות טבלת מעקב)‬
‫המיומנות האישית שלי הן בתכנות והן בהבנת קוד כתוב גבוהה לאין שיעור ואינני‬ ‫‪‬‬
‫עושה את אותן שגיאות שעושים התלמידים‬
‫על פי רב אין לי שום התלבטות לגבי צורת הפתרון משום שהתבנית לפתרון נהירה לי‬ ‫‪‬‬
‫מיד עם קריאת השאלה‬

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

‫זמן פתרון בדקות‬ ‫מספר שאלה‬


‫‪2‬‬ ‫‪1‬‬
‫‪3‬‬ ‫‪2‬‬
‫‪2‬‬ ‫‪3‬‬
‫‪3‬‬ ‫‪4‬‬
‫‪4‬‬ ‫‪5‬‬
‫‪7‬‬ ‫‪6‬‬
‫‪6‬‬ ‫‪7‬‬
‫‪9‬‬ ‫‪8‬‬
‫‪14‬‬ ‫‪9‬‬
‫‪13‬‬ ‫‪10‬‬
‫‪ 63‬דקות‬ ‫סה"כ‬

‫בשקלול הבחירה בין שאלות ‪ 7 ,6‬ו‪ 8-‬ובין שאלות ‪ 9‬ו‪ ,10 -‬הזמן לפתרון הבחינה שלי מסתכם‬
‫ב‪42 -‬דקות‪.‬בהפעלת פקטור ‪ ,4‬מדובר בסה"כ ‪ 168‬דקות לתלמידים‪ ,‬שהוא זמן קרוב מאד‬
‫לשלוש השעות המוקצות לבחינה‪( .‬ראה גם בפרק הרפלקציה לגבי הערכת הזמנים)‪.‬‬

‫‪17‬‬
‫מחוון לבדיקה‬
‫כללי‪:‬‬

‫על שגיאה בתחביר בשפת המחשב‪ ,‬יש להוריד עד ‪.5%‬‬ ‫‪.1‬‬


‫אם בלבל בין אותיות גדולות וקטנות‪ ,‬לא להוריד נקודות‪.‬‬ ‫‪.2‬‬
‫אם רשם קיצורי פקודות במקום פקודות שלמות‪ ,‬להוריד ‪ 5%‬פעם אחת‪ ,‬במקום הראשון שהקיצור‬ ‫‪.3‬‬
‫מופיע‪.‬‬
‫אם כשכתב תכנית מלאה השתמש במשתנה בלי להצהיר עליו‪ ,‬להוריד ‪.2%‬‬ ‫‪.4‬‬
‫אם לא כתב פעולה בשאלה או בסעיף שנדרשה בהם כתיבת פעולה‪ ,‬לא לתת נקודות לשאלה או‬ ‫‪.5‬‬
‫לסעיף‪.‬‬
‫אם לא כתב ‪ public‬בכותרת פעולה‪ ,‬לא להוריד נקודות‪.‬‬ ‫‪.6‬‬
‫אם לא כתב ‪ static‬בכותרת פעולה‪ ,‬להוריד ‪.3%‬‬ ‫‪.7‬‬
‫אם לא כתב סוגריים מסולסלים להגדרת גוף פעולה‪ ,‬להוריד ‪.5%‬‬ ‫‪.8‬‬

‫פרק ראשון‬

‫שאלה ‪1‬‬

‫הצבה ל‪z - 5%-‬‬ ‫‪‬‬


‫קליטה לתוך ‪n– 5%‬‬ ‫‪‬‬
‫לולאה – ‪( 80%‬כל איטרציה ‪:)40%‬‬ ‫‪‬‬
‫קלט ל‪a– 5% -‬‬
‫קלט ל‪b– 5% -‬‬
‫קלט ל‪c– 5% -‬‬
‫בדיקת התנאי – ‪20%‬‬
‫פעולה על משתנה ‪z– 5%‬‬
‫פלט בסוף האלגוריתם – ‪10%‬‬ ‫‪‬‬
‫אם אין מעקב‪ ,‬לא לתת נקודות‬ ‫‪‬‬
‫אם הפך את סדר הקלט (קלט מימין לשמאל)‪ ,‬להוריד ‪.20%‬‬ ‫‪‬‬
‫אם לא התייחס לקלט המצוין בשאלה‪ ,‬לא לתת נקודות כלל‪.‬‬ ‫‪‬‬
‫אם חסרה עמודה לאחד המשתנים או להוראת התנאי‪ ,‬להוריד ‪ 10%‬לכל עמודה חסרה‪.‬‬ ‫‪‬‬
‫אם כתב את הפלט‪ ,‬אך חסרה עמודה לפלט‪ ,‬להוריד ‪3%‬‬ ‫‪‬‬
‫אם הציג את הערך של ‪ z‬בתוך הלולאה‪ ,‬להוריד ‪10%‬‬ ‫‪‬‬

‫שאלה ‪2‬‬

‫הגדרת טיפוס המשתנים כ‪double– 10%-‬‬ ‫‪‬‬


‫פעולת הקלט לפני הלולאה – ‪10%‬‬ ‫‪‬‬
‫הוראת התנאי – ‪10%‬‬ ‫‪‬‬
‫בנית לולאה לקריאה עם זקיף –‪30%‬‬ ‫‪‬‬
‫בדיקת התנאי למשולש תקין – ‪10%‬‬ ‫‪‬‬
‫הוראת קלט בתוך הלולאה – ‪10%‬‬ ‫‪‬‬
‫זיהוי סיום קלט – ‪10%‬‬ ‫‪‬‬
‫הוראת פלט – ‪10%‬‬ ‫‪‬‬

‫‪18‬‬
‫שאלה ‪3‬‬

‫סעיף א– ‪70%‬‬

‫הצבה ל‪a - 5%-‬‬ ‫‪‬‬


‫הצבהל‪b – 5%-‬‬ ‫‪‬‬
‫הוראת פלט ראשונה – ‪5%‬‬ ‫‪‬‬
‫בדיקת התנאי –‪10%‬‬ ‫‪‬‬
‫הצבה חוזרת ל‪b – 5%-‬‬ ‫‪‬‬
‫פלט בסוף האלגוריתם –‪5%‬‬ ‫‪‬‬
‫אם אין מעקב‪ ,‬לא לתת נקודות‬ ‫‪‬‬
‫אם הפך את סדר הקלט (קלט מימין לשמאל)‪ ,‬להוריד ‪.20%‬‬ ‫‪‬‬
‫אם לא התייחס לקלט המצוין בשאלה‪ ,‬לא לתת נקודות כלל‪.‬‬ ‫‪‬‬
‫אם חסרה עמודה לאחד המשתנים או להוראת התנאי‪ ,‬להוריד ‪ 10%‬לכל עמודה חסרה‪.‬‬ ‫‪‬‬
‫אם כתב את הפלט‪ ,‬אך חסרה עמודה לפלט‪ ,‬להוריד ‪3%‬‬ ‫‪‬‬
‫אם הציג את הערך של ‪ z‬בתוך הלולאה‪ ,‬להוריד ‪10%‬‬ ‫‪‬‬

‫סעיףב– ‪30%‬‬

‫דוגמת קלט מייצג נכונה – ‪30%‬‬ ‫‪‬‬

‫שאלה‪4‬‬

‫קלט ל‪m– 10% -‬‬ ‫‪‬‬


‫בניית מערך והקצאתו – ‪20%‬‬ ‫‪‬‬
‫בדיקת תנאי זוגיות – ‪10%‬‬ ‫‪‬‬
‫לולאה – ‪10%‬‬ ‫‪‬‬
‫קביעת הכנסת האברים הזוגיים או האי‪-‬זוגיים – ‪25%‬‬ ‫‪‬‬
‫סכימת האברים – ‪20%‬‬ ‫‪‬‬
‫הדפסת הסכום – ‪5%‬‬ ‫‪‬‬
‫אם חרג מגבולות המערך‪ ,‬להוריד ‪20%‬‬ ‫‪‬‬
‫אם לא השתמש בלולאה‪ ,‬לתת לכל היותר ‪ 30%‬לשאלה‬ ‫‪‬‬
‫אם יצר לולאה אינסופית‪ ,‬לתת לכל היותר ‪ 50%‬לשאלה‪.‬‬ ‫‪‬‬
‫אם גבולות הלולאה והצבת הערכים אינם מלאים – להוריד ‪10%‬‬ ‫‪‬‬

‫שאלה‪5‬‬

‫כותרת הפעולה – ‪40%‬‬ ‫‪‬‬


‫הגדרת הפעולה כסטטית – ‪10%‬‬
‫טיפוס הערך המוחזר – ‪10%‬‬
‫שם הפעולה – ‪10%‬‬
‫שמות וטיפוסי הפרמטרים – ‪10%‬‬

‫‪19‬‬
‫‪ ‬טענת כניסה ויציאה – ‪5%‬‬
‫‪ ‬הלוגיקה והתנאים לחישוב הימים בחודש – ‪40%‬‬
‫התנאי לחודש פברואר – ‪20%‬‬
‫התנאים לכל שאר החודשים – ‪20%‬‬
‫‪ ‬החזרת ערך – ‪15%‬‬
‫‪ ‬אם לא כתב פעולה כלל‪ ,‬לא לתת נקודות לשאלה‬
‫‪ ‬אם לא כתב כותרת לפעולה‪ ,‬לתת לכל היותר ‪50%‬‬
‫‪ ‬אם אין התאמה בין טיפוס הפעולה וטיפוס הערך המוחזר – להוריד ‪20%‬‬
‫‪ ‬אם יש מצבים שבהם הפעולה אינה מחזירה ערך – להוריד ‪15%‬‬

‫שאלה‪6‬‬

‫הגדרת מערך צבירת הניקוד – ‪20%‬‬ ‫‪‬‬


‫לולאה לסריקת תוצאות השיפוט – ‪20%‬‬ ‫‪‬‬
‫צבירת הניקוד לתוך המערך – ‪40%‬‬ ‫‪‬‬
‫מציאת המתמודד הזוכה – ‪20%‬‬ ‫‪‬‬
‫לולאה המבוססת על מספר המתמודדים ולא על מספר השופטים‪ ,‬לתת לכל היותר ‪50%‬‬ ‫‪‬‬
‫חוסר בהגדרת מסגרת כללית לתוכנית‪ ,‬להוריד ‪5%‬‬ ‫‪‬‬

‫שאלה‪7‬‬

‫קליטת המספר – ‪10%‬‬ ‫‪‬‬


‫מציאת הספרות הבודדות – ‪ 15%( 45%‬לכל סיפרה)‬ ‫‪‬‬
‫תנאי בוליאני למציאת מספר "מיוחד" – ‪15%‬‬ ‫‪‬‬
‫תנאי בוליאני למציאת מספר "כמעט מיוחד" – ‪15%‬‬ ‫‪‬‬
‫פלט – ‪15%‬‬ ‫‪‬‬

‫חוסרבהגדרתמסגרתכלליתלתוכנית‪ ,‬להוריד ‪5%‬‬ ‫‪-‬‬

‫שאלה‪8‬‬

‫סעיף א–‪60%‬‬

‫בניית טבלת מעקב לכל עמודה – ‪10%‬‬ ‫‪‬‬


‫שגיאה באחד הערכים בתוך עמודה ‪ ,‬להוריד ‪( 3%‬להוריד את כל ה‪ 10% -‬לעמודה אם יש ‪3‬‬ ‫‪‬‬
‫שגיאות באותה עמודה)‬

‫סעיףב – ‪20%‬‬

‫מטריצה עבור ‪ N = 3‬מלאה ונכונה – ‪20%‬‬ ‫‪‬‬


‫אם המספרים נכונים אבל לא במקומות הנכונים – להוריד ‪10%‬‬ ‫‪‬‬

‫‪20‬‬
‫סעיףג – ‪20%‬‬

‫מטריצה עבור ‪ N = 4‬מלאה ונכונה – ‪20%‬‬ ‫‪‬‬


‫אם המספרים נכונים אבל לא במקומות הנכונים – להוריד ‪10%‬‬ ‫‪‬‬

‫שאלה‪9‬‬

‫סעיף א–‪30%‬‬

‫כותרת הפעולה – ‪5%‬‬ ‫‪‬‬


‫לולאת סריקת שורות – ‪5%‬‬ ‫‪‬‬
‫לולאת סריקת עמודות – ‪5%‬‬ ‫‪‬‬
‫מציאה האם העמודה או שורה מכילה את כל הספרות – ‪15%‬‬ ‫‪‬‬
‫הכנסת ערכים שגויה למערך הבודק מופעים‪ ,‬להוריד ‪10%‬‬ ‫‪-‬‬
‫אם לולאה אינסופית‪ ,‬להוריד ‪5%‬‬ ‫‪-‬‬
‫אם אין איפוס של המערך הבודק מופעים‪ ,‬להוריד ‪5%‬‬ ‫‪-‬‬
‫אם אין החזרה של ערך נכון‪ ,‬להוריד ‪5%‬‬ ‫‪-‬‬

‫סעיף ב–‪40%‬‬

‫כותרת הפעולה – ‪5%‬‬ ‫‪‬‬


‫לולאת סריקת ‪ 3‬שורות –‪10%‬‬ ‫‪‬‬
‫לולאת סריקת ‪ 3‬עמודות –‪10%‬‬ ‫‪‬‬
‫מציאה האם העמודה או שורה מכילה את כל הספרות –‪15%‬‬ ‫‪‬‬
‫הכנסת ערכים שגויה למערך הבודק מופעים‪ ,‬להוריד ‪10%‬‬ ‫‪-‬‬
‫אם לולאה אינסופית‪ ,‬להוריד ‪5%‬‬ ‫‪-‬‬
‫אם אין איפוס של המערך הבודק מופעים‪ ,‬להוריד ‪5%‬‬ ‫‪-‬‬
‫אם אין החזרה של ערך נכון‪ ,‬להוריד ‪5%‬‬ ‫‪-‬‬

‫סעיף ג– ‪30%‬‬

‫הגדרת המערך הדו ממדי – ‪5%‬‬ ‫‪‬‬


‫הפעלת הפעולה ‪Gadol– 5%‬‬ ‫‪‬‬
‫לולאת הפעלת הפעולה ‪Katan– 10%‬‬ ‫‪‬‬
‫קביעה האם תקין או לא – ‪10%‬‬ ‫‪‬‬
‫חוסרבהגדרתמסגרתכלליתלתוכנית‪ ,‬להוריד ‪5%‬‬ ‫‪-‬‬
‫לולאה אינסופית‪ ,‬להוריד ‪5%‬‬ ‫‪-‬‬
‫כותרת הלולאה אינה נכונה ‪ ,‬להוריד ‪5%‬‬ ‫‪-‬‬
‫זימון הפעולות שגוי‪ ,‬להוריד ‪5%‬‬ ‫‪-‬‬

‫שאלה‪10‬‬

‫סעיף א– ‪35%‬‬
‫‪21‬‬
‫כותרת הפעולה – ‪10%‬‬ ‫‪‬‬
‫לולאת הקריאה של האותיות והקודים המספריים – ‪10%‬‬ ‫‪‬‬
‫הכנסת ערך למערך הצפנים (בניית המציין הנכון) – ‪15%‬‬ ‫‪‬‬
‫אם לא היתה אבחנה בין אות רגילה לבין רווח‪ ,‬להוריד ‪5%‬‬ ‫‪-‬‬
‫אם נוצר מציין לא חוקי במערך‪ ,‬להוריד ‪5%‬‬ ‫‪-‬‬
‫אם הערך המוכנס הוא נומרי ואינו מומר למחרוזת‪ ,‬להוריד ‪3%‬‬ ‫‪-‬‬

‫סעיף ב– ‪35%‬‬

‫כותרת הפעולה – ‪10%‬‬ ‫‪‬‬


‫לולאת הסריקה של האותיות בשורת המקור – ‪10%‬‬ ‫‪‬‬
‫המרת האות בקוד ההצפנה – ‪15%‬‬ ‫‪‬‬
‫אם לא היתה אבחנה בין אות רגילה ורוח‪ ,‬להוריד ‪5%‬‬ ‫‪‬‬
‫אם נוצר מציין לא חוקי בגישה למערך‪ ,‬להוריד ‪5%‬‬ ‫‪‬‬
‫אם תחום הסריקה של הלולאה אינו נכון‪ ,‬להוריד ‪3%‬‬ ‫‪‬‬

‫סעיף ג– ‪30%‬‬

‫הגדרת מערך הצפנים – ‪10%‬‬ ‫‪‬‬


‫הפעלת פעולת קריאת הצופן – ‪5%‬‬ ‫‪‬‬
‫הפעלת ההצפנה – ‪10%‬‬ ‫‪‬‬
‫הצגת הפלט – ‪5%‬‬ ‫‪‬‬
‫אם גודל מערך הצפנים שונה מ‪ ,27 -‬להוריד ‪3%‬‬ ‫‪-‬‬

‫‪22‬‬
‫רפלקציה על תהליך בניית הבחינה‬
‫תהליך בניית השאלון‪ ,‬לימד אותי רבות על הבעייתיות בשאלון‪ ,‬ואילץ אותי להתמודד עם‬
‫מספר שאלות מרכזיות‪:‬‬

‫האם השאלות אינן קשות מדי?‬ ‫‪.1‬‬


‫האם הזמן המוקצב לבחינה (בפירוק לשאלות ספציפיות) איננו קצר מדי?‬ ‫‪.2‬‬
‫האם הבחינה הוגנת ומכסה נכון את החומר שנלמד?‬ ‫‪.3‬‬
‫האם יש כיסוי נכון של תבניות לפתרון‪ ,‬והאם יש מספר שאלות שבעצם בוחנות את‬ ‫‪.4‬‬
‫אותו סוג ידע?‬
‫האם המחוון בנוי בצורה כזו שתניב ציונים קרובים ע"י בוחנים שונים לאותו פתרון?‬ ‫‪.5‬‬

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

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

‫תחושת הבטן שלי (וגם אחרי מחשבה שניה וגם אחרי שנתתי לבני שהוא תוכניתן לפתור את‬
‫שאלות ‪ 9‬ו‪ )10-‬היא ששאלות מספר ‪ 9 ,8 ,4‬ו‪ ,10 -‬הינן קשות מדי לפרקים בהן הן משובצות‬
‫וחורגות ממסגרת הזמן המוקצית לנבחנים‪.‬‬

‫אני מאמין שההתנסות בחיבור בחינה זו על כל היבטיה‪ ,‬כולל בניית המחוון שהתגלה כמטלה‬
‫קשה ביותר‪ ,‬יסייעו בידי בבניית שאלוני בחינה בעתיד‪.‬‬

‫שלום חזי‪,‬‬

‫עשית עבודה מאד‪-‬מאד‪-‬מאד יסודית!‬

‫הבחינה קריאה (למרות ההארות‪/‬הערות הקטנות)‪ .‬השאלות באופן כללי די הולמות את‬
‫החלקים שלהם‪ .‬התאמנת בפיתוח מלא הכול שיקוליחם רבים כפי שציינת‪.‬‬

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

‫כל הכבוד! עבודה מצויינת!‬

‫נוע‬

‫‪23‬‬

You might also like