JAVA ב תונכתל אובמ 4 הדבעמ - BGUipc202/wiki.files/PS4.pdf · מבוא לתכנות ב- JAVA מעבדה 4 Author: Avi Created Date: 3/29/2020 10:55:44 PM ...
Post on 10-Aug-2020
2 Views
Preview:
Transcript
JAVA-מבוא לתכנות ב4מעבדה
מה בתרגול
(3סוף מעבדה )חזרה –ניפוי שגיאות •
מערכים•
Debugging within Eclipse
קביעתbreakpoint
Debugging within Eclipse
debugמצב
קידום בצעדביצוע צעד
טבלת משתנים
מערך חד מימדי
מערך הוא מבנה המחזיק סדרה של איברים מאותו טיפוס•
(נקבע בעת יצירת המערך)גודל המערך הוא קבוע •
הגישה לכל איבר היא באמצעות אינדקס•
?למה לי מערך
כאשר יש צורך לשמור מספר גדול של משתנים •
מאותו סוג
מבנה מאורגן המאגד בתוכו קבוצה גדולה של •
ערכים שניתן לעבור עליהם באופן שיטתי
יצירת מערך וגישה לאיבריו
int[] arrayOfInts = new int[10];
סוגריים מרובעים
מציינים שאנו
מגדירים מערך
10מערך בגודל
:intשאיבריו מטיפוס 10יצירת מערך בגודל •
: דוגמא לפקודות עם פנייה לאיברים במערך•
arrayOfInts[0] = 5; //set element at index 0 to be 5
int num = arrayOfInts[3];
כל הערכים במערך יאותחלו לפי ערך ברירת , כאשר מגדירים מערך: הערה0כל הערכים במערך יהיו intלדוגמא עבור )java-מחדל שמוגדר ב
(בהתחלה
פעולות נוספות
int[] arr = {1,1,2,3,5,8};
1,1,2,3,5,8עם האיברים 6מגדיר מערך בגודל
1 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);
}
תרגיל
?מה יודפס•
6 5 4 3 2 1. א
5 3 2 1 1 0. ב
8 5 3 2 1 1. ג
5 3 2 1 1 1. ד
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כתבו תוכנית הקולטת •
התוכנית תדפיס את . ובודקת האם קיים אינדקס אמצעי במערך
.האינדקס האמצעי במידה ויש כזה
האינדקס האמצעי [3-,1-,1,2,4,6,10,3,2,2]המערך עבור: דוגמא•
13והסכום עד אליו כולל אותו הוא 6בדוגמא זו הוא 3ערכו של אינדקס )3הוא
(וגם ממנו ועד לסוף המערך
?מה עושים–במערך אינדקס אמצעי –תרגיל
.נסכם ונשמור במשתנה עזר את סכום כל האיברים במערך•
נרוץ בלולאה נוספת מתחילת המערך ונחשב סכום איברים עד •
לאינדקס בו סכום הביניים שווה להפרש בינו לבין סכום המערך
אם קיים כזה סכום נדווח על כך ונחזיר (. מחצית מהסכום)הכולל ...אם לא והגענו לסוף המערך לא נדווח דבר( המונה)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;
}
}
}
תת מערך עם סכום מקסימלי-תרגיל
בהינתן מערך של מספרים שלמים עליכם לכתוב תוכנית שמוצאת •(. רצף של תאים במערך)שלו את הסכום המקסימלי של תת מערך
.השלימו את הקוד כך שיודפס הסכום המקסימלי
תת המערך עם [5,4-,1,2,1-,3,4-,2,1-]: עבור המערך : דוגמא•
.6וסכומו [1,2,1-,4]הסכום המקסימלי הוא
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 1 -5 4
פתרון
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);
}
top related