PowerPoint Presentation

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

PowerPoint Presentation

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

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

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

תרגול 1

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

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

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

Slide 1

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

PowerPoint Presentation

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

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

PowerPoint Presentation

Microsoft PowerPoint - rec3.ppt

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

תרגול 1

PowerPoint Presentation

Slide 1

Microsoft PowerPoint - 10_threads.ppt

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

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

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

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

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

Slide 1

PowerPoint Presentation

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

Slide 1

Slide 1

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

Slide 1

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

PowerPoint Presentation

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

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

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

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

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

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

פייתון

Microsoft PowerPoint - lec10.ppt

Slide 1

PowerPoint Presentation

Slide 1

PowerPoint Presentation

Microsoft Word - pitaron222Java_2007.doc

PowerPoint Presentation

Slide 1

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

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

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

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

תרגול 1

HTML - Hipper Text Makeup Language

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

מבוא לאסמבלי

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

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

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

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

PowerPoint Presentation

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

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

Microsoft PowerPoint - lec2.ppt

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

PowerPoint Presentation

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

Microsoft PowerPoint - rec8.ppt

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

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

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

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

PRESENTATION NAME

תרגול 1

1

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

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

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

מקביליות

מקביליות

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

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

Microsoft Word B

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

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

Microsoft Word - c_SimA_MoedB2005.doc

Tutorial 11

Microsoft PowerPoint - rec1.ppt

Microsoft PowerPoint - lec9.ppt

Microsoft PowerPoint - lec 04 Gui Form_Item.pptx

יצוא לחשבשבת תוכן עיניינים הגדרות - חשבונות בנק...2 הגדרות - הגדרות חשבשבת... 3 הגדרות - כרטיסי אשראי... 4 הגדרות - סוגי הכנסה... 5 יצוא לחשבשבת...6 י

תמליל:

== vs equals תוכנה תרגול 7 :מנשקים, פולימורפיזם ועוד Point p = new Point(,) Point p = new Point(,) p == p p.equals(p) מתי נכון להשתמש בכל אחד מהם? שימו לב, במחלקה שכתבתם בעצמכם יש לכתוב מתודת equals על מנת להשתמש בה. אין להשתמש במתודת "ברירת מחדל" )יוסבר בהמשך הקורס( * לא בהכרח בסדר הזה מנשקים מנשק )interface( הוא מבנה תחבירי ב Java המאפשר לחסוך בקוד לקוח מנשקים קוד אשר משתמש במנשק יוכל בזמן ריצה לעבוד עם מגוון מחלקות המממשות את המנשק הזה )ללא צורך בשכפול הקוד עבור כל מחלקה( דוגמא: נגן מוזיקה אשר מותאם לעבוד עם קובצי מוזיקה )mp( ועם קובצי וידאו )mp4( הגדרת מנשק Playing Mp public interface InterfaceName public String getstring(); public void method(int param); public class Concrete implements InterfaceName public String getstring() public void method(int param) שם המנשק מחלקה המממשת את המנשק public class MPSong public class Player public void play() private boolean repeat; // audio codec calculations, private boolean shuffle; // play the song... public void playsongs(mpsong[] songs) do // does complicated stuff // related to MP format... Collections.shuffle(Arrays.asList(songs)); for (MPSong song : songs) song.play(); while (repeat);

Playing VideoClips public class VideoClip public class Player public void play() // same as before... // video codec calculations, // play the clip... public void playvideos(videoclip[] clips) do // does complicated stuff Collections.shuffle(Arrays.asList(clips)); // related to MP4 format... for (VideoClip videoclip : clips) videoclip.play(); שכפול קוד public void playsongs(mpsong[] songs) do Collections.shuffle(Arrays.asList(songs)); for (MPSong song : songs) song.play(); while (repeat); למרות ששני השרותים נקראים play() אלו פונקציות שונות! while (repeat); public void playvideos(videoclip[] clips) do Collections.shuffle(Arrays.asList(clips)); for (VideoClip videoclip : clips) videoclip.play(); while (repeat); נרצה למזג את שני קטעי הקוד מימוש המנשק ע"י הספקים שימוש במנשק public void play (Playable[] items) do Collections.shuffle(Arrays.asList(items)); public class VideoClip implements Playable public void play() // render video, play the clip on screen... for (Playable item : items) item.play(); // does complicated stuff related to video formats... while (repeat); public class MPSong implements Playable public interface Playable public void play(); public void play() // audio codec calculations, play the song... // does complicated stuff related to MP format... מערכים פולימורפים Playable[] playables = new Playable[]; playables[0] = new MPSong(); playables[] = new VideoClip(); playables[] = new MP4Song(); // new Playable class Player player = new Player(); // init player... public void play (Playable [] items) do player.play(playables); Collections.shuffle(Arrays.asList(items)); CALC דוגמא: מפרש השפה for (Playable item : items) עבור כל איבר במערך יקרא ה play() המתאים item.play(); while (repeat);

args 0 + השפה CALC ניזכר בשפה CALC משעורי הבית: שפה מבוססת מחסנית בשורה ראשונה: הצהרה על מספר הפרמטרים מספרים: מתווספים לראש המחסנית פקודות: פועלות על המחסנית פרמטרים מוסרים מראש המחסנית ערכי חזרה מתווספים לראש המחסנית מפרש השפה CALC דוגמא: פעולת החיבור מסירה שני ערכים מראש המחסנית ומוסיפה את סכומם לראש המחסנית המפרש קורא תוכנית CALC מזרם הקלט: שובר את זרם הקלט לשורות פועל על כל שורה באמצעות runcommand מה הבעיה עם המתודה runcommand של המפרש? נתבונן במימוש אפשרי runcommand runcommand לכל Command יש מקרה משלה ב.switch קשה לתחזק את הקוד. תווצר מתודה ארוכה שכל המתכנתים מעדכנים. אם לא ראינו פקודה מוכרת, אנו מצפים למספר שיש להכניס למחסנית. public static double runcommand(string cmd) switch (cmd) case "+": push(pop() + pop()); case "": push(pop() pop()); case "*": push(pop() * pop());... default: push(double.parsedouble(cmd)); תבנית חוזרת לכל Command יש שם. כל Command משנה את המחסנית. public static double runcommand(string cmd) switch (cmd) case "+": push(pop() + pop()); case "": push(pop() pop()); case "*": push(pop() * pop());... default: push(double.parsedouble(cmd)); מימוש פקודות מנשק 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 public String getname() return "+"; public void interpret(stack stack) stack.push(stack.pop() + stack.pop()); מימוש מנשקים ציון מפורש שהמתודה היא מימוש למנשק החתימה חייבת להיות זהה לזו המצוינת במנשק public class PlusCommand implements Command public String getname() המחרוזת המתאימה לחיבור return "+"; המימוש נשאר זהה public void interpret(stack stack) stack.push(stack.pop() + stack.pop()); פולימורפיזם כיצד בונים את קוד הלקוח?)runCommand( private static Command[] commands = new PlusCommand(), new MinusCommand(), new MultiplyCommand(),... ; נחזיק רשימה של פקודות אפשריות: ב: runcommand נעבור על הרשימה ונחפש התאמה למחרוזת הקלט אם מצאנו התאמה, נבצע את הפקודה. runcommand החדש public static double runcommand(string cmd) if (cmd == null cmd.isempty() cmd.startswith(";")) for (Command command : commands) if (command.getname().equals(cmd)) command.interpret(stack); push(double.parsedouble(cmd)); פולימורפיזם: בזמן קומפילציה לא ידוע היכן ממומשת המתודות interpret ו.getName רק בזמן ריצה יקבעו המתודות הנכונות, עפ"י הטיפוס הקונקרטי של העצם! פקודות לא טריוויאליות נדגים כיצד להרחיב את מודל החישוב ע"י הוספת משתנים )או זיכרון( לתוכניות.CALC נדגים פקודות הנעזרות בנתונים נוספים שאינם במחסנית למה אנו זקוקים? שטח אחסון )זיכרון( פקודה לשמירה אל הזיכרון הגדרה: על המחסנית ישמרו הכתובת והאיבר לשמירה פקודה לטעינה מהזיכרון הגדרה: על המחסנית יש כתובת, יוחזר הערך המבוקש שמירה לזיכרון public class MemoryCommand implements Command private double[] memory; MemoryCommand(double[] memory) this.memory = memory; שטח הזיכרון והקצאתו אינן באחריות המחלקה public void interpret(stack stack) int address = (int)stack.pop(); memory[address] = stack.pop(); מקבלים כתובת )מספר שלם( וכן ערך מהמחסנית. public String getname() return ""; 4

טעינה מהזיכרון public class MemoryLoadCommand implements Command private double[] memory; MemoryLoadCommand(double[] memory) this.memory = memory; public void interpret(stack stack) int address = (int)stack.pop(); stack.push(memory[address]); public String getname() return "; אתחול המפרש הוספת פקודות הגישה לזיכרון במפרש דורשת גם הקצאת שטח זיכרון מקבלים כתובת )מספר שלם( ומחזירים ערך על גבי המחסנית. private static double[] memory = new double[memory_size]; private static Command[] commands =... new MemoryCommand(memory), new MemoryLoadCommand(memory) ; 6 שימושים מה ניתן לעשות עם זיכרון? מספר דוגמאות חישוב שורשים של משוואה ריבועית חישוב סדרת Fibonacci )עפ"י נוסחא סגורה( חישוב טור גיאומטרי )קוד CALC עבור הדוגמאות הנ"ל זמין באתר הקורס( ;. parameters in memory ;. place (r) on stack ;. place(r^n) on stack 7 ;. parameters in memory ;. place (r) on stack ;. place(r^n) on stack ;. parameters in memory ;. place (r) on stack ;. place(r^n) on stack 5

;. parameters in memory ;. place (r) on stack ;. place(r^n) on stack ;. parameters in memory ;. place (r) on stack ;. place(r^n) on stack ;. parameters in memory ;. place (r) on stack ;. place(r^n) on stack ;. parameters in memory ;. place (r) on stack ;. place(r^n) on stack ;. parameters in memory ;. place (r) on stack ;. place(r^n) on stack / ;. parameters in memory ;. place (r) on stack ;. place(r^n) on stack / 6

שיקולים נוספים ;. parameters in memory ;. place (r) on stack ;. place(r^n) on stack / * דיון בשינויים שהוצגו: קוד המפרש תלוי במערך המכיל את רשימת הפקודות הקוד לאתחול עלול להיות מורכב )כמו בדוגמת הזיכרון( ניתן לכתוב מחלקה ייעודית לבניית המערך צריך לשנות את קוד האתחול כאשר מוסיפים פקודה חדשה האם עדיף על שינוי הפונקציה?runCommand יעילות מול מודולריות סביר להניח שהקוד החדש איטי יותר, אך גם קל יותר לתחזוקה 8 Instance vs. Class (static) Fields Instance fields למה? ייצוג פנימי של המופע Class (static) fields למה? קבועים ערכים המשותפים לכל מופעי המחלקה מתי? מאותחלים עם יצירת האובייקט מתי? מאותחלים לפי הסדר עם טעינת המחלקה חזרה: מופע ומחלקה שדות כמה? אחד לכל מופע כמה? יש רק בכל התוכנית! )0 לפני טעינת המחלקה( 9 נגישים אך ורק ממתודות מופע! )למה? מאיפה? ) 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 7