מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנה — קיץ 2022 מועד א' (97105)
תאריך הבחינה: לא ידוע
טופס המבחן המלא להורדה — ומפתח התשובות עם פתרון מפורט לכל שאלה, אונליין. פתחו שאלה למטה: בשאלה סגורה בוחרים תשובה, בשאלה פתוחה נפתח הפתרון המלא (כניסה מהירה וחינם).
למגמת הנדסת תוכנה — מבנה נתונים ותכנות מונחה עצמים. נבחנים ב-Java או ב-C#, ובוחרים שפה בכניסה למבחן.
✓ פתרון מלא לכל שאלה · ✓ הסברים מלאים וחומרי לימוד · ✓ ליווי מורה AI · ✓ התחלה חינם
פתרון מפורט לכל שאלה — לא רק התשובה: הסבר שלב-אחר-שלב וניתוח הטעויות הנפוצות.
שאלות לדוגמה מהמבחן — פתרו עכשיו
בשאלה סגורה בוחרים תשובה; בשאלה פתוחה פותחים את הפתרון המלא (כניסה מהירה וחינם). אלו 3 מתוך 11 שאלות המבחן — את כולן תוכלו לפתור אונליין.
שרשרת חוליות מטיפוס שלם; "שרשרת ההפרשים" שלה היא שרשרת חדשה שבה כל איבר הוא ההפרש בערך מוחלט בין כל זוג איברים סמוכים במקור. דוגמה: 5,20,9,6,5,8,2 -> 15,11,3,1,3,6. הפעלה חוזרת עד לאיבר יחיד ("השורד"): ...-> 4,8,2,2,3 -> 4,6,0,1 -> 2,6,1 -> 4,5 -> 1.
דוגמה: השרשרת 5→20→9→6→5→8→2 (7 חוליות); שרשרת ההפרשים שלה: |20-5|=15, |9-20|=11, |6-9|=3, |5-6|=1, |8-5|=3, |2-8|=6 — כלומר 15→11→3→1→3→6 (6 חוליות). לסעיף ב׳: הפעלה חוזרת עד שנותר איבר אחד ("השורד"): 5,20,9,6,5,8,2 → 15,11,3,1,3,6 → 4,8,2,2,3 → 4,6,0,1 → 2,6,1 → 4,5 → 1. הפעולה מחזירה 1.
5 → 20 → 9 → 6 → 5 → 8 → 2 → null
(הפרשים) 15 → 11 → 3 → 1 → 3 → 6 → null
(הפרשים) 4 → 8 → 2 → 2 → 3 → null
(הפרשים) 4 → 6 → 0 → 1 → null
(הפרשים) 2 → 6 → 1 → null
(הפרשים) 4 → 5 → null
(הפרשים) 1 → null <- השורד
כתבו פעולה חיצונית בשם differenceList (Java) / DifferenceList (C#) המקבלת הפניה לחוליה ראשונה של שרשרת חוליות. הפעולה תחזיר הפניה לחוליה הראשונה של "שרשרת ההפרשים".
public static Node<Integer> differenceList(Node<Integer> lst)
כתבו פעולה חיצונית בשם theSurvives (Java) / TheSurvives (C#) המקבלת הפניה לחוליה ראשונה של שרשרת חוליות. על הפעולה לחשב שוב ושוב את שרשרת ההפרשים שלה עד שמתקבלת רשימה עם איבר אחד — איבר זה הוא ה"שורד". על הפעולה להדפיס את כל השרשראות המתקבלות ולהחזיר את ערכו של האיבר ה"שורד". מומלץ להשתמש בפעולה שכתבתם בסעיף א'.
public static int theSurvives(Node<Integer> lst)
פעולה חיצונית המקבלת מחסנית שאיבריה שלמים, ובודקת שכל איבר (מלבד הראש) גדול מסכום כל האיברים הנמצאים מעליו (קרובים יותר לראש). אפשר להשתמש במבני נתונים נוספים.
כתבו פעולה חיצונית המקבלת מחסנית שאיבריה מטיפוס שלם. הפעולה תחזיר true אם ערכו של כל איבר במחסנית (פרט לאיבר הנמצא בראש המחסנית) גדול מסכום ערכם של כל האיברים שנמצאים לפניו במחסנית (כלומר, מעליו — קרובים יותר לראש), אם לא הפעולה תחזיר false. אפשר להשתמש במבני נתונים נוספים.
public static boolean isGreaterThanSum(Stack<Integer> s)
מהי הסיבוכיות של הפעולה שכתבתם בסעיף א'? הסבירו את תשובתכם.
A (תכונה מוגנת x, מתחילה מ-0, method מוסיפה, toString מדפיסה את x). B יורשת מ-A (y=1, method דורסת: מחסירה מ-x ומוסיפה ל-y, toString מדפיסה x.y). C יורשת מ-A (y=10, method דורסת: מוסיפה גם ל-x וגם ל-y, toString מדפיסה x/y). Test.main בונה מערך A[4]={{C,B,A,B}} ומדפיסה/מפעילה method(i+2) על כל תא.
public class A {
protected int x;
public A() {
x = 0;
}
public void method(int num) {
x += num;
}
public String toString() {
return "" + x;
}
}// end of class A
public class B extends A {
private int y;
public B()
{
super();
y = 1;
}
public void method(int num) {
x -= num;
y += num;
}
public String toString() {
return "" + x + "." + y;
}
}// end of class B
public class C extends A {
private int y;
public C()
{
super();
y = 10;
}
public void method(int num) {
x += num;
y += num;
}
public String toString() {
return "" + x + "/"+ y;
}
} // end of class C
public class Test
{
public static void main (String [] args)
{
A [] array = new A[4];
array[0] = new C();
array[1] = new B();
array[2] = new A();
array[3] = new B();
for (int i = 0; i < array.length; i ++)
{
System.out.println ("array[" + i + "] = " + array[i]);
array[i].method(i+2);
System.out.println ("array[" + i + "] = " + array[i]);
}
}
}
עקבו אחרי ביצוע הפעולה הראשית של המחלקה Test וכתבו מה יהיה הפלט של הפעולה. חובה להציג באיור את כל העצמים שנוצרו ואת ערכי התכונות שלהם.
הנושאים הרשמיים בבחינה 97105
לפי תוכנית הלימודים הרשמית של מה"ט (מבנה נתונים ותכנות מונחה עצמים) — אלו הנושאים שהבחינה נשענת עליהם:
- חזרה ותרגול בתמ"ע, דגש על שימוש במחלקה נתונה על בסיס ממשק הפעולות · 6 ש'
- פעולות על מערך - טיפוס נתונים סדרתי · 10 ש'
- מחלקה גנרית · 4 ש'
- רקורסיה · 12 ש'
- יעילות · 11 ש'
- מחסנית – Stack · 11 ש'
- תור – Queue · 11 ש'
- המחלקה הגנרית Node – מחלקה גנרית ייצוג חוליה בסיסית · 8 ש'
- חוליה בינארית - רשימות מקושרות דו כיווניות, עץ בינארי · 17 ש'
- OOP · 8 ש'
- שימוש ב-UML לשם מידול ופישוט OOP · 11 ש'
- הורשה · 8 ש'
- פולימורפיזם · 8 ש'
- פולימורפיזם מופשט · 13 ש'
- מבני נתונים וחבילות · 8 ש'
- Design Patterns · 28 ש'
- פרויקט סיכום הנחיות · 4 ש'
המקור: תוכנית הלימודים הרשמית של מה"ט (משרד העבודה).
פתרו את המבחן המלא — עם משוב על כל תשובה
כל שאלות המבחן, פתרון מפורט, משוב אישי ומעקב התקדמות. בדיוק מה שצריך כדי לעבור.
התחילו לתרגל — חינם ←