מדעי המחשב ב`

‫מדעי המחשב‬
‫‪1‬‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫מדעי המחשב‬
‫פתרון בחינת הבגרות‬
‫פרק ראשון ‪( -‬יסודות)‬
‫שאלה ‪1‬‬
‫דרך ‪I‬‬
‫דרך ‪Java - II‬‬
‫דרך ‪C# - II‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
‫מדעי המחשב‬
‫‪6‬‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫שאלה ‪2‬‬
‫‪Java‬‬
‫א‬
‫‪/‬‬
‫ב‪.‬‬
‫ג‪.‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
‫מדעי המחשב‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫‪3‬‬
‫‪C#‬‬
‫א‪.‬‬
‫ב‪.‬‬
‫ג‪.‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
‫מדעי המחשב‬
‫‪4‬‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫שאלה ‪3‬‬
‫‪Java‬‬
‫ב‪.‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
‫מדעי המחשב‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫‪5‬‬
‫‪C#‬‬
‫ב‪.‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
‫מדעי המחשב‬
‫‪2‬‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫פרק שני ‪( -‬מבני נתונים)‬
‫שאלה ‪4‬‬
‫‪Java‬‬
‫א‪.‬‬
‫ב‪.‬‬
‫סיבוכיות זמן הריצה היא )‪.O(n‬‬
‫נימוק‪ :‬העברת ‪ n‬טבעות מהמוט למוטות העזר ‪ n * O(1) :‬סה"כ ‪ n‬צעדים‬
‫החזרת ‪ n‬טבעות משני מוטות העזר‪ n * O(1) :‬סה"כ ‪ n‬צעדים‬
‫)‪f(n) = 2n  O(n‬‬
‫סה"כ‪:‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
‫מדעי המחשב‬
‫שאלה ‪4‬‬
‫‪7‬‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫‪C#‬‬
‫א‪.‬‬
‫ב‪.‬‬
‫סיבוכיות זמן הריצה היא )‪.O(n‬‬
‫נימוק‪ :‬העברת ‪ n‬טבעות מהמוט למוטות העזר ‪ n * O(1) :‬סה"כ ‪ n‬צעדים‬
‫החזרת ‪ n‬טבעות משני מוטות העזר‪ n * O(1) :‬סה"כ ‪ n‬צעדים‬
‫)‪f(n) = 2n  O(n‬‬
‫סה"כ‪:‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
‫מדעי המחשב‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫‪8‬‬
‫שאלה ‪5‬‬
‫‪Java:‬‬
‫‪C#:‬‬
‫ב‪.‬‬
‫(‪)1‬‬
‫טבלת מעקב‪:‬‬
‫ערך‬
‫‪left.get‬‬
‫‪left‬‬
‫&& ‪I‬‬
‫‪III‬‬
‫‪II‬‬
‫‪I‬‬
‫מוחזר‬
‫‪Right‬‬
‫==‬
‫&& ‪II‬‬
‫‪left.val +‬‬
‫‪left.getRight‬‬
‫≠ ‪left‬‬
‫‪== sum‬‬
‫‪right‬‬
‫‪III‬‬
‫‪right.val‬‬
‫‪≠ right‬‬
‫‪right‬‬
‫‪sum‬‬
‫‪right‬‬
‫‪left‬‬
‫‪value‬‬
‫‪value‬‬
‫‪== sum‬‬
‫‪false‬‬
‫(‪)2‬‬
‫‪true‬‬
‫‪true‬‬
‫‪T‬‬
‫‪T‬‬
‫‪T‬‬
‫‪true‬‬
‫‪T‬‬
‫‪T‬‬
‫‪T‬‬
‫‪11‬‬
‫‪F‬‬
‫‪27‬‬
‫‪false‬‬
‫‪21‬‬
‫‪8‬‬
‫‪13‬‬
‫‪10‬‬
‫‪27‬‬
‫ניתן להחליף את התנאי‪.‬‬
‫נימוק‪ :‬הפעולה מחזירה אמת אם סכום כל זוגות איברים הנמצאים במרחק שווה מקצות הרשימה‬
‫שווים (סימטרי‪-‬סכומים)‪.‬‬
‫הלולאה עוצרת כאשר הגיעה לאמצע הרשימה או כאשר נמצא זוג איברים שסכומם שונה‪.‬‬
‫עבור רשימה באורך אי‪-‬זוגי‪ ,‬מוחזר אמת אם האיבר האמצעי שווה לסכום זה‪ ,‬אחרת מוחזר שקר‪.‬‬
‫בכל מקרה אחר מוחזר אמת אם סכום שני האיברים במקומות ‪ left‬ו‪ right -‬שווה ל‪,sum -‬‬
‫אחרת מוחזר שקר‪.‬‬
‫ולכן‪ ,‬ניתן להחליף את הקטע המסומן בהוראה‪:‬‬
‫"החזר‪ :‬סכום האיברים במקומות ‪ left‬ו‪ right -‬שווה ל‪"sum -‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
‫מדעי המחשב‬
‫‪9‬‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫תרגיל ‪6‬‬
‫דרך ‪I‬‬
‫האם‪-‬מסלול‪-‬עולה? )‪(tr‬‬
‫{‬
‫פעולה המחזירה אמת אם קיים בעץ מסלול המתחיל בשורש העץ ומסתיים באחד העלים‪ ,‬וערך‬
‫הצמתים ממוין בסדר עולה‪ ,‬ושקר אחרת‪.‬‬
‫הנחה‪ :‬העץ לא לא ריק שערכיו מספרים שלמים השונים זה מזה‪.‬‬
‫‪//‬‬
‫אם (עלה? )‪ )(tr‬החזר אמת‬
‫}‬
‫בדיקת המסלול הסתיימה בהצלחה‬
‫אם (יש ל‪ tr -‬בן שמאלי שערכו גדול מערך הצומת של ‪) tr‬‬
‫אמת ‪left ‬‬
‫אחרת שקר ‪left ‬‬
‫אם (יש ל‪ tr -‬בן ימני שערכו גדול מערך הצומת של ‪)tr‬‬
‫אמת ‪right ‬‬
‫אחרת שקר ‪right ‬‬
‫אם (אחד הצדדים תקין)‬
‫החזר ‪ left‬וגם האם‪-‬מסלול‪-‬עולה? (בן שמאלי של ‪ )tr‬או‬
‫‪ right‬וגם האם‪-‬מסלול‪-‬עולה? (בן ימני של ‪)tr‬‬
‫החזר שקר‬
‫‪//‬‬
‫אף אחד מהבנים לא נמצא במסלול ממוין‬
‫יש לממש גם את הפעולה עלה? )‪(tr‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
6112 - ‫ תשע"ו‬- 899381 :‫שאלון‬
11
‫מדעי המחשב‬
II ‫דרך‬
‫ גרינולד‬Evi ‫ אביטל‬:‫פתרון של‬
‫ ) שונים זה מזה‬1 ‫הפעולה מקבלת עץ בינרי של מספרים שלמים טבעיים ( שלמים גדולים מ‬
.‫ שקר – אחרת‬, ‫הפעולה מחזירה 'אמת' אם קיים מסלול עולה משורש עד עלה‬
:‫תנאי קדם‬
:‫תנאי בתר‬
public static boolean upPath(BinNode<Integer> tr)
{
if (tr == null) return false;
if (tr.getLeft() == tr.getRight()) return true;
return upPath (tr.getLeft(), tr.getValue()) || upPath (tr.getRight(), tr.getValue());
}
‫ ) שונים זה מזה‬1 ‫הפעולה מקבלת עץ בינרי של מספרים שלמים טבעיים ( שלמים גדולים מ‬
x ‫ומספר טבעי‬
:‫תנאי קדם‬
, x ‫הפעולה מחזירה 'אמת' אם קיים מסלול עולה משורש העץ עד עלה שערך השרש שלו גדול מ‬
.‫שקר – אחרת‬
:‫תנאי בתר‬
private static boolean upPath(BinNode<Integer> tr, int x)
{
if (tr == null) return false;
if (tr.getValue() <= x) return false;
if (! tr.hasLeft() && ! tr.hasRight()) return true;
return upPath (tr.getLeft(), tr.getValue()) || upPath(tr.getRight(), tr.getValue());
}
‫הילה קדמן‬
blog.csit.org.il
6112 - ‫ תשע"ו‬- 899381 :‫שאלון‬
‫מדעי המחשב‬
11
‫פרק שלישי‬
‫מערכות מחשב ואסמבלר‬
‫אור‬-‫ רונית (מרציאנו) גל‬:‫הפתרון לפרק זה נכתב ע"י‬
7 ‫תרגיל‬
.‫א‬
tav db ?
; count bits in tav
count:
mov al,tav
mov cl,0
again:
shr al,1
adc cl,0
cmp al,0
jne again
continue:
mov ch,cl ; keep cl
; check if Even number
and ch,1
jz even
; not even
rol tav,cl
jmp sof
even:
ror tav,cl
sof: nop
.‫ב‬
‫לא נכון‬
)1(
.4 ‫ לא תהיה‬ax ‫ התשובה ב‬,1 ‫ יש ערך השונה מ‬dx ‫ ולכן אם ב‬bx ‫ ב‬dx ax ‫ מבצעת חילוק של‬div bx ‫הפקודה‬
mov ax,8
mov bx,2
div bx
ah ‫ לא ידוע מה יש ב‬al=1 ‫בסים הקטע‬
‫לא נכון‬
)6(
‫לא נכון‬
)3(
mov al,56
add al,200
jz stop
inc al
stop:
ax=3000h ‫בסים הקטע‬
‫הילה קדמן‬
blog.csit.org.il
‫מדעי המחשב‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫‪16‬‬
‫‪11‬‬
‫‪14‬‬
‫‪11‬‬
‫‪30‬‬
‫‪33‬‬
‫‪02‬‬
‫‪11‬‬
‫‪01‬‬
‫תוכן‬
‫‪07‬‬
‫‪06‬‬
‫‪05‬‬
‫‪04‬‬
‫‪03‬‬
‫‪02‬‬
‫‪01‬‬
‫‪11‬‬
‫כתובת‬
‫‪ax=3000h‬‬
‫(‪)4‬‬
‫נכון‬
‫(‪)5‬‬
‫נכון‬
‫‪array dw 1,2,3,4‬‬
‫‪mov bx,array‬‬
‫‪add bx,2‬‬
‫]‪mov ax,[bx‬‬
‫‪mov cx,3‬‬
‫‪mov ax,1‬‬
‫‪do:‬‬
‫‪shl ax,1‬‬
‫‪loop do‬‬
‫‪mov ax,11000001b‬‬
‫‪mov bx,01000001b‬‬
‫מכיוון שהנתון בשאלה הוא בית והוא נכנס ל אוגר מילה‪ ,‬תמיד ההשוואה ביניהם תהיה ש ‪ ax‬גדול יותר‬
‫(‪)2‬‬
‫נכון‬
‫‪or al,3‬‬
‫‪ or‬אם ביט ‪ 1‬תמיד ייתן ‪ 1‬לא משנה אם הביט המקביל הוא ‪ 1‬או ‪1‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
6112 - ‫ תשע"ו‬- 899381 :‫שאלון‬
‫מדעי המחשב‬
13
8 ‫תרגיל‬
cx
ax
si
ch
cl
ah
al
00h
04h
45h
45h
0000h
04h
04h
05h
0001h
00h
04h
00h
14h
0002h
00h
03h
26h
26h
0003h
04h
02h
06h
0004h
00h
03h
00h
0ch
00h
02h
32h
32h
04h
03h
02h
00h
02h
00h
06h
00h
01h
82h
82h
04h
08h
02h
00h
01h
00h
10h
00h
00h
sp
sp spspsp
.‫א‬
111h
0ffh
00h
00h
00h
00h
0feh
04h
03h
06h
01h
0fdh
0fch
0fbh
0fah
0f0h
0f9h
‫תמונת הזיכרון‬
vec1 db 45h,26h,32h,82h
vec2 db 0,0,0,0
‫לפני‬
vec1 db 45h,26h,32h,82h
vec2 db 14h,0ch,2h,10h
‫אחרי‬
‫הילה קדמן‬
blog.csit.org.il
6112 - ‫ תשע"ו‬- 899381 :‫שאלון‬
‫מדעי המחשב‬
14
.5 ‫ מאוחסן המספר‬bl ‫ ובאוגר‬6 ‫ מאוחסן המספר‬al ‫באוגר‬
.‫ כולל‬bl ‫ עד‬al ‫ את סכום המספרים מ‬dx ‫יש לאחסן באוגר‬
‫לא מבצע‬
.‫ב‬
1 ‫קטע‬
mov al,2
mov bl,5
mov dx,0
mov ah,0
mov cl,al
sub cl,bl
again:
add dx,ax
inc al
loope again
nop
cx
ch
dx
cl
02h
dh
ax
dl
ah
bx
al
bh
00h 00h 00h 02h
0fdh 00h 02h
bl
05h
03h
0fch
loope ‫ואז יוצא מהלולאה בגלל ה‬
cx ‫בנוסף שימו לב לערך של‬
‫מבצע‬
2 ‫קטע‬
‫לא מבצע‬
3 ‫קטע‬
mov al,2
mov bl,5
xor dx,dx
mov bh,0
again:
add dx,bx
dec bl
cmp bl,al
jge again
nop
mov al,2
mov bl,5
‫ מתאפסים ישר בהתחלה‬bl ‫ן‬al
xor dx,dx
xor ax,ax
mov bx,0
again:
add dx,ax
add ax,1
cmp ax,bx
jl again
nop
‫הילה קדמן‬
blog.csit.org.il
‫מדעי המחשב‬
‫‪15‬‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫מבוא לחקר ביצועים‬
‫שאלה ‪9‬‬
‫שאלה ‪11‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
‫מדעי המחשב‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫‪12‬‬
‫מודלים חישוביים‬
‫הפתרון לפרק זה נכתב ע"י רחל לודמר‪.‬‬
‫תרגיל ‪11‬‬
‫‪L  L1  L2  L1  L2‬‬
‫א‪.‬‬
‫כאשר‪:‬‬
‫}‪L1  {a k | k %2  1, k  0‬‬
‫}‪L2  {b k | k %2  0, k  0‬‬
‫ב‪.‬‬
‫‪b‬‬
‫‪a‬‬
‫‪a‬‬
‫‪b‬‬
‫‪a‬‬
‫‪b‬‬
‫‪b‬‬
‫‪b‬‬
‫‪b‬‬
‫‪blog.csit.org.il‬‬
‫‪a‬‬
‫‪b‬‬
‫‪a‬‬
‫‪a‬‬
‫הילה קדמן‬
‫מדעי המחשב‬
‫‪17‬‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫שאלה ‪12‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
‫מדעי המחשב‬
‫‪18‬‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫תכנות מונחה עצמים ‪Java‬‬
‫תרגיל ‪13‬‬
‫א‪.‬‬
‫(‪)1‬‬
‫שגיאת קומפילציה (הידור)‪.‬‬
‫הפעולה )(‪ foo‬אינה מוגדרת עבור עצם מהטיפוס ‪Object‬‬
‫(‪)6‬‬
‫שגיאת קומפילציה (הידור)‪.‬‬
‫הפעולה )(‪ foo‬אינה מוגדרת עבור עצם מהטיפוס ‪B‬‬
‫(‪)3‬‬
‫תקין‬
‫(‪)4‬‬
‫שגיאת קומפילציה (הידור)‪.‬‬
‫הפעולה )(‪ foo‬אינה מוגדרת עבור עצם מהטיפוס ‪Object‬‬
‫ב‪.‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
6112 - ‫ תשע"ו‬- 899381 :‫שאלון‬
‫מדעי המחשב‬
19
14 ‫תרגיל‬
.‫א‬
.‫ב‬
1
1
6
3
4
5
Object a
A
A
x(A)
0
x(A) 5
B
B
x(A) 0
x(B)
B
x(A) 5
1
x(B)
-5
-15
x(B)
4
40
B
A aa
x(A)
x(B)
‫הילה קדמן‬
2
x(A)
3
10 8
blog.csit.org.il
‫מדעי המחשב‬
‫ג‪.‬‬
‫‪61‬‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫(‪)1‬‬
‫(‪)6‬‬
‫(‪)3‬‬
‫(‪)4‬‬
‫(‪)5‬‬
‫(‪)2‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
‫מדעי המחשב‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫‪61‬‬
‫תכנות מונחה עצמים ‪C#‬‬
‫הפתרון לפרק זה נכתב ע"י דיתה אוהב‪-‬ציון‪.‬‬
‫שאלה ‪15‬‬
‫א‪1 .‬‬
‫שגיאת הידור‪ .‬העצם ‪ g‬מטיפוס המחלקה ‪ Object‬שלא מכילה ולא מכירה את הפעולה )(‪.Foo‬‬
‫(מחלקת אב לא מכירה פעולות שיש בבנים שלה)‬
‫א‪2 .‬‬
‫שגיאת הידור‪ .‬העצם ‪ g‬מטיפוס המחלקה ‪ B‬שלא מכילה ולא מכירה את הפעולה )(‪.Foo‬‬
‫(מחלקת אב לא מכירה פעולות שיש בבנים שלה)‬
‫א‪3 .‬‬
‫תקין‪.‬‬
‫א‪4 .‬‬
‫שגיאת הידור‪ .‬העצם ‪ g‬מטיפוס המחלקה ‪ Object‬שלא מכילה ולא מכירה את הפעולה )(‪.Foo‬‬
‫(מחלקת אב לא מכירה פעולות שיש בבנים שלה)‬
‫ב‪.‬‬
‫המחלקה ‪Artist‬‬
‫משתנה סטטי על פי הקריאה‬
‫‪Artist.num‬‬
‫‪public class Artist‬‬
‫{‬
‫;‪protected string name‬‬
‫;‪protected double sal‬‬
‫;‪protected static int num‬‬
‫} { )‪public Artist(double sal, string name‬‬
‫בנאי המתאים לקריאה עם שתי מחרוזות‬
‫הפעולה )(‪ Value‬מפעילה אותו‬
‫}{)‪public Artist(double sal, string name, string name1‬‬
‫} { )(‪public double Price‬‬
‫על פי ההקריאה )(‪base.Calc‬‬
‫מאחר וב‪ Singer -‬היא ‪,override‬‬
‫הרי באב היא וירטואלית‬
‫על פי ההקריאה )(‪base.Print‬‬
‫} { )‪public virtual double Calc(double d‬‬
‫} { )(‪public virtual void Print‬‬
‫מאחר וב ‪ Singer‬היא ‪,override‬‬
‫הרי באב היא וירטואלית‬
‫} { )(‪public int Train‬‬
‫מאחר ואין הגדרה לפעולה כמימוש‬
‫מהממשק ב ‪Singer‬הרי היא מוגדרת‬
‫באב‪.‬‬
‫‪blog.csit.org.il‬‬
‫}‬
‫הילה קדמן‬
‫מדעי המחשב‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫‪66‬‬
‫שאלה ‪16‬‬
‫א‪.‬‬
‫ההוראה השלישית ;‪ B b1= a1‬שגויה‪ .‬עצם מטיפוס מחלקה יורשת לא יכול להחזיק עצם ממחלקת האב‪.‬‬
‫;‪B b1 = (B)a1‬‬
‫יש לבצע המרה‬
‫ב‪.‬‬
‫;)‪aa = new B(3, 10‬‬
‫‪A‬‬
‫;)(‪ aa.Sub‬תפעיל את הפעולה מ‪ B -‬הדורסת‬
‫לכן הערך ישתנה ל‪8 -‬‬
‫השורה ;)(‪ ((A)ar[3]).TripleX‬תשנה את הערך‬
‫(הפעולות המופעלת הן הפעולות הדורסות של ‪). B‬‬
‫‪B.x= -15‬‬
‫השורה ;)(‪ ((B)ar[4]).TenTimesX‬תשנה את הערך ‪B.x= 40‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬
‫מדעי המחשב‬
‫‪63‬‬
‫שאלון‪ - 899381 :‬תשע"ו ‪6112 -‬‬
‫ג‪.‬‬
‫‪.1‬‬
‫תקין ‪ .‬הפלט ‪;xA=198 xB=99 :‬‬
‫‪.2‬‬
‫;)(‪a2.TenTimesX‬‬
‫לא תקין ‪ -‬שגיאת הידור‪.‬‬
‫הפניה מטיפוס האב לא מכירה פעולות ממחלקות יורשות‪ .‬תיקון אפשרי ‪((B)a2).TenTimesX(); :‬‬
‫‪.3‬‬
‫אותה שגיאה ‪ .‬ה‪ if -‬לא משנה‪.‬‬
‫‪.4‬‬
‫;)(‪((B)a1).TenTimesX‬‬
‫שגיאת זמן ריצה‪ .‬הפניה מטיפוס האב המחזיקה עצם מטיפוס אב לא מכירה את היורשים ממנה‪.‬‬
‫‪.5‬‬
‫תקין‪ .‬הפלט ‪;xA=2 xB=97 :‬‬
‫‪.6‬‬
‫תקין‪ .‬הפלט ‪.2 :‬‬
‫‪blog.csit.org.il‬‬
‫הילה קדמן‬