Your SlideShare is downloading. ×

3.Expression

1,578
views

Published on

สื่อการเรียนการสอน เรื่อง โปรแกรมเชิงวัตถุ โดยคุณ Kan http://learners.in.th/file/zniperlll

สื่อการเรียนการสอน เรื่อง โปรแกรมเชิงวัตถุ โดยคุณ Kan http://learners.in.th/file/zniperlll

Published in: Education

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,578
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
36
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 976-140 Object-Oriented Programming344-202 Introduction to Object-Oriented Programming การโปรแกรมเชิงวัตถุ 3. Arithmetic Expression, String class, Wrapper class, Math Class Faculty of Technology and Environment Prince of Songkla University, Phuket Campus 2/2551
  • 2. Contents  Java operators  String Class  Wrapper Class  Sending argument to a program  Math Class  Formating NumberObject-Oriented Programming 2/2551 2
  • 3. Arithmetic Expressions  Arithmetic expression คือ นิพจน์ที่เกี่ยวกับการดาเนินการทาง คณิตศาสตร์  Arithmetic expression ประกอบด้วย arithmetic operator และ operand  arithmetic operator คือ ตัวดาเนินการทางคณิตศาสตร์ เช่น +, -, *, /  Operand คือ ตัวถูกดาเนินการ อาจเป็น ค่าคงที่ ตัวแปร นิพจน์ทาง คณิตศาสตร์อื่น ๆ หรือเมธอดที่มีการคืนค่ากลับ  a+b*4 Operator : +, * Operand : a, b, 4  a + (b*c) Operator : + Operand : a, b*cObject-Oriented Programming 2/2551 3
  • 4. Java operators น้อย Precedence มากObject-Oriented Programming 2/2551 4
  • 5. Implicit Type Conversion  ถ้า operand ที่มีชนิดข้อมูลเดียวกัน ผลลัพธ์ที่ได้ก็จะได้ชนิดข้อมูลนั้น  ถ้า operand ต่างชนิดข้อมูลกัน จะมีการแปลงให้ operand มีชนิดเดียวกัน ก่อนดาเนินการ  double > float > long > int > short > byte Operation result  23 / 5 4  23 + 5.0 28.0  23 / 5.0 4.6  25.0 / 25.0 1.0  23 % 5 3  23 % 25 23Object-Oriented Programming 2/2551 5
  • 6. How java compute these expression?  การคานวณค่าทางคณิตศาสตร์ จะเริ่มจาก operator ที่มีลาดับ ความสาคัญสูงสุดไปต่าสุด ถ้าความสาคัญเท่ากันจะทาจากซ้ายไปขวา  -3 * 7 + (20 / 2 – 6 ) / 2  2 * (17 % 3 / 2 + 26 ) * 2 + 4Object-Oriented Programming 2/2551 6
  • 7. Increment & Decrement  ++ และ -– สามารถอยู่หน้าและหลังตัวแปรก็ได้  ในคาสั่งที่มีตวแปรตัวเดียว ถือว่าเหมือนกัน ั  x++; หรือ ++x; หมายถึง x = x + 1;  y--; หรือ --y; หมายถึง y = y - 1;  หากมีการดาเนินการอื่นด้วย ตาแหน่งของเครื่องหมายจะมีผลต่างกัน  Prefix คือ เครื่องหมายอยู่หน้าตัวแปร • หมายถึง เพิ่มหรือลดค่าตัวแปรก่อนแล้วนาไปดาเนินการ  Postfix คือ เครื่องหมายอยู่หลังตัวแปร • หมายถึง ดาเนินการเสร็จแล้วค่อยเพิ่มหรือลดค่าตัวแปรนั้นObject-Oriented Programming 2/2551 7
  • 8. Assignment Operator += x += y; x = x + y; -= x -= y; x = x - y; *= x *= y; x = x * y; /= x /= y; x = x / y; %= x %= y; x = x % y;Object-Oriented Programming 2/2551 8
  • 9. Shift Operators  left-shift operator (<<) ตรึง signed bit -4 << 1: 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 (= -8)  Right-shift (>>) – signed แทนที่ signed bit เดิม -4 >> 1: 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 (= -2) 4 >> 1: 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 (= 2)  Right-shift (>>>) - unsigned -4 >>> 1: 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 (X) 4 >>> 1: 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 (= 2) แทนที่ signed bit ด้วย 0Object-Oriented Programming 2/2551 9
  • 10. Shift OperatorsObject-Oriented Programming 2/2551 10
  • 11. Ternary Operators  เป็น operator ที่ประกอบด้วย 3 operands  Short-cut สาหรับ if/else  รูปแบบ (boolean expression) ? X : Y;  เช่น  มีความหมายเหมือนกับObject-Oriented Programming 2/2551 11
  • 12. Try this!Object-Oriented Programming 2/2551 12
  • 13. Boolean operator  คือ operator ที่ใช้คานวณทางตรรกศาสตร์ของค่าคงที่ ตัวแปร นิพจน์ทาง คณิตศาสตร์ที่อยู่ติดกับ operator ทั้งสองข้าง & AND ให้ค่า false ถ้าตัวใดตัวหนึ่งเป็น false | OR ให้ค่า true ถ้าตัวใดตัวหนึ่งเป็น true ^ XOR ให้ค่า true ถ้า operand ทั้งสองข้างมีค่าความจริงไม่ตรงกัน ! NOT เปลี่ยนค่าความจริงเป็นตรงข้าม && Short-circuit AND เหมือน & แต่ถ้า operator ตัวแรกเป็น false จะ ให้ค่า false และหยุดตรวจสอบ || Short-circuit OR เหมือน | แต่ถ้า operator ตัวแรกเป็น true จะให้ ค่า true และหยุดตรวจสอบObject-Oriented Programming 2/2551 13
  • 14. Boolean operatorObject-Oriented Programming 2/2551 14
  • 15. Reference Data Type - ชนิดข้อมูลแบบอ้างอิง  ชนิดข้อมูลในจาวามี 2 แบบคือ  Primitive data type – byte, short, int, long ,char, boolean, double, float  Reference data type – String, array, class อื่น ๆ  2 แบบนี้มีวิธการเก็บข้อมูลในหน่วยความจาต่างกัน เช่น ี  Reference คือ address ในหน่วยความจาObject-Oriented Programming 2/2551 15
  • 16. String Class  String เป็นคลาสหนึ่งใน Java API ใช้เป็นชนิดข้อมูลได้  Literal ของตัวแปรที่มีชนิดข้อมูลแบบ String คือ ข้อความที่อยู่ใน เครื่องหมายคาพูด “…..”  การกาหนดค่าให้ตัวแปร String ทาได้ 2 แบบ  String s = “Thana”;  String s = new String(“Thana”);  new เป็น keyword ในจาวาสาหรับประกาศตัวแปรที่เป็น reference data typeObject-Oriented Programming 2/2551 16
  • 17. String Class  การใช้คาสั่ง new จะมีการสร้าง String ใหม่และจองพื้นทีในหน่วยความจา ่ เสมอ  ถ้าไม่ใช้คาสั่ง new จะตรวจสอบจาก pool หากมีข้อความเดิมก็จะกาหนด reference ให้ชี้ไปทีข้อความนั้น ่Object-Oriented Programming 2/2551 17
  • 18. String Class  การกาหนดค่าใหม่ให้ String เป็นการจองพื้นที่ให้ข้อความใหม่ และ กาหนด reference ไปยังข้อความใหม่Object-Oriented Programming 2/2551 18
  • 19. String Class  ในจาวานั้น ชนิดข้อมูลที่เป็น primitive data type จะถูกแปลงเป็น String อัตโนมัติเมื่อทาการต่อกับ String อื่น  ถ้าโปรแกรมเป็นดังนี้ int x = 10; System.out.println(“x = ” + x);  + เป็น operator สาหรับการต่อสตริงเข้าด้วยกัน  ตัวแปร x จะถูกแปลงจากตัวเลขเป็นข้อความคือ “10”  ดังนั้นจึงได้ผลลัพธ์เป็นข้อความว่า “x = 10” ส่งให้แก่คาสั่ง println()Object-Oriented Programming 2/2551 19
  • 20. String Class  String ที่เป็นตัวเลขไม่สามารถนามาใช้ในการคานวณได้  การนาตัวเลขต่อกับ String จะได้ผลลัพธ์เป็น String เท่านั้น  การแปลงจาก primitive data type เป็น String อาจใช้เมธอด String.valueOf(x)Object-Oriented Programming 2/2551 20
  • 21. Sending argument to our program  argument คือ ค่าที่เราต้องการส่งเป็น input ให้แก่โปรแกรม เพื่อนาไปใช้ งานในโปรแกรม  การส่ง argument จะส่งผ่าน method โดยระบุชื่อและชนิดของ argument ไว้ภายในวงเล็บ (………………) หลังชื่อ method  การเขียนเมธอดให้สามารถรับ argument ได้ โดยระบุ argument ภายใน วงเล็บหลังชื่อเมธอดในรูปแบบ method_name(data_type argument_name) {}Object-Oriented Programming 2/2551 21
  • 22. Sending argument to our program  String คือชนิดข้อมูลที่เป็นข้อความ  String[] เป็นการบอกว่า argument นี้เป็นลาดับของ String ที่เรียงต่อกัน เรียกว่า array โดยอ้างถึง argument ได้ดวย ชื่อตัวแปร[ลาดับ] ้  args คือ ชื่อตัวแปร ซึ่งเป็นชื่อ argument args[0] “hello”  ลาดับ เริ่มจาก 0,1,2,.... Args[1] “happy”  ตัวอย่าง รันโปรแกรมด้วยคาสั่ง Args[2] “50”  Java MyProgram hello happy 50 PSU Args[3] “PSU”Object-Oriented Programming 2/2551 22
  • 23. Sending argument to our program Greeting  แก้ไขให้โปรแกรมแสดงข้อความทักทายโดยระบุชื่อผู้ที่พิมพ์ข้อความด้วย สามารถเขียนโปรแกรมใหม่ได้ดังนี้Object-Oriented Programming 2/2551 23
  • 24. Run program with argument  method main รับ argument เป็นลาดับของ String ชื่อ argument คือ args  เริ่มต้นลาดับที่ 0 เช่น argument ตัวแรกคือ args[0] , args[1], args[2],….  เราสามารถเอาค่าที่ส่งมาใช้อางถึงในเมธอด main ได้ ้  การคอมไพล์โปรแกรม ด้วยคาสั่ง javac Greeting.java  การรันโปรแกรมจาวาใน command prompt นั้น โดยระบุ argument ต่อท้ายชื่อคลาส ด้วยคาสั่ง รันโปรแกรม ชื่อโปรแกรม argumentตัวแรก (args[0])Object-Oriented Programming 2/2551 24
  • 25. Error about argument  What happen when I try to run this program with this command? java Greeting index ที่เกิด error Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at Greeting.main(Greeting.java:8) หากในโปรแกรมมีการเรียกใช้ argument แต่ไม่ทาการส่งค่าในขณะรัน โปรแกรม จะเกิดข้อผิดพลาดObject-Oriented Programming 2/2551 25
  • 26. Try this!  How to run this program without error and show this result ?Object-Oriented Programming 2/2551 26
  • 27. Run Java with argument by EditPlusObject-Oriented Programming 2/2551 27
  • 28. Get input from console with java.util.Scanner  การรับข้อมูลจากผู้ใช้ผ่านคีย์บอร์ดทาได้ดังนี้  เพิ่มคาสั่ง import java.util.Scanner; ไว้บรรทัดบนสุดของโปรแกรม  ภายในเมธอด ให้ทาการเพิ่มคาสั่ง Scanner sc = new Scanner(System.in);  ให้เรียกใช้เมธอดการรับค่าตรงกับชนิดข้อมูลที่ต้องการรับ  ตัวอย่าง การรับค่าเลขจานวนเต็มจากคีย์บอร์ด เก็บในตัวแปร i int i = sc.nextInt();Object-Oriented Programming 2/2551 28
  • 29. Get input from console with java.util.ScannerObject-Oriented Programming 2/2551 29
  • 30. Method in java.util.Scanner  int nextInt()  double nextDouble()  boolean nextBoolean()  byte nextByte()  float nextFloat()  short nextShort()  long nextLong()  String next() //a word  String nextLine() //a lineObject-Oriented Programming 2/2551 30
  • 31. Wrapper Class  แปลง String เป็น primitive data type ที่เป็นตัวเลข จะต้องใช้ Wrapper class ซึ่งเป็นคลาสใน library มาตรฐานของจาวา  การใช้ Wrapper Class จะใช้คู่กับ Primitive Type แต่ละชนิด Primitive Wrapper Primitive Wrapper  float Float short Short  double Double int Integer  byte Byte long Long  รูปแบบ WrapperClass.Method(String)  ตัวอย่าง แปลง String “5” ให้เป็น int int num = Integer.parseInt(“5”);Object-Oriented Programming 2/2551 31
  • 32. Wrapper Class  แปลงจาก String เป็น integer  String input = “5” ; int i = Integer.parseInt(input); ได้ i ที่เป็น int = 5 // คลาส Integer มีเมธอด parseInt ทาหน้าที่แปลง String เป็นชนิดข้อมูลแบบ int  แปลงจาก String เป็น double  String input = 8.43 ; double f = Double.parseDouble(input); ได้ f ที่เป็น double = 8.43 // คลาส Double มีเมธอด parseDouble ทาหน้าที่แปลง string เป็นชนิดข้อมูล แบบ doubleObject-Oriented Programming 2/2551 32
  • 33. Using the Math Class  คลาส Math เป็นคลาสใน package java.lang ซึ่งเป็นไลบรารี่มาตรฐานของจาวาที่เรา สามารถเรียกใช้ได้ในโปรแกรม  การใช้งานเมธอดให้อ้างถึงโดยใช้ ชื่อคลาส.เมธอด() เพราะเป็น static method  static double abs (double)  Returns the absolute value of the argument  static float abs (float)  Returns the absolute value of the argument  static int abs (int)  Returns the absolute value of the argument  static long abs (long)  Returns the absolute value of the argumentObject-Oriented Programming 2/2551 33
  • 34. Using the Math Class  static double exp (double)  Returns e raised to the power of the argument  static double log (double)  Returns the natural logarithm of the argument  static double pow (double base, double exp)  Returns the base raised to the exp power  static double random ()  Returns a pseudorandom number in the range [0, 1)  static double sqrt (double)  Returns the square root of the argumentObject-Oriented Programming 2/2551 34
  • 35. Using the Math Class Constants of the Math class  PI 3.141592653589793 ( constant Pi (π) )  E 2.718281828459045 ( natural logarithms )public class CircleAreaApp { public static void main(String[] args) { int r = 5; double area = Math.PI * (r * r); System.out.println("The area is " + area); }}Object-Oriented Programming 2/2551 35
  • 36. Mathematical Functions  Try this!Object-Oriented Programming 2/2551 36
  • 37. Rounding functions  Try this!Object-Oriented Programming 2/2551 37
  • 38. Formating NumberObject-Oriented Programming 2/2551 38