32
תתתת תתתתתת ססססס סס'1 םםםםםם תתתתתת תתתתתתתת תתתתתתתתת תתתתתתתת תתתתתתת תתתתתתתMath תתתת תתתתתתת תתתתת תתתתתתת1

מבוא לתכנות תרגול מס' 1

  • Upload
    merton

  • View
    80

  • Download
    5

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: מבוא לתכנות תרגול מס' 1

מבוא לתכנות1תרגול מס'

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

1

Page 2: מבוא לתכנות תרגול מס' 1

הקדמה

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

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

ואחריה ניתן להפעיל את התוכנית.

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

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

2

Page 3: מבוא לתכנות תרגול מס' 1

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

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

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

public class Hello { public static void main(String[] args) { System.out.println("Hello World!"); }}

3

Page 4: מבוא לתכנות תרגול מס' 1

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

מהו משתנה?

הוא יחידת מידע המאחסנת ערך ( variable) משתנהבמהלך ריצת התוכנית.

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

פעולות חישוביות בעזרת משתנים.

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

4

Page 5: מבוא לתכנות תרגול מס' 1

*הגדרת משתנים

יש להכריז על שמו של המשתנה וטיפוסו.

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

int num;

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

int num1, num2;

5

Page 6: מבוא לתכנות תרגול מס' 1

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

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

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

•טווח ההכרה של המשתנה מתחיל בשורה שבו המשתנה

מוגדר ומסתיים בסוף הבלוק שבו נמצאת הגדרת המשתנה.

6

Page 7: מבוא לתכנות תרגול מס' 1

פעולת השמה*

נותנת ערך למשתנה. (assignment) השמהפעולת

= הוא סימן פעולת השמה, משמאל שם המשתנה ומימין הערך.

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

. num למשתנה 3למשל, הפקודה הבאה נותנת ערך

inum = 3;

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

int inum1 = 1;

7

Page 8: מבוא לתכנות תרגול מס' 1

:דוגמהpublic class Example1 {public static void main(String[] args){ int inum; inum = 3;

int inum1 = 1, inum2; inum2 = inum1;

System.out.println(“inum = " + inum); System.out.println(“inum1 = " + inum1); System.out.println(“inum2 = " + inum2);

}}

scope of inum1 andinum2

scope of inum

משתנים• הגדרה• שמות• סקופ•השמה•פלט•

8

Page 9: מבוא לתכנות תרגול מס' 1

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

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

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

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

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

.Binary - Wikipediaעל הנושא, התחלה טובה היא: 9

Page 10: מבוא לתכנות תרגול מס' 1

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

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

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

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

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

10

Page 11: מבוא לתכנות תרגול מס' 1

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

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

boolean indicator; indicator = true;

. תווים4 ,'a'. סימן בודד התחום בגרשיים בודדות )למשל, charתו:

'A'.) ,'newline '\n )למשל, backslashלפני סימן מיוחד יש תו

tab '\t' , backspace '\b')char capitalN;capitalN = 'N';

11

Page 12: מבוא לתכנות תרגול מס' 1

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

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

27-1 עד 27- 1 byte

215-1 עד 215- 2 short

231-1 עד 231- 4 int

263-1 עד 263- 8 long

4 float

8 double

12

Page 13: מבוא לתכנות תרגול מס' 1

קבועים הוא יחידת מידע המאחסנת ערך במהלך (constant) קבוע

ריצת התוכנית.

קבוע דומה למשתנה; ההבדל הוא שערכו של קבוע לא •יכול להשתנות במהלך התוכנית מרגע שהקבוע קיבל את

ערכו הראשוני.

דוגמה:•

final int PASS_GRADE = 56;

int igrade;

igrade = PASS_GRADE;

13

Page 14: מבוא לתכנות תרגול מס' 1

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

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

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

על משתנים וערכים מטיפוסים נומריים וממשיים אפשר לבצע פעולות אריתמטיות:

14

Page 15: מבוא לתכנות תרגול מס' 1

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);

}}

15

c = 8c = 16

Page 16: מבוא לתכנות תרגול מס' 1

*2דוגמה

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

16

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

int a = 18;int b = 42;int ifirst = (a + b) * 2;int isecond = a + b * 2;System.out.println(“ifirst number is:" + ifirst);System.out.println(“isecond number is:" + isecond);

}}

ifirst number is:120isecond number is:102

Page 17: מבוא לתכנות תרגול מס' 1

3דוגמה

17

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 iNum = sc.nextInt();// divide the number into ones, tens and hundreds.int iOnes = iNum % 10;int iTens = (iNum % 100) / 10;int iHundreds = iNum / 100;// calculate the reverse numberint iReverseNum = (iOnes * 100) + (iTens * 10)+ iHundreds;System.out.println("The reverse number is "+iReverseNum );

}}

Enter a 3-digit number:

The reverse number is 159

951

Page 18: מבוא לתכנות תרגול מס' 1

אופרטורים יחסיים אופרטורים המשווים בין שני מספרים ונותנים תשובה 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.18

Page 19: מבוא לתכנות תרגול מס' 1

דוגמה

19

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 20: מבוא לתכנות תרגול מס' 1

אופרטורים לוגיים

אופרטורים לוגיים פועלים על ערכים מטיפוס לוגי )בוליאני( (.false או trueוגם נותנים תשובה בוליאנית )

Operator

Name

Description

x && y And True if both x and y are true, otherwise false.

x || y OrTrue if at least one of x or y are true, otherwise

false.

! x Not True if x is false, otherwise false.

20

Page 21: מבוא לתכנות תרגול מס' 1

דוגמה

21

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 22: מבוא לתכנות תרגול מס' 1

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– מחזיר מספר אקראי בין.Math.PI קבוע המייצג את הערך – (3.14159...)

22

Page 23: מבוא לתכנות תרגול מס' 1

דוגמה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);}

}

23

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

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

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

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Math.html

.

Page 24: מבוא לתכנות תרגול מס' 1

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

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

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

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

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

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

Page 25: מבוא לתכנות תרגול מס' 1

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

הסדר של טיפוסים המספרים מן הפחות כולל לכולל ביותר •.byte, int, long, float, doubleהינו:

דוגמההאופרטור / עובד אחרת בהתאם לטיפוסים עליהם •

הוא מופעל.• 5.0/2 --> 2.5• 5.0/2.0 --> 2.5• 5/2.0 --> 2.5• 5/2 --> 2

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

25

Page 26: מבוא לתכנות תרגול מס' 1

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

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

int i = 5;

double d;

d = i; // d is 5.0

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

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

26

Page 27: מבוא לתכנות תרגול מס' 1

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

.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המרת טיפוס )

27

Page 28: מבוא לתכנות תרגול מס' 1

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

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

• if (<condition>){<statement>

}• if (<condition>){

<statement>}else {

<alternative> }

28

Page 29: מבוא לתכנות תרגול מס' 1

ifדוגמה ל-

29

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 30: מבוא לתכנות תרגול מס' 1

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

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

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

<statement>}

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

<statement>}

30

Page 31: מבוא לתכנות תרגול מס' 1

*דוגמה

31

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();int i = 1; // 1. using whileint fact = 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 32: מבוא לתכנות תרגול מס' 1

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

32

כאשר ניתן שמות למשתנים בתוכנית שלנו, יש לדאוג לתת שמות בעלי שמות משתנים•-i-int, dמשמעות. שמות משתנים תמיד יתחילו באות קטנה המציינת את הטיפוס (

double, l-long… ובנוסף, במידה ושם המשתנה מכיל יותר ממילה אחת, יש להשתמש ,().CamelCaseבאותיות גדולות בכדי לסמן התחלה של כל מילה (מוסכמה זו נקראת

int iNumberOfStudentsEating; //better then nOSE

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

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

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

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

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