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

בגרות מדעי המחשב 899271, קיץ 2026 מועד חלופי

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

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

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

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

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

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

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

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

שאלה 1

נתונה המחלקה DigitCount, ולה שתי תכונות:

התכונההסבר
private int digit;ערך ספרה (0-9)
private int count;מספר מופעים של הספרה

הניחו שיש פעולות get ו-set לתכונות המחלקה.

כמו כן קיימת במחלקה הפעולה הבונה:

public DigitCount(int digit, int count)
{
    this.digit = digit;
    this.count = count;
}

דוגמה: עבור num=3389920 וגם num=9389302 תוחזר הרשימה (head->tail)

head -> [digit=9,count=2] -> [digit=8,count=1] -> [digit=3,count=2] -> [digit=2,count=1] -> [digit=0,count=1] -> null
סעיף א

ממשו את הפעולה שלפניכם. הפעולה מקבלת מספר שלם חיובי num הגדול מ-0 ומחזירה רשימה מקושרת מסוג DigitCount. עבור כל ספרה (0-9) במספר num יישמר ברשימה עצם מן המחלקה DigitCount שערכיו הספרה עצמה ומספר המופעים שלה במספר num. הרשימה תורכב לפי הכללים: הרשימה ממוינת לפי ערך הספרות בסדר יורד (מהגדולה לקטנה); כל ספרה תופיע פעם אחת בלבד; רק הספרות שמופיעות במספר num יופיעו ברשימה.

public static Node<DigitCount> buildList (int num)

סעיף ב

ממשו את הפעולה שלפניכם. הפעולה מקבלת מספר שלם num הגדול מ-0 ומחזירה את המספר הגדול ביותר שניתן ליצור באמצעות הספרות במספר num, לפי מספר המופעים של כל ספרה. הערה: ניתן להשתמש בפעולה שכתבתם בסעיף א. דוגמה: עבור num=3389920 וגם num=9389302 הפעולה תחזיר את המספר 9983320 -- המספר המקסימלי שניתן ליצור באמצעות שינוי סדר הספרות במספר num.

public static int buildMaxNum (int num)

שאלה 2

נתונה המחלקה Cube - קוביה, ולה שתי תכונות:

  • size – גודל הקוביה בסמ"ר, מטיפוס מספר שלם.
  • type – סוג הקוביה, מטיפוס תו.

הניחו שיש פעולות get לתכונות המחלקה.

נתונה המחלקה Box - קופסה, ולה שתי תכונות:

  • cubes - מערך בגודל 3 מטיפוס Cube, בו שומרים את הקוביות. ניתן להכניס למערך קוביות או שכולן מאותו סוג או שכולן מאותו גודל.
  • count – כמות הקוביות במערך.

לפניכם פעולות המחלקה Box. ניתן להשתמש בפעולות ללא צורך במימוש:

  • public Box() { cubes = new Cube[3]; count = 0; } — פעולה בונה.
  • public boolean add(Cube c) — הפעולה מקבלת עצם מסוג Cube. אם ניתן להכניס את העצם למערך (בהתאם לדרישות לעיל), הפעולה מכניסה אותה למקום הראשון שפנוי במערך (ומעדכנת את ערך המשתנה count) ומחזירה true. אחרת (אם המערך מלא או שהעצם אינו עונה על הדרישות לעיל), הפעולה מחזירה false ללא שינוי ערכי המערך.

דוגמה לתור q (מראש התור עד סופו) לסעיף ב

ראש התור: Cube(1,'a'), Cube(2,'a'), Cube(2,'b'), Cube(1,'a'), Cube(1,'a'), Cube(1,'a'), Cube(3,'b'), Cube(3,'a') :סוף התור
סעיף א

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

public boolean isPerfect ()

סעיף ב(1)

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

דוגמה: עבור התור שבשאלה, הפעולה תחזיר עצם מסוג Box ובו הערך של count הוא 2 והמערך cubes הוא: Cube(1,'a'), Cube(2,'a'), null. מצב התור בסוף הפעולה הוא: ראש התור: Cube(2,'b'), Cube(1,'a'), Cube(1,'a'), Cube(1,'a'), Cube(3,'b'), Cube(3,'a') :סוף התור. הסבר: הסוג של שתי הקוביות הראשונות זהה ולכן ניתן להכניסן לקופסה. הקובייה השלישית מסוג שונה ולכן לא נכנסת לקופסה.

public static Box packBox (Queue<Cube> q)

סעיף ב(2)

כתבו פעולה חיצונית בשם packAll המקבלת תור q של עצמים מסוג Cube. הפעולה: תחזיר תור מסוג Box לאחר הכנסת כל הקוביות לקופסאות לפי הכללים לעיל; תדפיס perfect לאחר הכנסת כל הקוביות לקופסאות, אם קיימת לפחות קופסה אחת "מושלמת", אחרת תדפיס not perfect.

דוגמה: עבור התור מסעיף א הפעולה תחזיר את התור שלפניכם ותדפיס perfect: ראש התור: Box(cubes: Cube(1,'a'), Cube(2,'a'), null; count = 2), Box(cubes: Cube(2,'b'), null, null; count = 1), Box(cubes: Cube(1,'a'), Cube(1,'a'), Cube(1,'a'); count = 3), Box(cubes: Cube(3,'b'), Cube(3,'a'), null; count = 2) :סוף התור. הסבר: בהתאם לדרישות האמורות לעיל, יש צורך בארבע קופסאות. הקופסה השלישית בתור היא קופסה מושלמת.

public static Queue<Box> packAll (Queue<Cube> q)

שאלה 3

לפניכם עץ בינארי ששורשו root, המכיל מספרים שלמים. יש לבצע מעקב אחרי הזימונים something(root) (ולהסביר מה מבצעת הפעולה בכלל) ואחרי sod(root) עם העץ הנתון.

public static int something (BinNode<Integer> root) {
    if (root == null)
        return 0;
    if (root.getLeft() == null && root.getRight() == null)
        return root.getValue ();
    int ans1 = something(root.getLeft());
    int ans2 = something(root.getRight());
    if (ans1 > ans2)
        return ans1 + root.getValue();
    return ans2 + root.getValue();
}

העץ הבינארי הנתון (root ומטה)

root=-10; left(-10)=7 [left(7)=6, right(7)=-3 [left(-3)=-5, right(-3)=20]]; right(-10)=10 [right(10)=12]
סעיף א

נתונה הפעולה something (קוד מלא נתון). (1) מהו הערך שתחזיר הפעולה עבור הזימון something(root) עם העץ הנתון? יש להציג מעקב על ביצוע הפעולה. (2) הסבירו מה מבצעת הפעולה עבור כל עץ של מספרים שלמים.

public static int something (BinNode&lt;Integer> root) { if (root == null) return 0; if (root.getLeft() == null && root.getRight() == null) return root.getValue (); int ans1 = something(root.getLeft()); int ans2 = something(root.getRight()); if (ans1 > ans2) return ans1 + root.getValue(); return ans2 + root.getValue(); }

סעיף ב

נתונה הפעולה sod (קוד מלא נתון), המקבלת עץ בינארי של מספרים שלמים, בתחום הערכים -100 עד 100. מהו הערך שתחזיר הפעולה עבור הזימון sod(root) עם העץ הנתון לעיל? יש להציג מעקב על ביצוע הפעולה. אין צורך לבצע מעקב אחרי הפעולה something אלא רק לציין את הערך שחוזר מהפעולה.

public static int sod (BinNode&lt;Integer> root) { if (root == null) return -101; int x = something (root); int left = sod (root.getLeft()); int right = sod (root.getRight()); return Math.max (x, Math.max (left, right)); }

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

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

  1. שאלה 1

    DigitCount -- רשימה מקושרת של ספרות (buildList / buildMaxNum)

  2. שאלה 2

    Cube / Box -- אריזת קוביות מתור (isPerfect / packBox / packAll)

  3. שאלה 3

    עץ בינארי -- something / sod (מעקב)

  4. שאלה 4

    גרף לא מכוון — קשירות, מעגל, דו-צדדיות

  5. שאלה 5

    DFS/BFS ומסלולים קצרים ביותר (דייקסטרה)

  6. שאלה 6

    טענות על גרפים ו"עץ רדוד" / "גרף BFS רדוד"

  7. שאלה 7

    שפות רגולריות — תכונות סגירות + אוטומט מחסנית

  8. שאלה 8

    רגולריות של שפות + מכונת טיורינג חלקית

  9. שאלה 9

    אוטומט סופי חלקי + שפה a^(2m) b^(m-1) c

  10. שאלה 10

    ירושה: המחלקות BB ו-CC — תרשים עצמים ומימוש הפעולות foo ו-goo

  11. שאלה 11

    Game / ComputerGame / VRGame / BoardGame + Store

  12. שאלה 12

    E / F / G / H - ירושה, פולימורפיזם, שדה סטטי (מעקב)

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

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

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

לא עוד דף פתרונות — כאן מתרגלים, נבחנים ומשתפרים

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

וכמובן — פתרון מלא ומוסבר לכל שאלה מהבגרויות האמיתיות. מתחילים לתרגל — חינם, בלי כרטיס ←