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

Slides:



Advertisements
מצגות קשורות
תכנות בשפת C תרגול 11 - קבצים.
Advertisements

תוכנה 1 בשפת Java שיעור מספר 5: עצמים
הרצאה 02 סוגי משתנים קרן כליף.
Computer Programming Fall 2012 תרגול 6 פונקציות
מבוא לתכנות ב-JAVA מעבדה 1
תוכנה 1 תרגול 13 – סיכום.
תרגול 11: רקורסיה ופיתוח טלסקופי
תרגול 1: סביבת העבודה ומבוא ל-Java
לולאות Department of Computer Science-BGU 19 יולי 19.
נערך ע"י אריק הוד, הגימנסיה העברית הרצליה
תרגול 5: לולאות ומערכים.
תוכנה 1 תרגול 12 – סיכום.
תרגול מס' 8 משתנים מיוחסים מבוא ל-C++ קלט/פלט ב-C++
תירגול 10: מבנים (structs) וקבצים
Marina Kogan Sadetsky –
רמי כהן, מדעי המחשב, הטכניוןכל הזכויות שמורות ©
Jump tables, review questions
הרצאה 3: משפטים, תנאים ולולאות
מבוא למדעי המחשב הרצאה מספר 12: רקורסיה
תכנות בשפת C תרגול 11 רשימות מקושרות מבנים
תרגול Introduction to C - Fall Amir Menczel.
פעולות אריתמטיות קרן כליף.
Computer Programming תרגול 1 Summer 2016
תירגול 11: מיונים וחיפוש בינארי
נערך ע"י אריק הוד הגימנסיה העברית הרצליה
תירגול 3: לולאות, קלט, וטיפוסים
תכנות בשפת C תרגול 8 רקורסיה
Engineering Programming A
תירגול 8:מצביעים והקצאה דינאמית
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
תרגול 6: פונקציות, סוגי משתנים, top-down design
תירגול 2: מבוא לתיכנות ב-C
רובוטיקה תרגול שימוש בלולאות
פתרון של מערכת משוואות לינארית
כל הזכויות שמורות לגבריאל אנקרי © 2017
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
Web Services Delegates and Events ליווי מקצועי : ארז קלר
מבוא לתכנות מונחה עצמים Object Oriented Programming
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
הרצאה 10: אלגוריתמי מיון רקורסיביים Merge sort ו-Quick sort
תורת הקומפילציה תרגול 9: תרגום לקוד ביניים
פרופ' מוטי בן-ארי המחלקה להוראת המדעים מכון ויצמן למדע
מבוא לתכנות למערכות מידע
אלגוריתמי מיון רקורסיביים
המשך תכנות מונחה עצמים תרגול מס' 9.
כל הזכויות שמורות לגבריאל אנקרי © 2017
תרגול 13 : חזרה נכתב על-ידי לימור ליבוביץ נערך ע"י ישראל גוטר
המודל ההיסטורי של התפתחות אמצעי התקשורת:
מת"מ מעבדה 7-8 רשימות.
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
תוכנה 1 תרגול - Generics.
שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית
מבוא לתכנות בWINDOWS ד"ר אבי רוזנפלד.
מבוא למדעי המחשב סמסטר ב' – 2008 מרצה: יעל סיגל מתרגל: ענבל בודובסקי.
תרגול 12: backtracking.
מצביעים Pointers – המשך...
Data Structures, CS, TAU, Perfect Hashing
הצג את עצמך, את עמותת תפוח ואת נושא הפעילות.
מעבדה 2- עיצוב (עבור חלק ג)
תרגול מס' 7: Memoization Quicksort תרגילים מתקדמים ברקורסיה
עקרונות תכנות מונחה עצמים תרגול 9:C++ - תרגילים
Java Programming רשימות מקושרות - המשך
Engineering Programming A
רשימות מקושרות עבודה עם קבצים דוגמה
תמליל מצגת:

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

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

Debugging within Eclipse קביעת breakpoint

Debugging within Eclipse

מצב debug

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

טבלת משתנים

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

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

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

יצירת מערך וגישה לאיבריו יצירת מערך בגודל 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];

פעולות נוספות תחביר מקוצר ליצירת מערך + אתחול: 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);

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

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

דוגמא – השוואה של מערכים 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);

תרגיל מה יודפס? א. 1 2 3 4 5 6 ב. 0 1 1 2 3 5 ג. 1 1 2 3 5 8 ד. 1 1 1 2 3 5 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] + " ");

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

תבנית לפתרון השלימו את הקוד כאן 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+ ")"); השלימו את הקוד כאן

פתרון 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+ ")");

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

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

פתרון 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 ונדפיס אותו

תרגיל- תת מערך עם סכום מקסימלי בהינתן מערך של מספרים שלמים עליכם לכתוב תוכנית שמוצאת את הסכום המקסימלי של תת מערך שלו (רצף של תאים במערך). השלימו את הקוד כך שיודפס הסכום המקסימלי. דוגמא: עבור המערך : [-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); }

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

פתרון 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);