1 שאלו : Together double x 5.0 int from 2 int to 6 One first Two second One n 5.0 Queue<One>q One n 4.0 One n 8.0 One n 16.

Σχετικά έγγραφα
מדעי המחשב ב' פתרון בחינת הבגרות. One n 4.0. One n T 4 3 T 8 4 T 16 5 T 32 6 F

מבני נתונים מדעי המחשב שאלון: מועד ב' תשע"ו מדעי המחשב פתרון בחינת הבגרות. Java שאלה 1. blog.csit.org.

מדעי המחשב. פרק ראשון :Java. blog.csit.org.il מדעי המחשב שאלון: עיצוב תכנה 1 מועד ב' תשע"ו פתרון בחינת הבגרות שאלה 1 פעולות עזר:

1 שאלון: תשס"ט { int listsize = size(list); int n = listsize / 3; if (listsize == 0 listsize % 3!

חורף תש''ע פתרון בחינה סופית מועד א'

ניתן לקבל אוטומט עבור השפה המבוקשת ע "י שימוששאלה 6 בטכניקתשפה המכפלה שנייה כדי לבנות אוטומט לשפת החיתוך של שתי השפות:

אוטומט סופי דטרמיניסטי מוגדר ע"י החמישייה:

2 שאלות )בחירה מ - 4( סה"כ 25 נקודות לכל שאלה 22 נקודות

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

1 שאלון: תש"ע

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

חלק 1 כלומר, פונקציה. האוטומט. ) אותיות, אלפבית, א"ב (.

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד.

2 יח"ל ) השלמה ל - 5 יח"ל) (50 נקודות) מעבר חוקי, ו-'שקר' אחרת.

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים:

{ : Halts on every input}

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx

Logic and Set Theory for Comp. Sci.

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

מודלים חישוביים פתרון תרגיל 5

תרגיל 13 משפטי רול ולגראנז הערות

Συλλογές, Στοίβες και Ουρές

תרגול פעולות מומצאות 3

gcd 24,15 = 3 3 =

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

3-9 - a < x < a, a < x < a

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

סדרות - תרגילים הכנה לבגרות 5 יח"ל

םינותנ ינבמ 3 ליגרתמ תולאשל המוד תולאש טסל תונורתפ תולאשה

אלגברה ליניארית (1) - תרגיל 6

מכונת טיורינג אוטומט מחסנית לא דטרמיניסטי שפות חופשיות הקשר (שפת ראי לא מסומנת)

שאלה 1 V AB פתרון AB 30 R3 20 R

בחינה בסיבוכיות עמר ברקמן, ישי חביב מדבקית ברקוד

אוטומטים- תרגול 8 שפות חסרות הקשר

Σι θα δούμε σε αυτό το μάθημα;

גבול ורציפות של פונקציה סקלרית שאלות נוספות

הגדרה: מצבים k -בני-הפרדה

חישוביות הרצאה 4 לא! זיהוי שפות ע''י מכונות טיורינג הוכחה: הגדרת! : f r

מכונת טיורינג אוטומט מחסנית לא דטרמיניסטי שפות חופשיות הקשר (שפת ראי לא מסומנת)

s ק"מ קמ"ש מ - A A מ - מ - 5 p vp v=

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן

קובץ שאלות ופתרונות של שאלות ממבחנים מנושאים שונים

שפות פורמאליות אוטומטים

מודלים חישוביים תרגולמס 5

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים.

השאלות ידי מצביעים לילדים.

אוטומטים- תרגול 10: מכונות טיורינג.

אלגברה ליניארית 1 א' פתרון 2

(2) מיונים השאלות. .0 left right n 1. void Sort(int A[], int left, int right) { int p;

פתרון תרגיל 6 ממשוואות למבנים אלגברה למדעי ההוראה.

תרגול 8: מטלאב לולאות

מבוא לרשתות - תרגול מס 5 תורת התורים

מכונת טיורינג אוטומט מחסנית לא דטרמיניסטי שפות חופשיות הקשר (שפת ראי לא מסומנת)

שפות פורמאליות אוטומטים

מבוא לרשתות - תרגול מס 5 תורת התורים

TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE סמסטר אביב תשס"ו מס' סטודנט:

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

תאריך עדכון אחרון: 27 בפברואר ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת

מבחן במודלים חישוביים + פתרון מוצע

תרגיל 7 פונקציות טריגונומטריות הערות

"קשר-חם" : לקידום שיפור וריענון החינוך המתמטי

אוסף שאלות מס. 3 פתרונות

מתמטיקה בדידה תרגול מס' 13

TECHNION Israel Institute of Technology, Faculty of Mechanical Engineering מבוא לבקרה (034040) גליון תרגילי בית מס 5 ציור 1: דיאגרמת הבלוקים

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t.

תרגול מס' 6 פתרון מערכת משוואות ליניארית

מודלים חישוביים כריעות R זוהי מחלקת השפות הכריעות. מחלקה זו סגורה תחת פעולת המשלים. רדוקציה בעיית ההכרעה רדוקציית מיפוי.

מבני בקרה ב C שעור מס. 2 דר' דרור טובי, המרכז האוניברסיטאי אריאל בשומרון.

פתרון תרגיל בית 6 מבוא לתורת החבורות סמסטר א תשע ז

מבני נתונים מבחן מועד ב' סמסטר חורף תשס"ו

הרצאה נושאי הקורס 0.2 א"ב ומילים 0.3 שפות 1. מהו חישוב? 2. מהו מחשב? 3. מהו אלגוריתם? 4. מה ניתן לחשב? מה לא ניתן?

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות

co ארזים 3 במרץ 2016

מודלים חישוביים, חישוביות וסיבוכיות (חישוביות) 67521

Regular Expressions (RE)

מתמטיקה בדידה תרגול מס' 2

מודלים חישוביים מבחן מועד א', סמסטר א' תשע''ה (2015)

בעיות חשיבות: :(State transition system) STS מושגים: רדוקציה: f אינה חשיבה g אינה חשיבה; בבעיות הכרעה: f לא כריעה g לא כריעה.

ביטויים רגולריים הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353) הרצאה 5

מינימיזציה של DFA מינימיזציה של הקנוני שאותה ראינו בסעיף הקודם. בנוסף, נוכיח את יחידות האוטומט המינימלי בכך שנראה שכל אוטומט על ידי שינוי שמות

מתמטיקה בדידה תרגול מס' 5

אלגברה לינארית (1) - פתרון תרגיל 11

הרצאה תרגילים סמינר תורת המספרים, סמסטר אביב פרופ' יעקב ורשבסקי

סיכום חקירת משוואות מהמעלה הראשונה ומהמעלה השנייה פרק זה הינו חלק מסיכום כולל לשאלון 005 שנכתב על-ידי מאיר בכור

ל הזכויות שמורות לדפנה וסטרייך

max(sod1,sod2) 5 1 F (9321,345) סוד 1 1 max ( 1, 2 ) F (345,296) סוד 1 0 max ( 0, 2 ) F (296,7) סוד 1 2 max ( 2, 1 ) 2

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

אלגברה לינארית מטריצות מטריצות הפיכות

דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא:

. {e M: x e} מתקיים = 1 x X Y

מבני נתונים מבחן מועד א' סמסטר אביב תשס"ו

Transcript:

tg Together double x 5.0 int from 2 int to 6 One first Two second ב' פתרון בחינת הבגרות פרק א - One n 5.0 Queue<One>q : Ï א. One n 4.0 One n 8.0 One n 6.0 One n 32.0 new Two ((from,to) n m i i<m 2 i 2 6 2 T 4 3 T 8 4 T 6 5 T 32 6 F פלט הפעולה main() methoda() methodb() println first.f() println first,g() second.f() -- MethodA() -- f of One -- MethodB -- g of One 5.0 f of Two 4.0 ב. א התור לא ריק, הפעולה מוציאה את האיבר שבראש התור ומדפיסה את ערכו בצירו הודעה. וא התור ריק, מדפיסה רק את ההודעה. אי משמעות להנחה ששני המספרי גדולי מ 0. ההנחה צריכה להתייחס למספרי השני והשלישי המקיימי : השלישי גדול מהראשו.

2 0 2 3 4 a 2 4 7 2 8 a.length = 5 :2 Ï א. (a,) sod ערך k i i<4 j j<5 a[i] a[j] a[i]+a[j] == k מוחזר 0 T T 2 4 F 2 T 7 F 3 T 2 F 4 T 8 F 5 F אמת T 2 T 4 7 T ב. (a,0) sod ערך k i i<4 j j<5 a[i] a[j] a[i]+a[j] == k מוחזר 0 0 T T 2 4 F 2 T 7 F 3 T 2 F 4 T 8 F 5 F T 2 T 4 7 F 3 T 2 F 4 T 8 F 5 F 2 T 3 T 7 2 F 4 T 8 F 5 F 3 T 4 T 2 8 F 5 F שקר 4 F

3 ג. ד. ה. הפעולה מחזירה "אמת" א קיימי שני איברי במער שסכומ k, ו "שקר" אחרת. סיבוכיות הפעולה sod היא ) 2.O(n בהנחה שיש במער n איברי : הלולאה החיצונית רצה על כל המער סה"כ n צעדי ובתוכה לולאה פנימית הרצה בכל פע על איבר אחד פחות: 2 ( + n )( n ) n n 2 ( n ) + ( n 2) + ( n 3) +... + 2 + Sn = O( n ) 2 2 what (a, k) a.length = 5 0 2 3 4 a 2 4 7 2 8 k left right left<right I a[left] II a[right] I+II == k I+II < k 0 4 T 2 8 F F 3 T 2 F F 2 T 7 F T ערך מוחזר אמת T 4 T.O(n) what ו. סיבוכיות הפעולה היא הפעולה עוברת לכל היותר מעבר אחד על כל נתוני המער, עד שמוצאת או לא מוצאת שני איברי שסכומ k. O(n 2 ) O(n) ז. סיבוכיות הפעולה sod ריבועית סיבוכיות הפעולה what ליניארית ולכ what, יעילה יותר. () (2) ח. אחר מול כול. איבר תשיג את מטרתה, כי היא בודקת בכל פע sod what לא תשיג את המטרתה, כי היא אינה בודקת את כל האפשרויות. למשל: עבור המער הבא תחזיר sod "אמת", ואילו what תחזיר "שקר". 0 2 3 4 a 8 2 4 7 2

4 :3 Ï א. ההוראה מצב התור לאחר האתחול [] q.insert () [] q.insert (2) [, 2] q.insert (3) [, 2, 3] q.remove() [2, 3] q.insert (4) [2, 3, 4] q.undo() [2, 3] q.undo() [, 2, 3] סעי א' לאחר הרצת התכנית: start : [] [] 0 for remove for insert 2 for undo - to end --> type a number --> op : [] [(,)] 0 for remove for insert 2 for undo - to end --> type a number --> 2 op : [, 2] [(2,), (,)] 0 for remove for insert 2 for undo - to end --> type a number --> 3 op : [, 2, 3] [(3,), (2,), (,)] 0 for remove for insert 2 for undo - to end --> 0 op 0: [2, 3] [(,0), (3,), (2,), (,)] 0 for remove for insert 2 for undo - to end --> type a number --> 4 op : [2, 3, 4] [(4,), (,0), (3,), (2,), (,)] 0 for remove for insert 2 for undo - to end --> 2 op 2: [2, 3] [(,0), (3,), (2,), (,)] 0 for remove for insert 2 for undo - to end --> 2 op 2: [, 2, 3] [(3,), (2,), (,)] 0 for remove for insert 2 for undo - to end --> -

5 /* מחלקה המגדירה פעולה עבור * Undo */ public class Item הערך // val; private int הפעולה :,insert private int op; // remove :0 java: /* * QueueUndo תור- ביטול */ public class UndoQueue private Queue <Integer> que; private Stack<Item> stk; תור הפעולות // מחסנית ה - undo // public UndoQueue() this.que = new Queue<Integer>(); this.stk = new Stack<Item>(); --- הכנסה לתור ביטול ---// public void insert(int x) this.que.insert(x); this.stk.push(new Item(x,)); --- הוצאה מתור ביטול ---// public int remove() int x = this.que.remove(); this.stk.push(new Item(x,0)); return x; --- פעולת //--- undo public void undo() if(!stk.isempty()) Item item = this.stk.pop(); if (item.getop() == 0) undoremove (item.getval()); else undoinsert ();

6 --- הוצאת הערך שנמצא בסוף התור ---// ---// --- הנחה: התור לא ריק private void undoinsert() --- דחיפת סימן לתור ---// int sign = -; this.que.insert(sign); // כל איברי התור חיוביים. מספר שלילי מהווה סימן טוב // --- העברת כל האיברים פרט לאחרון לסוף התור ---// int x = this.que.remove(); boolean finish = false; while (! finish) if (this.que.head() == sign) this.que.remove(); finish = true; else this.que.insert(x); x = this.que.remove(); --- הכנסת ערך לתחילת התור ---// private void undoremove(int x) Queue<Integer>q = new Queue<Integer>(); דחיפת הערך לתחילת תור העזר // q.insert(x); --- העברת כל האיברים לתור העזר ---// while (! this.que.isempty()) q.insert(this.que.remove()); החזרת האיברים מתוך העזר לתור המקורי ---// while (! q.isempty()) this.que.insert(q.remove());

7 /* מחלקה המגדירה פעולה עבור * Undo */ public class Item הערך // val; private int הפעולה :,insert private int op; // remove :0 C#: /* * QueueUndo תור- ביטול */ public class UndoQueue private Queue <int> que; private Stack<Item> stk; תור הפעולות // מחסנית ה - undo // public UndoQueue() this.que = new Queue<int>(); this.stk = new Stack<Item>(); --- הכנסה לתור ביטול ---// public void Insert(int x) this.que.insert(x); this.stk.push(new Item(x,)); --- הוצאה מתור ביטול ---// public int Remove() int x = this.que.remove(); this.stk.push(new Item(x,0)); return x; --- פעולת //--- undo public void Undo() if(!stk.isempty()) Item item = this.stk.pop(); if (item.getop() == 0) UndoRemove (item.getval()); else UndoInsert ();

8 --- הוצאת הערך שנמצא בסוף התור ---// ---// --- הנחה: התור לא ריק private void UndoInsert() --- דחיפת סימן לתור ---// int sign = -; this.que.insert(sign); // כל איברי התור חיוביים. מספר שלילי מהווה סימן טוב // --- העברת כל האיברים פרט לאחרון לסוף התור ---// int x = this.que.remove(); bool finish = false; while (! finish) if (this.que.head() == sign) this.que.remove(); finish = true; else this.que.insert(x); x = this.que.remove(); --- הכנסת ערך לתחילת התור ---// private void UndoRemove(int x) Queue<int> q = new Queue<int>(); דחיפת הערך לתחילת תור העזר // q.insert(x); --- העברת כל האיברים לתור העזר ---// while (! this.que.isempty()) q.insert(this.que.remove()); החזרת האיברים מתוך העזר לתור המקורי ---// while (! q.isempty()) this.que.insert(q.remove());

9 פתרון אחר: מחסנית ה undo היא מחסנית שכל איבר בה הוא מסוג תור. בכל פע שמתבצעת פעולה בתור ביטול נוצר עותק של התור והוא מוכנס למחסנית. בכל פע שמתבצעת פעולת undo מקבל תור ביטול הפנייה לתור שנשל מראש המחסנית. הערה: פתרו זה אינו יעיל כי הוא בזבזני במקו. אחרי n פעולות על התור (ללא (undo יהיה במחסנית n תורי שתופסי הרבה מאוד מקו בזיכרו. למימוש זה קראתי QueueUndo (ולא UndoQueue כנדרש בשאלה) public class QueueUndo private Queue <Integer> que; java: תור הפעולות // מחסנית ה - undo private Stack<Queue<Integer>> stk; // public QueueUndo() this.que = new Queue<Integer>(); this.stk = new Stack<Queue<Integer>>(); --- הכנסה לתור ביטול ---// public void insert(int x) this.stk.push(copyqueue()); this.que.insert(x); --- הוצאה מתור ביטול ---// public int remove() this.stk.push(copyqueue()); int x = this.que.remove(); return x; --- פעולת //--- undo public void undo() if(!stk.isempty()) this.que = this.stk.pop(); --- פעולה המחזירה העתק של התור- ביטול ---// private Queue<Integer> copyqueue() Queue<Integer> q = new Queue<Integer>(); Queue<Integer> qtmp = new Queue<Integer>(); מחסנית של תורים // while (! this.que.isempty()) int x = this.que.remove(); q.insert(x); qtmp.insert(x); while (! qtmp.isempty()) this.que.insert(qtmp.remove()); return q;

0 public class QueueUndo private Queue<int> que; private Stack<Queue<int>> stk; תור הפעולות // מחסנית ה - undo // C# : public QueueUndo() this.stk = new Stack<Queue<int>>(); this.que = new Queue<int>(); מחסנית של תורים // --- הכנסה לתור ביטול ---// public void Insert(int x) this.stk.push(copyqueue()); this.que.insert(x); --- הוצאה מתור ביטול ---// public int Remove() this.stk.push(copyqueue()); int x = this.que.remove(); return x; --- פעולת //--- undo public void Undo() if (!stk.isempty()) this.que = this.stk.pop(); --- פעולה המחזירה העתק של התור-ביטול ---// private Queue<Integer> CopyQueue() Queue<int> q = new Queue<int>(); Queue<int> qtmp = new Queue<int>(); while (!this.que.isempty()) int x = this.que.remove(); q.insert(x); qtmp.insert(x); while (!qtmp.isempty()) this.que.insert(qtmp.remove()); return q;

start : [] [] סעי א' לאחר הרצת התכנית באפשרות מחסנית של תורי : 0 for remove for insert 2 for undo - to end --> type a number --> op : [] [[]] 0 for remove for insert 2 for undo - to end --> type a number --> 2 op : [, 2] [[], []] 0 for remove for insert 2 for undo - to end --> type a number --> 3 op : [, 2, 3] [[, 2], [], []] 0 for remove for insert 2 for undo - to end --> 0 op 0: [2, 3] [[, 2, 3], [, 2], [], []] 0 for remove for insert 2 for undo - to end --> type a number --> 4 op : [2, 3, 4] [[2, 3], [, 2, 3], [, 2], [], []] 0 for remove for insert 2 for undo - to end --> 2 op 2: [2, 3] [[, 2, 3], [, 2], [], []] 0 for remove for insert 2 for undo - to end --> 2 op 2: [, 2, 3] [[, 2], [], []] 0 for remove for insert 2 for undo - to end --> -

2 --- ט.כניסה: עץ בינארי לא ריק ומחסנית ריקה של מספרים ---// --- ט.יציאה: המחסנית מכילה את ערכי העלים בסריקה מימין לשמאל ---// public static void leaves (BinTreeNode<Integer>t, Stack<Integer>s) if (t!= null) if (isleaf(t)) s.push(t.getinfo()); else leaves(t.getright(), s); leaves(t.getleft(), s); --- האם עלה? //--- --- הנחה : bt אינו //-- null public static boolean isleaf (BinTreeNode <Integer> bt) if (bt.getleft() == null && bt.getright() == null) return true; return false; --- ט.כניסה: 2 עצים בינאריים המכילים מספרים שלמים ---// --- ט.יציאה: "אמת" אם מספר וערכי העלים ב- 2 העצים שווים ---// --- ו-"שקר" אחרת ---// public static boolean chktrees ( BinTreeNode <Integer> t, BinTreeNode <Integer> t2) Stack <Integer> s = new Stack<Integer>(); Stack <Integer> s2 = new Stack<Integer>(); leaves(t, s); leaves(t2, s2); --- השוואת ערכי העלים שבשתי המחסניות ---// while (! s.isempty() &&! s2.isempty()) if (s.pop()!= s2.pop()) return false; --- אם אחת המחסניות התרוקנה לפני הזמן ---// if (! s.isempty()! s2.isempty()) return false; return true; java: :4 Ï

3 --- ט.כניסה: עץ בינארי לא ריק ומחסנית ריקה של מספרים ---// --- ט.יציאה: המחסנית מכילה את ערכי העלים בסריקה מימין לשמאל ---// public static void Leaves (BinTreeNode<int>t, Stack<int>s) if (t!= null) if (IsLeaf(t)) s.push(t.getinfo()); else Leaves(t.GetRight(), s); Leaves(t.GetLeft(), s); --- האם עלה? //--- --- הנחה : bt אינו //-- null public static bool IsLeaf (BinTreeNode <int> bt) if (bt.getleft() == null && bt.getright() == null) return true; return false; --- ט.כניסה: 2 עצים בינאריים המכילים מספרים שלמים ---// --- ט.יציאה: "אמת" אם מספר וערכי העלים ב- 2 העצים שווים ---// --- ו-"שקר" אחרת ---// public static bool ChkTrees (BinTreeNode <int> t, BinTreeNode <int> t2) Stack <int> s = new Stack<int>(); Stack <int> s2 = new Stack<int>(); Leaves(t, s); Leaves(t2, s2); --- השוואת ערכי העלים שבשתי המחסניות ---// while (! s.isempty() &&! s2.isempty()) if (s.pop()!= s2.pop()) return false; --- אם אחת המחסניות התרוקנה לפני הזמן ---// if (! s.isempty()! s2.isempty()) return false; return true; C# :

4 פרק ב' מערכות מחשב ואסמבלר :5 ÏÈ :6 ÏÈ :7 ÏÈ :8 Ï

5 פרק ב' מבוא לחקר ביצועים :9 Ï :0 Ï : Ï :2 Ï

6 פרק ב' מודלים חישוביים הפתרו לפרק זה נכתב ע"י רחל לודמר. :3 ÏÈ n=, עבור k= ab 4 c א. המילה הקצרה היא ב. ללא שינוי/, a דחו b, / S דחו b,s/ A דחו b,a/ A ללא שינוי/ b,s ללא שינוי/ b,a ללא שינוי/, b ללא שינוי/, a שלו c,s /S שלו c,a /A ללא שינוי/ b,s ללא שינוי/ b,a שלו c,s /S שלו c,a /A

7 q 0 a a אי זוגי b זוגי q a a a זוגי a זוגי b אי זוגי b זוגי b q 3 q 4 b a :4 Ï b q 2 b a זוגי b אי זוגי b a a אי זוגי b אי זוגי השלמת האוטומט נעזרה במקרא הבא: a אי זוגי b זוגי a q 5 a b b q 6 מצב התחלה q 0 מספר ה a אי זוגי ומספר ה b זוגי. q מספר ה a זוגי ומספר ה b אי זוגי. q 2 מספר ה a זוגי ומספר ה b זוגי. q 3 מספר ה a זוגי ומספר ה b אי זוגי. q 4 מספר ה a אי זוגי ומספר ה b זוגי. q 5 מספר ה a אי זוגי ומספר ה b אי זוגי. q 6 q q q b b a a b b 0 q3 q4 q q2 q3 q4 a b a a 0 q q3 q q2 b b 0 q3 q4 ב.. (i) המילה aaba לא מתקבלת. (ii) המילה bbaabb מתקבלת. (iii) המילה abaa מתקבלת. (iv) המילה bb מתקבלת. השפה L המוגדרת ע"י האוטומט היא אוס כל המילי מעל הא"ב אותיות זהות. a,b שמסתיימות לפחות בשתי.2

8 :5 Ï א. n k הוכחה שהשפה 0 k L = 0 2 n > אינה רגולרית. נוכיח שהשפה L היא אי רגולרית, בדר השלילה. נניח שהשפה רגולרית וקיי אוטומט סופי דטרמיניסטי A הבונה אותה. תהי הקבוצה האינסופית הבאה: התחלות של מילי בשפה L נבחר שתי התחלות שונות, w i j = 0, w2 = 0 i > j, j 0 מתו הקבוצה W. מאחר והאוטומט הוא סופי נית להניח כי שתי המילי מגיעות למצב משות מש נשרשר כל מילה ע הרצ. j 2 שתי המילי מגיעות למצב משת המילה יוצא ג ש שייכת לשפה, ולכ i>j עבור 0 i j 2. A באוטומט q t. q r 0 j j 2 ג בשפה, וזה בניגוד לכללי השפה. משות, מסלול מצב מקבל. מאחר ויש לה q r לכ הנחתנו ששתי המילי מגיעות למצב משת אינה נכונה, אלא כל מילה מגיעה למצב אחר. ומאחר והקבוצה W היא אינסופית יוצא שכל מילה מגיע למצב אחר. ומכא יש אינסו מצבי ב, A בניגוד להגדרת אוטומט סופי. לכ ההנחה שקיי אוטומט סופי הבונה את השפה L אינה נכונה, והשפה אינה רגולרית. W = 0, 0 2 3 n, 0,...,0,... ואילו השפה L,(n>0) ב. ב. השפה. L L = φ החיתו הוא השפה הריקה. השפה L חייבת להתחיל באות 0 את הספרה 0. אינה מכילה כלל

9 :6 Ï א. מסלולו חישוב עבור (3)f q 0 a f(3) = '' q a q 2 a q 2 a q 3 a q 6 a q 6 q 5 a q a q 4 q 7 בסו הפעולה נקבל ב. '' = f(5) בסו הפעולה נקבל ג. '' = f(6)

20 מטרת הפונקציה 2/x f(x) = (החלק השל ). עבור x זוגי נקבל 2/x ועבור x אי זוגי נקבל 2/(-x) ד.. ימין, / q 0 q (0)f, יש להוסי את המעבר 7 ה. כדי לקבל את / a, ימין q 0 q אפשרות אחרת: להוסי את המעבר

2 Java פרק ב' תכנות מונחה עצמים :7 ÏÈ

22 :8 ÏÈ

23 :9 ÏÈ

24 :20 Ï

25 פרק ב' תכנות מונחה עצמים #C הפתרו לפרק זה נכתב ע"י זיוה קונצמן. public virtual bool IsLike(Object obj return obj is AA && ((AA)obj).GetSt().Equals(this.GetSt()); public override bool IsLike(object obj) return obj is BB && ((BB)obj).GetNum() = = this.getnum(); :2 ÏÈ א. במחלקה :AA ב. במחלקה : BB ג. קטע התוכנית נכו. מתבצעת המרה אוטומטית כלפי מעלה של משתנה מטיפוס הב להפניה מטיפוס האב. הב הוא ג טיפוס האב לכ אי בעיה. הפלט יהיה: st = excellent num = ד. קטע התוכנית שגוי. לא יכול להמיר כלפי מטה הפניה מסוג האב להיות הפניה מסוג הב, הוא לא נוצר כ BB אלא כ,AA ואינו יכול לעבור המרה למשהו שהוא לא. השגיאה היא שגיאת קומפילציה. public static string LongString(Object[] a) string st = ""; for (int i = 0; i < st.length; i++) if (a[i] is AA &&!(a[i] is BB)) st += ((AA)a[i]).GetSt(); else if (a[i] is BB) for (int j = ; j < ((BB)a[i]).GetNum(); j++) st += ((BB)a[i]).GetSt(); return st; ה.

26 w: B B m=2 m2=3 :22 ÏÈ w2: B D m=6 m2=3 d=.5 w3: B D m=8 m2=9 d=2.3 w4: A A a=null b= w5: A A a= b= הפלט:

27 aseq: ASeq Aseq first=2 difference=3 :23 ÏÈ א. The sequence elements 2, 5, 8,, 4 public class Sequence protected int first; public Sequence(int first) this.first = first; public virtual int TheNElement(int n) return this.first; public virtual void DisplayNElement(int n) Console.Write("The sequence elements"); for (int i = 0; i < n; i++) Console.Write(this.first + ","); public class ASeq:Sequence private int difference; public ASeq(int first, int difference):base(first) this.difference = difference; public override int TheNElement(int n) return this.first + (n - ) * this.difference; ב. הפלט: () (2)

28 public override void DisplayNElement(int n) Console.Write("The sequence elements"); for (int i = 0; i < n - ; i++) Console.Write(this.TheNElement(i + ) + ","); Console.WriteLine(this.TheNElement(n)); public int SumSeq(int n) int sum = 0; for (int i = ; i <= n; i++) sum += TheNElement(i); return sum; ג. אי צור לעשות כל שינוי. הפעולה תכתב במחלקת Sequence כ : בשתי המחלקות היורשות אי צור בכתיבה מחודשת, כל אחת תממש את חישוב האיבר לפי הפעולה הכתובה בה, מכיוו שכא יופעל מנגנו הדריסה. public static char Bigger(int n, ASeq a, Gseq g) int s = a.sumseq(n); int s2 = g.sumseq(n); if (s > s2) return 'A'; if (s2 > s) return 'G'; return 'E'; ד.

29 public class Vet private int id; private string name; private int vetek; עדכו הוותק של הוטרינר ב public void SetVetek() // this.vetek++; :24 Ï public class Animal private int numr; private string name; private string sug; private int age; private int numvet; private Appointement[] lastvisits; public void SetAge() עדכו הגיל של החיה בשנה // this.age++; public Appointment[] GetLastVisits() return this.lastvisits; public class Appointement private string kodes; private int idvet; public class Clinic private Vet [] veterinarians; private Animal [] animals;

30 הפעולה מקבלת סוג חיה ומדפיסה דו"ח הכולל את פרטי כל החיות מסוג זה // public void AllAnimalsSameKind(string kind) int i = 0; while (i < 500 && animals[i]!= null) if (animals[i].gettype().equals(kind)) Console.WriteLine (animals[i].getname() + "," + animals[i].getnumr() + "," + animals[i].getage()); i++; הפעולה מעדכנת בשנה את הותק של כל הוטרינרי // public void UpdateVetek() int i = 0; while (i < 0 && veterinarians[i]!= null) this.veterinarians[i].setvetek(); i++; הפעולה מעדכנת בשנה את גיל כל החיות // public void UpdateAgeAnimals() int i = 0; while (i < 50 && animals[i]!= null) this.animals[i].setage(); i++; הפעולה מקבלת ת.ז. של וטרינר ומחזירה את שמו // public string GetVet(int id) int i = 0; while (i < 0 && veterinarians[i]!= null) if (veterinarians[i].getid() == id) return veterinarians[i].getname(); i++; return null;

3 הפעולה מקבלת חיה, וטרינר מטפל וקוד טיפולי נוכחי ומוסיפה את // הביקור למאגר הביקורי הקיי של חיה זו // public void AddAppointment(Animal p, string t, Vet v) int i = 0; while (i < 50 &&!animals[i].equals(p)) i++; Appointment[] a = animals[i].getlastvisits(); i = 0; while (a[i]!= null) i++; a[i] = new Appointment(v, t);