תוכנה 1

מסמכים קשורים
PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

1 תוכנה 1 תרגיל מספר 7 מנשקים Interfaces הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה- moodle ב

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

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

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

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

Slide 1

Microsoft PowerPoint - rec3.ppt

Microsoft PowerPoint - lec10.ppt

Slide 1

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

Slide 1

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

PowerPoint Presentation

Slide 1

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

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

Slide 1

PowerPoint Presentation

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

Microsoft PowerPoint - 10_threads.ppt

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

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

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

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

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

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

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

תרגול 1

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

PowerPoint Presentation

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

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

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

PowerPoint Presentation

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

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

המשימה תרגול מס' 5: קלט-פלט במערכות הפעלה שונות יש סימונים שונים עבור ירידת שורה :)newline( ב- UNIX/Linux )Line Feed( \n ב- Windows )Carriage Return +

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

Microsoft PowerPoint - lec2.ppt

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

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

Microsoft Word - c_SimA_MoedB2005.doc

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

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

PowerPoint Presentation

תרגול 1

Slide 1

Microsoft PowerPoint - lec9.ppt

תרגול מס' 1

PowerPoint Presentation

Microsoft PowerPoint - rec8.ppt

תרגול 1

Microsoft PowerPoint - lec9.ppt

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

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

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

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

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

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

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

מקביליות

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

Slide 1

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

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

Microsoft Word - pitaron222Java_2007.doc

Microsoft PowerPoint - rec1.ppt

PowerPoint Presentation

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

1

איטרטורים: 1 תוכנה 1 סתיו תשע"ג תרגיל מספר 9 הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה moodl

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

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

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

Microsoft Word - דוגמאות ב

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

Slide 1

Slide 1

1

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

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

Microsoft Word B

PRESENTATION NAME

PowerPoint Presentation

מקביליות

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום

Slide 1

פייתון

תמליל:

תוכנה 1 תרגול 6: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה

2 מנשקים

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

הגדרת מנשק - תזכורת שם המנשק public interface InterfaceName { public String somemethod(); public void anothermethod(int param); public class Concrete implements InterfaceName { מחלקה המממשת את @Override המנשק public String somemethod() { @Override public void anothermethod(int param) {

- מנשק המייצג צורה Shape דוגמא 1: נגדיר מנשק בשם Shape המייצג צורה גיאומטרית. המנשק Shape מחייב את כל המחלקות שמממשות אותו, לכלול מימוש עבור 2 מתודות: getarea() getdetails() מחשבת את שטח הצורה מחזירה מחרוזת המייצגת את הצורה. public interface Shape { public float getarea(); public String getdetails(); { 5

המחלקה Square public class Square implements Shape { float side; public Square(float side) { this.side=side; public float getarea() { return (side*side); המחלקה מצהירה שהיא מממשת את המנשק מימוששל של המתודות מהמנשק public String getdetails() { return "Square: side=" + this.side; { { 6

המחלקה Circle public class Circle implements Shape { float radius; public Circle(float radius) { this.radius=radius; //Constructor public float getarea() { //Implementing Shape.getArea() return (float) (radius*radius*math.pi); public String getdetails() { //Implementing Shape.getDetails() return "Circle: radius=" + this.radius; public float getradius() { return this.radius; //Circle specific method 7

טיפוס הפניה מסוג Shape טיפוס הפניה מסוג Shape יכול להצביע אל כל אובייקט המממש את המנשק.Shape Shape shape1 = new Square(100); Shape shape2 = new Circle(50); ניתן לקרוא באמצעותו רק למתודות הכלולות בהגדרת המנשק. לדוג': shape1.getarea() כדי לקרוא למתודה הספציפית ל- Circle, הצרה באמצעות :casting יש לבצע Circle circle = (Circle) shape2; // Down-casting System.out.println( circle.getradius() ); 8

כללי השמה נוספים ראינו השמה של עצם למשתנה מטיפוס מנשק )שהוא מממש(. Square mysquare = new Square(100); Shape myshape = mysquare; אי אפשר לעשות השמה בכיוון ההפוך, או בין שני טיפוסים שמממשים את אותו מנשק שוב, אפשר להיעזר ב- down-casing Square mysquare2 = myshape; Circle mycircle2 = mysquare; Square mysquare2 = (Square) myshape; "להתחכם" down-casting מאפשר ולבצע השמה מוזרה Circle mycircle2 = (Circle) myshape; במקרה כזה, השגיאה תתגלה רק בזמן ריצה )כשיתברר ש- myshape אינו עיגול( 9

גישה אחידה לאובייקטים ע"י שימוש במנשק Shape השימוש במנשקים מאפשר לנו לעבוד באופן אחיד עם אובייקטים של מחלקות שונות המממשות את המנשק. מערך פולימורפי יכיל אובייקטים מסוגים שונים. Shape[] shapes = new Shape[]{ new Square(10), new Circle(20), new Square(100) ; for (Shape shape : shapes) System.out.println( shape.getdetails() + "\t area= + shape.getarea() ); 10

דוגמא 2: נגן מוזיקה דוגמא: נגן מוזיקה אשר מותאם לעבוד עם קבצי מוזיקה )mp3( ועם קבצי וידאו 11

Playing Mp3 public class MP3Song { public class Player { { public void play(){ // audio codec calculations, // play the song... { // does complicated stuff // related to MP3 format... private boolean repeat; private boolean shuffle; public void playsongs(mp3song[] songs) { do { if (shuffle) Collections.shuffle(Arrays.asList(songs)); for (MP3Song song : songs) song.play(); { while (repeat);

Playing VideoClips public class VideoClip { public class Player { { public void play(){ // video codec calculations, // play the clip... { // does complicated stuff // related to MP4 format... // same as before... public void playvideos(videoclip[] clips) { do { if (shuffle) Collections.shuffle(Arrays.asList(clips)); for (VideoClip videoclip : clips) videoclip.play(); { { while (repeat);

שכפול קוד public void playsongs(mp3song[] songs) { do { if (shuffle) Collections.shuffle(Arrays.asList(songs)); for (MP3Song song : songs) song.play(); while (repeat); למרות ששני השרותים play() אלו פונקציות שונות! נקראים public void playvideos(videoclip[] clips) { do { if (shuffle) Collections.shuffle(Arrays.asList(clips)); for (VideoClip videoclip : clips) videoclip.play(); while (repeat); נרצה למזג את שני קטעי הקוד

שימוש במנשק public void play (Playable[] items) { do { if (shuffle) Collections.shuffle(Arrays.asList(items)); for (Playable item : items) item.play(); while (repeat); public interface Playable { public void play();

מימוש המנשק ע"י הספקים public class VideoClip implements Playable { @Override public void play() { // render video, play the clip on screen... // does complicated stuff related to video formats... public class MP3Song implements Playable { @Override public void play(){ // audio codec calculations, play the song... // does complicated stuff related to MP3 format...

מערכים פולימורפים Playable[] playables = new Playable[3]; playables[0] = new MP3Song(); playables[1] = new VideoClip(); playables[2] = new MP4Song(); // new Playable class Player player = new Player(); // init player... player.play(playables); public void play (Playable [] items) { do { if (shuffle) Collections.shuffle(Arrays.asList(items)); עבור כל איבר במערך יקרא ה play() המתאים for (Playable item : items) item.play(); while (repeat);

עוד על מנשקים לא ניתן ליצור מופע של מנשק בעזרת הפקודה.new מנשק יכול להכיל מתודות וגם קבועים אך לא שדות. מחלקה יכולה לממש יותר ממנשק אחד בג'אווה )תחליף לירושה מרובה(. public class Circle implements Shape, Drawable { מנשק יכול להרחיב מנשק אחר )ואז יכלול גם את המתודות המוגדרות במנשק זה(. public interface Shape extends Drawable { 18

19 פעולות על סיביות

פעולות על סיביות )int, short, byte, char( אופרטורים לביצוע פעולות על ביטים רק על טיפוסים שלמים 3 ~ << >> >>> & ^ 00000000000000000000000000000011 Unary bitwise complement Signed left shift Signed right shift Unsigned right shift Bitwise AND Bitwise XOR Bitwise OR 20

פעולות על סיביות )int, short, byte, char( אופרטורים לביצוע פעולות על ביטים רק על טיפוסים שלמים 3 ~3 00000000000000000000000000000011 11111111111111111111111111111100 int x = 3; int y = ~x; 21

פעולות על סיביות - דוגמאות ביטים. ייצוג בינארי 32 int 3 ~3-3 3 << 2-3 >> 1-3 >>> 1 00000000000000000000000000000011 11111111111111111111111111111100 11111111111111111111111111111101 00000000000000000000000000001100 11111111111111111111111111111110 01111111111111111111111111111110 מה נקבל מ & 3?i 22

פעולות על סיביות - דוגמאות ביטים. ייצוג בינארי 32 int 3 00000000000000000000000000000011 & i 00000000000000000000000000000101 = 00000000000000000000000000000001 מה נקבל מ & 3?i שני הביטים הימניים של i ומה נקבל מ i & 0xF0? 23

24 פענוח של הדפסת שגיאה )Stack Trace(

Interpreting a Stack Trace of an Exception כשנתקלים בחריגה במהלך ריצת התוכנית, ניתן להשתמש במידע שניתן לנו כדי לזהות את סוג החריגה ואת המיקום בתוכנית שבו היא ארעה. Console: Exception in thread "main" java.lang.nullpointerexception at com.example.myproject.book.gettitle(book.java:16) at com.example.myproject.author.getbooktitles(author.java:25) at com.example.myproject.bootstrap.main(bootstrap.java:14) Book.java: public String gettitle() { System.out.println(title.toString()); <-- line 16 return title; 25

Interpreting a Stack Trace of an Exception דוגמא נוספת: Exception in thread "main" java.lang.outofmemoryerror: Java heap space at java.util.arrays.copyof(unknown Source) at java.lang.abstractstringbuilder.expandcapacity(unknown Source) at java.lang.abstractstringbuilder.ensurecapacityinternal(unknown Source) at java.lang.abstractstringbuilder.append(unknown Source) at java.lang.stringbuilder.append(unknown Source) at SmallTestMultiCollections.testOrder(SmallTestMultiCollections.java:56) at SmallTestMultiCollections.main(SmallTestMultiCollections.java:34 26

27 הסוף...