להלן ריכוז כל החומר שהופיעו בבחינות בגרות משנת 2016 ועד היום - בבחינת הבגרות תכנות מונחה עצמים ומבנה נתונים (לפי התוכנית הישנה 899381)
להלן ריכוז כל החומר שהופיעו בבחינות בגרות משנת 2016 ועד היום - בבחינת הבגרות תכנות מונחה עצמים ומבנה נתונים (לפי התוכנית הישנה 899381)
עמוד 1 חומר הכנה למבחן הבגרות ONIM
ביבליוגרפיה: מקורות המידע שעליהם מבוססת חוברת זו הם תוכנית הלימודים של הפיקוח ומבחני הבגרות במדעי המחשב (שאלון 899381) משנים עברו:
מבחן בגרות 2016
מבחן בגרות 2017
מבחן בגרות 2018
מבחן בגרות 2019
מבחני בגרות 2020 מועד א' ומועד ב'
מבחני בגרות 2021 מועד א' ומועד ב'
מבחן בגרות 2022
מבחן בגרות 2023
מבחן בגרות 2024
שכיחות נושאי הלימוד במבחני הבגרות הקודמים (בשפת C#):
נושא הלימוד
שכיחות בבחינות הבגרות
הערות ודגשים מתוך הבחינות
מערכים (Arrays)
גבוהה מאוד (100%)
כמעט בכל בחינה יש שאלת פיתוח אלגוריתם או חיפוש במערכים.
תכנות מונחה עצמים: מחלקות
גבוהה מאוד (100%)
הגדרת כותרות של מחלקות, תכונות, פעולות בונות ופעולות Get/Set.
הורשה ופולימורפיזם (OOP)
גבוהה מאוד (100%)
הבנת היררכיה בין מחלקות, דריסת פעולות (override / virtual) ושרשור בנאים.
מעקב אחר קוד מחלקות
גבוהה מאוד (100%)
שאלות הדורשות מעקב אחרי יצירת עצמים (כולל Upcasting וזיהוי פלטים ותקינות קוד).
שרשראות חוליות (Node<T>)
גבוהה (90%)
בנייה, סריקה ומניפולציות על רשימות מקושרות, כולל רקורסיה.
תור (Queue<T>) ומחסנית (Stack<T>)
גבוהה (85%)
מימוש פעולות מבלי לשנות את המבנה המקורי של המחסנית/התור (שימוש במבנה עזר).
עצים בינאריים (BinNode<T>)
גבוהה (80%)
שימוש ברקורסיה לסריקת מסלולים בעץ בינארי וזיהוי מבנים בעץ.
עמוד 2 נושאי הלימוד הנדרשים לפי תוכנית משרד החינוך לשאלון 899381
בהתבסס על ניתוח המבחנים ודרישות הפיקוח, אלו נושאי הליבה שעליכם לדעת עבור הנושאים המבוקשים לקראת מבחן פתוח:
מבנה נתונים בשפת C#:
אוספים גנריים (Generics): הכרת טיפוסי הנתונים הגנריים תוך שימוש במחלקות המוכנות.
מערכים (Arrays): שליטה בסריקה, מעבר וחישוב נתונים על מערכים חד-ממדיים.
שרשרת חוליות (Node<T>): הכרת המבנה, הוספת איברים, מחיקת איברים, וסריקה במעבר לולאה מתחילת הרשימה ועד סופה (null).
מחסנית (Stack<T>): הכרת מודל LIFO (נכנס אחרון יוצא ראשון). פעולות דחיפה, שליפה והצצה.
תור (Queue<T>): הכרת מודל FIFO (נכנס ראשון יוצא ראשון). סריקת תור, הוספה והסרה של נתונים.
עץ בינארי (BinNode<T>): היכרות עם צמתים, עלים, יחס אבות ובנים, מסלולים בעץ ושימוש מקיף ברקורסיה על מנת לסרוק את העץ.
תכנות מונחה עצמים (OOP) בשפת C#:
מחלקות ועצמים (Classes & Objects): אופן הגדרת מחלקה, תכונות (Fields), בנאים (Constructors).
הרשאות גישה (Access Modifiers): הבדלים בין public, private, protected ואנקפסולציה.
הורשה (Inheritance): הרחבת מחלקת בסיס (על ידי שימוש בנקודתיים :) והפניה לבנאי של מחלקת האב דרך base.
רב-צורתיות (Polymorphism): הגדרת פעולות וירטואליות במחלקת האב (virtual) ודריסתן במחלקה הבן (override).
זיהוי והמרת טיפוסים (Casting): ביצוע Casting, ושימוש נכון באופרטור is לבדיקת סוג העצם בזמן ריצה.
תרשימי היררכיה ו-UML: הבנה וסרטוט של קשרי הורשה (מסומן על ידי חץ ריק) והכלה (מסומן על ידי מעוין) בין מחלקות שונות.
עמוד 3 תקציר חומר: מבני נתונים בשפת C# (דגשים למבחן פתוח)
1. חוליות – Node<T>
הגדרה: מבנה המכיל ערך חוליה (Value) והפניה לחוליה הבאה בתור (Next).
פעולות מרכזיות במחלקה: GetValue(), SetValue(x), GetNext(), SetNext(p), HasNext().
טיפ חשוב למבחן: כאשר יש לבצע לולאת סריקה יש להשתמש בתנאי לולאה כגון while (p != null). תמיד ודאו שאינכם ניגשים ל-p.GetNext() או p.GetValue() כאשר p הוא null, כדי למנוע קריסת קוד בשגיאת זמן ריצה (Null Reference).
2. מחסנית – Stack<T>
פעולות מרכזיות: Push(x) (דחיפת איבר), Pop() (שליפת איבר והחזרתו), Top() (הצצה לאיבר בראש מבלי לשלוף), IsEmpty().
טיפ חשוב למבחן: במשימות על מחסניות מבקשים כמעט תמיד לשמור על המבנה המקורי לאחר הסריקה. אל תשכחו ליצור מחסנית עזר זמנית, להעביר אליה את האיברים, ובסוף הפעולה להעביר אותם חזרה כדי להחזיר את המחסנית לקדמותה.
3. תור – Queue<T>
פעולות מרכזיות: Insert(x) (הכנסה לסוף התור), Remove() (שליפה מראש התור), Head() (הצצה לראש התור), IsEmpty().
טיפ חשוב למבחן: אפשר לשמור על מצב התור על ידי שימוש בתור עזר. שיטה נוספת וחסכונית היא ריצה באמצעות לולאה שאורכה כגודל התור (בשימוש בפעולת העזר הנתונה בחלק מהשאלות, כמו למשל Size()) – עבור כל איבר מבצעים תהליך שליפה, בדיקה וInsert חזרה לסוף התור.
4. עץ בינארי – BinNode<T>
פעולות מרכזיות: GetValue(), GetLeft(), GetRight(), HasLeft(), HasRight().
טיפ חשוב למבחן: מרבית השאלות על עצים דורשות פתרון של רקורסיה.
תנאי העצירה הנפוץ ביותר מתחיל בבדיקה אם הצומת ריק: if (tr == null) return ....
כדי לבדוק האם צומת הוא "עלה" (צומת חסר בנים), ניתן לכתוב: if (!tr.HasLeft() && !tr.HasRight()).
עמוד 4 תקציר חומר: תכנות מונחה עצמים (OOP) בשפת C#
1. מחלקות ובנאים (Constructors)
מחלקות משתמשות בתכונות private או protected לשמירה על כללי כימוס (הסתרת המידע).
הבנאי חייב להיות בעל שם זהה לשם המחלקה וללא טיפוס החזרה: public ClassName(...).
שימוש במילת המפתח this הכרחי כאשר רוצים לגשת לתכונה של העצם, והיא חשובה במיוחד כשיש כפילות בשמות המשתנים: this.x = x;.
2. ירושה (Inheritance) ב-C#
סימון ירושה מתבצע באמצעות נקודתיים: public class B : A.
זימון בנאי אב: כאשר מחלקה יורשת (מחלקה מורחבת) נבנית, היא לעיתים קרובות צריכה לשלוח משתנים לפעולה הבונה של מחלקת האב. הדבר נעשה בעזרת base: public B(int x) : base(x).
3. פולימורפיזם ודריסת פעולות
הגדרת פעולה במחלקת האב הניתנת לדריסה מתבצעת על ידי המילה השמורה virtual.
המחלקה היורשת דורסת ומעדכנת את התנהגות הפעולה תוך שימוש במילה override.
בתוך המחלקה היורשת, עדיין אפשר לבצע קריאה במקרה הצורך להתנהגות המקורית של מחלקת האב באמצעות base.FuncName().
4. המרות (Casting) וזיהוי טיפוסים למבחן (Type Checking) שאלות רבות עוסקות במעקב קוד המשלב פולימורפיזם וזיהוי בעיות. אלגוריתמים אלו דורשים התמצאות באיתור שגיאות זמן הידור מול זמן ריצה:
Downcasting והמרות מפורשות: קיימים מצבים בהם עצם מסוג "אב" מכיל בפועל אובייקט מסוג "בן" ויש צורך לגשת לתכונה של ה"בן". עושים זאת באמצעות Casting בסוגריים עגולים: ((B)obj).Bar().
בדיקה בטוחה לפני המרה תתבצע בדרך כלל בעזרת האופרטור is: if (obj is B).
שגיאת קומפילציה (זמן הידור): נגרמת אם מנסים להפעיל על מצביע מסוג מחלקת-אב, פעולה שלא קיימת בה אלא רק במחלקת-הבן (ללא Casting מפורש).
שגיאת זמן ריצה (Runtime Error): תקרה לרוב אם ביצענו Casting חוקי מבחינת הקומפיילר, אך בפועל (בזמן ריצת התוכנית) העצם לא היה מהטיפוס שניסינו להמיר אליו.
כלל ברזל בפולימורפיזם: אם פעולה הוגדרה כ-virtual באב ו-override בבן - קריאה לה דרך מצביע אב שבפועל מצביע לעצם "בן", תמיד תפעיל את המימוש העדכני של הבן!.
האם תרצה שאצור עבורך מתוך החומר כרטיסיות לימוד (Flashcards) אינטראקטיביות שיעזרו לתלמידים שלך לתרגל את כל המושגים לקראת המבחן?