การเขียนโปรแกรมภาษา Java (ต่อ)
1. ตัวแปร ตัวแปร คือ ที่เก็บข้อมูลในหน่วยความจำของคอมพิวเตอร์ โดยค่าของตัวแปรจะเปลี่ยนแปลงได้ในช่วงเวลาที่เปลี่ยนไป
2. ชนิดของตัวแปร 1. ชนิดตัวเลขจำนวนเต็ม 2. ชนิดตัวเลขทศนิยม 3. ชนิดตัวอักษร 4. ชนิดตรรกะ
2.1 ชนิดของตัวแปรประเภทจำนวนเต็ม 1. byte ค่าตัวเลขที่เก็บได้อยู่ระหว่าง -128 ถึง 128 2. short ค่าตัวเลขที่เก็บได้อยู่ระหว่าง -32768 ถึง 32767 3. int ค่าตัวเลขที่เก็บได้อยู่ระหว่าง -2147483648 ถึง 2147483647 4. long ค่าตัวเลขที่เก็บได้อยู่ระหว่าง -922337206854775808 ถึง 922337206854775807
2.2 ชนิดของตัวแปรประเภทจำนวนจริง 1. float ค่าตัวเลขที่เก็บได้อยู่ระหว่าง -3.40282347E+38 ถึง 3.40282347E+38 2. double ค่าตัวเลขที่เก็บได้อยู่ระหว่าง -1.797769313486231570E+308 ถึง 1.797769313486231570E+308
2.3 ชนิดของตัวแปรประเภทตัวอักษร 1. char เป็นชนิดของตัวแปรที่ใช้เก็บตัวอักขระเพียง 1 ตัว เช่น ‘a’ ‘A’ หรือ ‘5’ เป็นต้น 2. String เป็นชนิดของตัวแปรที่ใช้เก็บกลุ่มของตัวอักษร
2.4 ชนิดของตัวแปรประเภทตรรกะ เป็นตัวแปรที่ใช้เก็บค่าความจริง มีค่าที่เป็นไปได้ 2 ค่า คือ จริง (true) กับ เท็จ (false) ต้องประกาศตัวแปรเป็นประเภท boolean
1.1 การประกาศตัวแปร (Variables Declaration) ชื่อของตัวแปร ชนิดของตัวแปร float num; int nun ,num2; string name;
int num = 10; 1.3 การกำหนดค่าให้ตัวแปร (Assignment) ชื่อของตัวแปร ค่าของตัวแปร ชนิดของตัวแปร int num = 10; หมายเหตุ วิธีการกำหนดค่าด้วยวิธีการนี้เรียกว่า Initialization
char ch1, ch2 = ‘x’; String name = “Mickey”; 1.3 การกำหนดค่าให้ตัวแปร (ต่อ) char ch1, ch2 = ‘x’; String name = “Mickey”; หมายเหตุ ก่อนใช้ตัวแปรใดก็ตามต้องทำการประกาศ ตัวแปรนั้นก่อนเสมอ
แผนภาพแสดงการประกาศและการกำหนดค่าให้ตัวแปรแบบตัวเลข int firstNumber,secondNumber; firstNumber secondNumber
แผนภาพแสดงการประกาศและการกำหนดค่าให้ตัวแปรแบบตัวเลข (ต่อ) int firstNumber,secondNumber; firstNumber = 234; firstNumber 234 secondNumber = 87; secondNumber 87
2. หลักในการตั้งชื่อในภาษา Java 1. ประกอบด้วยตัวเลข ตัวอักษร เครื่องหมาย Underscore ( _ ) และ dollar signs ( $ ) 2. ต้องขึ้นต้นด้วยตัวอักษร 3. ห้ามเว้นวรรค 4. ตัวอักษรตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก มีค่าต่างกัน หมายเหตุ กฎการตั้งชื่อนี้ใช้ได้กับการตั้งชื่อตัวแปร (Variables) ชื่อเมธอด (Method) และอื่นๆ
คำแนะนำในการตั้งชื่อ 1. ใช้ตัวอักษรตัวพิมพ์ใหญ่สำหรับตัวแรกของชื่อของ Class 2. ใช้ตัวอักษรตัวพิมพ์เล็กสำหรับตัวแรกของชื่อของ Object 3. หากชื่อนั้นประกอบด้วยหลายคำ ตัวแรกของทุกๆ คำให้ ขึ้นต้นด้วยตัวพิมพ์ใหญ่ยกเว้นในคำแรก 4. หากเป็นค่าคงที่ ให้ใช้ตัวพิมพ์ใหญ่ทั้งหมด
3. การคำนวณทางด้านคณิตศาสตร์ Operator ทางคณิตศาสตร์ที่ใช้ในภาษา Java ได้แก่ + การบวก - การลบ * การคูณ / การหาร % การหารเอาเศษ
3.1 Integer Division ในการหารด้วยเครื่องหมาย / หรือ % -หากตัวตั้งหรือตัวหารตัวใดตัวหนึ่งเป็นจำนวนจริง ผลลัพธ์ที่ได้จะเป็นจำนวนจริง - แต่หากทั้งตัวตั้งและตัวหารเป็นจำนวนเต็มผลลัพธ์ที่ได้จะเป็นจำนวนเต็มด้วย 22 / 5 = 4 22 / 5.0 = 4.4 25.0 / 5.0 = 5.0 23 % 5 = 3 23 % 25 = 23 15.5 % 4 = 3.5
หมายเหตุ หากลำดับในการคำนวณเท่ากันจะทำการคำนวณจากซ้ายไปขวา 3.2 ลำดับในการคำนวณ ก่อน วงเล็บ ( ) การคูณ หาร *, / , % การบวก ลบ + , - หลัง หมายเหตุ หากลำดับในการคำนวณเท่ากันจะทำการคำนวณจากซ้ายไปขวา
3.3 การเปลี่ยนชนิดของข้อมูล 3.3 การเปลี่ยนชนิดของข้อมูล 1. Implicit Conversion การเปลี่ยนชนิดของข้อมูลโดยอัตโนมัติ อันเกิดเนื่องมาจากผลของการคำนวณทางคณิตศาสตร์ เช่น นำตัวแปรจำนวนเต็มมาบวกกับตัวแปรจำนวนจริง ค่าที่ได้จะเป็นค่าจำนวนจริง 2. Explicit Conversion เราสามารถเปลี่ยนแปลงชนิดของข้อมูลตามความต้องการได้ โดยการระบุชนิดของตัวแปรที่ต้องการเปลี่ยนภายใน ( ) แล้ววางไว้หน้าตัวแปร หรือข้อมูลที่ต้องการเปลี่ยนชนิด
ตัวอย่างที่ 3 การเปลี่ยนชนิดข้อมูล โดยวิธี Explicit Conversion int ch = 88; char letter = ‘X’; ch = (int) letter; letter = (char) 56; int money = 2.3 +1.4; money = (int)2.3 + (int)1.4;
3. คำสั่ง if … else true false
3. คำสั่ง if … else (ต่อ) ถ้าคำสั่งที่ต้องทำนั้นเป็นคำสั่งเพียงคำสั่งเดียว เราสามารถเขียนคำสั่งนั้นตามหลังนิพจน์เงื่อนไขได้เลย แต่ถ้าคำสั่งที่ต้องทำเป็นกลุ่มของคำสั่งที่กำหนด จะต้องใส่คำสั่งเหล่านั้นในบล็อกภายในเครื่องหมายวงเล็บ { }
ตัวอย่างที่ 4 if (testScore < 70) { messageBox.show(“You did not pass”); messageBox.show(“Try harder next time”); } else { messageBox.show(“You did pass”); messageBox.show(“Keep up the good work”); }
ตัวอย่างที่ 5 if (testScore >= 95) { messageBox.show(“You are an honor student”); } หมายเหตุ คำสั่งที่ต้องทำหลัง if และ else อาจมีหรือไม่มีคำสั่งก็ได้
ตัวอย่างที่ 6 การใช้ if ในการเปรียบเทียบตัวแปรอักขระ if ( ans != ‘y’) { messageBox.show(“That is a great answer”); }
Nested-if true false if (เงื่อนไข) คำสั่งที่ต้องทำ; else if (เงื่อนไข) คำสั่งที่ต้องทำ; else if (เงื่อนไข) คำสั่งที่ต้องทำ; else คำสั่งที่ต้องทำ;
ตัวอย่างที่ 7 หากต้องการคิดเกรดของนักเรียน ซึ่งมีการกำหนดช่วงของคะแนนดังต่อไปนี้ คะแนนต่ำกว่า 50 ได้เกรด F คะแนนต่ำกว่า 60 ได้เกรด D คะแนนต่ำกว่า 70 ได้เกรด C คะแนนต่ำกว่า 80 ได้เกรด B คะแนนสูงกว่า 80 ได้เกรด A
ตัวอย่างที่ 7 (ต่อ) สามารถนำมาเขียนเป็นนิพจน์เงื่อนไขได้ดังนี้ if (score < 50) messageBox.show(“Your grade is F”); else if (score < 60) messageBox.show(“Your grade is D”); else if (score < 70) messageBox.show(“Your grade is C”); else if (score < 80) messageBox.show(“Your grade is B”); else messageBox.show(“Your grade is A”);
ลองคิดดู การทำงานของคำสั่ง if 2 แบบนี้เหมือนหรือต่างกันอย่างไร if (x < y) { if (x < z) messageBox.show(“Hello”); } else messageBox.show(“Good bye”); if (x < y) if (x < z) messageBox.show(“Hello”); else messageBox.show(“Good bye”); x=5, y=10, z=8 x=5, y=10, z=5 x=5, y=5, z=5
4. เครื่องหมายเปรียบเทียบค่า (Relational Operator) ความหมาย > มากกว่า >= มากกว่าหรือเท่ากับ < น้อยกว่า <= น้อยกว่าหรือเท่ากับ = = เท่ากับ != ไม่เท่ากับ
5. เครื่องหมายเปรียบเทียบทางตรรกศาสตร์ (Logical Operator) เครื่องหมายตรรก ความหมาย && และ (and) || หรือ (or) ! ไม่ (not)
5.1 ค่าของนิพจน์เปรียบเทียบทางตรรกศาสตร์ นิพจน์ที่ 1 && นิพจน์ที่ 2 จะให้คำตอบเป็นจริง เมื่อนิพจน์ทั้งสองเป็นจริง นิพจน์ที่ 1 || นิพจน์ที่ 2 จะให้คำตอบเป็นจริง เมื่อนิพจน์ใดนิพจน์หนึ่ง หรือทั้งสองนิพจน์เป็นจริง ! นิพจน์เปรียบเทียบ จะให้คำตอบเป็นจริงเมื่อนิพจน์ เปรียบเทียบนั้นมีค่าเป็นเท็จ หมายเหตุ ลำดับการทำงานจะเปรียบเทียบจากนิพจน์ทางซ้ายไปขวา
ลองคิดดู หาคำตอบของนิพจน์ต่อไปนี้ 1. 3 <= 4 2. 4 < 5 || 6 = = 6 3. !(4 > 6) && 4 > 2 4. a=3, b=2, c=4 (a > b) || !(a <= c) && b > c / 2 a < b && !(a <= c) && b > c / 2 (a > b) && !(a <= c) || b > c / 2
ลองคิดดู หากต้องการเปรียบเทียบ ค่าของตัวแปร x ว่ามีค่า อยู่ในช่วงระหว่าง 10 - 80 ต้องเขียนนิพจน์อย่างไร 10 <= x <= 80 ???
ลองคิดดู int x=5, y; if (x > 4 || x++ < 10) x +=2; y = x; System.out.println(“x : ” + x+ “y :”+y); เห็นอะไร ผิดปกติ หรือไม่ ?? int x=2, y=0, z; if (x > 4 && (y = x*8) < 10) x +=2; z = x + y; System.out.println(“x : ”+x+“,y : ”+y“,z : ”+z);
if (x > 4 || x++ < 10) 5.2 Short-Circuit Evaluation true ไม่ทำต่อ if (x > 4 || x++ < 10) สมมติ x = 5 เงื่อนไขแรกมีค่าเป็น จริง เงื่อนไขที่สองจะไม่ประมวลผล
5.2 Short-Circuit Evaluation if (x > 4 | x++ < 10) if (x > 4 & (y = x*8) < 10) วิธีแก้ไข
ลองคิดดู int x=5, y; if (x > 4 | x++ < 10) x +=2; y = x; System.out.println(“x : ” + x+ “y :”+y); คราวนี้ ได้ คำตอบ อะไร ? int x=2, y=0, z; if (x > 4 & (y = x*8) < 10) x +=2; z = x + y; System.out.println(“x : ”+x+“,y : ”+y“,z : ”+z);
6. คำสั่ง switch switch ( นิพจน์) { case ค่าคงที่ : คำสั่ง; case ค่าคงที่ : คำสั่ง; ….. default : คำสั่ง; }
6. คำสั่ง switch (ต่อ) ชนิดของข้อมูลของนิพจน์ จะต้องเป็น char byte short หรือ int เท่านั้น ค่าคงที่ที่จะเป็นเงื่อนไขของ case สามารถเป็นได้ทั้ง Literal Constant หรืออาจเป็น Symbolic Constant ก็ได้ หมายเหตุ Literal Constant เช่น 1 30.5 ‘a’ ‘Z’ Symbolic Constant ได้แก่ ค่าที่กำหนดในตัวค่าคงที่
6.1 แสดงการทำงานของ switch เมื่อมีคำสั่ง break switch (นิพจน์) { case 1: คำสั่งที่ 1; break; case 2: คำสั่งที่ 2; break; case 3: คำสั่งที่ 3; break; default: คำสั่งที่ 4; } คำสั่งที่ 5; หากค่าของนิพจน์ เท่ากับค่าใน case 2
6.2 แสดงการทำงานของ switch เมื่อไม่มีคำสั่ง break switch (นิพจน์) { case 1: คำสั่งที่ 1; case 2: คำสั่งที่ 2; case 3: คำสั่งที่ 3; default: คำสั่งที่ 4; } คำสั่งที่ 5; หากค่าของนิพจน์ เท่ากับค่าใน case 2
7. คำสั่ง for for i = 1 to 10 do for ( ค่าเริ่มต้น ; เงื่อนไขการวนซ้ำ ; การเพิ่มหรือลดค่าตัวแปรวนซ้ำ ) { คำสั่งที่ต้องทำ; }
7. คำสั่ง for (ต่อ) การเพิ่มค่าหรือลดค่าตัวแปรวนทำซ้ำ เงื่อนไขการวนซ้ำ ค่าเริ่มต้น for ( i = 0; i < 20; i++ ) { number = inputBox.getInteger(); sum += number; }
ตัวอย่างที่ 8 การเพิ่มหรือลดค่าตัวแปรวนทำซ้ำ for (int i = 0; i < 100 ; i += 5) // i = 0 , 5 , 10, …,100 for (int j = 2; j < 40 ; j *= 2) // j = 2, 4, 8 … for (int k =100; k > 0; k --) // k = 100 , 99 , 98, … , 1
8. คำสั่ง while false while (เงื่อนไข) { คำสั่งที่ต้องทำ; คำสั่งที่ต้องทำ; } true
ตัวอย่างที่ 9 เขียน while loop เพื่อทำการคำนวณผลบวกของเลขตั้งแต่ 1-100 int sum = 0, number = 1; while(number <= 100) { sum = sum + number; number = number + 1; }
9. คำสั่ง do ..while do { คำสั่งที่ต้องทำ; คำสั่งที่ต้องทำ; } while (เงื่อนไข); true false