PowerPoint Presentation

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

PowerPoint Presentation

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

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

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

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

תרגול 1

PowerPoint Presentation

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

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

Slide 1

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

תרגול 1

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

Microsoft PowerPoint - rec3.ppt

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

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

PowerPoint Presentation

PowerPoint Presentation

Slide 1

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

Microsoft PowerPoint - 10_threads.ppt

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

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

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

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

PowerPoint Presentation

Slide 1

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

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

Slide 1

Slide 1

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

Slide 1

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

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

Microsoft PowerPoint - lec10.ppt

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

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

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

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

PowerPoint Presentation

Slide 1

Slide 1

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

פייתון

PowerPoint Presentation

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

HTML - Hipper Text Makeup Language

Microsoft Word - pitaron222Java_2007.doc

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

PowerPoint Presentation

PowerPoint Presentation

Slide 1

PowerPoint Presentation

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

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

PRESENTATION NAME

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

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

מבוא לאסמבלי

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

PowerPoint Presentation

תרגול 1

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

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

Microsoft PowerPoint - lec2.ppt

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

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

Microsoft PowerPoint - rec8.ppt

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

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

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

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

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

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

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

מקביליות

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

מקביליות

Microsoft PowerPoint - rec1.ppt

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

Microsoft Word B

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

תרגול 1

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

1

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

Microsoft Word - c_SimA_MoedB2005.doc

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

Tutorial 11

Microsoft PowerPoint - lec9.ppt

Microsoft PowerPoint - lec 04 Gui Form_Item.pptx

תמליל:

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

== vs equals Point p = new Point(,2) Point p2 = new Point(,2) p == p2 p.equals(p2) מתי נכון להשתמש בכל אחד מהם? שימו לב, במחלקה שכתבתם בעצמכם יש לכתוב מתודת equals על מנת להשתמש בה. אין להשתמש הקורס( במתודת "ברירת מחדל" )יוסבר בהמשך 2

3 מנשקים

מנשקים מנשק )interface( הוא מבנה תחבירי ב Java המאפשר לחסוך בקוד לקוח קוד אשר משתמש במנשק יוכל בזמן ריצה לעבוד עם מגוון מחלקות המממשות את המנשק הזה )ללא צורך בשכפול הקוד עבור כל מחלקה( דוגמא: מוזיקה נגן מוזיקה אשר מותאם לעבוד עם קובצי )mp4( ועם קובצי וידאו )mp3(

הגדרת מנשק public interface InterfaceName { public String getstring(); public void method(int param); שם המנשק מחלקה המממשת את המנשק public class Concrete implements InterfaceName { @Override public String getstring() { @Override public void method(int param) {

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[] = 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);

CALC דוגמא: מפרש השפה 2

השפה CALC ניזכר בשפה CALC משעורי הבית: שפה מבוססת מחסנית בשורה ראשונה: הצהרה על מספר הפרמטרים מספרים: מתווספים לראש המחסנית פקודות: פועלות על המחסנית פרמטרים מוסרים מראש המחסנית ערכי חזרה מתווספים לראש המחסנית args 0 2 + דוגמא: פעולת החיבור מסירה שני ערכים מראש המחסנית ומוסיפה את סכומם לראש המחסנית

מפרש השפה CALC המפרש קורא תוכנית CALC מזרם הקלט: שובר את זרם הקלט לשורות פועל על כל שורה באמצעות runcommand מה הבעיה עם המתודה runcommand של המפרש? נתבונן במימוש אפשרי

runcommand public static double runcommand(string cmd) { switch (cmd) { case "+": push(pop() + pop()); break; case "-": push(pop() - pop()); break; case "*": push(pop() * pop()); break;... default: push(double.parsedouble(cmd)); return top(); לכל Command יש מקרה משלה ב-.switch קשה לתחזק את הקוד. תווצר מתודה ארוכה שכל המתכנתים מעדכנים. אם לא ראינו פקודה מוכרת, אנו מצפים למספר שיש להכניס למחסנית.

runcommand public static double runcommand(string cmd) { switch (cmd) { case "+": push(pop() + pop()); break; case "-": push(pop() - pop()); break; case "*": push(pop() * pop()); break;... default: push(double.parsedouble(cmd)); תבנית חוזרת לכל Command יש שם. כל Command משנה את המחסנית. return top();

מנשק Command public interface Command { public String getname(); public void interpret(stack stack); public interface Stack { public double pop(); public double top(); public void push(double value); public int size(); לכל Command יש שם. כל Command משנה את המחסנית. בצורה דומה נגדיר גם מנשק למחסנית

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

דוגמא: חיבור public class PlusCommand implements Command { @Override public String getname() { return "+"; @Override public void interpret(stack stack) { stack.push(stack.pop() + stack.pop()); מימוש מנשקים ציון מפורש שהמתודה היא מימוש למנשק החתימה חייבת להיות זהה לזו המצוינת במנשק

דוגמא: חיבור public class PlusCommand implements Command { @Override public String getname() { המחרוזת המתאימה לחיבור return "+"; המימוש נשאר זהה @Override public void interpret(stack stack) { stack.push(stack.pop() + stack.pop());

פולימורפיזם כיצד בונים את קוד הלקוח?)runCommand( נחזיק רשימה של פקודות אפשריות: ב-: runcommand נעבור על הרשימה ונחפש התאמה למחרוזת הקלט אם מצאנו התאמה, private static Command[] commands = { new PlusCommand(), new MinusCommand(), new MultiplyCommand(),... ; נבצע את הפקודה. 2

runcommand החדש public static double runcommand(string cmd) { if (cmd == null cmd.isempty() cmd.startswith(";")) return top(); for (Command command : commands) if (command.getname().equals(cmd)) { command.interpret(stack); return top(); push(double.parsedouble(cmd)); return top(); פולימורפיזם: בזמן קומפילציה לא ידוע היכן ממומשת המתודות interpret ו-.getName רק בזמן ריצה יקבעו המתודות הנכונות, עפ"י הטיפוס הקונקרטי של העצם!

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

שמירה לזיכרון public class MemoryStoreCommand implements Command { private double[] memory; MemoryStoreCommand(double[] memory) { this.memory = memory; @Override public void interpret(stack stack) { int address = (int)stack.pop(); memory[address] = stack.pop(); @Override public String getname() { return "store"; שטח הזיכרון והקצאתו אינן באחריות המחלקה מקבלים כתובת )מספר שלם( וכן ערך מהמחסנית.

טעינה מהזיכרון public class MemoryLoadCommand implements Command { private double[] memory; MemoryLoadCommand(double[] memory) { this.memory = memory; @Override public void interpret(stack stack) { int address = (int)stack.pop(); stack.push(memory[address]); @Override public String getname() { return load"; מקבלים כתובת )מספר שלם( ומחזירים ערך על גבי המחסנית.

אתחול המפרש הוספת פקודות הגישה לזיכרון במפרש דורשת גם הקצאת שטח זיכרון private static double[] memory = new double[memory_size]; private static Command[] commands = {... new MemoryStoreCommand(memory), new MemoryLoadCommand(memory) ; 26

שימושים מה ניתן לעשות עם זיכרון? מספר דוגמאות חישוב שורשים של משוואה ריבועית חישוב סדרת Fibonacci חישוב טור גיאומטרי )קוד CALC )עפ"י נוסחא סגורה( עבור הדוגמאות הנ"ל זמין באתר הקורס( 27

דוגמא: טור גיאומטרי ; input parameters: r n a ;. store parameters in memory ; 2. place (-r) on stack ; 3. place(-r^n) on stack ; 4. divide ; 5. multiply by a

דוגמא: טור גיאומטרי ; input parameters: r n a ;. store parameters in memory 3 store 2 store Store ; 2. place (-r) on stack ; 3. place(-r^n) on stack ; 4. divide ; 5. multiply by a

דוגמא: טור גיאומטרי ; input parameters: r n a ;. store parameters in memory 3 store 2 store Store ; 2. place (-r) on stack ; 3. place(-r^n) on stack ; 4. divide ; 5. multiply by a

דוגמא: טור גיאומטרי ; input parameters: r n a ;. store parameters in memory 3 store 2 store Store ; 2. place (-r) on stack load - ; 3. place(-r^n) on stack ; 4. divide ; 5. multiply by a

דוגמא: טור גיאומטרי ; input parameters: r n a ;. store parameters in memory 3 store 2 store Store ; 2. place (-r) on stack load - ; 3. place(-r^n) on stack ; 4. divide ; 5. multiply by a

דוגמא: טור גיאומטרי ; input parameters: r n a ;. store parameters in memory 3 store 2 store Store ; 2. place (-r) on stack load - ; 3. place(-r^n) on stack 2 load load ** - ; 4. divide ; 5. multiply by a

דוגמא: טור גיאומטרי ; input parameters: r n a ;. store parameters in memory 3 store 2 store Store ; 2. place (-r) on stack load - ; 3. place(-r^n) on stack 2 load load ** - ; 4. divide ; 5. multiply by a

דוגמא: טור גיאומטרי ; input parameters: r n a ;. store parameters in memory 3 store 2 store Store ; 2. place (-r) on stack load - ; 3. place(-r^n) on stack 2 load load ** - ; 4. divide / ; 5. multiply by a

דוגמא: טור גיאומטרי ; input parameters: r n a ;. store parameters in memory 3 store 2 store Store ; 2. place (-r) on stack load - ; 3. place(-r^n) on stack 2 load load ** - ; 4. divide / ; 5. multiply by a

דוגמא: טור גיאומטרי ; input parameters: r n a ;. store parameters in memory 3 store 2 store Store ; 2. place (-r) on stack load - ; 3. place(-r^n) on stack 2 load load ** - ; 4. divide / ; 5. multiply by a 3 load *

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

חזרה: שדות מופע ומחלקה 39

Instance vs. Class (static) Fields Instance fields למה? ייצוג פנימי של המופע Class (static) fields למה? קבועים ערכים המשותפים לכל מופעי המחלקה מתי? מאותחלים לפי הסדר עם טעינת המחלקה מתי? מאותחלים עם יצירת האובייקט כמה? אחד לכל מופע כמה? יש רק בכל התוכנית! )0 המחלקה( לפני טעינת מאיפה? ) 40 מאיפה? נגישים ממתודות סטטיות ומתודות מופע נגישים אך ורק ממתודות מופע! )למה?

דוגמא public class BankAccount { public static final String BANK_NAME = "BNP"; //static constant private static int lastaccountid = 0; //static field private int id; public BankAccount() { id = ++lastaccountid; // unique ID for every account /* static method */ public static void main(string[] args) { System.out.println(lastAccountId); System.out.println(id); BankAccount account = new BankAccount(); System.out.println(account.id); /* instance method */ public void printstuff() { System.out.println(lastAccountId); System.out.println(id); 4