מבחן 2 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדיקות אחרונות לפני מסירה )עמודים 8-( מבנה השאלון פרק ראשון - עיצוב תוכנה פרק שני - מודלים חישוביים 2 שאלות )בחירה מ- ( לכל שאלה 25 נקודות 2 שאלות )בחירה מ - ( לכל שאלה 25 נקודות סה"כ 5 נקודות סה"כ 5 נקודות תוכן עניינים של פתרון המבחן פרק ראשון - עיצוב תוכנה... שאלה : עצים [ ניתוח, פיתוח פעולות ]... ] טיפוסים [ מימוש מחלקה ופעולות שאלה 2: שאלה 3: רשימות, מערך חד ממדי [ כתוב פעולה ]...... שאלה : מחסנית, תור [ ניתוח ומעקב ] פרק שני - מודלים חישוביים שאלה 3: טיורינג [ בניית מכונת טיורינג [... שאלה : אוטומט סופי דטרמיניסטי, שפות [ השלמת אוטומט, ניתוח שפות ]... שאלה 5: אוטומט מחסנית [ בנה אוטומט ]... שאלה : אוטומט מחסנית [ בניית אוטומט מחסנית ]... 78
פתרון שאלה נושאים מרכזיים: עצים סוג השאלה: ניתוח, כתוב פעולה א. מאוזן / לא מאוזן.v.iv.iii.ii.i הסבר מאוזן לא מאוזן הערך המוחלט של הפרש הגובה בין תת העץ הימני לתת העץ השמאלי של x הוא 2. לא מאוזן הערך המוחלט של הפרש הגובה בין תת העץ הימני לתת העץ השמאלי של x הוא 2. מאוזן מאוזן ב. פעולה שמקבלת עץ בינארי ומחזירה אם הוא עץ בינארי מאוזן, אחרת מחזירה פעולת עזר לחישוב גובה של עץ // (t public static int H(BinTreeNode<int> הפעולה מקבלת עץ בינארי // הפעולה מחזירה את גובה העץ // if (t == null) return -; return Math.Max(H(t.GetLeft(),H(t.GetRight())))+; public static bool Balance(BinTreeNode<int> t) הפעולה מקבלת עץ בינארי // הפעולה מחזירה אמת אם העץ הוא מאוזן או שקר אחרת // if (t == null) return ; בדיקה האם הערך המוחלט של ההפרש בין // (Math.Abs(H(t.GetLeft())-H(t.GetRight()))>) if תתי return ; העצים אינו עולה על // return Balance(t.GetLeft())&&Balance(t.GetRight()); 79 הכנה לבגרות 25 בעיצוב +מודלים חלק ד: פתרון בגרויות כל הזכויות שמורות ל 'מבט לחלונות'
דרך ב: using System; public class Collec רשימה של מספרים שלמים // ;l private List<int> פעולה בונה ריקה // Collec() public this.l = new List<int>(); public Collec(int n) // this.l = new List<int>(); this.l.insert(null,n); פתרון שאלה 2 נושאים מרכזיים: טיפוסים סוג השאלה: מימוש מחלקות ופעולות פעולה בונה שנייה public bool Add(int num) Node<int> p = this.l.getfirst(); while (p!=null) if (p.getinfo()>num) return ; p = p.getnext(); return ; public int Small() Node<int> p = this.l.getfirst(); if (p == null) return -; int min = p.getinfo(); p = p.getnext(); while (p!=null) if (p.getinfo()<min) min = p.getinfo(); p = p.getnext(); return min; public int Smallest(Collec c) return Math.min(Small(),c.Small()); דרך א: using System; public class Collec רשימה של מספרים // list; private List<int> הערך המקסימלי ברשימה // max; private int הערך המינימלי ברשימה // min; private int פעולה בונה ריקה // Collec() public this.list = new List<int>(); this.max = -; this.min = -; פעולה בונה שנייה // n) public Collec(int list = new List<int>(); list.insert(null,n); max = n; min = n; public bool Add(int n) פרמטר לא חוקי // ; if(n<=) return במקרה שהרשימה ריקה // (-== if(min min = n; if (n>= max) list.insert(null,n); max = n; return ; return ; public int Small() return this.min; public int Smallest(Collec c) return Math.Min(this.min, c.small()); 8
פתרון שאלה 3 נושאים מרכזיים: רשימות, מערך חד-ממדי סוג השאלה: כתוב פעולה הפעולה החיצונית הבאה מקבלת עצם מטיפוס School ומחזירה מערך חד-ממדי בגודל 2 מטיפוס.List<Student> כל תא במערך מייצג חודש בשנה: תא מייצג את ינואר, תא מייצג את פברואר וכך הלאה, עד תא שמייצג את דצמבר. כל תא מכיל רשימה של כל התלמידים מכל השכבות שנולדו בחודש זה, בלי חשיבות לסדר. using System; public class q3 public static List<Student>[] BirthMonths(School s) List<Student>[] l = new List<Student>[2]; for (int i= ; i<2 ; i++) יצירת רשימת תלמידים ריקה בכל תא במערך // List<Student>(); l[i]= new List<Student>[] ls = s.getar(); הכנסת Node<Student> p; int m; for (int i= ; i<ls.length ; i++) שמירת התלמיד הראשון בכל שכבה לצורך מעבר על כל // GetFirst(); p = ls[i]. התלמידים // (p!=null) while m = p.getinfo().getbirthday().getmonth(); התלמיד לרשימה במערך במקום המתאים // l[m-].insert(null,p.getinfo()); p = p.getnext(); return l; 8 הכנה לבגרות 25 בעיצוב +מודלים חלק ד: פתרון בגרויות כל הזכויות שמורות ל 'מבט לחלונות'
פתרון שאלה נושאים מרכזיים: רשימות, מערך חד-ממדי סוג השאלה: מעקב וניתוח נתוני השאלה: נתונה הפעולה What המקבלת רשימה lst של מספרים שלמים 3 lst: -2-987 -3 5 null x = -2 2 return + lst: - 987-3 5 null x = 987 return + lst: -3 5 null x = return + lst: - 3 5 null x = -3 return + lst: 5 null x = 5 return lst null return ( הערך המוחזר: 3 2( הפעולה מחזירה את מספר האיברים השליליים ברשימה. 3( אחרי ההחלפה של ההוראה המסומנת ב- * להוראה :return i. הפעולה תחזיר את אורך רצף השליליים בתחילת הרשימה, אם האיבר הראשון ברשימה אי-שלילי, הפעולה מחזירה..ii הרשימה lst תכיל: את כל האברים מלבד רצף השליליים שבתחילת הרשימה והאיבר החיובי הראשון שאחרי הרצף. אם האיבר הראשון ברשימה חיובי, הפעולה תבטל אותו. 82
התנאי st.isempty() x -2-987 -3 5 התנאי x>= st -2>-987>>-3>5> -987>>-3>5> >-3>5> -3>5> 5> מעקב טבלאי הערך המוחזר זימון הפעולה מספר זימון 2 3 5 return ; what(st); return +what(st); return +what(st); return what(st); return +what(st); return what(st); 3 ב. נתונים הפעולה והמחסנית הבאים: 83 הכנה לבגרות 25 בעיצוב +מודלים חלק ד: פתרון בגרויות כל הזכויות שמורות ל 'מבט לחלונות'
8 מעקב אחר הפעולה sum בעבור המחסנית s הערך שמוחזר 8 ) s 2 33 x = 2 3 return 2 + s 33 x = 3 return s 33 x = 33 3 return s x = return + s x = return + ראש התור q qr q תאור התור לפני הזימון ואחרי הזימון s 2 33 לפני הזימון: s 2 3 23 אחרי הזימון: )2 s x = return + s return qr 8 3 8
מעקב טבלאי: הערך המוחזר זימון הפעולה מספר זימון התנאי st.isempty() x התנאי x%== s 2 33 ; 2 33 return 2+; 2 33 return ; 3 33 return ; return +; 5 return +; return +; 7 return ; 8 85 הכנה לבגרות 25 בעיצוב +מודלים חלק ד: פתרון בגרויות כל הזכויות שמורות ל 'מבט לחלונות'
פתרון שאלה 3 נושאים מרכזיים: טיורינג סוג השאלה: בניית מכונת טיורינג מכונת טיורינג שעל סרט הזיכרון שלה כתובה המילה w מעל הא"ב a. המכונה תכתוב על הסרט מתחילתו את המילה.w?w אם w היא המילה הריקה, המכונה תכתוב על הסרט מתחילתו את המילה?. לדוגמה: ימין, x a / q /? שמאל, שמאל,? /? שמאל, a a / q ימין, a x / ימין,? /? ימין, a a / q 2 / a ימין, / שמאל, /? שמאל, q 3 הסבר הפתרון הסבר: בתחילה כותבים על כל x a, עד לסיום המילה, ושם כותבים?. חוזרים שמאלה עד שמוצאים x, הופכים אותו חזרה ל- a, ואז מדלגים ימינה על כל המילה עד שמגיעים ל- וכותבים עליו a. חוזרים שוב שמאלה עד ל- x הכי ימני וחוזר חלילה, עד למצב שאין יותר x, ואז מגיעים ל-. זהו המצב המקבל. כמו-כן, יש מעבר מ q למצב מקבל עבור המילה ריקה )מילה המתחילה ב- ( ובה כותבים על ה- הראשון?. 8
פתרון שאלה נושאים מרכזיים: אוטומט סופי דטרמניסטי, שפות רגולריות סוג השאלה: השלמת אוטומט, הוכחת רגולריות א. השלמת אוטומט q q 3 q 2 q q q 5 L q ב. כך ש: ו- L, 2 הן שפות רגולריות, ו- L 3 היא שפה לא רגולרית, L = a n b m n, m L 2 = a n b m n, m L 3 = a n b n n דוגמאות לשפות... דוגמה לשלוש שפות L, L 2, L 3 ומתקיים L 3 L 2 =L דוגמה לשלוש שפות L, L 2, L 3 ומתקיים L 3 L 2 =L כך ש: ו- L, 2 הן שפות רגולריות, ו- L 3 היא שפה לא רגולרית, L = ab L 2 = ab L 3 = a n b n n a n b n n ab = ab L ) )2 פתרון שאלה 5 נושאים מרכזיים : אוטומט סופי דטרמיניסטי, שפות סוג השאלה: השלמת אוטומט, ניתוח שפות q q א. השלמת אוטומט q ב.,j < i עבור i x( w = x x מילה מעל הא"ב ), מתקיימים תנאים אלו. ג. בהינתן בהינתן,j i עבור w = b m c m+i m מתקיימים תנאים אלו. 87 הכנה לבגרות 25 בעיצוב +מודלים חלק ד: פתרון בגרויות כל הזכויות שמורות ל 'מבט לחלונות'
פתרון שאלה נושאים מרכזיים : אוטומט מחסנית סוג השאלה: בנה אוטומט א. ב. המילה הקצרה ביותר בשפה L=a i-j b i c j j, i - j היא,bc כאשר,j= i= ולכן גם i- a. לפיכך, לא יהיו מופעים של =j, בניית אוטומט מחסנית דחוף a,s / A שלוף b,a / A דחוף a,a / A q שלוף b,a / A דחוף a, / S q q 2 שלוף b,s / S דחוף b, / S שלוף b,s / S q 3 c,s / S שלוף q דחוף b, / S דחוף b,s / A דחוף b,a / A c,a / A שלוף c,a / A שלוף q 5 שלוף c,a / A q הסבר הפתרון הסבר: תחילה, על המופע הראשון של a דוחפים למחסנית את האות S ועל כל מופע של a הבא אחריו דוחפים למחסנית את האות A. במקרה זה, המחסנית מונה את הערך של.i-j בהינתן מופע של b, שולפים מהמחסנית את כל אותיות ה- A על כל מופע של b עד למצב בו האות S נמצאת בראש המחסנית ושולפים גם אותה. על כל מופע נוסף של b, דוחפים את האות S למחסנית ולאחריו את האות A כמספר מופעי ה- b. בהינתן מופע של c, על כל מופע של c שולפים את כל אותיות ה- A מהמחסנית למצב בו האות S נמצאת בראש המחסנית ושולפים גם אותה. במצב זה המילה מתקבלת בשפה. כמו כן, יש מעבר מ- למצב מקבל עבור המילה הקצרה ביותר.bc 88