מה"ט אלגוריתמיקה ותכנות — אביב 2024 מועד ב'
תאריך הבחינה: 26.6.2024
טופס המבחן המלא להורדה — ומפתח התשובות עם פתרון מפורט לכל שאלה, אונליין. פתחו שאלה למטה: בשאלה סגורה בוחרים תשובה, בשאלה פתוחה נפתח הפתרון המלא (כניסה מהירה וחינם).
למגמת הנדסת תוכנה — מי שלומד ב-Java או ב-C#. הלומדים בפייתון ניגשים לשאלון נפרד.
✓ פתרון מלא לכל שאלה · ✓ הסברים מלאים וחומרי לימוד · ✓ ליווי מורה AI · ✓ התחלה חינם
פתרון מפורט לכל שאלה — לא רק התשובה: הסבר שלב-אחר-שלב וניתוח הטעויות הנפוצות.
שאלות לדוגמה מהמבחן — פתרו עכשיו
בשאלה סגורה בוחרים תשובה; בשאלה פתוחה פותחים את הפתרון המלא (כניסה מהירה וחינם). אלו 3 מתוך 52 שאלות המבחן — את כולן תוכלו לפתור אונליין.
חברת "טיולי עם" מארגנת טיולים ליעדים שונים בעולם. למערכת הממוחשבת של החברה יש שלוש מחלקות: Date, Traveler, Travel.
המחלקה Date מציינת תאריך. למחלקה יש שלוש תכונות: day – יום, month – חודש, year – שנה.
למחלקה הוגדרו פעולה בונה, פעולות Set/Get לכל התכונות. כמו כן, הוגדרה הפעולה המקבלת כפרמטר תאריך מסוים ובודקת אם התאריך הנוכחי (התאריך שמיוצג באמצעות האובייקט שמפעיל את הפעולה, this), לפני מהתאריך other שהתקבל כפרמטר.
כותרת הפעולה:
public bool Before(Date other)
המחלקה Traveler מייצגת נוסע. למחלקה יש את התכונות הבאות:
- שם נוסע – name, מטיפוס מחרוזת, string
- תאריך התפוגה של הדרכון – expireDate, מטיפוס תאריך, Date
- יעד הנסיעה הרצוי – destination, מטיפוס מחרוזת, string
- סכום המקדמה ששילם – payment, מטיפוס מספר שלם, int
למחלקה הוגדרו פעולה בונה, פעולות Set/Get לכל התכונות.
כתבו פעולה הבודקת אם הנוסע יכול להצטרף לטיול שמחירו price, תאריך היציאה start ויעד הטיול dest. הנוסע יכול להצטרף לטיול אם הדרכון שלו בתוקף, יעד הטיול הוא היעד הרצוי ונוסע שילם לפחות חצי ממחיר הטיול.
כותרת הפעולה:
public bool CanGo(Date start, int price, string dest)
המחלקה Travel מייצגת טיול. למחלקה ארבע תכונות:
- יעד הטיול – destination, מטיפוס מחרוזת, string
- מערך נרשמים לטיול – travelers, מערך הפניות לעצמים מטיפוס Traveler
- מחיר הטיול – price, מטיפוס מספר שלם, int
- תאריך היציאה לטיול – startDate, מטיפוס תאריך, Date
כתבו פעולה המדפיסה את שמות הנרשמים שהדרכון שלהם אינו בתוקף בתאריך היציאה.
כותרת הפעולה:
public void NotValidNames()
הטיול מובטח רק אם בין הנרשמים יש לפחות minNum נוסעים שיכולים לצאת לטיול.
כתבו פעולה הבודקת אם הטיול מובטח. אם כן – הפעולה תחזיר ערך true, ולא, הפעולה תחזיר ערך false.
כותרת הפעולה:
public bool IsGuaranted(int minNum)
נתונה הפעולה mystery המקבלת שתי מחרוזות:
def mystery(s1, s2):
out1 = ""
out2 = ""
for i in range(len(s1)):
ch = s1[i]
pos = s2.find(ch)
if pos == -1:
if out1.find(ch) == -1:
out1 = out1 + ch
else:
if out2.find(ch) == -1:
out2 = out2 + ch
return out1 + out2
נתונות שתי מחרוזות s1=" COMPUTERS" ו-s2=" CANNOTTHINK" עקבו בעזרת טבלת מעקב אחרי זימון הפעלה mystery(s1, s2) ורשמו מה תחזיר הפעולה.
מה מבצעת הפעולה mystery באופן כללי?
האם קיימות שתי מחרוזות שונות s1 ו-s2 שעבורם זימונים mystery(s1, s2) ו-mystery(s2, s1) יחזירו אותה תוצאה? אם כן, הביאו דוגמה של זוג מחרוזות כאלה, ולא, הסבירו למה הדבר אינו אפשרי.
בעיריית דימונה קיימת מערכת ממוחשבת לגביית מיסוי עירוני (ארנונה). במערכת הוגדרה המחלקה Property (נכס) ולה התכונות הבאות:
- מספר הנכס – num, מטיפוס מחרוזת, string
- מספר תעודת הזהות של המשלם – id, מטיפוס מחרוזת, string
- כתובת הנכס – address, מטיפוס מחרוזת, string
- שטח הנכס – area, מטיפוס מספר ממשי, float
- זכאות להנחה – discount, מספר שלם בין 0 ל-3, כאשר:
- 0 – מציין שאין הנחה, תשלום מלא,
- 1 – תשלום מופחת, הנחה של 10%,
- 2 – הנחה של 50%,
- 3 – פטור מלא מתשלומי ארנונה
במחלקה הוגדרה פעולה פנימית account(self) המחזירה סכום חשבון מלא של ארנונה.
כתבו פעולה פנימית לחישוב סכום לתשלום בהתאם לזכאות להנחה של הנכס. כותרת הפעולה:
def real_account(self)
המחלקה CityData מאחסנת נתונים של כל הנכסים בעיר. למחלקה תכונה אחת – רשימה arr, רשימה של עצמים מסוג Property. כתבו במחלקה CityData פעולה לחישוב סכום כולל של כל ההנחות בתשלומי הארנונה. כותרת הפעולה:
def total_discount(self)
תושבי העיר רשאים להגיש בקשה לעדכון רמת הזכאות להנחה. מדי פעם, העירייה אוספת את כל הבקשות לעדכון ומטפלת בהן. לפי החוק העירוני, תושב העיר יכול לקבל הנחה אם מתקיימים התנאים הבאים:
- יש בבעלותו רק נכס אחד
- רמת הזכאות של נכס נמוכה מרמת הזכאות המבוקשת
כתבו פעולה במחלקה CityData המקבלת רשימה של תעודות זהות ids השייכות למגישי בקשה לעדכון (הנחה), ורמת הזכאות המבוקשת level. הפעולה תבדוק אם יש מקום לעדכון. אם כן – הפעולה תבצע את העדכון, ולא – הפעולה תדפיס אחת משלוש ההודעות הבאות:
- "תעודת הזהות אינה ברשימת משלמי ארנונה"
- "יש יותר מנכס אחד בבעלותו"
- "רמת הזכאות המבוקשת נמוכה מנוכחית"
כותרת הפעולה:
def print_decision(self, ids, level)
הנושאים הרשמיים בבחינה 97104
לפי תוכנית הלימודים הרשמית של מה"ט (אלגוריתמיקה ותכנות) — אלו הנושאים שהבחינה נשענת עליהם:
- אלגוריתם – אלגוריתמים מילוליים, שימוש באלגוריתם לפתרון בעיות במחשב · 11 ש'
- מבוא לתכנות ב-Java – מבנה תכנית, משתנים, טיפוסי נתונים בסיסיים, הוראות השמה ופלט · 11 ש'
- מתחילים לתכנת – אופרטורים, ממשק מחלקה, זימון פעולות, המחלקה Math · 16 ש'
- משפטי תנאי (if, switch) ופעולות (methods) – כתיבה וזימון, יבוא מודולים · 23 ש'
- לולאות (for, while, do-while) – יעילות אלגוריתם, תבניות אלגוריתמיות בסיסיות, המחלקה String · 28 ש'
- מבנה נתונים סדרתיים – מערכים חד-ממדיים ודו-ממדיים, תבניות סריקה, חיפוש ומיון (insertion sort, מיזוג) · 36 ש'
- מבוא לתכנות מונחה עצמים – מחלקות ועצמים, הכמסה (Encapsulation), בנאים, העמסה ודריסה (overloading/overriding) · 22 ש'
- רקורסיה · 7 ש'
- טיפול בחריגים (Exceptions) – היכרות עם מחלקת Exception ופרדיגמת exceptions · 7 ש'
- ערוצי קלט/פלט (System.in/out/err), קריאה וכתיבה לקובצי טקסט ובינארי · 7 ש'
- יסודות Threads ו-MultiThreads · 6 ש'
- כתיבה תקנית (coding conventions) בסביבת Java · 8 ש'
- ניהול זיכרון והמכונה הוירטואלית (JVM) בג'אווה · 5 ש'
- תרגיל סיכום מסכם · 2 ש'
המקור: תוכנית הלימודים הרשמית של מה"ט (משרד העבודה).
פתרו את המבחן המלא — עם משוב על כל תשובה
כל שאלות המבחן, פתרון מפורט, משוב אישי ומעקב התקדמות. בדיוק מה שצריך כדי לעבור.
התחילו לתרגל — חינם ←