ครัง้ ท่ี 2หลกั การเขียนโปรแกรม ตวั แปร ชนิดข้อมลู และการดาเนินการตา่ ง ๆจดุ ประสงค์ 1. อธิบายประเภทของ Comment และเลอื กใช้งานได้ 2. อธิบายกฎการตงั้ ชื่อของภาษาจาวา และสามารถตีความหมายของ White Space ได้ 3. สามารถจาแนกประเภทของ Literal และเลอื กใช้งานได้ 4. สามารถเช่ือมตอ่ ข้อมลู ได้ 5. อธิบายรูปแบบของตวั แปรชนดิ ตา่ ง ๆ และสามารถเลอื กใช้งานได้อยา่ งถกู ต้อง 6. อธิบายชนดิ ของข้อมลู พนื ้ ฐานได้ 7. สามารถใช้งานตวั ดาเนินการของจาวา และแปลงชนดิ ของข้อมลู ได้ 8. อธิบายคา่ คงท่ไี ด้ คณะเทคโนโลยีสารสนเทศ มหาวิทยาลยั นอร์ทกรุงเทพ
ครัง้ ท่ี 2 เรื่อง หลกั การเขียนโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนินการตา่ งๆ คอมเมนต์ (Comment) ในภาษาจาวา คอมเมนต์ในภาษาอ่ืนเป็นเพียงแคก่ ารเขียนกากบั อธิบายโปรแกรมเทา่ นนั้ จะไม่ได้รับการแปลผลแตส่ าหรับภาษาจาวา คอมเมนต์ยงั สามารถเป็นเอกสารประกอบโปรแกรมได้ คอมเมนต์ประเภทนีเ้รียกว่าDocumentation comment ซง่ึ จะไมถ่ กู ข้ามการแปลผลอยา่ งคอมเมนตอ์ ่ืนทว่ั ไปคอมเมนตใ์ นภาษาจาวาแบง่ ออกเป็น 3 ประเภทตวั อย่าง รายละเอียด เคร่ืองหมาย ประเภทของคอมเมนต์//This is ข้อความท่ีอยดู่ ้านหลงั เคร่ืองหมายไป // คอมเมนต์แบบบรรทดั เดียวone line จนสดุ บรรทดั จะกลายเป็นคอมเมนต์ (one line comment)comment/*This is /*ไว้ หน้ าข้ อความท่ีต้ องการคอม /*...........*/ คอม เม นต์ แบบหลายบรรทัด (many linemany line เมนต์ */ไว้หลงั คอมเมนต์ comment)comment*/ /*ไว้จดุ เร่ิมต้นของข้อความท่ีต้องการ /**.......*/ คอมเมนต์สาหรับสร้ างเอกสารประกอบ คอมเมนต์ */ไว้จุดสิน้ สุดข้อความที่ โปรแกรม เป็นคอมเมนต์ (Documentation comment) ตารางท่ี 2.1 แสดงคอมเมนต์ในภาษาจาวา กฏการตงั้ ช่ือของภาษาจาวา • ชื่อท่ีตงั้ ต้องประกอบด้วยตวั อกั ษรภาษาอังกฤษ, ตวั เลข, underscore (_) หรือ dollar sign ($) ก็ ได้ แตต่ ้องขนึ ้ ต้นด้วยภาษาองั กฤษ, _, $ เทา่ นนั้ จะขนึ ้ ด้วยตวั เลขไมไ่ ด้ • ช่ือท่ีตงั้ ขนึ ้ ประกอบด้วยชอ่ งวา่ งไมไ่ ด้ • ช่ือท่ีตงั้ ขนึ ้ เป็น case-sensitive หมายถึงตวั อกั ษรใหญ่กบั ตวั อกั ษรเล็กถือวา่ เป็นคนละตวั กนัชื่อที่ตงั้ ต้องไมซ่ า้ กบั คาสงวน (Reserved word) ในภาษาจาวา ดงั นี ้SWE102 Computer Programming | อาจารย์รัตตกิ านต์ วบิ ลู ย์พานิช 15
ครัง้ ที่ 2 เรื่อง หลกั การเขยี นโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนนิ การตา่ งๆsynchronized package goto continue abstractthis private if default assertthrow protected implements do booleanthrows public import double breaktransient return instanceof else bytetry short int extends casevoid static interface final catchvolatile strictfp long finally charwhile super native float class ตารางท่ี 2.2 แสดงคาสงวน (Reserved word) ช่ือท่ีไม่ถูกต้อง ช่ือท่ีถูกต้องInterface เพราะช่ือซา้ กบั คาสงวนในภาษาจาวา aUser name เพราะช่ือมีชอ่ งวา่ ง b13people เพราะช่ือขนึ ้ ต้นด้วยตวั เลข app_pwdwhile เพราะชื่อซา้ กบั คาสงวนในภาษาจาวา _testValueemail@ddress เพราะช่ือประกอบด้วยอกั ขระพิเศษ $Var1_1@ ตารางท่ี 2.3 ตวั อย่างการตัง้ ช่ือท่ถี ูกต้องและไม่ถกู ต้องSWE102 Computer Programming | อาจารย์รัตตกิ านต์ วิบลู ย์พานิช 16
ครัง้ ที่ 2 เร่ือง หลกั การเขยี นโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนินการตา่ งๆ จาวากบั การตีความหมาย White Space White Space หมายถึงตัวอักษรที่ไม่มีรูปร่างหน้าตา เป็นตัวอักษรที่มองไม่เห็น ซึ่งจาวาแบ่งWhite space ออกเป็น 5 ชนิด ได้แก่ • space character คอื ชอ่ งวา่ ง • horizontal tab คอื ตวั อกั ษรแทบ็ แนวนอน (\t) • form feed คอื ตวั อกั ษรขนึ ้ หน้าใหม่ (\f) • carriage return คือ ตวั อกั ษรเล่ือนเคอร์เซอร์ไปซ้ายสดุ (\r) • linefeed หรือ newline คอื ตวั อกั ษรขนึ ้ บรรทดั ใหม่ (\n) คอมไพเลอร์จะไม่สนใจวา่ เราเขียนโปรแกรมทงั้ หมดอยภู่ ายในบรรทดั เดยี วกนั หรือเขียนแยกไว้หลาย ๆบรรทัด เพราะ white space มีหน้าที่เพียงแค่ช่วยแยกคาให้อ่านง่ายขึน้ เท่านัน้ ดังนัน้ ไม่ว่าจะมี whitespace อยเู่ ป็นจานวนเทา่ ไรระหวา่ งคาแตล่ ะคาก็ตาม ยอ่ มไมส่ ง่ ผลตอ่ การตีความของคอมไพเลอร์หลักการของ White space มีอยู่ 2 ข้อเทา่ นนั้ คือ ★ ห้ามมี white space ระหวา่ งชื่อเมธอดและเครื่องหมายวงเล็บเปิด เชน่ตัวอย่างท่ผี ิด ตัวอย่างท่ถี กู getSalary (2264); getSalary(2264); ตารางท่ี 2.4 แสดงตัวอย่าง White space★ ต้องใส่ white space ไว้หลงั reserved word เสมอ เชน่เพราะ public, static, void ล้ วนเป็ น reserved word จึงต้ องมี white public static void main(Stringspace ระหวา่ งคาเหลา่ นี ้ args[ ])เพราะไม่มี white space ระหว่าง reserved word ทาให้คอมไพเลอร์ไม่ publicstaticvoidmain(Stringสามารถตคี วามได้อยา่ งถกู ต้อง args[ ])การเว้นช่องว่าง (ช่องว่างเป็น white space ประเภท space character) public static void main(String args[ ])ระหว่าง reserved word แต่ละคามากกว่า 1 ช่องว่างไม่ถือว่าผิด เพราะคอมไพเลอร์ต้ องการเพียงแค่ให้ เว้ นวรรคระหว่าง reserved word ก็เพียงพอแล้ว แตจ่ ะเว้นก่ีชอ่ งวา่ งก็ได้ ตารางท่ี 2.5 แสดงตัวอย่าง White spaces 17SWE102 Computer Programming | อาจารย์รัตติกานต์ วบิ ลู ย์พานิช
ครัง้ ท่ี 2 เรื่อง หลกั การเขียนโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนนิ การตา่ งๆLiteral Literal คือค่าข้อมูลที่แน่นอนซ่ึงเราระบุตายตวั ลงไปในโค้ดโปรแกรมว่าต้องการให้มีคา่ เป็นอะไรตวั อยา่ งเชน่ ‘A’, “Hello”, 100 เป็นต้นจาวาแบง่ Literal ออกเป็น 5 ประเภท คือ Integer literal สามารถระบุ integer literal ได้ทัง้ ในรูปแบบของเลขฐานสิบ (decimal), เลขฐานแปด(octal) และเลขฐานสบิ หก (hexadecimal) ● ถ้า interger literal เป็นเลขจานวนเตม็ แบบยาว (long interger) ต้องระบุ L หรือ 1 ตอ่ ท้ายคา่ นนั้ ● ถ้า interger literal เป็นเลขฐานแปด ให้นาหน้าคา่ นนั้ ด้วยเลข 0 ● ถ้า interger literal เป็นเลขฐานสิบหก ให้นาหน้าคา่ นนั้ ด้วย 0x (ศนู ย์เอ็กซ์)Hexadecimal Octal Long Decimal0xF 017 15L 150x10 020 161 160x64 0144 100L 100 ตารางท่ี 2.6 แสดง Integer literalFloating-point literal สามารถระบุ floating-point literal ได้ทัง้ ในรูปแบบของเลขฐานสิบ เช่น 66.386 หรือในรูปแบบของ exponential เช่น 6.02e23 (มีความหมายเท่ากับ 6.02x1023) เป็นต้น โดย Floating-point literal แบ่งออกเป็น 2 ประเภท คอื • Floating-point literal ประเภทเลขจานวนจริงชนิด float ซึ่งการกาหนดค่าให้กับ Floating-point ประเภทนี ้จะต้องระบุ F หรือ f ตอ่ ท้ายคา่ นนั้ เชน่ 43.3F, 6.02e+23f, -12.123f • Floating-point literal ประเภทเลขจานวนจริงชนิด double ซง่ึ การกาหนดคา่ ให้กบั Floating-point ประเภทนี ้จะระบุ D หรือ d ตอ่ ท้ายคา่ นนั้ หรือไมก่ ็ได้ เชน่ 3.1415d, 6.02e23D, 3.141, 6.02e23 Boolean literal ประกอบด้วยคา่ ตรรกะ 2 คา่ คอื true และ falseCharacter literal เป็นตวั อักษรตวั เดียว หรือจะเป็นค่า escape sequence ก็ได้ โดย character literal จะถูกคลุมด้วยเคร่ืองหมาย single quate(‘ ’)SWE102 Computer Programming | อาจารย์รัตตกิ านต์ วิบลู ย์พานิช 18
ครัง้ ที่ 2 เรื่อง หลกั การเขยี นโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนินการตา่ งๆความหมาย Escape sequenceคือ ถอยหลงั 1 ชอ่ งตวั อกั ษร (backspace) \bคือ แทบ็ แนวนอน (horizontal tab) \tคอื ขนึ ้ บรรทดั ใหม่ (newline) \nคอื ขนึ ้ หน้าใหม่ (form feed) \fคอื เลอ่ื นเคอร์เซอร์ไปทางซ้ายสดุ (carriage return) \rคอื ตวั อกั ษร ' (single quote) \’คือ ตวั อกั ษร \" (double quote) \”คือ ตวั อกั ษร \ (backslash) \\คือ ตงั อกั ษรท่ีมีรหัวแอสกี (ASCII) เท่ากับค่าของเลขฐาน \xxxแปดท่ีระบุ (xxx คอื ตวั เลขในฐานแปด) เช่น สมมตสิ งั่ พิมพ์ค่า '\043' ผลลัพธ์ที่ได้ คือ # เพราะตวั อักษร # มีรหัสแอสกีเท่าหบั 43 ฐานแปดคอื ตวั อกั ษรที่มีรหสั Unicode เทา่ กบั ค่าของเลขฐานสิบหก \uxxxxที่ระบุ (xxxx คือ ตัวเลขในรูปฐานสิบหก) เช่น สมมติส่ังพิมพ์ค่า '\u0023' ผลลัพธ์ท่ีได้ คือ # เพราะตัวอักษร # มีรหสั Unicode เทา่ กบั 23 ฐานสบิ หก ตารางท่ี 2.7 แสดง Escape sequence ในภาษาจาวาString Literal string literal อาจประกอบด้วยตวั อักษรตวั เดียว ตวั อักษรหลายตวั หรือเป็นค่าสตริงว่าง (ไม่มีตวั อกั ษรใด ๆ เลย) ก็ได้โดย string literal จะถกู คลมุ ด้วยเครื่องหมาย double quote (\"\") ภายในเครื่องหมาย double quote เราสามารถระบุ escape sequence เพ่ือให้หมายถึงตวั อกั ษรหนงึ่ ๆ ได้ ตัวอย่างของ string literal เช่น \"\",\"a\",\"A String\",\"Data 1\t Data2\", \"Line 1 \r\n Line2\", \"Page1 \fPage2\" เป็นต้นSWE102 Computer Programming | อาจารย์รัตตกิ านต์ วบิ ลู ย์พานิช 19
ครัง้ ที่ 2 เรื่อง หลกั การเขียนโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนนิ การตา่ งๆการแสดงผลออกทางจอภาพSystem.out.print(“data”); พมิ พ์ข้อความ data ออกทางจอภาพSystem.out.println(“data”); เมื่อพมิ พ์ข้อความ data ออกทางจอภาพจะทาการขนึ ้ บรรทดั ใหม่System.out.print(data); พิมพ์คา่ ข้อมลู ตวั แปร data ออกทางจอภาพSystem.out.println(data); เมื่อพิมพ์คา่ ข้อมลู ตวั แปร data ออกทางจอภาพจะทาการขนึ ้ บรรทดั ใหม่ไฟล์ TestOutput.javaclass TestOutput{ public static void main(String [ ] args) { System.out.print(“Test”); System.out.println(“ Hot java”); System.out.print(“Welcome to Hot java”); }}ผลลพั ธ์ในการรันโปรแกรมTest Hot javaWelcome to Hot java การเชื่อมตอ่ ข้อมลู (Concatenation) หากข้อมลู ที่ต้องการแสดงผลมีอย่หู ลายตวั เราสามารถเช่ือมตอ่ ข้อมลู เหล่านนั้ ด้วยกันได้ โดยใช้เครื่องหมาย +ไฟล์ TestString.javaclass TestString{ public static void main(String [ ] args) { String a= “hello”; int b =123; System.out.print(a+ “ ” +b ); }}ผลลพั ธ์ในการรันโปรแกรม hello 123SWE102 Computer Programming | อาจารย์รัตติกานต์ วิบลู ย์พานิช 20
ครัง้ ท่ี 2 เร่ือง หลกั การเขียนโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนินการตา่ งๆการรับข้ อมูลทางคีย์ บอร์ ดimport java.util.Scanner; public class Cal2 { public static void main (String[] args) { Scanner sc = new Scanner(System.in);//input int num1,num2,total; System.out.print (\"Please enter two integers: \"); num1=sc.nextInt(); num2=sc.nextInt(); total=num1+num2;//calculate System.out.println(\"Total: \"+total);//output }}import java.io.*;class InputData { public static void main(String[ ] args){ String s; InputStreamReader ir = new InputStreamReader(System.in); BufferedReader in = new BufferedReader(ir); System.out.print(\"Enter your text here : \"); /*การอ่านข้อมูลที่รับมาจากคีย์บอร์ด ต้องใส่ try-catch ครอบด้วยเพ่ือดกั จับข้อผิดพลาดท่ีอาจเกิด ขนึ ้ จากการอา่ นข้อมลู ท่ีปอ้ นเข้ามาทางคีย์บอร์ดเร่ืองราวของ try-catch จะกลา่ วละเอียดอีกครัง้ */ try{ //อา่ นข้อมลู จากคีย์บอร์ดเข้ามาเก็บไว้ที่ตวั แปรสตริง s s = in.readLine(); System.out.println(\"Your text is \"+ s); /*หากเกิดข้อผดิ พลาดในการอา่ นข้อมลู ที่รับจากคีย์บอร์ด โปรแกรมจะดกั จบั ข้อผดิ พลาดท่ีเกิดขนึ ้ได้ด้วยคาสงั่ catch และจะพมิ พ์ข้อความ \"Read input keyboard error\" ออกทางจอภาพ*/ } catch(IOException e){SWE102 Computer Programming | อาจารย์รัตตกิ านต์ วิบลู ย์พานิช 21
ครัง้ ท่ี 2 เร่ือง หลกั การเขยี นโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนนิ การตา่ งๆ System.out.println(\"Read input keyboard error\"); } }}คลาสแม่ (Superclass) และ คลาสลูก (Subclass) คอื อะไรPeople Student Student_ID name name age age ภาพท่ี 2.1 แสดงคลาสแม่คลาสลูก จากรูปถ้าเราต้องการสร้างคลาส Student ให้มีคณุ สมบตั ทิ ่ีประกอบด้วย Student_ID, name, ageเราเพียงสร้ างคุณสมบตั ิ Student_ID ขึน้ มาเพียงอย่างเดียว ไม่จาเป็นต้องสร้ างคุณสมบัติ name, ageขึน้ มาใหม่ เนื่องจากคุณสมบตั ิดงั กล่าวอยู่ในคลาส People จึงสามารถสืบทอดคุณสมบตั ิมาจากคลาสPeople ได้เลยClass Student extends People { } การระบุ extends People เพ่ือกาหนดให้คลาส Student สืบทอดคณุ สมบตั ิมาจากคลาส Peopleซง่ึ คลาส People ถือวา่ เป็น คลาสแม่ (superclass) และเรียกคลาส Student วา่ คลาสลกู (subclass)ตวั แปร ชนิดข้อมลู และการดาเนินการตา่ ง ๆSWE102 Computer Programming | อาจารย์รัตตกิ านต์ วิบลู ย์พานิช 22
ครัง้ ท่ี 2 เรื่อง หลกั การเขยี นโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนินการตา่ งๆ ตวั แปร (Variable) ตวั แปร (Variable) คือ ช่ือที่กาหนดขนึ ้ เพ่ือใช้ในการเก็บข้อมลู โดยหลกั การตงั้ ช่ือให้กบั ตวั แปรจะเป็นไปตามกฎการตงั้ ช่ือชนิดข้อมลู ตวั แปร;รูปแบบการกาหนดคา่ ให้กบั ตวั แปร คือตวั แปร = ค่าทีต่ อ้ งการกาหนดให้ ;เม่ือประกาศตัวแปรขึน้ ภายในเมธอดใด ๆ ต้องกาหนดค่าตวั แปร จะไม่มีการกาหนดค่าเริ่มต้นให้กับตวั แปรโดยอตั โนมตั ิ หากมีการเรียกใช้งานตวั แปรท่ียังไม่ได้ถูกกาหนดค่า เม่ือคอมไพล์โปรแกรมคอมไพเลอร์จะแจ้งข้อผิดพลาดวา่ “variable might not have been initialzed” แตห่ ากประกาศคา่ ตวั แปรเป็นตวั แปรของคลาส คือ ประกาศตวั แปรไว้ภายในคลาส โดยตวั แปรนีไ้ มไ่ ด้ถกู ประกาศภายในเมธอดใดๆตวั แปรจะถกู กาหนดคา่ เริ่มต้นอตั โนมตั ิ หากเป็นชนิดข้อมลู byte, short, int, long จะถกู กาหนดเป็น 0 ถ้าเป็นชนิดข้อมูล float และ double จะถูกกาหนดให้เป็น 0.0 ชนิดข้อมูล char จะถกู กาหนดให้เป็นคา่ ว่างชนดิ ข้อมลู string จะถกู กาหนดให้เป็น null ชนิดข้อมลู boolean จะถกู กาหนดให้เป็น falseเคร่ืองหมายสาหรับกาหนดค่า วธิ ีใช้ ความหมายให้กับตัวแปร (กาหนดให้ a=5, b=2)+= a+=b a+=b หมายถึง a= a+b ดังนัน้ a= 5+2 =7-= a-=b a-=b หมายถึง a= a-b ดังนัน้ a= 5-2 =5*= a*=b a*=b หมายถึง a= a*b ดังนัน้ a= 5*2 =10/= a/=b a/=b หมายถึง a= a/b ดังนัน้ a= 10/2 =5%=(หารเอาเศษ) a%=b a%=b หมายถงึ a= a%b ดงั นนั้ a= 5%2 =1 (5 หาร 2 แล้วเหลอื เศษ 1) ตารางท่ี 2.8 แสดงเคร่ืองหมายในการกาหนดค่าสามารถกาหนดในลกั ษณะดงั ตอ่ ไปนีไ้ ด้ด้วยa +=2 หมายถึง a= a+2i-=3 หมายถึง i=i-3SWE102 Computer Programming | อาจารย์รัตตกิ านต์ วิบลู ย์พานิช 23
ครัง้ ท่ี 2 เรื่อง หลกั การเขยี นโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนนิ การตา่ งๆy*=4 หมายถงึ y=y*4x/=2 หมายถงึ x=x/2b%2 หมายถึง b=b%2 ชนิดข้อมูลพืน้ ฐาน (Primitive Data) Type)ชนดิ ข้อมลู พืน้ ฐานในภาษาจาวาแบง่ ออกเป็น 4 กลมุ่ ดงั นีค้ รับ• Logical ได้แก่ boolean• Textual ได้แก่ char• Integral ได้แก่ byte,short,int และ long• Floating-point ได้แก่ float และ doubleชนิดข้อมูลกลุ่ม Logical – ชนิดข้อมูล Booleanมีคา่ ได้เพียง 2 คา่ คือ True (จริง) กบั False (เท็จ) ภาพท่ี 2.2 แสดง ชนิดข้อมูลกลุ่ม Logical – ชนิดข้อมูล Booleanชนิดข้อมูลในกลุ่ม Textual – ชนิดข้อมูล char และ String Char เป็นชนิดข้อมูลแบบตวั อกั ษร (Character) มีขนาด 16 bit ใช้สาหรับเก็บข้อมลู ที่มีความยาวไมเ่ กิน 1 ตวั อกั ษรเทา่ นนั้ โดยการเขียนจะต้องคลมุ ด้วย ‘ ‘ (Single quote)String ไม่ได้เป็น primitive data type แตเ่ ป็นคลาส ๆ หนึ่ง สามารถเก็บข้อมูลได้มากกว่า 1 ตวั อกั ษร โดยการเขียนจะต้องคลมุ ด้วย “ “ (Double quote)SWE102 Computer Programming | อาจารย์รัตติกานต์ วบิ ลู ย์พานิช 24
ครัง้ ท่ี 2 เรื่อง หลกั การเขียนโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนนิ การตา่ งๆ ภาพท่ี 2.3 แสดง ชนิดข้อมูลกลุ่ม Textual – ชนิดข้อมูล char และ Stringชนิดข้อมูลในกลุ่ม Integral – ชนิดข้อมูล byte, short, int, long ชนิดข้อมูล ขนาด ค่าต่าสุด ค่าสูงสุด 127(-27-1)byte 8 บติ (1 ไบต)์ -128(-27)short 16 บติ (2 ไบต)์ -32768(-215) 32767(-215-1)int 32 บติ (4 ไบต)์ -2,147,483,648(-231) 2,147,483,647(-231-1)long 64 บติ (8 ไบต์) -9,223,372,036,854,775,808 9,223,372,036,854,775,807 (-263) (-263-1) ตารางท่ี 2.9 แสดงชนิดข้อมูลในกลุ่ม Integral – ชนิดข้อมูล byte, short, int, longชนิดข้อมูลในกลุ่ม floating-point – ชนิดข้อมูล float และ double ชนิดข้อมูลในกล่มุ floating-point จะมีชนิดข้อมูลเป็น double หากกาหนดเลขจานวนจริงจานวนหนึ่ง เลขจานวนจริงจะถูกกาหนดให้มีชนิดข้อมูลเป็น double ซ่ึงหากต้องการให้เลขจานวนจริงเป็นชนิดข้อมลู อื่น เชน่ float ต้องระบุ F หรือ f ตอ่ ท้าย ชนิดข้อมูล ขนาด ค่าต่าสุด ค่าสูงสุดfloat 32 บติ (4 ไบต์) -3,40382347E+38 3,40382347E+38double 64 บติ (8 ไบต)์ -1,79769E+308 1,79769E+308 ตารางท่ี 2.10 แสดงชนิดข้อมูลในกลุ่ม floating-point – ชนิดข้อมูล float และ doubleSWE102 Computer Programming | อาจารย์รัตตกิ านต์ วบิ ลู ย์พานิช 25
ครัง้ ท่ี 2 เร่ือง หลกั การเขียนโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนนิ การตา่ งๆภาพท่ี 2.4 แสดง ชนิดข้อมูลในกลุ่ม floating-point – ชนิดข้อมูล float และ doubleการดาเนินการของภาษาจาวาการดาเนินการทางคณิตศาสตร์นิพจน์ (Expression) คือ การนาเอาโอเปอเรเตอร์และโอเปอแรนด์หลาย ๆ ตัวมารวมเข้าเป็นประโยค เชน่ a+b*c (นพิ จน์)โอเปอเรเตอร์ (Operator) คอื ตวั ดาเนินการทางคณิตศาสตร์ เชน่ + และ –โอเปอแรนด์ (Operand) คอื ตวั ถกู ดาเนินการอาจเป็น literals, ตวั แปร หรือนพิ จน์ได้ เชน่ a และ bOperator ความหมาย ตวั อย่าง ผลลัพธ์+ บวก 9+4 13- ลบ 9-4 5* คณู 9*4 36/ หาร 9/4 2 (กรณีนีต้ ัวตัง้ และตัวหารเป็นเลข จานวนเต็ม จึงได้ผลลพั ธ์เป็นจานวน เตม็ เศษจะถกู ปัดทิง้ )SWE102 Computer Programming | อาจารย์รัตตกิ านต์ วบิ ลู ย์พานิช 26
ครัง้ ท่ี 2 เร่ือง หลกั การเขยี นโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนินการตา่ งๆ Operator ความหมาย ตวั อย่าง ผลลัพธ์%++ หารเอาเศษ 9%4 1 a++ จะนาค่าของ a ไปใช้ b= a++; จะมีความหมาย สมมุติ a =9 หลังจากทาตามคาสั่ง ก่อน แล้วจึงเพ่ิมค่าของ a เทียบเท่า แล้ว b=a++; ขนึ ้ อกี 1 b=a; จะได้วา่ a=10 , b=9 a=a+1; ++a เพิ่ มค่าขึน้ 1 ก่อน b= ++a; จะมีความหมาย สมมุติ a =9 หลังจากทาตามคาส่ัง แล้วจงึ นาคา่ ของ a ไปใช้ เทียบเท่า แล้ว b=++a; a=a+1; จะได้วา่ a=10 , b=10 b=a;-- a-- จะนาค่าของ a ไปใช้ b= a--; จะมีความหมาย สมมุติ a =9 หลังจากทาตามคาส่ัง ก่อน แล้วจึงลดค่าของ a เทียบเท่า แล้ว b=a--; ลงอกี 1 b=a; จะได้วา่ a=8 , b=9 a=a-1; --a ลดคา่ ลง 1 ก่อนแล้วจงึ b= --a; จะมีความหมาย สมมุติ a =9 หลังจากทาตามคาสั่ง นาคา่ ของ a ไปใช้ เทียบเท่า แล้ว b=++a; a=a-1; จะได้วา่ a=8 , b=8 b=a; ตารางท่ี 2.11 แสดงการดาเนินการทางคณิตศาสตร์ 27ลองทาโจทย์กาหนดให้ x=32 และ y=101. X+Y=?2. X-Y=?3. X*Y=?4. X/Y=?5. X%Y=?6. ถ้า z = x++; จงหาวา่ x=?,z=?SWE102 Computer Programming | อาจารย์รัตติกานต์ วบิ ลู ย์พานิช
ครัง้ ท่ี 2 เรื่อง หลกั การเขียนโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนินการตา่ งๆ7. ถ้า z = ++x; จงหาวา่ x=?,z=?8. ถ้า z = x- -; จงหาวา่ x=?,z=?9. ถ้า z = - -x; จงหาวา่ x=?,z=?ลาดบั การทางานของโอเปอเรเตอร์ ในการคานวณค่าของนิพจน์จะเริ่มจาก โอเปอเรเตอร์ที่มีลาดบั ความสาคญั ก่อน ตารางต่อไปนี ้แสดงลาดบั ความสาคญั ของโอเปอเรเตอร์จากสงู สดุ ไปต่าสดุ โอเปอเรเตอร์ ลาดบั ความสาคัญ( ) สงู สดุ- ( โอเปอเรเตอร์นีเ้ป็นเคร่ืองหมายลบหน้าตวั เลขเช่น -2เป็นต้น ซึ่งเป็น unary operator คือ โอเปอร์เรเตอร์ที่ต้องการโอเปอแรนด์เพียงตวั เดียว)^*,/,%+,- ต่าสดุ หมายเหตใุ นระดบั เดียวกนั จากซ้ายไปขวา ตารางท่ี 2.12 แสดงลาดับการทางานของโอเปอเรเตอร์SWE102 Computer Programming | อาจารย์รัตติกานต์ วิบลู ย์พานิช 28
ครัง้ ท่ี 2 เรื่อง หลกั การเขยี นโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนนิ การตา่ งๆ ภาพท่ี 2.5 แสดงลาดับการทางานของโอเปอเรเตอร์การแปลงชนิดของข้อมูล เมื่อต้องการดาเนินการทางคณิตศาสตร์ระหว่างโอเปอแรนด์ท่ีมีชนิดข้อมลู ท่ีตา่ งกนั จะต้องทาการแปลงให้เป็นชนิดเดียวกนั ก่อนจงึ จะสามารถนามาดาเนินการได้ แบง่ ออกเป็น 2 ประเภท คอืImplicit type conversion การแปลงชนดิ ข้อมลู ที่จาวาทาให้ตามความเหมาะสมExplicit type conversion (หรือ casting) เป็นการแปลงโดยผ้เู ขียนโปรแกรมทาด้วยตนเอง(ชนดิ ข้อมลู ที่ต้องการ) นิพจน์ท่ีต้องการแปลงข้อมลูการทา explicit type conversion จะต้องแปลงชนิดข้อมูลที่มีนัยสาคัญต่ากว่าไปเป็ นชนิดข้อมูลที่มีนยั สาคญั สงู กวา่ เพ่ือลดการสญู เสียคา่ ที่แท้จริง ชนิดข้อมูล นัยสาคัญ (Singificant) สงู สดุdoublefloat ต่าสดุlong ตารางท่ี 2.13 แสดงการแปลงชนิดของข้อมูลintshortbyteSWE102 Computer Programming | อาจารย์รัตตกิ านต์ วบิ ลู ย์พานิช 29
ครัง้ ที่ 2 เร่ือง หลกั การเขยี นโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนนิ การตา่ งๆ ภาพท่ี 2.6 แสดงการแปลงชนิดของข้อมูลตวั อยา่ งการทา explicit type conversionbyte num1 =160; เน่ืองจากชนิดข้อมูล byte มีค่าสูงสุดได้เพียง 127 เท่านัน้ ไม่สามารถกาหนดค่าเลขจานวนเต็ม 160 ได้ โดยจะเกิดข้อผิดพลาดขึน้ ในช่วงคอมไพล์โปรแกรม วิธีแก้คือต้องแปลงคา่ 160 ให้มีชนดิ ข้อมลู เป็น byte กอ่ นbyte num1 = (byte) 160; แตใ่ นการแปลงข้อมลู ดงั กลา่ วทาให้เสียคา่ แท้จริงของข้อมลูshort a=1;short num2=a+5; เนื่องจาก a มีชนิดข้อมูลเป็น short เม่ือนาไปดาเนินการทางคณิตศาสตร์กับเลขซึ่งมีชนิดข้อมูลเป็น int (int มีนยั สาคญั สงู กวา่ short) ทาให้คา่ ของ a ถกู แปลงจาก short เป็น int ทาให้ผลลพั ธ์ท่ีได้เป็น intไปด้วย แก้ไขข้อผดิ พลาดโดยshort num2 = (short) a+5; หรือประกาศตวั แปร num2 เป็น int;int num2=a+5;int b=3;int num3 = (float) b/3;SWE102 Computer Programming | อาจารย์รัตติกานต์ วบิ ลู ย์พานิช 30
ครัง้ ท่ี 2 เรื่อง หลกั การเขียนโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนนิ การตา่ งๆ เนื่องจาก (float) b/3 ทาให้ ผลลัพธ์ออกมาเป็ น 1.0 ซึ่งเป็ นชนิด float ดังนัน้ เพื่อไม่ให้ เกิดข้อผิดพลาด ต้องประกาศตวั แปร num3 ให้มีชนิดข้อมลู เป็น float หรือ doublefloat num3=(float) b/3; การที่ได้ผลลัพธ์ออกมาเป็น 1.0 เนื่องจาก (float) b เป็นการทา explicit type conversion เพื่อแปลงค่าของตวั แปร b จาก int ไปเป็น float คือแปลงจาก 3 ไปเป็น 3.0 int จึงเกิดการทา implicit typeconversion เพ่ือแปลงคา่ 3 จาก int ไปเป็น float กอ่ น ซงึ่ จะได้ 3.0/3.0 ผลลพั ธ์ที่ได้เป็น 1.0short xx =1,yy=2,zz;zz=xx+yy; เน่ืองจาก xx และ yy ถกู มองเป็นจานวนเตม็ ชนิด int ดงั นนั้ ผลลพั ธ์ของ xx+yy จึงเป็นจานวนเต็มชนิด int ด้วย ซ่ึงไมส่ ามารถนาไปเก็บในตวั แปร zz ที่มีชนิดข้อมลู เป็น short วิธีแก้ต้องทาการ explicit typeconversionดงั นี ้zz=(short) (xx+yy);หรือshort xx=1,yy=2;int zz=xx+yy;float yyy= 3.0; ชนิดข้อมูลแบบ floating point คือ double ดังนัน้ ค่า 3.0 จึงเป็นจานวนจริงชนิด double ไม่ใช่float จาวาไม่อนุญาตให้นาค่าจานวนจริงชนิด double ไปเก็บไว้ในตวั แปร float ซึ่งมีนัยสาคญั ต่ากว่าแก้ไขโดยfloat yyy =3.0F; หรือ float yyy=3.0f;SWE102 Computer Programming | อาจารย์รัตติกานต์ วบิ ลู ย์พานิช 31
ครัง้ ท่ี 2 เรื่อง หลกั การเขยี นโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนินการตา่ งๆ ภาพท่ี 2.7 แสดงตวั อย่างการทา explicit type conversionการดาเนินการทางตรรกะ การดาเนินทางตรรกะในเชิงเหตผุ ลที่ให้ผลออกมาเป็นจริง (True) เท็จ (False) อยา่ งใดอยา่ งหน่ึงเทา่ นนั้ โดยโอเปอเรเตอร์ที่ใช้มีดงั นี ้ โอเปอเรเตอร์ ช่ือ คาอธิบาย> มากกวา่ ถ้านิพจน์ทางซ้ายมีคา่ มากกว่าทางขวา จะให้ผลเป็นจริง มฉิ ะนนั้ จะเป็นเทจ็>= มากกวา่ หรือเท่ากบั ถ้านิพจน์ทางซ้ายมีค่ามากกวา่ หรือทางขวา จะให้ผลเป็น จริง มฉิ ะนนั้ จะเป็นเท็จ< น้อยกวา่ ถ้านิพจน์ทางซ้ายมีค่าน้อยกว่าทางขวา จะให้ผลเป็นจริง มฉิ ะนนั้ จะเป็นเทจ็<= น้อยกวา่ หรือเท่ากบั ถ้านิพจน์ทางซ้ายมีค่าน้อยกว่าหรือเท่ากับทางขวา จะ ให้ผลเป็นจริง มิฉะนนั้ จะเป็นเทจ็== เทา่ กบั ถ้านิพจน์ทางซ้ายมีค่าเท่ากบั ทางขวา จะให้ผลเป็นจริง มิฉะนนั้ จะเป็นเท็จ!= ไมเ่ ท่ากบั ถ้านิพจน์ทางซ้ายมคี า่ ไมเ่ ท่ากบั ทางขวา จะให้ผลเป็นจริง มฉิ ะนนั้ จะเป็นเทจ็SWE102 Computer Programming | อาจารย์รัตตกิ านต์ วบิ ลู ย์พานิช 32
ครัง้ ท่ี 2 เร่ือง หลกั การเขยี นโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนนิ การตา่ งๆ โอเปอเรเตอร์ ช่ือ คาอธิบาย&& และ (AND) ถ้านิพจน์ที่นามาดาเนินการเป็นจริงทงั้ คู่ จะให้ผลเป็นจริง สว่ นกรณีอนื่ ๆ ให้ผลเป็นเทจ็|| หรือ (OR) ถ้านิพจน์ที่นามาดาเนินการเป็นเท็จทงั้ คู่ จะให้ผลเป็นเท็จ สว่ นกรณีอื่น ๆ ให้ผลเป็นจริง! นิเสธ(NOT) ให้ผลเป็นค่าตรรกะที่ตรงข้ามกบั ค่าตรรกะของนิพจน์นนั้ (ให้ผลเป็นเท็จ ถ้าโอเปอแรนด์มีค่าเป็นจริง และให้ผล เป็นจริงถ้าโอเปอแรนด์มคี า่ เป็นเทจ็ ) ตารางท่ี 2.14 แสดงการดาเนินการทางตรรกะ ภาพท่ี 2.8 แสดงการดาเนินการทางตรรกะ ค่าคงท่ี (Constant) คา่ คงที่ (Constant) คือ คา่ ท่ีกาหนดให้ตวั แปร ซงึ่ เมื่อกาหนดคา่ คงท่ีให้กบั ตวั แปรแล้ว ตวั แปรจะมีคา่ เป็นค่านนั้ ไปตลอดการทางานไมส่ ามารถเปล่ียนแปลงคา่ ได้ การประกาศคา่ คงที่ให้กับตวั แปรต้องระบุคยี ์เวิร์ด final ให้กบั การประกาศด้วยFinal ชนิดข้อมลู ชื่อตวั แปรท่ีต้องการกาหนดคา่ คงที่ให้ = คา่ ท่ีต้องการกาหนด;SWE102 Computer Programming | อาจารย์รัตตกิ านต์ วิบลู ย์พานิช 33
ครัง้ ท่ี 2 เร่ือง หลกั การเขียนโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนนิ การตา่ งๆภาพท่ี 2.9 แสดงค่าคงท่ี (Constant)SWE102 Computer Programming | อาจารย์รัตติกานต์ วิบลู ย์พานิช 34
ครัง้ ท่ี 2 เร่ือง หลกั การเขยี นโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนินการตา่ งๆ แบบฝึ กหดั ท่ี 2 เรื่องหลกั การเขยี นโปรแกรม ตวั แปร ชนิดข้อมลู และการดาเนนิ การ ตา่ ง ๆ (ทฤษฎ)ี1. จงพจิ ารณาคอมเมนตด์ งั ตอ่ ไปนีว้ า่ ถกู หรือผิดอยา่ งไร จงให้เหตผุ ล a. // /* comment1 */ b. /* comment1 /* comment2 */*/ c. /* comment1 comment2 comment3*/ d. /*comment1 *//* comment2 *//*comment3 comment4 */ e. /**//* comment1 *//**/ f. /* //comment1 */2. จงพิจารณาช่ือตอ่ ไปนีว้ า่ เป็นช่ือท่ีตงั้ ขนึ ้ ถกู ต้องตามกฏการตงั้ ช่ือของภาษาจาวาหรือไม่อยา่ งไร a. TRUE b. me&you c. 1_2_3var d. $_test e. volatile f. $var# g. _1_2_3 h. v1var v2 i. _ native _3. จงแสดงวธิ ีหาผลลพั ธ์ตอ่ ไปนี ้ a) 8/2^2 b) -2*3-(-9+7*3)+24%10/2+(33%17) ) c) 2 * 5 * 6 + 3 * 4 + 7 d) y = 2 * 5 * (6 + 3) * 4 + 7 e) 2 y = 60 - 6 * 5 + ( 8 + ( 10 / 4 % 2 ) ) * 3 f) 53-4(1+2)2SWE102 Computer Programming | อาจารย์รัตตกิ านต์ วิบลู ย์พานิช 35
ครัง้ ที่ 2 เร่ือง หลกั การเขยี นโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนนิ การตา่ งๆClass Ex1{ public static void main(String[ ] args){ byte x=1; byte y =1; byte z =x+y; System.out.println(z); }} 4. จากโปรแกรมข้างต้นสามารถคอมไพล์ผ่านหรือไม่ หากคอมไพล์ผ่าน ได้ผลลพั ธ์อย่างไร และถ้าคอมไพล์ไมผ่ า่ น มีสาเหตมุ าจากอะไรSWE102 Computer Programming | อาจารย์รัตตกิ านต์ วบิ ลู ย์พานิช 36
ครัง้ ท่ี 2 เร่ือง หลกั การเขยี นโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนนิ การตา่ งๆ แบบฝึ กหดั ท่ี 2 เรื่องหลกั การเขียนโปรแกรม ตวั แปร ชนิดข้อมลู และการดาเนินการตา่ ง ๆ(ปฏิบตั )ิ1. ฝึกเขียนโปรแกรมปอ้ นช่ือนามสกลุ ของผ้อู ่านผา่ นทางคีย์บอร์ด จากนนั้ ตรวจสอบผลลพั ธ์ ของโปรแกรมท่ีหน้าจอจงเขียนโปรแกรมรับคา่ และแสดงข้อมลู ประวตั สิ ่วนตวั ได้แก่ ชื่อ ที่อยู่ และอีเมล์1. Name : Rattikan Viboonpanich2. Address : 166 M2 ., Saimai Rd., Saimai Bangkok 102203. Email : [email protected] 2. จงเขียนโปรแกรมเพ่ือรับข้อมลู ทาง keyboard แล้วนาคา่ ท่ี 1 ตงั้ mod ด้วยคา่ ท่ี 2Enter num1 = 10Enter num2 = 2Mod = 0 3. จงเขียนโปรแกรมเพื่อรับข้อมลู ตวั เลข 5 ตวั แล้วหาผลรวม และคา่ เฉลี่ยEnter number1 :Enter number2 :Enter number3 :Enter number4 :Enter number5 :Sum =Average = 4. จงเขียนโปรแกรมเพื่อหาคา่ Mod 4 ของตวั เลข 4 จานวนท่ีปอ้ นเข้ามาในโปรแกรมตวั อยา่ งผลลพั ธ์Enter number 1 = 1Enter number 2 = 2Enter number 3 = 3Enter number 4 = 4(1+2+3+4) Mod 4 = 2SWE102 Computer Programming | อาจารย์รัตติกานต์ วบิ ลู ย์พานิช 37
ครัง้ ที่ 2 เรื่อง หลกั การเขยี นโปรแกรม ตวั แปร ชนดิ ข้อมลู และการดาเนนิ การตา่ งๆ 5. จงพิจารณาและเติมส่วนของโค้ดโปรแกรมด้านล่างให้สมบูรณ์ โดยมีเง่ือนไขว่าหลงั การ คอมไพล์โปรแกรม ไฟล์ Sushi.class และ TomYamKung.class จะต้องเก็บอยใู่ นไดเร็คทอรีดงั นี ้ japannesfood sushibar.class thaifood TomYamKung.class 6. จงเขียนโปรแกรม โดยเม่ือสง่ั คอมไพล์และรันโปรแกรมแล้วจะได้ผลลพั ธ์ดงั ตอ่ ไปนี ้ a=a b=true c=5 d=2.6 e=3 รายละเอียดคอื ตวั แปร a มีชนิดข้อมลู เป็นแบบตวั อกั ษร มีคา่ เทา่ กบั a ตวั แปร b มีชนิดข้อมลู เป็นแบบบลู ีน มีคา่ เทา่ กบั true ตวั แปร c มีชนิดข้อมลู เป็นแบบ integral มีคา่ เทา่ กบั 5L ตวั แปร d มีชนิดข้อมลู เป็นแบบ floating-point มีคา่ เทา่ กบั จานวนจริง 26.0 ตวั แปร e มีชนดิ ข้อมลู เป็นแบบ integral มีคา่ เทา่ กบั เลขจานวนเตม็ 3 7. สร้างเฟรมรับช่ือจากผ้ใู ช้ Topic โปรแกรมมีชอ่ งให้กรอกข้อความ (Text field) และ ป่มุ (Button)ผ้ใู ช้กรอกช่ือเข้าไปและกดป่มุ sayโปรแกรมแสดงไดอะลอ็ กข้อความ (Message dialog) แสดงคาวา่ Hello Khun ตามด้วยชื่อผ้ใู ช้ท่ีกรอกSWE102 Computer Programming | อาจารย์รัตตกิ านต์ วิบลู ย์พานิช 38
Search
Read the Text Version
- 1 - 25
Pages: