מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנה — אביב 2023 מועד א' (97105)
תאריך הבחינה: לא ידוע
טופס המבחן המלא להורדה — ומפתח התשובות עם פתרון מפורט לכל שאלה, אונליין. פתחו שאלה למטה: בשאלה סגורה בוחרים תשובה, בשאלה פתוחה נפתח הפתרון המלא (כניסה מהירה וחינם).
למגמת הנדסת תוכנה — מבנה נתונים ותכנות מונחה עצמים. נבחנים ב-Java או ב-C#, ובוחרים שפה בכניסה למבחן.
✓ פתרון מלא לכל שאלה · ✓ הסברים מלאים וחומרי לימוד · ✓ ליווי מורה AI · ✓ התחלה חינם
פתרון מפורט לכל שאלה — לא רק התשובה: הסבר שלב-אחר-שלב וניתוח הטעויות הנפוצות.
שאלות לדוגמה מהמבחן — פתרו עכשיו
בשאלה סגורה בוחרים תשובה; בשאלה פתוחה פותחים את הפתרון המלא (כניסה מהירה וחינם). אלו 3 מתוך 10 שאלות המבחן — את כולן תוכלו לפתור אונליין.
ציוני תלמידים שמורים בשני תורים: marks (כל הציונים ברצף) ו-tests (לכל תלמיד — כמה ציונים השלים). הדוגמה: תלמיד ראשון 80,90,100; שני 75,96; שלישי 100,100,97,96; רביעי 94,88 — ותוצאה צפויה 90.0, 85.5, 98.25, 91.0.
דוגמה: תור הציונים marks (18 ערכים, לפי סדר התלמידים) ותור הבחינות tests (4 ערכים: 3,2,4,2) — התור marks: 80,90,100, 75,96, 100,100,97,96, 94,88 (מחולק ל-4 קבוצות רצופות לפי tests); התוצאה הצפויה: 91.0, 85.5, 98.25, 91.0 (סדר לפי סדר התלמידים בתור tests).
marks (ראש→סוף): 80,90,100 | 75,96 | 100,100,97,96 | 94,88
tests (ראש→סוף): 3, 2, 4, 2
תוצאה (ראש→סוף): 90.0, 85.5, 98.25, 91.0
כתבו פעולה בשם averageQueue (Java) / AverageQueue (C#) המקבלת שני תורים ומחזירה תור חדש של ממוצעי ציונים של כל התלמידים יחד. עבור שני התורים שבדוגמה הפעולה תחזיר תור חדש המכיל את ממוצע הציונים של כל אחד מבין ארבעת התלמידים.
public static Queue<Double> averageQueue(Queue<Integer> marks, Queue<Integer> tests)
מהי סיבוכיות הפעולה שכתבתם בסעיף א'? הסבירו את תשובתכם.
מספר שלם חיובי גדול מיוצג כשרשרת חוליות — חוליה = ספרה, החוליה הראשונה מכילה את הספרה המשמעותית ביותר והאחרונה את ספרת האחדות. דוגמה: 2321418 = 2→3→2→1→4→1→8.
שרשרת החוליות המייצגת את המספר 2321418:
2 → 3 → 2 → 1 → 4 → 1 → 8 → null
כתבו פעולה חיצונית בשם numDigits (Java) / NumDigits (C#) המקבלת הפניה לחוליה ראשונה של שרשרת חוליות המייצגת מספר שלם וחיובי. הפעולה תחזיר כמות ספרות של המספר.
public static int numDigits(Node<Integer> n)
כתבו פעולה חיצונית בשם compare (Java) / Compare (C#) המקבלת הפניות לשתי שרשראות חוליות n1 ו-n2 המייצגות שני מספרים שלמים חיוביים. אם המספר המיוצג בשרשרת הראשונה גדול מהמספר המיוצג בשרשרת השנייה, הפעולה תחזיר 1. אם המספר המיוצג בשרשרת הראשונה קטן מהמספר המיוצג בשרשרת השנייה, הפעולה תחזיר 2. אם שני המספרים שווים, הפעולה תחזיר 0.
public static int compare(Node<Integer> n1, Node<Integer> n2)
מהי סיבוכיות הפעולה compare מהסעיף הקודם? הסבירו את תשובתכם.
Fruit (מחלקת-על, weight מוגן) ו-Apple (יורשת, color פרטי, validWeight/ValidWeight בודקת טווח משקל 80–140).
public class Fruit {
protected int weight;
public Fruit(int val) { weight = val; }
public int getWeight() { return weight; }
}
public class Apple extends Fruit {
private String color;
public Apple(int val, String col) {
super(val);
color = col;
}
public boolean validWeight() {
return weight > 80 && weight < 140;
}
}
לפניכם חמישה היגדים. קבעו לכל אחד מהם אם הוא נכון או אינו נכון, ונמקו את קביעתכם:
- המחלקה Fruit יורשת את הפעולה validWeight()/ValidWeight() מהמחלקה Apple.
- המחלקה Apple יורשת את כל התכונות ואת כל הפעולות של המחלקה Fruit.
- המחלקה Apple יכולה לגשת ישירות לתכונה weight של המחלקה Fruit.
- המחלקה Fruit יכולה לגשת לתכונה color של המחלקה Apple.
- למחלקה Apple אין פעולה toString()/ToString().
לפניכם קטע קוד מהפעולה הראשית (main/Main) של המחלקה TestFruit: Fruit first = new Apple(100, "RED"); Fruit second = new Fruit(90); Apple third = new Apple(100, "RED"); בעבור כל אחת מההוראות שלפניכם קבעו אם היא תקינה או אינה תקינה. אם היא אינה תקינה, כתבו אם זו שגיאת ריצה או שגיאת הידור (קומפילציה):
- boolean b = first.validWeight();
- boolean b = second.validWeight();
- boolean b = ((Apple)first).validWeight();
- boolean b = ((Apple)second).validWeight();
- boolean b = ((Apple)first).color.equals(third.color);
כתבו פעולה המקבלת מערך עצמים מטיפוס Object. הפעולה תדפיס כמה עצמים הם מטיפוס Apple, כמה עצמים מטיפוס Fruit ואינם מטיפוס Apple, וכמה עצמים הם לא מטיפוס Fruit.
public static void countTypes(Object[] arr)
הנושאים הרשמיים בבחינה 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 ש'
המקור: תוכנית הלימודים הרשמית של מה"ט (משרד העבודה).
פתרו את המבחן המלא — עם משוב על כל תשובה
כל שאלות המבחן, פתרון מפורט, משוב אישי ומעקב התקדמות. בדיוק מה שצריך כדי לעבור.
התחילו לתרגל — חינם ←