Chapter3

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Chapter3 as PDF for free.

More details

  • Words: 1,510
  • Pages: 8
CS313: Object-Oriented Programming

บทที่ 3: Control Structures

บทที่ 3 Control Structures 3.1 Statements and Expressions Statement เปนคําสั่ง (code) ทีร่ ะบุการทํางานในโปรแกรม ในภาษา Java แตละ statement จะตอง จบดวยเครื่องหมาย semicolon (;) Expression เปน statement ทีม่ กี ารสงคากลับ (return value) Block เปนกลุมของ statement ซึง่ อยูภายใตเครื่องหมาย { } ตัวอยาง Statement: import java.awt.Font; int a = 10; s.firstName = “Robert”; Expression: x == y; x + y; Block: if (grade >= 60) { System.out.println (“Passed”); System.out.println (“Congratulations!!”); }

3.2 Variable Variable หรือ ตัวแปร เปนตําแหนงของหนวยความจําที่ใชในการเก็บขอมูล เนือ่ งจากชื่อของตัวแปร เปนการอางอิงถึงตําแหนงของหนวยความจํา ดังนั้นทุกๆ ตัวแปรจะประกอบดวยชื่อ ชนิดตัวแปร และคาขอมูลที่ เก็บไว 3.3 Variable Types ชนิดตัวแปรในภาษา Java มี 3 แบบ คือ - Base data types - Array - User defined type (class) 3.4 Base Data Types (Primitive Data Types) Base data types เปนชนิดขอมูลที่ถูกกําหนดมาจากระบบภาษา Java (built-in) base data type ไมใช object และขนาดของขอมูลไมขึ้นกับชนิดของเครื่องคอมพิวเตอรที่ใชงาน (machine-independent) - byte 1 byte -128 ถึง +127 - boolean 1 byte true หรือ false - char 2 byte ISO Unicode character set ( Unicode เปนระบบ การแทนรหัสขอมูล โดยจะสามารถใชแทนรหัสไดทั้งรหัส ASCII และอักษรที่มาจากภาษาอื่น เชน ภาษาญี่ปุน ภาษาจีน และ ภาษาเกาหลี โดยในการแทนขอมูลตัวอักษรแบบ ASCII ของ Unicode 9 บิตแรกจะถูก set ให 2/2545

1

CS313: Object-Oriented Programming

บทที่ 3: Control Structures

มีคา เทากับ 0 และบิตที่เหลือจะแสดงในรหัส ASCII สวนอักษรอื่นจะถูกกําหนดโดยใชรูปแบบ “\Uxxxx” เมื่อ xxxx เปนเลขฐาน 16 จํานวน 4 ตัว เพื่อแสดงรหัสขอมูลตัวอักษรนั้นๆ ) - short 2 byte -32,768 ถึง +32,767 - int 4 byte -2,147,483,648 ถึง +2,147,483,647 - long 8 byte -9,223,372,036,854,775,808 ถึง +9,223,372,036,854,775,807 - float 4 byte -3.40292347E+38 ถึง +3.40292347E+38 - double 8 byte -1.79769313486231570E+308 ถึง +1.79769313486231570E+308 ภาษา Java ไมมีชนิดขอมูลแบบ unsigned ซึง่ ตางจากภาษา C หรือ C++ 3.5 Variable Declaration ตัวแปรทุกตัวในภาษา Java ตองมีการประกาศกอนที่จะถูกใชงาน โดยมีรูปแบบการประกาศตัวแปร ดังนี้ type name [= initial_value];

ตัวอยาง int id, age = 50; String firstName, lastName; Boolean isHired = false;

ตัวแปรแบบ local variable จะตองมีการกําหนดคาเริ่มตนใหทุกครั้งกอนที่จะถูกเรียกใช สวนตัวแปร แบบ instance (object) และ class คาเริม่ ตนจะถูกกําหนดโดยอัตโนมัติ ซึ่งจะเปนคาใดนั้นขึ้นอยูกับชนิดขอ มูลทีก่ ําหนดใหตัวแปรนั้นๆ เชน ตัวแปรชนิด char, byte, short, int, long, float และ double จะมีคาเริ่มตนเทา กับ 0 สวนตัวแปรชนิด boolean มีคา เริ่มตนเทากับ false 3.6 Variable Assignment การกําหนดคาใหกับตัวแปรทําไดโดยใชเครื่องหมาย ‘=’ ตัวอยาง id = 12345; isHired = true; firstName = “Robert”; a = b = c = 2;

3.7 Literals Java จะกําหนดชนิดขอมูลใหกับตัวแปรที่เก็บคาคงที่ใหอัตโนมัติโดยพิจารณาจากคาคงที่ที่เก็บ คาคง ทีใ่ นภาษา Java มี 4 แบบ คือ - คาคงที่ตัวเลข (number literal) เชน 123 เปนชนิดขอมูลแบบ int 3.456 มีชนิดขอมูลแบบ double หากตองการกําหนดชนิดขอมูลใหเปนแบบอื่น ทําได ดังนี้ ชนิดขอมูลแบบ long ใหพิมพ 2/2545

2

CS313: Object-Oriented Programming

-

บทที่ 3: Control Structures

อักษร L ตอทายตัวเลข ( เชน 123L ) สวนชนิดขอมูลแบบ float ทําไดโดยพิมพอักษร F ตอทาย ตัวเลขนั้น ( เชน 3.456F ) คาคงที่แบบตรรกะ (boolean literal) มีเพียง 2 คาเทานั้น คือ true กับ false คาคงที่แบบอักขระ (character literal) ตัวอักขระตองอยูภายในเครื่องหมาย single quote เชน ‘a’ คาคงที่แบบสายอักขระ (string literal) สายอักขระตองอยูภายในเครื่องหมาย double quote เชน “test”

3.8 Arithmetic Operators ภาษา Java มี arithmetic operator 5 ตัว คือ + (บวก), - (ลบ), * (คูณ), / (หาร), และ % (modulus) 3.9 Shorthand Assignment Operator - increment by n: ตัวอยาง x+= n; - decrement by n: ตัวอยาง x -= n; - multiply by n: ตัวอยาง x *= n; - divide by n: ตัวอยาง x /= n; - increment by 1: ตัวอยาง x++; - decrement by 1: ตัวอยาง x- -;

// same as x = x + n; // same as x = x – n; // same as x = x * n; // same as x = x / n; // same as x = x + 1; // same as x = x – 1;

3.10 Prefix and Postfix ตําแหนงของเครื่อง ++ หรือ - - มีผลตอผลลัพธที่จะเกิดขึ้น ดังนี้ - Prefix: y = ++x; // same as x = x+1; y = x นั่นคือเพิ่มคา x อีก 1 กอน แลวจึงกําหนดคาให กับ y เชน ถาคาของ x เทากับ 2 ดังนั้นเมื่อทําคําสั่งนี้เสร็จ ผลลัพธที่ไดคือ y และ x มีคาเทากับ 3 - Postfix: y = x++; // same as y = x; x = x+1; เปนการกําหนดคา x ใหกับ y กอนที่จะเพิ่มคาให กับ x อีก 1 เชน ถาคาของ x เทากับ 2 ดังนั้นเมื่อทําคําสั่งนี้เสร็จ ผลลัพธที่ไดคือ y เทากับ 2 และ x เทากับ 3 การเขียนโปรแกรมโดยใช prefix และ postfix เชนนี้ ทําให expression สัน้ แตอาจทําใหเกิดการสับ สนไดงาย 3.11 Comparison Operators Comparison operator ในภาษา Java มีทงั้ หมด 6 ตัว ดังนี้ == ( equal ), != ( not equal ), < ( less than ) > ( greater than ), <= ( less than or equal ), >= ( greater than or equal ) ผลลัพธที่ไดคือคา boolean ( true หรือ false)

2/2545

3

CS313: Object-Oriented Programming

บทที่ 3: Control Structures

3.12 Logical Operators && (AND), || (OR), ! (NOT) 3.13 Bitwise Operators มีทั้งสิ้น 13 ตัว ดังนี้ - & ( bitwise AND) - | (bitwise OR) - ^ (bitwise XOR) - << (left shift) - >> (right shift) - >>> (zero fill right shift) - ~ (bitwise complement) ตัวอยาง - 0x0005 && 0x0003 มีคาเทากับ 0x001 - 0x002 << 2 มีคาเทากับ 0x0008 - ~0xFEFE มีคาเทากับ 0x0101

&= (AND assignment) != (OR assignment) ^= (XOR assignment) <<= (left shift assignment) >>= (right shift assignment) >>>= (zero fill right shift assignment)

3.14 Operator Precedence 1. . [ ] ( ) 2. ++ - - ! ~ instanceof 3. new ( type ) expression 4. * / % 5. + 6. << >> >>> 7. < > <= >= 8. = = != 9. & 10. ^ 11. | 12. && 13. || 14. ?: (ternary conditional shorthand for if… then …. else…) 15. = += -= *= /= %= ^= &= |= <<= >>= >>>=

2/2545

4

CS313: Object-Oriented Programming

บทที่ 3: Control Structures

3.15 String Arithmetic การเชื่อมสายอักขระ (string concatenation) ทําไดโดยใชเครื่องหมาย ‘+’ เชน “Hello “ + “friends” ไดผลลัพธคือ “Hello friends” นอกจากนี้ยังสามารถใชเครื่องหมาย ‘=+’ กับการเชื่อมสายอักขระเชนกัน ตัวอยาง str = “Hi “; str += “friends”; ผลลัพธ str จะเทากับ “Hi friends” 3.16 if Conditional if (condition) { ... // condition is true ... } else { ... // condition is false ... }

เครื่องหมาย { } จะถูกใชเมือ่ มีคําสั่งมากกวา 1 คําสั่งที่ตองทํางานใน block นั้นๆ ตัวอยาง Pseudocode statement If student's grade is greater than or equal to 60 Print "Passed" Else Print "Failed"

Java statement if ( studentGrade >= 60 ) System.out.println ( "Passed" ); else System.out.println ( "Failed" );

3.17 switch Conditional switch (x) { case valueOne: ... // x is valueOne break; case valueTwo: ... // x is valueTwo break; default: ... // other value of x }

คา x มีชนิดขอมูลเปนแบบ byte, short, int, long และ char เทานั้น

2/2545

5

CS313: Object-Oriented Programming

บทที่ 3: Control Structures

ตัวอยาง Pseudocode statement choice = 1 : draw lines choice = 2 : draw square choice = 3 : draw circle

Java statement switch ( choice ) { case 1: g.drawLine ( 10,10,250,10 ); break; case 2: g.drawRect ( 10,10,50,50 ); break; case 3: g.drawOval (10,10,50,50 ); break; default: System.out.println ("Invalid choice"); }

3.18 for Loop for (part1; part2; part3) { ... ... }

part1 : การกําหนดคาเริ่มตน (initialisation) part2: จุดสิ้นสุด loop (terminating condition) part3: คําสัง่ ใดๆ โดยสวนใหญจะเปนคําสั่งในการเปลี่ยนแปลงคา index ซึง่ จะมักสอดคลองกับตัว แปรใน part2 ตัวอยาง Pseudocode statement sum = 0 for ( n=1 to 100 ) sum = sum + n

Java statement int sum = 0; for ( int n = 1; n <= 100; n++ ) sum += n

3.19 while Loop while (condition) { ... ... }

ทํางานใน loop ในขณะที่ของ condition เทากับ true โดยจะทําการเช็คเงื่อนไขกอนการเขา loop

2/2545

6

CS313: Object-Oriented Programming

บทที่ 3: Control Structures

ตัวอยาง Pseudocode statement product = 2; while product is less than or equal to 1000 product = product x 2

Java statement int product = 2; while ( product <= 1000 ) product = product * 2;

3.20 do .. while Loop do { ... ... } while (condition);

ทํางานใน loop จนกระทั่งคาของ condition เทากับ false โดยคําสั่งตางๆ ใน loop นีจ้ ะถูกทําอยาง นอย 1 ครั้ง ตอนเขา loop ตัวอยาง Pseudocode statement counter = 1 do { print "Line number " + counter counter = counter + 1 while counter is less than or equal to 10

Java statement int counter = 1; do { System.out.print ( "Line number" ); System.out.println ( counter ); ++counter; } while ( counter <= 10 );

3.21 Loop Label เปนการตั้งชื่อ loop เพือ่ ใชรวมกับคําสั่ง break ตัวอยาง Loop1: while (x < 10) { for ( y=0; y<x; y++) { ... ... if (f1(y) < 100) break Loop1; } x = 2*x; } f2( );

จากตัวอยาง หากคา f1(y) นอยกวา 100 การทํางานจะออกจาก loop ทีช่ ื่อวา Loop1 นัน่ คือจะไป ทํางานที่คําสั่ง f2( ); หากสั่งเฉพาะ break; การทํางานจะออกจาก loop for แลวไปทํางานตอที่คําสั่ง x = 2*x; 2/2545

7

CS313: Object-Oriented Programming

บทที่ 3: Control Structures

ตัวอยาง: โปรแกรมประเภท GUI สําหรับหาคาเฉลี่ยของตัวเลข 10 จํานวนที่รับมาจากผูใช import javax.swing.JOptionPane; public class Average { public static void main ( String args[] ) { int sum, n, num, avg; String value; // initialise sum to zero sum = 0; for ( n=1; n<=10; n++) { // get a number from user value = JOptionPane.showInputDialog ("Enter number: "); // convert the number (value) from a String to an integer num = Integer.parseInt (value); // add num to sum sum = sum + num; } // end of for loop // calculate the average avg = sum / 10; // perform integer division // display the average of all 10 numbers JOptionPane.showMessageDialog (null, "Average number is "+avg, "Average", JOptionPane.INFORMATION_MESSAGE ); System.exit(0); // terminate the program } // end of method main } // end of class Average

ตัวอยาง: เปนการแสดง '*' ในรูปของสามเหลี่ยม public class PrintStar { public static void main ( String args[] ) { for (int row=1; row <=5; row++) { System.out.println(); for (int col=1; col <= row; col++) { System.out.print("*"); } // end of for 'col' }

// end of for 'row'

} // end of method main } // end of class PrintStar

2/2545

8

Related Documents

Chapter3
June 2020 17
Chapter3
November 2019 29
Chapter3
June 2020 29
Chapter3
July 2020 27
Chapter3
November 2019 26
Chapter3
May 2020 17