Professional Documents
Culture Documents
1
מבוא
בחינת הבגרות שנבחרה לצורך עבודת הגמר היא שאלון 2( 899222יחידות לימוד לתלמידי יסודות
מדעי המחשב 1ו .)2-ניסיתי לשמור על מבנה השאלון ודרגת הקושי של השאלות בחלקים השונים
בהתאם לבחינות מהשנים .2011 – 2007
העבודה מקיפה את ההיבטים השונים בבניית שאלון הבגרות ,ומכילה את הפרקים הבאים:
שמרתי על המבנה הכללי של הבחינה כמו על תמהיל סוגי השאלות ,ולקחתי חופש רקבבחירת תכני
השאלות ותחומי הידע והמיומנויות הנדרשים על מנת לענות עליהן ובדרגות הקושי של השאלות
הקשות.
הטבלה הבאה מרכזת את מבנה השאלון ואת תחומי הידע והמיומניות הנבדקים בכל אחת מהשאלות
שבניתי:
שאלת מעקב אחרי קטע תכנית שאלה – 3מעקב אחרי קטע תכנית
פשוט באמצעות טבלת מעקב עבור קלט
הבנה שהצבה מוחקת ערך נתון .בנוסף שאלת הבנה המבקשת
קודם דוגמה לקלט אחר אשר יעמוד בתנאי
סעיף חשיבה (פשוט) לנושא
2
קלט מייצג מסוים
פתרון שאלת "סיפור" (כולל שאלה – 6כתיבת תכנית על פי מפרט חלק ב – 30נקודות
נתונים בשאלה שאינם עשיר במספר מרכיבים ,תוך ביצוע ( 15נקודות לכל שאלה).
רלבנטיים) קלט ופלט
שימוש במערך צוברים 2שאלות מתוך .3דרגת
שימוש במציין המהווה מספר קושי בינונית.
מתמודד
מציאת ערך גבוה במערך
שאלת "סיפור" מורכבת עם שאלה –9כתיבת פעולה או שתיים חלק ג – 20נקודות
מספר כללים וקטע תכנית העושה בהן שימוש,
יכולת עיבוד חלקים ממטריצה לפתרון בעיה מורכבת במערכים דו שאלה אחת מתוך שתיים.
כתיבת פעולה המקבלת מערך ממדיים דרגת קושי גבוהה.
כפרמטר ומחזירה ערך
שימוש בפעולות
בניית לולאה מורכבת הסורקת
חלקים במטריצה
3
4
שאלות הבחינה
פרק ראשון( 50נקודות)
שאלה 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
zz+1 .3.4.1
.4הצג כפלט את הערך של z
עקוב באמצעות טבלת מעקב אחר ביצוע האלגוריתם בעבור הקלט (משמאל לימין)
3 4 6 6 4 7 2ורשום מה יהיה הפלט.
עמודה שבה יצוין אם התנאי שבשורה 3.4מתקיים או אינו מתקיים ,ועמודה בעבור הפלט.
שאלה 2
סכום הזוויות במשולש הינו 180מעלות .כתוב קטע תכנית הקולט שלשות של מספרים ממשיים
המכילים המייצגים את מספר המעלות של זוויות של משולש ובדוק ובודק האם כל שלשה מייצגת
משולש חוקי .הדיוק הנדרש לבדיקה כל זווית הוא 2ספרות אחרי הנקודה.
לכל שלשה הדפס את הזוויות ,את סכומן ,והודעה אם המשולש תקין או לא.
שאלה 3
5
לפניך קטע תכנית.
שאלה 4
כתוב קטע תכנית הקולט מספר mובונה מערך חד ממדי aבגודל .m
אם mזוגי ,הכנס לכל אברי המערך מספרים זוגיים רציפים ועולים החל מ .0 -אם mאי-זוגי ,הכנס לכל
אברי המערך ערכים רציפים ועולים החל מ.1-
שאלה 5
כתוב פעולה בשם daysInMonthהמחזירה את מספר הימים בחודש .הפעולה מקבלת שני פרמטרים:
שנה ( 4ספרות) וחודש (שתי ספרות) ,וקובעת את מספר הימים בחודש לפי הכללים הבאים:
בחודש פברואר יש 28יום ,אלא אם כן השנה מתחלקת ב 4-ללא שארית ואז יש 29ימים.
6
פרק שני( 30נקודות)
שאלה 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
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 ג.
שאלה 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
2 שאלה
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 שאלה
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 שאלה
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
1 2 3
6 5 4
7 8 9
4 3 2 1
5 6 7 8
12 11 10 9
13 14 15 16
9 שאלה
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
{
14
else
Console.WriteLine("Sudoku Lo Takin");
}
}
}
15
10 שאלה
: הפעולה הראשית.ג
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-על מנת לאפשר לתלמידים המצטיינים להתבלט.
אני כבר הכרתי את השאלות ולכן אינני משקיע זמן בקריאתן והבנתן
בשאלות בהן נדרשת הבנה של טריק מסוים ,הטריק הזה כבר ידוע לי (למשל בשאלות
המצריכות טבלת מעקב)
המיומנות האישית שלי הן בתכנות והן בהבנת קוד כתוב גבוהה לאין שיעור ואינני
עושה את אותן שגיאות שעושים התלמידים
על פי רב אין לי שום התלבטות לגבי צורת הפתרון משום שהתבנית לפתרון נהירה לי
מיד עם קריאת השאלה
הטבלה שלהלן מסכמת את מספר הדקות שהשקעתי בפתרון כל אחת מהשאלות ,כבסיס
להערכת הזמן שיידרש לתלמידים .מן הראוי להדגיש שמדובר בפתרון על דף ניר ולא על
המחשב.
בשקלול הבחירה בין שאלות 7 ,6ו 8-ובין שאלות 9ו ,10 -הזמן לפתרון הבחינה שלי מסתכם
ב42 -דקות.בהפעלת פקטור ,4מדובר בסה"כ 168דקות לתלמידים ,שהוא זמן קרוב מאד
לשלוש השעות המוקצות לבחינה( .ראה גם בפרק הרפלקציה לגבי הערכת הזמנים).
17
מחוון לבדיקה
כללי:
פרק ראשון
שאלה 1
שאלה 2
18
שאלה 3
סעיף א– 70%
סעיףב– 30%
שאלה4
שאלה5
19
טענת כניסה ויציאה – 5%
הלוגיקה והתנאים לחישוב הימים בחודש – 40%
התנאי לחודש פברואר – 20%
התנאים לכל שאר החודשים – 20%
החזרת ערך – 15%
אם לא כתב פעולה כלל ,לא לתת נקודות לשאלה
אם לא כתב כותרת לפעולה ,לתת לכל היותר 50%
אם אין התאמה בין טיפוס הפעולה וטיפוס הערך המוחזר – להוריד 20%
אם יש מצבים שבהם הפעולה אינה מחזירה ערך – להוריד 15%
שאלה6
שאלה7
שאלה8
סעיף א–60%
סעיףב – 20%
20
סעיףג – 20%
שאלה9
סעיף א–30%
סעיף ב–40%
סעיף ג– 30%
שאלה10
סעיף א– 35%
21
כותרת הפעולה – 10%
לולאת הקריאה של האותיות והקודים המספריים – 10%
הכנסת ערך למערך הצפנים (בניית המציין הנכון) – 15%
אם לא היתה אבחנה בין אות רגילה לבין רווח ,להוריד 5% -
אם נוצר מציין לא חוקי במערך ,להוריד 5% -
אם הערך המוכנס הוא נומרי ואינו מומר למחרוזת ,להוריד 3% -
סעיף ב– 35%
סעיף ג– 30%
22
רפלקציה על תהליך בניית הבחינה
תהליך בניית השאלון ,לימד אותי רבות על הבעייתיות בשאלון ,ואילץ אותי להתמודד עם
מספר שאלות מרכזיות:
גם לאחר התמודדות עם בניית השאלון ופתרונו תוך מדידת זמנים והפעלת פקטור ,אינני בטוח
שאני יודע את התשובות הנכונות לשאלות הנ"ל.
אני מאמין שיש צורך להציג שאלון בפני קבוצת מבחן שתפתור אותו תוך מדידת זמנים ותוך
העלאת שאלות לגבי בהירות השאלה ,וקושי הפתרון.
תחושת הבטן שלי (וגם אחרי מחשבה שניה וגם אחרי שנתתי לבני שהוא תוכניתן לפתור את
שאלות 9ו )10-היא ששאלות מספר 9 ,8 ,4ו ,10 -הינן קשות מדי לפרקים בהן הן משובצות
וחורגות ממסגרת הזמן המוקצית לנבחנים.
אני מאמין שההתנסות בחיבור בחינה זו על כל היבטיה ,כולל בניית המחוון שהתגלה כמטלה
קשה ביותר ,יסייעו בידי בבניית שאלוני בחינה בעתיד.
שלום חזי,
הבחינה קריאה (למרות ההארות/הערות הקטנות) .השאלות באופן כללי די הולמות את
החלקים שלהם .התאמנת בפיתוח מלא הכול שיקוליחם רבים כפי שציינת.
מעניין לשמוע גם האם כתיבת הפתרונות השפיעה על השאלות ,כלומר האם אחרי שפתרת
חזרת לנוסח השאלה והבהרת או דייקת יותר ואותו דבר ביחס לפיתוח המחוון.
נוע
23