השתלמות מורים שאינם מתחום הדעת - חלק ג’
מבחן מסכם
יולי 2026 - תמוז תשפ”ו
שם הנבחן/ת: ________
ההנחיות בשאלון זה מנוסחות בלשון רבים, אך מכוונות הן לנבחנות והן לנבחנים.
פתרון וקוד מקור פרטי: 3strategy/Cons3GimelMoedBet
הוראות הבחינה
- משך הבחינה: שעתיים וחצי.
- בשאלון זה שני פרקים.
- יש לענות על שאלות משני הפרקים, לפי ההוראות בכל פרק.
- בכל שאלה שנדרשת בה קליטה, אין צורך לבדוק את תקינות הקלט.
- את כל התוכניות יש לכתוב בשפת מחשב אחת בלבד: Java או C#.
מבנה השאלון ומפתח ההערכה
| פרק | שאלות | ניקוד |
|---|---|---|
| פרק ראשון | 1-3, ענו על שתיים | 40 נקודות |
| פרק שני | 4-6, ענו על שתיים | 60 נקודות |
| סך הכול | 100 נקודות |
בהצלחה!
פרק ראשון - 40 נקודות
ענו על שתיים מן השאלות 1-3. לכל שאלה 20 נקודות.
1 - מערך חזקות
מערך חזקות הוא מערך שניתן לחלק אותו לשני חצאים:
- חצי המערך הראשון מכיל מספרים מטיפוס שלם.
- חצי המערך השני מכיל את ריבועי המספרים מהחצי הראשון, לפי סדר הופעתם.
לדוגמה, נתון המערך הבא arr:
| אינדקס | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|---|
| ערך | -3 | 0 | 2 | -4 | 1 | 9 | 0 | 4 | 16 | 1 |
המערך arr הוא מערך חזקות, כי אם נחלק אותו לשני חלקים, מאינדקס 0 עד אינדקס 4 ומאינדקס 5 עד אינדקס 9, נראה שהחצי השני הוא ריבועי החצי הראשון בהתאמה. למשל: arr[0] = -3 ו-arr[5] = 9.
כתבו פעולה חיצונית בשם IsPow בשפת C# או Java, המקבלת מערך של מספרים שלמים.
הפעולה תחזיר true אם המערך הוא מערך חזקות, אחרת תחזיר false.
2 - כמעט תמורה
נגדיר תמורה של n כמערך של כל המספרים מ-1 עד n כולל, ללא חזרות ובסדר לא מחייב.
לדוגמה, המערך הבא הוא תמורה של 11:
arr = { 1, 4, 8, 3, 5, 9, 11, 6, 2, 10, 7 }
כמעט תמורה של n דומה לתמורה של n, פרט לכך שבמקום אחד המספרים מופיע 0.
כתבו פעולה שתקבל כמעט תמורה של n ותחזיר את המספר החסר.
3 - מעקב
נתונה הפעולה הבאה:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void What(int[] a)
{
int tmp, pMin;
for (int i = 0; i < a.Length - 1; i++)
{
pMin = i;
for (int j = i + 1; j < a.Length; j++)
{
if (a[j] < a[pMin])
pMin = j;
}
tmp = a[i];
a[i] = a[pMin];
a[pMin] = tmp;
}
}
בצעו מעקב בעזרת טבלת מעקב מסודרת אחרי זימון הפעולה What, המקבלת את המערך הבא:
{ 3, 2, 1, 0, 12, 55, 9, 34 }
- מה יכיל המערך לאחר זימון הפעולה
What? - מהי מטרת הפעולה?
פרק שני - 60 נקודות
ענו על שתיים מן השאלות 4-6. לכל שאלה 30 נקודות.
4 - המחלקה Fruit
נתונה המחלקה פרי - Fruit, שלה שלוש תכונות:
- שם הפרי.
- מחיר הפרי לאחד קילוגרם.
- מערך המכיל את שמות העונות שבהן הפרי מופיע.
הפעולה הבונה של המחלקה מקבלת את שם הפרי, את מחיר הפרי לאחד קילוגרם, ומערך המכיל את שמות העונות שבהן הפרי מופיע. יש להניח כי הפעולה הבונה מקבלת את מערך שמות העונות ללא תאים ריקים, ושהקלט בה תקין.
דוגמה לזימון אפשרי ב-Main ב-C#
1
2
3
4
string[] seasons = new string[2];
seasons[0] = "autumn";
seasons[1] = "winter";
Fruit createForExample = new Fruit("banana", 8.75, seasons);
דוגמה לזימון אפשרי ב-Main ב-Java
1
2
3
4
String[] seasons = new String[2];
seasons[0] = "autumn";
seasons[1] = "winter";
Fruit createForExample = new Fruit("banana", 8.75, seasons);
לפניכם ממשק המחלקה Fruit. כתבו ב-C# או ב-Java.
| תיאור הפעולה | כותרת הפעולה |
|---|---|
| הפעולה הבונה של המחלקה. הפעולה מתוארת בתחילת השאלה. | public Fruit(string name, double price, string[] seasons) - C#public Fruit(String name, double price, String[] seasons) - Java |
| פעולה המחזירה את שם הפרי. | public string GetName() - C#public String getName() - Java |
| פעולה המחזירה את מערך העונות שבהן הפרי מופיע. | public string[] GetSeasons() - C#public String[] getSeasons() - Java |
פעולה המקבלת עונה season ומחזירה true אם הפרי הנוכחי מופיע בעונה season, ו-false אחרת. |
public bool InSeason(string season) - C#public boolean inSeason(String season) - Java |
| פעולה המחזירה את מספר העונות שבהן הפרי מופיע. מספר העונות הוא בין 1 ל-4. | public int HowMuchSeasons() - C#public int howMuchSeasons() - Java |
השלימו את כל הפעולות שבממשק המחלקה Fruit.
5 - המחלקה Person
לכבוד יום המעשים הטובים, Good Deeds Day, נערכה תחרות עירונית.
לשם כך הוגדרה המחלקה אדם - Person, שתכונותיה:
- שם -
nameמטיפוס מחרוזת. - מספר טלפון -
phoneמטיפוס מחרוזת. - מספר שלם -
num, המציין את מספר המעשים הטובים שעשה אותו אדם.
לפניכם ממשק המחלקה Person:
| תיאור הפעולה | כותרת / חתימת הפעולה |
|---|---|
פעולה בונה אדם ששמו name, מספר הטלפון שלו phone, ומספר המעשים הטובים שביצע num. |
public Person(String name, String phone, int num) |
| פעולה המוסיפה 1 למספר המעשים הטובים שביצע. | public void addGoodDeeds() |
הפעולה מחזירה:1 אם מספר המעשים הטובים שביצע האדם הנוכחי גדול ממספר המעשים הטובים שביצע האדם other.2 אם מספר המעשים הטובים שביצע האדם הנוכחי קטן ממספר המעשים הטובים שביצע האדם other.3 אם מספר המעשים הטובים שביצע האדם הנוכחי זהה למספר המעשים הטובים שביצע האדם other. |
public int compare(Person other) |
הניחו שלכל תכונה הוגדרו פעולות get ו-set.
- ממשו את הפעולה הבונה של המחלקה
Person. - ממשו את הפעולה
compare. - בפעולה הראשית בתוכנית הוגדר מערך חד-ממדי
arrPers, בגודל 52, מטיפוסPerson. כתבו פעולה בתוכנית הראשית שתקבל מערך חד-ממדי מטיפוסPersonומספר חיובי שלםnum. הפעולה תדפיס את שמות האנשים שביצעו יותר מ-numמעשים טובים, ותחזיר כמה אנשים כאלה היו.
6 - המחלקות Picture ו-Exhibition
נתונה המחלקה Picture, המתארת תמונה, ולה התכונות הבאות:
- שם התמונה -
name, מטיפוס מחרוזת. - שם הצייר -
artist, מטיפוס מחרוזת. - שנת הציור -
year, מטיפוס שלם. - האם התמונה מצוירת בצבעי שמן -
isOilPaint, מטיפוסbooleanאוbool.
- כתבו את כותרת המחלקה, את התכונות, וממשו פעולה בונה המקבלת ערכים לכל התכונות.
- כתבו פעולה בשם
isRarePainting. הפעולה תחזיר אמת אם מדובר בציור נדיר. ציור נדיר הוא ציור של אחד הציירים המפורסמיםPicasso,ChagallאוMone, המצויר בצבעי שמן, ושחלפו לפחות 70 שנה מיצירתו. התייחסו לשנה הנוכחית 2024.
נתונה המחלקה Exhibition, המתארת תערוכה, ולה התכונות הבאות:
- שם התערוכה -
name, מטיפוס מחרוזת. - התמונות בתערוכה -
pictures, מערך מטיפוסPicture. - כמות התמונות הנמצאות בתערוכה -
count, מטיפוס שלם.
- הגדירו את כותרת המחלקה, את התכונות, וממשו פעולה בונה המקבלת את שם התערוכה ואת כמות התמונות העתידות להיות בתערוכה.
- ממשו פעולה במחלקה
ExhibitionבשםaddPicture, המוסיפה תמונה מטיפוסPictureלתערוכה אך ורק אם יש עדיין מקום בתערוכה. - ממשו פעולה במחלקה
ExhibitionבשםmostFamous. הפעולה תחזיר את שם הצייר מבין הציירים המפורסמים שלו הכי הרבה תמונות בתערוכה. - ממשו פעולה במחלקה
ExhibitionבשםneedSecure. הפעולה תחזיר אמת אם בתערוכה קיימים לפחות עשרה ציורים נדירים, אחרת תחזיר שקר.
הניחו שבשתי המחלקות קיימות פעולות אחזור ועדכון לכל התכונות ואין צורך לממש אותן. אם נדרשות לכם פעולות נוספות, ממשו אותן וציינו באיזו מחלקה הוספתם אותן.