divicidivici·איזיפס·פשוט להצליח

מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנה — אביב 2023 מועד א' (97105)

תאריך הבחינה: 26.2.2023

טופס המבחן המלא להורדה — ומפתח התשובות עם פתרון מפורט לכל שאלה, אונליין. פתחו שאלה למטה: בשאלה סגורה בוחרים תשובה, בשאלה פתוחה נפתח הפתרון המלא (כניסה מהירה וחינם).

פתרו את המבחן אונליין — בשפה שלכם:Java ←C# ←

למגמת הנדסת תוכנה — מבנה נתונים ותכנות מונחה עצמים. נבחנים ב-Java או ב-C#, ובוחרים שפה בכניסה למבחן.

✓ פתרון מלא לכל שאלה · ✓ הסברים מלאים וחומרי לימוד · ✓ ליווי מורה AI · ✓ התחלה חינם

פתרון מפורט לכל שאלה — לא רק התשובה: הסבר שלב-אחר-שלב וניתוח הטעויות הנפוצות.

שאלות לדוגמה מהמבחן — פתרו עכשיו

בשאלה סגורה בוחרים תשובה; בשאלה פתוחה פותחים את הפתרון המלא (כניסה מהירה וחינם). אלו 3 מתוך 10 שאלות המבחן — את כולן תוכלו לפתור אונליין.

שאלה 1

ציוני תלמידים שמורים בשני תורים: 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 המקבלת שני תורים ומחזירה תור חדש של ממוצעי ציונים של כל התלמידים יחד. עבור שני התורים שבדוגמה הפעולה תחזיר תור חדש המכיל את ממוצע הציונים של כל אחד מבין ארבעת התלמידים.

public static Queue<Double> averageQueue(Queue<Integer> marks, Queue<Integer> tests)

סעיף ב

מהי סיבוכיות הפעולה שכתבתם בסעיף א'? הסבירו את תשובתכם.

שאלה 2

מספר שלם חיובי גדול מיוצג כשרשרת חוליות — חוליה = ספרה, החוליה הראשונה מכילה את הספרה המשמעותית ביותר והאחרונה את ספרת האחדות. דוגמה: 2321418 = 2→3→2→1→4→1→8.

שרשרת החוליות המייצגת את המספר 2321418:

2 → 3 → 2 → 1 → 4 → 1 → 8 → null
סעיף א

כתבו פעולה חיצונית בשם numDigits המקבלת הפניה לחוליה ראשונה של שרשרת חוליות המייצגת מספר שלם וחיובי. הפעולה תחזיר כמות ספרות של המספר.

public static int numDigits(Node<Integer> n)

סעיף ב

כתבו פעולה חיצונית בשם compare המקבלת הפניות לשתי שרשראות חוליות n1 ו-n2 המייצגות שני מספרים שלמים חיוביים. אם המספר המיוצג בשרשרת הראשונה גדול מהמספר המיוצג בשרשרת השנייה, הפעולה תחזיר 1. אם המספר המיוצג בשרשרת הראשונה קטן מהמספר המיוצג בשרשרת השנייה, הפעולה תחזיר 2. אם שני המספרים שווים, הפעולה תחזיר 0.

public static int compare(Node<Integer> n1, Node<Integer> n2)

סעיף ג

מהי סיבוכיות הפעולה compare מהסעיף הקודם? הסבירו את תשובתכם.

שאלה 3
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;
  }
}
סעיף א

לפניכם חמישה היגדים. קבעו לכל אחד מהם אם הוא נכון או אינו נכון, ונמקו את קביעתכם:

  1. המחלקה Fruit יורשת את הפעולה validWeight() מהמחלקה Apple.
  2. המחלקה Apple יורשת את כל התכונות ואת כל הפעולות של המחלקה Fruit.
  3. המחלקה Apple יכולה לגשת ישירות לתכונה weight של המחלקה Fruit.
  4. המחלקה Fruit יכולה לגשת לתכונה color של המחלקה Apple.
  5. למחלקה Apple אין פעולה toString().
סעיף ב

לפניכם קטע קוד מהפעולה הראשית (main) של המחלקה TestFruit: Fruit first = new Apple(100, "RED"); Fruit second = new Fruit(90); Apple third = new Apple(100, "RED"); בעבור כל אחת מההוראות שלפניכם קבעו אם היא תקינה או אינה תקינה. אם היא אינה תקינה, כתבו אם זו שגיאת ריצה או שגיאת הידור (קומפילציה):

  1. boolean b = first.validWeight();
  2. boolean b = second.validWeight();
  3. boolean b = ((Apple)first).validWeight();
  4. boolean b = ((Apple)second).validWeight();
  5. boolean b = ((Apple)first).color.equals(third.color);
סעיף ג

כתבו פעולה המקבלת מערך עצמים מטיפוס Object. הפעולה תדפיס כמה עצמים הם מטיפוס Apple, כמה עצמים מטיפוס Fruit ואינם מטיפוס Apple, וכמה עצמים הם לא מטיפוס Fruit.

public static void countTypes(Object[] arr)

כל שאלות המבחן — 10 שאלות, כל אחת עם פתרון מלא

לפי סדר המבחן. לוחצים על שאלה והמבחן נפתח בה: עונים, רואים פתרון מלא ומוסבר, וממשיכים לשאלה הבאה.

  1. שאלה 1

    ממוצע ציונים משני תורים — averageQueue

  2. שאלה 2

    שרשרת חוליות המייצגת מספר גדול — numDigits ו-compare

  3. שאלה 3

    ירושה, גישה לתכונות ובדיקות תקינות — Fruit ו-Apple

  4. שאלה 4

    בנאים, דריסה והעמסה — מחלקות A ו-B

  5. שאלה 5

    "מרחק" של ערך בשרשרת חוליות — distance ו-minDistanceValue

  6. שאלה 6

    היררכיית מחלקות עם ממשקים — Sport ומשפחת הספורט

  7. שאלה 7

    שני זימונים על עץ בינרי — what ו-why

  8. שאלה 8

    דריסת פעולה ומעקב אחרי מערך עצמים — One, Two ו-Tester

  9. שאלה 9

    חציון באמצעות מחסנית ובחירה אקראית — what, createSmall ו-randChoice

  10. שאלה 10

    תור מחסניות מושלם — isPerfect

הנושאים הרשמיים בבחינה 97105

לפי תוכנית הלימודים הרשמית של מה"ט (מבנה נתונים ותכנות מונחה עצמים) — אלו הנושאים שהבחינה נשענת עליהם:

המקור: תוכנית הלימודים הרשמית של מה"ט (משרד העבודה).

פתרו את המבחן המלא — עם משוב על כל תשובה

כל שאלות המבחן, פתרון מפורט, משוב אישי ומעקב התקדמות. בדיוק מה שצריך כדי לעבור.

התחילו לתרגל — חינם ←