PowerPoint Presentation

גודל: px
התחל להופיע מהדף:

Download "PowerPoint Presentation"

תמליל

1 שיעור מספר 8: "יוצא מן הכלל" ליאור וולף בית הספר למדעי המחשב

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

3 לא כל החריגים אותו הדבר תנאים אשר עשויים להתקיים במהלך ריצה תקין של תוכנית תקינה (מקרי קצה) נקראים checked exceptions תנאים אלו מיוצגים ע"י המחלקה Exception בעיות חמורות הנחשבות קטלניות,(fatal) וכן מצבים המייצגים שגיאות בתוכנית (bugs) נקראים unchecked exceptions בעיות חמורות מיוצגות ע"י המחלקה Error שגיאות בתוכנית מיוצגות ע"י המחלקה RuntimeException תיעוד המחלקות האוטומטי API) (javadoc מתאר עבור כל מתודה את ה- checked exceptions שהיא עשויה לחולל (ועשוי לתאר גם (unchecked exceptions 3

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

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

6 סיבה טובה ראשונה: חוסר שליטה import java.io.*;... File f = new File("A:\\config.dat"); // f represents the file's name; may or may not exist if (f.exists()) { FileInputStream is = new FileInputStream(f); // now access the file איך נוודא כי הקובץ קיים? גם הניסיון להבטיח שהקובץ קיים, בעזרת השאילתה,exists לפני שפותחים וניגשים אליו שגוי: אולי הוא נמחק בינתיים 6

7 חוסר שליטה בגלל בו זמניות הדוגמה הזו משקפת את העובדה שהעצמים הרלוונטיים לביצוע מוצלח של השירות, כאן קובץ, אינם בשליטה מוחלטת של הלקוח שקורא לשירות גם אם הלקוח מוודא שהקובץ קיים לפני הקריאה לשירות, עדיין יתכן שהוא ימחק בין הוידוא ובין הקריאה לשירות, על ידי תוכנית אחרת, אולי של משתמש אחר ואולי הקובץ ימחק על ידי חוט לה כמה חוטים,thread) תהליכון) של אותה תוכנית, אם יש הבעיה הבסיסית היא חוסר שליטה מוחלטת בעצמים הרלוונטיים; לעוד מישהו יש שליטה עליהם, שליטה מספיקה על מנת להעביר אותם למצב שאינו מאפשר לספק לפעול ולכן הלקוח אינו יכול להבטיח שהספק מסוגל להצליח 7

8 חוסר שליטה בגלל פרוטוקולים שתי תוכניות (אולי על מחשבים שונים) מנהלות דו-שיח בפרוטוקול מובנה, למשל דפדפן ושרת http בכל אחת מהן הקשר מיוצג בעזרת עצם; בדפדפן ג'אווה, למשל, הקשר מיוצג בלקוח על ידי עצם מהמחלקה java.net.httpurlconnection גם אם הלקוח של העצם הזה ימלא את חלקו בחוזה בקפדנות, שהצד השני בקשר (השרת) לא יתנהג בדיוק לפי הפרוטוקול עדיין יתכן קורה במשפחות הכי טובות (שמישהו לא מתנהג לפי הפרוטוקול) העצם מושפע מהעולם החיצון מלאה עליו (מהשרת) ולכן ללקוח של העצם אין שליטה 8

9 סיבה טובה שנייה: קושי לבדוק את התנאי Matrix a = ; Vector b = ; Vector x; // Matrix.solve requires nonsingularity if ( a.nonsingular() ) x = a.solve(b); // solves Ax=b חוזה אלגנטי אבל לא יעיל להחריד: הבדיקה האם מטריצה A הפיכה יקרה בערך כמו פתרון מערכת המשוואות Ax=b עדיף לבקש מהעצם לנסות לפתור את המערכת, בגלל שהמטריצה לא הפיכה ושיודיע לנו אם הוא נכשל 9

10 public class AddArguments { public static void main(string args[]) { int sum = 0; for (String arg : args) { sum += Integer.parseInt(arg); System.out.println("Sum = " + sum); > java AddArguments Sum = 10 "הגורם האנושי" > java AddArguments 1 two Exception in thread "main" java.lang.numberformatexception: For input string: "two" at java.lang.numberformatexception.forinputstring(numberformatexception.java:48) at java.lang.integer.parseint(integer.java:447) at java.lang.integer.parseint(integer.java:497) at AddArguments.main(AddArguments.java:5) 10

11 Integer.parseInt(String) לשרות אין תנאי קדם,(true) ואולם הוא בחר לטפל בקלטים מסוימים, שלא ע"י החזרת ערך, אלא ע"י זריקת חריג זוהי הגדרת תנאי צד condition) (side הלקוח אינו מחויב לקיים את תנאי הצד לפני הקריאה לשרות. תנאי הצד משמש "נתיב מילוט" לספק שימו לב, הדבר שונה מהגדרת תנאי קדם משמעותי, שבו השרות מניח שתנאי הקדם מתקיים, ומתעלם ממקרים שבהם הוא אינו מתקיים 11

12 תנאי קדם והספרייה התקנית בספריות התקניות של שפת Java מקובל להגדיר שרותים ללא תנאי קדם,(true) אך עם תנאי צד משמעותיים אשר מוגדרים להם חריגים מתאימים כבר ראינו כי לספקים סובלניים יש חסרונות, אולם השימוש בחריגים מנסה לפתור את חלקם במהלך השיעור ננסה לעמוד על היתרונות והחסרונות של הגישות השונות 12

13 try-catch public class AddArguments { public static void main(string args[]) { block try { int sum = 0; for ( String arg : args ) { sum += Integer.parseInt(arg); System.out.println("Sum = " + sum); catch (NumberFormatException nfe) { System.err.println("One of the command-line " + "arguments is not an integer."); > java AddArguments2 1 two One of the command-line arguments is not an integer. 13

14 טיפול בחריגים בג'אווה חריג יכול להיזרק ע"י פקודת throw (נראה בהמשך). קטע קוד אשר עלול לזרוק חריג יעטף ע"י הלקוח בבלוק try פקודת throw גורמת להפסקת הביצוע הרגיל, והמשערך מחפש exception handler (בלוק (catch שיתפוס את החריג. אם בלוק ה catch העוטף מכיל טיפול בחריג זה קטע הטיפול מתבצע, ולאחריו עוברים לבצע את הקוד שאחרי הבלוק. אם אין טיפול בחריג הזה בבלוק הנוכחי המשערך מחפש handler בבלוק העוטף, או בקוד שקרא לשרות הנוכחי. החריג מועבר במעלה מחסנית הקריאות. אם גם ב main אין טיפול, תודפס הודעה וביצוע התכנית יסתיים. 14

15 גרעיניות public class AddArguments3 { public static void main(string args[]) { int sum = 0; for ( String arg : args ) { try { sum += Integer.parseInt(arg); catch (NumberFormatException nfe) { System.err.println("[" + arg + "] is not an integer" + " and will not be included in the sum."); System.out.println("Sum = " + sum); > java AddArguments3 1 two [two] is not an integer and will not be included in the sum. [3.0] is not an integer and will not be included in the sum. Sum = 5 15

16 ריבוי בלוקי catch לבלוק try אחד עשויים להיות כמה בלוקים של catch השייכים לו, עבור סוגים שונים של שגיאות שעשויות לקרות: try { // code that might throw one or more exceptions catch (MyException e) { // code to execute if a MyException exception is thrown catch (MyOtherException e) { // code to execute if a MyOtherException exception is thrown catch (Exception e) { // code to execute if any other exception is thrown 16

17 מחויבויותיו של ספק שנכשל שירות שמסתיים בהצלחה חייב לקיים את תנאי האחר ואת המשתמר של המחלקה תנאי האחר דרוש ללקוח קיום המשתמר מאפשר לשירותים אחרים שהעצם יספק בעתיד לפעול מה נדרש משירות שנכשל? ראינו כבר שהוא חייב להודיע ללקוח על הכישלון, כדי שהלקוח לא יניח שתנאי האחר מתקיים; בדרך כלל, גוש ה- try בלקוח מפסיק לפעול וגוש ה- catch מופעל ברור שהשירות שנכשל לא חייב לקיים את תנאי האחר האם השירות שנכשל צריך לשחזר את המשתמר? 17

18 כמובן שהשירות צריך לשחזר את המשתמר מכיוון שהעצם ממשיך להתקיים, יקראו בעתיד ויתכן ששירותים אחרים שלו שירותים אחרים צריכים למצוא את העצם במצב שמאפשר להם לפעול ברור שעדיף להחזיר את העצם למצב שבו שירותים אחרים יוכלו לא רק לפעול, אלא גם להצליח אבל אולי העצם במצב גרוע כל כך שכל שירות שיופעל בעתיד יכשל גם הוא, אבל השירותים העתידיים צריכים לפחות לפעול ולדווח ללקוחות שלהם על כישלון 18

19 בלוק finally קטע קוד המופיע בבלוק finally יתבצע בכל מקרה (בין אם קטע הקוד בבלוק ה try הצליח או נכשל) try { startfaucet(); waterlawn(); catch (BrokenPipeException e) { logproblem(e); finally { stopfaucet(); 19

20 הוכחת נכונות של ספק הלקוח צריך לקיים תנאי קדם, מועיל אבל אולי לא מספיק השירותים השונים של העצם צריכים לדאוג לקיום המשתמר, בין אם הם הצליחו ובין אם לא אם מתקיימים תנאי הקדם והמשתמר, שירות חייב להסתיים אם בנוסף מתקיים תנאי צד מסוים, השירות מצליח אם תנאי הצד לא מתקיים, השירות נכשל ומודיע על חריג (throws an exception) precondition & invariant & side-condition => invariant & postcondition precondition & invariant & not side-condition => invariant & exception is thrown 20

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

22 מה עושה לקוח שמקבל חריג? int compareto(comparable other) { IPoint other_point; other_point = (IPoint) other; if (this.x() > other_point.x()) המרת טיפוסים עלולה להודיע על חריג אם העצם שמתאים לניסיון ההמרה (כאן (IPoint (other) אינו מטיפוס אם הקוד לא מטפל בחריג, כמו כאן (לא התייחסנו כלל לאפשרות של חריג), הקוד מפסיק לרוץ ומודיע למי שקרא לו על החריג זה הגיוני: הלקוח הניח שיקבל שירות מסוים, השירות נכשל, הלקוח לא יכול לקיים את תנאי האחר שלו עצמו 22

23 שיפור קטן int compareto(comparable other) { IPoint other_point; try { other_point = (IPoint)other; catch (java.lang.classcastexception ce) { throw new IncomparableException(); if (this.x() > other_point.x()) הקוד יכול לתרגם את ההודעה כך שתהיה מובנת ללקוח שלו: מי שקרא ל- compareto לא ביקש להמיר טיפוסים אלא להשוות נקודות 23

24 היחלצות מצרה Matrix a = ; Vector b = ; Vector x; try { x = a.solve(b); // solves Ax=b, fast algorithm catch (CloseToSingularException ctse) { x = a.accuratesolve(b); // try harder לפעמים הקוד יכול למ ס ך חריג, יותר, לביצוע השירות למשל על ידי שימוש בדרך אחרת, אולי יקרה מה קורה אם המטריצה בדיוק סינגולרית והניסיון השני נכשל? 24

25 עוד דוגמה להיחלצות מצרה FileInputStream is; try { is = new FileInputStream("A:\\config.dat"); catch (FileNotFoundException fnfe) { is = new FileInputStream("A:\\config"); /* access the file (but only if the input stream was created) */ אולי אפשר לנסות שם קובץ אחר, לבקש מהמשתמש להכניס את הדיסקט או התקליטור המתאימים, וכדומה. 25

26 טיפוסים חריגים בג'אווה, ההודעה על חריג מתבצעת באמצעות עצם רגיל שמייצג את החריג, את הכישלון של שירות כלשהו מכיוון שהחריג הוא עצם רגיל, בונים אותו בעזרת new הנוהג בג'אווה הוא לציין את הסיבה שגרמה לכישלון על ידי טיפוס חריג כמו java.io.filenotfoundexception ג'אווה מגדירה היררכיה של טיפוסים (מחלקות) עבור חריגים עפ"י הסיבה. המחלקה הכללית ביותר היא,Throwable אך החלוקה העיקרית היא לשלוש משפחות: Error RuntimeException RuntimeException שאינו Exception 26

27 חריגים בחבילה java.lang :Error חריגים שמייצגים בעיה שלא ניתן בדרך כלל להתאושש ממנה: בדרך כלל בעיה בסביבת הריצה: מחסור בזיכרון, קבצי class חסרים או לא תקינים, וכדומה; התגובה הנכונה בדרך כלל היא להפסיק את ריצת התוכנית ולתקן את הסביבה. אולם, ניתן להגדיר חריגים מטיפוס Error כדי לבטא שבירה של הנחה לוגית (לדוגמא: (AssertionError :Exception מתחלקים לשתי קבוצות: RuntimeException הוא חריג שיכול לקרות כמעט בכל שירות: גישה למצביע,null כשלון בהמרה, חריגה מתחום מערך וכו' לא אמור להופיע בתוכנית תקינה Exception שאינו RuntimeException מתרחש במצבים מוגדרים היטב, שניתן לתכנן מראש לקראתם. 27

28 היררכיית שגיאות וחריגים (חלקית) Checked exceptions Unchecked exceptions Unchecked exceptions 28

29 checked exceptions )רשימה חלקית( 29

30 הצהירי או טפלי (checked) קוד המכיל קריאה למתודה שעשויה לחולל צריך לנקוט אחת משתי הגישות: (לזרוק) חריג נבדק או הכרזה בו טיפול על החריג הפוטנציאלי טיפול ראינו, נעטוף את הבלוק הבעייתי בבלוק try-catch-finally הכרזה נשתמש במילה השמורה throws כדי לציין את המתודה העוטפת כולה כ"בעייתית": void goo() throws IOException {... int foo() throws IOException, MyException {... 30

31 הצהירי או טפלי השימוש במתודות הזורקות חריגים מידבק (רקורסיבית) אי הכרזה או טיפול גורר שגיאת קומפילציה void f(int x) throws Exception {... void g() { Declaration f(1); // error Compilation Error: programmer must either catch the exception, or declare that void g() throws Exception 31

32 unchecked exceptions )רשימה חלקית( 32

33 unchecked exceptions על חריגים או שגיאות שהם unchecked להצהיר בחתימת המתודה אין חובה אבל מומלץ להצהיר עליהם בחריגים או בשגיאות שהם unchecked לטפל בבלוק try-catch-finally אין חובה ניתן לחשוב על טיפול בררני מדוע? 33

34 שלא חייבים למה יש חריגים להצהיר עליהם? הדרישה להצהיר על חריג מאפשר לקומפיילר לוודא שמי שקורא לשירות מודע לאפשרות של כישלון. בפרט, זה מונע אפשרות שחריג "יעבור דרך" שירות שלא מתייחס לאפשרות הזו ולכן לא משחזר את המשתמר אם זה מועיל, למה יש חריגים שלא חייבים להכריז עליהם? מכיוון שחריגים מסוג RuntimeException או Error מוכרזים בגלל פגם בתוכנית או בגלל בעיה לא צפויה במחשב או בסביבת התוכנה שמריצה את התוכנית או באג בתוכנית שהיה אמור להתגלות בתהליך הפיתוח חריגים כאלה אינם צפויים ויכולים לקרות בכל שירות בדרך כלל הם גורמים לעצירת התוכנית וכאשר זה המצב, אין חשיבות לשחזור המשתמר דיון: איך נערך ל: OutOfMemoryError ClassCastException FileNotFoundException 34

35 הגדרת חריגי משתמש מנגנון זריקת ותפיסת החריגים הינו חלק משפת התכנות, עצמם הם עצמים "רגילים" אולם החריגים פרט למספר קטן של חריגים שנזרקים ע"י ה JVM כתוצאה מבדיקות שנעשו בקוד "רגיל" רוב החריגים נזרקים אנו כמתכנתים יכולים (ולפעמים נדרשים) להגדיר חריגים חדשים ע"י הגדרת מחלקה חדשה היורשת מהמחלקה Throwable או אחת מצאצאיה בחירת ההורה תלויה בסוג השגיאה שברצוננו להגדיר ובמידה שבה אנו מעוניינים להגביל את לקוחותינו RuntimeException או Error מאפשר ללקוחות מסוימים להתעלם מהאפשרות לחריג Exception מחייב את כל הלקוחות להצהיר או לטפל 35

36 חריג הוא עצם class IncomparableException extends Exception { class OverdraftException extends RuntimeException { הוא צריך בנאי(ם) אבל למה עצם? ואפשר להוסיף לו שדות מופע ושירותים באמת לא ברור, הרי הטיפוס של החריג מספיק לסיווגו סיבה אפשרית 1: במקרה של חריג בגלל פגם בתוכנית או במערכת המחשב, החזרת מידע שיאפשר לתקן את הפגם סיבה אפשרית 2: במקרה של חריג שצריך להודיע עליו למשתמש ("הפעולה נכשלה בגלל..."), ההודעה למשתמש סיבה אפשרית 3: מידע שיאפשר להתאושש (נדיר) סיבה לא טובה: בג'אווה כל דבר הוא עצם 36

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

38 הדפסת מחסנית הקריאות אחת המתודות השימושיות של המחלקה Throwable היא המתודה printstacktrace המדפיסה את שרשרת הקריאות שהובילה לחריג זהו גם מימוש ברירת המחדל של ה- JVM לחריג שלא טופל public static void main(string[] args){ try { riskymethod(); catch(exception ex){ ex.printstacktrace(); System.out.println( Continuing main ); 38

39 זריקת חריג ע"י הספק במחלקה BankAccount שראינו בתרגול, כתבנו את המתודה withdraw אשר תנאי הקדם שלה היה שסכום המשיכה תקין ניתן לחשוב על מתודה withdraw ללא תנאי קדם שתזרוק חריג במקרה של נסיון למשיכת יתר class OverdraftException extends RuntimeException { public class BankAccount { //... public void withdraw(double amount) throws OverdraftException { if (amount > balance) throw new OverdraftException(); balance -= amount; 39

40 שימוש אחר לחריגים בשפות שבהן הודעה על חריג ותפיסת חריג זולות, ניתן להשתמש במנגנון החריגים על מנת לממש שירות שיכול להחזיר ערך מאחד מתוך מספר טיפוסים public void polymethod() throws resulttype1, resulttype2 { // do something if ( ) throw new resulttype1( ); else throw new resulttype2( ); לא רצוי בג'אווה בגלל שמנגנון החריגים יקר מאוד חריגים לא נועדו לשמש כעוד מנגנון בקרה 40

41 חריגים גרועים מפתחים משתמשים בחריגים לעוד מטרות, פחות מוצדקות השימוש הגרוע ביותר הוא על מנת לחסוך שאילתה זולה דוגמה: ספריית הקלט/פלט של ג'אווה תומכת במספר קידודים (encodings) עבור קבצי טקסט, אבל לגרסאות שונות של הספרייה מותר לתמוך במבחר קידודים שונה אין דרך לשאול האם קידוד נתמך או לא אבל אם מנסים להשתמש בקידוד לא נתמך, השירות מודיע על חריג java.io.unsupportedencodingexception עדיף היה לברר האם קידוד נתמך בעזרת שאילתה שאלה: האם EOFException עדיפה שאילתה? מוצדק? (סוף קובץ). אולי 41

42 תנאי צד או תנאי קדם? כאשר הפכנו את תנאי הקדם של withdraw הצורה שבה משתמשים בשרות במקום שלקוח טיפוסי יראה כך: להיות תנאי צד, השפענו על if (acc.balance() >= amount) acc.withdraw(amount); else // tell the user that she can't withdraw השירות withdraw בודק את התנאי בעצמו ומודיע על חריג אם הפעולה אסורה, ואז לקוח טיפוסי יראה כך: try { acc.withdraw(amount); catch (OverdraftException e) { // tell the user that she can't withdraw 42

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

44 אולי גם שאילתה וגם חריג? אפשרי, אבל לא יעיל ומעיק גם כאשר הלקוח יודע בוודאות שהספק יכול לבצע את השירות (בדק את היתרה בעצמו), הוא חייב לעטוף את הקריאה לספק בפסוק try-catch ניתן להימנע מכך ע"י הגדרת החריג כ RuntimeException בנוסף לסרבול, הספק תמיד בודק תקינות, אין בכך צורך גם כאשר בוודאות שימוש בשאילתה מסורבל בערך כמו חריג, מאפשר להימנע מהבדיקה כשלא צריך אותה, ומונע את הצורך לנסות לבצע את הפעולה על מנת לדעת אם תצליח 44

45 עצם סטאטוס במקום חריג אפשר להחליף חריג בעצם סטאטוס שדרכו הספק ידווח על כישלון, למשל Matrix a = ; Vector b = ; Vector x; SolveStatus s = new SolveStatus(); x = a.solve(b, s); if (s.succeeded()) { else if (s.closetosingular ()) { פחות יעיל במקרה של הצלחה; יותר יעיל במקרה כשלון 45

46 פקודה ושתי שאילתות במקום חריג אפשר להחליף חריג בשתי שאילתות, לבדוק אם הפעולה הצליחה, ואם כן לקבל את התוצאה, למשל Matrix a = ; Vector b = ; Vector x; a.try_to_solve(b); if (a.succeeded()) x = a.solution() else... 46

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

48 ירושה וחריגים בג'אווה פסוק throws (ליתר דיוק להעדרו) הוא חלק מחוזה. שרות שמממש שרות מופשט (ממחלקה מופשטת שירש, או ממנשק שהוא מממש) או שדורס שרות שירש, רשאי לכלול פסוק throws עבור חריג נבדק, E רק אם השרות אותו הוא יורש כולל פסוק כזה עבור E או עבור מחלקה כללית יותר מ E. אחרת הקומפיילר יוציא הודעת שגיאה. אבל מותר לשרות היורש לא לכלול פסוק throws עבור חריג נבדק E שהיה פסוק כזה עבורו בשרות המוריש. במקרה זה החוזה במחלקה היורשת חזק יותר: היא מבטיחה שהשרות לא יזרוק את, E למרות שהחוזה שירשה מרשה זאת כשמתכננים מנשק יש לכלול פסוקי throws לפי הצורך 48

49 כלל אצבע למתודה דורסת )או מממשת( מותר לזרוק: אף חריג חריגים שזרקה המתודה הנדרסת חריגים היורשים מחריגים שזרקה המתודה הנדרסת למתודה דורסת )או מממשת( אסור לזרוק: חריגים שלא זרקה המתודה הנדרסת חריגים המהווים מחלקות בסיס לחריגים שזרקה המתודה הנדרסת 49

50 חריגים וירושה - דוגמא public class TestA { public void methoda() throws IOException { // do some file manipulation public class TestB1 extends TestA { public void methoda() throws EOFException { // do some file manipulation // OK public class TestB2 extends TestA { public void methoda() throws Exception { // do some file manipulation // WRONG 50

51 ריבוי בלוקי catch וירושה אם יש כמה פסוקי catch מתאימים יתבצע הבלוק המתאים הראשון (לא בהכרח המתאים ביותר!) void readdata() throws SQLException, IOException { void test(){ try { readdata(); catch(sqlexception e){ catch(ioexception e) { Excuted on SQLException Excuted on IOException 51

52 ריבוי בלוקי catch וירושה void readdata() throws SQLException, EOFException { void test(){ try { readdata(); Thread.sleep(100); Throws InterruptedException catch(sqlexception e){ catch(ioexception e) { catch(throwable e) { Excuted on SQLException Reminder: EOFException extends IOException Excuted on EOFException Executed on InterruptedException, NullPointerException 52

53 טענות (assertions) assert <boolean_expression> ; assert <boolean_expression> : <detail_expression> ; תחביר: אם הביטוי boolean_expression משתערך ל false התוכנית זורקת AssertionError הביטוי detail_expression הופך למחרוזת לתיאור מהות השגיאה 53

54 דוגמאות שימוש טענות מבטאות הנחות שיש למתכנת על הלוגיקה הפנימית בקטע קוד מסוים לדוגמא: שמורה פנימית שמורת מבני בקרה invariant) (control flow שמורת מחלקה ותנאי בתר 54

55 שמורה פנימית if (x > 0) { // do this else { // do that אבל אם ידוע ש אינו יכול להיות שלילי, עדיף: if (x > 0) { // do this else { assert ( x == 0 ); // do that, unless x is negative x 55

56 שמורת מבני בקרה switch (suit) { case Suit.CLUBS: //... break; case Suit.DIAMONDS: //... break; case Suit.HEARTS: //... break; case Suit.SPADES: //... break; default: assert false : "Unknown playing card suit"; break; 56

57 שימוש ב assert לחוזים ניתן לבצע מעקב אחרי חוזים ע"י כתיבת שרות מיוצא כך: public... method(... ) { assert(pre1) : "pre1 in words"; assert(pre2) : "pre2 in words"; assert(inv1) : "inv1 in words";... // the body of method assert(post1) : "post1 in words"; assert(post2) : "post2 in words"; assert(inv1) : "inv1 in words"; 57

58 שימוש ב assert לחוזים )המשך(.. pre2, pre1, הם פסוקים שונים של תנאי הקדם... post2, post1, הם פסוקים שונים של תנאי האחר... inv2, inv1, הם פסוקים שונים של המשתמר. זה אינו פתרון מספק: המתכנת צריך לטפל בעצמו ב $prev, לכתוב את המשתמר פעמיים בכל שרות,... תנאי קדם של בנאי צריך להיבדק לפני הכניסה לבנאי זה אינו פתרון אידיאלי. עדיף כלי שנועד לחוזים. אבל אם אין ברשותנו כלי, ניתן להשתמש חלקית במשפטי assert 58

59 כלים לתמיכה בחוזים כלי שמתרגם את החוזה שכתבנו בתוך הערות ה doc assert (או משפטים דומים). ויוצר עבורנו משפטי הכלי צריך גם לקחת חוזה ממנשק או מחלקה ממנה ירשנו ולהוסיף את החלק המחזק/מחליש (בשיעור הבא) לחליפין, הכלי יבדוק שהחוזה במחלקה היורשת מחזק את תנאי הבתר ומחליש את תנאי הקדם (בשיעור הבא) רצוי שהכלי יציג את החוזה ויבחין בעצמו בין החלק המיוצא של החוזה לחלק החסוי. הכלים שידועים לנו, חלקם חינם וחלקם מסחריים הם: JMSAssert, icontract, jcontractor, Handshake, JML, Jass, JPP, Jose 59

60 דוגמא נאיבית כלי אכיפה נאיבי יבצע גזירה (parsing) של משפטי החוזה מתוך הטענות, והדבקה שלהם (instrumentation) במקום המתאים לדוגמא, הקוד הבא: getvalue() == newvalue, value is updated */ public void setvalue(int newvalue) { val = newvalue; יהפוך ל: public void setvalue(int newvalue) { val = newvalue; assert(getvalue() == newvalue) : value is updated ; 60

61 טענות וביצועים כברירת מחדל אכיפת הטענות אינה מאופשרת יש לאפשר זאת במפורש: > java -enableassertions MyProgram > java -ea MyProgram או ניתן לשלוט באכיפת טענות עבור מחלקה מסויימת, חבילה או היררכיית חבילות. הפרטים המלאים: 61

62 ירושה וחריגים קבלן משנה (מחלקה יורשת ]מממשת[, הדורסת ]מממשת[ שרות) אינו יכול לזרוק מאחורי הקלעים חריג שלא הוגדר בשרות הנדרס ]או במנשק[ למתודה הדורסת ]המממשת[ מותר להקל על הלקוח ולזרוק פחות חריגים מהמתודה במחלקת הבסיס שלה ]במנשק[ 62

63 שאלה מתוך מבחן public class A { public float foo(float a, float b) throws IOException{ public class B extends A {... Which of the following methods can be defined in B: 1. float foo(float a, float b){ 2. public int foo(int a, int b) throws Exception{ 3. public float foo(float a, float b) throws Exception{ 4. public float foo(float p, float q){ 63

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

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

מהוא לתכנות ב- JAVA מעבדה 3 מבוא לתכנות ב- JAVA מעבדה 3 נושאי התרגול לולאות ניפוי שגיאות לולאות - הקדמה כיצד הייתם כותבים תוכנית שתדפיס את המספרים השלמים בין 1 ל- 100 בעזרת הכלים שלמדתם עד עתה? חייבת להיות דרך אחרת מאשר לכתוב 100

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה 1 תרגול 1: סביבת העבודה ומבוא ל- Java אלכסיי זגלסקי ויעל אמסטרדמר 1 בירוקרטיה אלכסיי זגלסקי שעת קבלה: שני 13:00-14:00, בתיאום מראש משרד: בניין הנדסת תוכנה, חדר 209 יעל אמסטרדמר שעת קבלה: חמישי 15:00-16:00,

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה 1 תרגול 1: סביבת העבודה ומבוא ל- Java 1 מנהלות אתר הקורס: http://courses.cs.tau.ac.il/software1/1516b/ מתרגלים: ברית יונגמן )שעת קבלה: שלישי ב- 8:00 בתיאום מראש( לנה דנקין )שעת קבלה: שלישי ב- 17:00,

קרא עוד

Slide 1

Slide 1 בית הספר למדעי המחשב אוניברסיטת תל אביב תוכנה 1- תרגול הורשה מחלקות אבסטרקטיות חריגים 2 ירושה ממחלקות קיימות ראינו בהרצאה שתי דרכים לשימוש חוזר בקוד של מחלקה קיימת: הכלה + האצלה הכלה )aggregation( במחלקה

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

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

מבוא למדעי המחשב מבוא למדעי המחשב המחלקה Object תוכן עניינים Object הורשה והמחלקה ערך שם טיפוס DynamicIntArray da data size incrementsize DynamicArray תזכורת - Object[] data; int size; int incrementsize; DynamicArray זה

קרא עוד

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

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

קרא עוד

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

מבוא למדעי המחשב מבוא למדעי המחשב מחרוזות, חתימה של פונקציה ומעטפות תוכן עניינים טיפוסים מורכבים טיפוסים מורכבים ערך שם טיפוס 12 m int undef. x boolean true y boolean arr int[] כאלה שעשויים להכיל יותר מערך פרימיטיבי אחד

קרא עוד

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

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

קרא עוד

PowerPoint Presentation

PowerPoint Presentation 1 תוכנה 1 תרגול 1: מנהלות, סביבת העבודה ומבוא ל- Java 1 2 מנהלות I מתרגלים: יעל אמסטרדמר )שעת קבלה: חמישי ב- 12, בתיאום מראש( דביר נתנאלי )שעת קבלה: רביעי ב- 17, בתיאום מראש( http://courses.cs.tau.ac.il/software1/1415a

קרא עוד

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

מבוא לתכנות ב- JAVA  תרגול 7 מבוא לתכנות ב- JAVA תרגול 8 תזכורת - מבנה של פונקציה רקורסיבית.2 פונקציה רקורסיבית מורכבת משני חלקים עיקריים 1. תנאי עצירה: מקרה/מקרים פשוטים בהם התוצאה לא מצריכה קריאה רקורסיבית לחישוב צעד רקורסיבי: קריאה

קרא עוד

Slide 1

Slide 1 מבוא למדעי המחשב משפחות של מחלקות ומחלקות מופשטות תזכורת בשיעור הקודם ראינו מחלקה של Student והרחבה שלה למחלקה של Milgae למעשה Student יכול לעמוד בראש היררכיה שלמה של מחלקות שונות של סטודנטים למשל, בנוסף

קרא עוד

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

תשעדד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..( תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(http://mdle.tau.ac.il/) בלבד הגשת התרגיל תעשה במערכת ה- mdle aviv

קרא עוד

Slide 1

Slide 1 1 אובייקטים היום בתרגול: 2.)objects מחלקות )classes( ואובייקטים )מופעים, )fields( שדות המחלקה שיטות הכמסה )methods של מחלקה. ( class מחלקה - עד עכשיו השתמשנו בעיקר בטיפוסים מובנים ופונקציות המבצעות חישובים

קרא עוד

Microsoft PowerPoint - 10_threads.ppt

Microsoft PowerPoint - 10_threads.ppt נוש אים מתקדמים ב Java תכ נות מ ר ובה חו ט י ם אוהד ברזילי אוניברסיטת תל אביב מק בי ל יות ריבוי מעבדים processors) (multi זמן עיבוד slicing) (time ל עו מת חלוק ת רמת התהליך (multithreading) ההפעלה processes)

קרא עוד

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

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

קרא עוד

תרגול 1

תרגול 1 מבוא למדעי המחשב 2019 תרגול 5 מחרוזות, חתימות ורקורסיה מחרוזות רצף של תווים רקורסיה קריאה של מתודה לעצמה באופן ישיר או עקיף ראינו בהרצאה מחרוזות: תווים, חתימות: העמסה- String,הצהרה, overloading אתחול רקורסיה:

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תכנות מתקדם בשפת Java אוניברסיטת תל אביב 1 תוכנה 1 תרגול 3: עבודה עם מחרוזות )Strings( מתודות )Methods( 1 תכנות מתקדם בשפת Java אוניברסיטת תל אביב 2 מחרוזות )STRINGS( 3 מחרוזות String s = Hello ; מחרוזות

קרא עוד

Microsoft Word - Ass1Bgu2019b_java docx

Microsoft Word - Ass1Bgu2019b_java docx ת ר ג י ל 1 ב ק ו ר ס מ ב ו א לתכנות 202.1.9031 JAVA סמסטר ב, ת נ א י ם ו ל ו ל א ו ת תאריך אחרון להגשה בציון מלא : 02.04.19 עד שעה : 23:55, כ ל יום איחור ל א מ א ו ש ר א ו ח ל ק ממנו מודריד 10 נקודות

קרא עוד

Slide 1

Slide 1 מבוא למדעי המחשב תירגול 4: משתנים בוליאניים ופונקציות מבוא למדעי המחשב מ' - תירגול 4 1 משתנים בוליאניים מבוא למדעי המחשב מ' - תירגול 4 2 ערכי אמת מבחינים בין שני ערכי אמת: true ו- false לכל מספר שלם ניתן

קרא עוד

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

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

קרא עוד

Slide 1

Slide 1 מבוא לתכנות ב- JAVA תרגול 5 מה בתרגול מחרוזות מערכים דו ממדיים מחרוזות (Strings) מחרוזת היא רצף של תווים. immutable על מנת ליצור ולטפל במחרוזות נשתמש במחלקה String למחלקה String מתודות שונות שמאפשרות פעולות

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה 1 אוניברסיטת תל אביב INTERFACES תרגול מס' 7: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה מנשקים )Interfaces( 2 מנשקים מנשק )interface( הוא מבנה תחבירי ב- Java המאפשר לחסוך בקוד לקוח. מנשק מכיל כותרות

קרא עוד

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

יום שלישי, 14 ליולי 2015 מבחן סוף סמסטר - תכנות מונחה עצמים )236703( סמסטר אביב 2015, מועד א' מרצה: ערן גלעד מתרגלים: נורית מושקוביץ', הלאל עאסי, אליר יום שלישי, 14 ליולי 2015 מבחן סוף סמסטר - תכנות מונחה עצמים )236703( סמסטר, מועד א' מרצה: ערן גלעד מתרגלים: נורית מושקוביץ', הלאל עאסי, אלירן וייס הנחיות: 1. במבחן 5 שאלות שוות משקל. עליכם לענות על כל

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה 1 3 תרגול מס' מתודות ותיכון לפי חוזים חוזה בין ספק ללקוח חוזה בין ספק ללקוח מגדיר עבור כל שרות: תנאי ללקוח - "תנאי קדם" precondition - - תנאי לספק "תנאי אחר".postcondition לקוח ספק 2 תנאי קדם )preconditions(

קרא עוד

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

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

קרא עוד

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

סדנת תכנות ב   C/C++ פקולטה: מדעי הטבע מחלקה: מדעי המחשב שם הקורס: מבוא למחשבים ושפת C קוד הקורס: 2-7028510 תאריך בחינה: 15.2.2017 משך הבחינה: שעתיים שם המרצה: ד"ר אופיר פלא חומר עזר: פתוח שימוש במחשבון: לא הוראות כלליות:

קרא עוד

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

מבוא למדעי המחשב מבוא למדעי המחשב תכנות מונחה אובייקטים תוכן עניינים טיפוסי נתונים מורכבים המחלקה String תזכורת לשימוש שעשינו במחלקה String str = new String( Hello ); s.o.p(str.tostring()); s.o.p(str.charat(4)); s.o.p(str.equals(

קרא עוד

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

ייבוא וייצוא של קבצי אקסל וטקסט ייבוא וייצוא של קבצי אקסל וטקסט (Importing & Exporting MS Excel Files and Text) ייבוא (Import) הפיכת קובץ טקסט, Excel מבסיס נתונים אחר. או סוגים אחרים, לטבלת,Access או העתקת טבלת Access בתחילת התהליך יש

קרא עוד

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

תורת הקומפילציה תורת הקומפילציה תרגיל בית 2 הוראות לתרגיל 2 בשפת MINI-PASCAL הפרוייקט המצורף הינו קוד שלד של מהדר לשפת mini-pascal עליכם לממש בסביבת (Eclipse (Java את הפונקציות המתאימות לפי החומר שנלמד בהרצאה ע"מ שהמהדר

קרא עוד

PowerPoint Presentation

PowerPoint Presentation == vs equals תוכנה תרגול 7 :מנשקים, פולימורפיזם ועוד Point p = new Point(,) Point p = new Point(,) p == p p.equals(p) מתי נכון להשתמש בכל אחד מהם? שימו לב, במחלקה שכתבתם בעצמכם יש לכתוב מתודת equals על

קרא עוד

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

תוכנה 1 בשפת Java  שיעור מספר 3: חתיכת טיפוס שיעור מספר 3: מודל הזיכרון ושירותים שחר מעוז בית הספר למדעי המחשב על סדר היום מודל הזיכרון של Java Heap and Stack העברת ארגומנטים מנגנוני שפת Java שרותים הפשטה חוזה של שרותים 2 העברת ארגומנטים כאשר מתבצעת

קרא עוד

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

Microsoft PowerPoint - T-10.ppt [Compatibility Mode] מבוא למחשב בשפת Matlab לולאות בלוקי try-catch :10 תרגול מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקשטיין, איתן אביאור, סאהר אסמיר וטל כהן עבור הקורס "מבוא למדעי המחשב" נכתב על-ידי רמי כהן,אולג רוכלנקו,

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה תרגול 7 :מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה == vs equals Point p = new Point(,2) Point p2 = new Point(,2) p == p2 p.equals(p2) מתי נכון להשתמש בכל אחד מהם? שימו לב, במחלקה שכתבתם בעצמכם

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תרגול מס' 3: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש שלבי הפיתוח - חזרה קצרה ישנם שני שלבים נפרדים: שלב פיתוח התוכנית בשלב זה אנו משתמשים במהדר )קומפיילר( כדי להמיר קבצי.java )קבצי

קרא עוד

PowerPoint Presentation

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

קרא עוד

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

מבוא למדעי המחשב מבוא למדעי המחשב שימוש במחסנית - מחשבון תוכן עניינים prefix כתיבת ביטויים ב-,infix ו- postfix postfix prefix,infix ביטויים ב- כתיבת ו- infix נוסח כתיבה ב- (operator אנו רגילים לכתוב ביטויים חשבוניים כדוגמת

קרא עוד

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

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

קרא עוד

Microsoft PowerPoint - rec8.ppt

Microsoft PowerPoint - rec8.ppt על טיפ ו סי ם וירו שה תרגול אוהד ברזילי אונ יברסיטת תל אביב תנ אי ק ד ם מופ שט תנאי קדם מופשט ראינו שבקבלנות משנה החוזה של המחלקה היורשת חייב לקיים 3 עקרונות: תנאי קדם יכולים להיות חלשים תנאי בתר יכולים

קרא עוד

Slide 1

Slide 1 מבוא למדעי המחשב תירגול 7: פונקציות 1 מה היה שבוע שעבר? לולאות מערכים מערכים דו-ממדיים 2 תוכנייה )call by value( פונקציות העברת פרמטרים ע"י ערך תחום הגדרה של משתנה מחסנית הקריאות 3 פונקציות 4 הגדרה של

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה 1 Generics תרגול - 1 תכנות גנרי תמיכה בתכנות גנרי נוספה בגרסה 5 ניתן להגדיר מחלקות ושירותים גנריים מונע שכפול קוד )מוכללים( ניתן לכתוב תוכניות שאינן תלויות בטיפוסי המשתנים מאפשר בטיחות טיפוסים מנגנון

קרא עוד

Slide 1

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

קרא עוד

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

תוכנה 1 1 אביב תשעג תרגיל מספר 5 מערכים, מחרוזות, עיבוד טקסט ומבני בקרה הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגש תוכנה 1 1 אביב תשע"ג תרגיל מספר 5 מערכים, מחרוזות, עיבוד טקסט ומבני בקרה הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תיעשה במערכת ה- mdle בלבד.(http://mdle.tau.ac.il/)

קרא עוד

Microsoft PowerPoint - rec1.ppt

Microsoft PowerPoint - rec1.ppt תכנות מונחה עצמים בשפת ++C תר גול מ ספר 1 אוהד ב ר זילי אוניברסיטת תל א ביב חדש חדיש ומחודש תוספות של + +C לשפ ת C 1 #include Hello World using namespace std; int main() cout

קרא עוד

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

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

קרא עוד

Microsoft PowerPoint - rec3.ppt

Microsoft PowerPoint - rec3.ppt תכנו ת מונח ה עצ מים משתני מחלקה, עצמים מוכלים ועצמים מוצבעים א וה ד ברז יל י א ונ יברס י ט ת תל אביב משתנ י מח ל קה Static Members משתני מחלקה members) (static משתנים סטטיים מוגדרי ם בתוך מח לקה ואולם

קרא עוד

Overview of new Office 365 plans for SMBs

Overview of new Office 365 plans for SMBs מעבר בין חבילות Online מעבר בין חבילות ב- Open Online to Open Current Plan Upgrade Options Current Plan Upgrade Options Business Essentials Business Premium Enterprise E1 Enterprise E3/E4 Enterprise E1

קרא עוד

מקביליות

מקביליות תכונות בטיחות Safety Properties גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 תזכורת: תכונות זמן ליניארי Linear Time Properties תכונות זמן-ליניארי מתארות קבוצת עקבות שהמערכת צריכה לייצר מכוונים ללוגיקה

קרא עוד

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

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

קרא עוד

Microsoft PowerPoint - lec9.ppt

Microsoft PowerPoint - lec9.ppt ת כנ ות מונ ח ה עצמי ם בשפת + +C ירוש ה אוהד ברזילי אונ יברסיטת תל אביב ירוש ה המצגת מכילה קטעים מתוך מצגת של פרופ' עמירם יהודאי ע"פ הספר: Object-Oriented Software Construction, 2nd edition, by Bertrand

קרא עוד

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

תוכן העניינים הוצאת חושבים קדימה הילה קדמן חלק ב יעוץ מקצועי: חיים אברבוך מותאם לתכנית הלימודים החדשה בבתי הספר התיכוניים מהדורה חמישית הוצאת חושבים קדימה ת.ד. 1293 רעות 71908 www.kadman.net הילה קדמן 0522 525527 kadman11@gmail.com

קרא עוד

PowerPoint Presentation

PowerPoint Presentation מבוא למדעי המחשב תירגול 6: כתובות ומצביעים 1 תוכנייה מצביעים מצביעים ומערכים, אריתמטיקה של מצביעים 2 3 מצביעים תזכורת- כתובות זיכרון הזיכרון כתובת התא #1000 #1004 #1008 ערך השמור בתא תא 10-4 לא מאותחל

קרא עוד

Microsoft PowerPoint - lec10.ppt

Microsoft PowerPoint - lec10.ppt תכנו ת מ ונחה ע צמ י ם בשפת ++C אוהד ברזילי אוניברסיטת תל אביב ירו ש ה מרו בה המצגת מכילה קטעים מתוך מצגת של פרופ' עמירם יהודאי ע"פ הספר: Object-Oriented Software Construction, 2nd edition, by Bertrand

קרא עוד

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

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

קרא עוד

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

תוכן העניינים הוצאת חושבים קדימה הילה קדמן # חלק ב יעוץ מקצועי: חיים אברבוך מותאם לתכנית הלימודים החדשה בבתי הספר התיכוניים מהדורה חמישית הוצאת חושבים קדימה ת.ד. 1293 רעות 71908 www.kadman.net הילה קדמן 0522 525527

קרא עוד

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

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

קרא עוד

Microsoft PowerPoint - lec2.ppt

Microsoft PowerPoint - lec2.ppt מרחב הש מות (namespace) אוהד ברזילי אוניברסיטת תל אביב מה בתו כנית? לקוח וס פק במערכת תוכנה ממשקים הכרת מרחב השמות מניעת תלות פוטנציאלית בין רכיבים במערכת ע"י עיצוב חלופי של מבנה הממשקים 2 א ונ י ב רס

קרא עוד

Homework Dry 3

Homework Dry 3 Homework Dry 3 Due date: Sunday, 9/06/2013 12:30 noon Teaching assistant in charge: Anastasia Braginsky Important: this semester the Q&A for the exercise will take place at a public forum only. To register

קרא עוד

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

תוכנה חופשית מאחורי הקלעים? על סדר היום: קצת על עצמי מה זאת תוכנה חופשית? ההיסטוריה של תוכנה חופשית כיצד תוכנה חופשית משתלבת בשוק התוכנה היתרונות של ת תוכנה חופשית מאחורי הקלעים? על סדר היום: קצת על עצמי מה זאת תוכנה חופשית? ההיסטוריה של תוכנה חופשית כיצד תוכנה חופשית משתלבת בשוק התוכנה היתרונות של תוכנה חופשית. דוגמאות מהשטח 1 ליאור קפלן 30/11/05 קצת

קרא עוד

מקביליות

מקביליות PROMELA גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון עדכון אחרון: 21:40 15/06/2013 2 שפת מ פ ר ט עם ס מ נ ט יק ה מוגדרת באופן מתמטי "שפת תכנות" למודלים המטרה: לאפשר גם לכאלה שאינם חוקרים בתחום לבנות

קרא עוד

HTML - Hipper Text Makeup Language

HTML - Hipper Text Makeup Language תכנות בסביבת האינטרנט 1 תיבת טקסט טופס הטופס הוא הדרך של בעלי האתר לקבל משוב מהגולשים, מאפשר לגולש להתחבר לאתר כחבר, מאפשר לבצע רכישות באתרי קניות וכד'. כשהגולש ממלא את הטופס, מועבר תוכן הטופס לדף מיוחד

קרא עוד

Microsoft PowerPoint - lec9.ppt

Microsoft PowerPoint - lec9.ppt תכ נות מונח ה עצמים בשפת ++C ירו שה אוה ד ברזילי אוני ברסיטת תל אביב ירו שה המצגת מכילה קטעים מתוך מצגת של פרופ' עמירם יהודאי ע"פ הספר: Object-Oriented Software Construction, 2nd edition, by Bertrand Meyer

קרא עוד

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

1 תוכנה 1 תרגיל מספר 7 מנשקים Interfaces הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה- moodle ב 1 תוכנה 1 תרגיל מספר 7 מנשקים Interfaces הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה- moodle בלבד.(http://moodle.tau.ac.il/) יש להגיש קובץ zip יחיד

קרא עוד

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

מבוא למדעי המחשב, סמסטר א', תשסח תרגול מס' 2 מבוא למדעי המחשב תרגול מס' 2 נושאים משתנים טיפוסים אופרטורים פונקציות מתמטיות מהמחלקה Math המרת טיפוסים תנאים ולולאות 1 2 תזכורת משיעור קודם תזכורת... תכנית מחשב נכתבת כטקסט בקובץ. הטקסט כתוב בשפת תכנות

קרא עוד

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

שאלהIgal : מערכים דו מימדיים רקורסיה: אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ג חשון תשע"ח 12/11/17 שמות המורים: ציון סיקסיק א' ב- C תכנות מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : ב' מועד קיץ סמ' שנה תשע"ז 3 שעות משך

קרא עוד

מצגת של PowerPoint

מצגת של PowerPoint מבוא כללי לתכנות ולמדעי המחשב תרגול מס' 1 דין שמואל dshmuel110@gmail.com 1 1. מנהלות מרצה: אמיר רובינשטיין, amirr@tau.ac.il שעות קבלה: לשאלות קצרות - מייד לאחר השיעור. ניתן לתאם במייל שעות אחרות. מתרגל:

קרא עוד

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

מבוא לתכנות ב- JAVA  תרגול 11 מבוא לתכנות ב- JAVA תרגול 11 רשימה מקושרת אוסף סדור של איברים מאותו טיפוס. קודקוד ברשימה )Node( מכיל את המידע + הצבעה לקודקוד הבא ברשימה data next first רשימה :)List( מיוצגת ע"י מצביע לאיבר הראשון ברשימה

קרא עוד

1

1 מבחן סיכום לקורס " עקרונות תכנות מונחה עצמים " תאריך הבחינה: 23.07.2017 4 שמות המרצים: ד"ר עזאם מרעי שם הקורס: עקרונות תכנות מונחה עצמים מספר הקורס: 202-15181 שנה: 2017 סמסטר: ב' מועד: ב' משך הבחינה: שלוש

קרא עוד

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

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

קרא עוד

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

שאלהIgal : מערכים דו מימדיים רקורסיה: אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ג מנ' אב תשע"ז 15.08.17 שמות המורים: ציון סיקסיק א' ב- C תכנות מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : ב' מועד סמ' ב' שנה תשע"ז 3 שעות

קרא עוד

Slide 1

Slide 1 מבוא לשפת C תירגול 8: פונקציות שבוע שעבר... מערכים מיזוג מערכים ממויינים מערכים דו-ממדיים מבוא לשפת סי - תירגול 8 2 תוכנייה פונקציות ברמת התקשורת הבין-אישית חלוקה לתתי בעיות בדומה למפתח של ספר קריאות גבוהה

קרא עוד

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

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשעז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', 31.1.2017 מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבוני, דולב שרון הנחיות: 1. משך הבחינה: 120 דקות. 2. היציאה

קרא עוד

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

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

קרא עוד

מקביליות

מקביליות תכונות שמורה Invariant Properties גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 בדיקות מודל Checking( )Model מערכת דרישות מידול פירמול בדיקות מודל )Model Checking( מודל של המערכת תכונות פורמליות סימולציה

קרא עוד

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

תרגול 3 - מערכים Introduction to Programming in Java תרגול 5 1 היום בתרגול void מה הן פונקציות הגדרת פונקציה, קריאה לפונקציה העברת ארגומנטים, החזרת ערך או דוגמאות 2 מוטיבציה לעיתים,אנו נזקקים לבצע פעולה מסוימת או לעשות

קרא עוד

Slide 1

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

PowerPoint Presentation

PowerPoint Presentation פרוטאוס הדרכה לפיתוח פרויקט מבוסס ארדואינו 1 הוראות הפעלה תוכנת פרוטאוס מכילה כמות גדולה מאוד של כלי עזר להבנת דרך ההפעלה של התוכנה. שני מקורות מידע עיקריים עומדים לרשות המשתמש מחוץ לתוכנה: o באתר האינטרנט

קרא עוד

תרגול מס' 1

תרגול מס' 1 תרגול 6 הסתעפויות 1 מבוסס על שקפים מאת יאן ציטרין קפיצות לא מותנות Unconditional Branch br label PC לאחר ה- fetch של פקודת ה- branch PC לאחר הביצוע של פקודת ה- branch pc label br label הקפיצה מתבצעת תמיד,

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

Microsoft Word - pitaron222Java_2007.doc

Microsoft Word - pitaron222Java_2007.doc 1 מדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות פרק א a mul k k a פלט b זוגי? b :1 Ï 3 1 5 1 5 F קלט: 3, 5, 8, 4 20 2 8 40 40 3 4 4 F :2 Ï m x x 0 פלט 70 x 50 0 א. 10 F 1 64 2 2 51 30 F -4 F ב. ג. 1- (כל

קרא עוד

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

מבחן בפיתוח מערכות תוכנה בשפת Java ( ) עמוד 1 מתוך 10 )0368-3056( מבחן בפיתוח מערכות תוכנה בשפת Java בית הספר למדעי המחשב אוניברסיטת תל אביב סמסטר ב' תשס"ח, מועד ב' תאריך הבחינה: 24.09.2008 מרצה: אוהד ברזילי חומר עזר מותר בשימוש: אין משך הבחינה:

קרא עוד

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

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

קרא עוד

1

1 תאריך הבחינה: 24.7.2016. שמות המרצים: ד"ר עזאם מרעי שם הקורס: עקרונות תכנות מונחה עצמים מספר הקורס: 202-15181 שנה: 2016 סמסטר: ב' מועד: א' משך הבחינה: שלוש שעות חומר עזר: אסור מבחן סיכום לקורס " עקרונות

קרא עוד

Microsoft Word B

Microsoft Word B מרצה: שולי וינטנר. מתרגל: שלמה יונה מבוא למדעי המחשב מועד ב', סמסטר א' תשס"ג, 17/2/03 משך המבחן: שעתיים וחצי. חומר עזר: מותר כל חומר עזר, מלבד מחשב. הנחיות: 1. ודאו כי בטופס שבידיכם 8 עמודים. יש לכתוב

קרא עוד

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

תוכנה 1 תרגול מספר 12: GUI כתיבת מחלקות גנריות בית הספר למדעי המחשב אוניברסיטת תל אביב 1 תוכנה 1 תרגול מספר 12: GUI כתיבת מחלקות גנריות בית הספר למדעי המחשב אוניברסיטת תל אביב 1 2 SWT בנויה על העיקרון של publish/subscribe אלמנטים בסיסיים )Widgets( מייצרים מאזינים )Listener( אירועים )Events(

קרא עוד

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

שאלהIgal : מערכים דו מימדיים רקורסיה: אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ח תשרי תשע"ז 30.10.16 שמות המורים: ציון סיקסיק א' תכנות ב- C מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : ב' מועד סמ' קיץ שנה תשע"ו 3 שעות משך

קרא עוד

Microsoft Word - tutorial Dynamic Programming _Jun_-05.doc

Microsoft Word - tutorial Dynamic Programming _Jun_-05.doc הטכניון מכון טכנולוגי לישראל אלגוריתמים (3447) סמסטר חורף 006/007 הפקולטה למדעי המחשב תכנון דינאמי תרגיל תת מחרוזת משותפת ארוכה ביותר תת-מחרוזת z k שקיימת סדרה עולה ממש,... z = z של מחרוזת נתונה x m,...,,

קרא עוד

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

איטרטורים: 1 תוכנה 1 סתיו תשעג תרגיל מספר 9 הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה moodl איטרטורים: 1 תוכנה 1 סתיו תשע"ג תרגיל מספר 9 הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה moodle בלבד.(http://moodle.tau.ac.il/) יש להגיש קובץ zip

קרא עוד

PowerPoint Presentation

PowerPoint Presentation מבוא למדעי המחשב תירגול 2: מבוא לתיכנות ב- C 1 תוכנייה משתנים קלט/פלט משפטי תנאי מבוא למדעי המחשב מ' - תירגול 3 2 משתנים 3 משתנים- תמונת הזיכרון הזיכרון כתובת התא #1000 10-4 לא מאותחל 67 לכל תא בזיכרון

קרא עוד