ניסוי ב הפקולטה להנדסת חשמל המעבדה למערכות תוכנה הטכניון - מכון טכנולוגי לישראל חשוב: יש למלא טופס משוב בתום הניסוי!!! גרסת התדריך: 3. - PDF

Description
הטכניון - מכון טכנולוגי לישראל הפקולטה להנדסת חשמל המעבדה למערכות תוכנה ניסוי ב גרסת התדריך: 30 Java שימו לב!! הניסוי 3311 נערך בחדר חשוב: יש למלא טופס משוב בתום הניסוי!!! המאחר ביותר מ 51 דקות לא יורשה

Please download to get full document.

View again

of 47
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Information
Category:

Creative Writing

Publish on:

Views: 172 | Pages: 47

Extension: PDF | Download: 0

Share
Transcript
הטכניון - מכון טכנולוגי לישראל הפקולטה להנדסת חשמל המעבדה למערכות תוכנה ניסוי ב גרסת התדריך: 30 Java שימו לב!! הניסוי 3311 נערך בחדר חשוב: יש למלא טופס משוב בתום הניסוי!!! המאחר ביותר מ 51 דקות לא יורשה לבצע את הניסוי! המעבדה למערכות תוכנה אילנה דוד - טל :4634 דוא ל: איתי אייל - טל : 8923 דוא ל דימה פרלמן טל 1295 דוא ל: בטיחות כללי: הנחיות הבטיחות מובאות לידיעת הסטודנטים כאמצעי למניעת תאונות בעת ביצוע ניסויים ופעילות במעבדה למערכות תוכנה מטרתן להפנות תשומת לב לסיכונים הכרוכים בפעילויות המעבדה, כדי למנוע סבל לאדם ונזק לציוד אנא קראו הנחיות אלו בעיון ופעלו בהתאם להן מסגרת הבטיחות במעבדה: אין לקיים ניסויים במעבדה ללא קבלת ציון עובר בקורס הבטיחות של מעבדות ההתמחות באלקטרוניקה )שהינו מקצוע קדם למעבדה זו( לפני התחלת הניסויים יש להתייצב בפני מדריך הקבוצה לקבלת תדריך ראשוני הנחיות בטיחות אין לקיים ניסויים במעבדה ללא השגחת מדריך ללא אישור מראש מדריך הקבוצה אחראי להסדרים בתחום פעילותך במעבדה; נהג על פי הוראותיו עשה ואל תעשה: יש לידע את המדריך או את צוות המעבדה על מצב מסוכן וליקויים במעבדה או בסביבתה הקרובה לא תיעשה במזיד ובלי סיבה סבירה, פעולה העלולה לסכן את הנוכחים במעבדה אסור להשתמש לרעה בכל אמצעי או התקן שסופק או הותקן במעבדה היאבקות, קטטה והשתטות אסורים מעשי קונדס מעוררים לפעמים צחוק אך הם עלולים לגרום לתאונה אין להשתמש בתוך המעבדה בסמים או במשקאות אלכוהוליים, או להיות תחת השפעתם אין לעשן במעבדה ואין להכניס דברי מאכל או משקה בסיום העבודה יש להשאיר את השולחן נקי ומסודר בניסיון לחלץ דפים תקועים במדפסת - שים לב לחלקים חמים! בטיחות חשמל: בחלק משולחנות המעבדה מותקנים בתי תקע ) שקעים ( אשר ציוד המעבדה מוזן מהם אין להפעיל ציוד המוזן מבית תקע פגום אין להשתמש בציוד המוזן דרך פתילים ) כבלים גמישים ( אשר הבידוד שלהם פגום או אשר התקע שלהם אינו מחוזק כראוי אסור לתקן או לפרק ציוד חשמלי כולל החלפת נתיכים המותקנים בתוך הציוד; יש להשאיר זאת לטפול הגורם המוסמך אין לגעת בארון החשמל המרכזי, אלא בעת חירום וזאת - לצורך ניתוק המפסק הראשי מפסקי לחיצה לשעת חירום: במעבדה ישנם מפסקים ראשיים להפסקת אספקת החשמל זהה את מקומם בעת חירום יש להפעיל מפסקי החשמל הראשיים בטיחות אש, החייאה ועזרה ראשונה: במעבדה ממוקמים מטפי כיבוי אש זהה את מקומם אין להפעיל את המטפים, אלא בעת חירום ובמידה והמדריכים וגורמים מקצועיים אחרים במעבדה אינם יכולים לפעול יציאות חירום: בארוע חירום הדורש פינוי, כגון שריפה, יש להתפנות מיד מהמעבדה דיווח בעת אירוע חירום: יש לדווח מידית למדריך ולאיש סגל המעבדה המדריך או איש סגל המעבדה ידווחו מיידית לקצין הביטחון בטלפון; 9572, 9999 במידה ואין הם יכולים לעשות כך, ידווח אחד הסטודנטים לקצין הביטחון לפי הוראת קצין הביטחון, או כאשר אין יכולת לדווח לקצין הביטחון, יש לדווח, לפי הצורך: 522, משטרה 525, מגן דוד אדום 529, מכבי אש גורמי בטיחות ו/או ביטחון אחרים בנוסף לכך יש לדווח ליחידת סגן המנמ פ לעניני בטיחות; 9574/5 8288, 7554 בהמשך, יש לדווח לאחראי משק ותחזוקה; לסיום, יש לדווח ל: מהנדס המעבדה )טל 3220( בעת הצורך ניתן להודיע במקום למהנדס המעבדה לטכנאי המעבדה המעבדה למערכות תוכנה ניסוי ב Java מבוא חוברת זו מהווה תדריך והכנה ל בתדריך זה נלמדים עקרונות השפה מלווים בהסברים ודוגמאות מפורטות כל הדוגמאות המופיעות בתדריך ניתנות להורדה מאתר המעבדה קורס קדם הכרחי לביצוע הניסוי : ממ ת או מת מ הניסוי מתבצע על גבי מערכות הפעלה מסוג Linux מטרות הניסוי הכרות עם שפת Java הכרת היתרונות והחסרונות של שפת Java בהשוואה לשפת ++C התנסות בכתיבת תוכניות פשוטות והרצתן מבנה הניסוי קריאת ולימוד התדריך )החומר התיאורטי( פתרון שאלות הכנה במסגרת דו ח מכין יש להגיש את הדו ח מודפס בתחילת הניסוי, וכן לשלוח אותו באימייל למנחה הניסוי בוחן הכנה לניסוי )יבוצע במהלך הניסוי, לכל סטודנט בנפרד( ביצוע הניסוי מול המחשב מבנה הציון דו ח הכנה לניסוי 52% בוחן 52% ביצוע הניסוי 32% )ראה פרוט להלן( 4 הרכב הניסוי והציון 9 תרגילים ברמת קושי קלה מאד - 51% כל תרגיל 9 תרגילים ברמת קושי קלה - 51% כל תרגיל 9 תרגילים ברמת קושי בינונית 3% כל תרגיל תרגיל אחד ברמת קושי גבוהה 7% שלושה רבעים מהציון על כל תרגיל ניתנים על סמך הרצת התרגיל יילקחו בחשבון ביצוע מדוייק של ההוראות, וכן טיפול במקרים חריגים, למשל קלט לא חוקי או בעיות i/o הרבע האחרון מהציון על כל תרגיל יינתנו על קוד קריא ומסודר, הממלא על מוסכמות הקוד של JAVA הנחיות נוספות כל תרגיל יבוצע ב- Package נפרד, שכולל את כל המחלקות עבור אותו תרגיל אם לא ניתנה הוראה מפורשת אחרת, כל מחלקה תמומש בקובץ נפרד לניסוי שני מפגשים, אשר בהם כאמור תידרשו לבצע 5 תרגילים ברמות קושי שונות, מהקל אל הכבד המפגש השני הוא המשך ישיר של המפגש הראשון אין חלוקה שרירותית של משימות בין שני המפגשים, ולא צריך להגיש דו ח מכין לקראת המפגש השני למעבדה זו אין דו ח מסכם 5 התדריך מבוסס על התרגולים בקורס תכנות ותכן מונחה עצמים )172613( מאת יאיר משה ועכשיו נתחיל מהי שפת? Java ++C ו Java הן שפות תכנות מונחה עצמים הנפוצות ביותר בשימוש כיום התחביר של שפת Java מבוסס על התחביר של שפת ++C, אבל קיימים הבדלים מהותיים שעל חלקם נעמוד בהמשך לשפת Java מספר יתרונות לעומת שפת ++C: ++C, ויתרה על התחביר המבלבל והמסובך של Java פשטות לדוגמא: איחודים )unions( ומצביעים )pointers( מונחית עצמים ב Java כל דבר הוא אובייקט יציבה ובטוחה )robust( לדוגמא: Java לא מאפשרת להשתמש במשתנים שלא אותחלו דוגמא נוספת: לא ניתן לבצע השמה מטיפוס long לטיפוס int )דבר העלול לגרום לאיבוד מידע( ללא המרה מפורשת איסוף אשפה collection( )garbage זהו מנגנון אוטומטי הרץ ברקע ומשחרר את הזיכרון שהוקצה לאובייקטים שכבר אינם נחוצים, בניגוד ל ++C כאן אין צורך בשחרור זיכרון ע י המתכנת ניידות )portable( Java נוקטת בגישה בה ניתן להריץ תוכניות הכתובות בה על גבי פלטפורמות שונות Write once, run anywhere אוסף ספריות סטנדרטי רחב ל Java אוסף ספריות עצום המאפשר תמיכה בקלט/פלט, עבודה מול בסיסי נתונים, גרפיקה, תקשורת, ממשקי משתמש גרפיים ועוד לשפת Java קיימים כמובן גם חסרונות שהבולט שבהם הינו הביצועים בעבר, קוד בשפת Java רץ לאט באופן משמעותי מקוד מקביל ב-++ C כיום הביצועים טובים בהרבה וניתנים להשוואה לאלה של Native Code 6 Java virtual machine שפות כדוגמת ++C מבוססות על מהדר )compiler( קוד המקור עובר הידור לאוסף פקודות מכונה וקריאות לפונקציות של מערכת ההפעלה קוד כזה נקרא native code והוא ייחודי למערכת ההפעלה שאליה עבר הידור באופן זה מספקת מערכת ההפעלה למתכנת רמת הפשטה )אבסטרקציה( מעל לחומרה שפת Java מוסיפה רמת הפשטה נוספת הקרויה מכונה וירטואלית machine( )virtual המכונה הוירטואלית מספקת שירותים נוספים מעבר לאלו של מערכת ההפעלה וכך מאפשרת עבודה ברמת הפשטה גבוהה יותר מדוע זה טוב? משום שבאופן זה מתאפשרת עבודה ללא תלות במערכת הפעלה או חומרה מסוימות כאשר מבצעים הידור לקובץ Java )סיומת )java נותר קובץ המכיל קוד ביניים שאינו תלוי פלטפורמה )סיומת )class קוד זה מכונה bytecode בזמן ריצת התוכנית נטען קוד זה לזיכרון ומתורגם )ע י )interpreter ל native code הייחודי למערכת ההפעלה עליה רצה התוכנית 7 תוכנית ראשונה ב Java /** * The HelloWorldApp class implements an application that * simply displays Hello World! to the standard output */ class HelloWorldApp { public static void main(string[] args) { Systemoutprintln( Hello World! ); //Prints the string ב Java כל דבר חייב להיות בתוך מחלקה )class( הגדרת פונקציה חייבת להתבצע בתוך המחלקה אליה היא שייכת ולא ניתן להצהיר עליה בתוך המחלקה ולהגדירה בהמשך משתנים או פונקציות גלובליים לא קיימים בשפה ריצת התוכנית תתחיל תמיד מהפונקציה main() של המחלקה, פונקציה זו מקבלת מערך מחרוזות מה line command ולא מחזירה ערך אם תנסו להריץ מחלקה שאין בה פונקצית main() תתקבל שגיאה בסגנון: In class class name : void main(string argv[]) is not defined הביטויים ומשפטי הבקרה: do-while, if-else, for, while,switch-case, break, continue, return ב Java זהים לאלו של ++C כך גם טיפוסי הנתונים הפשוטים int, double, short, long הערות )comments( נכתבות כמו ב ++C - ע י /* */ או // 8 מה לא קיים ב Java )לדוברי C ו-++ C (: הנחיות preprocessor כגון : typedef,#define אינם קיימים מהסיבה הפשוטה שבשפת Java אין!preprocessor בנוסף לכך בשפת ++C / C אם ברצונך להבין קוד שנכתב ע י תכנת אחר עליך לקרוא את כל קבצי ה header ואת כל הגדרות ה #define והגדרות ה typedef שהוא כתב העדרם של כל אלו משפת Java מוביל להבנת קוד מהירה וטובה יותר מאשר בשפת ++C, / C וקומפילציה מהירה יותר struct, union אין כל צורך במבנים אלו כאשר אנו יכולים פשוט להגדיר מחלקות! בעזרת שימוש במחלקות ניתן להשיג את כל מה שיתנו לנו מבנים אלו ואף הרבה יותר מזה! מצביעים מרבית המחקרים מצביעים על כך שהשימוש במצביעים הינו אחד הגורמים המרכזיים המביאים מתכנתים ליצירת באגים מאחר ובשפת Java אין struct/union ומערכים ומחרוזות הם אובייקטים )כמו כל דבר אחר בשפה( הצורך במצביעים יורד פלאים בשפת Java יש רק רפרנסים )reference( המוכרים לכם מ ++C מכאן משתמע גם כי כל העברת אובייקט למתודה הינו by reference Operator overloading השמטת מנגנון זה מהשפה מוביל לפשטות קוד רבה יותר ניתן להשיג את אותו האפקט ע י הגדרת מחלקה, משתני מופע ומתודות מתאימות לביצוע מניפולציות עליהם Multiple inheritance מנגנון זה אינו קיים אך ניתן להשיג אפקט דומה באמצעות שימוש בממשקים )בהמשך( קבצי header אינם קיימים מאותן סיבות ש typedef,#define אינם קיימים 9 references ואיסוף זבל בשפת Java קיימים 9 סוגים של טיפוסים: טיפוסי נתונים פשוטים long(,int, )double ו- references מכאן נובע שכל משתנה שמייצג אובייקט או מערך הוא למעשה reference כאשר מעבירים אובייקט בתור פרמטר לפונקציה הוא מועבר תמיד by reference טיפוס reference הוא מצביע לערך או לאוסף ערכים הנמצאים בערימה )heap( והוא המקביל ב- Java למצביעים הוא אינו מאפשר אריתמטיקה של כתובות זיכרון או ניהול ישיר של הערימה המשמעות המעשית היא שלא ניתן לגשת לאזורי זיכרון שלא הוקצו קודם או שכבר שוחררו, וכך נמנעות טעויות תכנות רבות כאשר מסתיים השימוש באובייקט מסויים, למשל משתנה מקומי בפונקציה, אין צורך לשחרר אותו מנגנון איסוף הזבל Collection( )Garbage מזהה שהאובייקט כבר לא בשימוש )אין אף משתנה שמחזיק reference אליו(, ומשחרר את הזיכרון של אותו אובייקט מנגנון זה של Java מונע דליפות זיכרון רבות למרות זאת עדיין תיתכן התנפחות זיכרון ב- Java הידור )compile( והרצת תוכניות נתבונן שוב בתוכנית המפורסמת :Hello world /** * The HelloWorldApp class implements an application that * simply displays Hello World! to the standard output */ class HelloWorldApp { public static void main(string[] args) { Systemoutprintln( Hello World! ); //Prints the string כל קובץ בשפת Java מכיל מחלקה אחת בלבד ושמו כשם המחלקה! לכן שם הקובץ המכיל את התוכנית הינו: HelloWorldAppjava )שימו לב לאותיות קטנות וגדולות!( הידור התוכנית מתבצע באופן הבא: לאחר הידור מוצלח נוצר הקובץ: הרצת התוכנית מתבצעת באופן הבא: HelloWorldAppclass את קובץ התוכנית )java( ניתן לכתוב ב Text editor המועדף עליכם דוגמא נוספת: javac HelloWorldAppjava java HelloWorldApp import javautilrandom; 01 public class Parker{ private static final int number = 8; private boolean hasplayed; private int points; public Parker(boolean hasplayed){ thishasplayed = hasplayed; Random rnd = new Random(); points = (int)(rndnextfloat()*40); public void printstats(){ Systemoutprintln( # +number+ Anthony Parker ); if(hasplayed) Systemoutprintln( Scored +points+ points ); else Systemoutprintln( Did not play! ); public static void main(string args[]){ Parker ap = new Parker(true); apprintstats(); כל קובץ בשפת Java מכיל מחלקה אחת בלבד ושמו כשם המחלקה ריצת התוכנית תתחיל מהפונקציה main() של המחלקה Parker בפונקציה זו מתבצעת הצהרה על משתנה מטיפוס המחלקה Parker ונוצר עבורו מופע )instance( של מחלקה זו בשם ap המופע נוצר באמצעות האופרטור new שימו לב כי למתודה הבונה )constructor( של מחלקה זו מועבר הערך הבוליאני true )אם לא נכתבה מתודה בונה עבור מחלקה, תיווצר לה מתודת ברירת מחדל בונה constructor( ))default לאחר מכן מופעלת המתודה printstats של ap באמצעות אופרטור הנקודה אופרטור זה מאפשר גישה לשדות ולמתודות של אובייקטים במחלקה Parker נעשה שימוש במחלקה Random מתוך הספריות הסטנדרטיות של,Java מחלקה זו מאפשרת הגרלת מספרים שורת הקוד: import javautilrandom; מציינת כי אנו רוצים לייבא את המחלקה Random מתוך החבילה javautil #include מייבאת קובץ שעבר הידור ולא מבצעת פעולה דומה לזו של Import ב ++C תחביר שימושי נוסף הוא ייבוא כל המתודות מתוך חבילה מסויימת : import javautil*; שימו לב לשימוש ב static final כתחליף ל #define ב ++C המילה השמורה final דומה במשמעותה למילה השמורה const ב ++C והיא מציינת כי ערך המשתנה לא ניתן לשינוי לכן number הינו קבוע בעל עותק יחיד בזיכרון ותתבצע עליו בדיקת טיפוסים 00 המתודה הבונה )constructor( מקבלת פרמטר אחד מטיפוס boolean ערכו של פרמטר זה מוכנס לתוך ערכו של משתנה המחלקה באותו שם הדבר מתבצע באמצעות המילה השמורה,this שמשמעותה האובייקט הנוכחי נקודה נוספת שיש לשים לב אליה היא מנגנון איסוף האשפה כזכור מנגנון זה משחרר באופן אוטומטי אובייקטים כאשר הוא מחליט שהם כבר אינם בשימוש אנו הקצנו זיכרון למשתנים rnd ו ap בעזרת האופרטור new אך לא שחררנו זיכרון זה! ב Java לא קיים אופרטור delete כמו ב ++C ואין צורך לשחרר זיכרון הספריות הסטנדרטיות של Java כפי שהוסבר בתחילת התדריך, לשפת Java אוסף ספריות סטנדרטיות נרחב ביותר בכתובת הבאה: אוסף זה נקרא,Java API Specification כאשר משמעות המילה API הינה Application Program Interface בדפים אלה תמצאו את פירוט כלל החבילות והמחלקות, לכל מחלקה קיים סיכום המפרט את סוגי היוצרים השונים והמתודות הרלוונט
Related Search
Similar documents
View more...
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks