Microsoft PowerPoint - lec2.ppt

מסמכים קשורים
Microsoft PowerPoint - rec3.ppt

Microsoft PowerPoint - rec1.ppt

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

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

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

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

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

Slide 1

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

Microsoft PowerPoint - lec10.ppt

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

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

Microsoft Word - c_SimA_MoedB2005.doc

PowerPoint Presentation

PowerPoint Presentation

Microsoft Word B

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

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

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

Slide 1

PowerPoint Presentation

PowerPoint Presentation

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

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

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

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

Slide 1

PowerPoint Presentation

PowerPoint Presentation

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

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

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

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

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

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

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

PowerPoint Presentation

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

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

Tutorial 11

Slide 1

תרגול 1

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

Microsoft Word - דוגמאות ב

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

Microsoft PowerPoint - L01-n.ppt

PowerPoint Presentation

Microsoft Word - Ass1Bgu2019b_java docx

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

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

Overview of new Office 365 plans for SMBs

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

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

Slide 1

PowerPoint Presentation

מבחן בפיתוח מערכות תוכנה בשפת Java ( )

234114

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

מדריך להתקנת Code Blocks מדריך זה נועד לתאר את תהליך התקנת התוכנה של הקורס "מבוא למחשב שפת C". בקורס נשתמש בתוכנת Code::Blocks עם תוספת )אשף( המתאימה

PRESENTATION NAME

Slide 1

Slide 1

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

Slide 1

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

Slide 1

Slide 1

Slide 1

PowerPoint Presentation

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

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

BIG DATA תיאור הקורס המונח Big Data הולך וצובר תאוצה בשנים האחרונות, הוא הופך למגמה רווחת בתעשייה. המשמעות הפרקטית של המונח Big Data הינה טכנולוגיות נ

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

פ רק כה ) פ ס וק ים ז-יא( ז ו א ל ה י מ י ש נ י ח י י א ב ר ה ם א ש ר ח י: מ א ת ש נ ה ו ש ב ע ים ש נ ה ו ח מ ש ש נ ים. ח ו י ג ו ע ו י מ ת א ב ר ה ם

Microsoft PowerPoint - rec8.ppt

WinZIP תוכנה לדחיסת קבצים ספטמבר 2007

Slide 1

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

Slide 1

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

Slide 1

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

תוכנה 1 בשפת Java שיעור מספר 3: "חתיכת טיפוס"

PowerPoint Presentation

<4D F736F F D20FAF8E2E9EC203220E0F7E520EEE020FAF9F2E1>

PowerPoint Presentation

ייבוא וייצוא של קבצי אקסל וטקסט

תוכן העניינים

úåëðä 1 - çæøä

תוכן העניינים

שקופית 1

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

הנחיות הורדה ותפעול לספרים דיגיטלים. הוצאת כנרת, זמורה ביתן שמחה להגיש לכם, התלמידים, ספר דיגיטלי. הספרים עצמם הינם בקבצי PDF הניתנים להורדה ללא עלות

תמליל:

מרחב הש מות (namespace) אוהד ברזילי אוניברסיטת תל אביב

מה בתו כנית? לקוח וס פק במערכת תוכנה ממשקים הכרת מרחב השמות מניעת תלות פוטנציאלית בין רכיבים במערכת ע"י עיצוב חלופי של מבנה הממשקים 2 א ונ י ב רס י ט ת תל א ב י ב

ל קו ח וספ ק במערכת תו כנה ספק (supplier) הוא מי שקוראים לו (לפעמים נקרא גם שרת, (server לקוח (client) הוא מי שקרא לספק או מי שמשתמש בו (לפעמים נקרא גם משתמש, (user דוגמא: void do_something() // doing... בדוגמא זו הפונקציה main היא לקוחה של הפונקציה do_something() main ה יא ספקית של do_something main() do_something(); 3 א ונ י ב רס י ט ת תל א ב י ב

ל קו ח וספ ק במערכת תו כנה הספק והלקוח עשויים להיכתב בזמנים שונים, שונים ואז כמובן לא יופיעו באותו קובץ במקומות שונים וע"י אנש ים void do_something() // doing... supplier.cpp main() do_something(); client.cpp 4 א ונ י ב רס י ט ת תל א ב י ב

ל קו ח וספ ק במערכת תו כנה מנקודת מבטו של הלקוח קוד המקור של הספק עשוי לא להיות זמין כלל supplier.o #@!!!>>??%^#&@ main() client.cpp do_something(???); 5 א ונ י ב רס י ט ת תל א ב י ב

ל קו ח וספ ק במערכת תו כנה כדי לתקשר בין הספק והלקוח עליהם להגדיר ממשק,interface) מנשק) בינהם בצד הספק בצד הלקוח supplier.h void do_something(); תכנות מונחה עצמים בשפת ++C 6 אוניברסיטת תל אביב #include supplier.h main() do_something(???); client.cpp #include supplier.h void do_something() // doing... supplier.cpp

ל קו ח וספ ק במערכת תו כנה לאחר תהליך ההידור מקבל הלקוח גם קובץ בינארי (h.) וגם קובץ כותרות (.OBJ או (o. בצד הלקוח #@!!!>>??%^#&@ supplier.o בצד הספק #@!!!>>??%^#&@ supplier.o supplier.h void do_something(); supplier.h void do_something(); תכנות מונחה עצמים בשפת ++C 7 אוניברסיטת תל אביב #include supplier.h main() do_something(); client.cpp #include supplier.h void do_something() // doing... supplier.cpp

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

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

ל קו ח וספ ק במערכת תו כנה void do_something(); בצד הספק בצד הלקוח supplier.h מ מ מש ע"פ המ משק את הפ ו נקציות משתמ ש בפונקציות לפ י ה מ משק #include supplier.h main() do_something(); client.cpp #include supplier.h void do_something() // doing... supplier.cpp 10 א ונ י ב רס י ט ת תל א ב י ב

המודו ל Calendar // representation struct Date int d, m, y; ; cal.h // interface for users void init_date(date& d, int, int, int); // initialize d void add_year(date& d, int n); // add n years to d void add_month(date& d, int n); // add n months to d void add_day(date& d, int n); // add n days to d Date next_weekend();// returns the next weekend Date // inner use only bool valid(const Date& d) ; // checks if d is valid // global variable extern Date today; 11 א ונ י ב רס י ט ת תל א ב י ב

מו דו ל כמרחב שמו ת אנו רוצים מבנה תחבירי שיציין את ה"רכיביות" של Calendar מיקום כל ההגדרות באותו קובץ אינו מפורש מספיק (למשל אינו נאכף ע"י המהדר) נעטוף את ההגדרות במרחב שמות: namespace Calendar // representation struct Date int d, m, y; ; // interface for users void init_date(date& d, int, int, int); // initialize d... 12 א ונ י ב רס י ט ת תל א ב י ב

אופר טור השיוך :: לקוח של Calendar צריך מעת ה לציין א ת מרחב השמות בכל שימוש (כמעט) main() Date d; Calendar::Date d; // Error // OK Calendar::init_date(d,7,7,2005); init_date(d,7,7,2005); d = next_weekend() d = Calendar::next_weekend() // OK // also OK - argument- // dependent lookup // Error // OK 13 א ונ י ב רס י ט ת תל א ב י ב

אופר טור השיוך :: המממש של Calendar צריך גם הוא לציין א ת מרחב ה ש מות בכל מימוש // Date.c void add_year(date& d, int n) d.y += n; void Calendar::add_year(Date& d, int n) d.y += n; // Error // OK בתוך מרחב השמות א ין צ ורך לחזור על השם המ לא Date Calendar::next_weekend() Date rslt = 7,7,2005; // no need for Calendar::Date return rslt; 14 א ונ י ב רס י ט ת תל א ב י ב

הצהרת משתמ ש כאשר לקוח של Calendar עושה שימוש נרחב בשרותים מסוימים של,Calendar הוא יכול לחסוך את הסרבול התחבירי ע"י יבוא של שמות מסוימים מתוך המרחב (using declaration) main() using Calendar::Date; using Calendar::init_date; // using all overloaded versions Date d; // Same as Calendar::Date d; init_date(d,7,7,2005); // Same as Calendar::init_date(d,7,7,2005); d = next_weekend() // Error not imported 15 א ונ י ב רס י ט ת תל א ב י ב

הנחיית שימו ש כאשר לקוח של Calendar עושה שימוש נרחב בכל השרותים של,Calendar הוא יכול לחסוך את הסרבול התחבירי ע"י יבוא כל מרחב השמות directive) (using main() using namespace Calendar; Date d; init_date(d,7,7,2005); d = next_weekend() 16 א ונ י ב רס י ט ת תל א ב י ב

הנחיית שימו ש ייבוא מרחבי שמות רבים בשלמותם מ עקר מתוכן א ת מרחב השמות פקודה זו הוספה לשפה בעיקר כדי להקל הטמעה של קוד שנכתב מחוץ למרחב שמות לתוך מערכת התומכת בכך (כדוגמת שילוב ספריות C בתוכנית (C++ שימוש נרחב בתכונה זו מרמז בדרך כלל על התלויות הפנימיות במערכת 17 א ונ י ב רס י ט ת תל א ב י ב

ריבוי ממ שקים (exported) לא כל השרותים המוגדרים ב Calendar אמורים ל היות מיוצאים למשל הפונקציה Date&) bool valid(const א מורה לשמש את מממשי Calendar בלבד void Calendar::add_day(Date& d, int n) d.d += n; if (!valid(d)) // illegal date fix it לדוגמא כך: 18 א ונ י ב רס י ט ת תל א ב י ב

ריבוי ממ שקים מתכנתים ומהדרים נוקטים בגישה הקונסרבטיבית (המוצדקת!) אם שרות כלשהו זמין ללקוח כלשהו יש להניח כי הלקוח תלוי בקטע קוד זה כלומר יש צורך להגדיר ממשקים נפרדים (לא בהכרח זרים) למממשים ולמשתמשים (ניתן אפילו לחשוב על ממשקים שונים למשתמשים שונים) 19 א ונ י ב רס י ט ת תל א ב י ב

ריבוי ממ שקים בצד המ מ מש בצד הלקוח namespace Calendar // only exported features Calendar namespace Calendar // all features Calendar בצורה גרפית המערכת נראית כך: Calendar Calendar מ מ משים לקוחות החיצים מתארים את היחס "תלוי במימוש המוצג ע"י" 20 א ונ י ב רס י ט ת תל א ב י ב

ריבוי ממ שקים הפתרון שהוצג בשקף הקודם הוא פתרון פשוט וטוב החסרון העיקרי הוא שלו הוא ש- Calendar ו- Calendar מתארים שני מרחבי שמות בעלי אותו שם (ניתן להשיג זאת ע"י שימוש בקובצי h. שונים). המהדר (compiler) ההגדרות הכפולות לא יוכל ת מיד לבדוק א ת עקביות בעיה זו נפתרת כמעט תמיד ע"י שימוש במהדרים חכמים וע"י המקשר (linker) 21 א ונ י ב רס י ט ת תל א ב י ב

עי צ וב חלו פ י בצד המ מ מש בצד הלקוח namespace Calendar_interface using Calendar::Date; using Calendar::init_date; // for all exported operations Calendar_interface namespace Calendar // all features Calendar בצורה גרפית המערכת נראית כך: Calendar Calendar_interface מ מ משים לקוחות 22 א ונ י ב רס י ט ת תל א ב י ב

עי צ וב חלו פ י בעיצוב זה ברור שהמשתמשים תלויים רק בתכונ ות שיוצאו עבורם ע"י Calendar_interface (ולא יושפעו משינויים בפעולות פנ ימיות) ואולם בגישה הקונסרבטיבית שאותה אנו נוקטים, גרף התלויות מראה תלות (טרנזיטיבית) בין המשתמשים ובין Calendar נרצה למנוע מראית עין זו, ע"י עיצוב חלופי 23 א ונ י ב רס י ט ת תל א ב י ב

עי צ וב חלו פ י (2) בצד המ מ מש בצד הלקוח namespace Calendar // only exported features Calendar namespace Calendar // all features Calendar namespace Calendar_interface using Calendar::Date; using Calendar::init_date; // for all exported operations Calendar_interface 24 א ונ י ב רס י ט ת תל א ב י ב

עי צ וב חלו פ י (2) Calendar בצורה גרפית המערכת נראית כך: Calendar_interface Calendar מ מ משים לקוחות ההבדל היחיד מהגרסה הראשונה הוא הוספת ממשק הביניים Calendar_interface עדיין אנו סומכים על הקומפיילר שיעזור לנו לפתור בע יות חוסר עקביות בין ההגדרות 25 א ונ י ב רס י ט ת תל א ב י ב

עי צ וב חלו פ י (3) בצד הלקוח namespace Calendar_interface void init_date(date& d, int, int, int); void add_year(date& d, int n); // for all exported operations Calendar_interface void Calendar_interface::init_date(Date& d, int dd, int mm, int yy) Calendar::init_date(d, dd, mm, yy); // for all exported operations Calendar_interface implementation 26 א ונ י ב רס י ט ת תל א ב י ב

עי צ וב חלו פ י (3) בצורה גרפית המערכת נראית כך: Calendar_interface Calendar Calendar_interface implenetation מ מ משים לקוחות פתרון זה ממזער את התלויות במערכת זהו כנראה OVERKILL 27 א ונ י ב רס י ט ת תל א ב י ב

מניעת התנגשות שמות קשה להכליל את שנ י הקבצים הללו בא ותה תוכנית: // my.h: char f (char); int f(int); struct String /*... */ ; // your.h: char f(char); double f(double); struct String /*... */ ; 28 א ונ י ב רס י ט ת תל א ב י ב

מניעת התנגשות שמות ע כשיו קל: namespace my char f (char); int f(int); struct String /*... */ ; namespace your char f(char); double f(double ); struct String /*... */ ; 29 א ונ י ב רס י ט ת תל א ב י ב

שימו ש בספרי ות C // stdio.h: namespace std //... int printf (const char *... ); //... using namespace std ; 30 א ונ י ב רס י ט ת תל א ב י ב

שימו ש בספרי ות C ל שומרי סביבה // cstdio: namespace std //... int printf (const char *... ); //... 31 א ונ י ב רס י ט ת תל א ב י ב

שימוש בס פרי ות C למתנגדי שכפול הקוד // stdio.h: #include <cstdio> using namespace std; 32 א ונ י ב רס י ט ת תל א ב י ב

ת פ קי ד י מ רחב השמו ת לבטא קשר לוגי-רעיוני בין אוסף של פעולות למנוע ממשתמשים גישה לפעולות לא להם לחסוך למשתמש את הטירחה (התחבירית) מטרות אלו באמצעים אחרים בהשגת 33 א ונ י ב רס י ט ת תל א ב י ב

מרחב השמות והעו ל ם האמי תי הערה: מרח ב השמות משמש לניהול רכיבים בקנה מידה ג דול בהר בה מאלה שנתאר כאן מחלקות מייתרות למעשה את השימוש במר חב ש מות לתאור מב נה נתונים אח ד בתור מודול מרח ב שמות טיפוסי מכיל עשרות מח לקות ויותר השימוש במרחבי שמות מקובל מאוד בשפות (שם הוא נקרא (package Java ו- C# 34 א ונ י ב רס י ט ת תל א ב י ב

הפ ס קה