Download presentation
Presentation is loading. Please wait.
Published byLester Gardner Modified over 9 years ago
1
1 תרגול 2 – מבוא לתכנות JAVA
2
היום בתרגול : 2 משתנים וטיפוסים אופרטורים פונקציות מתמטיות מהמחלקה Math המרת טיפוסים תנאים Debugger
3
משתנים וטיפוסים 3 מהו משתנה ? משתנה (variable) הוא יחידת מידע המאחסנת ערך במהלך ריצת התוכנית. ניתן להשתמש במשתנים על מנת לשמור ערכים, ולקבלם בשלב מאוחר יותר בתוכנית. ניתן לבצע פעולות חישוביות בעזרת משתנים. לכל משתנה יש טיפוס (type). הטיפוס קובע אילו סוגי ערכים המשתנה יכול להכיל.
4
הגדרת משתנים 4 יש להכריז על שמו של המשתנה וטיפוסו. למשל זוהי הגדרה על משתנה בשם num מטיפוס int ( מספר שלם ). int num; אפשר להגדיר מספר משתנים מאותו טיפוס בשורה אחת. int num1, num2;
5
טווח הכרה של משתנה 5 טווח ההכרה של משתנה (scope) הוא האזור בתוכנית שבו המשתנה מוגדר וניתן להשתמש בו. טווח ההכרה של משתנה תלוי בבלוק בו הוא מוגדר ( בלוק מצוין ע " י סוגריים מסולסלים ). טווח ההכרה של המשתנה מתחיל בשורה שבו המשתנה מוגדר ומסתיים בסוף הבלוק שבו נמצאת הגדרת המשתנה.
6
פעולת השמה 6 פעולת השמה (assignment) נותנת ערך למשתנה. = הוא סימן פעולת השמה, משמאל שם המשתנה ומימין הערך. פעולת השמה חייבת להופיע בתוך טווח ההכרה של המשתנה. למשל, הפקודה הבאה נותנת ערך 3 למשתנה num. num = 3; ניתן להגדיר את המשתנה ולבצע השמה בשורה אחת : int num1 = 1; אין להשתמש במשתנה שלא קיבל ערך !
7
דוגמה : 7 public class Example1 { public static void main(String[] args){ int num; num = 3; int num1 = 1, num2; num2 = num1; System.out.println("num = " + num); System.out.println("num1 = " + num1); System.out.println("num2 = " + num2); } scope of num1 and num2 scope of num טבלת משתנים הגדרה שמות סקופ השמה פלט
8
טיפוסים 8 טיפוס של משתנה קובע : אילו ערכים יכול המשתנה להכיל מהן הפעולות שניתן לבצע על המשתנה רקע הזיכרון במחשב הוא זיכרון בינארי (binary). ביט (bit)- יחידת זיכרון בינארית. ביט יכול להיות 0 או 1. זיכרון המחשב נמדד ביחידות בסיסיות הנקראות בתים (bytes). 1 byte = 8 bit משתנים מאוחסנים בזיכרון המחשב נשמרים בבתים. מספר הבתים שדורש אחסון של משתנה תלוי בטיפוסו. לצורך הבנה מלאה של הנושא עליכם לקרוא באופן עצמאי על הנושא, התחלה טובה היא : Binary - Wikipedia. Binary - Wikipedia
9
טיפוסים פרימיטיביים 9 1. טיפוסים נומריים שלמים הטיפוסים נומריים מייצגים מספרים שלמים : byte, short, int, long למשל : long longNum, longNum2; byte byteNum = 125; longNum = 1234567890; 2. טיפוסים ממשיים הטיפוסים הממשיים הם double, float. למשל : double doubleNum; doubleNum = 3.75;
10
טיפוסים פרימיטיביים 10 3. טיפוסים לוגיים הטיפוס הלוגי נקרא boolean. משתנים מטיפוס זה בעלי ערך true או false. boolean indicator; indicator = true; 4. תווים תו : char. סימן בודד התחום בגרשיים בודדות ( למשל, 'a', 'A'). לפני סימן מיוחד יש תו backslash ( למשל, newline '\n', tab '\t', backspace '\b') char capitalN; capitalN = 'N';
11
טבלת סיכום טיפוסים מספריים טיפוסמספר ה bytesערכים byte1-2 7 עד 2 7 -1 short2-2 15 עד 2 15 -1 int4-2 31 עד 2 31 -1 long8-2 63 עד 2 63 -1 float4 double8 11
12
קבועים 12 קבוע (constant) הוא יחידת מידע המאחסנת ערך במהלך ריצת התוכנית. קבוע דומה למשתנה ; ההבדל הוא שערכו של קבוע לא יכול להשתנות במהלך התוכנית מרגע שהקבוע קיבל את ערכו הראשוני. דוגמה : final int PASS_GRADE = 56; int grade; grade = PASS_GRADE;
13
אופרטורים 13 על משתנים וערכים ניתן לבצע פעולות שונות, בהתאם לטיפוס. אופרטורים מבצעים חישוב ומחזירים תוצאה. 1. אופרטורים אריתמטיים על משתנים וערכים מטיפוסים נומריים וממשיים אפשר לבצע פעולות אריתמטיות :
14
דוגמה 1 14 /* This program demonstrates addition and multiplication between integers. */ public class OperatorsExample1{ public static void main(String[] args){ int a = 3, b = 5; int c; c = a + b; System.out.println("c = "+ c); c = c * 2; System.out.println("c = "+ c); } c = 8 c = 16
15
דוגמה 2 15 התוכנית הבאה מדגימה את סדר הפעולות של הפעולות האריתמטיות : public class OperatorsExample { public static void main(String[] args) { int a = 18; int b = 42; int first = (a + b) * 2; int second = a + b * 2; System.out.println("first number is:" + first); System.out.println("second number is:" + second); } first number is:120 second number is:102
16
דוגמה 3 16 import java.util.Scanner; /* This program accepts a 3-digit number from the user * reverses the digits and prints the result */ public class Reverse { public static void main(String[] args) { // Read a number from the user. Scanner sc = new Scanner(System.in); System.out.print("Enter a 3-digit number:"); int num = sc.nextInt(); // divide the number into ones, tens and hundreds. int ones = num % 10; int tens = (num % 100) / 10; int hundreds = num / 100; // calculate the reverse number int reverseNum = (ones * 100) + (tens * 10) + hundreds; System.out.println("The reverse number is " + reverseNum); } Enter a 3-digit number: The reverse number is 159 951
17
אופרטורים יחסיים ב Java יש 6 אופרטורים המשווים בין שני מספרים ונותנים תשובה בוליאנית (true או false). OperatorNameDescription x < y Less thantrue if x is less than y, otherwise false. x > y Greater thantrue if x is greater than y, otherwise false. x <= y Less than or equal to true if x is less than or equal to y, otherwise false. x >= y Greater than or equal to true if x is greater than or equal to y, otherwise false. x == y Equaltrue if x equals y, otherwise false. x != y Not Equaltrue if x is not equal to y, otherwise false. 17
18
דוגמה 18 import java.util.Scanner; // This program compares two numbers with relational operators public class RelationalOperators { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Enter the first number:"); int x = sc.nextInt(); System.out.print("Enter the second number:"); int y = sc.nextInt(); System.out.println("x<y is " + (x < y)); System.out.println("x>y is " + (x > y)); System.out.println("x<=y is " + (x <= y)); System.out.println("x>=y is " + (x >= y)); System.out.println("x==y is " + (x == y)); System.out.println("x!=y is " + (x != y)); } Enter the first number:10 Enter the second number:20 x<y is true x>y is false x<=y is true x>=y is false x==y is false x!=y is true
19
אופרטורים לוגיים אופרטורים לוגיים פועלים על ערכים מטיפוס לוגי ( בוליאני ) וגם נותנים תשובה בוליאנית (true או false). OperatorNameDescription x && y AndTrue if both x and y are true, otherwise false. x || y Or True if at least one of x or y are true, otherwise false. ! x NotTrue if x is false, otherwise false. 19 * הערכת האופרטורים הלוגיים And ו Or מתבצעת משמאל לימין.
20
דוגמה 20 import java.util.Scanner; // This program demonstrates logical operators. // It reads two integers from the user and checks if // they are larger than 10. public class LogicalOperators { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Enter the first number:"); int x = sc.nextInt(); System.out.print("Enter the second number:"); int y = sc.nextInt(); System.out.println("(y<10)&&(x<10) is " + ((y<10) && (x<10))); System.out.println("(y<10)||(x<10) is " + ((y<10) || (x<10))); boolean state; state = ((y < 10) || (x < 10)); System.out.println("state is " + state); } (y<10)&&(x<10) is false (y<10)||(x<10) is true state is true Enter the first number:10 Enter the second number:9
21
המחלקה Math 21 המחלקה Math מאגדת בתוכה פונקציות מתמטיות שימושיות וקבועים. Math.abs(x) – ערך מוחלט של x. Math.max(x1,x2), Math.min(x1, x2) – המינימום והמקסימום ( בהתאמה ) בין x1 ו x2. Math.pow(x, y) – מחשב את x בחזקת y (x y ). Math.sqrt(x) – שורש ריבועי של x. Math.random() – מחזיר מספר אקראי בין 0 ל 1 ( לא כולל 1). Math.PI – קבוע המייצג את הערך (3.14159...)
22
דוגמה 22 public class UseMath { public static void main(String[] args){ // This is an example of using Math methods double x = Math.abs(-3); x = Math.pow(x, 2 ); x = Math.max(x, Math.PI); System.out.println("max( (|-3|)^2, Pi ) = " + x); x = Math.random(); System.out.println("A random number between 0 and 1: "+ x); } max( (|-3|)^2, Pi ) = 9.0 A random number between 0 and 1: 0.9764623048094814 המחלקה Math ומחלקות רבות נוספות כלולות בספריות Java הכלולות בהתקנת Java. מידע מפורט על מחלקת Math ומחלקות נוספות הכלולות ב Java ניתן למצוא בקישור http://download.oracle.com/javase/6/docs/api/java/lang/Math.html http://download.oracle.com/javase/6/docs/api/java/lang/Math.html
23
המרת טיפוס (Casting) 23 לכל משתנה ב Java יש טיפוס ספציפי. מה קורה כאשר מערבים טיפוסים שונים בביטוי ? במקרים מסוימים Java מטפלת בטיפוסים השונים באופן אוטומטי ובפעמים אחרות אנחנו חייבים לבצע המרה מפורשת של טיפוס נתונים אחד לאחר. 1. המרות אוטומטיות כאשר מבצעים פעולה אריתמטית הערך המתקבל הינו בעל טיפוס מסוים. אם כך המרכיבים מאותו טיפוס אז הטיפוס המתקבל בפעולה הינו זהה. long y, w; long z = w + y; הערך של הביטוי w+y הינו מטיפוס long.
24
המרת טיפוס (Casting) 24 כאשר מרכיבי הביטוי הינם מטיפוסים שונים הביטוי המתקבל יהיה מהטיפוס של המרכיב הכולל ביותר. הסדר של טיפוסים המספרים מן הפחות כולל לכולל ביותר הינו : byte, short, int, long, float, double. דוגמה האופרטור / עובד אחרת בהתאם לטיפוסים עליהם הוא מופעל. 5.0/2 --> 2.5 5.0/2.0 --> 2.5 5/2.0 --> 2.5 5/2 --> 2
25
המרת טיפוס (Casting) 25 2. המרות יזומות ניתן לבצע המרת טיפוס ע " י שימוש בפעולת השמה. הביטוי הימני עובר המרה לטיפוס של המשתנה המופיע בצד שמאל של ההשמה. int i = 5; double d; d = i; // d is 5.0 המרה כזו אפשרית רק כאשר הטיפוס של המשתנה בצד שמאל כללי יותר מהטיפוס של הביטוי בצד ימין.
26
המרת טיפוס (Casting) 26 במקרה ההפוך, כאשר הטיפוס של המשתנה בצד שמאל כללי פחות מהטיפוס של הביטוי בצד ימין, נשתמש באופרטור ה type cast : ( ). double d = 5.3; int i ; i = (int) d; // i is 5 שימוש נוסף באופרטור ה type cast הוא כאשר רוצים למנוע איבוד של חלק השבר בחלוקה של מספרים שלמים : double d; int x = 5, y = 2 ; d = ((double) x)/y; d = (double) x/y;
27
משפט if-else 27 משפט if-else הוא מבנה בסיסי בשפה המאפשר לשלוט בזרימת התוכנית. למשפט זה יש שתי צורות : if ( ){ } if ( ){ }else { }
28
דוגמה ל - if 28 import java.util.Scanner; public class Triangle { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Enter the first number:"); double a = sc.nextInt(); System.out.print("Enter the second number:"); double b = sc.nextInt(); System.out.print("Enter the third number:"); double c = sc.nextInt(); if ((a + b <= c) || (a + c <= b) || (b + c <= a)) { System.out.println("There is no triangle with these sides."); } else{ System.out.println("There is a triangle with these sides."); }
29
Debugging לפעמים אנחנו לא מקבלים את התוצאות הצפויות : ( האמת שזה קורה כמעט תמיד, עד שאנחנו מתקנים את הבעיות ) סוגים של בעיות : בעיית קומפילציה טעות תחבירית שמונעת מהמהדר לפרש את הקוד. בד " כ המהדר מספק מידע על מיקום ומהות הטעות. שגיאת זמן ריצה בזמן הריצה מתקיימת שגיאה ניתן לדעת בדיוק היכן ארעה שגיאה זו. תוך שימוש ב debugger. שגיאה לוגית התוכנית רצה היטב אך התשובה המתקבלת לא נכונה. מוצאים ע " י בדיקות המכסות את כל מחלקות השקילות. 29
30
הפעולות הבסיסיות לפעולות הדיבוג ב Eclipse: קביעת נקודות עצירה בתכנית (Set Breakpoints): לחיצה כפולה על העכבר משמאל לשורה. הפעלת תכנית באמצעות Debugger: הקישו F11 קידום צעד צעד (step by step): הקישו F6 קידום עד לנקודת העצירה הבאה ( או עד הסוף ): הקישו F8 כניסה לתוך פונקציה : הקישו F5 יציאה מפונקציה : הקישו F7 יציאה מה -debugger – Ctrl+F2 30
31
The Debugger Create new project Create new project; name it Max3 Create new class; name it Max3; mark the generation of main method option Copy/Paste the following code to the class The Scanner class provides possibility to read from command line user input nextInt method parse user input to int type after number and enter pressed Try to execute ones the program (enter user input in Console window, bottom of the screen) public static void main(String[] args) { Scanner reader = new Scanner(System.in); int a, b, c;// input variables int max;// max value System.out.println("Please enter three integers:"); a = reader.nextInt(); b = reader.nextInt(); c = reader.nextInt(); max = a; if (b > max) max = b; if (c > max) max = c; System.out.println("The max value is: " + max); }
32
The Debugger Add breakpoints A breakpoint suspends the execution of a program at the location where the breakpoint is set. Double click in front of a = reader.nextInt(); line of code, on place of the blue circle on the figure. You've just created a breakpoint. To delete it double-click on the blue circle. Create another breakpoint on the if (b > max) line of code.
33
The Debugger Debug the code Press the bug button on the button bar, or choose Run | Debug from the menu bar.
34
The Debugger Debug the code The IDE will switch to Debug Perspective, view with different windows layout than in coding mode - this perspective more convenient for debugging tasks.
35
The Debugger Debug the code The execution of the program paused on the first breakpoint o on the blue circle appears blue arrow o current line marked with green The JVM still not executed the current line
36
The Debugger Debug the code In the buttons bar and the Run menu you can see debug main actions tools o Resume - for resuming program execution o Terminate - to kill the programm o Step Into - to enter inside logic, the method, of the current line (more of this after learning methods) o Step Over - execute current line and go to next one o Step Return - in case you inside some inner method, execute the whole method and pause execution after exit from the method
37
The Debugger Debug the code On the top right window of the Debug perspective one of the existent tabs is Variables tab Click on this tab and remember what you see there (arg and reader variables)
38
The Debugger Debug the code Press the Step Over button The JVM will execute the current line, so the execution means reading user input from command line Enter 13 in the Console window and press enter
39
The Debugger Debug the code Now pay attention what happened in the Variables tab - the new assigned variable a appears there with the assigned value, 13 o You can also hover with mouse pointer over the a variable in the code area and you also will see the current a's value, 13. In such a way you can always examine current state of your variables
40
The Debugger Debug the code Now press the Resume button. After pressing Resume,debugger execute the code till the end of the application execution, or till some breakpoint will hit, or till some exception will raise. In our case it will be next breakpoint hit on the line of code: if (b > max) (of course before you should finish interaction with the program as user - enter second and third integers in Console window, 14 and 15 for example).
41
The Debugger Debug the code Current state of the Variables As we can see b is bigger than max, so the expression inside the if evaluates to true, therefore, the then statement, max = b, should be executed. Let's press the Step Over button - the execution moved to the max = b line of code.
42
The Debugger Debug the code Let's press again Step Over and will see the change of variable max in the Variables window after new assignment max = b; Eclipse automatically marked change in variable value with yellow color to pay our attention
43
The Debugger Debug the code Now let's press the resume button and the application will run till the end and will terminated. The console window:
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.