המצגת נטענת. אנא המתן

המצגת נטענת. אנא המתן

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

מצגות קשורות


מצגת בנושא: "מבוא לתכנות ב- JAVA מעבדה 4"— תמליל מצגת:

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

2 מה בתרגול ניפוי שגיאות – חזרה (סוף מעבדה 3) מערכים

3 Debugging within Eclipse
קביעת breakpoint

4 Debugging within Eclipse

5 מצב debug

6 קידום בצעד ביצוע צעד

7 טבלת משתנים

8 תרגיל פתחו את הקובץ Calc.java הנמצא ב practical sessions בeclipse
תקנו את התוכנית כך שהתוכנית תציג את הפלטים הנכונים מהם שגיאות הקומפילציה? האם ישנן שגיאות לוגיות בתוכנית? האם ייתכנו שגיאות בזמן ריצה?

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

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

11 יצירת מערך וגישה לאיבריו
יצירת מערך בגודל 10 שאיבריו מטיפוס int : int[] arrayOfInts = new int[10]; סוגריים מרובעים מציינים שאנו מגדירים מערך מערך בגודל 10 הערה: כאשר מגדירים מערך, כל הערכים במערך יאותחלו לפי ערך ברירת מחדל שמוגדר ב- java (לדוגמא עבור int כל הערכים במערך יהיו 0 בהתחלה) דוגמא לפקודות עם פנייה לאיברים במערך: arrayOfInts[0] = 5; //set element at index 0 to be 5 int num = arrayOfInts[3];

12 פעולות נוספות תחביר מקוצר ליצירת מערך + אתחול:
int[] arr = {1,1,2,3,5,8}; מגדיר מערך בגודל 6 עם האיברים 1,1,2,3,5,8 1 2 3 5 8 משתנה פנימי המציין את גודל המערך System.out.println(arr.length);

13 שגיאה נפוצה בעבודה עם מערכים
java.lang.ArrayIndexOutOfBoundsException זוהי שגיאת זמן ריצה שנובעת מכך שבקוד שלכם ניסיתם לפנות לאיבר במערך עם אינדקס שלא נמצא בתחום. דוגמא לקוד שייגרום לשגיאה זו: int[] arr = new int[6]; ... System.out.println(arr[6]);

14 דוגמא – השוואה של מערכים
כאשר נרצה לבדוק אם שתי מערכים שווים לא נוכל להשוות ביניהם בעזרת == נצטרך לבדוק אם האיברים בתוך המערך שווים.

15 דוגמא – השוואה של מערכים
public static void main(String[] args){ int[] a = {…}; int[] b = {…}; boolean areEqual = (a.length == b.length); for(int i = 0; areEqual && i < a.length; i++){ if (a[i] != b[i]){ areEqual = false; } { System.out.println(areEqual);

16 תרגיל מה יודפס? א ב ג ד public static void main(String[] args){ int[] arr = new int[6]; for (int i = 0; i < arr.length; i++){ if (i < 2){ arr[i] = 1; } else{ arr[i] = arr[i-1] + arr[i-2]; System.out.print(arr[i] + " ");

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

18 תבנית לפתרון השלימו את הקוד כאן
public static void main(String[] args){ int[] arrOfInts = new int[10]; Scanner sc = new Scanner(System.in); int sum = 0; int max,min; // gets input System.out.println("Please enter 10 numbers"); for (int i = 0; i < arrOfInts.length; i++){ arrOfInts[i] = sc.nextInt(); } //computes the sum,max,min of the elements in the array System.out.println("(sum,min,max) = (" +sum+ ",“ +min+ "," +max+ ")"); השלימו את הקוד כאן

19 פתרון public static void main(String[] args){
int[] arrOfInts = new int[10]; Scanner sc = new Scanner(System.in); int sum = 0; int max,min; // gets input System.out.println("Please enter 10 numbers"); for (int i = 0; i < arrOfInts.length; i++){ arrOfInts[i] = sc.nextInt(); } //computes the sum,max,min of the elements in the array min = arrOfInts[0]; max = arrOfInts[0]; for(int i=0; i < arrOfInts.length; i++){ if (min > arrOfInts[i]){ min = arrOfInts[i]; if (max < arrOfInts[i]){ max = arrOfInts[i]; sum += arrOfInts[i]; System.out.println("(sum,min,max) = (" +sum+ ",“ +min+ "," +max+ ")");

20 תרגיל – אינדקס אמצעי במערך
הגדרה: אינדקס אמצעי במערך הוא תא אשר סכום האיברים במערך עד אליו וכולל שווה לסכום האיברים במערך הנמצאים הלאה ממנו. כתבו תוכנית הקולטת 10 מספרים שלמים מהמשתמש לתוך מערך ובודקת האם קיים אינדקס אמצעי במערך. התוכנית תדפיס את האינדקס האמצעי במידה ויש כזה. דוגמא: עבור המערך [1,2,4,6,10,3,2,2,-1,-3] האינדקס האמצעי הוא 3 (ערכו של אינדקס 3 בדוגמא זו הוא 6 והסכום עד אליו כולל אותו הוא 13 וגם ממנו ועד לסוף המערך)

21 תרגיל – אינדקס אמצעי במערך – מה עושים?
נסכם ונשמור במשתנה עזר את סכום כל האיברים במערך. נרוץ בלולאה נוספת מתחילת המערך ונחשב סכום איברים עד לאינדקס בו סכום הביניים שווה להפרש בינו לבין סכום המערך הכולל (מחצית מהסכום). אם קיים כזה סכום נדווח על כך ונחזיר את i (המונה) אם לא והגענו לסוף המערך לא נדווח דבר...

22 פתרון public static void main(String[] args){ int[] arr = new int[10];
Scanner sc = new Scanner(System.in); int sum = 0; int partialSum = 0; boolean foundMiddleIndex = false; for(int i = 0; i < arr.length; i++){ arr[i] = sc.nextInt(); sum += arr[i]; } partialSum = 0; for(int i = 0; i < arr.length && !foundMiddleIndex; i++){ partialSum += arr[i]; if (sum - partialSum == partialSum){ System.out.println("middle index is " + i); foundMiddleIndex = true; הרעיון: נסכום את כל האיברים של המערך. נסכום את כל האיברים עד אשר ההפרש בין סכום כל האיברים עד למקום כלשהו במערך שווה לסכום האיברים שנסכמו במידה ונכון נחזיר true ונדפיס אותו

23 תרגיל- תת מערך עם סכום מקסימלי
בהינתן מערך של מספרים שלמים עליכם לכתוב תוכנית שמוצאת את הסכום המקסימלי של תת מערך שלו (רצף של תאים במערך). השלימו את הקוד כך שיודפס הסכום המקסימלי. דוגמא: עבור המערך : [-2,1,-3,4,-1,2,1,-5,4] תת המערך עם הסכום המקסימלי הוא [4,-1,2,1] וסכומו 6. public static void main(String[] args) { int[] arr =…; //assume that arr is already initialized with values //Fill here the code System.out.println(maxSubArraySum); }

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

25 פתרון public static void main(String[] args){
int arr[] = {-2,1,-3,4,-1,2,1,-5,4}; int maxSubArraySum = arr[0]; int currentSum; for(int i = 0; i < arr.length; i++){ currentSum = 0; for(int j = i; j < arr.length; j++){ currentSum += arr[j]; if (currentSum > maxSubArraySum){ maxSubArraySum = currentSum; } System.out.println(maxSubArraySum);


הורד את "ppt "מבוא לתכנות ב- JAVA מעבדה 4

מצגות קשורות


מודעות Google