הוראות לנבחן
Transcription
הוראות לנבחן
סוג בחינה :בחינת מתכונת מועד הבחינה :קיץ תשע"א 2011 מספר שאלון899205 : ביה"ס נזירות המושיע נצרת מדעי המחשב 2יחידות לימוד (השלמה ל 5 -יח"ל) הוראות לנבחן א. משך הבחינה :שלוש שעות ב. מבנה השאלון ומפתח הערכה :בשאלון זה שני פרקים. בפרק זה יש ארבע שאלות , פרק ראשון – ()25 X 2 מהן יש לענות על שתיים- . פרק שני ג. – בפרק זה יש ארבע שאלות, מהן יש לענות על שתיים- . ()25 X 2 - 50נקודות. 50נקודות. חומר עזר מותר בשימוש :כל חומר עזר ,חוץ ממחשב הניתן לתכנות. כתוב במחברת הבחינה בלבד ,בעמודים נפרדים ,כל מה שברצונך לכתוב כטיוטה (ראשי פרקים ,חישובים וכדומה) .רשום טיוטה בראש כל עמוד טיוטה .רישום טיוטות כלשהן על דפים שמחוץ למחברת הבחינה עלול לגרום לפסילת הבחינה! ההנחיות בשאלון זה מנוסחות בלשון זכר ומכוונות לנבחנים ולנבחנות כאחד. בהצלחה! בחינת מתכונת מדעי המחשב ,קיץ תשע"א ,מספר 899205 פרק ראשון ( 50נקודות) ענה על שתיים מהשאלות ( 4 - 1לכל שאלה – 55נקודות) שאלה 1 תור "סדרתי" הוא תור שאורכו זוגי שמורכב ממספרים שלמים – כאשר בחצי הראשון האיברים מסודרים בסדר עולה ובחצי השני האיברים מסודרים בסדר יורד. כתוב שיטה שמקבלת תור ומחזירה 'אמת 'trueאם התור הוא "סדרתי" ,אחרת א. השיטה מחזירה 'שקר 12( .'falseנקודות) בסעיף זה יש לשמור על התור המקורי!! כתוב שיטה שמקבלת כפרמטר תור "סדרתי" ומחזירה תור חדש שאיבריו מסודרים באופן הבא :האיבר הראשון מהתור הסדרתי ואז האיבר האחרון ,האיבר השני מהתור הסדרתי ואז האיבר לפני האחרון וכן הלאה עד שהתור ה"סדרתי" מתרוקן. ( 13נקודות) בסעיף זה לא צריך לשמור על התור המקורי!! ב. לדוגמא: אם התור הסדרתי מורכב מהאיברים הבאים: -12 -1 7 10 17 40 5 3 Q יוחזר התור הבא: -12 3 -1 5 40 10 17 7 הערה: -1- ניתן להשתמש במבני עזר נוספים. בסעיף א' יש לשמור על התור המקורי. /המשך מעבר לדף/ Q1 מדעי המחשב ,קיץ תשע"א ,מספר 899205 בחינת מתכונת בסעיף ב' לא צריך לשמור על התור המקורי. שאלה 5 כתוב שיטה שמקבלת כפרמטר עץ בינארי של שלמים ,btעל השיטה להחזיר את הערך 'אמת 'trueאם בכל רמה "הזוגיות القيمة الزوجية" משתנה .כלומר ,אם ערך צומת כלשהי היה זוגי ,על הבנים להיות אי-זוגיים ואם ערך הצומת היה אי-זוגי על הבנים להיות זוגיים .אחרת תחזיר השיטה הערך 'שקר 'false דוגמא לעץ בינרי לפי הגדרת השאלה: 10 -5 -3 18 10 0 -7 13 כותרת השיטהpublic static bool Check(BinTreeNode<int> bt) : -2- /המשך מעבר לדף/ מדעי המחשב ,קיץ תשע"א ,מספר 899205 בחינת מתכונת שאלה 3 חברת כוח-אדם בשם "מצא עבודה" רוצה לפתח מערכת לניהול שיבוץ מועמדים למשרות עבודה (إيجاد فرص عمل وتوظيف) .לשם כך היא פיתחה את המחלקות הבאות: מחלקה בשם מועמד Candidateשהוגדרו בה התכונות הבאות: - מספר מועמד :cNumמספר שלם int - שם מועמד :cNameמחרוזת string - רשימת (מערך) משרות לחיפוש ( jobsמערך של מחרוזות )string לכל מועמד יכולים להיות לכל היותר 10משרות לחיפוש. מחלקה בשם משאבי אנוש ( HumanResourcesالقوى العاملة) שהוגדרו בה התכונות הבאות: - שם המחלקה :HRNameמחרוזת string - רשימת (מערך) מועמדים .arr מחלקת משאבי אנוש יכולה להכיל 500מועמדים לכל היותר. א .שרטט תרשים UMLשמתאר את המחלקות הנתונות 2( .נק') ב .כתוב את המחלקה מועמד .Candidateיש לכתוב את כותרת המחלקה ,התכונות שלה ואת השיטה הבונה 4( .נק') ג .כתוב את המחלקה משאבי אנוש .HumanResourcesיש לכתוב את כותרת המחלקה, התכונות שלה ואת השיטה הבונה 4( .נק') ד .כתוב שיטה בשם toStringשמחזירה מחרוזת המתארת את המועמד .יש להחזיר את פרטי המועמד ,כמו גם את רשימת המשרות הפנויות שלו 4( .נק') ה .כתוב שיטה בשם Checkשמקבלת כפרמטר משרה פנויה (כמחרוזת .)stringעל השיטה להחזיר את הערך ( 1אחד) אם המועמד יכול להתקבל למשרה זו (אם היא קיימת ברשימת המשרות לחיפוש שלו) .ואת הערך ( 0אפס) אחרת 5( .נק') ו .כתוב שיטה בשם CheckAllשמקבלת כפרמטר משרה פנויה (כמחרוזת .)stringעל השיטה להחזיר את כמות המועמדים שהמשרה מתאימה להם 6( .נק') הנחות -3- ניתן להניח קיום שיטות מעדכנות ושיטות מאחזרות ) )Set/Getלכל התכונות. עבור כל שיטה יש לרשום באופן ברור איפה היא נמצאת (באיזה מחלקה). עבור כל שיטה יש לרשום באופן ברור את טענת הכניסה וטענת היציאה. ניתן להשתמש בשיטות נוספות .במקרה זה יש לרשום את הקוד שלה ולכתוב באיזה מחלקה היא נמצאת. /המשך מעבר לדף/ בחינת מתכונת 899205 מספר, קיץ תשע"א,מדעי המחשב 4 שאלה :נתונות השיטות הבאות public static bool Func3(int[] arr, int p) { if (p == 0) return true; if (arr[p] < arr[p - 1]) return false; return Func3(arr, p - 1); } public static bool Func2(int[]arr1, int p1, int[]arr2) { if (p1 == arr1.Length) return true; if (arr1[p1] != arr2[arr2.Length-1-p1]) return false; return Func2(arr1, p1 + 1, arr2); } public static bool Func1(int[]arr1, int[]arr2) { if (arr1.Length == arr2.Length) return Func2(arr1, 0, arr2) && Func3(arr1,arr1.Length-1); return false; } ודוגמא אחרתtrue ? תן דוגמא למערך עבורו יוחזר הערךfunc3 מה מבצעת השיטה.א ) נקודות8( .false למערך עבורו יוחזר הערך ודוגמאtrue ? תן דוגמא לשני מערכים עבורם יוחזר הערךfunc2 מה מבצעת השיטה.ב ) נקודות10( .false אחרת לשני מערכים עבורם יוחזר הערך ) נקודות7( ?func1 מה מבצעת השיטה.ג /המשך מעבר לדף/ -4- בחינת מתכונת מדעי המחשב ,קיץ תשע"א ,מספר 899205 פרק בחירה תכנות מונחה עצמים Object Oriented Programming ענה על שתיים מהשאלות ( 8 - 5לכל שאלה – 55נקודות) שאלה 5 לפניך UMLחלקי: Class A ;private int x ;protected int y )A(int x )(void f1 )(virtual void f2 Class B Class C ;private int w ;protected int z )C(int x, int y, int w )(override void f2 )(virtual void f3 Class B2 Class B1 ;private int z1 ;private int z1 )(override void f2 )(override int f3 )(override void f2 א .איזה עיקרון ,של תכנות מונחה עצמים ,השתמשו בו כאשר במחלקה Aכתבו שתי שיטות בונות? הסבר 2( ...נק') ב .איך זה יכול להיות שמחלקה Bיורשת ממחלקה Aולא מופיעה בה השיטה ?f2הסבר3( ... נק') ג .האם ניתן להשתמש בשיטה הבונה ברירת המחדל ( )default c'torבמחלקה ?Bהסבר... ( 3נק') -5- /המשך מעבר לדף/ בחינת מתכונת מדעי המחשב ,קיץ תשע"א ,מספר 899205 )public C(int x, int y, int w { ;this.x=x ;this.y=y ;this.w=w } ד .מימוש הפעולה הבונה במחלקה Cהוא כזה: האם הפעולה תקינה? הסבר 3( ...נק') ה .מימוש הפעולה f3במחלקה Bהוא כזה: )(public void f3 { )console.Write(this.x + this.y + this.z } האם הפעולה תקינה? הסבר 3( ...נק') ו .כתוב תוכנית ראשית ( )MAINובצע את ההוראות הבאות: .1יצירת מערך בגודל 5ובו יוכנסו חמשת האובייקטים -מכל הסוגים 2( .נק') .2הפעלת השיטה 2( .f1נק') .3הפעלת השיטה 2( .f2נק') .4הפעלת השיטה 2( .f3נק') .5הפעלת השיטה f3לאובייקטים מסוג Bבלבד! (ללא B1וללא 3( .)B2נק') עבור כל אחת מההוראות בסעיף זה (ו') יש לרשום איזה שיטה תופעל בכל מחלקה. -6- /המשך מעבר לדף/ בחינת מתכונת מדעי המחשב ,קיץ תשע"א ,מספר 899205 שאלה 6 המכללה האקדמית "נצרת" מעוניינת למחשב את מערכת ניהול מערכת הנהלת החשבונות שלה. נתון תרשים UMLחלקי עבור מחלקות הפרוייקט: עובד Worker עובד קבוע Pwoker מכללה College עובד זמני TWorker במכללה קיימים 500עובדים מכל הסוגים. לעובד יש שם פרטי ושיטה שמחשבת ומחזירה את המשכורת שלו (ניתן להניח שכל העובדים מקבלים .)₪ 5000עובד קבוע מקבל משכורת כמו עובד רגיל בתוספת של .10%לעובד זמני קיימת שתי תכונות נוספות :מספר שעות עובדה חודשי ותעריף שעה – המשכורת שלו מחושבת על-ידי הכפלת מספר השעות בתעריף. א .הגדר עבור כל אחת מהמחלקות המתוארות בתרשים :כותרת ,תכונות ,חתימות של הפעולה הבונה .יש לתעד את התכונות ואת הפעולה הבונה 5( .נק') ב .הוסף למחלקות פעולות שיאפשרו לקבל משכורת של עובד באופן המתאים ביותר לעקרונות של תכנות מונחה עצמים (הכמסה ,Encapsulationהורשה ,Inheritance פולימורפיזם 4( )Polymorphismנק') ג .כתוב פעולה שמוסיפה עובד למכללה 4( .נק') ד .ממש פעולה המחזירה את סה"כ משכורות ששולמו לכל העובדים .רשום באיזה מחלקה יש לממש את הפעולה 4( .נק') ה .כתוב פעולה ראשית ( )MAINשתיצור מכללה 1( .נק') ו .הוסף למכללה 3עובדים (מכל הסוגים) 2( .נק') ז .כתוב פעולה סטטית חיצונית במחלקה הראשית אשר תדפיס את המידע הבא :סכום המשכורות ששולמו לעובדים קבועים בלבד! ( 5נק') -7- /המשך מעבר לדף/ בחינת מתכונת מדעי המחשב ,קיץ תשע"א ,מספר 899205 שאלה 7 נתונות המחלקות הבאות עבור התקנים אלקטרוניים (قطع الكترونية): מחשב רגיל :PCסוג ,מהירות מעבד (מספר שלם) ,כמות זיכרון ,מחיר. מחשב נייד : Laptopסוג ,מהירות מעבד (מספר שלם) ,כמות זיכרון ,מחיר ,משקל. מחשב :IPHONEמהירות מעבד (מספר שלם) ,כמות זיכרון , ,מחיר ,מספר צבעים. חנות :Storeקיימים 50התקנים אלקטרוניים מכל הסוגים. א .הצג תרשים UMLעבור המחלקות הנתונות בשאלה – יש להשתמש במנגנון תכנות מונחה עצמים 4( .נק') ב .הגדר עבור כל אחת מהמחלקות המתוארות בתרשים :כותרת ,תכונות ,חתימות של הפעולה הבונה .יש לתעד את התכונות ואת הפעולה הבונה 5( .נק') ג .הוסף שיטה שמחזירה כמות הזיכרון של כל התקן אלקטרוני ,באופן המתאים ביותר לעקרונות של תכנות מונחה עצמים (הכמסה ,Encapsulationהורשה ,Inheritance פולימורפיזם 3( )Polymorphismנק') ד .כתוב שיטה במחלקה הראשית MAINשמחזירה עבור ה IPHONE-את מספר הצבעים שלו .ניתן להניח קיומו של מערך בשם arrשמכיל בתוכו את התקנים מכל הסוגים ( 4נק') ה .כתוב שיטה בשם Addשמוסיפה לחנות התקן חדש 3( .נק') ו .כתוב שיטה בשם Check1שמקבלת כפרמטרים מהירות מינימאלית minומהירות מקסימאלית .maxעל השיטה להחזיר את כמות המחשבים ( PCללא מחשבים ניידים) שהמהירות שלהם נעה בין שתי המהירויות 6( .נק') -8- /המשך מעבר לדף/ בחינת מתכונת 899205 מספר, קיץ תשע"א,מדעי המחשב 8 שאלה :נתונות המחלקות הבאות public class A { protected int x; protected int y; public A obj; public A() { this.x = 1; this.y = 2; this.obj = null; } public A(int { this.x = this.y = this.obj } x, int y) x; y; = null; public void SetObj(A obj) { this.obj = obj; } public void F() { Console.WriteLine("i am in F method!"); } public virtual int F1() { return this.x * this.y; } public int F3() { int sum = 0; sum = this.x + this.y; if (this.obj != null) sum += this.obj.f3(); return sum; } } public class B : A { protected int z; public B() : base() { this.z = 3; } /המשך מעבר לדף/ -9- בחינת מתכונת 899205 מספר, קיץ תשע"א,מדעי המחשב public B(int x, int y, int z) : base(x, y) { this.z = z; this.obj = null; } public int f2() { return this.z * 4; } } public class C : B { protected int w; public C() : base() { this.w = 4; } public C(int x, int y, int z, int w) : base(x, y, z) { this.w = w; } public override int F1() { return base.F1() * this.z * this.w; } } /המשך מעבר לדף/ -10- בחינת מתכונת 899205 מספר, קיץ תשע"א,מדעי המחשב public class Program { public static void Main(String[] args) { A[] arr1 = new A[3]; arr1[0] = new A(1, 2); arr1[1] = new B(1, 2, 3); arr1[2] = new C(); A[] arr2 = new A[2]; arr2[0] = new C(1, 2, 3, 4); arr2[1] = new B(); for (int i = 0; i < arr1.Length; i++) arr1[i].f(); Console.WriteLine("******************"); for (int i = 0; i < arr1.Length; i++) Console.WriteLine(arr1[i].f1()); Console.WriteLine("******************"); for (int i = 0; i < arr1.Length; i++) if (arr1[i] is B) Console.WriteLine(((B)arr1[i]).f2()); } } !!' בשאלה הזו אין קשר בין סעיף א' לסעיף ב:שים לב ,Program במחלקהMain ) אחרי הפעולהUML עקוב בעזרת טבלת מעקב (תרשים.א )' נק20( .ורשום את הפלט ,Program במחלקהMain ) אחרי הפעולהUML עקוב בעזרת טבלת מעקב (תרשים.ב את ההוראות הבאות (שים לב שאין קשר ביןMAIN -ורשום את הפלט אם כתבנו ב )' נק5( :)'סעיף זה לסעיף א A ob1 = new A(); A ob2 = new B(); A ob3 = new C(); ob1.SetObj(ob2); ob2.SetObj(ob3); ob3.SetObj(ob1); Console.WriteLine(ob1.f3()); !!ה בהצלח /המשך מעבר לדף/ -11-