גיליון תשובות מספר נבחן: (25 נקודות) שאלה 1 א. int *refc_; SmartPointer(T *ptr) { ptr_ = ptr; refc_ = new int(1); } SmartPointer(const SmartPointer<T>

מסמכים קשורים
אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד

מבוא למדעי המחשב

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

מהוא לתכנות ב- JAVA מעבדה 3

מבוא למדעי המחשב

מבוא לתכנות ב- JAVA תרגול 11

מבוא למדעי המחשב

מבוא למדעי המחשב

תרגול 1

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

מבוא לתכנות ב- JAVA תרגול 7

מבוא למדעי המחשב

Microsoft PowerPoint - 10_threads.ppt

PowerPoint Presentation

אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשע"ג, משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם

עוצמת ההורשה מה הופך את ההורשה לכלי כל כך עוצמתי? מעבר לכך שהוא מקל בהגדרת מחלקות חדשות על סמך מחלקות קיימות, יש לנו אפשרות להתייחס לאובייקט מסויים בכ

Slide 1

Slide 1

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

מבוא למדעי המחשב

PowerPoint Presentation

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

תכנות מונחה עצמים א' – תש"ע

שאלהIgal : מערכים דו מימדיים רקורסיה:

PowerPoint Presentation

תרגול 1

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

PowerPoint Presentation

מקביליות

PowerPoint Presentation

PowerPoint Presentation

יוםראשון, 02 ליולי 2014 סמסטר סוף מבחן )236703( עצמים מונחה תכנות - א' מועד 2014, אביב סמסטר קמחי יחיאל ד"ר מרצה: מסינג מיטל עבדאלקאדר, כרם גלעד, ערן

Slide 1

תרגול 1

Microsoft PowerPoint - lec10.ppt

Microsoft PowerPoint - rec3.ppt

Microsoft Word - pitaron222Java_2007.doc

PowerPoint Presentation

סדנת תכנות ב C/C++

מקביליות

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

Slide 1

שאלהIgal : מערכים דו מימדיים רקורסיה:

תרגול 1

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

מבוא למדעי המחשב - חובלים

PowerPoint Presentation

Slide 1

הגשה תוך שבוע בשעת התרגול

Microsoft Word B

מס' סידורי: ת.ז.: עמוד 1 מתוך 20 בחינה בתוכנה 1 סמסטר ב', מועד א',תשס"ט 5/7/2009 וולף, ליאור ליאור שפירא, נעמה מאיר, מתי שמרת הוראות )נא לקרוא!( משך ה

תרגול 3 - מערכים

לנץ קרן מרצה: תכנותמונחהעצמים) ( יוםשישי 15 אוקטובר 0202 ב מועד 0202, אביב סמסטר סמסטר סוף מבחן גוטמן אייל רביב, אריאל משנה, אלון מתרגלים: הנחי

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

תוכנה 1 תרגול מספר 12: GUI כתיבת מחלקות גנריות בית הספר למדעי המחשב אוניברסיטת תל אביב 1

PowerPoint Presentation

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

Microsoft Word - c_SimA_MoedB2005.doc

Slide 1

מבוא למדעי המחשב, סמסטר א', תשס"ח תרגול מס' 2

מקביליות

PRESENTATION NAME

Slide 1

מבוא למדעי המחשב - חובלים

Microsoft Word - דוגמאות ב

שעור 6

תרגול מס' 7: תרגילים מתקדמים ברקורסיה

ex1-bash

Slide 1

Microsoft Word - c_SimA_MoedA2006.doc

שאלהIgal : מערכים דו מימדיים רקורסיה:

פייתון

מבוא למדעי המחשב

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

Tutorial 11

PowerPoint Presentation

Homework Dry 3

HTML - Hipper Text Makeup Language

מבנה מחשבים ספרתיים

תורת הקומפילציה

המינהל למדע וטכנולוגיה הפיקוח על מדעי המחשב עתודה מדעית טכנולוגית מדינת ישראל משרד החינוך המינהל הפדגוגי אגף בכיר בחינות בחינת מפמ ר במדעי המחשב לכיתה

PowerPoint Presentation

Slide 1

בחן במערכות הפעלה

יוםשישי 14 בספטמבר 2012 ) תכנות מונחה עצמים ( מבחן סוף סמסטר סמסטר אביב 2012, מועד ב' מרצה: קרן לנץ מתרגלים: אייל מושקוביץ, ערן גלעד, ניר האוזר

Programming

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

הטכניון - מכון טכנולוגי לישראל הפקולטה להנדסת חשמל המעבדה למערכות תכנה מרושתות ניסוי בתכנות מקבילי ב- Java המאחר ביותר מ 51 דקות לא יורשה לבצע את הניס

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

PowerPoint Presentation

תוכנה 1 אביב תשע"ח תרגיל מספר 8 אוספים גנריים ו- framework collection הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת ה

Slide 1

Python 2.7 in Hebrew

תמליל:

גיליון תשובות מספר נבחן: (25 נקודות) שאלה 1 א. int *refc_; SmartPointer(T *ptr) { ptr_ = ptr; refc_ = new int(1); SmartPointer(const SmartPointer<T>& rhs) { link(rhs); SmartPointer<T>& operator=(const SmartPointer<T>& rhs) { if (&rhs!= this) { clean(); link(rhs); return *this; void link(const SmartPointer<T>& rhs) { ptr_ = rhs.ptr_; refc_ = rhs.refc_; (*refc_)++; void clean() { if (refc_ == nullptr) return; if (*refc_ == 1) { delete ptr_; delete refc_; ptr_ = nullptr; refc_ = nullptr; else { (*refc_)--; מי שלא זכר או מימש סמארט פוינטר אלא מבנה אחר הורדו -10 1

מי שלא השתמש ב int *refc הורדו -3 מי שלא מימש נכון בנאים אופרטור ובנאי הורס הורדו -3-4 נק לכל אחד ב. SmartPointer(SmartPointer<T>&& rhs) { steal(rhs); void steal(smartpointer<t>& rhs) { ptr_ = rhs.ptr_; refc_ = rhs.refc_; rhs.ptr_ = nullptr; rhs.refc_ = nullptr; מי שלא מימש move ctor הורדו בין -3 ל- 5 מי ששכח לשים NULLPTR בSTEAL או שינה את הrefc הורדו -3 (30 נקודות) שאלה 2 א. 1 AtomicBoolean s = new AtomicBoolean(false); t1: f(); s.set(true); t2: while(!s.cas(true, false); f(); א. 2 AtomicBoolean s1 = new AtomicBoolean(false); 2

AtomicBoolean s2 = new AtomicBoolean(true); t1: while (true) { while(!s1.cas(false, true)); A s2.set(false); t2: while (true) { while(!s2.cas(false, true)); B s2.set(false); t3: while (true) { while(!s2.cas(false, true)); C s1.set(false); ב. 1 כן / לא (הקיפו את התשובה הנכונה) הסבר : התשובה כן. תרחיש : נניח שני תרדים T1 ו T2 T1 מגיע עד לשורה,()id=Thread.getCurrentThreadId מבלי לבצע אותה, ונעצר ע"י המתזמן. T2 מגיע עד לשורה,(lst.add(1 מבלי לבצע אותה, ונעצר ע"י המתזמן. T1 ממשיך וגם כן מגיע עד לשורה (lst.add(1 ונעצר ע"י המתזמן. כעט, יש לנו 2 תרדים שעלולים לנסות להכניס חוליות חדשות לרשימה מקושרת שלנו יחד. מכיוון שהרשימה אינה מוגנת, אחת החוליות עלולה ללכת לאיבוד. ב. 2 האם במימוש של בן יתכן מצב של? deadlock כן / לא (הקיפו את התשובה הנכונה) 3

האם במימוש של בן יתכן מצב של? livelock כן / לא (הקיפו את התשובה הנכונה) הסבר : לא יכול להיווצר מצב של חבק (deadlock) לפי ההגדרה, כי אין תרדים שנכנסים למצב נעילה.Blocked כן עלול להיווצר מצב של.livelock תרחיש : נניח שני תרדים T1 ו T2. נניח כי T1 רץ עד id=... כולל השורה הזו, ונעצר ע"י המתזמן. T2 רץ עד, break כולל. כלומר, T2 לא ירוץ יותר לעולם. T1 חוזר לרוץ ומבצע isbusy=true. T2 ממשיך לרוץ ונכשל בבדיקה if(id==...), כי id הינו של T2. כעת, אף תרד לא יכול להכנס יותר, ו T1 יבצע את while(true) הפנימי לנצח. זה livelock כי T1 כן מקבל זמן CPU ומריץ שורות קוד, אך הוא תקוע ולא מתקדם משם. מי שכתב שהתשובה היא deadlock אבל הביא תרחיש נכון, קיבל את כל הנקודות. 4

(30 נקודות) שאלה 3 א. public class GetProductPrices implements Command<Stores> { String product; public GetProductPrices (string product) { this.product = product; @Override public Serializable execute(stores stores) { Map<String,Integer> store2price = new HashMap<String,Integer>(); for (String stroe : stores.getstores()) { Integer price = getproductsofstore(store).get(product); if (price!= null) store2price.put(store,price); return store2price; public class AddStoreProducts implements Command<Stores> { String store; Map<String,Integer> product2price; public addstoreproducts(string store,,map<string,integer> product2price) { this.store = store; this.product2price = product2price; @Override public Serializable execute(stores stores) { for (Entry<String,Integer> productprice : product2price) stores.addproducttostore(store, entry.getkey(), entry.getvalue()); return null; 5

ב. public class PriceServer { public static void main(string[] args) { Stores stores = new StoresImpl(); //one shared object new Reactor( 7777, //port 10, () => new RemoteCommandInvocationProtocol<Stores>(stores), () => new ObjectEncoderDecoder() ).serve(); ג. 11 [ת'רד התקשורת (הת'רד הראשי), עשרת הת'רדים שנותנים עבודה ב [executor ד. במתודת ה mainבמחלקה יש PriceServer להחליף את ב new Reactor new ThreadPerClient (ולהוריד את הפרמטר 10) ה. לשרת התחברו 1000 לקוחות. מודל הריאקטור יצליח לשרת את כולם, כי מספר הת'רדים בו קבוע. במודל ה ThreadPerClient השרת יקרוס מן הסתם מחוסר יכולת להריץ 1000 ת'רדים. 6

(15 נקודות) שאלה 4 א. [4 נק'] def UpdateScoreForMovie(self, movie_id, additional_score): C = self._conn.cursor() C.execute(""" UPDATE Movies SET score = (score*num_scoreres+(?)) / (num_scorers+1), num_scorers = num_scorers+1 WHERE id = (?) """, [ additional_score, movie_id ]) הערות: היו כאלו ששמו את נוסחת העדכון כחלק מהמשתנים של פייתון. חשוב להבין שבפייתון הוא לא מכיר את ערך השדות score או num_scorers שנמצאים בטבלה. זהו,DAO ולכן שדות כמו self.score גם אינו מוגדר פה. ב. [4 נק'] def GetMostPopularActionMovies(self, number_of_movies, minimum_selections): self._conn.cursor().execute(""" SELECT (*) FROM Movies WHERE isaction=true AND num_scorers >= (?) ORDER BY score DESC LIMIT (?) """, [ minimum_selections, number_of_movies ]) הערות: שימו לב - בהנחייה הופיע הסינטקס SELECT column-list FROM table_name [WHERE condition] [ORDER BY column1, column2,.. columnn] [ASC DESC] [LIMIT number_records]; הסימון של הסוגריים המרובעות [] הוא הסימון המקובל בתיעוד תוכנה לערכים/מילות סינטקס אופציונליים לשאילתא. זהו אינו חלק מהסינטקס עצמו. ג. [5 נק'] SELECT COUNT(*), AVG(Movie_watches.score) FROM Movies JOIN Movie_watches ON Movies.id = Movie_watches.movie_id WHERE user_id = 1 AND isaction = True AND Movie_watches.score IS NOT NULL הערה: ניתן גם לשים את score בתוך COUNT ולהוריד את תנאי הNULL,NOT כיוון שאז רשומות עם ערך אינן נספרות ב- COUNT. NULL ד. [2 נק'] 7

לפי הנלמד בקורס השאילתא בסעיף הקודם תמומש כחלק מה- repository, כיוון שהיא כוללת שליפת מידע מיותר מטבלה אחת. ה- DAO שהוגדר בקורס כלל גישות לטבלה בודדת. 8