You are on page 1of 55

ÌÈÈ„ÂÒÈ–ÏÚ ¯ÙÒ È˙·Ï ˙¯‚· Ƈ ∫‰ÈÁ·‰ ‚ÂÒ ‫מדינת ישראל‬

ÌÈÈˆÈÁ ÌÈÁ·Ï ˙¯‚· Æ· ‫משרד החינוך‬


≤∞±∞ ¨Ú¢˘˙ ıȘ ∫‰ÈÁ·‰ „ÚÂÓ
∂∞≥ ¨∏ππ≤∞μ ∫ÔÂχ˘‰ ¯ÙÒÓ

‫מ ד ע י ה מ ח ש ב ב׳‬
®Ï¢ÁÈ μ–Ï ‰ÓÏ˘‰© „ÂÓÈÏ ˙„ÈÁÈ ≤

‫הוראות לנבחן‬

Æ˙ÂÚ˘ ˘ÂÏ˘ ∫‰ÈÁ·‰ Í˘Ó Æ‡

ÆÌȘ¯Ù È˘ ‰Ê ÔÂχ˘· ∫‰Î¯Ú‰‰ Á˙ÙÓ ÔÂχ˘‰ ‰·Ó Æ·


˙„˜ μ∞ — ®≤μx≤© — ¨˙Âχ˘ Ú·¯‡ ‰Ê ˜¯Ù· — Ô¢‡¯ ˜¯Ù
ÆÌÈÈ˙˘ ÏÚ ˙ÂÚÏ ˘È Ô‰ÓÂ

˙„˜ μ∞ — ®≤μx≤© — ÌÈ¢ ÌÈÏÂÏÒÓ ‰Ú·¯‡· ˙Âχ˘ ‰Ê ˜¯Ù· — È˘ ˜¯Ù


¨˙„ÓÏ˘ ÏÂÏÒÓ· ˜¯ ˙Âχ˘ ÏÚ ‰Ú
Æ‰Ê ÏÂÏÒÓ· ˙Âχ˘‰ ˙ˆÂ·˜· ˙‡¯Â‰‰ ÈÙÏ
˙„˜ ±∞∞ — ΢‰Ò

Æ˙ÂÎ˙Ï Ô˙È‰ ·˘ÁÓÓ ıÂÁ ¨¯ÊÚ ¯ÓÂÁ ÏÎ ∫˘ÂÓÈ˘· ¯˙ÂÓ ¯ÊÚ ¯ÓÂÁ Æ‚

∫˙„ÁÂÈÓ ˙‡¯Â‰ Æ„
Ô¢‡¯‰ ˜¯Ù· ·˘ÁÓ ˙Ù˘· ·Â˙ÎÏ ˘¯„ ‰˙‡˘ ˙ÂÈÎ˙‰ ÏÎ ˙‡ ®±©
Æ Java ‡ C# — „·Ï· ˙Á‡ ‰Ù˘· ·Â˙Î
Æ Java ‡ C# — ·˙ÂÎ ‰˙‡ ‫ שפה‬ÂÊȇ· ˙¯·ÁÓ‰ Ï˘ ‫©≤® רשוֹם על הכריכה החיצונית‬
¨˙„ÓÏ˘ ‫מסלול‬‰ Ì˘ ˙‡ ˙¯·ÁÓ‰ Ï˘ ‫©≥® רשוֹם על הכריכה החיצונית‬
¨ÌÈÚˆȷ ¯˜ÁÏ ‡Â·Ó ¨¯Ï·Ó҇ ·˘ÁÓ ˙ÂίÚÓ ∫ÌÈÏÂÏÒÓ‰ ˙Ú·¯‡Ó „Á‡
ÆÌÈÓˆÚ ‰ÁÂÓ ˙ÂÎ˙ ¨ÌÈÈ·Â˘ÈÁ ÌÈÏ„ÂÓ
̘ӷ ‰Ï„‚ ˙‡ ·Â˙Î˙ ̇ ¨˙„˜ ÍÏ »„¯»È ‡Ï ·˙ÂÎ ‰˙‡˘ ˙ÂÈÎ˙· ∫‰¯Ú‰
ÆÍÙ‰Ï Â‡ ‰˘ ˙‡
Æ®‰Ó„ΠÌÈ·Â˘ÈÁ ¨ÌȘ¯Ù È˘‡¯© ‰ËÂÈËÎ ·Â˙ÎÏ Íˆ¯·˘ ‰Ó ÏÎ ¨ÌÈ„¯Ù ÌÈ„ÂÓÚ· ¨„·Ï· ‰ÈÁ·‰ ˙¯·ÁÓ· ·Â˙Î
°‰ÈÁ·‰ ˙ÏÈÒÙÏ Ì¯‚Ï ÏÂÏÚ ‰ÈÁ·‰ ˙¯·ÁÓÏ ıÂÁÓ˘ ÌÈÙ„ ÏÚ Ô‰˘ÏÎ ˙ÂËÂÈË ÌÂ˘È¯ ƉËÂÈË „ÂÓÚ ÏÎ ˘‡¯· ¢‰ËÂÈË¢ Ì«˘¯

.‫ההנחיות בשאלון זה מנוסחות בלשון זכר ומכוונות לנבחנות ולנבחנים כאחד‬


!‫בהצלחה‬
ØÛ„Ï ¯·ÚÓ Í˘Ó‰Ø
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠≤≠
‫השאלות‬
.‫בשאלון זה שני פרקים׃ פרק ראשון ופרק שני‬
.‫ לפי ההוראות בכל פרק‬,‫עליך לענות על שאלות משני הפרקים‬

®˙„˜ μ∞© ‫פרק ראשון‬


˙˜ÏÁÓ‰ Ï˘ ˙ÂÏÂÚÙ· ˘Ó˙˘‰Ï ÏÂÎÈ ‰˙‡ ˘ÂÓÈÓ ‰· ˘¯„˘ ‰Ï‡˘ Ïη ‫שים לב׃‬
ÆÔ˙‡ ˘ÓÓÏ ÈÏ· , Stack<T>, Queue<T>, List<T>, Node<T>
ÆÔ˙‡ ˘ÓÓÏ ÍÈÏÚ ˙ÂÙÒÂ ˙ÂÏÂÚÙ· ˘Ó˙˘Ó ‰˙‡ ̇
Æ®˙„˜ ≤μ — ‰Ï‡˘ ÏÎÏ© ¥≠± ˙Âχ˘‰Ó ÌÈÈ˙˘ ÏÚ ‰Ú
ÌÈÏ„‚ ÌÈÓÏ˘ ÌȯÙÒÓ ˙ÂÏÈÎÓ‰ st2 , st1 ˙ÂÈÒÁÓ È˙˘ ˙Ï·˜Ó‰ ˙ÈˆÈÁ ‰ÏÂÚÙ ·Â˙Î .1
˘‡¯Ï ¯˙ÂÈ· ·Â¯˜‰ ‫¯ ‡˙ הסכום של זוג האיברים הסמוכים‬ÈÊÁ˙ ‰ÏÂÚÙ‰ Æ0–Ó
Æst2 ˙ÈÒÁÓ· ÌÈÎÂÓÒ Ìȯ·È‡ ‚ÂÊ ÏÎ Ï˘ ÌÂÎÒ‰Ó Ï„‚ ÌÓÂÎÒ˘ ¨st1 ˙ÈÒÁÓ‰
Æ 0 ¯ÈÊÁ˙ ‰ÏÂÚÙ‰ — ‰ÊÎ ‚ÂÊ Ôȇ ̇
ÆÌȯ·È‡ È˘ ˙ÂÁÙÏ ˘È ˙ÂÈÒÁÓ‰Ó ˙Á‡ Ïη˘ Á‰
∫‰Ó‚„Ï

2
8 7
4 9
13 12
4 8
1 14
9 6
11 7
st2 st1

ÌÈÎÂÓÒ Ìȯ·È‡ È˘ ÏÎ ÌÂÎÒÓ ¯˙ÂÈ Ï„‚ st1 ˙ÈÒÁÓ· 12– 9 ÌÈÎÂÓÒ‰ Ìȯ·È‡‰ ÌÂÎÒ
Æ21 ¯ÈÊÁ˙ ‰ÏÂÚÙ‰ ÔÎÏ ¨st2 ˙ÈÒÁÓ·
ÚÈÙÂÓ ‡Â‰ ͇ ¨21–Ó ¯˙ÂÈ Ï„‚ ÌÓÂÎÒ˘ ÌÈÎÂÓÒ Ìȯ·È‡ ‚ÂÊ Ì‚ ˘È st1 ˙ÈÒÁÓ· ∫·Ï ÌÈ˘
Æ12– 9 ÌÈÎÂÓÒ‰ Ìȯ·È‡‰ ‚ÂÊÓ ˙ÈÒÁÓ· ¯˙ÂÈ ˜ÂÓÚ

Æ˙ÂÈÒÁÓ‰ Ï˘ ȯ˜Ӊ ÔÎÂ˙ ÏÚ ¯ÂÓ˘Ï Í¯Âˆ Ôȇ ∫‰¯Ú‰


Ø≥ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠≥≠
ƉÏÂÚ ¯„Ò· ÌÈÈÂÓÓ ‰ÊÓ ‰Ê ÌÈ¢ ÌÈÓÏ˘ ÌȯÙÒÓ ‰ÏÈÎÓ‰ ‰ÓÈ˘¯ ‡È‰ L .2
Ï˘ Ûˆ¯ ÏÎ ¯Â·Ú· ∫‰Ê‰ ÔÙ‡· ˙È·˘ ‰˘„Á ‰ÓÈ˘¯ ‡È‰ L Ï˘ ‫רשימת הטווחים‬
¯ÙÒÓ ÆÌȯÙÒÓ È˘ ÏÈÎÓ˘ „Á‡ ¯·È‡ ‫ ·רשימת הטווחים‬‰È‰È L –· ÌÈ·˜ÂÚ ÌȯÙÒÓ
ÆÛˆ¯· ¯˙ÂÈ· Ï„‚‰ ¯ÙÒÓ‰ ‡Â‰ È˘‰ ¯ÙÒӉ ¨Ûˆ¯· ¯˙ÂÈ· Ô˘‰ ¯ÙÒÓ‰ ‡Â‰ „Á‡
‚ˆÂÈÓ ‡Â‰ ¨ 1 ͯ‡· ‡Â‰ Ûˆ¯‰ ̇ Ư˙ÂÈ Â‡ 1 ͯ‡· ˙ÂÈ‰Ï ÏÂÎÈ Ûˆ¯
ÆÌÈ¢ · ÌȯÙÒÓ‰ È˘˘ ¯·È‡ È„È ÏÚ ‫·רשימת הטווחים‬

∫ÍÈÙÏ˘ L ‰ÓÈ˘¯‰ ¯Â·Ú· ¨‰Ó‚„Ï


3 4 5 12 19 20 100 101 102 103 104 null

∫‰È‰˙ L Ï˘ ‫רשימת הטווחים‬


3 5 12 12 19 20 100 104 null

Æ‫·¯ ·רשימת הטווחים‬ȇ ˙‚ˆÈÈÓ‰ ¨ RangeNode ‰˜ÏÁÓ‰ Ï˘ ȘÏÁ ¯Â‡È˙ ÍÈÙÏ

RangeNode
private int from; // Ûˆ¯· ¯˙ÂÈ· Ô˘‰ ¯ÙÒÓ‰
private int to; // Ûˆ¯· ¯˙ÂÈ· Ï„‚‰ ¯ÙÒÓ‰
public RangeNode(int from, int to)

ÌȯÙÒÓ ‰ÏÈÎÓ‰ ¨‰˜È¯ ‡Ï ‰ÓÈ˘¯ Ï·˜˙˘ ˙ÈˆÈÁ ‰ÏÂÚÙ C# –· ‡ Java –· ˘ÕÓÓÃ


Æ‰Ï˘ ‫¯ ‡˙ רשימת הטווחים‬ÈÊÁ˙ ¨‰ÏÂÚ ¯„Ò· ÌÈÈÂÓÓ ‰ÊÓ ‰Ê ÌÈ¢ ÌÈÓÏ˘

∫‡È‰ Java–· ‰ÏÂÚÙ‰ ˙¯˙ÂÎ


public static List1RangeNode2 createRangeList (List1Integer2 sourceList)

∫‡È‰ C# –· ‰ÏÂÚÙ‰ ˙¯˙ÂÎ


public static List1RangeNode2 CreateRangeList (List1int2 sourceList)

Æ set – get ˙ÂÏÂÚÙ ˘È RangeNode ‰˜ÏÁÓ· ˙ÂÂÎ˙‰Ó ˙Á‡ ÏÎÏ˘ Á‰


˘ÓÓÏ ÈÏ· RangeNode ‰˜ÏÁÓ‰ Ï˘ ‰·‰ ‰ÏÂÚÙ·Â ‰Ï‡ ˙ÂÏÂÚÙ· ˘Ó˙˘‰Ï ÏÂÎÈ ‰˙‡
ÆÔ˙‡
ÆÔ˙‡ ˘ÓÓÏ ÍÈÏÚ ¨˙ÂÙÒÂ ˙ÂÏÂÚÙ· ˘Ó˙˘Ó ‰˙‡ ̇

Ø¥ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠¥≠
C# –· „Á‡Â ¨®μ≠¥ ÌÈ„ÂÓÚ© Java –· „Á‡ ∫ÌÈÁÒÂ È˘ ÂÊ ‰Ï‡˘Ï ‫שים לב׃‬ .3
Æ˙„ÓÏ˘ ‰Ù˘‰ ÈÙ ÏÚ „Â·Ú Æ®∑≠∂ ÌÈ„ÂÓÚ©
Java –· Ìȯ˙ÂÙÏ
˙Âڄ‰ ˙·È˙ ˙Ȉ˜ÂÓ ˘Ï‚ ÏÎÏ Æ‰ÊÏ ‰Ê ˙Âڄ‰ ÁÂÏ˘Ï ÌÈÏÂÎÈ ¢˙ËÙËÙ¢ ¯˙‡· ÌÈ˘Ï‚
‰Ú„‰ ÏÎÏ ÆϷȘ ˘Ï‚‰˘ ˙Âڄ‰‰ ˙ÂÒÁÂ‡Ó ‰·È˙ Ïη Æ˙È·–ÂÏȘ 100 τ‚·
Ư˙ÂÈ ‰Â·‚ ‰Ï˘ ȯ„ÈÒ‰ ¯ÙÒÓ‰ ¯˙ÂÈ ‰˘„Á ‰Ú„‰‰˘ ÏÎÎ Æȯ„ÈÒ ¯ÙÒÓ ‰ŒˆO»Ó
Æ˙È·–ÂÏȘ· ‰Ú„‰‰ τ‚ ¨È¯Â„ÈÒ ¯ÙÒÓ ¨‰Ú„‰‰ ÔÎÂ˙ ¨ÁÏ¢‰ Ì˘ ˙‡ ‰ÏÈÎÓ ‰Ú„‰ ÏÎ
ÆÌÏ˘ ¯ÙÒÓ ‡Â‰ ‰Ú„‰‰ τ‚
Ɖ·È˙‰Ó ˜ÏÁ ‡Â‰˘ ‰Ù˘‡ ÏÒ ˘È ˙Âڄ‰‰ ˙·È˙Ï
Æ˙ÂÏÈÚÙ ˙Âڄ‰ ˙‡¯˜ ‰Ù˘‡‰ ÏÒ· Ôȇ ˙Âڄ‰‰ ˙·È˙· ˙‡ˆÓ˘ ˙Âڄ‰
Æ‰Ù˘‡‰ ÏÒ· ˙‡ˆÓ˘ ˙Âڄ‰ ˜ÂÁÓÏ Â‡ ‰Ù˘‡‰ ÏÒÏ ˙ÂÏÈÚÙ ˙Âڄ‰ ¯È·Ú‰Ï ÏÂÎÈ ˘Ï‚
ÆÔ‰Ï˘ ȯ„ÈÒ‰ ¯ÙÒÓ‰ ÈÂÈ˘Ï ˙ӯ‚ ‰ȇ ‰Ù˘‡‰ ÏÒÏ ˙Âڄ‰ ˙¯·Ú‰
ÈÂÈ˘Ï ˙ӯ‚ ‰ȇ ˙Âڄ‰ ˙˜ÈÁÓ Æ‰·È˙· ¯˙ÂÈ ˙ÂÓÈȘ Ôȇ ‰Ù˘‡‰ ÏÒÓ Â˜ÁÓ˘ ˙Âڄ‰
Ɖ·È˙· ¯‡˘˘ ˙Âڄ‰‰ Ï˘ ȯ„ÈÒ‰ ¯ÙÒÓ‰

∫ MessageBox — ‫ תיבת הודעות‬‰˜ÏÁÓ‰ ˜˘ŸÓÓœ Ó ˜ÏÁ ÍÈÙÏ


MessageBox
public MessageBox(String owner) ‰·È˙‰ ÏÚ· Ì˘ ˙‡ ˙Ï·˜Ó‰ ‰· ‰ÏÂÚÙ
Æ˙È·–ÂÏȘ 100 τ‚· ‰˜È¯ ‰·È˙ ˙¯ˆÂÈÂ
public boolean addMessage(Message m) ÒÂÙÈËÓ m ‰˘„Á ‰Ú„‰ ‰ÙÈÒÂÓ‰ ‰ÏÂÚÙ
ÆMessage
¨‰˘„Á‰ ‰Ú„Â‰Ï ‰·È˙· ÌÂ˜Ó È„ Ôȇ ̇
˙ÂÏÚ· ˙Âڄ‰‰ ‰Ù˘‡‰ ÏÒÓ Â˜ÁÓÈÈ
„Ú ¯˙ÂÈ· ÌÈÎÂÓ‰ ÌÈȯ„ÈÒ‰ ÌȯÙÒÓ‰
Ɖ˘„Á‰ ‰Ú„Â‰Ï ÌÂ˜Ó È„ ‰È‰È˘
˙Âڄ‰ È„ Ôȇ ‰·È˙· ÌÂ˜Ó È„ Ôȇ ̇
ÛÒÂÂ˙˙ ‡Ï ‰Ú„‰‰ ¨‰Ù˘‡‰ ÏÒ· ˜ÂÁÓÏ
Æ‰Ù˘‡‰ ÏÒÓ ˙Âڄ‰ ˜ÁÓÈÈ ‡Ï ¨‰·È˙Ï
‰ÙÒ»‰ ‰Ú„‰‰ ̇ true ¯ÈÊÁ˙ ‰ÏÂÚÙ‰
Æ false ¯ÈÊÁ˙ ‰ÏÂÚÙ‰ ˙¯Á‡ ¨‰·È˙Ï
∫˙ÂÁ‰
ÆÔ΄ÂÚÓ È¯Â„ÈÒ ¯ÙÒÓ ˘È m –Ï
Æ˙Âڄ‰‰ ˙·È˙ Ï„Â‚Ó Ô˘ ‰Ú„‰‰ τ‚
public int removeFromBin() ¯ÙÒÓ‰ ˙ÏÚ· ‰Ú„‰‰ ˙‡ ˙˜ÁÂÓ‰ ‰ÏÂÚÙ
‰¯ÈÊÁÓ ‰Ù˘‡‰ ÏÒ· ¯˙ÂÈ· Ô˘‰ ȯ„ÈÒ‰
Æ˙È·–ÂÏȘ· ‰Ï„‚ ˙‡
public void emptyBin() Æ‰Ù˘‡‰ ÏÒÓ ˙Âڄ‰‰ ÏÎ ˙‡ ˙˜ÁÂÓ‰ ‰ÏÂÚÙ
public int getActiveSize() ˙È·–ÂÏȘ· τ‚‰ ÏÎ ÍÒ ˙‡ ‰¯ÈÊÁÓ‰ ‰ÏÂÚÙ
Æ˙ÂÏÈÚÙ‰ ˙Âڄ‰‰ ÏÎ ˙ÂÒÙÂ˙˘
public int getBinSize() ˙È·–ÂÏȘ· τ‚‰ ÏÎ ÍÒ ˙‡ ‰¯ÈÊÁÓ‰ ‰ÏÂÚÙ
Æ‰Ù˘‡‰ ÏÒ· ˙Âڄ‰‰ ÏÎ ˙ÂÒÙÂ˙˘
Øμ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠μ≠
˙‡Â ¨ MessageBox –· ‰Ú„‰ ˙‚ˆÈÈÓ‰ Message ‰˜ÏÁÓ‰ ˙¯˙ÂÎ ˙‡ Java –· ·Â˙Î .‫א‬
ƉÂÎ˙ ÏÎÏ „ÂÚÈ˙ Ì¢¯ Æ‰Ï˘ ˙ÂÂÎ˙‰
Æ‰Ï˘ ˙ÂÂÎ˙‰ ˙‡Â MessageBox ‰˜ÏÁÓ‰ ˙¯˙ÂÎ ˙‡ Java –· ·Â˙Î .‫ב‬
ƉÂÎ˙ ÏÎÏ „ÂÚÈ˙ Ì¢¯
ÆMessageBox ‰˜ÏÁÓ‰ ˜˘ÓÓ· ˙‚ˆÂÓ‰ addMessage ‰ÏÂÚÙ‰ ˙‡ Java –· ˘ÓÓ .‫ג‬
˘ÓÓÏ ÈÏ·Ó MessageBox ‰˜ÏÁÓ‰ Ï˘ ˙¯Á‡‰ ˙ÂÏÂÚÙ· ˘Ó˙˘‰Ï ÏÂÎÈ ‰˙‡
ÆÔ˙‡
Message ‰˜ÏÁÓÏ ˙ÂÎÈÈ˘‰ ‡ ÛÈÚÒ· ˙Ó˘¯˘ ˙ÂÂÎ˙‰ ÏÎÏ˘ ÁÈ‰Ï ÏÂÎÈ ‰˙‡
Æ set – get ˙ÂÏÂÚÙ ˘È
ÌÂÈ· ÌÚÙ˘ ËÏÁ‰ ¨‰·È˙‰ ˙‡ ÏÈ„‚‰Ï ¢˜È· ÌÈ·¯ ¢ÌÈËÙËÙ¢ ÌÈ˘Ï‚˘ ¯Á‡Ï . ‫ד‬
ÈÙÏ ˙·È˙‰ ˙‡ ÏÈ„‚˙ ‡ ÔÈ˘˙ ÌÈ˘Ï‚‰ Ï˘ ˙·È˙‰ ÏÎ ÏÚ ˙ίÚÓ‰ ¯Â·Ú˙
‰ÒÂÙ˙‰˘ ‰·È˙ ¨2 ÈÙ Ï„‚Â˙ 80%–Ó ¯˙ÂÈ ‰Ï˘ ‰ÒÂÙ˙‰˘ ‰·È˙ ÆÌ‰Ï˘ ˙ÂÏÈÚÙ‰
ÆȈÁ· Ô˘Â˙ 30%–Ó ˙ÂÁÙ ‰Ï˘
MessageBox ‰˜ÏÁÓ‰ ˙ÂÂÎ˙ ˙‡ ˙Â˘Ï ͯˈ˙ ¨ÂÊ ‰ËÏÁ‰ ¯Â‡Ï ̇‰ (1)
¨˙¢„Á‰ ˙ÂÂÎ˙‰ ˙‡ ·Â˙Π¨ÚÂ„Ó ¯·Ò‰ — ÔΠ̇ ø· ÛÈÚÒ· ˙·˙΢
ÆÚÂ„Ó ¯·Ò‰ — ‡Ï ̇Â
ø‚ ÛÈÚÒ· ˙·˙΢ ‰ÏÂÚÙ‰ ˙‡ ˙Â˘Ï ͯˈ˙ ¨ÂÊ ‰ËÏÁ‰ ¯Â‡Ï ̇‰ (2)
ÆÚÂ„Ó ¯·Ò‰ — ‡Ï ̇ ¨˙¢ÚÏ ˘È ÌÈÈÂÈ˘ ÂÏȇ ¯·Ò‰ — ÔΠ̇

Ø∂ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠∂≠
C# –· Ìȯ˙ÂÙÏ
˙Âڄ‰ ˙·È˙ ˙Ȉ˜ÂÓ ˘Ï‚ ÏÎÏ Æ‰ÊÏ ‰Ê ˙Âڄ‰ ÁÂÏ˘Ï ÌÈÏÂÎÈ ¢˙ËÙËÙ¢ ¯˙‡· ÌÈ˘Ï‚
‰Ú„‰ ÏÎÏ ÆϷȘ ˘Ï‚‰˘ ˙Âڄ‰‰ ˙ÂÒÁÂ‡Ó ‰·È˙ Ïη Æ˙È·–ÂÏȘ 100 τ‚·
Ư˙ÂÈ ‰Â·‚ ‰Ï˘ ȯ„ÈÒ‰ ¯ÙÒÓ‰ ¯˙ÂÈ ‰˘„Á ‰Ú„‰‰˘ ÏÎÎ Æȯ„ÈÒ ¯ÙÒÓ ‰ŒˆO»Ó
Æ˙È·–ÂÏȘ· ‰Ú„‰‰ τ‚ ¨È¯Â„ÈÒ ¯ÙÒÓ ¨‰Ú„‰‰ ÔÎÂ˙ ¨ÁÏ¢‰ Ì˘ ˙‡ ‰ÏÈÎÓ ‰Ú„‰ ÏÎ
ÆÌÏ˘ ¯ÙÒÓ ‡Â‰ ‰Ú„‰‰ τ‚
Ɖ·È˙‰Ó ˜ÏÁ ‡Â‰˘ ‰Ù˘‡ ÏÒ ˘È ˙Âڄ‰‰ ˙·È˙Ï
Æ˙ÂÏÈÚÙ ˙Âڄ‰ ˙‡¯˜ ‰Ù˘‡‰ ÏÒ· Ôȇ ˙Âڄ‰‰ ˙·È˙· ˙‡ˆÓ˘ ˙Âڄ‰
Æ‰Ù˘‡‰ ÏÒ· ˙‡ˆÓ˘ ˙Âڄ‰ ˜ÂÁÓÏ Â‡ ‰Ù˘‡‰ ÏÒÏ ˙ÂÏÈÚÙ ˙Âڄ‰ ¯È·Ú‰Ï ÏÂÎÈ ˘Ï‚
ÆÔ‰Ï˘ ȯ„ÈÒ‰ ¯ÙÒÓ‰ ÈÂÈ˘Ï ˙ӯ‚ ‰ȇ ‰Ù˘‡‰ ÏÒÏ ˙Âڄ‰ ˙¯·Ú‰
ÈÂÈ˘Ï ˙ӯ‚ ‰ȇ ˙Âڄ‰ ˙˜ÈÁÓ Æ‰·È˙· ¯˙ÂÈ ˙ÂÓÈȘ Ôȇ ‰Ù˘‡‰ ÏÒÓ Â˜ÁÓ˘ ˙Âڄ‰
Ɖ·È˙· ¯‡˘˘ ˙Âڄ‰‰ Ï˘ ȯ„ÈÒ‰ ¯ÙÒÓ‰
∫ MessageBox — ‫ תיבת הודעות‬‰˜ÏÁÓ‰ ˜˘ŸÓÓœ Ó ˜ÏÁ ÍÈÙÏ

MessageBox
public MessageBox(string owner) ˙¯ˆÂÈ ‰·È˙‰ ÏÚ· Ì˘ ˙‡ ˙Ï·˜Ó‰ ‰· ‰ÏÂÚÙ
Æ˙È·–ÂÏȘ 100 τ‚· ‰˜È¯ ‰·È˙
public bool AddMessage(Message m) ÒÂÙÈËÓ m ‰˘„Á ‰Ú„‰ ‰ÙÈÒÂÓ‰ ‰ÏÂÚÙ
ÆMessage
¨‰˘„Á‰ ‰Ú„Â‰Ï ‰·È˙· ÌÂ˜Ó È„ Ôȇ ̇
ÌȯÙÒÓ‰ ˙ÂÏÚ· ˙Âڄ‰‰ ‰Ù˘‡‰ ÏÒÓ Â˜ÁÓÈÈ
ÌÂ˜Ó È„ ‰È‰È˘ „Ú ¯˙ÂÈ· ÌÈÎÂÓ‰ ÌÈȯ„ÈÒ‰
Ɖ˘„Á‰ ‰Ú„‰Ï
˜ÂÁÓÏ ˙Âڄ‰ È„ Ôȇ ‰·È˙· ÌÂ˜Ó È„ Ôȇ ̇
‡Ï ¨‰·È˙Ï ÛÒÂÂ˙˙ ‡Ï ‰Ú„‰‰ ¨‰Ù˘‡‰ ÏÒ·
Æ‰Ù˘‡‰ ÏÒÓ ˙Âڄ‰ ˜ÁÓÈÈ
¨‰·È˙Ï ‰ÙÒ»‰ ‰Ú„‰‰ ̇ true ¯ÈÊÁ˙ ‰ÏÂÚÙ‰
Æ false ¯ÈÊÁ˙ ‰ÏÂÚÙ‰ ˙¯Á‡
∫˙ÂÁ‰
ÆÔ΄ÂÚÓ È¯Â„ÈÒ ¯ÙÒÓ ˘È m –Ï
Æ˙Âڄ‰‰ ˙·È˙ Ï„Â‚Ó Ô˘ ‰Ú„‰‰ τ‚
public int RemoveFromBin() ¯ÙÒÓ‰ ˙ÏÚ· ‰Ú„‰‰ ˙‡ ˙˜ÁÂÓ‰ ‰ÏÂÚÙ
‰¯ÈÊÁÓ ‰Ù˘‡‰ ÏÒ· ¯˙ÂÈ· Ô˘‰ ȯ„ÈÒ‰
Æ˙È·–ÂÏȘ· ‰Ï„‚ ˙‡
public void EmptyBin() Æ‰Ù˘‡‰ ÏÒÓ ˙Âڄ‰‰ ÏÎ ˙‡ ˙˜ÁÂÓ‰ ‰ÏÂÚÙ
public int GetActiveSize() ˙È·–ÂÏȘ· τ‚‰ ÏÎ ÍÒ ˙‡ ‰¯ÈÊÁÓ‰ ‰ÏÂÚÙ
Æ˙ÂÏÈÚÙ‰ ˙Âڄ‰‰ ÏÎ ˙ÂÒÙÂ˙˘
public int GetBinSize() ˙È·–ÂÏȘ· τ‚‰ ÏÎ ÍÒ ˙‡ ‰¯ÈÊÁÓ‰ ‰ÏÂÚÙ
Æ‰Ù˘‡‰ ÏÒ· ˙Âڄ‰‰ ÏÎ ˙ÂÒÙÂ˙˘

Ø∑ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠∑≠
˙‡Â ¨ MessageBox –· ‰Ú„‰ ˙‚ˆÈÈÓ‰ Message ‰˜ÏÁÓ‰ ˙¯˙ÂÎ ˙‡ C# –· ·Â˙Î .‫א‬
ƉÂÎ˙ ÏÎÏ „ÂÚÈ˙ Ì¢¯ Æ‰Ï˘ ˙ÂÂÎ˙‰
Æ‰Ï˘ ˙ÂÂÎ˙‰ ˙‡Â MessageBox ‰˜ÏÁÓ‰ ˙¯˙ÂÎ ˙‡ C# –· ·Â˙Î .‫ב‬
ƉÂÎ˙ ÏÎÏ „ÂÚÈ˙ Ì¢¯
ÆMessageBox ‰˜ÏÁÓ‰ ˜˘ÓÓ· ˙‚ˆÂÓ‰ AddMessage ‰ÏÂÚÙ‰ ˙‡ C# –· ˘ÓÓ .‫ג‬
˘ÓÓÏ ÈÏ·Ó MessageBox ‰˜ÏÁÓ‰ Ï˘ ˙¯Á‡‰ ˙ÂÏÂÚÙ· ˘Ó˙˘‰Ï ÏÂÎÈ ‰˙‡
ÆÔ˙‡
Message ‰˜ÏÁÓÏ ˙ÂÎÈÈ˘‰ ‡ ÛÈÚÒ· ˙Ó˘¯˘ ˙ÂÂÎ˙‰ ÏÎÏ˘ ÁÈ‰Ï ÏÂÎÈ ‰˙‡
Æ Set – Get ˙ÂÏÂÚÙ ˘È
ÌÂÈ· ÌÚÙ˘ ËÏÁ‰ ¨‰·È˙‰ ˙‡ ÏÈ„‚‰Ï ¢˜È· ÌÈ·¯ ¢ÌÈËÙËÙ¢ ÌÈ˘Ï‚˘ ¯Á‡Ï . ‫ד‬
ÈÙÏ ˙·È˙‰ ˙‡ ÏÈ„‚˙ ‡ ÔÈ˘˙ ÌÈ˘Ï‚‰ Ï˘ ˙·È˙‰ ÏÎ ÏÚ ˙ίÚÓ‰ ¯Â·Ú˙
‰ÒÂÙ˙‰˘ ‰·È˙ ¨2 ÈÙ Ï„‚Â˙ 80%–Ó ¯˙ÂÈ ‰Ï˘ ‰ÒÂÙ˙‰˘ ‰·È˙ ÆÌ‰Ï˘ ˙ÂÏÈÚÙ‰
ÆȈÁ· Ô˘Â˙ 30%–Ó ˙ÂÁÙ ‰Ï˘
MessageBox ‰˜ÏÁÓ‰ ˙ÂÂÎ˙ ˙‡ ˙Â˘Ï ͯˈ˙ ÂÊ ‰ËÏÁ‰ ¯Â‡Ï ̇‰ (1)
¨˙¢„Á‰ ˙ÂÂÎ˙‰ ˙‡ ·Â˙Π¨ÚÂ„Ó ¯·Ò‰ — ÔΠ̇ ø· ÛÈÚÒ· ˙·˙΢
ÆÚÂ„Ó ¯·Ò‰ — ‡Ï ̇Â
ø‚ ÛÈÚÒ· ˙·˙΢ ‰ÏÂÚÙ‰ ˙‡ ˙Â˘Ï ͯˈ˙ ÂÊ ‰ËÏÁ‰ ¯Â‡Ï ̇‰ (2)
ÆÚÂ„Ó ¯·Ò‰ — ‡Ï ̇ ¨˙¢ÚÏ ˘È ÌÈÈÂÈ˘ ÂÏȇ ¯·Ò‰ — ÔΠ̇

Ø∏ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠∏≠

C# –· „Á‡Â ¨ ®π≠∏ ÌÈ„ÂÓÚ© Java –· „Á‡ ∫ÌÈÁÒÂ È˘ ÂÊ ‰Ï‡˘Ï ‫שים לב׃‬ .4
Æ˙„ÓÏ˘ ‰Ù˘‰ ÈÙ ÏÚ „Â·Ú Æ®±±≠±∞ ÌÈ„ÂÓÚ©
Java –· Ìȯ˙ÂÙÏ
Æ Java –· ˙·Â˙Ή ˙ÂÈˆÈÁ ˙ÂÏÂÚÙ ≤ ÍÈÙÏ
public static void sod1(Queue1Integer2 qu , Stack1Integer2 st)
{
if (! (qu.isEmpty ()))
{
int x = qu.remove ();
sod1(qu , st);
st.push (x);
qu.insert (x);
}
}

public static void sod2 (Queue1Integer2 qu , Stack1 Integer2 st)


{
if (! (qu.isEmpty ()))
{
int x = qu.remove ();
sod2 (qu , st);
int y = st.pop ();
qu.insert (x + y);
}
}

Øπ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠π≠

∫ Queue1Integer2 ÒÂÙÈËÓ myQueue ¯Â˙‰ ÔÂ˙

ÌÈÎ¯Ú ˙ÒΉ" 9 8 1 3 4 " ÌÈÎ¯Ú ˙‡ˆÂ‰


∫˙ÈÎ˙‰ Ú˘ ÔÂ˙Â
Stack1Integer2 myStack = new Stack1Integer2 ();
sod1(myQueue , myStack);
sod2 (myQueue , myStack);

Æ·˜ÚÓ‰ ˙‡ Ì¢¯Â ˙ÈÎ˙‰ Ú˘ Ï˘ Úˆȷ‰ ¯Á‡ ·Â˜Ú (1) .‫א‬


Æ˙Ó˘¯˘ ·˜ÚÓ‰ ÈÙ ÏÚ ®ii©≠®i© ÌÈÙÈÚÒ–˙˙‰ ÏÚ ‰Ú (2)
myStack ˙ÈÒÁÓ‰ ‰ÏÈΉ ‰Ó myQueue ¯Â˙‰ ÏÈΉ ‰Ó ·Â˙Î (i)

sod1(myQueue , myStack); ∫ÔÂÓÈʉ ¯Á‡Ï


myStack ˙ÈÒÁÓ‰ ‰ÏÈÎÓ ‰Ó myQueue ¯Â˙‰ ÏÈÎÓ ‰Ó ·Â˙Î (ii)
Æ˙ÈÎ˙‰ Ú˘ ÛÂÒ·
ÒÂÙÈËÓ myQueue ˜È¯ ‡Ï ‰˘ÏÎ ¯Â˙ ¯Â·Ú· sod1 ‰ÏÂÚÙ‰ ˙Úˆ·Ó ‰Ó .‫ב‬
ø Stack1Integer2 ÒÂÙÈËÓ ‰˜È¯ myStack ˙ÈÒÁÓ Queue1Integer2
ÒÂÙÈËÓ myQueue ˜È¯ ‡Ï ‰˘ÏÎ ¯Â˙ ¯Â·Ú· ˙ÈÎ˙‰ Ú˘ Úˆ·Ó ‰Ó .‫ג‬
ø Stack1Integer2 ÒÂÙÈËÓ ‰˜È¯ myStack ˙ÈÒÁÓ Queue1Integer2

ر∞ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ±∞ ≠
C# –· Ìȯ˙ÂÙÏ
Æ C# –· ˙·Â˙Ή ˙ÂÈˆÈÁ ˙ÂÏÂÚÙ ≤ ÍÈÙÏ
public static void Sod1 (Queue1int2 qu , Stack1int2 st)
{
if (! (qu.IsEmpty ()))
{
int x = qu. Remove ();
Sod1(qu , st);
st.Push (x);
qu.Insert (x);
}
}

public static void Sod2 (Queue1int2 qu , Stack1int2 st)


{
if (! (qu.IsEmpty ()))
{
int x = qu. Remove ();
Sod2 (qu , st);
int y = st.Pop ();
qu.Insert (x + y);
}
}

ر± „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ±± ≠

Queue1int2 ÒÂÙÈËÓ myQueue ¯Â˙‰ ÔÂ˙

ÌÈÎ¯Ú ˙ÒΉ
" 9 8 1 3 4 " ÌÈÎ¯Ú ˙‡ˆÂ‰
∫˙ÈÎ˙‰ Ú˘ ÔÂ˙Â
Stack1int2 myStack = new Stack1int2 ();
Sod1(myQueue , myStack);
Sod2 (myQueue , myStack);

Æ·˜ÚÓ‰ ˙‡ Ì¢¯Â ˙ÈÎ˙‰ Ú˘ Ï˘ Úˆȷ‰ ¯Á‡ ·Â˜Ú (1) .‫א‬


Æ˙Ó˘¯˘ ·˜ÚÓ‰ ÈÙ ÏÚ ®ii©≠®i© ÌÈÙÈÚÒ–˙˙‰ ÏÚ ‰Ú (2)
myStack ˙ÈÒÁÓ‰ ‰ÏÈΉ ‰Ó myQueue ¯Â˙‰ ÏÈΉ ‰Ó ·Â˙Î (i)

Sod1 (myQueue , myStack); ∫ÔÂÓÈʉ ¯Á‡Ï


myStack ˙ÈÒÁÓ‰ ‰ÏÈÎÓ ‰Ó myQueue ¯Â˙‰ ÏÈÎÓ ‰Ó ·Â˙Î (ii)
Æ˙ÈÎ˙‰ Ú˘ ÛÂÒ·
ÒÂÙÈËÓ myQueue ˜È¯ ‡Ï ‰˘ÏÎ ¯Â˙ ¯Â·Ú· Sod1 ‰ÏÂÚÙ‰ ˙Úˆ·Ó ‰Ó .‫ב‬
ø Stack1int2 ÒÂÙÈËÓ ‰˜È¯ myStack ˙ÈÒÁÓ Queue1int2
ÒÂÙÈËÓ myQueue ˜È¯ ‡Ï ‰˘ÏÎ ¯Â˙ ¯Â·Ú· ˙ÈÎ˙‰ Ú˘ Úˆ·Ó ‰Ó .‫ג‬
ø Stack1int2 ÒÂÙÈËÓ ‰˜È¯ myStack ˙ÈÒÁÓ Queue1int2

ر≤ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ±≤ ≠
®˙„˜ μ∞© ‫פרק שני‬
∫ÌÈ¢ ÌÈÏÂÏÒÓ ‰Ú·¯‡· ˙Âχ˘ ‰Ê ˜¯Ù·
±∑≠±≤ ßÓÚ ¨¯Ï·Ó҇ ·˘ÁÓ ˙ÂίÚÓ
≤∏≠±∏ ßÓÚ ¨ÌÈÚˆȷ ¯˜ÁÏ ‡Â·Ó
≥≤≠≤π ßÓÚ ¨ÌÈÈ·Â˘ÈÁ ÌÈÏ„ÂÓ
Æμμ≠¥μ ßÓÚ ¨ C# –· ÌÈÓˆÚ ‰ÁÂÓ ˙ÂÎ˙ ª¥≥≠≥≥ ßÓÚ ¨ Java –· ÌÈÓˆÚ ‰ÁÂÓ ˙ÂÎ˙
Æ‫ענה רק על שאלות במסלול שלמדת‬
‫מערכות מחשב ואסמבלר‬
Æ®˙„˜ ≤μ — ‰Ï‡˘ ÏÎÏ© ∏≠μ ˙Âχ˘‰Ó ÌÈÈ˙˘ ÏÚ ‰Ú ¨‰Ê ÏÂÏÒÓ ˙„ÓÏ Ì‡
Æ̉È˘ ÏÚ ‰Ú Æ̉ÈÈ· ¯˘˜ Ôȇ˘ ¨·≠‡ ¨ÌÈÙÈÚÒ È˘ ÂÊ ‰Ï‡˘· .5
∫ͯÚÓ ¯„‚‰ ÌÈÂ˙‰ Ú˘ӷ .‫א‬
ARR DB 5 DUP (?)
Æ ARR ͯÚÓ‰ ȇ˙ ÏÎ ˙‡ 0 –Ï ÏÁ˙‡Ï Ì˙¯ËÓ˘ ¯Ï·ÓÒ‡· iv-i ÌÈÚ˘ 4 ÍÈÙÏ
Ú·˜Â ¨ÍÈÙÏ˘ iv-i ÌÈÚ˘‰Ó „Á‡ ÏÎ Ï˘ Úˆȷ‰ ȯÁ‡ ·˜ÚÓ ˙Ï·Ë ˙¯ÊÚ· ·Â˜Ú
Æ˘¯„‰ ˙‡ Úˆ·Ó Âȇ ‡ ˘¯„‰ ˙‡ Úˆ·Ó ‡Â‰ ̇
i MOV SI , 0
MOV CX , 4
A1: MOV ARR[SI] , 0
INC SI
LOOP A1

ii MOV CX , 5
LEA BX , ARR
MOV AL , 0
A1: MOV [BX] , AL
INC BX
LOOP A1

iii MOV BX , 5
DEC BX
A1: MOV ARR[BX] , 0
DEC BX
JNZ A1

iv MOV DI , 0
A1: MOV ARR[DI] , 0
INC DI
CMP DI , 5
JC A1
ر≥ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ±≥ ≠
®Æ‡ ÛÈÚÒÏ ¯˘˜ Ôȇ© .‫ב‬
ƉÏÈÓ Ï„Â‚· ÌȯÙÒÓ 10 ÌÈÒÁÂ‡Ó ˙ÈÒÁÓ·
Æ0 –Ó ÌÈ˘˘ ÌÈÈ‚Âʉ ÌȯÙÒÓ‰ ˙‡ ˜¯ ˙ÈÒÁÓ· ¯È‡˘‰Ï ˘È ‰Ï‡‰ ÌȯÙÒÓ‰ ÔÈ·Ó
Æ˙ÈÒÁÓ· ¯‡˘˘ ÌȯÙÒÓ‰ ˙ÂÓÎ ˙‡ DX ¯‚‡· ÔÒÁ‡Ï ˘È ÔÎ ÂÓÎ
Æ 0 –Ó Ô˘˘ „Á‡ È‚ÂÊ ¯ÙÒÓ ˙ÂÁÙÏ ˘È˘ Á‰
Æ˙‡Ê Úˆ·Ó‰ ˙ÈÎ˙ Ú˘ ÍÈÙÏ
Æ vi-i ÌȯÙÒÓ· ÌÈÓÂÒÓ‰ ˙ÂÓ˜ӷ ˙Â¯Â˘ ÂËӢ‰ ˙ÈÎ˙‰ ÚËMÓ
˙‡ ÌȯÙÒÓ‰Ó „Á‡ ÏÎ „ÈÏ ·Â˙Π¨˙ÂÓÂÒÓ‰ ˙Â¯Â˘‰ ȯÙÒÓ ˙‡ Í˙¯·ÁÓ· Ì¢¯
Æ˘¯„‰ ˙‡ Úˆ·È ˙ÈÎ˙‰ Ú˘˘ È„Î ¨‰¯ÒÁ‰ ‰„˜ى ˙¯Â˘

MOV CX , 10
MOV BX , 0
A1: POP AX
MOV DX , AX
i
JC A2
ii
SHL DX , 1
JNC A2
MOV [BX] , AX
iii
iv A2:
SUB BX , 2
A3: MOV AX , [BX]
v
INC CX
vi
CMP BX , 0
JGE A3
MOV DX , CX

ر¥ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ±¥ ≠

Æ̉È˘ ÏÚ ‰Ú Æ̉ÈÈ· ¯˘˜ Ôȇ˘ ¨·≠‡ ¨ÌÈÙÈÚÒ È˘ ÂÊ ‰Ï‡˘· .6


ÌȯÙÒÓ‰ ˙ÏÙÎÓ ˙‡ ˙·˘ÁÓ 0 –Ó Ï„‚ ÌÏ˘ K ¯ÙÒÓ ÏÚ ˙¯ˆÚ ‰ÏÂÚÙ‰ .‫א‬
Æ K! ˙ÓÂÒÓÂ ¨ K „Ú 1 –Ó
K! = 1$ 2 $ 3 $ 4:......:(K - 1) $ K
5! = 1 $ 2 $ 3 $ 4 $ 5 ∫‰Ó‚„Ï
‰¯„‚‰‰ ÈÙ ÏÚ K! ÈÂËÈ·‰ Í¯Ú ˙‡ ·˘ÁÏ Ì˙¯ËÓ˘ ¨¯Ï·ÓÒ‡· iv-i ÌÈÚ˘ 4 ÍÈÙÏ
Æ AX –· ‰‡ˆÂ˙‰ ˙‡ ·Èˆ‰Ï ¨‰ÏÚÓÏ ‰·Â˙Ή
∫¯„‚‰ ÌÈÂ˙‰ Ú˘ӷ
K DW 4
‡Â‰ ̇ Ú·˜Â ¨ÍÈÙÏ˘ iv-i ÌÈÚ˘‰Ó „Á‡ ÏÎ Úˆȷ ¯Á‡ ·˜ÚÓ ˙Ï·Ë ˙¯ÊÚ· ·Â˜Ú
Æ˘¯„‰ ˙‡ Úˆ·Ó Âȇ ‡ ˘¯„‰ ˙‡ Úˆ·Ó

i XOR CX , CX
MOV AX , 1
MOV CX , K
A1: MUL CX
LOOP A1

ii MOV AX , 1
MOV CX , 1
A1: MUL CX
INC AX
CMP AX , K
JBE A1

iii XOR CX , CX
MOV AX , K
INC CX
A1: MUL CX
DEC AX
LOOP A1

iv MOV AX , 1
MOV CX , K
A1: MUL CX
DEC CX
CMP CX , 0
JNZ A1
Ø±μ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ±μ ≠
®Æ‡ ÛÈÚÒÏ ¯˘˜ Ôȇ© .‫ב‬
ÆÂÊÏ ÂÊ ˙Â¯Â˘˜ Ôȇ˘ ¨¯Ï·ÓÒ‡· ˙‡¯Â‰ 10 ÍÈÙÏ
Ɖ‡È‚˘ ‰ÏÙ ˙‡¯Â‰‰Ó ˜ÏÁ·
ÆÔ‰Ó ˙Á‡ Ïη ‰‡È‚˘‰ È‰Ó ¯·Ò‰Â ¨˙ÂÈ‚˘‰ ˙‡¯Â‰‰ ˙‡ ˜¯ Í˙¯·ÁÓÏ ˜˙Ú‰

• MOV BX , AL
• MOV [SI] , SI
• MOV AL , 100H
• AND BX , 256
• DEC DI
• SUB 5 , BX
• MOV [SI] , [BX]
• MOV [SI + DI] , AL
• ROL BX , CL
• DIV AX

ر∂ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ±∂ ≠

∫‰Ê‰ ÔÙ‡· ‫ ממוין למחצה‬ͯÚÓ ¯È„‚ .7


Ìȯ·È‡ Ï˘ Ûˆ¯ · ˘È ¨‰ÊÓ ‰Ê ÌÈ¢ 0 –Ó ÌÈÏ„‚ ÌȯÙÒÓ ÏÈÎÓ‰ È‚ÂÊ Í¯Â‡· ͯÚÓ
ÆͯÚÓ‰ Í¯Â‡Ó ˙ȈÁÓ ˙ÂÁÙÏ ‰Ê‰ Ûˆ¯‰ ͯ‡ ¨‰ÏÂÚ ¯„Ò· ÔÈÂÓÓ ÌÈÎÂÓÒ
∫‰Ó‚„Ï
Æ‫‡ ממוין למחצה‬‰ ÍÈÙÏ˘ 10 τ‚· ͯÚÓ‰
®¯ÂÙ‡· ÔÓÂÒÓ© 6 ÔÈȈÓÏ 2 ÔÈÈˆÓ ÔÈ· ‡ˆÓ ‰ÏÂÚ ¯„Ò· ÌÈÈÂÓÓ‰ Ìȯ·È‡ Ï˘ Ûˆ¯‰
Æ5 Âί‡Â

0 1 2 3 4 5 6 7 8 9
8 4 3 5 10 19 35 7 1 9

∫ÍÎ ÌÈÂ˙‰ ¯„‚‰ ÌÈÂ˙‰ Ú˘ӷ

LOW DB ?
HIGH DB ?
ARR DB 100 DUP (?)

È˘Â ARR ͯÚÓ‰ ˙‡ Ï·˜˙˘ ¨ CHECK Ì˘· ®‰¯Â„ˆÂ¯Ù© ‰¯‚˘ ¯Ï·ÓÒ‡· ·Â˙Î .‫א‬
̉ ÌȯÙÒÓ‰ È˘ Æ®HIGH –Ó Ô˘ LOW© HIGH – LOW ÌÈÓÏ˘ ÌȯÙÒÓ
ÆͯÚÓ· Ìȯ·È‡ Ï˘ ®ÌÈÒ˜„ȇ© ÌÈÈȈÓ
LOW ‡Â‰ ÂÏ˘ ÔÈȈӉ˘ ¯·È‡‰Ó ¨Í¯ÚÓ‰ ȯ·È‡ ̇ ˜Â„·˙ ®‰¯Â„ˆÂ¯Ù© ‰¯‚˘‰
¯„Ò· ÌÈÈÂÓÓ ¨®HIGH – LOW ÏÏÂΩ HIGH ‡Â‰ ÂÏ˘ ÔÈȈӉ˘ ¯·È‡‰ „ÚÂ
ƉÏÂÚ
0 ÔÒÁ‡˙ ‡È‰ — ˙¯Á‡ ¨ AH ¯‚‡· 1 ÔÒÁ‡˙ ®‰¯Â„ˆÂ¯Ù© ‰¯‚˘‰ — ÔΠ̇
ÆAH –·
ƉÊÓ ‰Ê ÌÈ¢ 0 –Ó ÌÈÏ„‚ ARR ͯÚÓ‰ ȯ·È‡˘ Á‰
Æ‫ ממוין למחצה‬ͯÚÓ ‡Â‰ ARR ͯÚÓ‰ ̇ ˜Â„·È˘ ˙ÈÎ˙ Ú˘ ¯Ï·ÓÒ‡· ·Â˙Î .‫ב‬
ÆAH –· 0 ÔÒÁ‡È ‡Â‰ — ˙¯Á‡ ¨ AH ¯‚‡· 1 ÔÒÁ‡È ˙ÈÎ˙‰ Ú˘ — ÔΠ̇
Ƈ ÛÈÚÒ· ˙·˙΢ CHECK ®‰¯Â„ˆÂ¯Ù© ‰¯‚˘· ˘Ó˙˘‰Ï ÍÈÏÚ

ر∑ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ±∑ ≠
∫ÍÎ ÌÈÂ˙‰ ¯„‚‰ ÌÈÂ˙‰ Ú˘ӷ .8
T DB 1,2,3,4,5,6
T1 DB 6 DUP (0)
T2 DB 6 DUP (0)
∫¯Ï·ÓÒ‡· ˙ÈÎ˙ Ú˘ ÍÈÙÏ
LEA BX , T
LEA DI , T1
LEA SI , T2
MOV CX , 6
SH: MOV AL , [BX]
MOV AH , AL
AND AH , 1
JZ E
MOV [DI] , AL
INC DI
JMP NEXT
E: MOV [SI] , AL
INC SI
NEXT: INC BX
LOOP SH

ÌÈίÚÓ‰ Ï˘ ÔÎÂ˙‰ ˙‡ Ì¢¯Â ¨˙ÈÎ˙‰ Ú˘ Úˆȷ ¯Á‡ ·˜ÚÓ ˙Ï·Ë ˙¯ÊÚ· ·Â˜Ú .‫א‬
ÆÂÚˆȷ ¯Á‡Ï T2 – T1
ø˙ÈÎ˙‰ Ú˘ Úˆ·Ó ‰Ó .‫ב‬
ø‡ ÛÈÚÒÏ Í˙·Â˘˙ ‰˙˘˙ ̇‰ ¨ LOOPE ‰‡¯Â‰· LOOP ‰‡¯Â‰‰ ÛÏÁÂ˙ ̇ .‫ג‬
ÆÚÂ„Ó ¯·Ò‰ — ‡Ï ̇ ¨‰˙˘È ‰Ó ¯·Ò‰ — ÔΠ̇

ر∏ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ±∏ ≠
‫מבוא לחקר ביצועים‬
Æ®˙„˜ ≤μ — ‰Ï‡˘ ÏÎÏ© ±≤≠π ˙Âχ˘‰Ó ÌÈÈ˙˘ ÏÚ ‰Ú ¨‰Ê ÏÂÏÒÓ ˙„ÓÏ Ì‡

∫ȯ‡ÈÏ ÔÂÎ˙ ˙ÈÈÚ· ‰Â˙ .9


Min {z = x1 - x2}

∫‰Ï‡‰ ÌȈÂÏÈ‡Ï ÛÂÙη


x1 + x2 $ 2
x1 + 3x2 #12
x2 # 4
x2 $ 0
ÆÔÓÈÒ· Ï·‚ÂÓ Âȇ x1

ƉÂ˙‰ ‰ÈÚ·‰ Ï˘ ÌÈȯ˘Ù‡‰ ˙Â¯˙Ù‰ ÌÂÁ˙ Ï˘ ËÂË¯Ò ÍÈÙÏ

x2

C(0 , 4)
4
B(-2 , 4)

-4 -2 0 2 4 6
x1
8 10 12
A(2 , 0) D(12 , 0)

ƉÂ˙‰ ȯ‡Èω ÔÂÎ˙‰ ˙ÈÈÚ·Ï ÒÁÈÈ˙Ó ÍÈÙÏ˘ „≠‡ ÌÈÙÈÚÒ‰Ó „Á‡ ÏÎ


ÆÌÈÙÈÚÒ‰ ÏÎ ÏÚ ‰Ú Æ‰Ê· ‰Ê ÌÈÈÂÏ˙ Ìȇ ÌÈÙÈÚÒ‰
ÆÍ˙·Â˘˙ ˙‡ ˜Ó ø‰Â˙‰ ‰ÈÚ·‰ Ï˘ ÈÏÓÈËÙ‡‰ Ô¯˙Ù‰ Â‰Ó .‫א‬
Æ z = x1 + x2 –Ï ‰Ï‡˘‰ ˙ÏÈÁ˙·˘ ‰ÈÚ·‰ Ï˘ ‰¯ËÓ‰ ˙ÈȈ˜ÂÙ ˙‡ ˜¯ ÌÈ˘Ó .‫ב‬
ÆÌÈÈÏÓÈËÙ‡ ˙Â¯˙Ù ÛÂÒ–Ôȇ ˘È ‰ÈÚ·Ï˘ ‰‡¯‰ (1)
‰¯ËÓ‰ ˙ÈȈ˜ÂÙ Ï˘ ‰Î¯Ú ˙‡Â ¨‰ÈÚ·Ï ÈÏÏΉ ÈÏÓÈËÙ‡‰ Ô¯˙Ù‰ ˙‡ Ì¢¯ (2)
ÆÌÈÈÏÓÈËÙ‡‰ ˙Â¯˙Ù‰ ÌÂÁ˙·

رπ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ±π ≠
z = x1 + 2x2 –Ï ‰Ï‡˘‰ ˙ÏÈÁ˙·˘ ‰ÈÚ·‰ Ï˘ ‰¯ËÓ‰ ˙ÈȈ˜ÂÙ ˙‡ ÌÈ˘Ó .‫ג‬
Æ x2 $ 0 ıÂÏȇ‰ ˙‡ ÌÈÏË·ÓÂ
ÆÈÂÈ˘‰ ¯Á‡Ï Ï·˜˙‰˘ ÌÈȯ˘Ù‡‰ ˙Â¯˙Ù‰ ÌÂÁ˙ ˙‡ ËË¯Ò (1)
∫‰Ï‡‰ ÌÈ„Úˆ‰ ˙‡ Úˆ· (2)
‰¯ËÓ‰ ˙ÈȈ˜ÂÙ Ï˘ ‰·Â‚‰ ÏËȉ ˙‡ Í˙¯·ÁÓ·˘ ËÂ˯ÒÏ ÛÒ‰ ∫± „Úˆ
Æ z = 8 ¯Â·Ú·
¨ x2 – x1 ÌȯȈ‰ ÌÚ ‰Ê ÏËȉ Ï˘ ÍÂ˙ÈÁ‰ ˙„˜ ȯÂÚÈ˘ ˙‡ ·˘Á
ÆËÂ˯҉ ÏÚ Ô˙‡ ÔÓÒÂ
‰¯ËÓ‰ ˙ÈȈ˜ÂÙ Ï˘ ‰·Â‚‰ ÏËȉ ˙‡ Í˙¯·ÁÓ·˘ ËÂ˯ÒÏ ÛÒ‰ ∫≤ „Úˆ
Æ z = 4 ¯Â·Ú·
¨ x2 – x1 ÌȯȈ‰ ÌÚ ‰Ê ÏËȉ Ï˘ ÍÂ˙ÈÁ‰ ˙„˜ ȯÂÚÈ˘ ˙‡ ·˘Á
ÆËÂ˯҉ ÏÚ Ô˙‡ ÔÓÒÂ
Ï˘ ‰„ȯȉ ÔÂÂÈÎ ˙‡ ¨ıÁ ˙ÂÚˆÓ‡· ¨Í˙¯·ÁÓ·˘ ËÂ˯ҷ ÔÓÒ ∫≥ „Úˆ
Ɖ¯ËÓ‰ ˙ÈȈ˜ÂÙ
ÆÔÂÎ Ì‰Ó „Á‡ ˜¯˘ ¨ iv≠i ÌÈ„‚ȉ‰ ÍÈÙÏ (3)
‡Â‰ ÌÈ„‚ȉ‰ ÔÈ·Ó ‰Êȇ Ú·˜ ¨®≤©‚ ÛÈÚÒ–˙˙· ˙ڈȷ˘ ≥≠± ÌÈ„Úˆ‰ ÍÓÒ ÏÚ
ÆÍ˙ÚÈ·˜ ˙‡ ˜Ó ¨Í˙¯·ÁÓÏ Â˙‡ ˜˙Ú‰ ¨ÔÂÎ‰
Æ„ÈÁÈ ‡Â‰ ÈÏÓÈËÙ‡‰ Ô¯˙Ù‰ i
ÆÌÈÈÏÓÈËÙ‡ ˙Â¯˙Ù ÛÂÒ–Ôȇ ˘È ii
ÆÌÂÒÁ ‡Ï ÈÏÓÈËÙ‡‰ Ô¯˙Ù‰ iii
ÆÈÏÓÈËÙ‡ Ô¯˙Ù Ôȇ iv
Æ z = a (x1 - 2x2) –Ï ‰Ï‡˘‰ ˙ÏÈÁ˙·˘ ‰ÈÚ·‰ Ï˘ ‰¯ËÓ‰ ˙ÈȈ˜ÂÙ ˙‡ ˜¯ ÌÈ˘Ó .‫ד‬
˙Â¯˙Ù‰ ÌÂÁ˙· ‰¯ËÓ‰ ˙ÈȈ˜ÂÙ ˙Ï·˜Ó˘ ‫מקסימלי‬‰ ͯډ a > 0 –˘ ÔÂ˙
Æ 120 ‡Â‰ ÌÈȯ˘Ù‡‰
ÆÌÈȯ˘Ù‡‰ ˙Â¯˙Ù‰ ÌÂÁ˙· ‰¯ËÓ‰ ˙ÈȈ˜ÂÙ ˙Ï·˜Ó˘ ‫מינימלי‬‰ ͯډ ˙‡ ·˘Á

Ø≤∞ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≤∞ ≠

ÆÌÈÙÈÚÒ‰ ÏÎ ÏÚ ‰Ú Æ‰Ê· ‰Ê ÌÈÈÂÏ˙ Ìȇ˘ ¨Â≠‡ ¨ÌÈÙÈÚÒ ‰˘È˘ ÂÊ ‰Ï‡˘· .10
„ÚÈ ÏÎÏ ¯Â˜Ó ÏÎÓ ‰„ÈÁÈÏ ˙ÂÈÂÏÚ‰ ÆÌÈ„ÚÈ ≥– ˙Â¯Â˜Ó ≥ ‰·Â ‰Ï·Â˙ ˙ÈÈÚ· ÍÈÙÏ .‫א‬
ÆÍÈÙÏ˘ ‰Ï·Ë· ˙ÂÂ˙

ÌÈ„ÚÈ
˙Â¯Â˜Ó ÚˆÈ‰
1 2 3
18 19 16
1 180

14 15 18
2 a
15 20 17
3 100

˘Â˜È· 120 150 150

‡ÂˆÓÏ È„Î ˙È·¯ÚÓ–˙ÈÂÙˆ‰ ‰ÈÙ‰ ˙ËÈ˘ ˙‡ ÏÈÚÙ‰Ï ¯˘Ù‡ ‰Â˙‰ ‰ÈÚ··


Ɖӄ ¯Â˜Ó ‡ ‰Ó„ „ÚÈ ˙ÙÒ‰ ‡ÏÏ ¨‰Â˙‰ ‰Ï·Â˙‰ ˙ÈÈÚ·Ï È¯˘Ù‡ Ô¯˙Ù
ÆÍ˙·Â˘˙ ˙‡ ˜Ó ø‰Ï·Ë·˘ a ‰˙˘Ó‰ Ï˘ ÂÎ¯Ú ˙ÂÈ‰Ï Íȯˆ ‰Ó

Æ x11 = 90 ¨ x12 = 10 ∫‰Ï·Â˙ ˙ÈÈÚ·Ï È¯˘Ù‡ ÈÒÈÒ· Ô¯˙ÙÓ ˜ÏÁ ÔÂ˙ ÍÈÙÏ˘ ‰Ï·Ë· .‫ב‬

ÌÈ„ÚÈ
˙Â¯Â˜Ó ÚˆÈ‰
1 2 3
10 15 17
1 100
90 10

10 18 14
2 110

15 20 18
3 100

˘Â˜È· 90 120 100

Æ˙È·¯ÚÓ–˙ÈÂÙˆ‰ ‰ÈÙ‰ ˙ËÈ˘ ÈÙÏ ‰˙‡ ÌÏ˘‰Â ¨Í˙¯·ÁÓÏ ‰Ï·Ë‰ ˙‡ ˜˙Ú‰

Ø≤± „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≤± ≠
Ï˘ ÌÈίډ ÌÈÂ˙ ¨‰Ï·Â˙ ˙ÈÈÚ·Ï È¯˘Ù‡ Ô¯˙ÙÓ ˜ÏÁ ÔÂ˙ ÍÈÙÏ˘ ‰Ï·Ë· .‫ג‬
Æ u3 ¨ u2 ¨ u1 ¨ v3 ¨ v2 ¨ v1

ÌÈ„ÚÈ
˙Â¯Â˜Ó ÚˆÈ‰ ui
1 2 3
12 15 17
1 200 2
200
10 18 14
2 100 0
100
20 10 18
3 150 -8
100

˘Â˜È· 200 150 100


vj 10 18 26

ÍÂ˙ ˙È·¯ÚÓ–˙ÈÂÙˆ‰ ‰ÈÙ‰ ˙ËÈ˘ ÈÙÏ ‰˙‡ ÌÏ˘‰Â ¨Í˙¯·ÁÓÏ ‰Ï·Ë‰ ˙‡ ˜˙Ú‰
Æȯ˘Ù‡ ÈÒÈÒ· Ô¯˙Ù Ï·˜˙È˘ ÍÎ ¨ÌÈ≠ v j – ÌÈ≠ u i Ï˘ ÌÈίڷ ˙·˘Á˙‰

ÌÈίډ ÌÈÂ˙ ¨‰Ï·Â˙ ˙ÈÈÚ·Ï È¯˘Ù‡ ÈÒÈÒ· Ô¯˙Ù ÔÂ˙ ÍÈÙÏ˘ ‰Ï·Ë· .‫ד‬
ÆÍ˙·Â˘˙ ˙‡ ˜Ó øÈÏÓÈËÙ‡ ‡Â‰ Ô¯˙Ù‰ ̇‰ Æ u3 ¨ u2 ¨ u1 ¨ v3 ¨ v2 ¨ v1 Ï˘

ÌÈ„ÚÈ
˙Â¯Â˜Ó ÚˆÈ‰ ui
1 2 3
14 15 17
1 180 0
150 30
10 8 14
2 100 -7
100 0
15 20 18
3 100 1
100

˘Â˜È· 100 150 130


vj 17 15 17

Ø≤≤ „ÂÓÚ· Í˘Ó‰Ø (.‫)שים לב׃ המשך השאלה בעמוד הבא‬


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≤≤ ≠

Ï˘ ÌÈίډ ÌÈÂ˙ ¨‰Ï·Â˙ ˙ÈÈÚ·Ï Ô¯˙Ù ÔÂ˙ ÍÈÙÏ˘ ‰Ï·Ë· .‫ה‬


Æ‰Ê Ô¯˙ÙÏ ÌÈÓȇ˙Ó˘ ¨ u3 ¨ u2 ¨ u1 ¨ v3 ¨ v2 ¨ v1

ÌÈ„ÚÈ
˙Â¯Â˜Ó ÚˆÈ‰ ui
1 2 3
10 25 30
1 20 10
20

10 22 14
2 50 10
30 20

16 20 20
3 60 16
40 20

˘Â˜È· 50 40 40

vj 0 4 4

¨ÔÂÎ‰ „‚ȉ‰ ˙‡ Í˙¯·ÁÓÏ ˜˙Ú‰ ÆÔÂÎ Ì‰Ó „Á‡ ˜¯˘ iv-i ÌÈ„‚ȉ‰ ÍÈÙÏ
ÆÍ˙¯ÈÁ· ˙‡ ˜ÓÂ
Æȯ˘Ù‡ Ô¯˙Ù Âȇ ÔÂ˙‰ Ô¯˙Ù‰ i
ÆÈÏÓÈËÙ‡ Âȇ ͇ ȯ˘Ù‡ ÈÒÈÒ· Ô¯˙Ù ‡Â‰ ÔÂ˙‰ Ô¯˙Ù‰ ii
Æ„ÈÁÈ ÈÏÓÈËÙ‡ Ô¯˙Ù ‡Â‰ ÔÂ˙‰ Ô¯˙Ù‰ iii
Æ„ÈÁÈ ÈÏÓÈËÙ‡ Ô¯˙Ù Âȇ ͇ ÈÏÓÈËÙ‡ Ô¯˙Ù ‡Â‰ ÔÂ˙‰ Ô¯˙Ù‰ iv

Ø≤≥ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≤≥ ≠

ƉϷÂ˙ ˙ÈÈÚ· ‰Â˙ .‫ו‬


˙Â¯Â˜Ó‰Ó ¯ˆÂÓ ˙„ÈÁÈ Ï˘ ‰Ï·Â˙‰ ȯÈÁÓ ÏÏÂÎ ¨‰ÈÚ·‰ ÈÂ˙ ÌÈ‚ˆÂÓ ÍÈÙÏ˘ ‰Ï·Ë·
ÆÌÈ„ÚÈÏ

ÌÈ„ÚÈ
˙Â¯Â˜Ó ÚˆÈ‰
1 2 3
20 34
1 100

10 14
2 120

15 20 18
3 130

25 25 32
4 40

˘Â˜È· 130 130 130

Æ 2 „ÚÈÏ ˜ÙÒÏ ‫ אסור‬2– 1 ˙¯˜ÓÓ


ø®„Â‡Ó Ï„‚ ¯ÙÒÓÎ ¯„‚ÂÓ M© c22 ¨ c12 ˙ÂÈÂÏÚ‰ ˙ÂÈ‰Ï ˙ÂÎȯˆ ‰Ó
ƉÂÎ‰ ‰·Â˘˙‰ ˙‡ Í˙¯·ÁÓÏ ˜˙Ú‰ ƉÂÎ Ô‰Ó ˙Á‡ ˜¯˘ iv-i ˙·¢˙ ÍÈÙÏ
Æ c12 = M ¨ c22 = 0 i
Æ c12 = 0 ¨ c22 = 0 ii
Æ c12 = 0 ¨ c22 = M iii
Æ c12 = M ¨ c22 = M iv

Ø≤¥ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≤¥ ≠
ÆÌÈÙÈÚÒ‰ È˘ ÏÚ ‰Ú Æ‰Ê· ‰Ê ÌÈÈÂÏ˙ Ìȇ˘ ¨·≠‡ ¨ÌÈÙÈÚÒ È˘ ÂÊ ‰Ï‡˘· .11
Æ G = (V , E) ÔÂÂÎÓ Û¯‚ ÍÈÙÏ .‫א‬
Æ˙Â˙˘˜‰ ˙ˆÂ·˜ ‡È‰ E – ¨ÌȄ˜„˜‰ ˙ˆÂ·˜ ‡È‰ V
Æ G Û¯‚· ˙˘˜ ÏÎÏ ®¯ÙÒÓ© Ϙ˘Ó ˙ڷ˜ W: E R+ Ϙ˘Ó‰ ˙ÈȈ˜ÂÙ

1
3 B F
G: A 0

1 C D E
0 0

A „˜„˜Ó ¯˙ÂÈ· ¯ˆ˜‰ ÏÂÏÒÓ· ÌȄ˜„˜‰ ˙ÓÈ˘¯ ˙‡ Í˙¯·ÁÓ· Ì¢¯ (1)


Æ®F – A ÏÏÂΩ F „˜„˜Ï
˙‡Â G Û¯‚‰ ÂÓÎ ÌȄ˜„˜ Ì˙‡ ˙‡ ÏÈÎÓ‰ ¨ G1 = (V , E) ¨ÔÂÂÎÓ Û¯‚ G1 È‰È (2)
∫‰Ê‰ ÔÙ‡· ˙¯„‚ÂÓ W1: E R+ Ϙ˘Ó‰ ˙ÈȈ˜ÂÙ ¨˙Â˙˘˜ Ô˙‡
Ϙ˘Ó‰ ˙ÈȈ˜ÂÙ ‡È‰ W ¯˘‡Î ¨ W1(e) = W (e) + t ¨ G1 –· e ˙˘˜ ÏÎÏ
Æ0 –Ó Ï„‚ ÌÏ˘ ¯ÙÒÓ t – G Ï˘
∫ÍÈÙÏ˘ G1 Û¯‚‰ Ï·˜˙Ó t = 1 ¯Â·Ú·

2
4 B F
G1: A 1

2 C D E
1 1

A „˜„˜Ó ¯˙ÂÈ· ¯ˆ˜‰ ÏÂÏÒÓ· ÌȄ˜„˜‰ ˙ÓÈ˘¯ ˙‡ Í˙¯·ÁÓ· Ì¢¯


Æ G1 Û¯‚· ®F – A ÏÏÂΩ F „˜„˜Ï
∫ÂÓÈÏ˘‰Ï ˘È˘ ËÙ˘Ó ÍÈÙÏ (3)
˙ÓÈ˘¯Â ¨ G Û¯‚· F „˜„˜Ï A „˜„˜Ó ¯˙ÂÈ· ¯ˆ˜‰ ÏÂÏÒÓ· ÌȄ˜„˜‰ ˙ÓÈ˘¯
Æ______ ∫Ô‰ G1 Û¯‚· F „˜„˜Ï A „˜„˜Ó ¯˙ÂÈ· ¯ˆ˜‰ ÏÂÏÒÓ· ÌȄ˜„˜‰
ÆËÙ˘Ó‰ ˙ÓÏ˘‰Ï iii-i ˙Âȯ˘Ù‡ ˘ÂÏ˘ ÍÈÙÏ
ÆÍ˙¯ÈÁ· ˙‡ ˜Ó ¨‰ÂÎ‰ ‰ÓÏ˘‰‰ ˙‡ Í˙¯·ÁÓÏ ˜˙Ú‰
Æ t ÏÎÏ ˙¢ i
Æ t ÏÎÏ ˙Â¢ ii
Æ t Ï˘ Âίڷ ÈÂÏ˙ ¨˙Â¢ ‡ ˙¢ ˙ÂÈ‰Ï ˙ÂÏÂÎÈ iii

Ø≤μ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≤μ ≠

®Æ‡ ÛÈÚÒÏ ¯˘˜ Ôȇ© .‫ב‬


Æ G = (V , E) È„È ÏÚ ¯„‚ÂÓ‰ ÔÂÂÎÓ ‡Ï ¯È˘˜ Û¯‚ ‡Â‰ G Û¯‚‰
Æ˙Â˙˘˜‰ ˙ˆÂ·˜ ‡È‰ E – ¨ÌȄ˜„˜‰ ˙ˆÂ·˜ ‡È‰ V
Æ G Û¯‚· ˙˘˜ ÏÎÏ ®¯ÙÒÓ© Ϙ˘Ó ˙ڷ˜ W: E R+ Ϙ˘Ó‰ ˙ÈȈ˜ÂÙ
Æ V Ï˘ ‰ˆÂ·˜–˙˙ U – ¨ G Û¯‚· ÌȄ˜„˜ t – s ÂȉÈ
Ï˘ ÈÏÓÈÈÓ ¯ÙÒÓ· ¯˜·Ó‰ ¨G Û¯‚· t –Ï s –Ó ÏÂÏÒÓ ‡ˆÂÓ‰ Ì˙ȯ‚χ ¯Â‡È˙ ÍÈÙÏ
Æ U –· ÌȄ˜„˜
Æ ®¥© ≠ ®±© ÌÈÓÂÒÓ‰ ÌÈÈÂËÈ· ‰Ú·¯‡ ÌȯÒÁ Ì˙ȯ‚χ·

‫תיאור האלגוריתם׃‬
∫¯˘‡Î G1 = (V1 , E1) Û¯‚‰ ˙‡ ‰· ∫± „Úˆ
V1 V

E1 E
∫‰Ê‰ ÔÙ‡· ˙¯„‚ÂÓ‰ ¨ W: E1 {0 , 1 , 2} Ϙ˘Ó‰ ˙ÈȈ˜ÂÙÂ
Æ U ‰ˆÂ·˜Ï ÌÈÎÈÈ˘ ‡Ï y – x ÌȄ˜„˜‰ ¯˘‡Î W (x , y) = (1)
ÆU ‰ˆÂ·˜Ï ÍÈÈ˘ y ‡ x ÌȄ˜„˜‰ „Á‡ ˜¯ ¯˘‡Î W (x , y) = (2)
Æ U ‰ˆÂ·˜Ï ÌÈÎÈÈ˘ y – x ÌȄ˜„˜‰ ¯˘‡Î W (x , y) = (3)
Æ s „˜„˜Ó ÏÁ‰ G1 Û¯‚‰ ÏÚ (4) Ì˙ȯ‚χ ˙‡ ÏÈÚÙ ∫≤ „Úˆ
ͯÚÓ ÍÂ˙Ó Â˙‡ ¯ÊÁ˘Ï ¯˘Ù‡Â ˘˜Â·Ó‰ ÏÂÏÒÓ‰ Ï·˜˙‰ ∫≥ „Úˆ
Æ s –Ó ÏÁ‰ Ì˙ȯ‚χ· ‰·˘ parent –‰
ÆÌȯÒÁ‰ ÌÈÈÂËÈ·‰ ˙‡ ‰· Ì¢¯Â ¨ÍÈÙÏ˘ ‰Ï·Ë‰ ˙‡ Í˙¯·ÁÓÏ ˜˙Ú‰

(1) ÈÂËÈ·
(2) ÈÂËÈ·
(3) ÈÂËÈ·
(4) ÈÂËÈ·

Ø≤∂ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≤∂ ≠
∫iv-i ˙¯„‚‰ Ú·¯‡ ÍÈÙÏ .12
‰ÒÈΉ ˙‚¯„ ̇ ςÚÓ Â· Ôȇ ̇ ‫˜¯‡ שרוך מכוון‬ ÌȄ˜„˜ n ÏÚ· ÔÂÂÎÓ Û¯‚ i
˙‚¯„˘ „Á‡ „˜„˜ · ˘È ¨ 1 ‡È‰ ÌȄ˜„˜ n - 2 –Ó „Á‡ ÏÎ Ï˘ ‰‡ÈˆÈ‰ ˙‚¯„Â
ÂÏ˘ ‰ÒÈΉ ˙‚¯„˘ „Á‡ „˜„˜Â ¨ 1 ‡È‰ ÂÏ˘ ‰‡ÈˆÈ‰ ˙‚¯„ 0 ‡È‰ ÂÏ˘ ‰ÒÈΉ
Æ0 ‡È‰ ÂÏ˘ ‰‡ÈˆÈ‰ ˙‚¯„ 1 ‡È‰
∫‫ שרוך מכוון‬ÍÈÙÏ
1 2 3 4 5

È˘Ï ˯٠¨ 2 ‡È‰ „˜„˜ ÏÎ ˙‚¯„ ¯È˘˜ ‡Â‰ ̇ ‫˜¯‡ שרוך‬ ÔÂÂÎÓ ‡Ï Û¯‚ ii
Æ 1 ‡È‰ Ì˙‚¯„˘ ÌȄ˜„˜
∫‫ שרוך‬ÍÈÙÏ
1 2 3 4

„Á‡ Ï˘ ‰‚¯„‰ ¨¯È˘˜ ‡Â‰ ̇ ‫˜¯‡ גרף כוכב‬ ÌȄ˜„˜ n ÏÚ· ÔÂÂÎÓ ‡Ï Û¯‚ iii
„˜„˜‰ Æ 1 ‡È‰ ÌȯÁ‡‰ ÌȄ˜„˜‰Ó „Á‡ ÏÎ Ï˘ ‰‚¯„‰Â ¨ n - 1 ‡È‰ ÌȄ˜„˜‰
Æ‫˜¯‡ קדקוד מרכזי‬ n - 1 Â˙‚¯„˘
∫ÌȄ˜„˜ 7 ÏÚ· ‫ גרף כוכב‬ÍÈÙÏ

2
1 3
7
6 4
5

‫˜¯‡ גרף גלגל‬ ¨ n $ 4 ¨ n¨ÆÆƨ2 ¨1 ÌÈÓÂÒÓ‰ ÌȄ˜„˜ n ÏÚ· ÔÂÂÎÓ ‡Ï Û¯‚ iv


ÔÓ „Á‡ ÏÎÏ ¯˘Â˜Ó ‡Â‰ ¯ÓÂÏÎ ¨ n - 1 ‡È‰ 1 ÔÓÂÒÓ‰ „˜„˜‰ Ï˘ ‰‚¯„‰ ̇
i + 1 „˜„˜Ï ¨ 1 „˜„˜Ï ¯˘Â˜Ó 3 # i # n - 1 ¨ i „˜„˜ ÏÎ ÆÌȯÁ‡‰ ÌȄ˜„˜‰
Æ n– 2 ÌȄ˜„˜‰ ÔÈ· ˙˘˜ ˘È ÔÎ ÂÓÎ Æ i - 1 „˜„˜ÏÂ
Æ‫˜¯‡ קדקוד מרכזי‬ n - 1 Â˙‚¯„˘ „˜„˜‰
∫ÌȄ˜„˜ 7 ÏÚ· ‫ גרף גלגל‬ÍÈÙÏ

2
7 3
1
6 4
5
Ø≤∑ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≤∑ ≠
ÌÈÈÂÏ˙ Ìȇ ÌÈÙÈÚÒ‰ Ǣ˜‰ „ÂÓÚ·˘ iv-i ˙¯„‚‰Ï ÌÈÒÁÈÈ˙Ó˘ „≠‡ ÌÈÙÈÚÒ ‰Ú·¯‡ ÍÈÙÏ
ÆÌÈÙÈÚÒ‰ ÏÎ ÏÚ ‰Ú Æ‰Ê· ‰Ê
Æ‫‡ שרוך מכוון‬‰ ÍÈÙÏ˘ Û¯‚‰ .‫א‬
1 2 3 4 5

Æ˙ÂÈÂÎÈÓÒ ˙ÓÈ˘¯ ˙ÂÚˆÓ‡· Û¯‚‰ Ï˘ ‚ˆÈÈ ˙‡ ËË¯Ò (1)


ÆÛ¯‚‰ ˙‡ ˙‚ˆÈÈÓ‰ ˙ÂÈÂÎÈÓÒ‰ ˙ˆÈ¯ËÓ ˙‡ Ì¢¯ (2)
‡Ï Û¯‚ ÏÚ ÏÚÂÙ Ì˙ȯ‚χ‰ .‫‡ גרף כוכב‬‰ ¯È˘˜ Û¯‚ ̇ ˜„·‰ Ì˙ȯ‚χ ÍÈÙÏ .‫ב‬
Æ˙ÂÈÂÎÈÓÒ ˙ˆÈ¯ËÓ ˙ÂÚˆÓ‡· ‚ˆÂÈÓ‰ ÌȄ˜„˜ n ÏÚ· G = (V , E) ÔÂÂÎÓ
Æ®≤© – ®±© ÌÈÓÂÒÓ‰ ÌÈÈÂËÈ· È˘ ÌȯÒÁ Ì˙ȯ‚χ·

‫תיאור האלגוריתם׃‬
˙ˆÈ¯ËÓ· v ‰¯Â˘· ÌÈ–± –‰ ¯ÙÒÓ ¨Û¯‚· v „˜„˜ ÏÎÏ Ì‡ ˜Â„· ∫± „Úˆ
u ‰¯Â˘· ÌÈ–± –‰ ¯ÙÒÓ˘ u „Á‡ „˜„˜Ï ˯٠¨ (1) ‡Â‰ ˙ÂÈÂÎÈÓÒ‰
Æ (2) ‡Â‰ ˙ÂÈÂÎÈÓÒ‰ ˙ˆÈ¯ËÓ·
Æ¢·ÎÂÎ Û¯‚ ‡Ï¢ ¯ÊÁ‰ — ˙¯Á‡ ¨¢·ÎÂÎ Û¯‚¢ ¯ÊÁ‰ — ÔΠ̇ ∫≤ „Úˆ
ÆÌȯÒÁ‰ ÌÈÈÂËÈ·‰ ˙‡ ‰· Ì¢¯Â ¨ÍÈÙÏ˘ ‰Ï·Ë‰ ˙‡ Í˙¯·ÁÓÏ ˜˙Ú‰

(1) ÈÂËÈ·
(2) ÈÂËÈ·

(.‫)שים לב׃ המשך השאלה בעמוד הבא‬

Ø≤∏ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≤∏ ≠

∫ÌȄ˜„˜ π ÏÚ· ‫ גרף גלגל‬ÍÈÙÏ .‫ג‬


9
8 2
7 1 3
6 4
5
ÆÈÊίӉ „˜„˜‰Ó ÏÁ‰ Û¯‚‰ ÏÚ DFS Ì˙ȯ‚χ‰ ˙‡ ÏÚÙ‰ (1)
øͯ˘ ‡Â‰ Ï·˜˙È˘ DFS ˘¯ÂÙ‰ ıÚ‰ ̇‰
¨ÈÊίӉ „˜„˜‰ Âȇ˘ ¨Û¯‚‰ Ï˘ ¯Á‡ „˜„˜Ó DFS Ì˙ȯ‚χ‰ ˙‡ ÏÈÁ˙ ̇ (2)
ÆÍ˙·Â˘˙ ˙‡ ˜Ó øͯ˘ ‡Â‰ Ï·˜˙È˘ DFS ˘¯ÂÙ‰ ıÚ‰ ̇‰

Æ n > 3 ÆÌȄ˜„˜ n Ô· ®ÌÏ˘© ‡ÏÓ G = (V , E) ÔÂÂÎÓ ‡Ï Û¯‚ ÔÂ˙ .‫ד‬


‡Â‰ ‰ÓÓ Ï·˜˙Ó‰ DFS ˘¯ÂÙ‰ ıÚ‰˘ ÍÎ DFS ˙ˆ¯‰ ˙ÓÈȘ ̇ ˙Ú„Ï ÌȈ¯
ƘÂÈ„· 2 ‡È‰ ®˜¯Ò˘ Ô¢‡¯‰ „˜„˜‰© ˘¯Â˘‰ ˙‚¯„ ·˘ ıÚ
ÆÂÊÎ ‰ˆ¯‰ Ôȇ ÚÂ„Ó ¯·Ò‰ — ˙¯Á‡ Ɖ˙‡ ·Â˙Î — ÂÊÎ ‰ˆ¯‰ ˙ÓÈȘ ̇

Ø≤π „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≤π ≠
‫מודלים חישוביים‬
Æ®˙„˜ ≤μ — ‰Ï‡˘ ÏÎÏ© ±∂≠±≥ ˙Âχ˘‰Ó ÌÈÈ˙˘ ÏÚ ‰Ú ¨‰Ê ÏÂÏÒÓ ˙„ÓÏ Ì‡

∫ " a , b , ·¢‡‰ ÏÚÓ L3 - L1 ˙ÂÙ˘ 3 ÍÈÙÏ .13


L1 = {a n b n-1 n $1}

Z _
]] ‰¢ 2 –· n Ï˘ ‰˜ÂÏÁ‰ ˙ȯ‡˘ ¨ n $ 0 ¨ k $ 0 b
b
L2 = [ a n b k `
]] 2 –· k Ï˘ ‰˜ÂÏÁ‰ ˙ȯ‡˘Ó b
b
\ a
L3 = {a k b2m k $ 0 , m $ 0}

Æ˙ȯÏ‚¯ ‰ȇ ‡ ˙ȯÏ‚¯ ‡È‰ ̇ Ú·˜ ¨ L3 - L1 ˙ÂÙ˘‰ ˘ÂÏ˘Ó ˙Á‡ ÏÎÏ .‫א‬
Ɖ˙‡ Ï·˜È˘ ÈËÒÈÈӯ˄ ÈÙÂÒ ËÓ¡ ‰· — ˙ȯÏ‚¯ ‰Ù˘‰ ̇
ÆÍ˙ÚÈ·˜ ˙‡ ˜Ó — ˙ȯÏ‚¯ ‰ȇ ̇
∫ " a , b , ·¢‡‰ ÏÚÓ L5 - L 4 ˙ÂÙ˘‰ ÍÈÙÏ .‫ב‬
L 4 = {a n b n-1 È‚Âʖȇ ‡Â‰ n , n $1}
L5 = L1 $ R (L 4)
ø L5 ‰Ù˘‰ ȉÓ

∫ {0 , $} ·¢‡‰ ÏÚÓ L ‰Ù˘‰ ÍÈÙÏ .14


Z _
] ¨ k $1 b
] 3 i1 i2 ik b
L = [0 $0 $0 $...0 $ i m $ 0 ∫ k –Ï 1 ÔÈ· m ÏÎÏ `
] b
] ˙ȯ‡˘ ‡ÏÏ 3 –· ˜ÏÁ˙Ó i m – b
\ a

Æ L ‰Ù˘· ¯˙ÂÈ· ‰¯ˆ˜‰ ‰ÏÈÓ‰ ˙‡ ·Â˙Î .‫א‬


Æ L ‰Ù˘‰ ˙‡ Ï·˜È˘ ÈËÒÈÈӯ˄ ÈÙÂÒ ËÓ¡ ‰· .‫ב‬

Ø≥∞ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≥∞ ≠
ÆÌÈÙÈÚÒ‰ È˘ ÏÚ ‰Ú Æ̉ÈÈ· ¯˘˜ Ôȇ˘ ·≠‡ ¨ÌÈÙÈÚÒ È˘ ÂÊ ‰Ï‡˘· .15
∫ÈËÒÈÈӯ˄ ‡Ï ÈÙÂÒ ËÓ¡ ÍÈÙÏ .‫א‬

0,1

‰ÏÁ˙‰ q0 0 , 1 q1 0 , 1 q2 0 q3 q4 0 , 1 q5 0 , 1 q6 0 , 1 q7

1 1
1

È„È ÏÚ ˙Ï·˜˙Ó ‡È‰ ̇ ÍÈÙÏ˘ iii - i ÌÈÏÈÓ‰ ˘ÂÏ˘Ó ˙Á‡ ÏÎÏ Ú·˜ (1)
ÆËÓ¡‰
ÆÂÊ ‰ÏÈÓ ¯Â·Ú· Ï·˜Ó ÏÂÏÒÓ Ì¢¯ ¨ËÓ¡‰ È„È ÏÚ ˙Ï·˜˙Ó ‰ÏÈÓ‰ ̇
001001 i
01010 ii
0101 iii
øËÓ¡‰ È„È ÏÚ ˙Ï·˜˙Ó‰ ‰ÏÈÓ Ï˘ ÈÏÓÈÈÓ‰ ͯ‡‰ Â‰Ó (2)
Æ‰Ê Í¯Â‡· ‰ÏÈÓÏ ‰Ó‚„ Ô˙
øËÓ¡‰ È„È ÏÚ ˙Ï·˜˙Ó‰ ‰ÏÈÓ Ï˘ ÈÏÓÈÒ˜Ó‰ ͯ‡‰ Â‰Ó (3)
Æ‰Ê Í¯Â‡· ‰ÏÈÓÏ ‰Ó‚„ Ô˙
øËÓ¡‰ È„È ÏÚ ˙¯„‚ÂÓ‰ ‰Ù˘‰ È‰Ó (4)

Ø≥± „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≥± ≠
®Æ‡ ÛÈÚÒÏ ¯˘˜ Ôȇ© .‫ב‬
∫ {a , b} ·¢‡‰ ÏÚÓ L ‰Ù˘‰ ÍÈÙÏ
Z _
] ¨˙Á‡ ÌÚÙ ˜ÂÈ„· aaa Ûˆ¯‰ ÚÈÙÂÓ ‰·˘ ‰ÏÈÓ ‡È‰ w b
] b
L = [w ¨ aaa –·˘ ‰Ï‡Ï ˯٠aa Ûˆ¯‰ Ï˘ ÌÈÚÙÂÓ ‰· Ôȇ `
] b
] Æ 3 –Ó Ï„‚ Âί‡˘ ÌÈ–a Ï˘ Ûˆ¯ ‰· Ôȇ b
\ a ∫‰Ó‚„Ï
Æ L –Ï ˙ÎÈÈ˘ ababbaaabbba ‰ÏÈÓ‰
Æ L –Ï ˙ÎÈÈ˘ aaabbbabbab ‰ÏÈÓ‰
Æ L –Ï ˙ÎÈÈ˘ ‡Ï bababbbab ‰ÏÈÓ‰
Æ L –Ï ˙ÎÈÈ˘ ‡Ï bbaaabaab ‰ÏÈÓ‰
Æ L –Ï ˙ÎÈÈ˘ ‡Ï aaababaaabbb ‰ÏÈÓ‰
Æ L –Ï ˙ÎÈÈ˘ ‡Ï aaaa ‰ÏÈÓ‰

Æ L ‰Ù˘‰ ˙‡ Ï·˜Ó‰ ÈËÒÈÈӯ˄ ÈÙÂÒ ËÓ¡ Ï˘ ȘÏÁ ËÂË¯Ò ÍÈÙÏ

b a,b
a a a a
‫התחלה‬ q0 q1 q2 q3 q5

q4

ÆËÓ¡‰ Ï˘ ÌÈ·ˆÓ‰ ÏÎ ˙‡ ÏÈÎÓ ËÂ˯҉


Æ L ‰Ù˘‰ ˙‡ Ï·˜È ËÓ¡‰˘ ÍÎ Â˙‡ ÌÏ˘‰Â ¨ËÂ˯҉ ˙‡ Í˙¯·ÁÓÏ ˜˙Ú‰
¨ÌȯÒÁ‰ ËϘ‰ ÈÓÈÒ ˙‡Â ÌȯÒÁ‰ Ìȯ·ÚÓ‰ ˙‡ ÌÈÏ˘‰Ï ÍÈÏÚ
ÆÌÈÏ·˜Ó‰ ÌÈ·ˆÓ‰ / Ï·˜Ó‰ ·ˆÓ‰ ˙‡ ÔÓÒÏÂ
ÆÌÈ·ˆÓ ÂÓÓ „È¯Â‰Ï Â‡ ËÓÂËÂ‡Ï ÌÈ·ˆÓ ÛÈÒÂ‰Ï Ôȇ ∫·Ï ÌÈ˘

Ø≥≤ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≥≤ ≠
¯ÙÒÓ‰ ˙‡ ˙‡ˆÂÓ ÂÊ ‰ÂÎÓ Æ f (m , n) ‰Èˆ˜ÂÙ‰ ˙‡ ˙·˘ÁÓ‰ ‚ȯÂÈË ˙ÂÎÓ ‰˙· .16
Æ n – m ÌȯÙÒÓ È˘ ÔÈ·Ó Ô˘‰
ÌÈÓ¢¯ ÌȯÙÒÓ‰ È˘ Æ 0 –Ó ÌÈÏ„‚ ÌÈÓÏ˘ n – m ÌȯÙÒÓ È˘ ËϘΠ˙Ï·˜Ó ‰ÂÎÓ‰
ÔÈ·Â ®1 Ï˘ ÌÈÂÂ˙ m È„È ÏÚ ‚ˆÂÈÓ‰ ¯ÙÒÓ ‡Â‰ m ȯ‡ ¯ÙÒÓ© ÌÈȯ‡ ÌȯÙÒÓΠ˯҉ ÏÚ
Æ # ÔÓÈÒ‰ Ì¢¯ ÌȯÙÒÓ‰ È˘
¯ÙÒÓΠ˯҉ ÏÚ Ì˘¯ÈÈ ‡Â‰Â ¨ÌȯÙÒÓ‰ È˘ ÔÈ·Ó Ô˘‰ ¯ÙÒÓ‰ ‡Â‰ ‰ÂÎÓ‰ Ï˘ ËÏÙ‰
Ì˘¯ÈÈ ¯ÙÒӉ ¨ # ÔÓÈÒ‰ ̘ӷ Ì˘¯ÈÈ ÈÏ‡Ó˘‰ $ –‰ ÔÓÈÒ Æ$ ÈÓÈÒ È˘ ÔÈ· ȯ‡
ÆÂÈÓÈÓ
Æ b ¨ a ÌÈÓÈÒ· ¯ÊÚÈ‰Ï ‰ÏÂÎÈ ‰ÂÎÓ‰ ‰ÏÂÚÙ‰ Íωӷ
∫ÍÎ ‰‡¯ÈÈ Ô¯ÎÈʉ Ë¯Ò ·Â˘ÈÁ‰ ÈÙÏ ¨ n = 5 – m = 3 ËϘ‰ ¯Â·Ú· ∫‰Ó‚„Ï

= 1 1 1 # 1 1 1 1 1 ∆ ∆ ∆ . ..
∫ÍΠ˯҉ ‰‡¯ÈÈ ·Â˘ÈÁ‰ ÌÂÈÒ ¯Á‡Ï

= . .. . .. . .. $ 1 1 1 $ . ..
ÆÌÎÂ˙Ï ˙Â·È˘Á Ôȇ˘ Ìȇ˙ ̉ . . . –· ÌÈÓÂÒÓ‰ Ìȇ˙‰ ∫‰¯Ú‰
ƉÂÎÓ‰ Ï˘ ȘÏÁ ËÂË¯Ò ÍÈÙÏ
a / a ¨ ÔÈÓÈ
1 / 1 ¨ Ï‡Ó˘
1 / 1 ¨ ÔÈÓÈ b / b ¨ ÔÈÓÈ # / # ¨ Ï‡Ó˘
b / b ¨ Ï‡Ó˘
q0 1 / a ¨ ÔÈÓÈ q1 ‫א‬ q2 1 / b ¨ Ï‡Ó˘ q3
‰ÏÁ˙‰

‫ב‬ ‫ג‬

q4 q5 q6 b / 1 ¨ Ï‡Ó˘
b / 1 ¨ ÔÈÓÈ Δ / $ ¨ ÔÈÓÈ # / $ ¨ ÔÈÓÈ
1 / $ ¨ ÔÈÓÈ

Æ‚≠‡ ˙ÂÈ˙‡· ÌÈÓÂÒÓ‰ Ìȯ·ÚÓ ‰˘ÂÏ˘ ˘È ËÂ˯ҷ .‫א‬


Æ˙‡¯Â‰‰Â ËϘ‰ ÈÓÈÒ ÌȯÒÁ ‰Ï‡ Ìȯ·ÚÓ·
‰ÂÎÓ‰˘ ÍÎ ÌȯÒÁ‰ Ìȯ·ÚÓ‰ ˙˘ÂÏ˘ ˙‡ ÌÏ˘‰Â ¨ËÂ˯҉ ˙‡ Í˙¯·ÁÓÏ ˜˙Ú‰
Æ f (m , n) ‰Èˆ˜ÂÙ‰ ˙‡ ·˘Á˙
Æ n = 1 ¨ m = 1 ËϘ‰ ¯Â·Ú· ‰ÂÎÓ‰ Ï˘ ·Â˘ÈÁ‰ ÍÈω˙ ˙‡ ‰‡¯‰ .‫ב‬
‰Êȇ· Ì¢¯Â ¨‰ÂÎÓ‰ ˘‡¯ ‡ˆÓ ÔÎȉ ÔÓÒ ¨Ë¯Ò‰ ·ˆÓ ˙‡ Ì¢¯ ·Ï˘ Ïη
Æ˙‡ˆÓ ‰ÂÎÓ‰ q6-q0 ÌÈ·ˆÓ‰Ó
Ø≥≥ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≥≥ ≠
‫תכנות מונחה עצמים‬
Æ≤∞≠±∑ ˙Âχ˘‰Ó ÌÈÈ˙˘ ÏÚ ‰Ú ¨Java –· ·˙ÂÎ ‰˙‡Â ‰Ê ÏÂÏÒÓ ˙„ÓÏ Ì‡
®˙„˜ ≤μ — ‰Ï‡˘ ÏÎÏ©
ÔϘ ˙‡ ˙ÂÚÈÓ˘Ó ˙·گ ˙ÂÈÁ Æ¢¯·„Ï¢ ÌÈÚ„ÂÈ ÌÈÈÁ‰ ÈÏÚ· "ZooZoo" ˙ÂÈÁ‰ Ô‚· .17
ÂÈÙ ˙‡ ˙ÂÏ·˜Ó ˙ÂÈÁ‰ ¨˙ÂÈÁ‰ ˙‡ ÏÈ·‰Ï ÚÈ‚Ó ÏÙËÓ ¯˘‡Î ÆÏ· Ï·˜Ï ‰˘È¯„·
ÆÏÂÎ‡Ï ˙ÂÓÈÈÒÓ Ô‰˘Î Ϙ ˙ÂÚÈÓ˘Ó ˙ÂÈÁ‰ ƉÁÓ˘ ˙‡ȯ˜·
˙¯Ӈ¢ ˙‡Â ˙ÂÈÁ‰ Ô‚· ÌÈÈÁ‰ ÈÏÚ· ˙‡ ¨ (ZooZoo) ˙ÂÈÁ‰ Ô‚ ˙‡ ‰Ó„Ó‰ ˘È¯٠ÍÈÙÏ
ÆÌÈÚÈÓ˘Ó Ì‰˘ ¢‰ÓÎÁ‰
Æ (Marine) ÈÓÈ ÌÈÈÁ ÏÚ· ‡ (Reptile) ÏÁÂÊ ˙ÂÈ‰Ï ÏÂÎÈ (Animal) ÌÈÈÁ ÏÚ·
¨ (Crocodile) ÔÈ˙ ‡ (Snake) ˘Á ˙ÂÈ‰Ï ÏÂÎÈ (Reptile) ÏÁÂÊ
Æ(GoldFish) ·‰Ê ‚„ ˙ÂÈ‰Ï ÏÂÎÈ (Marine) ÈÓÈ ÌÈÈÁ ÏÚ·
¨(len) ÂÏ˘ ͯ‡‰ Ì‚ ¯Ó˘ ÏÁÂÊ ¯Â·Ú· Æ(name) ÂÓ˘ ¯Ó˘ ÌÈÈÁ ÏÚ· ÏÎÏ
Æ(depth) ÂÏ˘ ÈÏÓÈÒ˜Ó‰ ‰ÏÈψ‰ ˜ÓÂÚ Ì‚ ¯Ó˘ ÈÓÈ ÌÈÈÁ ÏÚ· ¯Â·Ú·Â
Æ·Ú¯ ÌÈÈÁ ÏÚ· Ï˘ Âȯ·„ ˙‡ ‰¯ÈÊÁÓ hungry ‰ÏÂÚÙ‰
ÆÂÏ˘ ÏÙËÓ‰ ÈÙ ˙‡ Ï·˜Ó‰ ÌÈÈÁ ÏÚ· Ï˘ Âȯ·„ ˙‡ ‰¯ÈÊÁÓ caretaker ‰ÏÂÚÙ‰
ÆÏÂÎ‡Ï ÌÈÈÒ˘ ÌÈÈÁ ÏÚ· Ï˘ Âȯ·„ ˙‡ ‰¯ÈÊÁÓ satisfied ‰ÏÂÚÙ‰
public class Animal
{
private String name; ØØÌÈÈÁ‰ ÏÚ· Ì˘
public static int count = 0; ØØÌÈÈÁ ÈÏÚ· ‰ÂÓ

public Animal(String name)


{
this.name = name;
count ++;
}
public String hungry() { return this.name + " is hungry!"; } ØØ·Ú¯
public String caretaker() { return "Yammi"; } ØØÌÈÏÙËÓ‰ ˙Ï·˜
public String satisfied() { return "Finish eating"; } ØØÏÂÎ‡Ï ÌÈÈÒ
}
public class Reptile extends Animal
{
private int len; ØØͯ‡
public Reptile(String name, int len)
{
super(name);
this.len = len;
}
public String caretaker() { return "Crawling: " + super.caretaker(); }
}
(.‫)שים לב׃ המשך השאלה בעמוד הבא‬
Ø≥¥ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≥¥ ≠
public class Snake extends Reptile
{
public Snake(String name, int len) { super(name, len); }
public String satisfied() { return "Tssss"; }
}

public class Crocodile extends Reptile


{
public Crocodile(int len) { super("Crocki" + count , len); }
public String satisfied() { return super.satisfied() + " Whaamm"; }
}

public class Marine extends Animal


{
private double depth; ØؘÓÂÚ

public Marine(String name, double depth)


{
super (name);
this.depth = depth;
}
public String caretaker() { return "Swimming"; }
}

public class GoldFish extends Marine


{
public GoldFish(String name) { super(name, 0.2); }
public String satisfied() { return "Bloop bloop"; }
}

Ø≥μ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≥μ ≠
public class ZooZoo
{
private Animal[] animals;

public ZooZoo()
{
this.animals = new Animal[4];
this.animals[0] = new Snake("snaki", 50);
this.animals[1] = new Crocodile(78);
this.animals[2] = new GoldFish("goldi");
this.animals[3] = new Crocodile(103);
}
public void print()
{
for (int i = 0; i < this.animals.length; i++)
{
System.out.println(this.animals[i].hungry());
System.out.println(this.animals[i].caretaker());
System.out.println(this.animals[i].satisfied());
System.out.println("****");
}
}
}
public class Test
{
public static void main(String [] args)
{
ZooZoo zoo = new ZooZoo();
zoo.print();
}
}
∫‰Ï‡‰ ÌÈÓÈÒ· ˘Ó˙˘‰ Æ˘È¯ٷ ˙¯„‚ÂÓ‰ ˙˜ÏÁÓ‰ ˙ÈÈί¯È‰ ˙‡ ËË¯Ò .‫א‬
‰˘Â¯È
‰ÏΉ

ÆËÏÙ‰ ˙‡ ·Â˙Π¨ Test ‰˜ÏÁÓ·˘ main ‰ÏÂÚÙ‰ ¯Á‡ ·˜ÚÓ ·Â˙Î .‫ב‬
ÆÂÏ˘ ˙ÂÂÎ˙‰ ÈÎ¯Ú ˙‡ — ÌˆÚ ÏÎ ¯Â·Ú·Â ¨ÌÈ˙˘Ó‰ ÈÎ¯Ú ˙‡ ÏÂÏÎÏ ˘È ·˜ÚÓ·

Ø≥∂ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≥∂ ≠
∫ȘÏÁ UML ÍÈÙÏ .18

WhatOp (interface) WhatClass


int calculate1(int p) private int number
int calculate2() public WhatClass(int number)
public int getNumber()
public int calculate3(int p)
public String toString()

WhatIn1
private int num ∫‡¯˜Ó
∫˜˘ÓÓ ˘ÂÓÈÓ
public WhatIn1(int number, int num) ∫‰˘Â¯È
public int getNum()
public void setNum(int num)
public int calculate2()
public int calculate3(int p1, int p2)
public String toString()

ÏÚ ‰ÚÈ ¨ WhatClass ‰˜ÏÁÓ· public int calculate1(int p) ‰ÏÂÚÙ‰ ˘ÂÓÈÓ Ì‡‰ .‫א‬
ÆÍ˙·Â˘˙ ˙‡ ˜Ó ø WhatIn1 ‰˜ÏÁÓ· ‰Ï˘ ˘ÂÓÈÓ‰ ˙˘È¯„
∫‡Â‰ WhatIn1 ‰˜ÏÁÓ· ‰·‰ ‰ÏÂÚÙ‰ ˘ÂÓÈÓ .‫ב‬
public WhatIn1(int number, int num)
{
this.number = number;
this.num = num;
}
‰ÏÂÚÙ‰ ˙‡ Ô˜˙ — ‡Ï ̇ ª‰ÏÂÚÙ‰ Úˆȷ ˙‡ ¯‡˙ — ÔΠ̇ ø‰Ș˙ ‰ÏÂÚÙ‰ ̇‰
Æ˙˜Â˙Ó‰ ‰ÏÂÚÙ‰ ˙‡ Í˙¯·ÁÓ· Ì¢¯ Æ®‰ÓˆÚ ‰ÏÂÚÙÏ Ë¯Ù ¯·„ ˙Â˘Ï Ôȇ©

Ø≥∑ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≥∑ ≠
Ï˘ ÌÏ˘‰ ͯډ ˙‡ ‰¯ÈÊÁÓ‰ ¨ calculate2() ‰ÏÂÚÙ‰ ‰˘ÓÂÓ WhatIn1 ‰˜ÏÁÓ· .‫ג‬
∫̈ډ ˙ÂÂÎ˙ ÚˆÂÓÓ
public int calculate2()
{ return (int)((this.number + this.num)/2); }
‰ÏÂÚÙ‰ ˙‡ Ô˜˙ — ‡Ï ̇ ª‰ÏÂÚÙ‰ Úˆȷ ˙‡ ¯‡˙ — ÔΠ̇ ø‰Ș˙ ‰ÏÂÚÙ‰ ̇‰
Æ˙˜Â˙Ó‰ ‰ÏÂÚÙ‰ ˙‡ Í˙¯·ÁÓ· Ì¢¯ Æ®‰ÓˆÚ ‰ÏÂÚÙÏ Ë¯Ù ¯·„ ˙Â˘Ï Ôȇ©
∫ WhatIn2 ‰˜ÏÁÓ‰ Ï˘ ȘÏÁ ¯Â‡È˙ ÍÈÙÏ .‫ד‬

class WhatIn2 extends WhatIn1


private int sum
public WhatIn2(int number, int num, int sum)
public int calculate3(int p1, int p2, int p3)

‰ÏÂÚÙ ¯È„‚‰Ï ̘ӷ Ï„ÁÓ ˙¯V· ‰·‰ ‰ÏÂÚÙ‰ ÏÚ ÍÓ˙Ò‰Ï ¯˘Ù‡ ̇‰ (1)
ÆÍ˙·Â˘˙ ˙‡ ˜Ó øWhatIn2 ‰˜ÏÁÓ· ‰·
WhatIn1 , WhatClass ˙˜ÏÁÓ‰ ˘ÂÏ˘· ‰˘ÓÂÓ calculate3 ‰ÏÂÚÙ‰ (2)
∫‰Ê‰ ÔÙ‡· WhatIn2 –Â

class WhatClass public int calculate3(int p)


{ return this.number * p; }
class WhatIn1 public int calculate3(int p1, int p2)
{ return this.calculate3(p1) + this.num * p2 * p2; }
class WhatIn2 public int calculate3(int p1, int p2, int p3)
{ return this.calculate3(p1, p2) + this.sum * p3 * p3 * p3;}

∫̉ ÂÏ˘ ˙ÂÂÎ˙‰ ÈίÚ ¨ WhatIn2 ÒÂÙÈËÓ ‡Â‰ obj ̈ډ ÈÎ Á‰
number = 1
num = 2
sum = 3
∫˙È˘‡¯‰ ‰ÏÂÚÙ· ‰·Â˙Ή ‰‡¯Â‰ ÍÈÙÏ
System.out.println(obj.calculate3(1000, 100, 10));
ÈίÚÏ ˙ÂÏÂÚÙ ÔÂÓÈÊÏ ÒÁÈÈ˙‰ ·˜ÚÓ· Ɖ‡¯Â‰‰ Úˆȷ ¯Á‡ ·˜ÚÓ‰ ˙‡ ‰‡¯‰
ÆÏ·˜˙Ó‰ ËÏÙ‰ ˙‡ Ì¢¯ Æ̈ډ ˙ÂÂÎ˙
Ø≥∏ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≥∏ ≠
∫ÌÈÓˆÚ ‰ÁÂÓ ˙ÂÎ˙ Ï˘ ˙Â¯˜Ú ‰ÓÎ ÍÈÙÏ .19
encapsulation — ‰ÒÓΉ •
overloading — ‰ÒÓÚ‰ •
inheritance — ‰˘Â¯È •
overriding — ‰Òȯ„ •
polymorphism — ˙ÂÈ˙¯Âˆ–·¯ •
ÆÌ‰Ó ˜ÏÁÏ ˙ÂÒÁÈÈ˙‰ ‰È‰˙ ÂÊ ‰Ï‡˘·
Æ Stam, Davar ∫˙˜ÏÁÓ È˙˘ Ï˘ ȘÏÁ ˘ÂÓÈÓ ÍÈÙÏ
public class Stam
{
private char x;

public Stam() { this.x = '*'; }


public Stam(char c) { this.x = c; }
public Stam getStam() { return this; }
public String toString() { return "x=" + this.x; }
public boolean isSame1(Stam other)
{ Ø؉χ˘‰ ͢Ӊ· ˘ÂÓÈÓÏ ˙ÂÒÁÈÈ˙‰ }
public boolean isSame2(Stam other)
{ Ø؉χ˘‰ ͢Ӊ· ˘ÂÓÈÓÏ ˙ÂÒÁÈÈ˙‰ }
public void same(Stam other)
{
if (this.isSame1(other))
System.out.println(this + " same1 as " + other);
else
System.out.println(this + " not same1 as " + other);
if (this.isSame2(other))
System.out.println(this + " same2 as " + other);
else
System.out.println(this + " not same2 as " + other);
}
public void print() { System.out.println(this.toString ()); }
public void print(Stam other) { this.same(other); }
}

Ø≥π „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ≥π ≠

public class Davar extends Stam


{
private int y;
public Davar() { super(); this.y = 0; }
public Davar(char c) { super(c); this.y = 0; }
public Davar(char c , int num) { super(c); this.y = num; }
public String toString() { return "Davar: " + super.toString(); }
}
Æ˙Â· ˙ÂÏÂÚÙ È˙˘ ¯„‚‰ Stam ‰˜ÏÁÓ· .‫א‬
˙ÏÈÁ˙· ÂȈ˘ ˙Â¯˜Ú‰ ÔÈ·Ó© ÌÈÓˆÚ ‰ÁÂÓ ˙ÂÎ˙ Ï˘ Ô¯˜ÈÚ‰ Â‰Ó (1)
ø˙‡Ê ¯˘Ù‡Ó‰ ®‰Ï‡˘‰
øÏÈÚÙ‰Ï ‰· ‰ÏÂÚÙ ÂÊȇ ®¯ÏÈÈÙÓ˜© ¯„‰Ó‰ ¯Á· „ˆÈÎ (2)
®‰Ï‡˘‰ ˙ÏÈÁ˙· ÂȈ˘ ˙Â¯˜Ú‰ ÔÈ·Ó© ÌÈÓˆÚ ‰ÁÂÓ ˙ÂÎ˙ Ï˘ Ô¯˜ÈÚ ‰Êȇ .‫ב‬
ƘÓ ø Davar ‰˜ÏÁÓ· toString() ‰ÏÂÚÙ· ˘ÓÂÓÓ

(.‫)שים לב׃ סעיף ג של השאלה בעמוד הבא‬

Ø¥∞ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ¥∞ ≠
∫ÔÏ‰Ï˘ ˙È˘‡¯‰ ‰˜ÏÁÓ‰ ‰Â˙ .‫ג‬
public class Program
{
public static void main(String[] args)
{
Stam[] s = new Stam[6]; _
b
s[0] = new Stam(); b
s[1] = new Davar(); b
b
s[2] = new Stam('b'); ` ± Ú˘
b
s[3] = new Davar('b'); b
s[4] = new Davar('a', 0); b
b
s[5] = s[2].getStam(); a
_
for (int i = 0; i < s.length; i++) b
{ b
` ≤ Ú˘
s[i].print(); b
} b
a
_
s[1].print(s[0]); b
b
s[2].print(s[5]); ` ≥ Ú˘
s[3].print(s[4]); b
b
} a
}
Æ®‰Â˙‰ ˙È˘‡¯‰ ‰˜ÏÁÓ·© ± Ú˘· ‰·‰ s ͯÚÓ‰ ˙‡ ‚ˆ‰ (1)
ÆÂÏ˘ ˙ÂÂÎ˙‰ ÈÎ¯Ú ˙‡ Ì¢¯ ÌÈÓˆÚ‰Ó „Á‡ ÏÎ ¯Â·Ú·
Æ≤ Ú˘· ‰‡ÏÂω ËÏÙ ˙‡ Ì¢¯ (2)
®‰Ï‡˘‰ ˙ÏÈÁ˙· ÂȈ˘ ˙Â¯˜Ú‰ ÔÈ·Ó© ÌÈÓˆÚ ‰ÁÂÓ ˙ÂÎ˙ Ï˘ Ô¯˜ÈÚ ‰Êȇ (3)
ø≤ Ú˘· ÈÂËÈ· È„ÈÏ ‡·
ËÏÙ‰˘ ÍÎ Stam ‰˜ÏÁÓ·˘ isSame2() , isSame1() ˙ÂÏÂÚÙ‰ ˙‡ ˘ÓÓ (4)
∫ÔÏ‰Ï˘ ËÏÙ‰ ‰È‰È ¨≥ ÚË˜Ó Ï·˜˙Ó‰

Davar: x = * same1 as x = *
Davar: x = * not same2 as x = *
x = b same1 as x = b
x = b same2 as x = b
Davar: x = b not same1 as Davar: x = a
Davar: x = b not same2 as Davar: x = a
Ø¥± „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ¥± ≠

Ì‚„ ÌȯˆÈÈÓ ¯ÂˆÈÈ ÒÙ Ïη Ư˙Âȉ ÏÎÏ ¯ÂˆÈÈ ÈÒÙ 12 –Ï ÌÂ˜Ó ˘È ˙¯ ¯ÂˆÈÈÏ ÏÚÙÓ· .20
¯ ÏÎ ÆÌ‚„ Â˙Â‡Ó ˙¯‰ ˙‡ Ì‰Ó ¯ˆÈÈÏ ¯˘Ù‡˘ ÌÈÚ·ˆ ‰ÓÎ ˘È Ì‚„ ÏÎÏ Æ˙¯ Ï˘ „Á‡
ÆÂÏ˘ Ì‚„· ÌÈÚ·ˆ‰ ÔÈ·Ó „·Ï· „Á‡ Ú·ˆ· ‡Â‰
‡Â‰ Ì‰Ó˘ ÌÈÚ·ˆ‰ ˙ÂÓ˘ ¨Ì‚„‰ „˜ ¨Ì‚„‰ Ì˘ ∫Ú„ÈÓ‰ ¯Ó˘ ˙¯ Ï˘ Ì‚„ ÏÎ ¯Â·Ú·
˙ÈÏÓÈÒ˜Ó‰ ˙¯‰ ˙ÂÓΠ¨Ì‚„‰ Ï˘ ÌÈÚ·ˆ‰Ó „Á‡ ÏÎÓ È‡ÏÓ· ˘È˘ ˙¯‰ ˙ÂÓÎ ¨¯ˆÂÈÓ
Æ®„ÁÈ ÌÈÚ·ˆ‰ ÏÎÓ© ÔÒÁ‡Ï ¯˘Ù‡˘ ‰Ê Ì‚„Ó
∫˙¯ Ì‚„Ï ‰Ó‚„
Æ¢‰˘Â˘¢ ∫Ì˘ —
Æ11 ∫„˜ —
Ʒ‰ˆ ¨Ô·Ï ¨Ì„‡ ∫¯ˆÂÈÓ ‡Â‰ Ì‰Ó˘ ÌÈÚ·ˆ‰ ˙ÂÓ˘ —
ÆÌȷ‰ˆ ˙¯ 70– ÌÈ·Ï ˙¯ 350 ¨ÌÈÓ„‡ ˙¯ 200 ∫ȇÏÓ· ˙¯‰ ˙ÂÓÎ —
∫ÔÒÁ‡Ï ¯˘Ù‡˘ ®„ÁÈ ÌÈÚ·ˆ‰ ÏÎÓ© ‰Ê Ì‚„Ó ˙¯‰ Ï˘ ˙ÈÏÓÈÒ˜Ó‰ ˙ÂÓΉ —
Æ100,000
Æ· ÌȯˆÂÈÓ‰ ˙¯‰ ÈÓ‚„ ÏÎÏ Ú‚Â· Ú„ÈÓ ¯Ó˘ ÏÚÙÓ·
∫‰Ï‡‰ Ìȇ˙Ï ÒÁÈÈ˙‰Ï ˘È ÌÈÂÒÓ Ì‚„Ó ¯ ¯ˆÈÈÏ ÌȈ¯˘ ÌÚÙ Ïη
‡È‰ ȇÏÓ· ÂÓÓ ˙¯‰ ˙ÂÓ΢ Ú·ˆ‰ ∫ȇÏÓ· ˙¯‰ ˙ÂÓÎ ÈÙ ÏÚ ¯Á·ÈÈ ¯‰ Ú·ˆ •
„Á‡ Ú·ˆÓ ¯˙ÂÈ ˘È ̇© ¯‰ ¯ÂˆÈÈÏ ¯Á·ÈÈ˘ Ú·ˆ‰ ‡Â‰ ¨Ì‚„ Â˙Â‡Ó ¯˙ÂÈ· ‰˘‰
Æ®Ì‰Ó „Á‡ ¯Á·ÈÈ ‰ÊÎ
ÌÈÂÒÓ Ì‚„Ó ˙ÏÏÂΉ ˙¯‰ ˙ÂÓ΢ ¯ÂÒ‡ ͇ ¨ÏÈÚÙÓ‰ ˙¯ÈÁ·Ï ‰Â˙ ¯ÂˆÈȉ ˙ÂÓÎ •
¯˘Ù‡˘ ‰Ê Ì‚„Ó ˙ÈÏÓÈÒ˜Ó‰ ˙ÂÓΉ ÏÚ ‰ÏÚ˙ ®È‡ÏÓ·˘ ˙¯‰Â ¯ˆÂÈÈ˘ ˙¯‰©
ÆÔÒÁ‡Ï

∫˙˜ÏÁÓ ˘ÂÏ˘ · ˘È¯٠‰· ÏÚÙÓ‰ Ï˘ ‰ÎÂ˙‰ Ò„‰Ó

CandleKind ˙¯ Ï˘ Ì‚„ ˙‚ˆÈÈÓ‰ ‰˜ÏÁÓ


Factory ÏÚÙÓ‰ ˙‡ ˙‚ˆÈÈÓ‰ ‰˜ÏÁÓ
Run ˙È˘‡¯ ‰˜ÏÁÓ

(.‫)שים לב׃ המשך השאלה בעמוד הבא‬


Ø¥≤ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ¥≤ ≠
∫CandleKind ‰˜ÏÁÓ‰ ÔÓ ÌȘÏÁ ÍÈÙÏ
public class CandleKind
private String name; ØØ Ì‚„‰ Ì˘
private int code; ØØ Ì‚„‰ „˜
private String[] colors; ØØ Ì‚„‰ ÈÚ·ˆ ÔÂÂ‚Ó Ï˘ ͯÚÓ
private int[] amounts; ØØ ®‰Ó‡˙‰·© Ú·ˆ ÏÎÓ È‡ÏÓ· ˙ÂÓÎ
private int maxTotalAmount; ØØ ÔÂÒÁ‡Ï ˙ÈÏÓÈÒ˜Ó ‰ÒÎÓ
public CandleKind(String name, int code, String[] colors, int maxTotalAmount)
{
this.name = name;
this.code = code;
this.colors = colors;
this.amounts = new int[colors.length];
for (int i = 0; i < amounts.length; i++)
{ this.amounts[i] = 0; }
this.maxTotalAmount = maxTotalAmount;
}
public void update(String color, int amount)
ØØ È‡ÏÓ·˘ color Ú·ˆ· ˙¯‰ ˙ÂÓÎ ˙‡ amount ˙ÂÓη ‰ÏÈ„‚Ó ‰ÏÂÚÙ‰

¯Â·Ú· CandleKind ‰˜ÏÁÓ‰ ÔÓ kind1 Ì˘· ÌˆÚ ˙ÈÈ·Ï ˙‡¯Â‰ Ø ‰‡¯Â‰ ·Â˙Î .‫א‬
ÌÈÚ·ˆ ‰˘ÂÏ˘· ¯ˆÂÈÓ ˘„Á‰ Ì‚„‰ ÆÏÚÙÓ· ¯ˆÈÈÏ ÌÈÏÈÁ˙Ó˘ ˙¯ Ï˘ ˘„Á Ì‚„
ÆÂ˙ÈÈ· ¯Á‡Ï ̈ډ ˙ÂÂÎ˙ ÈÎ¯Ú ˙‡ Ì¢¯ ÆÍˆ¯Î ˙ÂÂÎ˙Ï ÌÈÎ¯Ú ¯Á· ÆÌÈ¢
ÏÎÏ „ÂÚÈ˙ ·Â˙Î Æ‰Ï˘ ˙ÂÂÎ˙‰ Ø ‰ÂÎ˙‰ ˙‡Â Factory ‰˜ÏÁÓ‰ ˙¯˙ÂÎ ˙‡ ·Â˙Î .‫ב‬
ƉÂÎ˙
∫·Â˙Î ‰ÏÂÚÙ ÏÎÏ Æ˘È¯ÙÏ ÛÈÒÂ‰Ï ˘È˘ ≥≠± ˙ÂÏÂÚÙ Ï˘ „ÂÚÈ˙ ÌÚ ‰Ï·Ë ÍÈÙÏ .‫ג‬
ÆÍ˙¯ÈÁ· ˙‡ ¯·Ò‰ Ɖ˙‡ ¯È„‚‰Ï Ìȇ˙Ó ®˙˜ÏÁÓ‰ ˘ÂÏ˘ ÔÈ·Ó© ‰˜ÏÁÓ ÂÊȇ· i
ƉÏÂÚÙ‰ Ï˘ ˙¯˙ÂΉ ˙‡ ii

ƯˆÈÈÏ ÂÏÈÁ˙È˘ ÌÈÂÒÓ ˙¯ Ì‚„Ó ¯ Ï˘ Ú·ˆ ‰¯ÈÊÁÓ‰ ‰ÏÂÚÙ ±


ÆÌÈÂÒÓ ˙¯ Ì‚„Ó ¯ˆÈÈÏ ¯˘Ù‡˘ ˙¯‰ ˙ÂÓÎ ˙‡ ‰¯ÈÊÁÓ‰ ‰ÏÂÚÙ ≤
˙ÂÓΉ ÔÈ· ˘¯Ù‰‰ ¯·ڷ˘ ¯‰ Ì‚„ Ï˘ „˜‰ ˙‡ ‰¯ÈÊÁÓ‰ ‰ÏÂÚÙ ≥
˘È ̇ Ư˙ÂÈ· Ï„‚‰ ‡Â‰ ÔÒÁ‡Ï ¯˘Ù‡˘ ˙ÂÓΉ ÔÈ·Ï È‡ÏÓ· ‰Ê Ì‚„Ó ˘È˘
ÈÓ‚„Ó „Á‡ ÏÎ Ï˘ ȇÏÓ· ˙ÂÓΉ ̇ ÆÌ‰Ó „Á‡ ¯ÊÁÂÈ ¨‰Ï‡Î ˙¯ ÈÓ‚„ ‰ÓÎ
Æ®ÌÈȘ ‡Ï „˜© 999 „˜‰ ¯ÊÁÂÈ ¨ÔÒÁ‡Ï ¯˘Ù‡˘ ˙ÈÏÓÈÒ˜Ó‰ ‡È‰ ˙¯‰

Ø¥≥ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ¥≥ ≠
ƯˆÈȉ ÍÈω˙ ˙‡ ˙ωÓ ‰ÏÂÚÙ‰ Æ Run ‰˜ÏÁÓ· ˙˘ÓÂÓÓ‰ ˙È˘‡¯ ‰ÏÂÚÙ ÍÈÙÏ .‫ד‬
Ƅ˜‰ ȯÁ‡ ÚÈÙÂÓ‰ ˙Â˘È¯„‰ ˯ÈÙ ÈÙ ÏÚ ®¥©≠®±© ÌȯÙÒÂÓÓ‰ „˜‰ ÈÚ˘ ˙‡ ÌÏ˘‰
‰ÂÎ˙ ÏÎÏ get , set ˙ÂÏÂÚÙ ˙¯„‚ÂÓ ¨˙ÂÓÈȘ ‚ ÛÈÚÒ· ˙¯„‚‰˘ ˙ÂÏÂÚÙ‰ ÈÎ Á‰
Æ· ÛÈÚÒ· ˙·˙΢ Factory ‰˜ÏÁÓ·Â ‰Â˙‰ CandleKind ‰˜ÏÁÓ·
Ô˙‡ ˘ÓÓ ˙¯„‚ÂÓ Ô‰ ‰˜ÏÁÓ ÂÊȇ· Ì¢¯ ¨˙ÂÙÒÂ ˙ÂÏÂÚÙ ¯È„‚Ó ‰˙‡ ̇
ƇÏÓ ÔÙ‡·
public static void main(String [] args)
{
Factory fty;
ØØ ÈÎ¯Ú ÌÚ fty ̈ډ ÌÈȘ˘ Á‰ ‰‡Ï‰Â Ô‡ÎÓ
ØØ ÏÚÙÓ· ȇÏÓ‰ ·ˆÓ ˙‡ Ìȯ‡˙Ó‰ ˙ÂÂÎ˙
int code = _________________________
(1)

while (code != 999)


{
CandleKind ck;
(2)
______________________________
String colorToProduce;
(3)
______________________________
int amount;
(4)
______________________________
ck.update(colorToProduce, amount);
code = _________________________
(1)
}
}
∫˙Â˘È¯„‰ ˯ÈÙ
Æ‚ ÛÈÚÒ·˘ ‰Ï·Ë‰Ó ≥ ‰ÏÂÚÙ ÔÂÓÈÊ (1)
Æcode „˜‰ ÏÚ· ¯‰ Ì‚„ ˙‡ ÏÈÎÈ ck ‰˙˘Ó‰˘ ÍÎÏ ‡È·È ¯˘‡ „˜ Ú˘ (2)
¯ˆÈÈÏ ˘È˘ Ú·ˆ‰ ˙‡ ÏÈÎÈ colorToProduce ‰˙˘Ó‰˘ ÍÎÏ ‡È·È ¯˘‡ „˜ Ú˘ (3)
Æcode ‡Â‰ ÂÏ˘ „˜‰˘ ¯‰ Ì‚„Ó
¯ˆÈÈÏ ¯˘Ù‡˘ ˙¯‰ ˙ÂÓÎ ˙‡ ÏÈÎÈ amount ‰˙˘Ó‰˘ ÍÎÏ ‡È·È ¯˘‡ „˜ Ú˘ (4)
Æcode ‡Â‰ ÂÏ˘ „˜‰˘ ¯‰ Ì‚„Ó

Ø¥¥ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ¥¥ ≠

¥μ „ÂÓÚ· ÏÈÁ˙Ó C# –· ÌÈÓˆÚ ‰ÁÂÓ ˙ÂÎ˙ ‫שים לב׃‬


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ¥μ ≠
‫תכנות מונחה עצמים‬
Æ≤¥≠≤± ˙Âχ˘‰Ó ÌÈÈ˙˘ ÏÚ ‰Ú ¨C# –· ·˙ÂÎ ‰˙‡Â ‰Ê ÏÂÏÒÓ ˙„ÓÏ Ì‡
®˙„˜ ≤μ — ‰Ï‡˘ ÏÎÏ©
‰˘È¯„· ÔϘ ˙‡ ˙ÂÚÈÓ˘Ó ˙·گ ˙ÂÈÁ Æ¢¯·„Ï¢ ÌÈÚ„ÂÈ ÌÈÈÁ‰ ÈÏÚ· "ZooZoo" ˙ÂÈÁ‰ Ô‚· .21
˙‡ȯ˜· ÂÈÙ ˙‡ ˙ÂÏ·˜Ó ˙ÂÈÁ‰ ¨˙ÂÈÁ‰ ˙‡ ÏÈ·‰Ï ÚÈ‚Ó ÏÙËÓ ¯˘‡Î ÆÏ· Ï·˜Ï
ÆÏÂÎ‡Ï ˙ÂÓÈÈÒÓ Ô‰˘Î Ϙ ˙ÂÚÈÓ˘Ó ˙ÂÈÁ‰ ƉÁÓ˘
˙¯Ӈ¢ ˙‡Â ˙ÂÈÁ‰ Ô‚· ÌÈÈÁ‰ ÈÏÚ· ˙‡ ¨ (ZooZoo) ˙ÂÈÁ‰ Ô‚ ˙‡ ‰Ó„Ó‰ ˘È¯٠ÍÈÙÏ
ÆÌÈÚÈÓ˘Ó Ì‰˘ ¢‰ÓÎÁ‰
Æ (Marine) ÈÓÈ ÌÈÈÁ ÏÚ· ‡ (Reptile) ÏÁÂÊ ˙ÂÈ‰Ï ÏÂÎÈ (Animal) ÌÈÈÁ ÏÚ·
¨ (Crocodile) ÔÈ˙ ‡ (Snake) ˘Á ˙ÂÈ‰Ï ÏÂÎÈ (Reptile) ÏÁÂÊ
Æ(GoldFish) ·‰Ê ‚„ ˙ÂÈ‰Ï ÏÂÎÈ (Marine) ÈÓÈ ÌÈÈÁ ÏÚ·
¨(len) ÂÏ˘ ͯ‡‰ Ì‚ ¯Ó˘ ÏÁÂÊ ¯Â·Ú· Æ(name) ÂÓ˘ ¯Ó˘ ÌÈÈÁ ÏÚ· ÏÎÏ
Æ(depth) ÂÏ˘ ÈÏÓÈÒ˜Ó‰ ‰ÏÈψ‰ ˜ÓÂÚ Ì‚ ¯Ó˘ ÈÓÈ ÌÈÈÁ ÏÚ· ¯Â·Ú·Â
Æ·Ú¯ ÌÈÈÁ ÏÚ· Ï˘ Âȯ·„ ˙‡ ‰¯ÈÊÁÓ Hungry ‰ÏÂÚÙ‰
ÆÂÏ˘ ÏÙËÓ‰ ÈÙ ˙‡ Ï·˜Ó‰ ÌÈÈÁ ÏÚ· Ï˘ Âȯ·„ ˙‡ ‰¯ÈÊÁÓ Caretaker ‰ÏÂÚÙ‰
ÆÏÂÎ‡Ï ÌÈÈÒ˘ ÌÈÈÁ ÏÚ· Ï˘ Âȯ·„ ˙‡ ‰¯ÈÊÁÓ Satisfied ‰ÏÂÚÙ‰
public class Animal
{
private string name; ØØÌÈÈÁ‰ ÏÚ· Ì˘
public static int count = 0; ØØÌÈÈÁ ÈÏÚ· ‰ÂÓ

public Animal(string name)


{
this.name = name;
count ++;
}
public string Hungry() { return this.name + " is hungry!"; } ØØ·Ú¯
public virtual string Caretaker() { return "Yammi"; } ØØÌÈÏÙËÓ‰ ˙Ï·˜
public virtual string Satisfied() { return "Finish eating"; } ØØÏÂÎ‡Ï ÌÈÈÒ
}
public class Reptile: Animal
{
private int len; ØØͯ‡
public Reptile(string name, int len): base(name)
{
this.len = len;
}
public override string Caretaker() {return "Crawling: " + base.Caretaker(); }
}
Ø¥∂ „ÂÓÚ· Í˘Ó‰Ø (.‫)שים לב׃ המשך השאלה בעמוד הבא‬
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ¥∂ ≠

public class Snake: Reptile


{
public Snake(string name, int len): base (name, len) { }
public override string Satisfied() { return "Tssss"; }
}

public class Crocodile: Reptile


{
public Crocodile(int len): base("crocki" + count , len){ }
public override string Satisfied() { return base.Satisfied() + " Whaamm"; }
}

public class Marine: Animal


{
private double depth; ØؘÓÂÚ

public Marine(string name, double depth): base(name)


{
this.depth = depth;
}
public override string Caretaker() { return "Swimming"; }
}

public class GoldFish: Marine


{
public GoldFish(string name): base(name, 0.2) { }
public override string Satisfied() { return "Bloop bloop"; }
}

Ø¥∑ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ¥∑ ≠
public class ZooZoo
{
private Animal[] animals;

public ZooZoo()
{
this.animals = new Animal[4];
this.animals[0] = new Snake("snaki", 50);
this.animals[1] = new Crocodile(78);
this.animals[2] = new GoldFish("goldi");
this.animals[3] = new Crocodile(103);
}
public void Print()
{
for (int i = 0; i < this.animals.Length; i++)
{
Console.WriteLine(this.animals[i].Hungry());
Console.WriteLine(this.animals[i].Caretaker());
Console.WriteLine(this.animals[i].Satisfied());
Console.WriteLine("****");
}
}
}

public class Test


{
public static void Main(string [] args)
{
ZooZoo zoo = new ZooZoo();
zoo.Print();
}
}
∫‰Ï‡‰ ÌÈÓÈÒ· ˘Ó˙˘‰ Æ˘È¯ٷ ˙¯„‚ÂÓ‰ ˙˜ÏÁÓ‰ ˙ÈÈί¯È‰ ˙‡ ËË¯Ò .‫א‬
‰˘Â¯È
‰ÏΉ

ÆËÏÙ‰ ˙‡ ·Â˙Π¨ Test ‰˜ÏÁÓ·˘ Main ‰ÏÂÚÙ‰ ¯Á‡ ·˜ÚÓ ·Â˙Î .‫ב‬
ÆÂÏ˘ ˙ÂÂÎ˙‰ ÈÎ¯Ú ˙‡ — ÌˆÚ ÏÎ ¯Â·Ú·Â ¨ÌÈ˙˘Ó‰ ÈÎ¯Ú ˙‡ ÏÂÏÎÏ ˘È ·˜ÚÓ·

Ø¥∏ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ¥∏ ≠

∫ȘÏÁ UML ÍÈÙÏ .22

WhatOp (interface) WhatClass


int Calculate1(int p) private int number
int Calculate2() public WhatClass(int number)
public int GetNumber()
public int Calculate3(int p)
public string ToString()

WhatIn1
private int num ∫‡¯˜Ó
∫˜˘ÓÓ ˘ÂÓÈÓ
public WhatIn1(int number, int num) ∫‰˘Â¯È
public int GetNum()
public void SetNum(int num)
public int Calculate2()
public int Calculate3(int p1, int p2)
public string ToString()

ÏÚ ‰ÚÈ ¨ WhatClass ‰˜ÏÁÓ· public int Calculate1(int p) ‰ÏÂÚÙ‰ ˘ÂÓÈÓ Ì‡‰ .‫א‬
ÆÍ˙·Â˘˙ ˙‡ ˜Ó ø WhatIn1 ‰˜ÏÁÓ· ‰Ï˘ ˘ÂÓÈÓ‰ ˙˘È¯„
∫‡Â‰ WhatIn1 ‰˜ÏÁÓ· ‰·‰ ‰ÏÂÚÙ‰ ˘ÂÓÈÓ .‫ב‬
public WhatIn1(int number, int num)
{
this.number = number;
this.num = num;
}
‰ÏÂÚÙ‰ ˙‡ Ô˜˙ — ‡Ï ̇ ª‰ÏÂÚÙ‰ Úˆȷ ˙‡ ¯‡˙ — ÔΠ̇ ø‰Ș˙ ‰ÏÂÚÙ‰ ̇‰
Æ˙˜Â˙Ó‰ ‰ÏÂÚÙ‰ ˙‡ Í˙¯·ÁÓ· Ì¢¯ Æ®‰ÓˆÚ ‰ÏÂÚÙÏ Ë¯Ù ¯·„ ˙Â˘Ï Ôȇ©

Ø¥π „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ ¥π ≠
Ï˘ ÌÏ˘‰ ͯډ ˙‡ ‰¯ÈÊÁÓ‰ ¨ Calculate2() ‰ÏÂÚÙ‰ ‰˘ÓÂÓ WhatIn1 ‰˜ÏÁÓ· .‫ג‬
∫̈ډ ˙ÂÂÎ˙ ÚˆÂÓÓ
public int Calculate2()
{ return (int)((this.number + this.num)/2); }
‰ÏÂÚÙ‰ ˙‡ Ô˜˙ — ‡Ï ̇ ª‰ÏÂÚÙ‰ Úˆȷ ˙‡ ¯‡˙ — ÔΠ̇ ø‰Ș˙ ‰ÏÂÚÙ‰ ̇‰
Æ˙˜Â˙Ó‰ ‰ÏÂÚÙ‰ ˙‡ Í˙¯·ÁÓ· Ì¢¯ Æ®‰ÓˆÚ ‰ÏÂÚÙÏ Ë¯Ù ¯·„ ˙Â˘Ï Ôȇ©
∫ WhatIn2 ‰˜ÏÁÓ‰ Ï˘ ȘÏÁ ¯Â‡È˙ ÍÈÙÏ .‫ד‬
class WhatIn2: WhatIn1
private int sum
public WhatIn2(int number, int num, int sum)
public int Calculate3(int p1, int p2, int p3)

‰ÏÂÚÙ ¯È„‚‰Ï ̘ӷ Ï„ÁÓ ˙¯V· ‰·‰ ‰ÏÂÚÙ‰ ÏÚ ÍÓ˙Ò‰Ï ¯˘Ù‡ ̇‰ (1)
ÆÍ˙·Â˘˙ ˙‡ ˜Ó øWhatIn2 ‰˜ÏÁÓ· ‰·
WhatIn1 , WhatClass ˙˜ÏÁÓ‰ ˘ÂÏ˘· ‰˘ÓÂÓ Calculate3 ‰ÏÂÚÙ‰ (2)
∫‰Ê‰ ÔÙ‡· WhatIn2 –Â

class WhatClass public int Calculate3(int p)


{ return this.number * p; }
class WhatIn1 public int Calculate3 (int p1, int p2)
{ return this.Calculate3(p1) + this.num * p2 * p2; }
class WhatIn2 public int Calculate3 (int p1, int p2, int p3)
{ return this.Calculate3(p1, p2) + this.sum * p3 * p3 * p3;}

∫̉ ÂÏ˘ ˙ÂÂÎ˙‰ ÈίÚ ¨ WhatIn2 ÒÂÙÈËÓ ‡Â‰ obj ̈ډ ÈÎ Á‰
number = 1
num = 2
sum = 3
∫˙È˘‡¯‰ ‰ÏÂÚÙ· ‰·Â˙Ή ‰‡¯Â‰ ÍÈÙÏ
Console.WriteLine(obj.Calculate3(1000, 100, 10));
ÈίÚÏ ˙ÂÏÂÚÙ ÔÂÓÈÊÏ ÒÁÈÈ˙‰ ·˜ÚÓ· Ɖ‡¯Â‰‰ Úˆȷ ¯Á‡ ·˜ÚÓ‰ ˙‡ ‰‡¯‰
ÆÏ·˜˙Ó‰ ËÏÙ‰ ˙‡ Ì¢¯ Æ̈ډ ˙ÂÂÎ˙

Øμ∞ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ μ∞ ≠

∫ÌÈÓˆÚ ‰ÁÂÓ ˙ÂÎ˙ Ï˘ ˙Â¯˜Ú ‰ÓÎ ÍÈÙÏ .23


encapsulation — ‰ÒÓΉ •
overloading — ‰ÒÓÚ‰ •
inheritance — ‰˘Â¯È •
overriding — ‰Òȯ„ •
polymorphism — ˙ÂÈ˙¯Âˆ–·¯ •
ÆÌ‰Ó ˜ÏÁÏ ˙ÂÒÁÈÈ˙‰ ‰È‰˙ ÂÊ ‰Ï‡˘·
Æ Stam, Davar ∫˙˜ÏÁÓ È˙˘ Ï˘ ȘÏÁ ˘ÂÓÈÓ ÍÈÙÏ
public class Stam
{
private char x;

public Stam() { this.x = '*'; }


public Stam(char c) { this.x = c; }
public Stam GetStam() { return this; }
public override string ToString() { return "x=" + this.x; }
public bool IsSame1(Stam other)
{ Ø؉χ˘‰ ͢Ӊ· ˘ÂÓÈÓÏ ˙ÂÒÁÈÈ˙‰ }
public bool IsSame2(Stam other)
{ Ø؉χ˘‰ ͢Ӊ· ˘ÂÓÈÓÏ ˙ÂÒÁÈÈ˙‰ }
public void Same(Stam other)
{
if (this.IsSame1(other))
Console.WriteLine(this + " same1 as " + other);
else
Console.WriteLine(this + " not same1 as " + other);
if (this.IsSame2(other))
Console.WriteLine(this + " same2 as " + other);
else
Console.WriteLine(this + " not same2 as " + other);
}
public void Print() { Console.WriteLine(this.ToString ()); }
public void Print(Stam other) { this.Same(other); }
}

Øμ± „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ μ± ≠
public class Davar: Stam
{
private int y;
public Davar(): base() { this.y = 0; }
public Davar(char c) : base(c) { this.y = 0; }
public Davar(char c , int num): base(c) { this.y = num; }
public override string ToString() { return "Davar: " + base.ToString(); }
}
Æ˙Â· ˙ÂÏÂÚÙ È˙˘ ¯„‚‰ Stam ‰˜ÏÁÓ· .‫א‬
®‰Ï‡˘‰ ˙ÏÈÁ˙· ÂȈ˘ ˙Â¯˜Ú‰ ÔÈ·Ó© ÌÈÓˆÚ ‰ÁÂÓ ˙ÂÎ˙ Ï˘ Ô¯˜ÈÚ‰ Â‰Ó (1)
ø˙‡Ê ¯˘Ù‡Ó‰
øÏÈÚÙ‰Ï ‰· ‰ÏÂÚÙ ÂÊȇ ®¯ÏÈÈÙÓ˜© ¯„‰Ó‰ ¯Á· „ˆÈÎ (2)
®‰Ï‡˘‰ ˙ÏÈÁ˙· ÂȈ˘ ˙Â¯˜Ú‰ ÔÈ·Ó© ÌÈÓˆÚ ‰ÁÂÓ ˙ÂÎ˙ Ï˘ Ô¯˜ÈÚ ‰Êȇ .‫ב‬
ƘÓ ø Davar ‰˜ÏÁÓ· ToString() ‰ÏÂÚÙ· ˘ÓÂÓÓ

(.‫)שים לב׃ סעיף ג של השאלה בעמוד הבא‬


Øμ≤ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ μ≤ ≠
∫ÔÏ‰Ï˘ ˙È˘‡¯‰ ‰˜ÏÁÓ‰ ‰Â˙ .‫ג‬
public class Program
{
public static void Main(string[] args)
{
Stam[] s = new Stam[6]; _
b
s[0] = new Stam(); b
s[1] = new Davar(); b
b
s[2] = new Stam('b'); ` ± Ú˘
s[3] = new Davar('b'); b
b
s[4] = new Davar('a', 0); b
b
s[5] = s[2].GetStam(); a
_
for (int i = 0; i < s.Length; i++) b
{ b
` ≤ Ú˘
s[i].Print(); b
} b
a
_
s[1].Print(s[0]); b
b
s[2].Print(s[5]); ` ≥ Ú˘
s[3].Print(s[4]); b
b
} a
}
Æ®‰Â˙‰ ˙È˘‡¯‰ ‰˜ÏÁÓ·© ± Ú˘· ‰·‰ s ͯÚÓ‰ ˙‡ ‚ˆ‰ (1)
ÆÂÏ˘ ˙ÂÂÎ˙‰ ÈÎ¯Ú ˙‡ Ì¢¯ ÌÈÓˆÚ‰Ó „Á‡ ÏÎ ¯Â·Ú·
Æ≤ Ú˘· ‰‡ÏÂω ËÏÙ ˙‡ Ì¢¯ (2)
®‰Ï‡˘‰ ˙ÏÈÁ˙· ÂȈ˘ ˙Â¯˜Ú‰ ÔÈ·Ó© ÌÈÓˆÚ ‰ÁÂÓ ˙ÂÎ˙ Ï˘ Ô¯˜ÈÚ ‰Êȇ (3)
ø≤ Ú˘· ÈÂËÈ· È„ÈÏ ‡·
ËÏÙ‰˘ ÍÎ Stam ‰˜ÏÁÓ·˘ IsSame2() , IsSame1() ˙ÂÏÂÚÙ‰ ˙‡ ˘ÓÓ (4)
∫ÔÏ‰Ï˘ ËÏÙ‰ ‰È‰È ¨≥ ÚË˜Ó Ï·˜˙Ó‰

Davar: x = * same1 as x = *
Davar: x = * not same2 as x = *
x = b same1 as x = b
x = b same2 as x = b
Davar: x = b not same1 as Davar: x = a
Davar: x = b not same2 as Davar: x = a
Øμ≥ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ μ≥ ≠
„Á‡ Ì‚„ ÌȯˆÈÈÓ ¯ÂˆÈÈ ÒÙ Ïη Ư˙Âȉ ÏÎÏ ¯ÂˆÈÈ ÈÒÙ 12 –Ï ÌÂ˜Ó ˘È ˙¯ ¯ÂˆÈÈÏ ÏÚÙÓ· .24
‡Â‰ ¯ ÏÎ ÆÌ‚„‰ Â˙Â‡Ó ˙¯‰ ˙‡ Ì‰Ó ¯ˆÈÈÏ ¯˘Ù‡˘ ÌÈÚ·ˆ ‰ÓÎ ˘È Ì‚„ ÏÎÏ Æ˙¯ Ï˘
ÆÂÏ˘ Ì‚„· ÌÈÚ·ˆ‰ ÔÈ·Ó „·Ï· „Á‡ Ú·ˆ·
‡Â‰ Ì‰Ó˘ ÌÈÚ·ˆ‰ ˙ÂÓ˘ ¨Ì‚„‰ „˜ ¨Ì‚„‰ Ì˘ ∫Ú„ÈÓ‰ ¯Ó˘ ˙¯ Ï˘ Ì‚„ ÏÎ ¯Â·Ú·
˙ÈÏÓÈÒ˜Ó‰ ˙¯‰ ˙ÂÓΠ¨Ì‚„‰ Ï˘ ÌÈÚ·ˆ‰Ó „Á‡ ÏÎÓ È‡ÏÓ· ˘È˘ ˙¯‰ ˙ÂÓÎ ¨¯ˆÂÈÓ
Æ®„ÁÈ ÌÈÚ·ˆ‰ ÏÎÓ© ÔÒÁ‡Ï ¯˘Ù‡˘ ‰Ê Ì‚„Ó
∫˙¯ Ì‚„Ï ‰Ó‚„
Æ¢‰˘Â˘¢ ∫Ì˘ —
Æ11 ∫„˜ —
Ʒ‰ˆ ¨Ô·Ï ¨Ì„‡ ∫¯ˆÂÈÓ ‡Â‰ Ì‰Ó˘ ÌÈÚ·ˆ‰ ˙ÂÓ˘ —
ÆÌȷ‰ˆ ˙¯ 70– ÌÈ·Ï ˙¯ 350 ¨ÌÈÓ„‡ ˙¯ 200 ∫ȇÏÓ· ˙¯‰ ˙ÂÓÎ —
∫ÔÒÁ‡Ï ¯˘Ù‡˘ ®„ÁÈ ÌÈÚ·ˆ‰ ÏÎÓ© ‰Ê Ì‚„Ó ˙¯‰ Ï˘ ˙ÈÏÓÈÒ˜Ó‰ ˙ÂÓΉ —
Æ100,000
Æ· ÌȯˆÂÈÓ‰ ˙¯‰ ÈÓ‚„ ÏÎÏ Ú‚Â· Ú„ÈÓ ¯Ó˘ ÏÚÙÓ·
∫‰Ï‡‰ Ìȇ˙Ï ÒÁÈÈ˙‰Ï ˘È ÌÈÂÒÓ Ì‚„Ó ¯ ¯ˆÈÈÏ ÌȈ¯˘ ÌÚÙ Ïη
‡È‰ ȇÏÓ· ÂÓÓ ˙¯‰ ˙ÂÓ΢ Ú·ˆ‰ ∫ȇÏÓ· ˙¯‰ ˙ÂÓÎ ÈÙ ÏÚ ¯Á·ÈÈ ¯‰ Ú·ˆ •
„Á‡ Ú·ˆÓ ¯˙ÂÈ ˘È ̇© ¯‰ ¯ÂˆÈÈÏ ¯Á·ÈÈ˘ Ú·ˆ‰ ‡Â‰ ¨Ì‚„ Â˙Â‡Ó ¯˙ÂÈ· ‰˘‰
Æ®Ì‰Ó „Á‡ ¯Á·ÈÈ ‰ÊÎ
ÌÈÂÒÓ Ì‚„Ó ˙ÏÏÂΉ ˙¯‰ ˙ÂÓ΢ ¯ÂÒ‡ ͇ ¨ÏÈÚÙÓ‰ ˙¯ÈÁ·Ï ‰Â˙ ¯ÂˆÈȉ ˙ÂÓÎ •
¯˘Ù‡˘ ‰Ê Ì‚„Ó ˙ÈÏÓÈÒ˜Ó‰ ˙ÂÓΉ ÏÚ ‰ÏÚ˙ ®È‡ÏÓ·˘ ˙¯‰Â ¯ˆÂÈÈ˘ ˙¯‰©
ÆÔÒÁ‡Ï

∫˙˜ÏÁÓ ˘ÂÏ˘ · ˘Èȯ٠‰· ÏÚÙÓ‰ Ï˘ ‰ÎÂ˙‰ Ò„‰Ó

CandleKind ˙¯ Ï˘ Ì‚„ ˙‚ˆÈÈÓ‰ ‰˜ÏÁÓ


Factory ÏÚÙÓ‰ ˙‡ ˙‚ˆÈÈÓ‰ ‰˜ÏÁÓ
Run ˙È˘‡¯ ‰˜ÏÁÓ

(.‫)שים לב׃ המשך השאלה בעמוד הבא‬


Øμ¥ „ÂÓÚ· ͢ӉØ
∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ μ¥ ≠
∫CandleKind ‰˜ÏÁÓ‰ ÔÓ ÌȘÏÁ ÍÈÙÏ
public class CandleKind
private string name; ØØ Ì‚„‰ Ì˘
private int code; ØØ Ì‚„‰ „˜
private string[] colors; ØØ Ì‚„‰ ÈÚ·ˆ ÔÂÂ‚Ó Ï˘ ͯÚÓ
private int[] amounts; ØØ ®‰Ó‡˙‰·© Ú·ˆ ÏÎÓ È‡ÏÓ· ˙ÂÓÎ
private int maxTotalAmount; ØØ ÔÂÒÁ‡Ï ˙ÈÏÓÈÒ˜Ó ‰ÒÎÓ
public CandleKind(string name, int code, string[] colors, int maxTotalAmount)
{
this.name = name;
this.code = code;
this.colors = colors;
this.amounts = new int[colors.Length];
for (int i = 0; i < amounts.Length; i++)
{ this.amounts[i] = 0; }
this.maxTotalAmount = maxTotalAmount;
}
public void Update(string color, int amount)
ØØ È‡ÏÓ·˘ color Ú·ˆ· ˙¯‰ ˙ÂÓÎ ˙‡ amount ˙ÂÓη ‰ÏÈ„‚Ó ‰ÏÂÚÙ‰

¯Â·Ú· CandleKind ‰˜ÏÁÓ‰ ÔÓ kind1 Ì˘· ÌˆÚ ˙ÈÈ·Ï ˙‡¯Â‰ Ø ‰‡¯Â‰ ·Â˙Î .‫א‬
ÌÈÚ·ˆ ‰˘ÂÏ˘· ¯ˆÂÈÓ ˘„Á‰ Ì‚„‰ ÆÏÚÙÓ· ¯ˆÈÈÏ ÌÈÏÈÁ˙Ó˘ ˙¯ Ï˘ ˘„Á Ì‚„
ÆÂ˙ÈÈ· ¯Á‡Ï ̈ډ ˙ÂÂÎ˙ ÈÎ¯Ú ˙‡ Ì¢¯ ÆÍˆ¯Î ˙ÂÂÎ˙Ï ÌÈÎ¯Ú ¯Á· ÆÌÈ¢
ÏÎÏ „ÂÚÈ˙ ·Â˙Î Æ‰Ï˘ ˙ÂÂÎ˙‰ Ø ‰ÂÎ˙‰ ˙‡Â Factory ‰˜ÏÁÓ‰ ˙¯˙ÂÎ ˙‡ ·Â˙Î .‫ב‬
ƉÂÎ˙
∫·Â˙Î ‰ÏÂÚÙ ÏÎÏ Æ˘È¯ÙÏ ÛÈÒÂ‰Ï ˘È˘ ≥≠± ˙ÂÏÂÚÙ Ï˘ „ÂÚÈ˙ ÌÚ ‰Ï·Ë ÍÈÙÏ .‫ג‬
ÆÍ˙¯ÈÁ· ˙‡ ¯·Ò‰ Ɖ˙‡ ¯È„‚‰Ï Ìȇ˙Ó ®˙˜ÏÁÓ‰ ˘ÂÏ˘ ÔÈ·Ó© ‰˜ÏÁÓ ÂÊȇ· i
ƉÏÂÚÙ‰ Ï˘ ˙¯˙ÂΉ ˙‡ ii
ƯˆÈÈÏ ÂÏÈÁ˙È˘ ÌÈÂÒÓ ˙¯ Ì‚„Ó ¯ Ï˘ Ú·ˆ ‰¯ÈÊÁÓ‰ ‰ÏÂÚÙ ±
ÆÌÈÂÒÓ ˙¯ Ì‚„Ó ¯ˆÈÈÏ ¯˘Ù‡˘ ˙¯‰ ˙ÂÓÎ ˙‡ ‰¯ÈÊÁÓ‰ ‰ÏÂÚÙ ≤
˙ÂÓΉ ÔÈ· ˘¯Ù‰‰ ¯·ڷ˘ ¯‰ Ì‚„ Ï˘ „˜‰ ˙‡ ‰¯ÈÊÁÓ‰ ‰ÏÂÚÙ ≥
˘È ̇ Ư˙ÂÈ· Ï„‚‰ ‡Â‰ ÔÒÁ‡Ï ¯˘Ù‡˘ ˙ÂÓΉ ÔÈ·Ï È‡ÏÓ· ‰Ê Ì‚„Ó ˘È˘
ÈÓ‚„Ó „Á‡ ÏÎ Ï˘ ȇÏÓ· ˙ÂÓΉ ̇ ÆÌ‰Ó „Á‡ ¯ÊÁÂÈ ¨‰Ï‡Î ˙¯ ÈÓ‚„ ‰ÓÎ
Æ®ÌÈȘ ‡Ï „˜© 999 „˜‰ ¯ÊÁÂÈ ¨ÔÒÁ‡Ï ¯˘Ù‡˘ ˙ÈÏÓÈÒ˜Ó‰ ‡È‰ ˙¯‰

Øμμ „ÂÓÚ· ͢ӉØ


∂∞≥ ¨∏ππ≤∞μ ßÒÓ ¨Ú¢˘˙ ıȘ ¨ß· ·˘ÁÓ‰ ÈÚ„Ó ≠ μμ ≠
ƯˆÈȉ ÍÈω˙ ˙‡ ˙ωÓ ‰ÏÂÚÙ‰ Æ Run ‰˜ÏÁÓ· ˙˘ÓÂÓÓ‰ ˙È˘‡¯ ‰ÏÂÚÙ ÍÈÙÏ .‫ד‬
Ƅ˜‰ ȯÁ‡ ÚÈÙÂÓ‰ ˙Â˘È¯„‰ ˯ÈÙ ÈÙ ÏÚ ®¥©≠®±© ÌȯÙÒÂÓÓ‰ „˜‰ ÈÚ˘ ˙‡ ÌÏ˘‰
‰ÂÎ˙ ÏÎÏ Get , Set ˙ÂÏÂÚÙ ˙¯„‚ÂÓ ¨˙ÂÓÈȘ ‚ ÛÈÚÒ· ˙¯„‚‰˘ ˙ÂÏÂÚÙ‰ ÈÎ Á‰
Æ· ÛÈÚÒ· ˙·˙΢ Factory ‰˜ÏÁÓ·Â ‰Â˙‰ CandleKind ‰˜ÏÁÓ·
Ô˙‡ ˘ÓÓ ˙¯„‚ÂÓ Ô‰ ‰˜ÏÁÓ ÂÊȇ· Ì¢¯ ¨˙ÂÙÒÂ ˙ÂÏÂÚÙ ¯È„‚Ó ‰˙‡ ̇
ƇÏÓ ÔÙ‡·
public static void Main(string [] args)
{
Factory fty;
ØØ ÈÎ¯Ú ÌÚ fty ̈ډ ÌÈȘ˘ Á‰ ‰‡Ï‰Â Ô‡ÎÓ
ØØ ÏÚÙÓ· ÌÈȘ‰ ȇÏÓ‰ ·ˆÓ ˙‡ Ìȯ‡˙Ó‰ ˙ÂÂÎ˙
int code = _________________________
(1)

while (code != 999)


{
CandleKind ck;
(2)
______________________________
string colorToProduce;
(3)
______________________________
int amount;
(4)
______________________________
ck.Update(colorToProduce, amount);
code = _________________________
(1)
}
}
∫˙Â˘È¯„‰ ˯ÈÙ
Æ‚ ÛÈÚÒ·˘ ‰Ï·Ë‰Ó ≥ ‰ÏÂÚÙ ÔÂÓÈÊ (1)
Æcode „˜‰ ÏÚ· ¯‰ Ì‚„ ˙‡ ÏÈÎÈ ck ‰˙˘Ó‰˘ ÍÎÏ ‡È·È ¯˘‡ „˜ Ú˘ (2)
¯ˆÈÈÏ ˘È˘ Ú·ˆ‰ ˙‡ ÏÈÎÈ colorToProduce ‰˙˘Ó‰˘ ÍÎÏ ‡È·È ¯˘‡ „˜ Ú˘ (3)
Æcode ‡Â‰ ÂÏ˘ „˜‰˘ ¯‰ Ì‚„Ó
¯ˆÈÈÏ ¯˘Ù‡˘ ˙¯‰ ˙ÂÓÎ ˙‡ ÏÈÎÈ amount ‰˙˘Ó‰˘ ÍÎÏ ‡È·È ¯˘‡ „˜ Ú˘ (4)
Æcode ‡Â‰ ÂÏ˘ „˜‰˘ ¯‰ Ì‚„Ó

!‫בהצלחה‬
χ¯˘È ˙È„ÓÏ ‰¯ÂÓ˘ ÌȯˆÂȉ ˙ÂÎÊ
ÍÂÈÁ‰ „¯˘Ó ˙¢¯· ‡Ï‡ ÌÒ¯ÙÏ Â‡ ˜È˙Ú‰Ï Ôȇ

You might also like