Professional Documents
Culture Documents
אלגוריתמיקה ותכנות
הנדסאים וטכנאים – הנדסת תוכנה
הנחיות לנבחן
ארבע שעות וחצי. א .משך הבחינה:
בשאלון זה שני מבחנים .עליך לענות על מבחן אחד בלבד בהתאם למוסד הלימודים: ב .מבנה השאלון
מבחן ב( Java -עמוד )2 ומפתח ההערכה:
מבחן ב( C# -עמוד )15
בכל מבחן 13שאלות.
חלק א' 40 -נקודות
שאלות :6-1יש לענות על ארבע שאלות בלבד .ערך כל שאלה 10 -נקודות.
חלק ב' 24 -נקודות
שאלות :9-7יש לענות על שתיים שאלות בלבד .ערך כל שאלה 12 -נקודות.
חלק ג' 36 -נקודות
שאלות :13-10יש לענות על שתיים שאלות בלבד .ערך כל שאלה 18 -נקודות.
בסך הכול 100 :נקודות.
.1מחשבון (אין להשתמש במחשב כף יד או במחשבון עם תקשורת חיצונית). ג .חומר עזר
מותר לשימוש .2 :קלסר אחד בלבד עם חומר ההרצאות .אין להוציא דפים מהקלסר.
אין לצרף ספרים או חוברות עם פתרונות.
ד .הוראות כלליות .1 :יש לקרוא בעיון את ההנחיות בדף השער ואת כל שאלות הבחינה ,ולוודא שהן מובנות.
.2את התשובות יש לכתוב בצורה מסודרת ,בכתב יד ברור ונקי (גם בכך תלויה הערכת הבחינה).
.3יש להשאיר את העמוד הראשון במחברת הבחינה ריק .בסיום המבחן יש לרשום בעמוד זה
את מספרי התשובות לבדיקה .התשובות ייבדקו לפי סדר כתיבתן בעמוד זה .לא ייבדקו
תשובות עודפות.
.4יש לכתוב את התשובות במחברת הבחינה בעט בלבד ,בכתב יד ברור.
.5יש להתחיל כל תשובה בעמוד חדש ולציין את מספר השאלה ואת הסעיף .אין צורך להעתיק
את השאלה עצמה.
.6טיוטה יש לכתוב במחברת הבחינה בלבד .יש לרשום את המילה "טיוטה" בראש העמוד
ולהעביר עליו קו כדי שלא ייבדק.
.7יש להציג פתרון מלא ומנומק ,כולל חישובים לפי הצורך .הצגת תשובה סופית ללא שלבי
הפתרון לא תזכה בניקוד.
.8יש להסביר בפירוט כל תוכנית שנכתבה ,תוכנית ללא הסבר מפורט לא תזכה בניקוד.
.9אם לדעתך חסר בשאלה נתון ,יש לציין זאת ולהוסיף נתון מתאים שיאפשר לך להמשיך
בפתרון השאלה .נמק את בחירתך.
חלק א'
ענה על ארבע מבין השאלות ( 6-1ערך כל שאלה – 10נקודות).
שאלה 1
כתוב קטע תוכנית שיקלוט 40מספרים חיוביים ושלמים:
( 5נק') א .עבור כל מספר תלת ספרתי שנקלט ,יש להדפיס את סכום ספרותיו.
( 5נק') ב .על הקוד לחשב ולהדפיס את כמות המספרים הזוגיים שנקלטו ואת סכום המספרים האי זוגיים שנקלטו.
שאלה 2
למחלקה קופסה (תיבה) – Boxיש ארבע תכונות:
צבע – ,colorמטיפוס מחרוזת String -
אורך – ,lengthמטיפוס מספר שלם int -
רוחב – ,widthמטיפוס מספר שלם int -
גובה height -מטיפוס מספר שלם int -
במחלקה Boxהוגדרה פעולה בונה (בנאי )constructor ,המקבלת פרמטר של כל תכונה וקובעת את הערכים של
תכונות העצם .המחלקה כוללת פעולות get/setלכל אחת מהתכונות.
( 5נק') א .כתוב פעולה בונה המייצרת קופסה בצבע ,colorשכל הממדים שלה (אורך ,רוחב וגובה) שווים ל.10 -
כותרת הפעולה.public Box(String color) :
( 5נק') ב .כתוב פעולה חיצונית המקבלת מערך הפניות לעצמים מסוג Boxבשם arrומחזירה את הצבע של
קופסה במערך עם ערך הנפח הקטן ביותר .כותרת הפעולה ).public static String smallBox(Box[] arr
הנחה :כל תא במערך מכיל הפניה לעצם מסוג Boxואין תאים במערך שערכם שווה לnull -
שאלה 4
מערך של מספרים שלמים נקרא "מושלם" אם הוא מקיים את התנאים הבאים:
-גודל המערך הוא מספר אי-זוגי.
-בחצי הראשון של המערך יש רק מספרים חיובים חד ספרתיים.
-האיבר המרכזי (אמצעי) הוא .0
-בחצי השני של המערך אין אף מספר חיובי חד-ספרתי.
המערך } arr={1, 7,3, 0, 13, 131, 44הוא "מערך מושלם" מאחר שהוא עונה על כל ארבע הדרישות.
-אורך המערך 7אי-זוגי.
-החצי הראשון { }1,7,3מכיל רק מספרים חד-ספרתיים.
-חצי השני { }13,131,44אינו מכיל מספרים חד-ספרתיים.
-האיבר המרכזי הוא .0
( 8נק') א .כתוב פעולה המקבלת מערך של מספרים שלמים ומחזירה ערך trueאם הוא "מערך מושלם" ,אם לא,
הפעולה תחזיר ערך .false
( 2נק') ב .מהי סיבוכיות הפעולה שבסעיף א'? הסבר את תשובתך.
חלק ב'
ענה על שתיים מבין השאלות ( 9-7ערך כל שאלה – 12נקודות).
שאלה 7
הערה :אפשר להניח שבשתי המחלקות קיימות פעולות .get/setאם השתמשת בפעולות נוספות ,עליך לכתוב את
הפעולות!
כתוב בנאי ( )constructorלמחלקה Batteryהמקבל פרמטר של כל תכונה ומייצר עצם מסוג .1
Batteryבהתאם לערכי הפרמטרים.
כתוב בנאי למחלקה Batteryאשר מייצר עצם מסוג Batteryתקין של היצרן "."Duracell .2
הבנאי מקבל מתח וגודל כפרמטרים.
כתוב פעולה חיצונית ,checkPriceאשר מקבלת כפרמטר עצם מטיפוס ,BatteryPackומספר .1
ממשי sumשהוא הסכום שהלקוח מוכן לשלם.
-אם הסכום שהלקוח מוכן לשלם גבוה ממחיר חבילת הסוללות ,אזי אפשר לקנות את החבילה
ולכן הפעולה תדפיס הודעה "אפשר לרכוש" ואת העודף שנשאר אחרי הקנייה.
-אם הסכום שהלקוח מוכן לשלם נמוך ממחיר חבילת הסוללות ,אזי אי אפשר לקנות את
החבילה ולכן הפעולה תדפיס הודעה "אי אפשר לרכוש" ואת הסכום שחסר.
-אם סכום שלקוח מוכן לשלם שווה למחיר חבילת הסוללות ,אפשר לקנות את החבילה ולכן
הפעולה תדפיס הודעה "."O.K.
כתוב את הפעולה ) ,isEnough(double vאשר מקבלת כפרמטר מספר ממשי vהמציין מתח .2
חשמלי הנדרש ומחזירה ערך בוליאני.
אם סכום המתחים החשמליים של כל הסוללות התקינות בחבילה קטן מ ,v -הפעולה תחזיר
שקר ,אחרת תחזיר אמת.
במחלקה הוגדרה פעולה בונה ( )constructorהמקבלת פרמטר לכל תכונה ויוצרת עצם מסוג ,Driverהמכיל את
הערכים האלו בתכונות.
כמו כן יש פעולות get/setלכל אחת מהתכונות.
( 5נק') א .עקוב אחרי קטע התוכנית ,לכל עצם רשום את השמות של כל התכונות שלו ,את הערכים של כל
התכונות ואת השינויים שהיו בהם ,ורשום את הפלט.
;]Driver [] d=new Driver[5
d[0] = new ;)Driver("Yossi", "1234", 2000, 3
d[1] = new ;)Driver("Avi", "7596", 1980, 7
d[2] = new ;)Driver("Sara", "6051", 1995, 1
d[3] = new ;)Driver("Dani", "4472", 1998, 2
;]d[4] = d[3
;int m = 0, s = 0
;)(int x = d[1].getTests
;)d[1].setTests(d[3].getTests()+2
;)d[3].setTests(x
( 7נק') ב .כתוב פעולה המקבלת מערך של עצמים מסוג ,Driverומספר שלם ,numומחזירה מערך הכולל את
השמות של הנהגים שעברו את הטסט בפחות מ num -מבחנים.
( 6נק') א .כתוב פעולה המקבלת מחרוזת ומחזירה trueאם המחרוזת היא פלינדרום גדולים ,אחרת הפעולה
תחזיר .false
( 6נק') ב .כתוב פעולה המקבלת מערך מחרוזות ומחזירה מחרוזת הארוכה ביותר שהיא "פלינדרום גדולים".
אפשר להניח שיש לפחות מחרוזת אחת שהיא פלינדרום גדולים.
חלק ג'
ענה על שתיים מבין השאלות ( 13-10ערך כל שאלה – 18נקודות).
שאלה 10
נתונות ההגדרות הבאות:
" דרגת הזוגיות" של מספר שלם היא כמות הספרות הזוגיות במספר.
לדוגמה:
"דרגת הזוגיות" של מספר 12347היא .2
"דרגת הזוגיות" של מספר 1860היא .3
"דרגת הזוגיות" של מספר 0היא .1
" דרגת העל" של מערך חד-ממדי של מספרים שלמים היא "דרגת הזוגיות" הגבוהה ביותר שיש בו.
מערך חד-ממדי של מספרים שלמים נקרא "מערך מסודר לפי דרגות הזוגיות" אם הוא כולל את כל דרגות
הזוגיות מ 0 -עד "דרגת על" וכל דרגה מופיעה בו בדיוק פעם אחת.
א .כתוב פעולה אשר מקבלת מספר שלם ומחזירה את "דרגת הזוגיות" שלו. ( 5נק')
ב .כתוב פעולה אשר מקבלת מערך חד-ממדי ומחזירה את "דרגת העל" שלו. ( 5נק')
ג .כתוב פעולה אשר מקבלת מערך חד-ממדי .הפעולה מחזירה trueאם המערך מסודר לפי דרגות ( 5נק')
הזוגיות ,אחרת הפעולה מחזירה .false
ד .מהן סיבוכיות זמן הריצה של כל הפעולות שכתבת? הסבר את תשובתך. ( 3נק')
( 9נק') ב .לפניך פעולה אחרת ,two ,המקבלת מערך של מספרים שלמים ,ושני מספרים נוספים.
)public static void two (int[] a, int start, int stop
{
)if(start < stop
{
;]a[start]=a[start]+a[start+1
;)two (a, start+1, stop
}
}
.1אחרי זימון ) two(c, 0, c.length-1תוכן של מערך cהוא:
25 מתוך13 עמוד
שאלון ,97104אביב תשפ"א – – 2021מועד א'
חלק א'
ענה על ארבע מבין השאלות ( 6-1ערך כל שאלה – 10נקודות).
שאלה 1
כתוב קטע תוכנית שיקלוט 40מספרים חיוביים ושלמים:
( 5נק') א .עבור כל מספר תלת ספרתי שנקלט ,יש להדפיס את סכום ספרותיו.
( 5נק') ב .על הקוד לחשב ולהדפיס את כמות המספרים הזוגיים שנקלטו ואת סכום המספרים האי זוגיים שנקלטו.
שאלה 2
למחלקה קופסה (תיבה) – Boxיש ארבע תכונות:
צבע – ,colorמטיפוס מחרוזת String -
אורך – ,lengthמטיפוס מספר שלם int -
רוחב – ,widthמטיפוס מספר שלם int -
גובה ,height -מטיפוס מספר שלם int -
במחלקה Boxהוגדרה פעולה בונה (בנאי )constructor ,המקבלת פרמטר של כל תכונה וקובעת את הערכים של
תכונות העצם .המחלקה כוללת פעולות Get/Setלכל אחת מהתכונות.
( 5נק') א .כתוב פעולה בונה המייצרת קופסה בצבע ,colorשכל הממדים שלה (אורך ,רוחב וגובה) שווים ל.10 -
כותרת הפעולה:
)public Box(string color
( 5נק') ב .כתוב פעולה חיצונית המקבלת מערך הפניות לעצמים מסוג Boxבשם arrומחזירה את הצבע של
הקופסה במערך עם ערך הנפח הקטן ביותר .כותרת הפעולה:
)public static string SmallBox(Box[] arr
הנחה :כל תא במערך מכיל הפניה לעצם מסוג Boxואין תאים במערך שערכם שווה ל.null -
שאלה 4
מערך של מספרים שלמים נקרא "מושלם" אם הוא מקיים את התנאים הבאים:
גודל המערך הוא מספר אי-זוגי
בחצי הראשון של המערך יש רק מספרים חיובים חד ספרתיים.
האיבר המרכזי (אמצעי) הוא .0
בחצי השני של המערך אין אף מספר חיובי חד-ספרתי.
המערך } arr={1, 7,3, 0, 13, 131, 44הוא "מערך מושלם" מאחר שהוא עונה על כל ארבע הדרישות.
אורך המערך 7אי-זוגי.
החצי הראשון { }1,7,3מכיל רק מספרים חד-ספרתיים.
החצי השני { }13,131,44אינו מכיל מספרים חד-ספרתיים.
האיבר המרכזי הוא .0
( 8נק') א .כתוב פעולה המקבלת מערך של מספרים שלמים ומחזירה ערך trueאם הוא "מערך מושלם" ,אם לא
הפעולה תחזיר ערך .false
( 2נק') ב .מהי סיבוכיות הפעולה שבסעיף א'? הסבר את תשובתך.
חלק ב'
ענה על שתיים מבין השאלות ( 9-7ערך כל שאלה – 12נקודות).
שאלה 7
הערה :אפשר להניח שבשתי המחלקות קיימות פעולות .Get/Setאם השתמשת בפעולות נוספות ,עליך לממש
את הפעולות!
כתוב פעולה חיצונית ,CheckPriceאשר מקבלת כפרמטר עצם מטיפוס BatteryPackומספר .1
ממשי sumשהוא הסכום שהלקוח מוכן לשלם.
אם הסכום שהלקוח מוכן לשלם גבוה ממחיר חבילת הסוללות ,אזי אפשר לקנות את -
החבילה ולכן הפעולה תדפיס הודעה "אפשר לרכוש" ואת העודף שנשאר אחרי הקנייה.
אם הסכום שהלקוח מוכן לשלם נמוך ממחיר חבילת הסוללות ,אזי אי אפשר לקנות את -
החבילה ולכן הפעולה תדפיס הודעה "אי אפשר לרכוש" ואת הסכום שחסר.
-אם הסכום שהלקוח מוכן לשלם שווה למחיר חבילת הסוללות ,אפשר לקנות את החבילה
ולכן הפעולה תדפיס הודעה "."O.K.
כתוב את הפעולה ) ,IsEnough(double vאשר מקבלת כפרמטר מספר ממשי vהמציין מתח .2
חשמלי נדרש.
אם סכום המתחים החשמליים של כל הסוללות התקינות בחבילה קטן מ ,v-הפעולה תחזיר
שקר ,אחרת תחזיר אמת.
במחלקה הוגדרה פעולה בונה ( )constructorהמקבלת פרמטר לכל תכונה ויוצרת עצם מסוג ,Driverהמכיל את
הערכים האלו בתכונות.
כמו כן יש פעולות Get/Setלכל אחת מהתכונות.
( 5נק') א .עקוב אחרי קטע התוכנית ,לכל עצם רשום את השמות של כל התכונות שלו ,את הערכים של כל
התכונות ואת השינויים שהיו בהם ,ורשום את הפלט.
;]Driver [] d=new Driver[5
d[0] = new ;)Driver("Yossi", "1234", 2000, 3
d[1] = new ;)Driver("Avi", "7596", 1980, 7
d[2] = new ;)Driver("Sara", "6051", 1995, 1
d[3] = new ;)Driver("Dani", "4472", 1998, 2
;]d[4] = d[3
;int m = 0, s = 0
;)(int x = d[1].GetTests
;)d[1].SetTests(d[3].GetTests()+2
;)d[3].SetTests(x
( 7נק') ב .כתוב פעולה המקבלת מערך של עצמים מסוג ,Driverומספר שלם numומחזירה מערך הכולל את
השמות של הנהגים שעברו את הטסט בפחות מ num -מבחנים.
עמוד 20מתוך 25
שאלון ,97104אביב תשפ"א – – 2021מועד א'
שאלה 9
נתונות ההגדרות הבאות:
"פָּ לִ ינְ ְדרוֹם" הוא כל רצף תווים שקריאתו מימין לשמאל ומשמאל לימין היא זהה.
דוגמאות לפלינדרום:
ABCCBA, 12A21, a0X$11$X0a
"פלינדרום גדולים" ,הוא פלינדרום המורכב רק מאותיות ( A..Zשאר התווים לא משנה)
לדוגמה:
fA%B##rkC1^BAdd
הוא פלינדרום גדולים.
( 6נק') א .כתוב פעולה המקבלת מחרוזת ומחזירה trueאם המחרוזת היא פלינדרום גדולים ,אחרת הפעולה
תחזיר .false
( 6נק') ב .כתוב פעולה המקבלת מערך מחרוזות ומחזירה את המחרוזת הארוכה ביותר שהיא "פלינדרום
גדולים".
אפשר להניח שיש לפחות מחרוזת אחת שהיא פלינדרום גדולים.
חלק ג'
ענה על שתיים מבין השאלות ( 13-10ערך כל שאלה – 18נקודות).
שאלה 10
נתונות ההגדרות הבאות:
"דרגת הזוגיות" של מספר שלם שהיא כמות הספרות הזוגיות במספר.
לדוגמה:
"דרגת הזוגיות" של מספר 12347היא .2
"דרגת הזוגיות" של מספר 1860היא .3
"דרגת הזוגיות" של מספר 0היא .1
"דרגת העל" של מערך חד-ממדי של מספרים שלמים היא "דרגת הזוגיות" הגבוהה ביותר שיש בו.
מערך חד-ממדי של מספרים שלמים נקרא "מערך מסודר לפי דרגות הזוגיות" אם הוא כולל את כל דרגות
הזוגיות מ 0 -עד "דרגת על" וכל דרגה מופיעה בו בדיוק פעם אחת.
( 5נק') א .כתוב פעולה אשר מקבלת מספר שלם ומחזירה את "דרגת הזוגיות" שלו.
( 5נק') ב .כתוב פעולה אשר מקבלת מערך חד-ממדי ומחזירה את "דרגת העל" שלו.
( 5נק') ג .כתוב פעולה אשר מקבלת מערך חד-ממדי .הפעולה מחזירה trueאם המערך מסודר לפי דרגות
הזוגיות ,אחרת הפעולה מחזירה .false
( 3נק') ד .מהן סיבוכיות זמן הריצה של כל הפעולות שכתבת? הסבר את תשובתך.
( 9נק') ב .לפניך פעולה אחרת ,Two ,המקבלת מערך של מספרים שלמים ,ושני מספרים נוספים.
)public static void Two (int[] a, int start, int stop
{
)if(start < stop
{
;]a[start]=a[start]+a[start+1
;)Two (a, start+1, stop
}
}
.1אחרי זימון ) Two(c, 0, c.Length-1התוכן של מערך cהוא:
הפעולה תסיים את העבודה כאשר יסתיים ביצוע של כל המשימות או יגמר הזמן שהוקצה לעבודה.
בהצלחה!
©כל הזכויות שמורות למה"ט
דחוף!
לכבוד
המכללות ובתי הספר
להכשרת הנדסאים וטכנאים
שאלה : 2
בברכה,
מחלקת בחינות
גיבוי ישלח בשלב מאוחר יותר באמצעות פקס.
)01/07( 01-3-07
__________________________________________________________________________
בית ליאו גולדברג ,דרך מנחם בגין ,86תל אביב ,ת.ד ,36049 .מיקוד 67138
מס' הטלפון של מח' הבחינות , 03-5634257/109/229/259מס' פקס 03-5613523