หลักการเขียนโปร แกรมจาวาเบื้องต้น สารบัญ บทที่ 1 03-14
ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์และหลักการพัฒนาโปรแกรม Introduction to computer system & programming concept
บทที่ 4 27-33
บทที่ 2 15-18
Getting Start
บทที่ 3 20-25
ชนิดข้อมูลและตัวแปร
การกำ�หนดตัวแปรและการดำ�เนินการกับข้อมูล
บทที่ 1 35-46
คำ�สั่งควบคุมแบบเลือกกระทำ� (Control Flow : Selection)
บทที่ 1 48-53
คำ�สั่งควบคุมการทำ�ซ้ำ� (Control Structure : Loop ) 54
อ้างอิง
บทที่ 1 ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์และหลักการพัฒนาโปรแกรม Introduction to computer system & programming concept
บทที่1
03
ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์และหลักการพัฒนาโปรแกรม Introduction to computer system & programming concept
1.1 Programming concept, java และ Java Virtual Machine (JVM) การพัฒนาโปรแกรมคอมพิวเตอร์ โดยทั่วไปมักมีตัวแปลภาษา 2 ลักษณะ ได้แก่ คอมไพล์เลอร์ (Compiler) และอินเตอร์พรีเตอร์ (Interpreter) ซึ่งจะทำ�หน้าที่ตรวจสอบไวยากรณ์ต่างๆของภาษาจากโปรแกรม นั้นๆ และแปลเป็นภาษาเครื่อง ซึ่งสามารถเรียกใช้ประมวลผลตามชุดคำ�สั่งของโปรแกรมด้วยเครื่องคอมพิวเตอร์ ได้ C compiler C++ compiler Pascal compiler โปรแกรมภาษต่างๆ เช่น A.C, A.PAS หรือ A.CPP
Compiler
โปรแกรมหลังจากคอม ไพล์แล้ว A.EXE (เก็บในรูป Machine Code)
รูปที่ 1.1 ลำ�ดับการแปลโปรแกรมด้วยโปรแกรมแปลภาษา (Compiler Process)เช่น A.C, A.PAS หรือ A.CPP
โดยโปรแกรมที่ผ่านการคอมไพล์สามารถนำ�ไปเรียกใช้รัน หรือ execute โดยคอมพิวเตอร์ซึ่งจะมีการ ประมวลผลตามลำ�ดับคำ�สั่งที่ถูกสร้างขึ้นโดยนักพัฒนาโปรแกรมในรูปของภาษาระดับสูงใดๆ
หมายเหตุ : การแปลภาษาอีกรูปแบบหนึ่งจะใช้ Interpreter ซึ่งมีกลไกการแปลที่แตกต่างกันคือ จะมีการอ่านคำ�สั่งและ แปลเป็นภาษาเครื่องทีละบรรทัด และประมวลผลทันทีไปตามลำ�ดับและไม่มีการเก็บชุดรหัสคำ�สั่งภาษาเครื่องที่ สำ�เร็จจากการแปลไว้ในรูปไฟล์ของโปรแกรมภาษาเครื่อง
บทที่1
04
ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์และหลักการพัฒนาโปรแกรม Introduction to computer system & programming concept
สำ�หรับภาษาจาวา มีความแตกต่างจากรูปแบบที่กล่าวมาข้างต้น เพราะมีการนำ�แนวคิดเกี่ยวกับ เครื่องจักรสมมติ (Virtual Machine) มาใช้ โดยได้มีการพัฒนาตัวแปลภาษาจาวา (Java Compiler) ให้แปลชุด คำ�สั่งในโปรแกรมให้อยู่ในรูปแบบของรหัสพิเศษที่ถูกตีความว่าเป็นโปรแกรมในรูปแบบรหัสที่เครื่องจักรสมมติ จะเข้าใจ มีส่วนขยายเป็น .class หลังจากนั้นโปรแกรมรหัสเครื่องจักรสมมติจะถูกเรียกใช้อ่านเพื่อทำ�งานด้วย โปรแกรมอ่านรหัส JVM เรียกว่า Java Interpreter .. การทำ�เช่นนี้ มีข้อโดดเด่นที่ชัดเจนคือ โปรแกรมรหัส ซึ่ง เก็บในรูป Byte code สามารถถูกอ่านด้วยตัวแปลภาษา (Java Interpreter) ในระบบที่ต่าง platform กันได้ (คำ� ว่าต่าง platform หมายถึง เครื่องคอมพิวเตอร์ที่มีระบบปฏิบัติการ หรือรูปแบบของหน่วยประมวลผลที่แตกต่าง กัน โดยแนวคิดของ JVM สามารถแจกแจงดังรูปข้างล่าง)
Java Compiler
A.Java
Java Interpreter
แปลรหัสโปรแกรมCompile
A.Class
Interpretation
รูปที่ 1.2 รูปแสดงลำ�ดับการแปลโปรแกรมจาวาและการรันโปรแกรมจาวา
อนึ่งคุณสมบัติของการไม่ขึ้นกับ platform ของคอมพิวเตอร์ของโปรแกรมจาวาที่ถูกแปลรหัสให้อยู่ในรูป แบบของ JVM Program หรือ A.class สามารถแสดงในรูปที่ 1.3 Java Classes
JVM JVM
JVM
ระบบ Cellphone
ระบบ PDA
JVM
ระบบ Windows
JVM
ระบบ Linux ระบบ Macintosh
การทำ�งานดังกล่าวแม้ต้องมีตัวแปลภาษาของ Java Interpreter แปล Program (.class) ก็ยังเร็วกว่า ภาษาระดับสูงอื่นๆ แม้จะยังช้ากว่าภาษา C และข้อดีในการใช้แนวทางเช่นนี้ จะกล่าวถึงอีกหลายประเด็นในตอน ต่อๆไป
บทที่1
05
ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์และหลักการพัฒนาโปรแกรม Introduction to computer system & programming concept
1.2 Java Development Kit (JDK) การพัฒนาโปรแกรมภาษาจาวา ต้องมีโปรแกรมหลัก 2 ตัว คือ javac และ java โดย javac คือตัวแปล ภาษาที่ทำ�การแปลรหัสจาวาในรูปแบบชุดคำ�สั่งในโปรแกรมให้อยู่ในรูป Byte Code Program หลังจากนั้นหาก ต้องการรันโปรแกรมบนระบบคอมพิวเตอร์ platform ใดก็สามารถใช้ java ที่สนับสนุนมาแปลรหัสไบท์โค๊ด โปรแกรมให้คอมพิวเตอร์ทำ�งานบนแพลตฟอร์มใดๆก็ได้ กล่าวคือ ชุดพัฒนาหลักๆของจาวาจะประกอบด้วยเครื่องมือต่างๆที่สนับสนุนการพัฒนาโปรแกรมภาย ใต้สภาวะแวดล้อมที่ถูกสร้างขึ้น ชุดเครื่องมือสำ�หรับพัฒนาโปรแกรมภาษาจาวา แบ่งออกเป็น 3 กลุ่มหลัก ดังนี้ 1. J2ME (Micro Edition) – สำ�หรับใช้ทำ�งานบนอุปกรณ์ ไฟฟ้าขนาดเล็ก 2. J2SE (Standard Edition) – สำ�หรับทำ�งานบนเครื่องคอมพิวเตอร์ส่วนบุคคลทั่วไป 3. J2EE (Enterprise Edition) – สำ�หรับบริษัท, องค์กรขนาดใหญ่ รูปแบบระบบที่มีแม่ข่ายบริการลูก ข่าย ก่อนการพัฒนาโปรแกรม ต้องมีการติดตั้ง JDK ซึ่งสามารถดาวน์โหลดโปรแกรมได้ที่ www.javasun.com ซึ่งเป็นชุดพัฒนาที่มาจากบริษัท Sun Microsystems โดย JDK นั้นปัจจุบัน หลายบริษัท ได้พัฒนาชุดพัฒนาแอพพลิเคชั่น (ประกอบด้วยหลายๆโปรแกรม สำ�หรับใช้งานระบบในองค์กรหนึ่งๆ) ด้วยตนเองขึ้นมา ได้แก่ บริษัท IBM, Oracle และ SAP เป็นต้น แต่โดยทั่วไปเรามักจะใช้ของบริษัท sun ซึ่งเป็นผู้กำ�หนดมาตรฐานของภาษาและแจกฟรี
บทที่1
06
ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์และหลักการพัฒนาโปรแกรม Introduction to computer system & programming concept
JDK ที่เราดาวน์โหลดมานั้น เมื่อเรียกใช้งานทั้งคอมไพล์และรันจะใช้ในรูปของ command line หากเรา ต้องการความสะดวกเพิ่มขึ้นสามารถติดตั้งโปรแกรม text editor ที่ใช้ทำ�งานพิมพ์ชุดคำ�สั่งภาษาการโปรแกรม และสามารถเรียกใช้ javac และ Java ได้ผ่านโปรแกรมนั้นเลยก็ได้เช่นกัน โดยกำ�หนดเส้นทางการเข้าถึงโปรแกรม ทั้ง 2 จากโปรแกรม text editor ดังกล่าว โปรแกรมสำ�หรับพิมพ์รหัสคำ�สั่งมีแจกฟรีให้ทดลองใช้ทั่วไป สามารถ ดาวน์โหลดได้ทางอินเตอร์เน็ต เช่น Edit Plus หรือหากต้องการใช้ชุดพัฒนารวม (IDE: Integrated Development Environment) ที่สามารถสร้าง GUI ได้ง่าย ก็สามารถใช้ Netbean หรือ Eclipse (แจกฟรี) เพื่อพัฒนา โปรแกรมโดยชุดโปรแกรมเหล่านี้มีคอมไพล์เลอร์, Interpreter และส่วนป้อนแก้ ไขโปรแกรมจาวา, file manager, dlebugger, tools และ class libraries ซึ่งชุดพัฒนาโปรแกรมเหล่านี้เหมาะสำ�หรับพัฒนาโปรแกรมขนาดใหญ่ที่ มีความซับซ้อนมาก การติดตั้ง และกำ�หนดค่าเริ่มต้น การติดตั้ง : 1. ดาวน์โหลด JDK ที่มีชุดเครื่องมือพัฒนามาจาก www.sun.com โดยสามารถเลือกได้ทั้งสำ�หรับ ระบบปฏิบัติการ Linux, Solaris, และWindows (หมายถึง Win32 ที่อาจเป็น 95, 98, ME, Nt และ XP แต่ไม่ใช่ Windows 3.1 และ DOS) ไฟล์ติดตั้ง JDK ของระบบปฏิบัติการใดจะมีชื่อลงท้ายที่บอกระบบปฏิบัติการนั้น และ ตามด้วยรุ่นหรือเบอร์ของ CPU เช่น สำ�หรับ Windows จะมีชื่อลงท้ายเป็น Windows-i586 2. ทำ�การติดตั้ง JDK (Java Development Kit) ตามลำ�ดับ (ดูภาคผนวก) จากภาคผนวกจะเห็นว่า jdk จะทำ�การติดตั้งโปรแกรมไว้ที่ C:\Program Files\java โดยสร้างเป็นไดเรค ทอรี่ jdk1.5.x-yy มี x เป็นอันดับการปรับปรุงใหญ่ และ yy เป็นอันดับการปรับปรุงย่อย ในไดเรคทอรี่ย่อย bin จะมีโปรแกรมสำ�คัญ 2 โปรแกรม ได้แก่ javac.exe และ java.exe ซึ่งใช้ในการแปล source โปรแกรมให้เป็น รหัสโปรแกรมแบบ byte code ด้วย javac.exe และโปรแกรม รัน byte code โปรแกรม ด้วย java.exe
บทที่1
07
ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์และหลักการพัฒนาโปรแกรม Introduction to computer system & programming concept
1.3 การกำ�หนดค่าเริ่มต้น หลังจากติดตั้งตัวแปลภาษาและตัวอ่านโปรแกรมเพื่อทำ�งาน (compiler & interpreter) แล้วเราควร กำ�หนดค่าเพื่อให้การเข้าถึงคำ�สั่งต่างๆสามารถทำ�ได้อย่างมีประสิทธิภาพ 1.กำ�หนดบน dos โดยใช้คำ�สั่ง command line (เราต้องเรียกหน้าโต้ตอบ ไปที่ dos mode ก่อน) C:\>set PATH = C:\Program File\Java\jdk1.5.0_01\bin แต่การกำ�หนดวิธีนี้จะต้องทำ�ทุกครั้งที่เริ่มต้นใช้งานโปรแกรม หรืออาจกำ�หนดคำ�สั่งนี้ในไฟล์ Autoexec.bat จะ ช่วยให้มีการทำ�คำ�สั่งนี้ตอนเปิดเครื่องซึ่งจะทำ�ให้เราสามารถเรียกใช้ คำ�สั่ง javac.exe และ java.exe ที่ไดเรคทอรี่ ใดๆก็ได้ นอกเหนือจากไดเรคทอรี่ bin ที่ javac และ java อยู่ 2.กำ�หนดบน Window ด้วยการกำ�หนด System Environment Variable โดยทำ�ตามลำ�ดับดังนี้ -เลือก Control Panel แล้วเลือก System แล้วเลือก Advance แล้วเลือกปุ่ม Environment Variable และกดปุ่ม New ในกรอบข้อความที่ให้ป้อน หลัง Variable Name ให้พิมพ์คำ�ว่า Path และหลังคำ�ว่า variable value พิมพ์ C:\program files\java\jdk1.5.0_01\bin (Version ของ JDK ของเรา) ซึ่งในข้อมูลระบุเส้นทางไปสู่ ไดเรคทอรี่ที่เก็บ javac.exe และ java.exe หลังจากนั้นคลิกปุ่ม OK. จนเสร็จสิ้นการกำ�หนด 3.การเข้าไปใช้งาน javac.exe เพื่อคอมไพล์โปรแกรมบนดอส สามารถใช้งานคำ�สั่งนั้นๆ ได้ภายใต้ ไดเรค ทอรี่ใดๆ C:\myjava>javac A.java (ผลลัพธ์จะเกิด A.Class) 4.หลังจากคอมไพล์เรียบร้อยแล้วสามารถรันโปรแกรม .class ได้ด้วยคำ�สั่ง C:\myjava>java A (รัน A.Class) http://www.sun.com” www.sun.com มาติดตั้งด้วย โดยควรเก็บไว้ใต้โฟล์เดอร์ docs ใต้ ไดเรคทอรี่ jdk โดยต้องทำ�การ unzip ให้เรียบร้อยก่อนด้วยโปรแกรม unzip ใดๆ หรืออาจใช้ jar ทำ�การ unzip ก็ได้เช่นกัน
บทที่1
08
ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์และหลักการพัฒนาโปรแกรม Introduction to computer system & programming concept
1.4 Create, Compile และ Run Java Programs 1. Create : หมายถึงการสร้างชุดคำ�สั่งด้วยรหัสภาษาจาวาโดยผู้พัฒนาต้องมีความรู้ในการใช้คำ�สั่งต่างๆของ รหัสภาษาที่ต้องการพัฒนา ซึ่งการเขียนชุดคำ�สั่งสามารถเขียนด้วยโปรแกรม Notepad, หรือ text editor ใดๆ ก็ตาม ปัจจุบันมีเครื่องมือสนับสนุนในการพัฒนาโปรแกรม หลากหลายตัวที่เป็นที่นิยม เช่น Edit plus, Visual Studio และอื่นๆอีกมากมาย - New ในกรอบข้อความที่ให้ป้อน หลัง Variable Name ให้พิมพ์คำ�ว่า Path และหลังคำ�ว่า variable value พิมพ์ C:\program files\java\jdk1.5.0_01\bin (Version ของ JDK ของเรา) ซึ่งในข้อมูลระบุเส้นทางไปสู่ ไดเรคทอรี่ที่เก็บ javac.exe และ java.exe หลังจากนั้นคลิกปุ่ม OK. จนเสร็จสิ้นการกำ�หนด 2. การเข้าไปใช้งาน javac.exe เพื่อคอมไพล์โปรแกรมบนดอส สามารถใช้งานคำ�สั่งนั้นๆ ได้ภายใต้ ไดเรคทอรี่ใดๆ C:\myjava>javac A.java (ผลลัพธ์จะเกิด A.Class) 3.หลังจากคอมไพล์เรียบร้อยแล้วสามารถรันโปรแกรม .class ได้ด้วยคำ�สั่ง C:\myjava>java A (รัน A.Class) Text Source Code Program
Text Editor
Hello.java – Notepad // Hello.java Class Hello { Public static void main (String args[] ) { System.out.println (“Hello”); } // end main } // end class
รูปที่ 1.4 ตัวอย่างโปรแกรมที่สร้างขึ้นด้วย Notepad
บทที่1
09
ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์และหลักการพัฒนาโปรแกรม Introduction to computer system & programming concept
2.Compile : หมายถึงการแปลโปรแกรมรหัสภาษาจาวาที่ถูกสร้างขึ้นให้เป็น รหัสในรูป byte code โปรแกรม โดยใช้คำ� สั่ง javac.exe ซึ่งไฟล์โปรแกรมหลังการแปลงนี้จะถูกเก็บไว้ในรูป ไฟล์.class รูปแบบการใช้คำ�สั่ง แปล และแปลงรหัส มีการกำ�หนดคำ�สั่งดังนี้ A.java
A.class
byte Code Source Code
Javac.exe
Compile
byte Code
……\dir:\javac
[options]
[source code]
- q……………………. - q: none…………………………… - g: {line, vars, source}……………. - Nowarn………………………….. - Verbose…………………………. - Cleprecation……………………… - class path < >…………………….. - cp <path>………………………… - source path <path>………………. - ext dirs <dirs>…………………….
รูปที่ 1.5 แสดงการใช้คำ�สั่งคอมไพล์โปรแกรม Javac.exe
บทที่1
10
ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์และหลักการพัฒนาโปรแกรม Introduction to computer system & programming concept
การใช้คำ�สั่ง
1. javac _help 2. javac *.java 3. javac H?.java 4. javac _verbose Hello1.java 5. javac _d C:\classes A.java
ดู option ว่าใช้อะไรได้บ้าง คอมไพล์ทุกไฟล์ คอมไพล์ทุกไฟล์ที่นำ�หน้าด้วย H แสดงลำ�ดับการทำ�งานด้วย
3. Run : หมายถึงการแปล byte code โปรแกรมด้วย java.exe แล้วทำ�งานตามลำ�ดับคำ�สั่งที่ผู้เขียนโปรแกรม สร้างขึ้น โดยคอมพิวเตอร์ A.Class
JVM Code
Java.exe interperte
Java.exe มีหน้าที่สร้างสภาวะแวดล้อมสำ�หรับ ทำ�งานด้วยโปรแกรมที่ถูกแปลงรหัสเพื่อทำ�งานโดย คอมพิวเตอร์ โดยจะมี JRE (Java Runtime Environment) ซึ่งจะอ่านคลาสที่มี main() และอ้างถึงคลาสต่างๆที่ เกี่ยวข้องและต้องถูกโหลดเข้าสู่สภาวะแวดล้อมที่ถูกสร้าง ขึ้น... Java [option] class [argument….] Java [option] _jar file.jar [argument] รูปที่ 1.6 แสดงการใช้คำ�สั่งรัน (java.exe)
บทที่1
11
ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์และหลักการพัฒนาโปรแกรม Introduction to computer system & programming concept
การใช้คำ�สั่งบนดอสเพื่อทำ�การรันโปรแกรม Current dir://> java A. กล่าวคือ java.exe ต้องรับชื่อคลาสที่จะถูกทำ�งานเป็นอินพุต พร้อมกับอาจมี options (ข้อกำ�หนดเพิ่มเติม หรือ arguments (อินพุต))ดังนี้ Option :
- Client ………………………………………………………. - Server ………………………………………………………. - Classpath<path> ………………………………………………………. - Cp<path> ………………………………………………………. - Dproperty = Value ………………………………………………………. - Jar ………………………………………………………. - Disblassertions[:<pasckage>”…”|:<Class>;] หรือ………………………….. - Da[:<package name>”:…”|:<Class name>]……………………………….... - Enableassertions[:<package>”…”|:<Class>;]หรือ สั่งให้ assertion ทำ�งาน….. - Disablesystemassertions……………………………………………………… - Dsa ………………………………………………………. - Emablesystemassertion……………………………………………………… - Esa ………………………………………………………. - Verbose ………………………………………………………. - Verbose : Class ………………………………………………………. - Verbose : gc ………………………………………………………. - Verbose : jni ………………………………………………………. - Version ………………………………………………………. - Showversion ………………………………………………………. - ? ………………………………………………………. - Help ………………………………………………………. - X ……………………………………………………….
บทที่1
12
ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์และหลักการพัฒนาโปรแกรม Introduction to computer system & programming concept
1.5 Java Archive (JAR) การบีบอัดไฟล์ต่างๆเก็บไว้ในชุดเดียวกันด้วยภาษาจาวา ใช้คำ�สั่ง JAR ซึ่งเก็บอยู่ในไดเรคทอรี่ bin โดย มีข้อกำ�หนดว่า ในไฟล์ .jar ต้องมีไดเรคทอรี่ชื่อ META-INF สำ�หรับเก็บไฟล์ที่ชื่อ MANIFEST-MF ซึ่งเป็นไฟล์ที่ ระบุบางอย่างเกี่ยวกับคลาส หรือไฟล์ที่ถูกบีบอัดมาในไฟล์ .jar นั้น โดยปกติแล้วหากเราใช้คำ�สั่งของโปรแกรม jar.exe ก็จะมีการสร้างไดเรคทอรี่ให้โดยอัตโนมัติ และสามารถเพิ่มเติม ลบทิ้ง และเรียกใช้โดยไม่ต้องขยายข้อมูล ออกมาจาก jar ไฟล์
รูปแบบคำ�สั่ง jar [option]
[jar file]
[input files]
- option อาจจบเงื่อนไขต่างๆได้โดย - c สร้างไฟล์ jar - t แสดงชื่อไฟล์ในไฟล์ jar นั้น - x นำ�ไฟล์ออกจากไฟล์ jar นั้น - u เพิ่มเติม (update) ไฟล์ jar นั้น - f ให้ผลลัพธ์ ไปสู่ jar file ที่ระบุมาให้แทนที่จะไปสู่ Standard output - v พิมพ์ชื่อไฟล์ที่ถูก add สู่ไฟล์ jar ไปที่ Standard output - M ไม่ให้สร้างไฟล์ default manifest - m ใช้ ไฟล์ manifest ที่ระบุมาให้ - o ไม่ให้ทำ�การบีบอัดข้อมูล เพื่อความเร็วในการใช้ข้อมูลในไฟล์ jar นั้น - i สร้าง index สำ�หรับไฟล์ jar - jar file เป็นชื่อไฟล์ .jar ที่เป็นผลลัพธ์ ใช้เก็บไฟล์จาวาโปรแกรม และคลาสต่างๆ อยู่ภายในคลาส Zip โปรแกรมทั้งหลาย - input file เป็นชื่อไฟล์ที่จะถูกนำ�เข้าหรือออกจาก jar ไฟล์ ซึ่งอาจใช้ * หรือ ? ซึ่งหมายถึงทุกๆไฟล์ที่มอง เห็นจะถูกนำ�เข้าหรือออกจาก jar ไฟล์ก็ได้
บทที่1
13
ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์และหลักการพัฒนาโปรแกรม Introduction to computer system & programming concept
ตัวอย่างคำ�สั่งที่ใช้บ่อยๆ คำ�สั่ง สร้างไฟล์ . jar : jar cf [jar file] [input file] สร้างไฟล์ . jar โดยกำ�หนด manifest : jar cfm [jar file] <manifest> [input file] : jar cmf <manifest> [jar file] [input file] เพิ่มไฟล์เข้าในไฟล์ . jar : jar uf [jar file] [input files] แสดงชื่อไฟล์ในไฟล์ . jar : jar tf [jar file] ขยายไฟล์ทั้งหมดออกจากไฟล์. jar : jar xf [jar file] ขยายไฟล์ออกจากไฟล์ . jar : jar xf [jar file] [input files] ฝึกปฏิบัติ : ทดลองนำ�ไฟล์ A1. java และ A1.class ในไดเรคทอรี่ C:\myjava\ch1 บีบอัดลงไปใน ไฟล์ชื่อ A. jar โดย option จะระบุหรือไม่ก็ได้ 1.ใช้คำ�สั่งบีบอัด jar –cf A. jar A1. java, A1.class ใต้ directory ที่เราเก็บไฟล์ 2.ดูผลลัพธ์ด้วยคำ�สั่ง dir จะปรากฏไฟล์ชื่อ A.jar ในไดเรคทอรี่ที่เราอยู่ 3.ดูข้อมูลใน X. jar ว่าจะมีอะไรบ้างด้วยคำ�สั่ง Jar -tf A.jar ….จะได้ผลลัพธ์ดังรูป ซึ่งจะมีไดเรคทอรี่ META INF และไฟล์ MANIFEST.MF 4.คำ�สั่งลบไฟล์ A1.java จากไดเรคทอรี่ปัจจุบันทิ้ง C:\myjava\ch1\del A1.java 5.คำ�สั่งนำ�ไฟล์ A1.java จาก A.jar ออกมาไว้ข้างนอกในไดเรคทอรี่ปัจจุบัน jar -xf A.jar A1.java 6.คำ�สั่งขยาย MANIFEST จากไฟล์ .jar (ในที่นี้คือ A.jar ที่เราสร้างไว้) C:\ma 7.หากเราต้องการดูข้อมูลใน MANIFEST.MF เราสามารถดูได้ด้วยคำ�สั่งดอส คือ C:\myjava\ch1\Type MANIFEST.MF โดยหากไฟล์นี้ถูกสร้างโดยอัตโนมัติ จะมีข้อมูลอยู่ในไฟล์เพียง 2 บรรทัด คือ 1.เวอร์ชั่น 2.วันที่สร้างและผู้สร้าง
บทที่1
14
ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์และหลักการพัฒนาโปรแกรม Introduction to computer system & programming concept
หมายเหตุ : หากเราต้องการกำ�หนดคำ�สั่งบางอย่างไว้ใช้งานที่เกี่ยวข้องรูปแบบคำ�สั่งที่สามารถใช้พิมพ์ ไปในไฟล์นี้ได้ คือ <name>:<value> ทดลองนำ�ไฟล์ A1.java และ A1.class ในไดเรคทอริ C;\myjava\ บีบอัดลงในไฟล์ ชื่อ A.java โดยสังเกตว่า แบบฝึกหัดใช้คำ�สั่ง :
ทดลองใช้คำ�สั่ง
1.บีบอัด C:\myjava\>jar – cf A.jar A1.java A1.class
2.ตรวจสอบ C:\myjava\>jar -tf A.jar
3.การเพิ่มไฟล์ในjar ไฟล์ A.jar C:\myjava\>jar -uf A.jar A2.class
4.ลบ A1.javaทิ้งจากไดเรคทอรี C:\>myjava> del A1.java
5.ขยายไฟล์ออกมาจาก A.jar C:\myjava\>jar -xf A.jar A1.java
อธิบายผลลัพธ์ที่ปรากฏ
หมายเหตุ : ในไดเรคทอรี่ myjava ที่นักศึกษาใช้ต้องมีการเก็บ A1. java , A1. Class และ A2.java และ A2 class ไว้แล้วจึงจะสามารถดำ�เนินการตามคำ�สั่งที่กำ�หนดให้ทดลองทำ�ได้, อีกทั้ง A.jar เป็น zip file ที่ เราใช้ ในการเก็บไฟล์ต่างๆในรูปบีบอัด (ย่อขนาด) ให้ใช้พื้นที่น้อยลง
บทที่ 2
Getting Start
บทที่2
16
Getting Start
ความรู้เบื้องต้นเกี่ยวกับเทคโนโลยีภาษาการโปรแกรมและหลักการโปรแกรม บทเรียนนี้จะสรุปเนื้อหาเกี่ยวกับภาษาการโปรแกรมและลักษณะเฉพาะที่สำ�คัญที่จะใช้ในการพัฒนาโปรแกรม จาวา โดยหลักการของเมธอดและคลาสก็จะมีการกล่าวถึงด้วยเช่นกัน 2.1.1 คอมพิวเตอร์เป็นเครื่องจักร ปรียบเสมือนรถยนต์ที่ต้องถูกสั่งการให้เกิดการทำ�งานหรือขับเคลื่อนโดยมนุษย์ ดังนั้นคอมพิวเตอร์จะ ทำ�งานตามลำ�ดับคำ�สั่งของโปรแกรมคอมพิวเตอร์ โปรแกรมคอมพิวเตอร์ (Program) ประกอบด้วย ข้อมูลและชุดคำ�สั่งที่ดำ�เนินการโดยคอมพิวเตอร์ หรือจะเรียกโปรแกรมคอมพิวเตอร์ อีกนัยหนึ่งว่า ซอฟแวร์ (Software) โปรแกรมคอมพิวเตอร์ถูกสร้างโดยนัก พัฒนาโปรแกรม เรียกว่า โปรแกรมเมอร์ (Programmer) โดยใช้ภาษาระดับสูงใดๆ โปรแกรมมิ่ง (Programming) คือกระบวนการเขียนโปรแกรมคอมพิวเตอร์ โดยใช้ภาษาการโปรแกรม ที่ โปรแกรมเมอร์คนอื่นสามารถเข้าใจได้ และสั่งให้คอมพิวเตอร์ดำ�เนินการตามโปรแกรมที่เขียนขึ้น หลังจากแปลง เป็นรหัสที่คอมพิวเตอร์ดำ�เนินการได้ ภาษาการโปรแกรม (Programming Language) เป็นภาษาที่ถูกกำ�หนดขึ้นเพื่อใช้ในการพัฒนา โปรแกรมคอมพิวเตอร์ เช่นเดียวกับภาษาอังกฤษหรือ ภาษาใดๆในโลก โดยมีการกำ�หนดรูปแบบและลักษณะ เฉพาะของการใช้งานภาษา เพื่อใช้ในการสื่อความ ภาษาที่ใช้ในการเขียนโปรแกรมต้องนำ�โปรแกรมนั้นมาตรวจ สอบความถูกต้องของไวยากรณ์ภาษาก่อนนำ�ไปใช้โดยคอมพิวเตอร์
บทที่2
17
Getting Start
ภาษาการโปรแกรมมีวิวัฒนาการมาตั้งแต่เริ่มต้นที่การใช้งานคอมพิวเตอร์ภาษาระดับต่ำ� เช่น assembly จนปัจจุบันเป็นภาษาระดับสูง (High-level languages) ที่หลากหลาย ภาษาในปัจจุบัน ได้แก่ ภาษาปาสคาล (Pascal), วิชวลเบสิก(Visual Basic), C, C++ และ จาวา (Java) ฯลฯ ภาษาการโปรแกรมต่างๆเหล่านี้ เมื่อนำ�มาใช้พัฒนาโปรแกรม สามารถนำ�มาแปลงรหัสเป็น Machine Code หรือรหัสที่เครื่องคอมพิวเตอร์ เข้าใจ และรันบนคอมพิวเตอร์ตระกูลต่างๆได้ เช่น Apple, IBM, และ Compag. พิจารณารูปที่ 2.1 ข้อความนำ�เข้า (Input)
ประมวลผลข้อมูล
ผลลัพธ์ (Output)
รูปที่ 2.1
จากรูปจะเห็นว่าโดยทั่วไปแล้วการเขียนโปรแกรม เพื่อให้คอมพิวเตอร์เพื่อทำ�งานมีวัตถุประสงค์เพื่อให้มี การประมวลผลข้อมูลและนำ�ไปสู่การแสดงผลลัพธ์ หลักการดังกล่าวเราอาจกล่าวได้ว่าการเขียนโปรแกรมในรูปแบบนี้เน้นกระบวนการทำ�งาน ซึ่งเรียกภาษา ที่ถูกสร้างแบบนี้ว่า มีรูปแบบแนวทางการใช้งานภาษาแบบ Procedure-Oriented หรือการโปรแกรมแบบเชิง โครงสร้าง
บทที่2
18
Getting Start
สำ�หรับภาษาที่พัฒนาอีกแนวทางหนึ่ง คือ แนวทางเชิงวัตถุ (Object-oriented language)นั้นจะแตกต่าง ทั้งแนวคิดและหลักการพัฒนาโปรแกรม โดยแนวทางดังกล่าวจะสนับสนุนการเขียนโปรแกรมจัดการ การโต้ตอบ แบบกราฟฟิกที่มีองค์ประกอบของลักษณะเฉพาะของวินโดว์ และกระบวนการการทำ�งานที่เชื่อมโยงกับปฏิบัติ การที่กระทำ� ได้สะดวกและมีประสิทธิภาพมากขึ้น โดยกำ�หนดนิยามของลักษณะเฉพาะของวัตถุ และสามารถระบุ ปฏิบัติการที่วัตถุสามารถกระทำ�ได้ ภาษาที่สนับสนุนกลไกดังกล่าวนี้มีทั้ง ภาษา C++, small talk และ จาวา อนึ่งภาษาจาวา ถูกกำ�หนดและพัฒนาขึ้นมาโดย บริษัท Sun Microsystems ในปี ค.ศ. 1991 โดย กอ สลิงก์ เพื่อใช้เก็บโปรแกรมที่ฝังตัวในอุปกรณ์อิเลคทรอนิกส์ ในเวลานั้นภาษานี้ถูกตั้งชื่อว่า Oak ในปี 1993 โปรเจคเกี่ยวกับ Oak สิ้นสุดลง และอินเตอร์เน็ตเป็นที่นิยมแพร่หลาย วิศวกรของซันตระหนักว่า ภาษา Oak น่าจะนำ�มาพัฒนาเว็บเพจได้ง่าย จึงมีการนำ�มาพัฒนาต่อ จึงมีการพัฒนา Oak จนมาเป็นจาวา และพัฒนา Web browser ของตนเองขึ้นมา ชื่อว่า Hot Java เพื่อใช้แสดงรหัสจาวา เป็น Webpage โดยจาวาเป็นภาษาที่ สนับสนุนแนวทางการพัฒนาโปรแกรมเชิงวัตถุ ที่เป็นที่ยอมรับและนิยมอย่างรวดเร็ว แพลตฟอร์ม แอพพลิเคชัน
จาวา
วินโดว์ (Window) Mac Unix และอื่นๆ Browsers
Applets
Internet Explorer Netscape Navigator Sun Hot java
รูปที่ 2.2 แสดง 2 สภาวะแวดล้อมของการใช้จาวาที่แตกต่างกัน
บทที่ 3
ชนิดข้อมูลและตัวแปร
บทที่3
20
ชนิดข้อมูลและตัวแปร
3.1 ตัวแปรและการกำ�หนดค่าตัวแปร (Variable and Variable assignment) ภาพรวมเกี่ยวกับการจัดการข้อมูลโดยคอมพิวเตอร์ อ่านคำ�สั่งต่างๆในโปรแกรมคอมพิวเตอร์ การ เขียนโปรแกรมจัดการกับข้อมูล ต้องเกี่ยวข้องกับการจัดเก็บข้อมูลไว้ในพื้นที่หน่วยความจำ� โดยพื้นที่ดังกล่าวที่ ต้องอ้างถึงโดยหน่วยประมวลผลของคอมพิวเตอร์ ต้องกำ�หนด ชื่อ ละตำ�แหน่งในการอ้างถึง พื้นที่ซึ่งมีข้อมูล ตั้งอยู่ โปรแกรมอ้างถึงข้อมูลนั้นอ่านชื่อที่ตั้งโดยชื่อที่ตั้งขึ้นเราเรียกว่าตัวแปร (Variable หรือ Identifier) พร้อม ทั้งต้องระบุประเภทและชนิดของค่าที่เก็บนั้น อย่างเฉพาะเจาะจง เช่น เก็บเฉพาะค่า ที่เป็นจำ�นวนเต็ม(Integer) จำ�นวนจริง(Real)หรืออื่นๆ กล่าวคือ พื้นที่หน่วยความจำ�หลัก จะถูกเรียกใช้งานระหว่างโปรแกรมประมวลผลและ ตัวแปรต่างๆ ที่กำ�หนดขึ้น เพื่อใช้เก็บค่าต่างๆ ตามลักษณะเฉพาะที่ต้องใช้ในโปรแกรมนั้นๆ ซึ่งต้องระบุชนิดของ ค่าที่สามารถเก็บในชื่อตัวแปรชนิดนั้นๆได้ พื้นที่เก็บค่า
10
ตัวแปร a ชนิดจำ�นวนเต็ม (Integer)
1652 ตำ�แหน่งในหน่วย ความจำ�
พื้นที่หน่วยความจำ� (Memory storage) รูปที่ 3.1 การใช้งานพื้นที่หน่วยความจำ�
จากรูป3.1 เราสามารถอ้างถึงค่า 10 ผ่านชื่อตัวแปร a โดยต้องประกาศว่ามีตัวแปร aที่เป็น ชนิดจำ�นวนเต็มก่อน ภาษาจาวาใช้รูปแบบคำ�สั่งดังนี้ int a; (หมายความว่า ถ้ามีประมวลผลถึงคำ�สั่งนี้ จะมีการจองพื้นที่หนึ่ง ชื่อว่าaที่สามารถเก็บ ตัวเลขชนิดจำ�นวนเต็ม หากกำ�หนดค่า 10 ในพื้นที่นี้ เราใช้ประโยคคำ�สั่งดังนี้ a=10; (หมายถึง นำ�ค่า 10 ไปเก็บใว้ในพื้นที่a ที่จองไว้ในหน่วยความจำ�) 025
บทที่3
ชนิดข้อมูลและตัวแปร
21
3.1 ชนิดของข้อมูลและค่าของข้อมูล (Data Type and Literal value) ภาษาจาวา กำ�หนดรูปแบบของชนิดของข้อมูลออกเป็น2 กลุ่มใหญ่ๆ คือ 1. Primitive Type 2. Reference Type 1.Primitive Type แบบ Primitive Type คือเป็นกลุ่ม built-in ซึ่งจะถูกสร้างรูปแบบการกำ�หนดช่วงของค่าที่สามารถเก็บ ได้โดย ชนิดของข้อมูลใดๆ พร้อมทั้ง ปฏิบัติการที่สามารถกระทำ�ได้กับข้อมูลทุกชนิดนั้นๆเช่น ปฏิบัติการชนิดบวก(addition), ลบ ( subtraction) , คูณ (multiplication)และอื่นๆ (พิจารณารูปแบบโครงสร้างชนิดข้อมูลที่สามารถ กำ�หนดในภาษาจาวา) Primitive Data Types Boolean Types
Numerical Types FloatingPoint Types
Integer Types byte
char short
int
long ตารางที่3.1 Integral Data Type
float
double
บทที่3
22
ชนิดข้อมูลและตัวแปร
ชนิดข้อมูลที่เป็นเลขจำ�นวนเต็ม ตารางที่3.1 Integral Data Type หมายเหตุ 1 byte = 8 bit เช่น 00000000 เป็น Binary Code system ชนิด
พื้นที่จัดเก็บ ช่วงค่าที่สามารถระบุได้
หมายเหตุ
byte
1 byte
- ค่าที่จัดเก็บผ่านคำ�สั่ง=(กำ�หนดค่า)เท่านั้นเช่น Byte a;a =2a -ค่าที่จัดเก็บผ่านคำ�สั่ง=(กำ�หนดค่า) เท่านั้น เช่น short a;a= -1; -ค่าที่จัดเก็บเป็นชนิด จำ�นวนเต็ม และสามารถอ้างถึง ผ่านการนิยามชนิดของ Iiteral value ได้(สั้น)
-128 ถึง127
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, -นิยามชนิดของ literal 775,808ถึง Value ที่สามารถใช้ ได้ผ่าน 9,223,372,036,854,775,807 การระบุชนิด แบบ long ต้องต่อท้ายด้วยอักษร(ยาว)
คำ�ว่า Default หมายถึง หากเราประกาศตัวแปร หรืออ้างถึงพื้นที่จัดเก็บข้อมูลใดๆ โดยไม่ได้ระบุ ชนิด หากมีการกำ�หนดว่าจำ�นวนเต็มให้ตัวแปรนั้นๆ จะมีการสร้างพื้นที่จัดเก็บ และระบุชนิดที่เป็นแบบ int ให้ โดย อนุมัติ(กำ�หนดโดยผู้สร้างและนิยามรูปแบบการภาษา) 2.Reference Type ชนิดจำ�นวนเต็ม (Integer Type) ตัวอย่างของค่าที่สามารถกำ�หนดให้กับตัวแปร ที่ ระบุว่าเป็นชนิดจำ�นวนเต็ม Class Types Interface Array กำ�หนดได้ : 0 5 -10 +15 1000 253 String Types Types -2631 +36 กำ�หนดไม่ได้ : 255.62 2,523 3. 6,243,892 1492.89 +6.0 อนึ่ง ถ้าเป็นจำ�นวนเต็มชนิด literal ค่าที่กำ�หนดต้องต่อท้ายด้วยL เช่น 8976929L 2147483649L 62L ซึ่งการจัดเก็บค่านี้จะเก็บในรูปแบบของจำ�นวนเต็มชนิด Long Integers. Reference Types
บทที่3
23
ชนิดข้อมูลและตัวแปร
ชนิดจำ�นวนจริง(Floating – Point Numbers) ค่าที่มีจุดทศนิยม ค่าข้อมูลที่ถูกกำ�หนดให้กับตัวแปรที่ระบุว่าเป็นชนิดที่สามารถมีค่าที่มีจุดทศนิยมได้มี2รูปแบบ ดังรายละเอียด ดังในตาราง3.2 ตาราง3.2 ชนิดที่มีจุดทศนิยม (Floating- Point Data Type) ชนิด
พื้นที่
ช่วงค่าที่สามารถจัดเก็บ(+หรือ-)
Float
4 bytes
1.4012984632481707E-45ถึง 3.40282346638528860E+38
Double
8 bytes
หมายเหตุ
ชนิดค่า literalจะใช้f หรือF ต่อท้ายค่า 4.94065645841246544E-324ถึง เป็นชนิดจำ�นวนจริง 1.79769313486231570E+308
ตัวอย่างของค่าที่สามารถกำ�หนดให้กับตัวแปรที่ระบุว่า เป็นชนิดระบุทศนิยมได้
9.234 จำ�นวนจริงชนิดDouble (ระบุทศนิยมได้ และช่วงค่าจะกว้างกว่าแบบFloat) 9.234f จำ�นวนจริงชนิดFloat (ช่วงค่าจะน้อยกว่าแบบDouble) 9.234F จำ�นวนจริงชนิดFloat เช่นกัน
กำ�หนดได้ : +10.625 5. กำ�หนดไม่ได้ : 5326.25
-6.2 3251.92 0.0 0.33 -6.67 +2. 24 6459 10.2 7.008.645
หมายเหตุ : การกำ�หนดค่า หาค่าข้อมูลที่จะกำ�หนดให้กับตัวแปรชนิดระบุทศนิยมหรือกลุ่มค่าจำ�นวนจริงว่าควรใช้ ชนิดใด
บทที่3
24
ชนิดข้อมูลและตัวแปร
สัญลักษณ์เอ็กโพเน็นเชี่ยน (Exponential notation(e) หรือ E หมายถึงการใช้สัญลักษณ์e ในการแทนค่า ที่มีขนาดใหญ่หรือเล็กมากๆ ให้อยู่ในรูปที่กระชับโดยทันที นิยมในหมู่นักวิทยาศาสตร์ ในการใช้งานให้สามารถเขียนและอ่านได้ง่ายนั่นเอง
เช่น แบบ Decimal( ฐาน10) ใช้e นักวิทยาศาสตร์(Sciencetific) 1625 1.625E3 1.625*103 63421 6.3421E4 6.3421*104 สำ�หรับแบบใช้สัญลักษณ์Eหมายถึงยกกำ�ลังนั่นเอง เลขตามหลังEหมายถึงจำ�นวนกำ�ลังที่คูณกับ10 เช่น E3=103 E4=104 หมายเหตุ การดำ�เนินการกับค่าจำ�นวนเต็ม และจำ�นวนจริงกระทำ�ผ่านปฏิบัติการ +,-,*,/ ชนิดตัวอักษร (Characters) ชนิดข้อมูลพื้นฐานอีกชนิดหนึ่งที่นิยมใช้กันมาก ได้แก่ ชนิดอักขระ โดยการอ้างถึงหรือกำ�หนดต้องอยู่ใน เครื่องหมาย ‘ ‘ (Single Quotes) เช่น ‘a’ ตัวแปรที่กำ�หนดว่ามีชนิดเป็นแบบอักขระ(Characters) สามารถเก็บค่าตัวอักษรได้1ตัวของค่าต่างๆดังนี้
- เลข 0 ถึง 9 - สัญลักษณ์พิเศษ +8. , - ! A
ตัวอย่าง: ค่าที่สามารถกำ�หนดให้กับตัวแปรชนิดอักขระได้แก่ ‘A’ ‘S’ ‘b’ ‘7’ ‘y’ ‘!’ M’ ‘q’ หมายเหตุ: การดำ�เนินการที่กระทำ�ค่าเหล่านี้ กระทำ�ด้วยปฏิบัติการต่างๆ เช่น ต่อค่าเข้าด้วยกันและนับค่าที่มี และอื่นๆ โดยการจัดเก็บในหน่วยความจำ� ถ้าใช้ระบบแบบ Unicode ที่1ตัวอักษรมี 2 byte จะได้ผลตัวอย่างการ จัดเก็บค่า ตัวอักษรคำ�ว่า JEANS;
บทที่3
25
ชนิดข้อมูลและตัวแปร
โดยแต่ละตัวอักขระเก็บในรูปแบบรหัสเลขฐาน2ที่คอมพิวเตอร์เข้าใจ มีความยาว 2 byte เท่ากับ16 bit ดังนี้ เช่น J = 00000000 01100001 E = 00000000 01000101 A = 00000000 01000001 ดังนั้น ในพื้นที่หน่วย ความจำ�จะเป็น JEANS ในขนาด 10 ไบท์ ดังนี้
N = 00000000 01001110 S = 00000000 01010011
J
E
A
N
รูปที่3.6 ชุดตัวอักษร JEANS ที่ถูกจัดเก็บโดยโปรแกรมจาวา
ตัวอย่าง:คำ�สั่งประกาศโดยโปรแกรมจาวา:
Char Char Char Char Char
a=’J’ ; e=’E’ ; c=’A’ ; n=’N’ ; s=’S’ ;
S
บทที่ 4
การกำ�หนดตัวแปรและ การดำ�เนินการกับข้อมูล
บทท4
�หนดตัวแปรและ 27 การกำ การดำ�เนินการกับข้อมูล
4.1 ตัวแปรและการกำ�หนดค่าตัวแปร (Variable and Variable Assignment) จากบทที่ 3 ได้มีการกล่าวถึงรายละเอียดชนิดต่าง ๆ ของข้อมูล และการประกาศตัวแปรเพื่อไว้ใช้เก็บค่า ตามชนิดที่ประกาศไว้ในหน่วยความจำ�คอมพิวเตอร์ แต่ละพื้นที่ที่ถูกจองโดยระบบจะถูกจัดการคล้ายกับห้องใน โรงแรม ซึ่งทุก ๆ พื้นที่จะต้องสามารถอ้างถึงได้โดยตำ�แหน่ง(เสมือนเลขห้อง) และชื่อโดยและในห้องนั้นจะสามารถ บรรจุข้อมูลได้ ตัวตัอย่ างา1งที่1 วอย่ เก็บค่า 45 ชนิดจำ�นวนเต็ม และค่า 12 ชนิดจำ�นวนเต็ม ไว้ในหน่วยความจำ�ที่ตำ�แหน่ง (Address) 1652 และ 2548 โดยดำ�เนินการตามคำ�สั่ง ดังนี้ Put a 45 in location 1652 Put a 12 in location 2548 หน่วยความจำ� 1 หน่วยความจำ�หรับ 1 ข้อมูล หน่วยความจำ�ที่มีพื้นที่ 1 หน่วยความจำ�หรับ 1 ข้อมูล 45
45 1652
ตำ�แหน่งในหน่วยความจำ�
2548 ตำ�แหน่งในหน่วยความจำ�
รูป 4.1 หน่วยความจำ�สำ�หรับข้อมูล 2 หน่วยชนิดจำ�นวนเต็ม
บทที่4
�หนดตัวแปรและ 28 การกำ การดำ�เนินการกับข้อมูล
ตัวอย่างที่2 หากต้องการบวกค่าทั้ง 2 ค่า และเก็บค่าไว้ที่อีกตัวแปรหนึ่ง ซึ่งต้องจองพื้นที่เพิ่มขึ้นมาอีก 1 หน่วย ที่ ตำ�แหน่ง 3000 เราต้องเขียนคำ�สั่งเพิ่ม ดังนี้ Add the contents of location 1652 To contents of location 2548 And store the result into location 3000 จากตัวอย่างที่ 1 : ให้ข้อมูล 45 ที่ ตำ�แหน่ง 1652 มีชื่อว่า num1 และให้ข้อมูล 12 ที่ ตำ�แหน่ง 2548 มีฃื่อว่า num2 โดยเก็บผลลัพธ์ของการบวกไว้ที่หน่วยความจำ�ตำ�แหน่งที่ 3000 ที่ชื่อ Total ชื่อตัวแปร num1
num2
57
12
45 1652
num3
2548
3000
ตำ�แหน่งในหน่วยความจำ� รูปที่ 4.2 การให้ชื่อกับตำ�แหน่งในหน่วยความจำ�
โดยสามารถเขียนลำ�ดับของปฏิบัติการตามชุดคำ�สั่งจากตัวอย่างที่ 1 และตัวอย่างที่ 2 ได้ด้วยภาษาจาวา ดังนี้ class sum { public static void main (String [ ] args) { int num1 = 45 ; (การจองพื้นที่ระหว่างโปรแกรมประมวลผลจะเกิด int num2 = 12 ; (โดยอัตโนมัติพร้อมทั้งกำ�หนดค่าให้กับพื้นที่นั้น ๆ) int total = num1 + num2; } // end main } // end class
บทท4
�หนดตัวแปรและ 29 การกำ การดำ�เนินการกับข้อมูล
เมื่อทำ�การประมวลผลจะเกิดการดำ�เนินการกับพื้นที่ในหน่วยความจำ�ดังรูปที่ 4.1 และ 4.2 โดยผู้รันไม่เห็น กระบวนการดังกล่าว เพราะหน้าจอภาพจะเป็นสภาพปกติ มีเพียงตัวกระพริบเคอร์เซอร์ปรากฏอยู่เท่านั้น หากต้องการให้ผลลัพธ์ของค่าปรากฏบนจอภาพอาจใช้คำ�สั่งแสดงผลต่อท้ายประโยคคำ�สั่งสุดท้าย แสดงค่าออกทางจอภาพดังนี้
System.out.println(“Num1=”+num1); System.out.println(“Num1=”+num2); System.out.println(“total=”+total);
ผลลัพธ์บนจอภาพจะเป็น Num1 = 45 Num1 = 12 total = 57_
รูปที่ 4.3 ผลลัพธ์จากการรันโปรแกรม
ประโยคคำ�สั่งในการประกาศค่า (Declaration Statements) การเขียนโปรแกรมให้คอมพิวเตอร์ดำ�เนินการหากต้องการมีการกระทำ�กับค่าต่าง ๆ ต้องมีการประกาศ ชื่อของตัวแปรที่จองเนื้อที่ในหน่วยความจำ�สำ�หรับไว้ใช้งานก่อนเริ่มดำ�เนินการ รูปแบบการประกาศจะต้องระบุ ชนิดของค่าที่เก็บได้ในพื้นที่นั้น ๆ ตามด้วยชื่อของพื้นที่ที่จองไว้ (เราเรียกว่าตัวแปร) สำ�หรับฟอร์มทั่วไปจะเป็น ดังนี้
บทที่4
�หนดตัวแปรและ 30 การกำ การดำ�เนินการกับข้อมูล
ตัวอย่างการประกาศชื่อตัวแปร Int sum;
sum xxxx
ใช้เก็บค่าชนิด จำ�นวนเต็ม
Long datenum;
datenum ใช้เก็บค่าชนิด xxxx จำ�นวนเต็ม long
Double secnum;
secnum xxxx
ใช้เก็บค่าชนิด จำ�นวนจริง Double
Float firstnum;
firstnum xxxx
ใช้เก็บค่าชนิด จำ�นวนจริง float
Char Test= ‘a’;
Test xxxx
ใช้เก็บค่าอักขระ 1 ตัว
String msg= “Test”;
msg xxxx
การตั้งชื่อตัวแปรควรตั้งตามกติกาที่แนะนำ�ไว้ในบทต้น ๆ ของคู่มือ สรุป รูปแบบฟอร์มทั่วไปในจาวาโปรแกรมที่มีเมธอด main () จะต้องมีการประกาศค่าจะเป็นดังนี้ import statements; public class ClassName{ public static void main (String [ ] args ) { }//end method main } // end class
บทท4
31
การกำ�หนดตัวแปรและ การดำ�เนินการกับข้อมูล
4.2 การดำ�เนินการทางคณิตศาสตร์ (Arithmetic Oporation) ตัวแปรชนิดจำ�นวนเต็มและจำ�นวนจริง อาจถูกนำ�มา บวก, ลบ, คูณ และหารกันได้ แต่ข้อกำ�หนดทั่วไป ของภาษาการโปรแกรม มักกำ�หนดว่า ค่าชนิดจำ�นวนเต็ม สามารถบวกกับค่าชนิดจำ�นวนเต็มและเก็บไว้ใน พื้นที่หน่วยความจำ�ชนิดจำ�นวนเต็มเท่านั้น เป็นต้น ตัวดำ�เนินการทางคณิตศาสตร์ (Operator) สำ�หรับปฏิบัติการทางคณิตศาสตร์ จะใช้สัญลักษณ์ ดังนี้ ปฏิบัติการ
ประเภท
บวก ลบ คูณ หาร มอดูลัส Negation
binary n n n n Unar
สัญลักษณ์ ตัวอย่าง กำ�หนด a=10,b=2 + C=a+b C=a-b * C=a*b / C=a/b % C=a%b _
ผลลัพธ์ ค่า C เท่ากับ C=12 C=8 C=24 C=5 C=0 (เศษ 0 ผลหาร)
หมายเหตุ: Binary หมายถึงตัวกระทำ�กับ 2 ข้อมูล, Unary กระทำ�กับ 1 ค่าข้อมูล สำ�หรับสัญลักษณ์ Negation (- หรือ ปฏิเสธ) จะมีกระทำ�กับค่าทั้งงด้านหน้าและด้านหลัง โดยมีการเขียนใน ลักษณะดังนี้ เช่นกำ�หนด int a=0; a - , a - - , a + , a + + , + + a ฯลฯ สำ�หรับลำ�ดับความสำ�คัญของสัญลักษณ์ต่าง ๆ ที่จะต้องดำ�เนินการมี ดังนี้ตาราง 4.2 สัญลักษณ์ Unary-. */% +-
ลำ�ดับ ขวาไปซ้าย ซ้ายไปขวา ซ้ายไปขวา
ลำ�ดับความสำ�คัญ 1 2 3
ตัวอย่าง : นิพจน์ สามารถดำ�เนินการ คำ�นวณคู่ของค่าตามลำ�ดับ ความสำ�คัญของตัวดำ�เนินการ ในตารางข้างบน
8+5+7%2+4
บทที่4
�หนดตัวแปรและ 32 การกำ การดำ�เนินการกับข้อมูล
4.3 การแสดงผลลัพธ์ข้อมูลชนิดตัวเลขออกทางจอภาพ
จากหัวข้อ 4.1 4.2 จะเห็นว่าข้อมูลต่างๆที่ถูกประกาศจองพื้นที่ในหน่วยความจำ� และกำ�หนดชื่อให้กับ พื้นที่เหล่านั้นโดยโปรแกรม หากข้อมูลเหล่านั้นเป็นตัวเลข สามารถใช้ตัวดำ�เนินการทางคณิตศาสตร์กระทำ�และ เก็บผลลัพธ์เอาไว้ในพื้นที่หน่วยความจำ� เมื่อต้องการแสดงผลลัพธ์ออกทางจอภาพจะมีคำ�สั่งแสดงผลลัพธ์ ดัง ตัวอย่างต่อไปนี้... System.out.println((6+15)); หรือ System.out.println((6+15)); โดย 6+15 จะถูกประมวลและเก็บ ในพื้นที่ชั่วคราวและส่งต่อออกมาแสดง ทางจอภาพผ่านคำ�สั่ง println จะได้ผลลัพธ์ ดังนี้ 21
รูปที่ 4.5 ผลลัพธ์จากการรันโปรแกรม
การกำ�หนดรูปแบบแสดงผลลัพธ์ (Formatted Output) การจัดรูปแบบแสดงผลลัพธ์ตัวเลขช่วยให้การแสดงผลลัพธ์ ได้ตรงตามรูปแบบที่ต้องการและสวยงาม คำ�สั่งภาษาจาวามีสัญลักษณ์ที่ช่วยกำ�หนดรูปแบบสายอักขระดังนี้ ตาราง 4.3 สัญญลักษณ์ # 0 . , ; %
ความหมาย ถ้าเลขที่แสดงค่าเป็น 0 จะโชว์ค่าว่าง แสดงค่า 0 แสดงจุดทศนิยม แสดงตัวคั่นคอมมา แสดงตัวแยก แสดงสัญลักษณ์ มอดูลัส ตามหลังผล
บทท4
�หนดตัวแปรและ 33 การกำ การดำ�เนินการกับข้อมูล
หมายเหตุ :
จะใช้คุณสมบัติต่าง ๆ เหล่านี้ได้ โปรแกรมต้อง import java.text ตัวอย่างการใช้งานด้วยโปรแกรมภาษาจาวา ตัวอย่าง 1 Import java.text Public Class With Formats1 { Public static void main (String [ ] argas) { Decimal Format num=new DecimalFormat(“00”) System,out.println(num.format(6)); System,out.println(num.format(18)); System,out.println(num.format(6+18)); } // end main } // end class
บันทึกความเข้าใจ 1.ผลลัพธ์ 06 18 24 2. หมายเหตุ - ค่า 6 ทำ�ให้เป็น 2 หลัก จึงเป็น 06 - คลาส Decimat Format สร้าง num ที่ มีลักษณะ 2 หลัก เก็บค่าตามฟอร์แมทที่กำ�หนด
ตัวอย่าง 2 Import javatext Public class WithFormat2 { Public static void main (String [ ] argas) { Decimal Format num=new DecimalFormat(“##”) System,out.println(num.format(3)); } // end main } // end class
บันทึกความเข้าใจ 1.ผลลัพธ์ 3
ตัวอย่าง 3 จงยกตัวอย่างการแสดงผลค่าตามฟอร์แมท “0,000.00” ค่า 12345.65
บันทึกความเข้าใจ หลังใช้แสดงผลฟอร์แมท 1,2345.65
“,##.00” “l,###.00l” “l,00.##l” “l00l” “l00l” “l00.00l” “##.##”
ค่า 2.47 ค่า 12345.65 ค่า 123.4 ค่า 143.466 ค่า 3 ค่า 143.466 ค่า 2.466
2.47 1,345.60 123.4 143 03 143.47 2.47
บทที่ 5
คำ�สั่งควบคุมแบบเลือกกระทำ� (Control Flow : Selection)
บทที่5
�สั่งควบคุมแบบเลือกกระทำ� 35 คำ(Control Flow : Selection)
การเขียนโปรแกรมคอมพิวเตอร์ หมวดคำ�สั่งที่ใช้ช่วยควบคุมทิศทางการประมวลผล เช่นให้ดำ�เนินการ ตามเงื่อนไขที่สอดคล้อง หรือการใช้คำ�สั่งควบคุมให้การประมวลคำ�สั่งทำ�ซ้ำ� ๆ กัน เป็นสิ่งสำ�คัญที่ทำ�ให้การใช้ เครื่องคอมพิวเตอร์ในด้านการดำ�เนินการแบบอัตโนมัติเกิดประโยชน์อย่างสูง และมีประสิทธิภาพมากกว่างานที่ มนุษย์สามารถดำ�เนินการได้ในระยะเวลาอันสั้น 1. นิพจน์เปรียบเทียบทางตรรกศาสตร์ (RELATIONAL EXPRESSION) นิพจน์เปรียบเทียบถูกใช้เพื่อเปรียบเทียบเงื่อนไขเลือกกระทำ� โดยตัวอย่างการสร้างนิพจน์เปรียบเทียบ ได้แก่ Age>40 length<=50 temp>98.6 3<4 flag = = done idNum = = 682 Day!=5 2.0>3.3 haurs>40 ตัวอย่างนิพจน์ที่ผิด Length=<50 2.0>>3.3 Flag = = done รูปฟอร์มที่เขียนสามารถแยกส่วนความหมายดังรูปที่ 5.1 สัญญลักษณ์เปรียบเทียบ ตัวแปรถูก ดำ�เนินการ
ตัวถูกดำ�เนินการ Watls<15.2 นิพจน์ รูป 5.1 รูปแบบที่ใช้เขียนชุดคำ�สั่งแบบเปรียบเทียบ
บทที่5
�สั่งควบคุมแบบเลือกกระทำ� 36 คำ(Control Flow : Selection)
ตาราง 1 : ตัวดำ�เนินการเปรียบเทียบสำ�หรับข้อมูลชนิดพื้นฐาน สัญลักษณ์ < > <= >= == !=
ความหมาย น้อยกว่า มากกว่า น้อยกว่าเท่ากับ มากกว่าเท่ากับ เท่ากับ ไม่เท่ากับ
ตัวอย่าง age<30 height>6.2 taxable<=20000 temp>=98.6 grade==100 number !=250
1. ตัวอย่างการใช้งานร่วมกับคำ�สั่งแสดงผลในภาษาจาวา System.out.println(“the value of 3<4 is”+(3<4)); System.out.println(“n The value of 2.0>3.0 is”+(2.0>3.0)); ผลลัพธ์ The value of 3<4 is true The value of 2.0<3.0 is false หากเราเขียนนิพจน์ hours>40 ค่าความจริงผลลัพธ์จะเป็นจริงหรือเท็จขึ้นกับค่าที่เก็บในhours 2. ตัวอย่างนิพจน์เปรียบเทียบแบบอักขระลำ�ดับ นิพจน์ ค่า ‘a’>’c’ false ‘D’<=’%’ true ‘E’==’F’ false ‘G’>=’N’ false ‘B’!=’C’ true
บทที่5
�สั่งควบคุมแบบเลือกกระทำ� 37 คำ(Control Flow : Selection)
ตัวดำ�เนินการทางตรรกศาสตร์ การเขียนโปรแกรมคอมพิวเตอร์ หมวดคำ�สั่งที่ใช้ช่วยควบคุมทิศทางการLogical Operstor การสร้างนิพจน์เปรียบเทียบอาจใช้ตัวเชื่อมนิพจน์เพื่อสร้างเงื่อนไขนิพจน์เปรียบเทียบที่ซับซ้อนขึ้นก็ได้ โดยตัวเชื่อมนิพจน์เหล่านี้ได้แก่ || หมายถึง หรือ (หากมีหลายเงื่อนไข,จริงเพียง 1 เงื่อนไขจะถือว่าจริง) && หมายถึง หรือ (หากมีหลายเงื่อนไข,ต้องจริงทุกเงื่อนไขจึงถือว่าจริง) เช่น (age>40) && (term<10) โดยนิพจน์นี้จะให้ผลเป็นจริงถ้า age มีค่า น้อยกว่า 40 และ term มีค่าน้อยกว่า10 ตัวอย่างการกำ�หนดและใช้งานในโปรแกรมภาษาจาวา ต้องประกาศตัวแปรก่อน คือ int i, j; float a, b; boolean complete; นิพจน์เงื่อนไขที่สามารถเขียนได้ ได้แก่ a<b -------------1 (a/b>5) && (i<=20) -------------2 (i==j) ll (a<b) ll complete -------------3 ก่อนที่นิพจน์ที่ยกมาจะถูกประมวล ค่าของ a,b,I,j และ complete ต้องถูกกำ�หนดก่อนเช่น a = 12.0; b = 2.0; i = 15; f = 30; complete = false;
บทที่5
�สั่งควบคุมแบบเลือกกระทำ� 38 คำ(Control Flow : Selection)
ผลลัพธ์ของการประมวลผลค่าความจริงของนิพจน์ -1, 2, และ 3 จะเป็น ดังนี้
นิพจน์ ค่า 1.a<b false (เท็จ) 2.(a/b>5) && (i<=20) true (จริง) 3.(i==j) ll (a<b) ll complete false (เท็จ) ตาราง 2 ลำ�ดับความสำ�คัญของตัวดำ�เนินการ
ตัวดำ�เนินการ ลำ�ดับความสำ�พันธ์ ++ - - ขวาไปซ้าย ! unary- “ * / % “ + - “ < < = > > = “ = = ! = “ & “ ^ “ l “ && “ ll “ = + = - = * = / = “
บทที่5
�สั่งควบคุมแบบเลือกกระทำ� 39 คำ(Control Flow : Selection)
ตัวอย่าง พิจารณาตัวอย่างการใช้งานในโปรแกรมพร้อมทั้งเติมคำ�ในช่องว่างที่เว้นไว้ 1. กำ�หนดค่าโดยการประการตัวแปรก่อน Char kkey = ‘m’ Int i = 5, j = 7, k = 12; Double x = 22.5; 2. การสร้างนิพจน์ และ ผลการประเมินนิพจน์ที่กำ�หนด (จงเติมผลของค่าความจริงในช่องว่าง)
นิพจน์ i +2 = = k – 1 3 + i – j < 22 i+2*j > k k+B< = - j+3 * i ‘a’+1 = = ‘b’ dey – 1 > ‘p’ key + 1 = = ‘n’ 25 > = x + 1.0
หรืออีกรูปแบบ (i=2)==(k-1) ((3*i)-j)<22 (I + (2*j))>k (k+j)<=((-j)+(3*i)) (‘a’+1) = = ‘b’ (key – 1) > ‘p’ (key + 1) = = ‘n’ 25 > = (x+1.0)
ค่าความจริง เท็จ (false) --------------------------------------------------------------------------------------------
ตัวอย่าง พิจารณานิพจน์ตรรกศาสตร์และการถอดสมการค่าความจริงตามลำ�ดับดังนี้ ( 6 * 3 = = 36/2 ) (18 = = 18) จริง จริง จริง
ll ll ll ll ll จริง
(13<3*3+4) (13<9+4) (13<13) เท็จ เท็จ
&& ! && && &&
(6-2<5) (4<5) จริง จริง
บทที่5
�สั่งควบคุมแบบเลือกกระทำ� 40 คำ(Control Flow : Selection)
ผลลัพธ์ของการประมวลผลค่าความจริงของนิพจน์ -1, 2, และ 3 จะเป็น ดังนี้
นิพจน์ ค่า 1.a<b false (เท็จ) 2.(a/b>5) && (i<=20) true (จริง) 3.(i==j) ll (a<b) ll complete false (เท็จ)
ตัวดำ�เนินการ ลำ�ดับความสำ�พันธ์ ++ - - ขวาไปซ้าย ! unary- “ * / % “ + - “ < < = > > = “ = = ! = “ & “ ^ “ l “ && “ ll “ = + = - = * = / = “
บทที่5
41
คำ�สั่งควบคุมแบบเลือกกระทำ� (Control Flow : Selection)
ตัวอย่าง พิจารณาตัวอย่างการใช้งานในโปรแกรมพร้อมทั้งเติมคำ�ในช่องว่างที่เว้นไว้ 1. กำ�หนดค่าโดยการประการตัวแปรก่อน Char kkey = ‘m’ Int i = 5, j = 7, k = 12; Double x = 22.5;
2. การสร้างนิพจน์ และ ผลการประเมินนิพจน์ที่กำ�หนด (จงเติมผลของค่าความจริงในช่องว่าง) นิพจน์ หรืออีกรูปแบบ ค่าความจริง i +2 = = k – 1 (i=2)==(k-1) เท็จ (false) 3 + i – j < 22 ((3*i)-j)<22 -------------i+2*j > k (I + (2*j))>k -------------k+B< = - j+3 * i (k+j)<=((-j)+(3*i)) -------------‘a’+1 = = ‘b’ (‘a’+1) = = ‘b’ -------------dey – 1 > ‘p’ (key – 1) > ‘p’ -------------key + 1 = = ‘n’ (key + 1) = = ‘n’ -------------25 > = x + 1.0 25 > = (x+1.0) -------------ตัวอย่าง
พิจารณานิพจน์ตรรกศาสตร์และการถอดสมการค่าความจริงตามลำ�ดับดังนี้ ( 6 * 3 = = 36/2 ) ll (13<3*3+4) && ! (6-2<5) (18 = = 18) ll (13<9+4) && (4<5) จริง ll (13<13) && จริง จริง ll เท็จ && จริง จริง ll เท็จ จริง
บทที่5
�สั่งควบคุมแบบเลือกกระทำ� 42 คำ(Control Flow : Selection)
แบบฝึกหัด 1.พิจารณานิพจน์ที่กำ�หนด โดยกำ�หนด a=5, b=2, c=4, d=6 และ e=3 เป็นชนิดจำ�นวนเต็ม (int) ดังต่อไปนี้ ข้อ a. b. c. d. e. f. g. h. i.
นิพจน์ a>5 a!=b d%b==c%b a*c !=d*b d*b==c*e a*b < a%b*c a%b*c>c%b*a c%b*a==b%c*a b%c*a!=a*b
ผลลัพธ์
2. เขียนนิพจน์ต่อไปนี้ใหม่ให้อยู่ในรูปที่จัดลำ�ดับความสำ�คัญโดยใส่วงเล็บ หลังจากนั้นแสดงผลลัพธ์ตาม ลำ�ดับ โดยกำ�หนด a=5, b=2 และ c=4 ข้อ a. b. c. d.
นิพจน์ a%b*c a%b*c b%c*a b%c*a
นิพจน์ใหม่
ผลลัพธ์
&& c % b * a ll c % b * a && a % c * b ll a % c * b
3. เขียนนิพจน์ตรรกศาสตร์ตามโจทย์ที่กำ�หนด (โดยกำ�หนดชื่อตัวแปรขึ้นมาตามความหมายของโจทย์) a. อายุของบุคคลเท่ากับ 30 b. อุณหภูมิร่างกายสูงกว่า 98.6 c. ความสูงของบุคคลน้อยกว่า 6 ฟุต d. เดือนปัจจุบันคือ 12 e. อักษรตัวแรกของจดหมายคือ m f. อายุของบุคคลเท่ากับ 30 และ บุคคลคนนี้สูงน้อยกว่า 6 ฟุต g. วันปัจจุบันคือวนที่ 15 ของเดือนที่ 1 h. บุคคลที่อายุมากกว่า 50 หรือ ผู้ที่ถูกจ้างโดยบริษัทอย่างน้อย 5 ปี i. รหัสประจำ�ตัวบุคคลน้อยกว่า 500 และบุคคลที่อายุมากกว่า 55 j. ความยาวที่มากกว่า 2 ฟุต และ น้อยกว่า 3 ฟุต
บทที่5
�สั่งควบคุมแบบเลือกกระทำ� 43 คำ(Control Flow : Selection)
4. พิจารณานิพจน์ตรรกศาสตร์ในข้อย่อยที่กำ�หนด พร้อมทั้งประเมินผลค่าจากข้อกำ�หนดต่อไปนี้ นิพจน์ a. a = = 5 b. b * d = = c * c c. d % b * c > 5 ll c % b * d < 7
ผลลัพธ์
2. คำ�สั่ง if - else การใช้คำ�สั่งกำ�หนดเงื่อนไข เช่น if – else เพื่อเลือกทำ�คำ�สั่งตามเงื่อนไขที่กำ�หนด คือเป็นกลไกสำ�คัญ ของภาษาการโปรแกรมใด ๆ ซึ่งต้องใช้เพื่อควบคุมทิศทางของการประมวลผลคำ�สั่งโดยคอมพิวเตอร์ รูปฟอร์ม ทั่วไปของคำ�สั่งกำ�หนดเงื่อนไข If – else คือ If (เงื่อนไข) ประโยคคำ�สั่ง (Statement1); else statement 2; (ประโยคคำ�สั่ง 2) หรือสามารถเขียนอีกฟอร์มได้ดังนี้ If (เงื่อนไข) ประโยคคำ�สั่ง 1 (Statement1); else ประโยคคำ�สั่ง 2 (Statement2); โดยสามารถใช้สัญลักษณ์ flowchart แสดงได้ดังนี้ นิพจน์คำ�สั่งก่อนเข้าเงื่อนไข ถ้า เงื่อนไข เป็นจริง ส่วน if
ใช่ statement 1
ไม่
statement 2
คำ�ส่งต่อไป รูปที่ 5.2 ผังแสดงการใช้คำ�สั่งเลือกกระทำ�แบบมีเงื่อนไข
ส่วน else
บทที่5
�สั่งควบคุมแบบเลือกกระทำ� 44 คำ(Control Flow : Selection)
ตัวอย่าง กำ�หนดโปรแกรมคำ�นวณภาษีที่มีการใช้คำ�สั่ง if – statement โดยกำ�หนดดังนี้ว่า จังหวัดปทุมธานีกำ�หนดหักภาษีจากรายได้ 2% สำ�หรับผู้ที่มีรายได้น้อยกว่าหรือเท่ากับ 20,000 บาท สำ�หรับผู้มีรายได้มากกว่า 20,000 บาท จังหวัดจะหัก 2.5 % ส่วนที่เกินบวกอีก 400 บาท การเขียนประโยค คำ�สั่งเหล่านี้ในโปรแกรมควรจะเป็นดังนี้ ขั้นตอน double tax รับค่า tax จากแป้นคีย์บอร์ด If (tax < = 20000.0) tax = 0.02 * tax ; Else tax = 0.025 * (tax – 20000.0) * 400.0 ; โดยหลักของขั้นตอนเบื้องต้นสามารถนำ�มาเขียนโปรแกรมจาวาได้ดังนี้ โปรแกรม 1 import java.text. * ; public class CalculationTax { public static void main (String [ ] args) { double taxable, tax; String s1; DecimalFormat df = new DecimalFormat (“*,# # # . 00”); s1 = JoptionPane.showInputDialog (“Please Type in the tax income:”); Tax = Double.parseDouble (s1); if (tax < = 20000.0) tax = 0.02 * tax; else tax = 0.025* (tax – 20000.0) + 400; JOptionPane.showMessageDialog(null,”Taxes are $”+ df.format(tax); “Program Test”, JOptionPane.INFORMATION_MESSAGE); System.exit (o) ; } // end mai } // end class
บทที่5
�สั่งควบคุมแบบเลือกกระทำ� 45 คำ(Control Flow : Selection)
4. คำ�สั่ง Switch รูปฟอร์มทั่วไป ของคำ�สั่ง switch คือ switch (นิพจน์เงื่อนไข) { // จุดเริ่มต้นการใช้คำ�สั่งเพื่อวางเงื่อนไขเลือกการกระทำ�ชุดคำ�สั่ง case ค่าที่ 1 : ประโยคคำ�สั่งที่ 1; ประโยคคำ�สั่งที่ 2; บล็อกของชุดคำ�สั่งใน case ที่ 1 : : break // จบชุดคำ�สั่งในกรณีสอดคล้องกับ case ที่มีค่าเท่ากับค่าที่ 1 case ค่าที่ 2 : ประโยคคำ�สั่งที่ 1; ประโยคคำ�สั่งที่ 2; บล็อกของชุดคำ�สั่งใน case ที่ 2 : : break; // จบชุดคำ�สั่งในกรณีสอดคล้องกับ case ที่มีค่าเท่ากับค่าที่ 2 o o o case ค่าที่ n : ประโยคคำ�สั่งที่ 1; ประโยคคำ�สั่งที่ 2; บล็อก ที่ n : : break ; // จบชุดคำ�สั่งในกรณีสอดคล้องกับ case ที่มีค่าเท่ากับค่าที่ n default : ประโยคคำ�สั่งที่ 1; ประโยคคำ�สั่งที่ 2; บล็อกของเงื่อนไขที่ไม่เข้า case ใดๆ และ : หลังจากทำ�ตามชุดคำ�สั่งจบจะออกนอก switch ไป } // end switch statement
บทที่5
�สั่งควบคุมแบบเลือกกระทำ� 46 คำ(Control Flow : Selection)
หมายเหตุ มี 4 คำ� สงวนในคำ�สั่ง switch ได้แก่ switch, case, default, และ break โดยมีรายละเอียดดังนี้ 1. นิพจน์เงื่อนไขของคำ�สั่ง switch ที่ตามหลังคำ�ว่า switch จะถูกประมวลค่าเพื่อนำ�ไปเปรียบเทียบกับ ค่าหลัง case 2. ถ้าคำ�สั่ง case ใดตรงกับผลของค่าในนิพจน์เงื่อนไข การประมวลผลจะกระโดดไปทำ�ชุดคำ�สั่งใน บล็อกนั้น และจบคำ�สั่ง switch ที่ประโยคคำ�สั่ง break (หมายถึงจบบล็อกและออกจากคำ�สั่งนั้น ๆ) 3. ถ้าค่าในนิพจน์เงื่อนไขไม่ตรงกับ case ใดๆเลย การประมวลผลจะกระโดดไปทำ�ชุดคำ�สั่งในบล็อกของ default และสิ้นสุดจบกระบวนการเช็คเงื่อนไขของคำ�สั่ง switch
บทที่ 6
คำ�สั่งควบคุมการทำ�ซ้ำ� (Control Structure : Loop )
บทที่6
�สั่งควบคุมการทำ�ซ้ำ� 48 คำ(Control Structure : Loop )
การใช้คำ�สั่งควบคุมการดำ�เนินการของการทำ�ซ้ำ�ในภาษาโปรแกรมใดๆคือเป็นกลไกสำ�คัญที่มีการใช้ งานระบบคอมพิวเตอร์อย่างเกิดประสิทธิภาพโดยลดการทำ�มือ หน่วยงานหลายแหล่งทำ�งานเอกสารคำ�นวณ ข้อมูลปริมาณมากๆ ด้วยเวลาที่ยาวนานโดยมนุษย์ แต่เมื่อมีการนำ�คอมพิวเตอร์มาใช้งานคำ�นวณเหล่านี้ ก็ สามารถทำ�เสร็จสิ้นในเวลาอันรวดเร็ว ด้วยการใช้กลไกควบคุมการทำ�งานของคอมพิวเตอร์ โดยเฉพาะอย่าง ยิ่งการทำ�งานคำ�นวณในรูปแบบซ้ำ�ๆกันแบบอัตโนมัตินั่นเอง ภาษาจาวาสร้างกลไกคำ�สั่งควบคุมการทำ�ซ้ำ�เพื่อตอบสนองการทำ�งานอัตโนมัติในรูปแบบการทำ�คำ�สั่ง ซ้ำ�ๆด้วย คำ�สั่ง While , do_while และ for ดังจะกล่าวต่อไปนี้ 6.1 คำ�สั่ง while เป็นคำ�สั่งควบคุมการทำ�ซ้ำ�ที่มีรูปแบบกำ�หนดคำ�สั่งต่าง ๆ ที่ตามหลัง While หรือเมื่อไรก็ตามที่เงื่อนไข ที่วางไว้เป็นจริง จะต้องทำ�คำ�สั่งในกลุ่มนั้นซ้ำ� ๆ จนกว่าเงื่อนไขจะกลายเป็นเท็จ ตัวอย่างการใช้งานรูปฟอร์มทั่วไป int count=1; // กำ�หนดค่าที่ใช้ในการนับ while (count<=10) { System.out.print(count+” “): count++; // เพิ่มค่าตัวนับรอบที่ละ 1 , // ทำ�ซ้ำ�และจบเมื่อค่า count มีค่า>10 (มากกว่า 10)
บทที่6
�สั่งควบคุมการทำ�ซ้ำ� 49 คำ(Control Structure : Loop )
ตัวอย่างที่ 6.1
public class ShowWhile { public static void main (String [ ] args) { Int count; count=1; // กำ�หนดค่าตัวนับเริ่มต้น while (count<=10) { คำ�สั่งที่ อยู่ในบล็อก While จะ System.out.print (count + “ “); ถูกดำ�เนินการ count++; // ตัวนับรอบเพิ่มค่าขึ้นทีละ 1 ทำ�ซ้ำ�ๆจนกว่า เงื่อนไขทีวาง ไว้จะเป็นจริง } // end while loop ) จะจบก็ต่อเมื่อ ค่า count>10 เป็นจริง) } // end main } // end class
ผลลัพธ์
บทที่6
�สั่งควบคุมการทำ�ซ้ำ� 50 คำ(Control Structure : Loop )
ตัวอย่างที่ 6.2 public class CountDown { public static void main (String [ ] args) { int i; i=10; // กำ�หนดค่าตัวเริ่มต้นตัวนับรอบชื่อ i มีค่าเท่ากับ 10 while (i>=1) { บล็อกทำ�ซ้ำ� System.out.print (i+ “ “); i- -; // ลดตัวนับรอบลงทีละ 1 จนกว่า I จะน้อยกว่า 1 จึงจะ // จบการทำ�ซำ�ภ้คำ�สั่งในบล็อก while } // end while } // end main ( ) } // end class
ผลลัพธ์
บทที่6
51
คำ�สั่งควบคุมการทำ�ซ้ำ� (Control Structure : Loop )
6.2 คำ�สั่ง for เป็นคำ�สั่งควบคุมการทำ�ซ้ำ�ที่มีรูปแบบกำ�หนดคำ�สั่งต่าง ๆ ที่ตามหลัง for มีการวางเงื่อนไขเพื่อตรวจ สอบและควบคุมการทำ�ซ้ำ�ผ่านการนับรอบด้วยตัวแปรควบคุมการนับรอบ โดยจะต้องทำ�คำ�สั่งในบล็อกทำ�ซ้ำ� จนกว่าเงื่อนไขจะกลายเป็นเท็จ รูปฟอร์มทั่วไป for ( expr1; expr2; expr3) { ประโยคคำ�สั่งต่างๆ } //end for
โดย expr คือนิพจน์เปรียบเทียบที่วางเอาไว้เพื่อควบคุมการทำ�ซ้ำ� ซึ่งการประเมินนิพจน์เพื่อควบคุม ระหว่างการทำ�ซ้ำ�จะดำ�เนินการดังนี้
1. ประเมิน expr1 สำ�หรับการตั้งต้นค่าตัวแปรควบคุม 2. ประเมิน expr2 ว่าเงื่อนไขเป็นจริงหรือเป็นเท็จ ถ้าเป็นเท็จก็สิ้นสุดการทำ�ซ้ำ� 3. ดำ�เนินการทำ�ตามคำ�สั่งในบล็อกของ for ถ้าเงื่อนไขเป็นจริง 4. ประเมินนิพจน์ expr3 ว่าจะเพิ่มค่าตัวนับรอบด้วยเงื่อนไขเช่นไร 5. ประเมินนิพจน์ expr2 ถ้าจริง กลับไปที่ 3
บทที่6
52
คำ�สั่งควบคุมการทำ�ซ้ำ� (Control Structure : Loop )
ตัวอย่างที่ 6.3 for ( int i = 1 ; i <= 10 ; i ++ ) { ประโยคคำ�สั่งที่1 ; ประโยคคำ�สั่งที่2 ; } อื่น ๆ ในขณะที่ i เป็นตัวแปรดัชนีใช้นับค่า 1 เป็นค่าตั้งต้นการนับรอบ และ 10 เป็นค่าสุดท้ายของการสิ้นสุดรอบ การทำ�งานโดยที่แต่ละรอบเพิ่มค่า i ครั้งละ 1 ด้วยนิพจน์ i ++
ตัวอย่างที่ 6.4 The Babbage Function (1820) : f(x) = x2+ x + 41 (curious polynomial) ซึ่งจะแสดงค่าเฉพาะ prime number เท่านั้น public class example2 { public static void main (String [ ] args) { for (int x = 0 ; x <10 ; x ++ ) { int y = x * x + x + x + 41 ; System.out.println( “\t” + x + “\t” + y) ; } } ผลลัพธ์ คือ 0 41
1 2 3 4 5 6 7 8 9
43 47 53 61 71 83 97 113 131
บทที่6
�สั่งควบคุมการทำ�ซ้ำ� 53 คำ(Control Structure : Loop )
การทำ�ซ้ำ�ที่ซ้อนทำ�ซ้ำ�(Nested Loops) การเขียนโปรแกรมทำ�ซ้ำ�ที่วงรอบการทำ�ซ้ำ�ในรูปแบบทำ�ซ้ำ�ซ้อนทำ�ซ้ำ� โดยเราเรียกกรณีเช่นนี้ว่าการทำ� ซ้ำ�แบบซ้อน ตัวอย่างที่ 6.5 เป็นตัวอย่างการเขียนโปรแกรมทำ�ซ้ำ�ในรูปบล็อกซ้อนบล็อกสำ�หรับพิมพ์ผลคูณของคูณตาราง 2 มิติ public class Example2 { public static void main(String[] args) { int size = 3; for(int x = 1; x<=size; x++) { for(int y=1; y<=size; y++) { int z = x * y; if(z<10) System.out.print(“ ”); if(z<100)System.out.print(“ ”); System.out.print(“ “ + z); }// end inner Loop System.out.print(“ ”); } //end outer Loop }//end main }//end class ผลลัพธ์ : ถ้ากำ�หนด size =3 ตามโปรแกรม 1 2 3
2 3
4 6
6 9
เปิดคลาส เปิดบล็อกเมธอด main กำ�หนดตัวแปรเก็บค่าชื่อ size คุมรอบสูงสุด ของการวิ่งทำ�ซ้ำ� โดยมี loop ชั้นนอกซ้อนชั้น ใน
คำ�สั่งต่างๆในวงจรทำ�ซ้ำ�
จบการทำ�ซ้ำ�วงรอบชั้นในหลุดออกไปชั้นนอก วงการทำ�ซ้ำ�ชั้นนอกเพื่อเริ่มกลับไปนับรอบ ใหม่ จบเมธอดmain จบคลาส
อ้างอิง :
54
1. Gary J. Bronson, A first book of Java, Books/Cole/ Thomson Learning, 2002. 2. ดร.วีระศักดิ์ ซึงถาวร, Java Programming Volume I (Java SE 5.0), ซีเอ็ด, 2549. 3. Kanneth A. Lombert and M. Osborne, Java: A Framework for Programming and Problem Solving, 2nd ed., Brooks/Cole/Thomson Learning, 2002. 4. อารีรัตน์ ส่งวัฒนา, Fundamental of Computing I: WorkBook I & II , 2556.
สุดท้ายนี้ หากผู้อ่านท่านใดสนใจอยากอ่านเรื่องน่าสนใจอื่นๆเกี่ยวกับเทคโนโลยีสารสนเทศ อย่าลืมไปแชร์และฝากข้อ เสนอแนะที่ลิงก์นี้นะคะ https://sites.google.com/site/sareerat/