מבוא למדעי המחשב תרגול מס' 2

45
בבבב בבבבב בבבבב ססססס סס'2 םםםםםם בבבבבב בבבבבבב בבבבבבבבב בבבבבבבב בבבבבבב בבבבבבבMath בבבב בבבבבבב בבבבב בבבבבבב1

Upload: sharon-kelly

Post on 31-Dec-2015

34 views

Category:

Documents


0 download

DESCRIPTION

מבוא למדעי המחשב תרגול מס' 2. נושאים משתנים טיפוסים אופרטורים פונקציות מתמטיות מהמחלקה Math המרת טיפוסים תנאים ולולאות. תזכורת משיעור קודם. תזכורת. תכנית מחשב נכתבת כטקסט בקובץ. הטקסט כתוב בשפת תכנות והוא מכיל את ההוראות המהוות את התוכנית. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: מבוא למדעי המחשב תרגול מס' 2

מבוא למדעי המחשב2תרגול מס'

נושאים משתניםטיפוסיםאופרטורים פונקציות מתמטיות מהמחלקהMathהמרת טיפוסיםתנאים ולולאות

1

Page 2: מבוא למדעי המחשב תרגול מס' 2

2

תזכורת משיעור קודם

Page 3: מבוא למדעי המחשב תרגול מס' 2

...תזכורת

.תכנית מחשב נכתבת כטקסט בקובץ והוא מכיל את בשפת תכנותהטקסט כתוב

ההוראות המהוות את התוכנית. או הידורהתוכנית עוברת תהליך הנקרא(

קומפילציה( ואחריו מקבלים קובץ הניתן להרצה.

Javaבקורס זה נכתוב תוכניות בשפה

נשמרות בקבצים בעלי סיומת Javaתוכניות ב java.

3

Page 4: מבוא למדעי המחשב תרגול מס' 2

תוכנית ראשונה

. שימו לב Hello.javaהקלידו את התוכנית הבאה בקובץ לסימני פיסוק, ואותיות גדולות וקטנות.

/* This program prints "Hello World!" on the screen */

public class Hello { public static void main(String[] args) {

System.out.println("Hello World!"); }}

4

Page 5: מבוא למדעי המחשב תרגול מס' 2

5

משתניםנושא ראשון: .

Page 6: מבוא למדעי המחשב תרגול מס' 2

משתנים וטיפוסים?מהו משתנה

( הוא שם סימבולי המשוייך למקום variable ) משתנהבזיכרון אשר יכול להכיל ערכים שונים במהלך ריצת

התוכנית.

?למה צריך משתנים

ניתן להשתמש במשתנים על מנת לשמור ערכים, לשימוש בשלב מאוחר יותר בתוכנית.

(. הטיפוס קובע אילו type )טיפוס, לכל משתנה יש Javaבסוגי ערכים המשתנה יכול להכיל בזמן ריצת התוכנית.

6

Page 7: מבוא למדעי המחשב תרגול מס' 2

משתנים וטיפוסיםטיפוס המשתנה

( הקובע אילו סוגי type )טיפוס, לכל משתנה יש Javaבערכים המשתנה יכול להכיל בזמן ריצת התוכנית.

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

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

סוגי טיפוסים

objects ו primitives יש שני סוגים של טיפוסים: Javaל.primitivesהיום נדבר רק על

7

Page 8: מבוא למדעי המחשב תרגול מס' 2

הגדרת משתנים

יש להכריז על שמו של Javaכדי להגדיר משתנה ב•המשתנה וטיפוסו.

למשל זוהי הגדרה על משתנה בשם מטיפוס )מספר •שלם(.

int num;

אפשר להגדיר מספר משתנים מאותו טיפוס בשורה אחת:•

int num1, num2;

8

Type

Identifier

Page 9: מבוא למדעי המחשב תרגול מס' 2

קבועים( הוא שם סימבולי המשוייך למקום בזיכרון constant) קבוע

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

אחת בלבד במהלך כל התוכנית.דוגמה:•

final int PASS_GRADE = 56;int grade;grade = PASS_GRADE - 1;

9

Page 10: מבוא למדעי המחשב תרגול מס' 2

טווח הכרה של משתנה

( הוא האזור בתוכנית scope) של משתנה טווח ההכרהשבו המשתנה מוגדר וניתן להשתמש בו.

טווח ההכרה של משתנה תלוי בבלוק בו הוא מוגדר )בלוק •מצוין ע"י סוגריים מסולסלים(.

טווח ההכרה של המשתנה מתחיל בשורה שבו המשתנה •מוגדר ומסתיים בסוף הבלוק שבו נמצאת הגדרת

המשתנה.

10

Page 11: מבוא למדעי המחשב תרגול מס' 2

11

.טווח הכרה של משתנים, תרגילוןpublic static void main(String[] args) { int y = 3; { int x = 1; //is y accessible from here? } if (true) { int x = 2; { int z = 1; //what will be printed? System.out.println(x + y + z); } } //what does the following line will print: System.out.println("x is: " + x); int x = 3; }

Page 12: מבוא למדעי המחשב תרגול מס' 2

פעולת השמה

( משימה ערך במקום בזיכרון assignment) השמהפעולת אליו משוייך המשתנה.

למשתנה יש לרשום:3לדוגמא: כדי להשים את הערך

num = 3

פעולת השמה חייבת להופיע בתוך טווח ההכרה של המשתנה.

* ניתן להגדיר את המשתנה ולבצע השמה בשורה אחת:

int num1 = 1;

12

Page 13: מבוא למדעי המחשב תרגול מס' 2

אין להשתמש במשתנה שלא ! קיבל ערך

מה ידפיס הקוד הבא?

13

public static void main(String[] args) { int x; System.out.println("x is: " + x); }

Page 14: מבוא למדעי המחשב תרגול מס' 2

14

טיפוסיםנושא שני: .

Page 15: מבוא למדעי המחשב תרגול מס' 2

טיפוסיםטיפוס של משתנה קובע:

אילו ערכים יכול המשתנה להכילמהן הפעולות שניתן לבצע על המשתנה

רקע( המכיל binary)הזיכרון במחשב הוא זיכרון בינארי •

ביטים. . 1 או 0(- יחידת זיכרון בינארית. ביט יכול להיות bit )ביט• בתיםזיכרון המחשב נמדד ביחידות בסיסיות הנקראות •

(bytes .)1 byte = 8 bitערכים המאוחסנים בזיכרון המחשב נשמרים בבתים. •

מספר הבתים שדורש אחסון של משתנה תלוי בטיפוסו..Binary - Wikipediaלעוד מידע בנושא ניתן לפנות ל• 15

Page 16: מבוא למדעי המחשב תרגול מס' 2

16

זיכרון המחשב

ניתן לחשוב על זיכרון המחשב כשורה ארוכה •)מאוד( של נקודות שחורות ולבנות.

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

Page 17: מבוא למדעי המחשב תרגול מס' 2

17

זיכרון המחשב

אם המחשב רוצה לשמור ערך שיכול לדוגמא:•, המחשב יוכל 3 ל 0להיות כל מספר בין

נקודות )או ביטים( כך:2להשתמש ב

לפי השיטה הנ"ל, כמה ביטים ידרשו למחשב כדי להחזיק ערך •?7 ל 0שיכול להיות בין

= 0 = 1

= 2 = 3

Page 18: מבוא למדעי המחשב תרגול מס' 2

טיפוסים פרימיטיביים טיפוסים נומריים שלמים1.

טיפוסים המייצגים מספרים שלמים: byte, short, int, long

למשל: long longNum, longNum2;byte byteNum = 125;longNum = 1234567890;

. טיפוסים ממשיים2. double, floatהטיפוסים הממשיים הם

למשל:double doubleNum;doubleNum = 3.75;

18

Page 19: מבוא למדעי המחשב תרגול מס' 2

טיפוסים פרימיטיביים . טיפוסים לוגיים3

. משתנים מטיפוס זה יכולים booleanהטיפוס הלוגי נקרא .false או trueלקבל ערך

boolean indicator; indicator = true;

. תווים4. סימן בודד כגון אות, ספרה, רווח, סימן קריאה וכו'. charתו:

תחום בגרשיים בודדות )char )char literalערך מסוג backslash'. לפני סימן מיוחד יש תו a', 'Aלמשל, ''(newline '\n', tab '\t' , backspace '\b)למשל,

char capitalN;capitalN = 'N';

19

Page 20: מבוא למדעי המחשב תרגול מס' 2

טבלת סיכום טיפוסיםטיפוס bytesמספר ה ערכים

byte 1 -27 to 27-1

short 2 -215 to 215-1

int 4 -231 to 231-1

long 8 -263 to 263-1

char 2 Unicode chars

boolean from 1 bit to 1 byte depending on

padding

true, false

float 4  from 1.40129846432481707e-45 to 3.40282346638528860e+38

)positive or negative(

double 8 4.94065645841246544e-324d to 1.79769313486231570e+308d

)positive or negative(

20

Page 21: מבוא למדעי המחשב תרגול מס' 2

21

אופרטוריםנושא שלישי: .

Page 22: מבוא למדעי המחשב תרגול מס' 2

אופרטורים 3 או 1,2 סימנים מיוחדים שמבצעים פעולה ספציפית על אופרטורים:

אופרנדים.

אופרטורים אריתמטיים

מבצעים פעולות חשבוניות על אופרנדים אריתמטיים )מספרים או משתנים מטיפוס אריתמטי(:

22

Page 23: מבוא למדעי המחשב תרגול מס' 2

1דוגמה /* 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);

}}

23

c = 8c = 16

Page 24: מבוא למדעי המחשב תרגול מס' 2

2דוגמה

התוכנית הבאה מדגימה את סדר הפעולות של הפעולות האריתמטיות:

24

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:120second number is:102

Page 25: מבוא למדעי המחשב תרגול מס' 2

25

שאלה

, 0 ספרות שונות מ3בהנתן מספר בין כיצד ניתן לחשב את המספר שיתקבל

מהפיכת סדר הספרות של המספר ?הראשון

m=321 לחשב את המספר n=123 בהנתן לדוגמא:

Page 26: מבוא למדעי המחשב תרגול מס' 2

פתרון

26

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 numberint 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

Page 27: מבוא למדעי המחשב תרגול מס' 2

אופרטורים יחסיים אופרטורים המשווים בין שני מספרים ונותנים תשובה 6 יש Javaב

(.false או trueבוליאנית )

Operator Name Description

x < y Less than true if x is less than y, otherwise false.

x > y Greater than true if x is greater than y, otherwise false.

x <= y Less than or equal totrue if x is less than or equal to y, otherwise

false.

x >= y Greater than or equal

totrue if x is greater than or equal to y, otherwise

false.

x == y Equal true if x equals y, otherwise false.

x != y Not Equal true if x is not equal to y, otherwise false.27

Page 28: מבוא למדעי המחשב תרגול מס' 2

דוגמה

28

import java.util.Scanner;// This program compares two numbers with relational operatorspublic 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:10Enter the second number:20x<y is truex>y is falsex<=y is truex>=y is falsex==y is falsex!=y is true

Page 29: מבוא למדעי המחשב תרגול מס' 2

אופרטורים לוגייםאופרטורים לוגיים פועלים על ערכים מטיפוס לוגי )בוליאני(

(.false או trueוגם נותנים תשובה בוליאנית )Operat

orNam

e Description

x && y And True 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 Not True if x is false, otherwise false.

29

מתבצעת משמאל לימין.Or ו And* הערכת האופרטורים הלוגיים

Page 30: מבוא למדעי המחשב תרגול מס' 2

דוגמה

30

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 truestate is true

Enter the first number:10Enter the second number:9

Page 31: מבוא למדעי המחשב תרגול מס' 2

31

.Mathנושא רביעי:

Page 32: מבוא למדעי המחשב תרגול מס' 2

Mathהמחלקה

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

Math.abs)x( ערך מוחלט של – x.Math.max)x1,x2(, Math.min)x1, x2( המינימום –

.x2 ו x1והמקסימום )בהתאמה( בין Math.pow)x, y( מחשב את – x בחזקת y )xy(.Math.sqrt)x( שורש ריבועי של – x.Math.random לא כולל 1 ל 0)( – מחזיר מספר אקראי בין(

1).

Math.PI קבוע המייצג את הערך – )3.14159...(32

Page 33: מבוא למדעי המחשב תרגול מס' 2

דוגמהpublic class UseMath { public static void main(String[] args){

// This is an example of using Math methodsdouble 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);}

}

33

max) )|-3|(^2 , Pi ( = 9.0A random number between 0 and 1: 0.9764623048094814

Java ומחלקות רבות נוספות כלולות בספריות Mathהמחלקה .JREהכלולות בהתקנת ה

Java ומחלקות נוספות הכלולות ב Mathמידע מפורט על מחלקת ניתן למצוא בקישור

http://download.oracle.com/javase/6/docs/api/java/lang/Math.html

Page 34: מבוא למדעי המחשב תרגול מס' 2

34

.Castingנושא חמישי:

Page 35: מבוא למדעי המחשב תרגול מס' 2

35

שינוי צורת הסתכלות

של טיפוסים Castingניתן לחשוב על •פרימיטיביים כאל שינוי צורת הסתכלות:

double : 48.84 int: 48 )Narrowing Primitive Conversion(

Int : 48 double: 48.0 )Widening Primitive Conversion(

Int : 48 char: ‘0’

WAT!

Page 36: מבוא למדעי המחשב תרגול מס' 2

(Castingהמרת טיפוס ) יש טיפוס ספציפי. Javaלכל משתנה ב

מה קורה כאשר מערבים טיפוסים שונים בביטוי? • מטפלת בטיפוסים השונים Javaבמקרים מסוימים •

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

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

בפעולה הינו זהה.long y, w;long z = w + y;

.long הינו מטיפוס w+yהערך של הביטוי

36

Page 37: מבוא למדעי המחשב תרגול מס' 2

כאשר מרכיבי הביטוי הינם מטיפוסים שונים הביטוי • ביותר.הכוללהמתקבל יהיה מהטיפוס של המרכיב

הסדר של טיפוסים המספרים מן הפחות כולל לכולל ביותר •.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

(Castingהמרת טיפוס )

37

Page 38: מבוא למדעי המחשב תרגול מס' 2

. המרות יזומות2ניתן לבצע המרת טיפוס ע"י שימוש בפעולת השמה.

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

int i = 5;

double d;d = i; // d is 5.0

המרה כזו אפשרית רק כאשר הטיפוס של המשתנה בצד מהטיפוס של הביטוי בצד ימין.כללי יותרשמאל

(Castingהמרת טיפוס )

38

Page 39: מבוא למדעי המחשב תרגול מס' 2

במקרה ההפוך, כאשר הטיפוס של המשתנה בצד שמאל •כללי פחות מהטיפוס של הביטוי בצד ימין, נשתמש

.)<type cast : )<typeבאופרטור ה 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;

(Castingהמרת טיפוס )

39

Page 40: מבוא למדעי המחשב תרגול מס' 2

40

.תנאים ולולאותנושא שישי:

Page 41: מבוא למדעי המחשב תרגול מס' 2

if-elseמשפט הוא מבנה בסיסי בשפה המאפשר לשלוט if-elseמשפט

בזרימת התוכנית. למשפט זה יש שני צורות:

• if )<condition>({<statement>

}

• if )<condition>({<statement>

} else {<alternative>

}41

Page 42: מבוא למדעי המחשב תרגול מס' 2

ifדוגמה ל-

42

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.");}

}}

Page 43: מבוא למדעי המחשב תרגול מס' 2

לולאותלולאה מאפשרת לחזור על פעולות מספר פעמים כל

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

whileלולאת 1.while ) <condition> ( {

<statement>}

forלולאת 2.for) <initial>; <condition> ; <update>( {

<statement>}

43

1

2

1 2 1 2 1 2 … 1 2 1

0 1

2

3

0 1 2 3 1 2 3 1 2 3 … 1 2 3 1

Page 44: מבוא למדעי המחשב תרגול מס' 2

דוגמה

44

import java.util.Scanner; // compute n! using while and for sentences.public class Factorial {

public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("Enter a non-negative number:");int n = sc.nextInt();// 1. using whileint fact = 1;int i = 1;while ( i <= n ) {

fact = fact * i;i = i + 1;

}System.out.println("n!=" + fact);// 2. using forfact = 1;for ( i = 1; i <= n; i = i + 1){

fact = fact * i;}System.out.println("n!=" + fact);

}}

Page 45: מבוא למדעי המחשב תרגול מס' 2

הערות על כתיבת קוד

45

כאשר ניתן שמות למשתנים בתוכנית שלנו, יש לדאוג לתת שמות בעלי שמות משתנים•משמעות. שמות משתנים תמיד יתחילו באות קטנה ובנוסף, במידה ושם המשתנה מכיל יותר ממילה אחת, יש להשתמש באותיות גדולות בכדי לסמן התחלה של כל

(.CamelCaseמילה )מוסכמה זו נקראת

int numberOfStudentsEating; //better then nOSE

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

לדאוג שהקוד יהיה קריא וניתן להבנה מהירה

יש חשיבות גדולה לתוספת של הערות על קטע הערות בקוד•קוד,

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

להפוך את הקוד לקריא ומובן יותר )ניתן להבין את החלוקה לבלוקים(.