בגרות מדעי המחשב 899371, קיץ 2021 מועד א'
תאריך הבחינה: לא ידוע
טופס המבחן המלא להורדה — ומפתח התשובות עם פתרון מפורט לכל שאלה, אונליין. פתחו שאלה למטה: בשאלה סגורה בוחרים תשובה, בשאלה פתוחה נפתח הפתרון המלא (כניסה מהירה וחינם).
לתלמידי ותלמידות מדעי המחשב ביחידות המתקדמות — מי שלומד ב-Java או ב-C#. השאלון אחד; השפה היא הבחירה שלכם.
✓ פתרון מלא לכל שאלה · ✓ הסברים מלאים וחומרי לימוד · ✓ ליווי מורה AI · ✓ התחלה חינם
פתרון מפורט לכל שאלה — לא רק התשובה: הסבר שלב-אחר-שלב וניתוח הטעויות הנפוצות.
שאלות לדוגמה מהמבחן — פתרו עכשיו
בשאלה סגורה בוחרים תשובה; בשאלה פתוחה פותחים את הפתרון המלא (כניסה מהירה וחינם). אלו 3 מתוך 3 שאלות המבחן — את כולן תוכלו לפתור אונליין.
כתוב פעולה חיצונית שנקראת filter בשפת Java או Filter בשפת C#, המקבלת מערך מטיפוס שלם arr ומספר מטיפוס שלם num. הפעולה תחזיר מערך חדש מטיפוס שלם, הכולל רק את המספרים המופיעים במערך arr שאינם שווים ל-num.
לדוגמה: בעבור num ששווה ל-9 ומערך arr בגודל 7 שלפניך:
| אינדקס | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|---|
| arr | 6 | 9 | 2 | 2 | 9 | 4 | -3 |
הפעולה תחזיר מערך בגודל 5, הנראה כך:
| אינדקס | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| 6 | 2 | 2 | 4 | -3 |
הנח שקיים במערך arr לפחות מספר אחד שאינו שווה ל-num, ומספר אחד לפחות ששווה ל-num.
שים לב: גודל המערך המוחזר הוא כמספר האיברים במערך arr שאינם שווים ל-num.
הערה: אין חשיבות לסדר המספרים במערך המוחזר.
public static int[] filter(int[] arr, int num)
נתונה המחלקה Subject, המייצגת מקצוע בתעודה של תלמיד, ולה שתי תכונות: subName — שם המקצוע, ו-grade — הציון (בין 0 ל-100).
נוסף על כך, נתונה המחלקה ReportCard, המייצגת תעודה של תלמיד, ולה שתי תכונות: stuName — שם התלמיד, ומערך subArray — מטיפוס Subject המכיל את עצמי המקצועות שלמד התלמיד.
הנח שקיימות פעולות get ו-set עבור כל התכונות בשתי המחלקות.
לפניך ממשק חלקי חלקי המחלקה ReportCard:
| כותרת הפעולה | תיאור הפעולה |
|---|---|
public ReportCard(String name, int num) | פעולה בונה את המקבלת את שם התלמיד ואת מספר המקצועות שלמד התלמיד, ומאתחלת את תכונות המחלקה. המערך subArray מאותחל למערך ריק בגודל num. |
public double average() | פעולה המחזירה את ממוצע כל הציונים בתעודה של התלמיד. |
public boolean isExcellent() | פעולה המחזירה true אם התלמיד נחשב מצטיין, אחרת מחזירה false. תלמיד מצטיין: שממוצע ציוניו הוא 85 ומעלה, כל ציוניו מעל 54, ולפחות אחד מציוניו הוא 100. |
א. ממש את הפעולה הבונה של המחלקה ReportCard. ב. ממש את הפעולה isExcellent במחלקה ReportCard. אפשר להשתמש בפעולה average של ReportCard בלי לממש אותה. הנח שאיברי המערך subArray שונים מ-null. ג. כתוב פעולה חיצונית ששמה printExcellent, המקבלת מערך מטיפוס ReportCard — המייצג תלמידים בכיתה מסוימת. הפעולה תדפיס את שמות התלמידים המצטיינים. חובה להשתמש בפעולה isExcellent של המחלקה ReportCard. הנח שאיברי המערך array שונים מ-null.
public class Subject {
private String subName;
private int grade;
// get/set קיימות לכל תכונה (subName, grade) — לא מוצגות, לא לממש
}
public class ReportCard {
private String stuName;
private Subject[] subArray;
// get/set קיימות לכל תכונה (stuName, subArray) — לא מוצגות, לא לממש
// public double average() — נתונה כחלק מממשק המחלקה, מותר להשתמש בה בלי לממש אותה מחדש
}
ממש את הפעולה הבונה של המחלקה ReportCard.
public ReportCard(String name, int num)
ממש את הפעולה isExcellent במחלקה ReportCard. אפשר להשתמש בפעולה average של ReportCard בלי לממש אותה. הנח שאיברי המערך subArray שונים מ-null.
public boolean isExcellent()
כתוב פעולה חיצונית ששמה printExcellent, המקבלת מערך מטיפוס ReportCard — המייצג תלמידים בכיתה מסוימת. הפעולה תדפיס את שמות התלמידים המצטיינים. חובה להשתמש בפעולה isExcellent של המחלקה ReportCard. הנח שאיברי המערך array שונים מ-null.
public static void printExcellent(ReportCard[] array)
"מחרוזת מיוחדת" היא מחרוזת שבה כל התווים הזהים שבה מופיעים ברצף אחד (כולל מחרוזת ריקה, וכולל מחרוזת ללא תווים זהים).
דוגמאות ל"מחרוזות מיוחדות": "ccabbb", "aaaa", "a", "*&$", "**1zz" (הסימן $ מייצג כאן את סימן הדולר שבשאלון).
דוגמאות למחרוזות שאינן "מחרוזות מיוחדות": "aba", "aabcb", "**33%3".
נתונה המחלקה MyString, ולה תכונה יחידה: str — מחרוזת.
לפניך ממשק חלקי של המחלקה MyString. יש להשתמש בפעולות בממשק המחלקה בלבד, ללא צורך לממש אותן:
| כותרת הפעולה | תיאור הפעולה |
|---|---|
public MyString() | פעולה בונה מחרוזת ריקה. |
public int countChar(char ch) | פעולה המחזירה את מספר המופעים של התו ch במחרוזת str. |
public void removeChar(char ch) | פעולה המקבלת תו ch ומוחקת מן המחרוזת str את כל המופעים שלו. |
public void appendChar(char ch) | פעולה המוסיפה לסוף המחרוזת str את התו ch. |
public char firstChar() | פעולה המחזירה את התו הראשון במחרוזת str. |
public boolean isEmpty() | פעולה המחזירה true אם המחרוזת str ריקה, אחרת מחזירה false. |
לפניך כותרת של הפעולה החיצונית special:
public static MyString special(MyString ms)
הפעולה special מחזירה עצם חדש מטיפוס MyString, שהתכונה שלו, str, היא ה"מחרוזת מיוחדת" המורכבת מכל התווים שבתכונה str של העצם ms.
לדוגמה: בעבור העצם ms שלפניך, שבו מחרוזת רגילה "babca":
הפעולה special תחזיר עצם חדש, שבו "מחרוזת מיוחדת": "bbaac".
הערות:
- אין צורך לשמור על סדר התווים במחרוזת str בעצם ms.
- אין חשיבות לסדר התווים בעצם החדש, כל עוד נשמרת ההגדרה של "מחרוזת מיוחדת".
ממש את הפעולה החיצונית special. ממש את הפעולה special באמצעות פעולות ממשק המחלקה MyString בלבד. אין להוסיף פעולות למחלקה MyString, גם לא get ו-set.
public class MyString {
private String str;
// הממשק הנתון (לא לממש, להשתמש בלבד):
// public MyString()
// public int countChar(char ch)
// public void removeChar(char ch)
// public void appendChar(char ch)
// public char firstChar()
// public boolean isEmpty()
}
איור נתון-מול-מוחזר: תיבת עצם ms מצביעה על עצם MyString עם התכונה str="babca"; תיבה שנייה מציגה עצם MyString חדש שהתכונה str שלו היא "bbaac" (תוצאת special). איור InDesign נקי (וקטורי, לא סרוק-יד) — שתי תיבות מלבניות עם שדה str מוצג בתוכן, וחץ הצבעה מהמשתנה ms לעצם הראשון.
ms --> [MyString | str: "babca"]
special(ms) --> [MyString | str: "bbaac"] (עצם חדש, לא אותו עצם)
ממש את הפעולה החיצונית special. יש לממש אותה באמצעות פעולות ממשק המחלקה MyString בלבד — אין להוסיף פעולות למחלקה MyString, גם לא get ו-set.
כל שאלות המבחן — 3 שאלות, כל אחת עם פתרון מלא
לפי סדר המבחן. לוחצים על שאלה ועוברים לעמוד שלה: השאלה המלאה, השרטוט, ופתרון מלא ומוסבר צעד אחרי צעד.
פתרו את המבחן המלא — עם משוב על כל תשובה
כל שאלות המבחן, פתרון מפורט, משוב אישי ומעקב התקדמות. בדיוק מה שצריך כדי לעבור.
התחילו לתרגל — חינם ←