Microsoft PowerPoint - rec4.ppt

מסמכים קשורים
Slide 1

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

Microsoft PowerPoint - rec1.ppt

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

Microsoft PowerPoint - lec2.ppt

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

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

Microsoft PowerPoint - lec10.ppt

Slide 1

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

PowerPoint Presentation

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

PowerPoint Presentation

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

PowerPoint Presentation

PowerPoint Presentation

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

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

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

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

Microsoft PowerPoint - rec3.ppt

תרגול 1

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

PowerPoint Presentation

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

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

Slide 1

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

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

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

Microsoft Word B

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

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

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

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

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

Microsoft Word - c_SimA_MoedB2005.doc

Slide 1

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

Slide 1

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

PowerPoint Presentation

Slide 1

1

Slide 1

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

Microsoft Word - דוגמאות ב

Slide 1

שקופית 1

PowerPoint Presentation

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

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

Microsoft PowerPoint - rec8.ppt

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

תרגול 1

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

Slide 1

הטכניון - מכון טכנולוגי לישראל

Tutorial 11

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

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

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

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

úåëðä 1 - çæøä

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

234114

תרגול 1

PowerPoint Presentation

Slide 1

מצגת של PowerPoint

Programming

Slide 1

תרגול 1

Slide 1

Slide 1

תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(

Microsoft Word - c_SimA_MoedA2006.doc

1 תבניות טקסט מהי תבנית טקסט? שימוש ב- Characters Meta שימוש ב- Expression Grouping שימוש ב- Quantifiers תת תבניות הפונקציה preg_match הפונקציה preg_m

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

. שאלה 1: ה אי x] T : R 4[ x] R 4[ אופרטור ליניארי מוגדר על-ידי T( ax bx cx d) bx ax cx c )13 נק'( א( מצאו את הערכים העצמיים, המרחבים העצמיים

Microsoft PowerPoint - lec9.ppt

PowerPoint Presentation

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

שעור 6

PowerPoint Presentation

מתכונת עיצוב 3013

Slide 1

Homework Dry 3

Microsoft PowerPoint - lec9.ppt

בס"ד תרגיל 3 מועד אחרון ל כללי בתרגיל זה עליכם לכתוב תוכנה שמדמה מאגר נתונים של חנות. את מוצרי החנות תייצגו באמצעות עצים ורשימות מקושרות יהיה עליכם לנ

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

PowerPoint Presentation

Microsoft Word - pitaron222Java_2007.doc

תמליל:

ע ו ד על הע מס ת או פר ט ו רי ם אוהד ברזילי אוניברסיטת תל אביב

אינטואיטיבי העמסת אופרטורים נותנת למחלקות שהוגדרו על ידנו feel" "look and של טיפוסים ס ט נ דרטים אופרטורים עושים פעולה טבעית, אינטואיטיבית, תכופה לדוגמא: CPoint p1(2,3), p2(1,6); CPoint p3 = p1+p2; p3.print(); אילו פעולות מתבצעות בשורה זו? operator+.1 2. בנאי עבור עצם זמני (temp) 3. בנאי העתקה (שמעתיק את temp ל p3) 4. מפרק (עבור (temp 2 א ונ י ב רס י ט ת תל א ב י ב

העברת נתונים פרמ ט רים ג דולים יועברו by reference פרמטרים אשר הפונקציה או המתודה אינן משנות את ערכם יוגדרו const אם הערך המוחזר מקומי, הוא יועבר by value אפשר אפילו ע"י יצירת עצם זמני במשפט ה return כאשר הע צ ם המוחז ר הוא העצ ם המפעיל או אח ד הארגומנטים, ה הח ז ר ה תע שה by reference פקודות אשר בדר"כ אינן מחזירות ערך, כאשר הן מוגדרות כאופרטורים, יחזירו הפנייה לעצם המפעיל (הדבר מאפשר הפעלה חוזרת של אופרטורים בצורה 'טבעית') 3 א ונ י ב רס י ט ת תל א ב י ב

אופר טור החיבו ר class CPoint int m_x, m_y; public: CPoint(int ax, int ay):m_x(ax), m_y(ay) CPoint operator+(const CPoint& p) const; ; CPoint CPoint::operator+(const CPoint& p) const return CPoint(m_x + p.m_x, m_y + p.m_y); 4 א ונ י ב רס י ט ת תל א ב י ב

פ ונקצ י ות או מת ודו ת לפעמים יש למתכנת בחירה בין 2 צורות מימוש של האופרטור: פונקציה גלובלית (בדר"כ friend של טיפוסי הארגומנטים) או מתודה למשל p1+p2 עשוי להיות ממומש כ- p1.operator+(p2) או כ: operator+(p1,p2) האופרטורים: operator=, operator[], operator (), operator-> חייבים להיות ממומשים כמתודות תזכורת: מחלקה אשר מכילה מצביעים תרצה לממש בעצמה את אופרטור ההשמה, להבטיח התנהגות נאותה 5 א ונ י ב רס י ט ת תל א ב י ב

פ ונקצ י ות ומ תו דו ת class X public: void operator+(int); X(int); ; void operator+(x,x); void operator+(x,double); void f(x a) a+1; 1+a; a+1.0; // a.operator+(1) // ::operator+(x(1),a) // ::operator+(a,1.0) 6 א ונ י ב רס י ט ת תל א ב י ב

עק ביו ת ו התנהגות ברירת מחד ל זוהי אחריות המתכ נת לשמור על עקביות במימוש. למשל ש a++ יהיה שקול ל: 1=+a שיהיה שקול ל a=a+1 האופרטורים היחידים בעלי משמעות עבור כל טיפוס הם אופרטור ההשמה(=), אופרטור הכתובת של(&) ואופרטור הביצוע הסדרתי (,) המשתמש רשאי לשנות התנהגות זו או לחסו ם או תה 7 א ונ י ב רס י ט ת תל א ב י ב

חסימ ת התנהגות ברירת מחד ל class X private : void operator=(const X&); void operator&(); void operator,(const X&); //... ; void f(x a,x b) a = b; // error: operator= private &a; // error: operator& private a,b ; // error: operator, private 8 א ונ י ב רס י ט ת תל א ב י ב

מי מו ש + ע"י =+ class complex double re, im; public: // needs access to representation complex &operator+=(complex a ); //... ; complex operator+(complex a, complex b) complex r = a; return r += b ; // access representation through += 9 א ונ י ב רס י ט ת תל א ב י ב

מי מו ש + ע"י =+ inline complex &complex::operator+=(complex a) re += a.re; im += a.im; return *this; 10 א ונ י ב רס י ט ת תל א ב י ב

המרות טיפ ו סים הופעת הסימן '=' בע ת הצהרה על משתנה הוא סוכר תחבירי לבנאי המתאים class complex double re, im; public: complex(double r) :re(r), im (0) //... ; לדוגמא: complex b = 3 ;// same as complex b = complex(3); complex x(2); // initialize x by 2. no temporary 11 א ונ י ב רס י ט ת תל א ב י ב

המרות טיפ ו סים כאשר לא הוגדר אופרטור עבור טיפוס מסוים המהדר מ חפ ש המ רה לטיפוסים ש עבורם כן הוגדר אופרטור לדוגמא: bool operator==(complex,complex); void f(complex x, complex y) x == y; // means operator==(x,y) x == 3; // means operator==(x,complex(3)) 3 == y; // means operator==(complex(3),y) 12 א ונ י ב רס י ט ת תל א ב י ב

אופר טור המרה class Tiny char v; void assign (int i) if(i&~077) throw Bad_range (); v =i ; public: class Bad_range ; Tiny (int i) assign (i); Tiny& operator=(int i) assign(i); return *this; ; operator int () const return v ; // conversion to int function 13 א ונ י ב רס י ט ת תל א ב י ב

אופר טור המרה int main() Tiny c1 = 2; Tiny c2 = 62; Tiny c3 = c2 c1; // c3 = 60 Tiny c4 = c3; // no range check (not necessary) int i = c1 + c2; // i = 64 c1 = c1 + c2; // range error: c1 can t be 64 i = c3-64 ; // i = 4 c2 = c3-64 ; // range error: c2 can t be 4 c3 = c4 ; // no range check (not necessary) 14 א ונ י ב רס י ט ת תל א ב י ב

אופר טור המרה או העמ סת אופר טורים? או ז ה או זה א בל לא גם וגם, אחרת: int operator+(tiny,tiny); void f(tiny t, int i) t+i; // error, ambiguous: // operator+(t,tiny(i)) // or // int(t)+i? 15 א ונ י ב רס י ט ת תל א ב י ב

המרה מפ ורשת מה עושה הקוד הבא? // initialize z with complex(2) complex z = 2 ; // make s a string with int( a ) elements string s = a ; כאשר הבנאי נקרא "מאחורי הקלעים" ועושה דברים לא אינטואיטיביים, נרצה להגביל את הקריאה לבנאי לזימונים מפורשים בלבד הדבר מושג ע"י המילה השמורה explicit 16 א ונ י ב רס י ט ת תל א ב י ב

המרה מפ ורשת class String //... explicit String(int n); // preallocate n bytes String (const char *p); // initial value is the Cstyle string p ; String s1 = a ; // error: no implicit char >String // conversion String s2(10); // ok: String with space for 10 // characters String s3 = String(10); // ok: String with space for 10 // characters String s4 = "Brian"; // ok: s4 = String("Brian") String s5("fawlty"); 17 א ונ י ב רס י ט ת תל א ב י ב

המרה מפ ורשת void f (String); String g() f(10); // error: no implicit int >String conversion f(string(10)); f("arthur ); // ok: f(string("arthur")) f(s1); String *p1 = new String("Eric"); String *p2 = new String(10); return 10; //error: no implicit int >String conversion 18 א ונ י ב רס י ט ת תל א ב י ב

אופרטור [] אינדקס לא מספ רי class Assoc struct Pair string name; double val; Pair(string n ="", double v=0) : name(n), val(v) ; vector<pair> vec; Assoc(const Assoc &); // private to prevent copying Assoc& operator=(const Assoc &); // private to prevent // copying public: Assoc() double& operator[](const string &); void print_all() const; ; 19 א ונ י ב רס י ט ת תל א ב י ב

אופרטור [] אינדקס לא מספ רי /** search for s; return its value if found; otherwise, make a new Pair and return the default value 0 */ double& Assoc::operator[](const string& s) for(vector<pair>::const_iterator p = vec.begin(); p!=vec.end(); ++p) if (s == p->name) return p->val; vec.push_back(pair(s,0)); // initial value: 0 return vec.back().val ; // return last element 20 א ונ י ב רס י ט ת תל א ב י ב

אופר טור ההפ ע לה () הקוד הבא מפעיל א ת הפונקציה negate על כל א חד מ אבר י המכלים: void negate(complex& c) c = -c; void f(vector<complex>& aa, list<complex>& ll) // negate all vector elements for_each(aa.begin(), aa.end(), negate); // negate all list elements for_each(ll.begin(), ll.end(), negate); 21 א ונ י ב רס י ט ת תל א ב י ב

אופר טור ההפ ע לה () בדומה הקוד הבא מוסיף את המספר המרוכב מאברי המכלים: complex(2,3) לכל א חד void add23(complex& c) c += complex(2,3); void f(vector<complex>& aa, list<complex>& ll) // negate all vector elements for_each(aa.begin(), aa.end(), add23); // negate all list elements for_each(ll.begin(), ll.end(), add23); 22 א ונ י ב רס י ט ת תל א ב י ב

אופר טור ההפ ע לה () נרצה להכליל רעיון זה, נרצה לבצע פעולה כללית על כל אברי המערך ע"י שימוש בעצם שיממש את פעולת ההפעלה ע"י אופרטור (). הדבר מאפשר שימוש בעצם ממש כמו שם של פונקציה class Add complex val; public: Add(complex c) val = c ; // save value Add(double r, double i) val = complex(r,i); ; // add value to argument void operator()(complex& c) const c += val; void f(vector<complex>& aa, list<complex>& ll, complex z) // negate all vector elements for_each(aa.begin(), aa.end(), Add(2,3)); תכנות מונחה עצמים בשפת ++C 23 אוניברסיטת תל אביב // negate all list elements for_each(ll.begin(), ll.end(), Add(z));

אופר טור החץ class Ptr //... X *operator->(); ; האופרטור אונרי void f(ptr p) p->m = 7 ; // (p.operator >()) > m = 7 void g(ptr p) X *q1 = p->; // syntax error X *q2 = p.operator->(); // ok 24 א ונ י ב רס י ט ת תל א ב י ב

מצ ביע ים חכמי ם ++ void f1(t a) // traditional use T v[200]; T* p = &v[0]; p--; *p = a; // Oops: p out of range, uncaught ++p; *p = a; // ok נרצה להחליף את המצביע ל T במצביע חכם שידע לדווח על חריגה מגבולות המערך 25 א ונ י ב רס י ט ת תל א ב י ב

מצ ביע ים חכמי ם ++ class Ptr_to_T //... ; void f2(t a) // checked T v[200]; Ptr_to_T p(&v[0], v,200); p--; *p = a; // runtime error: p out of range ++p; *p = a; // ok 26 א ונ י ב רס י ט ת תל א ב י ב

מצ ביע ים חכמי ם ++ class Ptr_to_T T* p; T* array; int size; public: // bind to array v of size s, initial value p Ptr_to_T(T *p, T *v, int s); // bind to single object, initial value p Ptr_to_T(T * p); Ptr_to_T& operator++(); // prefix Ptr_to_T operator++(int); // postfix Ptr_to_T& operator(); // prefix Ptr_to_T operator(int); // postfix T& operator*(); // prefix ; 27 א ונ י ב רס י ט ת תל א ב י ב

אופר טורים ב ++C שם של אופרטור יכול להיות של + :C+ רק אח ד מהא ופרטורים הסטנדרטים לא ניתן להעמיס את האופרטורים: :: (אופרטור השיוך). (גישה לשדה) *. (גישה לשדה דרך מצביע לפונקציה) 28 א ונ י ב רס י ט ת תל א ב י ב