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

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

תאריך הבחינה: לא ידוע

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

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

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

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

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

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

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

שאלה 1

בונים תור לפי חוקיות המדרגה (סעיף א'), ואז בודקים אם תור נתון מקיים אותה (סעיף ב') — שתיהן פועלות רק דרך ה-ADT הנתון של Queue.

סעיף א

כתבו פעולה שמקבלת מספר שלם חיובי N ומחזירה תור "מדרגה N".

public static Queue<Integer> buildStairQueue(int N)

סעיף ב

כתבו פעולה המקבלת תור q של מספרים שלמים ומספר שלם חיובי N, ומחזירה true אם התור הוא תור "מדרגה N", ואם לא, הפעולה מחזירה false.

public static boolean isStairQueue(Queue<Integer> q, int N)

שאלה 2

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

דוגמה ל"שרשרת סכומים": כל איבר (פרט לראשון) הוא סכום כל האיברים שלפניו (1=1, 2=1+1, 4=1+1+2, 8=1+1+2+4 וכו').

chain → 1 → 1 → 2 → 4 → 8 → 16 → 32 → null

דוגמה ל"שרשרת סכומים הפוכה": כל איבר (פרט לאחרון) הוא סכום כל האיברים שאחריו (2=2, 2=2, 4=2+2, 8=4+2+2 וכו', בכיוון הפוך).

chain → 64 → 32 → 16 → 8 → 4 → 2 → 2 → null
סעיף א

כתבו פעולה אשר מקבלת הפניה לחוליה הראשונה של שרשרת חוליות ומחזירה true אם השרשרת היא "שרשרת סכומים", ואם לא, הפעולה מחזירה false.

public static boolean isSumChain(Node<Integer> chain)

סעיף ב

כתבו פעולה אשר מקבלת הפניה לחוליה הראשונה של שרשרת חוליות ומחזירה true אם השרשרת היא "שרשרת סכומים הפוכה", ואם לא, הפעולה מחזירה false.

שאלה 3

אין כאן קוד לכתוב — רק לגזור מבנה ירושה יחיד שמקיים את כל אילוצי-הטיפוס בקוד הנתון, ואז לעדכן אותו כשאחד האילוצים מתהפך.

public static void main(String[] args)
{
    B b1 = new A();
    B b2 = new C();
    A a1 = (C) b2;
    D d1 = new C();
    B b3 = new B();
    D d2 = new A();
}
סעיף א

שרטטו תרשים UML המתאר קשר אפשרי ונכון בין כל המחלקות המוזכרות בקוד (ראו code_context) — בהנחה שכל 6 השורות תקינות (מתקמפלות ורצות ללא שגיאה).

סעיף ב

הניחו כי השורה האחרונה בקוד (D d2 = new A();) מבצעת המרה לא תקינה (המחשב מודיע על טעות), וכל שאר החמש השורות עדיין תקינות. שרטטו תרשים UML חדש המתאר את הקשרים הנכונים במקרה זה, בין כל המחלקות המוזכרות בקוד.

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

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

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

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

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

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