מדעי המחשב שאלון - 899205 :תשע"ה 2015 - עיצוב תכנה 1 מדעי המחשב ב' פתרון בחינת הבגרות פרק א -עיצוב תכנה שאלה 1 i - false א. (F and T) and T = F (0*1) * 1) = 0 ii - true (T and F) OR ( F OR T) = T = ) ( 1 * 0 ) + (0 + 1 0 + 1 = 1 iii - true (T and F) OR (( T AND T) AND T) = T = ) ( 1 * 0 ) + (( 1 * 1 ) * 1 0 + 1 *1 = 0 + 1 = 1 1 True 0 False * AND + OR עץ-ביטוי-בוליאני )(t אם עלה? )(t אם ערך העלה שווה Tהחזר אמת אחרת -החזר שקר אחרת - אם ערך הצומת "וגם" החזר עץ-ביטוי-בוליאני (בן שמאלי של )tוגם עץ-ביטוי-בוליאני (בן ימני של )t אחרת -החזר עץ-ביטוי-בוליאני (בן שמאלי של )tאו עץ-ביטוי-בוליאני (בן ימני של )t blog.csit.org.il הילה קדמן עיצוב תכנה 2 מדעי המחשב 2015 - תשע"ה- 899205 :שאלון Java: C#: //--- פעולה המחזירה אמת אם הצומת הוא עלה ושקר אחרת--public static bool IsLeaf(BinTreeNode<string> t) { if (t == null) return false; if (t.GetLeft() == null && t.GetRight() == null) return true; return false; } //--- פעולה המחזירה את ערך עץ הביטוי הבוליאני--public static bool BoolTreeExp(BinTreeNode<string> bt) { if (IsLeaf(bt)) { if (bt.GetInfo() == "T") // if (bt.GetInfo().Equals("T")) return true; return false; } if (bt.GetInfo() == "AND") return BoolTreeExp(bt.GetLeft()) && BoolTreeExp(bt.GetRight()); return BoolTreeExp(bt.GetLeft()) || BoolTreeExp(bt.GetRight()); } הילה קדמן blog.csit.org.il מדעי המחשב שאלון - 899205 :תשע"ה 2015 - 3 עיצוב תכנה פתרון Javaלפי התכנית החדשה: פתרון C#לפי התכנית החדשה -נכתב ע"י ראמי ג'באלי: blog.csit.org.il הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - עיצוב תכנה 4 שאלה 2 א. ()1 עבור העץ הנתון מחזירה הפעולה אמת הפעולה מחזירה אמת אם כל צומת בענף השמאלי של העץ שווה בערכו לצומת באותה רמה בענף הימני של העץ ,ושקר אחרת. ()2 עבור העץ שלהלן תחזיר הפעולה אמת עבור העצים שלהלן תחזיר הפעולה שקר תנאי :2חסר בן שמאלי ל8 - בענף השמאלי blog.csit.org.il תנאי :2חסר בן ימני ל8 - בענף הימני הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - ב. עיצוב תכנה 5 ()1 ()2 3 3 1 0 12 8 7 5 a ]a[i]>a[i+1 ]a[i+1 ]a[i i<3 i n לא 7 5 כן 0 4 לא 8 7 כן 1 לא 12 8 כן 2 לא 3 סיבוכיות הפעולה ) O(nכי נוגעים בכל אחד מ n-תאי המערך בדיוק פעם אחת שלוש השורות שלהלן מבצעות החלפה בין ערכי התאים שבמקומות iו i+1 -במערך ()3 ]a[i] = a[i] + a[i+1 ]a[i+1] = a[i] - a[i+1 ]a[i] = a[i] - a[i+1 a ]a[i i<3 i n תאים מוחלפים ]a[i+1] a[i]>a[i+1 כן 8 12 כן 0 4 לא 12 8 כן 0 כן 7 12 כן 1 כן 7 8 כן 0 8 7 כן 0 8 כו 1 כן 2 0 3 2 1 0 5 7 8 12 5 7 12 8 5 7 12 8 ]a[1] , a[2 5 12 7 8 ]a[0] , a[1 5 12 8 7 לא 5 12 8 7 לא 12 5 12 8 7 כן 5 12 12 5 8 7 לא 8 7 כן 12 5 8 7 ]a[1] , a[2 כן 5 8 כן 1 12 8 5 7 ]a[0] , a[1 כן 5 7 כן 0 12 8 7 5 לא 7 5 כן 0 לא 8 7 כן 1 לא 12 8 כן 2 לא 3 ]a[0] , a[1 ]a[2] , a[3 המערך בסיום: 12 8 7 5 סיבוכיות הפעולה ). O(n3 עבור כל אחד מ n -האיברים הלא ממויינים, מבצעים מיון בסד"ג ).O(n2 ). f(n) = n * n2 O(n3 blog.csit.org.il החלפת האיבר במקום ה k -גוררת מיון מחודש של כל האיברים שלפניו ביעילות ריבועית (כמו מיון בועות): )O(n3 12 + 22 + 32 + … + n2 ½( 12 + n2)*n הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - שאלה 3 blog.csit.org.il 6 עיצוב תכנה : Java הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - blog.csit.org.il 7 עיצוב תכנה הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - 8 עיצוב תכנה פתרון Javaלפי התכנית החדשה: blog.csit.org.il הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - שאלה 3 blog.csit.org.il 9 עיצוב תכנה C# : הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - blog.csit.org.il 10 עיצוב תכנה הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - 11 עיצוב תכנה פתרון C#לפי התכנית החדשה -נכתב ע"י ראמי ג'באלי: blog.csit.org.il הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - blog.csit.org.il 12 עיצוב תכנה הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - שאלה 4 blog.csit.org.il 13 עיצוב תכנה :Java הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - שאלה 4 blog.csit.org.il 14 עיצוב תכנה C#: הילה קדמן עיצוב תכנה מדעי המחשב 2015 - תשע"ה- 899205 :שאלון 15 'פרק ב MOV MOV AGAIN: MOV CMP JNZ MOV INC NEXT: LOOPZ SHOOV: MOV CMP JNZ MOV INC NEXT1: LOOP NOP BX,3000H CX,5 מערכות מחשב ואסמבלר רונית מרציאנו:הפתרון לפרק זה נכתב ע"י AL,CL AL,3 NEXT [BX],CL BX 5 תרגיל AGAIN AL,CL AL,3 NEXT1 [BX],CL BX SHOOV MOV MOV AGAIN: MOV CMP BX,3000H CX,5 MOV INC NEXT: LOOPZ SHOOV: MOV CMP JNZ MOV INC NEXT1: LOOP NOP [BX],CL BX AL,CL AL,3 AGAIN AL,CL AL,3 NEXT1 [BX],CL BX SHOOV BX CX AX BH BL CH CL AH AL 30 00h 05h 05h 30 01h 04h 04h 03h 03h 02h 02h 01h 01h 00h 03h 3000h הילה קדמן תוכן הזיכרון כתובת 3001h BX CX AX .ב BH BL CH CL AH AL 30 00h 05h 05h 30 01h 04h 04h 30 02h 03h 03h 02h 02h 01h 01h 00h תוכן הזיכרון 05h 03h 3000h MOV BX,3000H MOV CX,5 AGAIN: MOV AL,CL CMP AL,3 JNZ NEXT MOV [BX],CL INC BX NEXT: LOOPZ AGAIN SHOOV: MOV AL,CL CMP AL,3 JNZ NEXT1 MOV [BX],CL INC BX NEXT1: LOOPNE SHOOV NOP .א 3001h 3002h BX CX AX BH BL CH CL AH AL 30 00h 05h 05h 30 01h 04h 04h 03h 03h 02h 02h 01h 01h 00h .ג תוכן הזיכרון 03h 3000h כתובת 3001h כתובת blog.csit.org.il עיצוב תכנה מדעי המחשב 2015 - תשע"ה- 899205 :שאלון 16 6 תרגיל הוראות MOV AL,3H CMP AL,3H CMP AL,2H CMP AL,5H XOR AL,AL DEC AL MUL BL CF + )2( XOR XOR MOV XOR SHOOV : PUSH MOV PUSH CALL POP TEST JZ INC CONT: INC POP LOOP SI,SI ;index in ARR DX,DX ; counter CX,5 ; lenght of ARR AX,AX MOV CX,DX ; answer in cx ZF + + - .א SF + + + (1) .ב CX ; using loop twice AL,ARR[SI] ; next number from ARR AX ;ax push to stack - parameter PEULA AX ; get answer from stack AX,1 ; check answer CONT DX SI CX SHOOV PEULA PROC MOV BP,SP MOV AX,[BP+2] MOV CX,8 ; number is between 0-255 8bits sufficient XOR BX,BX ; counter AGAIN: SHR AL,1 ADC BL,0 LOOP AGAIN MOV [BP+2],BX RET ENDP הילה קדמן blog.csit.org.il מדעי המחשב שאלון - 899205 :תשע"ה 2015 - עיצוב תכנה 17 תרגיל 7 א. ()1 שגוי ()2 תקין בשיטת המשלים ל , 2באמצעות 8ביטים אפשר לייצג מספים בין -128ל .127+ ()3 שגוי הסבר: אפשר להתייחס לכתובת בזיכרון בתוך [ ] (סוגרים מרובעים) רק עם האוגרים .BX, DI ,SI ()4 שגוי הסבר :ההוראה CALLמשנה את ,SPדוחפת את כתובת החזרה למחסנית ולכם SPמשתנה. ההוראה CALLלא משנה את SI ()5 תקין ההוראה CALLמגדילה את ערכו של SP הסבר :ההוראה CALLמוציאה את המילה האחרונה מהמחסנית , POPומשנה את הIP לכתובת שהוצאה מהמחסנית .הפקודה POPמגדילה את SPב – .2 ()6 שגוי הסבר :ההוראה RETמשנה את ערכו של ,IPלא תמיד דווקא מקטינה. ()7 שגוי הקטע הנ"ל יגרום ללולאה ׁ 4096פעמים. CXמקבל את הערך 0ויורד ל -1ו -2ו -3וכו ,עד שחוזר חזרה להיות 0ומפסיק. ()8 תקין BX,BX ()9 תקין MOV CL,8 SHR DL,CL הסבר shr :מבצע הזזה ציקלית ימינה ומכניס 0מצד שמאל ,אז 8פעמים הזזה ציקלית והכנסת אפסים תאפס את אוגר DL ()10 NUM1 DB 100 שגוי מעל ( NUM2 DB -156 )-128 PUSH AL POP AH ]BX,[AX blog.csit.org.il הסבר: אפשר לדחוף למחסנית רק מילים MOV XORמאפסת את אוגר BX הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - 18 עיצוב תכנה ב. AL,-1 DL,00001111B CL,4 AL,DL AL,CL ()1 AX AH AL 0FFh 0Fh 00h CX CH CL DX DH DL 04h 0Fh 0Fh MOV MOV MOV AND SHR הקטע מאפס את AL ()2 תקין MOV DL,00001111B שגוי MOV DL,00001111 הסבר :הפקודה בצורה כזו אומרת כי יש להכניס את המספר העשרוני 1111לאוגר DLואוגר זה בגודל בית יכול להכיל עד 255בעשרוני. blog.csit.org.il הילה קדמן עיצוב תכנה 19 מדעי המחשב 2015 - תשע"ה- 899205 :שאלון 8 שאלה ARR DB 03H,08H,0CH,01H,04H, 09H,3H LEN = $-ARR LEA PUSH MOV PUSH CALL POP POP MOV LEA PUSH MOV PUSH CALL POP POP SI,ARR ; array address SI AX,LEN ; array lenght AX FINDSECPND ; find big and small DI AX [DI],AH ; mov small on big SI,ARR SI AX,LEN AX FINDSECPND ; find big again (and small) DI AX MOV MOV INT DL , AL ; print answer AH , 2 21H FINDSECPND PROC ; find big and small MOV MOV MOV MOV MOV DEC SHOV: INC CMP JL MOV MOV MOVON: CMP JG MOV CONT: LOOP MOV MOV RET ENDP הילה קדמן BP,SP BX,[BP+4] CX,[BP+2] AL,[BX] AH,[BX] CX BX [BX],AL MOVON AL,[BX] DI,BX [BX],AH CONT AH,[BX] SHOV [BP+2],DI [BP+4],AX blog.csit.org.il מדעי המחשב שאלון - 899205 :תשע"ה 2015 - 20 עיצוב תכנה פרק ב' מבוא לחקר ביצועים שאלה 9 שאלה 10 שאלה 11 שאלה 12 blog.csit.org.il הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - עיצוב תכנה 21 פרק ב' מודלים חישוביים הפתרון לפרק זה נכתב ע"י רחל לודמר. תרגיל 13 א. )(i השפה המתקבלת היא }.{ab )(ii השפה המתקבלת היא }. {c n ac m a | n, m 0 )(iii השפה המתקבלת היא }.{bbb ב. L1 : X Z Y R L2 : Y X Z Z X R L3 : Z Z Y X Z R blog.csit.org.il הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - עיצוב תכנה 22 שאלה 14 א. ב. שפה רגולרית ראשונה {a n | n 0} : שפה רגולרית שניה {bn | n 0} : שרשורם , L1ניתן לבנות לה אוטומט סופי דטרמיניסטי. , L2ניתן לבנות לה אוטומט סופי דטרמיניסטי. }L1 L2 {a n b k | n, k 0 (עדיין השרשור הוא שפה רגולרית) אבל ב L3דורשים בנוסף לשרשור ,שאורך המילים המשורשרות יהיה שווה. לכן נקבל את השפה: }L3 {a nb k | n, k 0, n k } {a nb n | n 0 וזו שפה אי רגולרית. בעצם אם ניקח כל שתי שפות רגולריות אינסופיות ,ונשרשר אותם וגם נדרוש שאורך המילים המשורשות יהיה זהה ,התוצאה תהיה שפה אי רגולרית( .יש תלות של מניה). ) L ( L2 L3 ) R( L1 ג. }{c n | n 0} {b k a j | j , k 0 השפות L1 , L2 , L3הן רגולריות. לכן ,מתכונת סגירות משלים של שפה רגולרי הוא רגולרי ,היפוך של שפה רגולרי ,רגולרי. וכן מתכונת סגירות של חיתוך של שפות רגולריות הוא רגולרי ,ושרשור של שפות רגולריות – רגולרי. נקבל שהשפה Lרגולרית. blog.csit.org.il הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - עיצוב תכנה 23 שאלה 15 א .המילה הקצרה היא.abbab : ב. b , A /pop b ,S /pop לל"שa ,├ / לל"שa ,├ / לל"שb ,├ / a ,A /push AA b ,A /pop a ,├ /push SA לל"שa ,├ / לל"שb ,├ / שאלה 16 א. w1 0i w2 0 j | j i w 1i w1w 0i1i | i i 2i w1w L1 w2 w 0 j1i | j i , #0 ( w2 w) #1 ( w2 w) w2 w L1 הערה :הפתרון w 1 j 1אינו נכון. מצד אחד מתקיים ש j-1>=iאבל לא בהכרח מתקיים החסם השני .j-1<=2*i ב. blog.csit.org.il הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - עיצוב תכנה 24 פרק ב' תכנות מונחה עצמים Java / C# הפתרון ל 3-השאלות הראשונות בתמ"ע זהה בשי השפות תרגיל 21 / 17 א. ()1 ()2 אפשרות I אפשרות II C B B C A A D D אפשרות I ההוראות לא תקינות. ( cמטיפוס מחלקת העל) אינו מכיר את הפעולות שבמחלקה ( Bתת המחלקה) אפשרות II תקין. cיורש מהמחלקה Bולכן ירש גם את כל הפעולות שלה. שני העצמים יפעילו את הפעולה המוגדרת בB - ב. AAלא יכול להיות ממשק כי לא ניתן ליצור עצם מסוג הממשק (ניתן ליצור עצם מסוג מחלקה המממשת את הממשק ולשים עליו הפנייה מטיפוס הממשק) ג. נוצר עצם מסוג Bעם הפנייה מסוג A למרות שבשתי המחלקות מוגדרת הפעולה )( fוהפעולה הבונה של Aמפעילה את )(f הרי שמי שקובע איזו פעולה תופעל הוא טיפוס העצם ולא טיפוס ההפניה ולכן יופעל )( fשל המחלקה .B blog.csit.org.il הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - תרגיל 18 עיצוב תכנה 25 22 / A ב. א. AA a int i 1 AA BB BB DD int i 2 CC BB b CC CC c int i 2 DD DD d int i 3 DD 3 BB b1 int i CC 2 AA c1 int i ג. תקין .השמה חוקית של הפניה מסוג מחלקת העל לעצם מסוג תת המחלקה שגיאת קומפילציה .השמה לא חוקית של הפנייה מסוג תת מחלקה לעצם מסוג מחלקת העל שגיאת זמן ריצה -שגיאת המרה AA) .עולם לא היה מסוג (BB // // // ;a = c ;b = a ;(CC)b1 ד. הפלט ערכי iשונים aאינו סוג של BB blog.csit.org.il ההוראה false | )b1.what(b true | )b1.what(b, 1 true | )((CC)c1).what(c false )d.what(a | הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - תרגיל 19 עיצוב תכנה 26 23 / A ITing א. B D C A int a 2 B 0 things IThing a IThing b 1 C 2 IThing a ב. פלט value ממחלקה i 2 A 0 4 B 1 8 C 2 8 C 3 22 D 4 IThing b 3 4 D IThing things 4 int limit עבור limit = 5יפעיל את )( valueשבמחלקה Dבצורה רקורסיבית ללא תנאי עצירה ,כלומר לולאה אינסופית. הסיבה: blog.csit.org.il הלולאה רצה עד ,limit = 5כלומר ,מנסה לסכם גם את valueשל ]things[4 שהוא מסוג המחלקה Dהמכיל הפנייה למערך thingsשל התכנית, ולכן יתחיל לסכם מחדש ,וכך הלאה. הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - 27 עיצוב תכנה שאלה - 20תמ"ע Java ג. blog.csit.org.il הילה קדמן מדעי המחשב שאלון - 899205 :תשע"ה 2015 - ב. 28 עיצוב תכנה הפעולה )( priceבמחלקה :Toy הפעולה )( priceבמחלקה :Doll הפעולה )( priceבמחלקה :Car blog.csit.org.il הילה קדמן עיצוב תכנה 29 מדעי המחשב 2015 - תשע"ה- 899205 :שאלון נכתב ע"י דיתה אוהב ציון class Toy { private string name; private double price; private string color; C# תמ"ע- 24 שאלה // שם // מחיר // צבע public Toy(string name, double price,string color ) {} public virtual double GetPrice() { return this.price; } public void UpdatePrice(int p) { } } class Doll:Toy { private int AccNums; private double AccPrice; // מספר אביזרים // מחיר לאביזר public Doll (string name, double price, double AccPrice, int AccNums) : base(name, price,color) public override double GetPrice() { return base.GetPrice()+ this.AccNums*this.AccPeice; } } class Car: Toy { private int size; // גדלים: 0,1,2 public Car(string name, double price, string color, int size) : base(name, price, color) { } public override double GetPrice() { return base.GetPrice()+size* 15; } Toy t1 = new Doll ("barbi",65.60,"red",12.5,4); Toy t2 = new Car ("bimba",123,"green",2); .ג Console.WriteLine(t1.GetPrice()); Console.WriteLine(t2.GetPrice()); הילה קדמן blog.csit.org.il
© Copyright 2024