מדעי המחשב ב`

Transcription

מדעי המחשב ב`
‫מדעי המחשב‬
‫שאלון‪ - 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