750 likes | 1.08k Views
บทที่ 3. พื้นฐานโปรแกรมภาษาจาวา (Overview of Java Programming Language). วัตถุประสงค์. แนะนำสัญลักษณ์และคำ ต่างๆ ที่ใช้ในภาษาจาวา แนะนำข้อมูลค่าคงที่ และ ชนิดข้อมูล แบบ พื้นฐานที่ใช้ในภาษาจาวา แนะนำ การประกาศและคำสั่งกำหนดค่าตัวแปร แนะนำตัวดำเนินการ ประเภทต่างๆ อธิบาย การแปลงชนิดข้อมูล
E N D
บทที่ 3 พื้นฐานโปรแกรมภาษาจาวา (Overview of Java Programming Language)
วัตถุประสงค์ • แนะนำสัญลักษณ์และคำต่างๆที่ใช้ในภาษาจาวา • แนะนำข้อมูลค่าคงที่และชนิดข้อมูลแบบพื้นฐานที่ใช้ในภาษาจาวา • แนะนำการประกาศและคำสั่งกำหนดค่าตัวแปร • แนะนำตัวดำเนินการประเภทต่างๆ • อธิบายการแปลงชนิดข้อมูล • แนะนำชนิดข้อมูลแบบอ้างอิง • แนะนำคำสั่งที่ใช้ในการรับข้อมูลและคำสั่งที่ใช้ในการแสดงผล
ไวยากรณ์ภาษาจาวา (Java Syntax) • คำหรือข้อความที่สามารถเขียนในโปรแกรมภาษาจาวาจะต้องเป็นคำหรือข้อความในรูปแบบใดรูปแบบหนึ่งของประเภทต่างๆเหล่านี้ • คอมเม็นต์ (Comment) • Identifier • คีย์เวิร์ด (Keywords) • สัญลักษณ์แยกคำ (Separators) • ช่องว่าง (Whitespace) • ข้อมูลค่าคงที่ (Literals)
คอมเม็นต์ • คอมเม็นต์คือข้อความที่แทรกอยู่ในโปรแกรม • คอมเม็นต์เขียนไว้เพื่อ • อธิบายโปรแกรม • ให้ผู้อ่านเข้าใจโปรแกรมง่ายยิ่งขึ้น • ช่วยทำให้การแก้ไขและปรับปรุงโปรแกรมเป็นไปได้ง่ายขึ้น • ภาษาจาวากำหนดรูปแบบของการเขียนคอมเม็นต์ไว้สามรูปแบบดังนี้ • // This is a comment คอมเม็นต์สำหรับข้อความบรรทัดเดียว • /* This is also a comment */ คอมเม็นต์สำหรับข้อความตั้งแต่หนึ่งบรรทัดขึ้นไป • /** This is a comment for documentation */ คอมเม็นต์สำหรับข้อความที่ต้องการสร้างเป็นไฟล์เอกสารที่เป็นไฟล์ประเภท HTML
ตัวอย่างโปรแกรม /* This program is to show how to write comments */ public class ShowComments { // Main method public static void main(String args[]) { /** This is a comment for documentation */ System.out.println("Document"); } }
Identifier • identifier คือชื่อที่ตั้งขึ้นในภาษาจาวา ซึ่งอาจเป็นชื่อของคลาส ชื่อของตัวแปร หรือชื่อของเมธอด • identifier จะต้องเป็นไปตามกฎการตั้งชื่อดังนี้ • identifier จะต้องขึ้นต้นด้วยอักขระ A-Z, a-z, _ หรือ $ เท่านั้น • identifier ที่ประกอบไปด้วยตัวอักขระมากกว่าหนึ่งตัว ตัวอักขระหลังจากตัวแรกนั้นจะต้องเป็นตัวอักขระข้างต้น หรือเป็นตัวเลข 0 ถึง 9 เท่านั้น • identifier จะต้องไม่ตรงกับคีย์เวิร์ด • identifier ในภาษาจาวาเป็น case sensitive ทำให้ myVariable แตกต่างจาก MyVariable
ถูกต้อง MyVariable _MyVariable $x This_is_also_a_variable ไม่ถูกต้อง My Variable 9pns a+c Hello'World public ตัวอย่างของ Identifier
หลักการตั้งชื่อที่ปฏิบัติกันโดยทั่วไปหลักการตั้งชื่อที่ปฏิบัติกันโดยทั่วไป • การตั้งชื่อของคลาส • จะขึ้นต้นด้วยตัวอักษรพิมพ์ใหญ่แล้วตามด้วยตัวอักษรพิมพ์เล็กหรือตัวเลข โดยจะใช้ตัวอักษรพิมพ์ใหญ่เฉพาะอักษรนำของแต่ละคำที่ตามมาในชื่อ • ควรเป็นคำนาม • ตัวอย่างเช่น Sample, HelloWorld, Student หรือ GraduateStudent เป็นต้น • การตั้งชื่อของตัวแปร • จะขึ้นต้นด้วยตัวอักษรพิมพ์เล็ก โดยจะใช้ตัวอักษรพิมพ์ใหญ่เฉพาะอักษรนำของแต่ละคำที่ตามมาในชื่อ • ควรเป็นคำนามหรือเป็นชื่อสั้นๆ • ตัวอย่างเช่น x, i, name, id หรือ gpa เป็นต้น
หลักการตั้งชื่อที่ปฏิบัติกันโดยทั่วไปหลักการตั้งชื่อที่ปฏิบัติกันโดยทั่วไป • การตั้งชื่อเมธอด • จะใช้หลักการเดียวกับการตั้งชื่อตัวแปร แต่ควรเป็นคำกริยา • ตัวอย่างเช่น getName, setName หรือ showDetails เป็นต้น • การตั้งชื่อค่าคงที่ • จะใช้ตัวอักษรพิมพ์ใหญ่ทั้งหมด และจะแยกคำโดยใช้เครื่องหมาย _ (underscore) • ควรเป็นคำนาม • ตัวอย่างเช่น MIN_GPA เป็นต้น
คีย์เวิร์ด • คีย์เวิร์ดคือชื่อที่มีความหมายพิเศษในภาษาจาวา • คีย์เวิร์ดทุกตัวจะเป็นตัวอักษรตัวพิมพ์เล็ก • คีย์เวิร์ด goto และ const • เป็นคีย์เวิร์ดที่ไม่ได้ตรงกับคำสั่งใดในภาษาจาวา • คำว่า true และ false • ไม่ได้เป็นคีย์เวิร์ดในภาษาจาวา แต่จะเป็นข้อมูลค่าคงที่ชนิดตรรกะ • คำว่า null • ไม่ได้เป็นคีย์เวิร์ดในภาษาจาวา แต่จะเป็นข้อมูลค่าคงที่ของตัวแปรที่มีชนิดข้อมูลเป็นประเภทอ้างอิง
คีย์เวิร์ดที่ใช้ในภาษาจาวาคีย์เวิร์ดที่ใช้ในภาษาจาวา
ช่องว่าง • โปรแกรมภาษาจาวาสามารถที่จะมีช่องว่างเพื่อที่แยกคำ ประโยค หรือคำสั่งต่างๆภายในโปรแกรมได้ • รูปแบบของช่องว่างประกอบด้วย • ช่องว่าง (กดคีย์ Space บนคีย์บอร์ด) • แท็ป (กดคีย์ Tab บนคีย์บอร์ด) • การขึ้นบรรทัดใหม่ (กดคีย์ Enter บนคีย์บอร์ด)
ข้อมูลค่าคงที่ • ข้อมูลค่าคงที่คือคำที่ใช้แสดงข้อมูลที่เป็นตัวเลข ตัวอักขระ ข้อความ หรือค่าทางตรรกะ • ข้อมูลค่าคงที่แบ่งออกเป็น 5 ประเภทดังนี้ • ตรรกะ (boolean) • ตัวอักขระ (character) • ตัวเลขจำนวนเต็ม (integral) • ตัวเลขทศนิยม (floating point) • ข้อความ (string)
ชนิดข้อมูลแบบพื้นฐาน • ชนิดข้อมูลในภาษาจาวาแบ่งเป็นสองประเภทใหญ่ๆคือ • ชนิดข้อมูลแบบพื้นฐาน (primitive data type) • ชนิดข้อมูลแบบอ้างอิง (reference data type) • ชนิดข้อมูลแบบพื้นฐานแบ่งออกเป็น 4 ประเภทดังนี้ • ชนิดข้อมูลตรรกะ (Logical) คือชนิดboolean • ชนิดข้อมูลอักขระ (Textual) คือชนิด char • ชนิดข้อมูลตัวเลขจำนวนเต็ม (Integral) คือชนิดbyte,short,intและlong • ชนิดข้อมูลตัวเลขทศนิยม (Floating point) คือชนิด floatและdouble
ขนาดและช่วงค่าของชนิดข้อมูลแบบพื้นฐานขนาดและช่วงค่าของชนิดข้อมูลแบบพื้นฐาน
ข้อมูลชนิดตรรกะ • ข้อมูลชนิดตรรกะมีข้อมูลค่าคงที่อยู่ 2 ค่าคือ • true และ false • ตัวอย่างเช่น คำสั่ง • boolean flag = true; เป็นการกำหนดตัวแปรที่ชื่อว่า flagให้มีชนิดข้อมูลเป็น boolean โดยกำหนดให้มีค่าเป็น true
ข้อมูลชนิดตัวอักขระ • ข้อมูลชนิดตัวอักขระใช้เพื่อแสดงตัวอักขระหนึ่งตัวซึ่งถูกเก็บอยู่ในรูปของมาตรฐาน Unicode ขนาด 16 บิต • โดยจะมีค่าตั้งแต่ ‘\u0000’ ถึง ‘\uFFFF’ • ตัวอย่างเช่น คำสั่ง • char letter = ‘\u0041'; เป็นการประกาศตัวแปรที่ชื่อว่า letter ให้เป็นข้อมูลชนิด char โดยมีค่าเป็น \u0041 ซึ่งมีค่าเท่ากับตัวอักษร A • ตัวอย่างเช่น คำสั่ง • char letter = ‘A’; เป็นการประกาศตัวแปรที่ชื่อว่า letter ให้เป็นข้อมูลชนิด char โดยมีค่าเป็นตัวอักษร A เช่นเดียวกับคำสั่งก่อนหน้านี้
อักขระพิเศษที่นิยมใช้ทั่วไปอักขระพิเศษที่นิยมใช้ทั่วไป
ข้อมูลชนิดตัวเลขจำนวนเต็มข้อมูลชนิดตัวเลขจำนวนเต็ม • มีชนิดข้อมูลพื้นฐาน 4 ชนิดคือ • byte,short,int,long • โดยทั่วไปข้อมูลชนิดตัวเลขจำนวนเต็มจะถูกกำหนดให้มีชนิดข้อมูลเป็น int • ข้อมูลค่าคงที่สามารถเขียนได้สามแบบดังนี้ • เลขฐานสิบคือการเขียนเลขจำนวนเต็มทั่วไป อาทิเช่น -121 และ 75362 เป็นต้น • เลขฐานแปดคือการเขียนเลขจำนวนเต็มที่ขึ้นต้นด้วยเลข 0 แล้วตามด้วยตัวเลขตั้งแต่ 0 ถึง 7 อาทิเช่น 016 (มีค่าเท่ากับ 14 ในเลขฐานสิบ) • เลขฐานสิบหกคือการเขียนเลขจำนวนเต็มที่ขึ้นต้นด้วย 0x หรือ 0X แล้วตามด้วยตัวเลขตั้งแต่ 0 ถึง 9 หรือตัวอักษร A ถึง F อาทิเช่น 0xA2 (มีค่าเท่ากับ 162 ในเลขฐานสิบ)
ข้อมูลชนิดตัวเลขจำนวนเต็ม • ข้อมูลค่าคงที่ของเลขจำนวนเต็มที่เป็นชนิด long จะมีตัวอักษร l หรือ L ต่อท้าย อาทิเช่น • 2l หมายถึง เลขฐานสิบที่มีค่าเป็น 2 ซึ่งเป็นข้อมูลชนิด long • 077L หมายถึง เลขฐานแปดที่เป็นข้อมูลชนิด long • 0xBAACL หมายถึง เลขฐานสิบหกที่เป็นข้อมูลชนิด long
ข้อมูลชนิดตัวเลขทศนิยม (floating point) • ข้อมูลชนิดตัวเลขทศนิยมจะเป็นเลขที่มีเครื่องหมายจุดทศนิยม อาทิเช่น • 3.14 หรือ3.0 • มีชนิดข้อมูลพื้นฐาน 2 ชนิด คือ double และ float • โดยทั่วไปข้อมูลชนิดตัวเลขทศนิยมจะถูกกำหนดให้มีชนิดข้อมูลเป็นdouble • สามารถเขียนในรูปแบบของเลขยกกำลังสิบ (exponential form) ได้โดยใช้ตัวอักษร E หรือ e ระบุจำนวนที่เป็นเลขยกกำลังสิบ อาทิเช่น • 6.02E23 หรือ 2e-7
ข้อมูลชนิดตัวเลขทศนิยม • ข้อมูลชนิดตัวเลขทศนิยมที่มีชนิดข้อมูลเป็นfloat จะมีตัวอักษร F หรือ f ต่อท้าย อาทิเช่น • 2.718F หรือ 3.14f • ข้อมูลชนิดตัวเลขทศนิยมที่มีชนิดข้อมูลเป็นdouble จะมีตัวอักษร D หรือ d ต่อท้าย อาทิเช่น • 2.718D (โดยทั่วไปไม่จำเป็นต้องใส่ตัวอักษร D เพราะข้อมูลชนิดตัวเลขทศนิยมจะกำหนดให้เป็น doubleอยู่แล้ว)
ตัวแปร (Variable) • ตัวแปรคือข้อมูลที่สามารถเปลี่ยนแปลงค่าได้ในโปรแกรมโดยใช้คำสั่งกำหนดค่า • คำสั่งในการประกาศตัวแปรของภาษาจาวามีรูปแบบดังนี้ dataType variableName[,variableName]; • ตัวอย่างเช่น คำสั่ง int amount; double x,y; float price,wholeSalePrice;
คำสั่งกำหนดค่า (Assignment Statement) • คำสั่งกำหนดค่าจะเป็นคำสั่งที่ใช้ในการเปลี่ยนแปลงค่าของตัวแปร • คำสั่งกำหนดค่า (assignment statement) ซึ่งมีรูปแบบดังนี้ variableName = expression; • ตัวอย่างเช่น x = 1; radius = 3.14; c = ‘a’; y = x+4*3; amount = 121+14;
คำสั่งประกาศและกำหนดค่าตัวแปรคำสั่งประกาศและกำหนดค่าตัวแปร • เราสามารถที่จะประกาศและกำหนดค่าเริ่มต้นของตัวแปรภายในคำสั่งเดียวกัน โดยมีรูปแบบคำสั่งดังนี้ dataType variableName = expression [,variableName = expression]; • ตัวอย่างเช่น int amount = 123; float price = 12.0f; double x = 4.0, y = 2.5;
ตัวอย่างโปรแกรม public class VariableAssignDemo { public static void main(String args[]) { int x,y; boolean b1; float z = 3.414f; /* The program will not be compiled successfully if a character f is missing */ double w; x = 5; y = 4; b1 = (x > y); w = x * 3.2; System.out.println("x = " + x + " y = " + y); System.out.println("b1 = " + b1); System.out.println("z = " + z + " w = " + w); } }
ค่าคงที่ • การประกาศค่าคงที่ในภาษาจาวาทำได้โดยการใส่คีย์เวิร์ด final หน้าคำสั่งประกาศชื่อ โดยมีรูปแบบดังนี้ final dataType CONSTANT_NAME = expression; • ตัวอย่างเช่น คำสั่ง final int MINIMUM = 4; final double MIN_GPA = 2.00;
ตัวอย่างโปรแกรม public class ConstantDemo { public static void main(String args[]) { final int MAXIMUM = 10; final double MIN_GPA; System.out.println("Maximum is " + MAXIMUM); MIN_GPA = 2.00; System.out.println("Minimum GPA is " + MIN_GPA); // MIN_GPA = 3.00; //illegal } }
ขอบเขตของตัวแปรและค่าคงที่ขอบเขตของตัวแปรและค่าคงที่ • ตัวแปรและค่าคงที่ซึ่งประกาศขึ้นจะสามารถใช้งานภายในบล็อกคำสั่ง ({ }) ที่ประกาศเท่านั้น • ภาษาจาวาแบ่งตัวแปรและค่าคงที่เป็นสองประเภทคือ • ตัวแปรหรือค่าคงที่ที่เป็นคุณลักษณะของออปเจ็คหรือคุณลักษณะของคลาส • ตัวแปรหรือค่าคงที่ที่อยู่ในบล็อกของเมธอดที่เรียกว่าค่าคงที่ภายใน (local constant) หรือตัวแปรภายใน (local variable)
ค่าเริ่มต้นอัตโนมัติของตัวแปรค่าเริ่มต้นอัตโนมัติของตัวแปร • ตัวแปรที่เป็นคุณลักษณะของออปเจ็คหรือคุณลักษณะของคลาสจะถูกกำหนดค่าเริ่มต้นให้โดยอัตโนมัติ
ตัวอย่างโปรแกรม public class VariableScopeDemo { public int i; // object variable public void method1() { int j = 4; // local variable int k = 2; // another local variable } public void method2() { int j = 0; // local variable System.out.println(i); // calling an object variable i // System.out.println(k); // illegal } }
ตัวดำเนินการ (Operator) • นิพจน์ภาษาจาวาอาจจะประกอบด้วยข้อมูลค่าคงที่ ตัวแปร หรือค่าคงที่ต่างๆ โดยจะมีตัวดำเนินการต่างๆไว้เพื่อคำนวณหาผลลัพธ์ที่เป็นชนิดข้อมูลต่างๆ • ตัวดำเนินการในภาษาจาวาแบ่งออกเป็น 4 ประเภทคือ • ตัวดำเนินการทางคณิตศาสตร์ (Arithmetic Operator) • ตัวดำเนินการแบบสัมพันธ์ (Relational Operator) • ตัวดำเนินการทางตรรกศาสตร์ (Logical Operator) • ตัวดำเนินการแบบบิต (Bitwise Operator)
ตัวดำเนินการทางคณิตศาสตร์ตัวดำเนินการทางคณิตศาสตร์
ตัวดำเนินการเพิ่มค่าและลดค่าตัวดำเนินการเพิ่มค่าและลดค่า • ตัวดำเนินการเพื่อบวกค่าทีละ 1 หรือลดค่าทีละ 1 • เครื่องหมาย ++ หรือ -- • ตัวอย่าง • x++ คือ x = x+1 • ++x คือ x = x+1 • x-- คือ x = x-1 • --x คือ x = x-1 • ถ้าวางเครื่องหมายไว้ข้างหน้า โปรแกรมจะคำนวณค่าก่อนแล้วจึงทำคำสั่ง • ถ้าวางเครื่องหมายไว้ข้างหลัง โปรแกรมจะคำนวณค่าหลังจากทำคำสั่ง
ตัวอย่างโปรแกรม public class IncrementDemo { public static void main(String args[]) { int x; int y; x = 5; y = x++; System.out.println("x = "+x+" y = "+y); y = ++x; System.out.println("x = "+x+" y = "+y); } } x = 6 y = 5 x = 7 y = 7 ผลลัพธ์ที่ได้จากการรันโปรแกรม
ตัวดำเนินการแบบสัมพันธ์ตัวดำเนินการแบบสัมพันธ์
ตัวอย่างโปรแกรม public class BooleanDemo { public static void main(String args[]) { int x = 5; int y = 4; boolean b1; b1 = (x!=y); System.out.println("x not equal to y is "+b1); System.out.println("y less than 0 is "+(y<0)); } }
ตัวดำเนินการทางตรรกศาสตร์ตัวดำเนินการทางตรรกศาสตร์
ตัวอย่างการใช้ตัวดำเนินการทางตรรกศาสตร์ตัวอย่างการใช้ตัวดำเนินการทางตรรกศาสตร์ นิพจน์ผลลัพธ์ (7>6) && (2<1) false (7>6) || (2<1) true !(7>6) false
ผลลัพธ์ของการกลับค่าทางตรรกะผลลัพธ์ของการกลับค่าทางตรรกะ
ผลลัพธ์ของการ AND ค่าทางตรรกะ
ผลลัพธ์ของการ OR ค่าทางตรรกะ
ผลลัพธ์ของ Exculsive ORค่าทางตรรกะ
ลำดับความสำคัญของตัวดำเนินการลำดับความสำคัญของตัวดำเนินการ
ตัวอย่าง คำสั่ง x = 2+3*4-(7+2); คำนวณหาผลลัพธ์ตามลำดับดังนี้ • คำนวณหาผลลัพธ์ค่า 7+2 ทำให้ได้ x = 2+3*4-9 • คำนวณหาผลลัพธ์ค่า 3*4 ทำให้ได้ x = 2+12-9 • คำนวณหาผลลัพธ์ค่า 2+12 ทำให้ได้ x = 14-9 • คำนวณหาผลลัพธ์ค่า 14-5 ทำให้ได้ x = 5
การแปลงชนิดข้อมูล • ในกรณีที่ตัวถูกดำเนินการทั้งสองมีชนิดข้อมูลที่ต่างกัน ภาษาจาวาจะมีหลักการแปลงชนิดข้อมูล (type conversion) ดังนี้ • ถ้าตัวถูกดำเนินการตัวหนึ่งมีชนิดข้อมูลเป็น double ตัวถูกดำเนินการอีกตัวหนึ่งจะถูกแปลงให้มีชนิดข้อมูลเป็น double โดยอัตโนมัติ • ถ้าตัวถูกดำเนินการทั้งสองไม่ได้มีชนิดข้อมูลเป็น double แต่มีตัวถูกดำเนินการตัวหนึ่งที่มีชนิดข้อมูลเป็น float ตัวถูกดำเนินการอีกตัวหนึ่งจะถูกแปลงให้มีชนิดข้อมูลเป็น float โดยอัตโนมัติ • ถ้าตัวถูกดำเนินการทั้งสองไม่ได้มีชนิดข้อมูลเป็น double หรือ float แต่มีตัวถูกดำเนินการตัวหนึ่งที่มีชนิดข้อมูลเป็น long ตัวถูกดำเนินการอีกตัวหนึ่งจะถูกแปลงให้มีชนิดข้อมูลเป็น long โดยอัตโนมัติ
การแปลงชนิดข้อมูล • กรณีอื่นๆ ตัวถูกดำเนินการทั้งสองจะแปลงให้มีชนิดข้อมูลเป็น int • ตัวอย่าง byte b1, b2, b3; b1 = 2; b2 = 4; b3 = b1+b2; //illegal • คำสั่งกำหนดค่า b3 ไม่ถูกต้องเนื่องจาก b1+b2 จะให้ค่าข้อมูลที่มีชนิดข้อมูลเป็นint