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

בגרות מדעי המחשב 899271, קיץ 2021 מועד א'

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

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

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

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

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

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

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

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

שאלה 1

נתונה פעולה חיצונית נתונה delete (זמינה לשימוש, אין לממש) המוחקת חוליה עם ערך נתון משרשרת. נתונה גם המחלקה BiList - דו-שרשרת, ולה שתי תכונות: lst1 ו-lst2, שתיהן הפניות לתחילת שרשרת חוליות מטיפוס שלם. לפניך ממשק חלקי של המחלקה (בונה + addNum) - זמין לשימוש; אסור להוסיף לו get/set או פעולות נוספות.

// פעולה נתונה (זמינה לשימוש, אין לממש):
// public static Node<Integer> delete (int num, Node<Integer> lst)
// מוחקת את החוליה שבה הערך num משרשרת lst, ומחזירה מצביע לתחילת השרשרת.

// נתונה המחלקה BiList - דו-שרשרת, ולה שתי תכונות:
// lst1 - הפניה לתחילת שרשרת חוליות מטיפוס שלם
// lst2 - הפניה לתחילת שרשרת חוליות מטיפוס שלם
// לפניך ממשק חלקי (זמין לשימוש, אין להוסיף לו get/set או פעולות נוספות):
public BiList ()                              // בונה עצם עם שתי שרשראות ריקות
public void addNum (int num, int codeList)    // מוסיפה חוליה עם הערך num לסוף lst1 (אם codeList=1) או לסוף lst2 (אם codeList=2)

שרשרת lst ופיצולה ל-lst1 (המחצית הגדולה) ו-lst2 (המחצית הקטנה), כפי שמודגם בשאלון

lst:  88 -> -9 -> 0 -> 10 -> 6 -> 13 -> null
BiList result:
  lst1: 88 -> 10 -> 13 -> null
  lst2: -9 -> 0 -> 6 -> null
סעיף א

כתוב פעולה חיצונית ששמה generateBilist בשפת Java או GenerateBilist בשפת C#, המקבלת שרשרת חוליות lst - זוגית מספר החוליות, מטיפוס שלם - ומחזירה עצם מטיפוס BiList שבו: כל אחד מהמספרים שב-lst שייך לאחת מהשרשראות lst1 או lst2; כל המספרים ב-lst1 גדולים מכל המספרים ב-lst2; מספר החוליות בשתי השרשראות זהה. שים לב: אין להוסיף פעולות, גם לא get/set, למחלקה BiList.

public static BiList generateBilist (Node<Integer> lst)

שאלה 2

בשרשרת חוליות, "העברה מעגלית של n חוליות" היא העברת n החוליות האחרונות לתחילת השרשרת (בלי לשנות את סדר ההופעה של אותן n חוליות ביניהן). הנח: n≥0 ומספר החוליות בשרשרת גדול מ-n.

שרשרת lst לפני ואחרי העברה מעגלית של n=2 חוליות (דוגמת השאלון)

before: 5 -> 1 -> 2 -> 8 -> 4 -> null
after (n=2): 8 -> 4 -> 5 -> 1 -> 2 -> null
סעיף א

כתוב פעולה חיצונית ששמה move בשפת Java או Move בשפת C# המקבלת שרשרת חוליות lst מטיפוס שלם ומספר שלם n, ומחזירה את השרשרת lst לאחר "העברה מעגלית של n חוליות".

public static Node<Integer> move (Node<Integer> lst, int n)

סעיף ב

מהי סיבוכיות זמן הריצה של הפעולה שכתבת בסעיף א'? נמק.

שאלה 3

לפניך שתי פעולות רקורסיביות הפועלות על מערך arr מטיפוס שלם. סעיף א עוסק ב-sod1, וסעיף ב עוסק ב-sod2 (המשתמשת ב-sod1 מסעיף א).

public static boolean sod1 (int[] arr, int x, int i)
{
    if ( i == -1) return false;
    if (arr[i] == x) return true;
    return sod1(arr, x, i - 1);
}

public static boolean sod2 (int[] arr, int x, int i)
{
    if ( i == 0) return false;
    if (sod1(arr, x - arr[i], i - 1)) return true;
    return sod2(arr, x, i - 1);
}

המערך הנתון בשני הסעיפים

a: index 0..4 = [5, 4, 15, 12, 2]
סעיף א1

כתוב את הערך המוחזר בעבור זימון הפעולה sod1(a, 8, a.length-1) והמערך a שלפניך. עליך להראות מעקב.

סעיף א2

בעבור מערך כלשהו a ומספר x, מהי מטרת הפעולה sod1(a, x, a.length-1)?

סעיף א3

מהי סיבוכיות זמן הריצה של הפעולה sod1? נמק.

סעיף ב1

כתוב את הערך המוחזר בעבור זימון הפעולה sod2(a, 16, a.length-1) והמערך a שלפניך. עליך להראות מעקב (בסעיף זה, אין צורך לבצע מעקב אחר הפעולה sod1).

סעיף ב2

מהי מטרת הפעולה sod2?

סעיף ב3

מהי סיבוכיות זמן הריצה של הפעולה sod2? נמק.

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

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

  1. שאלה 4

    שאלה — חלוקת שרשרת חוליות לשתי שרשראות לפי גודל (BiList)

  2. שאלה 5

    שאלה — העברה מעגלית של n חוליות מסוף שרשרת להתחלתה

  3. שאלה 6

    שאלה — מעקב רקורסיבי אחר sod1 (חיפוש) ו-sod2 (זוג סכום)

  4. שאלה 7

    שאלה — השוואת תורים - זהות מדויקת ודמיון מעגלי

  5. שאלה 10

    שאלה — גרף "מתחלק" (דו-צדדי) - זיהוי ומינימום קשתות להסרה

  6. שאלה 11

    שאלה — גרף מכוון: רכיבי קשירות חזקים, מינימום קשתות, ודייקסטרה

  7. שאלה 12

    שאלה — שפה L מעל {a,b,c} - דוגמאות והוכחת רגולריות

  8. שאלה 13

    שאלה — שתי שפות מעל {a,b,c}: L1 (יחס m=2k) ו-L2 (זוגיות משותפת)

  9. שאלה 14

    שאלה — יומן אירועים (Diary/Event/Meeting/PhoneCall/Task) - הכללה, allCalls ו-match פולימורפי

  10. שאלה 15

    שאלה — עומס יתר מול דריסה - מעקב תקינות ופלט ב-15 קטעי קוד

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

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

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

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

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

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