46
ל''ל ללללל ללל ל''ל ללללל ללל1 ללללללל ללללללל לללל ללללל ללללל ללללל לללל ללללל ללללל ללללל7/03/07 7/03/07 ללללל לללללל ללללל ללללללMath Math - לללללל ל- לללללל לJAVA JAVA

השתלמות מדעי המחשב בשפות חדשות 7/03/07

  • Upload
    zubin

  • View
    88

  • Download
    6

Embed Size (px)

DESCRIPTION

השתלמות מדעי המחשב בשפות חדשות 7/03/07. שימוש במחלקה Math מערכים ב- JAVA. מחלקה Math. כל הפעלות במחלקה הן פעולות סטטיות – אין צורך ביצירת עצם כדי להשתמש בפעולה יש לציין שם המחלקה אין צורך ב- import. http://java.sun.com/javase/6/docs/api/. קבועים של המחלקה Math. - PowerPoint PPT Presentation

Citation preview

Page 1: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 11

השתלמותהשתלמות מדעי המחשב בשפות חדשות מדעי המחשב בשפות חדשות

7/03/077/03/07

MathMathשימוש במחלקה שימוש במחלקה JAVAJAVAמערכים ב-מערכים ב-

Page 2: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 22

MathMath מחלקהמחלקה

כל הפעלות במחלקה הן פעולות סטטיות – אין כל הפעלות במחלקה הן פעולות סטטיות – איןצורך ביצירת עצםצורך ביצירת עצם

כדי להשתמש בפעולה יש לציין שם המחלקהכדי להשתמש בפעולה יש לציין שם המחלקה-אין צורך ב-אין צורך בimportimport

http://java.sun.com/javase/6/docs/api/

Page 3: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 33

MathMathקבועים של המחלקה קבועים של המחלקה

Math.EMath.Eבסיס ללוגריתם טבעי – בסיס ללוגריתם טבעי – Math.PiMath.Pi –– -מספר ה- מספר ה ππ הידועהידוע

System.out.println(Math.E);

System.out.println(Math.PI);

2.718281828459045

3.141592653589793

Page 4: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 44

פעולות שימושיותפעולות שימושיות

שימוששימוש פעולהפעולה

double b=Math.abs(a); double b=Math.abs(a); int b=Math.abs(a);int b=Math.abs(a);

Math.abs(double a)Math.abs(double a)

Math.abs(int a)Math.abs(int a)

double b=Math.sqrt(a);double b=Math.sqrt(a); Math.sqrt(double a)Math.sqrt(double a)

int a=9; int b=Math.sqrt(a); System.out.println(b);

Error: possible loss of precisionfound : doublerequired: int

?

Page 5: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 55

עיגול וקיצוץעיגול וקיצוץ

שימוששימוש פעולהפעולה

long b= Math.round(a); long b= Math.round(a); int b= Math.round(a);int b= Math.round(a);

Math.round(double a) Math.round(double a) Math.round(float a)Math.round(float a)

int b=Math.round(3.14); Error: possible loss of precisionfound : longrequired: int

Math.round(3.14)

Math.round(3.9);

Math.round(-3.14)

Math.round(-3.9)

3

4

-3

-4

intintולא ל-ולא ל- longlongמעגל ל-מעגל ל-

טיפוס ברירת מחדל למספר ממשי הוא double!

Page 6: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 66

??הפלט ידוע. מה היה הקלטהפלט ידוע. מה היה הקלט

double a=IO.readDouble(); double b=-a; if(Math.round(a) == Math.round(b)) IO.writeln("Yes"); else IO.writeln("No");

Yes

-0.5 < a < 0.5

double a=IO.readDouble(); double b=-a; if(Math.abs(Math.round(a))== Math.abs(Math.round(b))) IO.writeln(“Yes"); else IO.writeln("No");

No

-3.5 -0.5 1.5 10.5

IO.writeln(Math.round(1.5)); IO.writeln(Math.round(-1.5));

2-1

Page 7: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 77

!!מי צריך אותו? יש לנו המרהמי צריך אותו? יש לנו המרה

b= (int) Math.round(a);

b=(int) a;

b=(int) (a+0.5);

if(a>=0) b=(int)(a+0.5);else b=(int)(a-0.5);

double a; int b;1.3

1

1

1

1

1.8

2

1

2

2

-1.8

-2

-1

-1

-2

-1.3

-1

-1

0

-1

-1.5

-1

-1

-1

-2

Page 8: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 88

עיגול וקיצוץ - המשךעיגול וקיצוץ - המשך

שימוששימוש פעולהפעולה

double b= Math.rint(a);double b= Math.rint(a); Math.rint (double a)Math.rint (double a)

Math.rint(3.14)

Math.rint(3.9);

Math.rint(-3.14)

Math.rint(-3.9)

3.0

4.0

-3.0

-4.0

4.0

- 4.0

4.0

- 4.0

Math.rint(4.5)

Math.rint(- 4.5);

Math.rint(3.5)

Math.rint(-3.5)

ביותר הקרוב שווה לשלם ממשימחזירה מספר aל-

אם מספר קרוב לשני שלמים – זוגיתוצאה היא מספר שלם !

Page 9: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 99

עיגול וקיצוץ - המשךעיגול וקיצוץ - המשךdouble b= Math.ceil(a);double b= Math.ceil(a); Math.ceil (double a)Math.ceil (double a)

double b= Math.floor(a);double b= Math.floor(a); Math.floor (double a)Math.floor (double a)

Math.ceil(3.14)

Math.ceil(3.9);

Math.ceil(-3.14)

Math.ceil(-3.9)

4.0

4.0

-3.0

-3.0

4.0

- 5.0

3.0

- 4.0

Math.floor(4.9)

Math.floor(- 4.1);

Math.floor(3.5)

Math.floor(-3.5)

•Math.ceil עיגול כלפי מעלה – a (b ≥ a) מ-לא קטן שהוא a שווה לשלם הקרוב ביותר ל-ממשימחזירה מספר

• Math.floor – עיגול כלפי מתה ≥ a (b מ-לא גדול שהוא a שווה לשלם הקרוב ביותר ל-ממשימחזירה מספר •

a)

Page 10: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 1010

מספרים אקראייםמספרים אקראיים

Math.randomMath.random()() וקטן 0.0) גדול או שווה ל-doubleמחזירה מספר אקראי ממשי (

1.0מ-

:[low..highליצירת מספר אקראי בתחום ]

low ≤ num ≤ high

double dNum;

dNum= low + Math.random()*(high-low+1);

Page 11: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 1111

מחירים אקראייםמחירים אקראיים 1000 ש''ח ל-100ליצור מחירים אקראים בין

ש''ח עד שייוצר מחיר הנקלט

double price, prSheq,

prStop=IO.readDouble();

do{

price=100+Math.random()*900;

prSheq=(int)(price*100)/100.0;

System.out.println(prSheq);

}while(prSheq!=prStop);

מהו מחיר אפשרי הגבוה ביותר?

ש''ח999.99

Page 12: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 1212

מספרים אקראייםמספרים אקראיים

Math.randomMath.random()() וקטן 0.0) גדול או שווה ל-doubleמחזירה מספר אקראי ממשי (

1.0מ-

:[low..high) בתחום ]int (שלםליצירת מספר אקראי

low ≤ num ≤ high

int num;

num=low + (int)(Math.random()*(high-low+1));

doubleממשי

כמות אפשרות האפשרויות

הנמוכה ביותר

Page 13: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 1313

מחירים אקראייםמחירים אקראיים 1000 ש''ח ל-100ליצור מחירים אקראים בין

ש''ח עד שייוצר מחיר הנקלט

int sheq, ag; double prSheq, prStop=IO.readDouble(); do{ sheq=100+(int)(Math.random()*900); ag=(int)(Math.random()*100); prSheq=sheq+ag*0.01;}while(prSheq!=prStop);

מהו מחיר אפשרי הגבוה ביותר?

Page 14: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 1414

מספרים אקראייםמספרים אקראיים יש מחלקה מסוימת ליצירת מספרים יש מחלקה מסוימת ליצירת מספרים JavaJavaב-ב-

java.util.Randomjava.util.Randomאקראיים אקראיים ) (כולל)) (כולל)))n-1n-1 ל- ל-00ליצירת מספר אקראי שלם בין ליצירת מספר אקראי שלם בין •

nextInt(int n) משתמשים במתודהמשתמשים במתודה ) בתחום ) בתחום intint ( (שלםשלםליצירת מספר אקראי ליצירת מספר אקראי •

[[low..highlow..high]]::

יצירת עצם Random

importimport java.util.Random;java.util.Random;……Random ran=new Random();Random ran=new Random();int n=low+ran.nextInt(high-low+1);int n=low+ran.nextInt(high-low+1);

Page 15: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 1515

מספרים אקראייםמספרים אקראייםלפעמים רוצים לחזור לאותה סדרה של מספרים

אקראייםimport java.util.Random;. . .Random gnr = new Random(20);for(int i = 0; i < 10; i++) { System.out.print(gnr.nextInt(100) + "; "); }

53; 36; 1; 61; 5; 95; 33; 55; 93; 88;

53; 36; 1; 61; 5; 95; 33; 55; 93; 88;

53; 36; 1; 61; 5; 95; 33; 55; 93; 88

52; 33; 2; 96; 5; 69; 82; 59; 2; 37;

98; 71; 62; 20; 94; 77; 18; 37; 65; 82;

57; 48; 98; 67; 97; 53; 9; 50; 75; 85;

פרמטר ליצירת סידרה

Random gnr = new Random(20); Random gnr = new Random();

טווח מספרים0<=x<100

Page 16: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 1616

פעולות נוספותפעולות נוספות

מחזירה ערך הגדול בין שני מספרים

טיפוס התוצאה – בהתאם לטיפוסים של הפרמטרים

Math.max(double a, double b)Math.max(double a, double b)

Math.max(int a, int b)Math.max(int a, int b)

מחזירה ערך הקטן בין שני מספרים טיפוס התוצאה –

בהתאם לטיפוסים של הפרמטרים

Math.min(double a, double b)Math.min(double a, double b)

Math.min(int a, int b)Math.min(int a, int b)

aמחזירה שורש קובי של

double התוצאה מסוגMath.cbrt(double a)Math.cbrt(double a)

b בחזקה aמחזירה

double התוצאה מסוגMath.pow(double a, double b) Math.pow(double a, double b)

3 a

ba

Page 17: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 1717

פעולות נוספותפעולות נוספות

Math.asin(double a)

Math.acos(double a)

Math.atan(double a)

Math.sin(double a)

Math.cos(double a)

Math.tan(double a)

Math.exp(double a) מחזירה

מחזירה

מחזירה

Math.log(double a) Math.log10(double a)

מחזירה Math.hypot(double a, double b)

ae

aloga10log22 ba

Page 18: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 1818

מערך חד-ממדי

( מערך( מערךarrayarray הוא טיפוס המגדיר אוסף ) הוא טיפוס המגדיר אוסף )סדור, באורך קבוע, של ערכים מטיפוס סדור, באורך קבוע, של ערכים מטיפוס

זהה. זהה.

.תאי המערך ממוספרים על פי מיקומם.תאי המערך ממוספרים על פי מיקומם

,,00מיקומו של התא הראשון הוא מיקומו של התא הראשון הוא

, , 11מיקומו של התא השני הוא מיקומו של התא השני הוא

. . n-1n-1ומיקומו של התא האחרון הוא ומיקומו של התא האחרון הוא

Page 19: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 1919

מערך הוא עצם

הוא יוצרים, שאנו מערך כל הוא בג'אווה, יוצרים, שאנו מערך כל את עצםעצםבג'אווה, את . .תכונות מאפיינות אחר, עצם כל כמו תכונות המערך, מאפיינות אחר, עצם כל כמו המערך,

ופעולות.ופעולות.

lengthlength התכונה האחראית על שמירת אורך המערך – התכונה האחראית על שמירת אורך המערך – , ולכן , ולכן publicpublicכלומר, מספר תאיו. תכונה זו מוגדרת כ-כלומר, מספר תאיו. תכונה זו מוגדרת כ-

נוכל לקבל את ערכה על ידי פנייה אליה באופן הבא:נוכל לקבל את ערכה על ידי פנייה אליה באופן הבא:a.lengtha.length

ערכה של ערכה שלlengthlength נקבע בעת יצירת המערך, ואינו ניתן נקבע בעת יצירת המערך, ואינו ניתן לשינוי לאחר מכן. לשינוי לאחר מכן.

Page 20: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 2020

מערך הוא עצם

:ואחזורואחזור עדכוןעדכון, , יצירתויצירתופעולות הממשק של המערך הן: פעולות הממשק של המערך הן ערכו של תא במערך.ערכו של תא במערך.

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

התא. התא. לדוגמה: לדוגמה:

aa: : a[0]a[0]גישה לערך המוצב בתא הראשון במערך גישה לערך המוצב בתא הראשון במערך - aa: : a[a.length - a[a.lengthגישה לערך המוצב בתא האחרון במערך גישה לערך המוצב בתא האחרון במערך

1]1]

Page 21: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 2121

מערך – לזכור!מערך – לזכור!

בשפת איננו טיפוס בסיסימערך Java.

לא די בהצהרה על מערך, הצהרה אינה יוצרת אתתאי הזיכרון המתאימים.

כדי ליצור את תאי המערך יש להשתמש בפעולהnew.

Page 22: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 2222

הצהרה על מערך שלמים בגודל הצהרה על מערך שלמים בגודל 1010

99 – – 00 מצייני המערך הם בתחום מצייני המערך הם בתחום

:פנייה לאברי המערך כרגיל באמצעות אינדקס: פנייה לאברי המערך כרגיל באמצעות אינדקס arrEx1]3[arrEx1]3[

int][ arrEx1 = new int]10[;int][ arrEx1 = new int]10[;

טיפוס המשתנה הוא מערך

שלמים

שם המערך

תאי 10יצירת המערך

Page 23: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 2323

חריגה מתחומי המערך

:אם ננסה לגשת לתא שאינו קיים במערך, למשל

a]-2[

כי "הודעת החריגה" הבאה, המעידה נקבל את ניסינו לגשת למיקום החורג מגבולות המערך:

ArrayIndexOutOfBoundException טעות בזמן ריצה!

:!גם טעות a]a.length[

Page 24: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 2424

טיפוס של מערך

בשפת ג'אווה טיפוס המערך

int][ מערך של מספרים שלמים

char][ מערך של תווים

double][ מערך של מספרים עשרוניים

boolean][ מערך של ערכים בוליאניים

String][ מערך של עצמים מסוגString

Turtle][ מערך של עצמים מסוגTurtle

Page 25: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 2525

הגדרה ויצירת מערךהגדרה:

<arrayType>][ <arrayName;> int][ grades;

:יצירה <arrayName> = new <arrayType>]<arraySize>[;

grades = new int]10[;הגדרה ויצירה:

int][ grades = new int]10[; -0אחרי היצירה המערך המספרי מאותחל ב

Page 26: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 2626

??מערך מאותחל – מה זאת אומרתמערך מאותחל – מה זאת אומרת int[] a1=new int[10]; System.out.println)Arrays.toString)a1((;

boolean [] a3=new boolean[10]; System.out.println)Arrays.toString)a3((;

double [] a2=new double[10]; System.out.println)Arrays.toString)a2((;

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

[false, false, false, false, false, false, false, false, false, false]

מתודה ממחלקה java.util.Arrays

Page 27: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 2727

הצהרה משולבת באתחולהצהרה משולבת באתחול

תאים3במקרה הזה יוקצה מערך של תווים ובו ) וערכיהם בהתאמה כמופיע 0,1,2(שמצייניהם

בסוגרים ה- {}

char charArr ] [ = {‘*’, ‘p’, ‘+’ };

ניתן לבצע הקצאת זיכרון לאברי מערך תוךאתחולם על פי רשימת אתחול. כדי

0 1 2

‘*’ ‘p’ ‘+’

Page 28: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 2828

מערך – לזכור!מערך – לזכור!

ניתן להצהיר על מערך בכל מקום בתוכנית

:ניתן אף לקלוט גודל של המערך

int size=IO.readInt();

int][ arrEx1 = new int]size[;

או

int][ arrEx1 = new int]IO.readInt()[;

Page 29: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 2929

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

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

double sum=0; int num=IO.readInt(); int grades][=new int]num[; for(int i=0;i<grades.length;i++){ grades]i[=IO.readInt(); sum+=grades]i[;} double avg=sum/num; for(int i=0;i<grades.length;i++){ if(grades]i[>avg)IO.writeln(i+" " +grades]i[);}

Page 30: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 3030

מערכים – קצת יותר לעומק

בשתי a1 אפשר להצהיר על מערךדרכים:

int [] a1;

int a1[[;

אפשר לשלב בשורה אחת עם הצהרות על משתנים מאותו טיפוס.

int numbers [], num1, num2;

int [] numbers, num1, num2;מהו הבדל?

Page 31: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 3131

מערך הוא עצםמערך הוא עצם עצםעצםערך של משתנה מטיפוס מערך אף הוא ערך של משתנה מטיפוס מערך אף הוא.. מצביעמצביעכלומר, ערך של משתנה מטיפוס מערך הוא כלומר, ערך של משתנה מטיפוס מערך הוא.. הקצאת הזיכרון למערך מתבצעת למעשה בשני שלבים הקצאת הזיכרון למערך מתבצעת למעשה בשני שלבים

עיקריים:עיקריים:.הקצאת מצביע אל המערך.הקצאת מצביע אל המערך.הקצאת תאי המערך.הקצאת תאי המערך

int][ a1;

a1 = new int]10[;

אוint][ a1 = new int]10[;

Page 32: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 3232

מערכיםמערכים

int][ a1;

a1= new int]10[;

for (int i=0; i<10; i++) a1]i[ = i;

int][ a2;

a2= a1;

00 00 00 00 00 00 00 00 00 00

a1

a1

00 11 22 33 44 55 66 77 88 99a1

a2

00 11 22 33 44 55 66 77 88 99

a2

a1

Page 33: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 3333

מערכים - המשךמערכים - המשך

int][ a1;

System.out.println(a1);

a1=new int]10[;

System.out.println(a1);

System.out.println(a1]9[);

for(int i=0;i<10;i++)a1]i[=i;

System.out.println(a1);

System.out.println(a1]9[);

int][ a2;

a2=a1;

System.out.println(a2);

System.out.println(a2]9[);

]I@63b2e6

0

]I@63b2e6

9

]I@63b2e6

9

//Error: variable a1 might not have been initialized

Page 34: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 3434

מערכיםמערכים

Int][ a1= new int]10[;

for (int i=0; i<10; i++) a1]i[ = i;

int][ a2=new int]10[;

a2= a1;

00 00 00 00 00 00 00 00 00 00a1

00 22 44 66 88 1010 1122

1414 1616 1818a2

00 11 22 33 44 55 66 77 88 99

a2

a1

00 00 00 00 00 00 00 00 00 00

for (int i=0; i<10; i++) a2]i[ =2* i;

a1 00 11 22 33 44 55 66 77 88 99

a2

Page 35: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 3535

??מה זה עושהמה זה עושהint][ a1={1,2,3,4,5}; int][ a2={10,20,30,40,50};

int][ a3; a3=a1; a1=a2; a2=a3; for(int i=0; i<a2.length;i++)System.out.print(a2]i[+" ");

1 2 3 4 5

Page 36: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 3636

מערך הוא עצם

הוא יוצרים, שאנו מערך כל הוא בג'אווה, יוצרים, שאנו מערך כל את עצםעצםבג'אווה, את . .תכונות מאפיינות אחר, עצם כל כמו תכונות המערך, מאפיינות אחר, עצם כל כמו המערך,

ופעולות.ופעולות.

lengthlength התכונה האחראית על שמירת אורך המערך – התכונה האחראית על שמירת אורך המערך – , ולכן , ולכן publicpublicכלומר, מספר תאיו. תכונה זו מוגדרת כ-כלומר, מספר תאיו. תכונה זו מוגדרת כ-

נוכל לקבל את ערכה על ידי פנייה אליה באופן הבא:נוכל לקבל את ערכה על ידי פנייה אליה באופן הבא:a.lengtha.length

ערכה שלlength ,ואינו נקבע בעת יצירת המערךניתן לשינוי לאחר מכן.

Page 37: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 3737

?? lengthlength..מהי תכונה מהי תכונה int][ a; System.out.println(a.length);

Error: variable a might not have been initialized

int][ a= null; System.out.println(a.length); NullPointerException:

int][ a={10,20,30}; System.out.println(a.length);

3

int][ a=new int]3[; System.out.println(a.length); 3

int][a=new int]0[; System.out.println(a.length); ?0

Page 38: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 3838

??האם זה חריגההאם זה חריגה

int][ a1=new int]10[;

for(int i=0; i<a1.length;i++)a1]i[=i;

int][ a2=new int]5[;

for(int i=0; i<a2.length;i++)a2]i[=i*10;

a2=a1;

for(int i=5; i<10;i++)System.out.print(a2]i[+" ");

5 6 7 8 9

5

a2.length

ArrayIndexOutOfBoundExceptionint ][ a=new int]5[; a]8[=10;

Page 39: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 3939

מעיצוב - ליסודותמעיצוב - ליסודות

int][ a2=new int]0[; for(int i=0; i<a1.length; i++) if(a1]i[%2==0){ int][ a3=new int]a2.length+1[; for(int j=0; j<a2.length; j++)a3]j[=a2]j[; a3]a2.length[=a1]i[; a2=a3;} a1=a2;

כתוב תוכנית אשר ומוחקת מקבלת מערך

את כל האיברים ממנוהא-זוגיים

int][ a1={0,1,2,3,4,5,6,7,8,9};

for(int i=0;i<a1.length;i++)System.out.print(a1]i[+" ");

0 2 4 6 8

Page 40: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 4040

int a=100;

char ch=a;

Error: possible loss of precisionfound : intrequired: char

char ch=‘a’;

int a=ch;

int[] a=new int[10]; char[] ch=a;

Error: incompatible typesfound : int[]required: char[]

char[] ch=new char[10]; int[] a=ch;

Error: incompatible typesfound : char[]required: int[]

int][ a1=null;char][ a2=null;if(a2==a1)System.out.println("Yes"); else System.out.println("No");

?

Error: incomparable types: char[] and int[]

כאשר טיפוסים שונים...

Page 41: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 4141

מערכים ואיבריהםמערכים ואיבריהם

int][ a2={65,66,67,68,69,70,71,72}; char][ a1=new char]8[; for(int i=0;i<a2.length;i++)a1]i[=(char)a2]i[; for(int i=0;i<a1.length;i++)System.out.print(a1]i[+" ");

A B C D E F G H

Page 42: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 4242

ומה עם ההוראה?ומה עם ההוראה? - - מערכיםמערכים:הקצאת תאי המערך הקצאת תאי המערךבאשר ל:באשר ל

כך צריך להגדיר... וזהו., כך צריך להגדיר... וזהו.לא קרה כלוםלא קרה כלום ,:היות משתנה המערך - מצביע היות משתנה המערך - מצביעבאשר ל:באשר ל

לא לעשות השמה של מערך אל , לא לעשות השמה של מערך אל לשים לבלשים לב ,מערך, כי כך אובד הקשר לכל חלקי הזיכרון מערך, כי כך אובד הקשר לכל חלקי הזיכרון

שהוקצו למערך אליו משימים.שהוקצו למערך אליו משימים.

הזיכרון עצמו לא מטריד אותנו..., אבל אין הזיכרון עצמו לא מטריד אותנו..., אבל אין בזה הגיון.בזה הגיון.

Page 43: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 4343

ומה עם ההוראה?ומה עם ההוראה? - - מערכיםמערכיםאם רוצים להעתיק מערך, יש פעולה , אם רוצים להעתיק מערך, יש פעולה טיפטיפ ,

מתאימה של המערכת, עבור שני מערכים מתאימה של המערכת, עבור שני מערכים שהוצהרו והוקצו התאים שלהם:שהוצהרו והוקצו התאים שלהם:

SystemSystem..arraycopyarraycopy((a1,0,a2,0,10);a1,0,a2,0,10);

, , 00 החל מן המקום החל מן המקום a1a1קרי: העתק מן המערך קרי: העתק מן המערך תאים תאים 1010, , 00 החל מן המקום החל מן המקום a2a2אל המערך אל המערך

בהתאמה. כל הערכים הנומריים יכולים בהתאמה. כל הערכים הנומריים יכולים להיות מותאמים כנדרש.להיות מותאמים כנדרש.

Page 44: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 4444

String Arrays.toString)int[] a(String Arrays.toString)int[] a( boolean Arrays.equals)int[] a, int[] b(boolean Arrays.equals)int[] a, int[] b( void Arrays.fill)int[] a, int value(void Arrays.fill)int[] a, int value( void Arrays.fill)int[] a, int fromIndex, void Arrays.fill)int[] a, int fromIndex, int toIndex, int value(;int toIndex, int value(; void Arrays.sort)int[] a(void Arrays.sort)int[] a( void Arrays.sort)int[] a, int fromIndex,sort)int[] a, int fromIndex,

int toIndex( int toIndex(

java.util.Arraysjava.util.Arraysמחלקה מחלקה

Page 45: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 4545

java.util.Arraysjava.util.Arraysמחלקה מחלקה import java.util.*;… int][ a1=new int]10[; for(int i=0;i<10;i++)a1]i[=10-i; System.out.println(a1); System.out.println(Arrays.toString(a1));

Arrays.sort(a1);

System.out.println(Arrays.toString(a1));

import java.util.*;… int][ a1=new int]10[; for(int i=0;i<10;i++)a1]i[=9-i; System.out.println(a1); System.out.println(Arrays.toString(a1));

Arrays.sort(a1);

System.out.println(Arrays.toString(a1));

]0, 1, 2, 3, 4, 5, 6, 7, 8, 9[

]9, 8, 7, 6, 5, 4, 3, 2, 1, 0[

]I@63b2e6

Page 46: השתלמות  מדעי המחשב בשפות חדשות 7/03/07

ד''ר יבגני קנלד''ר יבגני קנל 4646

פעולות שימושיותפעולות שימושיותספירת תאים העונים ספירת תאים העונים

לתנאילתנאימילוי מערך על-ידי קליטהמילוי מערך על-ידי קליטה

בדיקה האם ערך קייםבדיקה האם ערך קיים מילוי מערך במספרים מילוי מערך במספרים אקראייםאקראיים

בדיקה האם מערך ממויןבדיקה האם מערך ממוין מילוי לפי כלל מסויםמילוי לפי כלל מסוים

בדיקה האם "פלינדרום"בדיקה האם "פלינדרום" הדפסת מערךהדפסת מערך

החלפת זוגות תאים החלפת זוגות תאים צמודיםצמודים

הדפסה מערך בסדר הפוךהדפסה מערך בסדר הפוך

הפיכת מערךהפיכת מערך סיכום תאי מערךסיכום תאי מערך

השוואות שני מערכים: השוואות שני מערכים: האם זהים, האם זרים...האם זהים, האם זרים...

סיכום ערכים במערך העונים סיכום ערכים במערך העונים )זוגיים, )זוגיים, לתנאי מסוים לתנאי מסוים

דו-ספרתיים(דו-ספרתיים(