Más contenido relacionado Similar a คำสั่งควบคุมโปรแกรม (7) คำสั่งควบคุมโปรแกรม 3. • จำกตำรำงค่ำควำมจริงของนิพจน์ตรรกะ เมื่อ 0 แทนค่ำเท็จ และ 1 แทนค่ำจริง แสดงดังตำรำง
• - p&& q จะมีค่ำจริง เมื่อ p และ q มีค่ำจริงทั้งคู่ มิฉะนั้นจะมีค่ำเป็นเท็จ
• - p || q จะมีค่ำจริง เมื่อ p และ q มีค่ำเท็จทั้งคู่ มิฉะนั้นจะมีค่ำเป็นจริง
• - pจะมีค่ำจริง เมื่อ p มีค่ำเท็จ และ !p จะมีค่ำเท็จ เมื่อ p มีค่ำจริง
7. ตัวดำเนินกำรทำงตรรกศำสตร์ (Logical Operator)
• ตัวดำเนินกำรทำงตรรกะ เป็นตัวดำเนินกำรเกี่ยวข้องกับนิพจน์ที่สำมำรถบอกค่ำควำมจริงเป็นจริง(true) หรือเท็จ (false)ได้ หรือชนิดข้อมูลตรรกะ เช่น ตัวแปร
ประเภท boolean ผลลัพธ์ที่ได้จำกกำรกระทำจะได้ค่ำคงที่ตรรกะเป็น true หรือ false ตัวดำเนินกำรทำงตรรกะได้แก่เครื่องหมำย !, &&, &, ||, |, ^ มีตัวอย่ำง
กำรใช้งำนดังนี้
12. ตัวอย่ำง กำรใช้Operator แบบ boolean
• class BoolLogic{
• public static void main(String args[]){
• boolean a = true; boolean b = false;
• boolean c = a | b; boolean d = a & b;
• boolean e = a ^ b; boolean f = (!a & b) | (a & !b);
• boolean g = !a;
• System.out.println("a = " + a); System.out.println("b = " + b);
• System.out.println("a | b = " + c); System.out.println("a & b = " + d);
• System.out.println("a ^ b = " + e); System.out.println("!a = " + g);
• System.out.println("!a & b | a & !b = " + f);
• }
• }
15. .
• ตัวดำเนินกำรที่มีลำดับกำรทำงำนอันดับที่ 1 จะทำงำนก่อนอันดับที่ 2 โดยทำงำนไปเรื่อย ๆ จนกระทั่ง
หมดตัวดำเนินกำร ส่วนลักษณะกำรทำงำนของตัวดำเนินกำรแต่ละอันดับนั้นแตกต่ำงกันไป ซึ่งจะเป็นกำร
ทำงำนจำกซ้ำยไปขวำ (left to rigth) หรือขวำไปซ้ำย (rigth to left) ก็ได้
16. กำรเลือกทำแบบทำงเดียว (if statement)
• กำรเลือกทำแบบทำงเดียว (if statement)
• ในภำษำจำวำจะใช้คำสั่ง if เลือกทำแบบทำงเดียวเพื่อจะตรวจสอบว่ำชุดคำสั่งที่ตำมมำจะทำหรือไม่ ในกำรทำงำนของคำสั่ง
คอมพิวเตอร์จะตรวจสอบเงื่อนไขก่อน ถ้ำเงื่อนไขเป็นจริงจะทำคำสั่งหรือสเตตเมนต์ที่ตำมหลังหรือเป็นสเตตเมนต์รวมที่อยู่ในเครื่องหมำย
{ } แต่ถ้ำเงื่อนไขเป็นเท็จคอมพิวเตอร์จะกระโดดข้ำมคำสั่งหรือสเตตเมนต์ตำมมำและไปทำคำสั่งหรือสเตตเมนต์ต่อไป รูปแบบคำสั่งเป็น
ดังต่อไปนี้
• รูปแบบ
• If(condition) {action statement}
• โดยกำรตรวจสอบเงื่อนไขจะเป็นกำรกระทำแบบบูลีน ผลลัพธ์ที่ได้จะเป็นจริงหรือเท็จเท่ำนั้นถ้ำหำกมีกำรใช้ตัวดำเนินกำรจะใช้ตัว
ดำเนินกำรที่ให้ผลลัพธ์เป็นแบบบูลีน สำหรับกำรทำงำนของคำสั่ง if สำรถเขียนเป็นผังงำนได้ดังนี้
20. ตัวอย่ำง ถ้ำหำกตัวแปร mark เก็บคะแนน และต้องกำรตรวจสอบว่ำถ้ำคะแนน
มำกกว่ำ 80 และน้อยกว่ำหรือเท่ำกับ 100 ให้ได้เกรด A จะเขียนคำสั่ง if ได้เป็น
25. คำสั่งเลือกทำอย่ำงใดอย่ำงหนึ่ง ( if-else )
• จำกตำสั่ง if ที่ผ่ำนมำจะใช้ในกำรเขียนโปรแกรมที่ใช้ทดสอบว่ำจะเลือกทำหรือไม่ ถ้ำเงื่อนไขเป็นจริงจะทำ
คำสั่งหรือสเตตเมนต์หลัง if ในกรณีที่คอมพิวเตอร์ต้องเลือกทำอย่ำงใดอย่ำงหนึ่ง โดยตรวจสอบเงื่อนไขที่
กำหนดจะใช้คำสั่ง if-else ถ้ำเงื่อนไขเป็นจริงจะทำคำสั่งหลัง if แต่ถ้ำเงื่อนไขเป็นเท็จจะทำคำสั่ง
หลัง else โดยนิพจน์กำรตรวจสอบเงื่อนไขที่ตำมหลัง if จะเป็นข้อมูลทำงตรรก รูปแบบคำสั่งเป็นดังนี้
27. ตัวอย่ำง มีคัวแปร a และ b เก็บค่ำข้อมูลใดๆ ถ้ำหำกนำข้อมูลทั้งสองมำ
เปรียบเทียบกันและต้องกำรให้ตัวแปร c เก็บข้อมูลที่มีค่ำมำกกว่ำสำมำรถ
เขียนได้ดังนี้
30. จำกตัวอย่ำง ถ้ำหำกเงื่อนไขของ if เป็นจริงจะทำสเตตเมนต์ที่ตำมมำ ซึ่งมีส
เตตเมนต์เดียว แต่ถ้ำหำกเงื่อนไขของ if เป็นเท็จจะทำสเตตเมนต์
หลัง else ซึ่งเป็นสเตตเมนต์รวมท เมื่อรันโปรแกรม ถ้ำหำกป้อนค่ำรัศมีที่มี
ค่ำน้อยกว่ำศูนย์จะได้ผลลัพธ์ดังนี้
34. จงเขียนโปรแกรมสำหรับคำนวณจำนวนเงินค่ำจ้ำง โดยมีอัตรำจ้ำงชั่วโมงละ
150 บำท โดยจะต้องทำงำน 40 ชั่วโมง แต่ถ้ำหำกทำงำนเกิน 40 ชั่วโมงใน
ชั่วโมงที่เกินจะได้ค่ำจ้ำงเพิ่มขึ้น 50 เปอร์เซ็นต์
วิธีทำ โปรแกรมจะต้องรับจำนวนชั่วโมงเข้ำไป และโปรแกรมทดสอบว่ำ
จำนวนชั่วโมงเกิน 40 หรือไม่ ถ้ำเกินให้นำจำนวนชั่วโมงที่เกินมำคิดจำนวน
เงินเพิ่มชั่วโมงละ 50 เปอร์เซ็นต์ ซึ่งทำได้โดยนำจำนวนชั่วโมงที่เกินมำคูณกับ
1.5 แล้วคูณกับค่ำจ้ำงรำยชั่วโมง
ถ้ำให้ STANDARD เป็นจำนวนชั่วโมงมำตรฐำนที่ต้องทำ,
RATE เป็นค่ำจ้ำงรำยชั่วโมง, hours เป็นชั่วโมงทำงำน สำมำรถเขียนกำร
ตรวจสอบเงื่อนไขได้ดังนี้
36. กำรใช้คำสั่ง if-else-if
กำรเขียนคำสั่งแบบเลือกทำสองทำงที่ใช้ if-else นั้นจะพบว่ำชุดคำสั่งที่อยู่
หลัง else จะถูกทำงำน
ถ้ำหำกประโยคเงื่อนไขของ if เป็นเท็จ แต่ถ้ำต้องกำรให้ตรวจสอบเงื่อนไขอื่นๆ
ก่อนที่จะทำชุดคำสั่งหลัง if-else-if แทน ตัวอย่ำงเช่น ถ้ำหำกต้องกำรเขียน
โปรแกรมในกำรคิดผลสอบของนักเรียน โดยมีเงื่อนไขเป็นถ้ำคะแนนมำกกว่ำ 50 ให้
ผ่ำน แต่ถ้ำคะแนนไม่มำกกว่ำ 50 ให้ตก สำมำรถนำคำสั่ง if-else มำใช้ได้โดยเขียน
ดังนี้
41. กำรเขียนโปรแกรมโดยกำรตรวจสอบเงื่อนไขในลักษณะด้ำนบนนั้นจะ
ใช้if ที่ไม่มี else ซึ่งจะนำตัวดำเนินกำร AND มำใช้ด้วยและจะทำให้
ผลลัพธ์เหมือนกับตัวอย่ำงในโปรแกรมที่ 3.7 แต่กำรเขียนโปรแกรมใน
ลักษณะนี้ไม่ใช่กำรเขียนโปรแกรมที่ดี เนื่องจำกโปรแกรมจะต้องตรวจสอบ
เงื่อนไขทุกครั้ง ทำให้กำรทำงำนช้ำกว่ำโปรแกรมที่ 3.7
นอกจำกนี้กำรเขียนโปรแกรมในงำนบำงประเภทจะนำคำสั่ง if ใน
ลักษณะต่ำงๆ มำซ้อน เรียกว่ำ Nested if ตัวอย่ำงเช่น กำรเขียนโปรแกรม
ในลักษณะต่อไปนี้
.
42. .
กำรทำงำนดังกล่ำวถ้ำหำกเงื่อนไขที่ 1 เป็นจริง โปรแกรมจะตรวจสอบเงื่อนไขที่ 2 และเงื่อนไขที่ 2
เป็นจริงโปรแกรมจะตรวจสอบเงื่อนไขที่ 3 ต่อไป ถ้ำเงื่อนไขที่ 2 และ 3 เป็นเท็จ โปรแกรมจะทำ
คำสั่งถัดไป แต่ถ้ำเงื่อนไขที่ 1 เป็นเท็จโปรแกรมจะทำสเตตเมนต์ที่ 2 จำกนั้นจึงทำคำสั่งถัดไป
46. คำสั่ง switch นี้จะนำค่ำใน variable มำตรวจสอบว่ำเท่ำกับค่ำคงที่ค่ำ
ใดหลัง case จำกนั้น โปรแกรมจะไปทำ statement หลังค่ำคงที่ตัวนั้น
และออกจำก switch เมื่อถึงคำสั่ง break แต่ถ้ำไม่เท่ำค่ำคงที่ค่ำใดเลย
โปรแกรมจะไปทำ statement หลัง default แต่ถ้ำหำกไม่มี
คำสั่ง break โปรแกรมจะทำงำนตำมคำสั่งทุกๆ case แม้ว่ำตัวแปร
ใน switch จะไม่ตรงกับ case สำหรับค่ำที่ใช้ตรวจสอบจะเป็นตัวแปร
นิพจน์ หรือฟังก์ชันก็ได้สำหรับในแต่ละ case สำมำรถมีคำสั่งได้มำกกว่ำ
หนึ่งคำสั่งหรืออำจไม่มีก็ได้โดยถ้ำไม่มีคำสั่งโปรแกรมจะไปทำงำน
ใน case ถัดไป ค่ำคงที่หลัง case จะต้องเป็นแบบ char, byte,
short หรือ int แล้วตำมด้วยเครื่องหมำยโคลอน(:)• .
53. กำรควบคุมกำรทำซ้ำด้วยคำสั่ง for
กำรซ้ำแบบ for หรือ loop for จะเป็นกำรให้โปรแกรมทำซ้ำจนกว่ำค่ำตัวแปรจะครบตำมที่ตั้งไว้หรือทำตำม
เงื่อนไขที่กำหนด เริ่มแรกโปรแกรมจะกำหนดค่ำเริ่มต้นให้กับตัวแปรเริ่มต้น (initialization) จำกนั้นจะตรวจสอบเงื่อนไข
ถ้ำหำกเงื่อนไขเป็นจริงจะทำสเตตเมนต์ที่ตำมมำ และปรับค่ำตัวแปรควบคุม โดยรูปแบบของคำสั่งเป็นดังนี้
รูปแบบ
ในส่วนของ condition บำงครั้งจะเรียกตัวแปรควบคุมลูป ( loop control variable ) เริ่มต้นคำสั่งจะทำ
ส่วนกำหนดค่ำเริ่มต้น (initial value) จำกนั้นจะตรวจสอบว่ำเงื่อนไขเป็นจริงหรือไม่ ถ้ำเงื่อนไขเป็นจริงจะทำตำมสเตตเมนต์
ที่จะทำซ้ำแล้วกลับมำทำส่วน update ซึ่งส่วนมำกแล้วจะเป็นกำรเพิ่มค่ำหรือลดค่ำตัวแปร จำกนั้นจะตรวจสอบเงื่อนไขใหม่
โดยทำแบบนี้ไปจนกว่ำเงื่อนไขจะเป็นเท็จ สเตตเมนต์ที่ทำซ้ำอำจเป็นสเตตเมนต์รวม (Compound Statement) ก็ได้แต่
ต้องอยู่ภำยในเครื่องหมำย { กับ }
สำหรับในส่วนของกำรกำหนดค่ำเริ่มต้น และ update มักจะเขียนเป็นคำสั่งเดียว แต่ถ้ำหำกต้องกำรใช้หลำยคำสั่งจะ
ใช้เครื่องหมำย comma คั่นระหว่ำงคำสั่ง
ตัวอย่ำงเช่น ถ้ำเขียนคำสั่งดังต่อไปนี้
54. เริ่มโปรแกรมจะใส่ค่ำเริ่มต้น 1 ลงในตัวแปร number จำกนั้นจะทดสอบเงื่อนไข
ว่ำเงื่อนไขเป็นจริงหรือไม่ ถ้ำเป็นจริงจะทำสเตตเมนต์และเพิ่มค่ำ number ขึ้นหนึ่ง
ค่ำ
ในกำรเพิ่มค่ำให้กับตัวแปรควบคุมจะเพิ่มขึ้นเป็นลำดับ โดยอำจเป็น
ตัวเลข 1,2,3,… หรืออักษร ‘A’,’B’,’C’, ก็ได้ดังนั้น กำรประกำศประเภทของตัว
แปรควบคุมจะต้องให้สอดคล้องกับค่ำของข้อมูลด้วย
ถ้ำหำกเขียนคำสั่ง for ดังต่อไปนี้
55. โปรแกรมจะพิมพ์ค่ำ counter ตั้งแต่ 1 ถึง 10 โดยเริ่มแรกใส่ค่ำให้กับตัว
แปร counter ซึ่งเป็นตัวแปรเริ่มต้นก่อน จำกนั้นจะตรวจสอบเงื่อนไข
ว่ำ counter น้อยกว่ำหรือเท่ำกับ 10 จริงหรือไม่ ถ้ำจริงจะพิมพ์ค่ำ
ใน counter และเพิ่มค่ำ counter ขึ้นอีกหนึ่งค่ำ จำกนั้นจะตรวจสอบ
เงื่อนไขใหม่ โดยกำรทำงำนสำมำรถเขียนผังงำนได้ดังนี้
56. Squares.java ตัวโปรแกรมแสดงตัวเลข 1 ถึง 10 ที่มีค่ำยกกำลังสอง
• จำกโปรแกรมชุดคำสั่งในลูปจะเป็นคำสั่งแสดงผล โดยจะใช้รหัส t ในกำรควบคุมกำรเว้นวรรค ซึ่งจะทำให้
ผลลัพธ์ที่ได้เป็นดังต่อไปนี้
•
57. กำรประกำศตัวแปรควบคุมลูป สำมำรถประกำศในคำสั่ง for เลยได้และถ้ำหำกกำร
ตรวจสอบเงื่อนไขในคำสั่ง for เป็นเท็จตั้งแต่เริ่มต้นจะทำให้ไม่มีกำรทำคำสั่งใดๆ ใน
ลูปเลย ตัวอย่ำงเช่นกำรเขียน สเตตเมนต์ต่อไปนี้
จำกชุดคำสั่งด้ำนบนจะกำหนดค่ำเริ่มต้นให้ count มีค่ำเป็น 11 แต่เมื่อตรวจสอบเงื่อนไข count <=
10 แล้วได้ผลลัพธ์เป็นเท็จ โปรแกรมจะออกนอกลูปทันที
ในกำรเขียนโปรแกรมทำซ้ำ เรำสำมำรถลดค่ำให้กับตัวแปรได้เช่น ถ้ำหำกเขียนชุดคำสั่งดังต่อไปนี้
โปรแกรมจะพิมพ์ 100 จนถึง 1
สำหรับกำรเพิ่มค่ำหรือลดค่ำให้กับตัวควบคุมลูป สำมำรถเพิ่มค่ำขึ้นครั้งละหลำยๆค่ำตำมต้องกำรได้
ตัวอย่ำงเช่นกำรเขียนคำสั่งต่อไปนี้จะพิมพ์ 0 ถึง 100โดยเพิ่มค่ำให้กับตัวแปรควบคุมลูปครั้งละ 5 ค่ำ
ถ้ำหำกต้องกำรให้สเตตเมนต์ที่จะทำงำนซ้ำเป็นสเตตเมนต์รวม จะต้องเขียนสเตตเมนต์เป็นบล็อกโดย
เขียนในเครื่องหมำย { และ } ดังตัวอย่ำงชุดคำสั่งต่อไปจะเป็นกำรเขียนโปรแกรมให้คอมพิวเตอร์แสดงตัวเลขยก
กำลังสองของค่ำ 0 ถึง 100
60. ตัวอย่ำโปรแกรมต่อไปเป็นโปรแกรมหำค่ำผลบวกของตัวเลข เมื่อรัน
โปรแกรมเครื่องจะให้ใส่ค่ำตัวเลข ถ้ำใส่เลข 5 คอมพิวเตอร์จะทำกำรบวกเลข
ตั้งแต่ 1 ไปจนถึง 5 กำรทำงำนของโปรแกรมจะประกำศตัวแปรสำหรับเก็บ
ข้อมูลผลบวกที่ชื่อว่ำ SUM โดยเริ่มต้นให้ตัวแปรนั้นมีค่ำ 0 จำกนั้นจะให้
โปรแกรม
2.ถ้ำหำกสเตตเมนต์ที่ต้องกำรให้ทำหลัง if เป็นสเตตเมนต์รวม หรือมีกำรทำ
หลำยๆ คำสั่ง จะต้องใส่เครื่องหมำยวงเล็บ เพื่อรวมสเตตเมนต์เป็นบล็อก จำก
ส่วนของโปรแกรมทำงซ้ำยมือ สเตตเมนต์รวมที่อยู่ในเครื่องหมำยปีกกำจะทำ
ทั้งหมดถ้ำหำกเงื่อนไขของ if เป็นจริง แต่ส่วนของโปรแกรมทำงขวำมือ ถ้ำ
หำกเงื่อนไขของ if เป็นจริงจะทำ bonus = 500.0สเตตเมนต์เดียวกัน
61. โปรแกรมบวกเลขตั้งแต่ 1 ถึงค่ำที่อินพุตเข้ำไป
จะใช้สำหรับบวกเลข 5 ค่ำ และแสดงผลออกทำงจอภำพ ในโปรแกรมจะให้โปรแกรมทำซ้ำ 5 ครั้ง กำรทำงำนแต่
ละครั้งเครื่องจะให้ใส่ตัวเลข และนำตัวเลขที่รับเข้ำไปบวกกับค่ำตัวแปรชื่อ SUM และเก็บผลลัพธ์ไว้
ใน SUM จำกนั้นทำซ้ำและบวกไปเรื่อยๆ จำกโปรแกรมจะเห็นว่ำลูป for จะเป็นสเตตเมนต์รวม ซึ่ง
มี { กับ } คร่อมอยู่
63. โปรแกรมนี้จะใช้ชุดคำสั่งลูป for โดยมีกำรกำหนดค่ำเริ่มต้นให้ตัวแปรสอง
ตัว และเปลี่ยนแปลงค่ำในตัวแปรสองตัวโดยตัวหนึ่งเพิ่มค่ำ อีกตัวหนึ่งลดค่ำ
จำกโปรแกรมจะเห็นว่ำกำรกำหนดค่ำให้ ตัวแปรมำกกว่ำหนึ่งตัวในลูป for จะใช้เครื่องหมำย , คั่น ในโปรแกรม
จะวนลูปไปจนกว่ำ I ไม่น้อยกว่ำ 8 โดยตัวแปร i จะเพิ่มครั้งละหนึ่งไปจนกว่ำค่ำ j จะลด ครั้งละหนึ่ง ผลกำรทำ
โปรแกรมจะเป็นดังนี้
68. ลูปซ้อนลูป (Nested Loops)
• ในกำรเขียนโปรแกรมสำมำรถนำคำสั่งลูปแบบต่ำงๆ ให้มำทำงำนซ้อนกันได้เรียกว่ำลูปแบบซ้อนลูปดังตัวอย่ำงต่อไปนี้
Public class Nestedloop1 {
Public static void main(String[ ] args)
{
for(int i = 1; i < = 3; i ++)
for(int j = 1; j < = 3; j ++)
System.out.print(j + “ “);
}
}
70. .• โปรแกรมต่อไปนี้จะเป็นกำรนำเครื่องหมำย * มำพิมพ์เป็นรูปสำมเหลี่ยมทำงจอภำพ โดยจะ ออกแบบโปรแกรมให้ทำงำนแบบลูปซ้อนลูป โดยลูปที่
หนึ่งให้ทำลูปในหนึ่งครั้ง ลูปที่สองให้ทำลูปในสองครั้งไปเรื่อยๆ ในกำรทำลูปแต่ละครั้งนั้นจะพิมพ์เครื่องหมำย * หนึ่งตัว เมื่อทำลูปในครบแล้วจะขึ้น
บรรทัดใหม่
Public class Star {
Public static void main(String[ ] args)
{
for(int i = 1; i < = 8; i ++){
for(int j = 1; j < = i; j ++)
System.out.print( “ * “);
System.out.print();
}
}
}
71. คำสั่ง break และ continue
• จำกตัวอย่ำงทำซ้ำแบบ for โปรแกรมที่ 3.15 ได้ทดลองคำสั่ง break มำบ้ำงแล้ว โดยคำสั่งนี้สำมำรถใช้
งำนร่วมกับ while , for , do/while หรือ switch ได้ สำหรับคำสั่งที่ทำงำนตรงกันข้ำมกับ
คำสั่ง break คือคำสั่ง continue ซึ่งสำมำรถใช้ได้ใน while , for หรือ do/while ได้เช่นกัน
เมื่อโปรแกรมทำงำนมำถึงคำสั่ง continue จะทำลูปต่อไปโดยไม่ทำสเตตเมนต์ที่
ตำมหลัง continue โปรแกรมที่ 3.23 แสดงตัวอย่ำงกำรใช้ break โดยถ้ำเงื่อนไขของ if เป็นจริงจะ
ออกนอกลูปทันที ส่วนโปรแกรม 3.24 จะแสดงตัวอย่ำงกำรใช้คำสั่ง continue
72. • จำกตัวอย่ำงทำซ้ำแบบ for โปรแกรมที่ 3.15 ได้ทดลองคำสั่ง break มำบ้ำงแล้ว โดยคำสั่งนี้สำมำรถใช้งำนร่วมกับ while , for , do/while หรือ switch ได้ สำหรับคำสั่งที่ทำงำนตรงกัน
ข้ำมกับ คำสั่ง break คือคำสั่ง continue ซึ่งสำมำรถใช้ได้ใน while , for หรือ do/while ได้เช่นกัน เมื่อโปรแกรมทำงำนมำถึงคำสั่ง continue จะทำลูปต่อไปโดยไม่ทำสเตตเมนต์ที่
ตำมหลัง continue โปรแกรมที่ 3.23 แสดงตัวอย่ำงกำรใช้ break โดยถ้ำเงื่อนไขของ if เป็นจริงจะออกนอกลูปทันที ส่วนโปรแกรม 3.24 จะแสดงตัวอย่ำงกำรใช้คำสั่ง continue
Public class BrekDemo {
Public static void main(String[ ] argd){
int num = 100;
for(int i = 0; i < num; i ++){
if (i*i > = num)break;
System.out.print(i+ “ “);
}
System.out.print(“Loop complete. “);
}
}
}
.
73. .
• โปรแกรมนี้จะสร้ำงลูปแบบ for ขึ้นมำทำงำนแบบวนซ้ำโดยนับตัวแปร i ตั้งแต่ 0 ไปจนถึง 10 ในกำรวนซ้ำแต่ละครั้งจะตรวจสอบเงื่อนไขของ if ว่ำตัว
แปร I ยกกำลังสองมีค่ำมำกกว่ำ num จริงหรือไม่ ถ้ำเป็นจริงจะออกนอกลูป
• กำรทำลูปแต่ละครั้งจะแสดงผลค่ำ i ออกมำ เมื่อทำลูปจน i
• มีค่ำเป็น10 โปรแกรมจะหยุดพิมพ์ ผลลัพธ์เป็นดังนี้
Public class ContDemo {
Public static void main(String[ ] args)
{
for(int i = 0; i < 100; i ++)
if ((i%2 continue;
System.out.print(i);
}
}
}
76. .
• พิจำรณำส่วนของโปรแกรมต่อไปนี้ซึ่งส่วนประกอบของโปรแกรมหำผลคูณของเลขคี่ที่อยู่ระหว่ำง
ตัวเลข 1 ถึง 100
จำกโปรแกรมที่เขียนขึ้นจะเห็นว่ำจะประกำศตัวแปร product เป็นประเภท long ถ้ำหำกประกำศตัว
แปรนี้เป็นประเภท int จะให้คำตอบไม่ถูกต้อง เนื่องจำกค่ำผลลัพธ์ของ product ที่ได้จะมีค่ำมำกกว่ำ
จำนวนข้อมูลที่ตัวแปรแบบ integer จะเก็บได้ และถ้ำหำกมีกำรประกำศตัวแปรนี้เป็น
• ก็จะเกิดข้อผิดพลำดขึ้นเช่นกัน เนื่องจำกไม่ได้กำหนดค่ำเริ่มต้นให้กับตัวแปรนี้ซึ่งจะทำให้ไม่สำมำรถ
คำนวณ product = product * I; ได้
• จำกโปรแกรมนี้ค่ำตัวเลขค่ำสูงสุดจะเป็น 99 แต่ผู้เขียนโปรแกรมมีโอกำสเข้ำใจผิดโดยเขียนในลักษณะนี้ได้
77. .
• กำรเขียนโปรแกรมในลักษณะตัวอย่ำงด้ำนบนนี้จะเป็นกำรคำนวณค่ำ 3*5*7....97 เนื่องจำกในลูปสุดท้ำย
ค่ำของ i มีค่ำเป็น 99 ซึ่งทำให้เงื่อนไขของ while เป็นเท็จ ซึ่งเป็นข้อผิดพลำดในขณะตรวจสอบเงื่อนไข
ข้อผิดพลำดลักษณะนี้เรียกอีกอย่ำงหนึ่งว่ำ off-by-one-error
• จำกปัญหำเดียวกันนี้ถ้ำหำกเขียนกำรตรวจสอบเงื่อนไขผิดพลำดก็อำจทำให้โปรแกรมทำลูปซ้ำไม่รู้จบได้
อย่ำงเช่นกำรเขียนคำสั่งดังต่อไปนี้
78. .
• จำกโปรแกรมจะทำซ้ำแล้วเพิ่มค่ำ i ไปเรื่อยๆ แต่โปรแกรมจะทำซ้ำไม่หยุด เนื่องจำกตัวแปร i จะไม่มีโอกำส
เท่ำกับ 100 นอกจำกนี้ยังมีโอกำสเป็นไปได้ที่ผู้เขียนโปรแกรมจะเขียนโปรแกรมปรับตัวแปรควบคุมผิดที่
ภำยในลูป อย่ำงเช่นตัวอย่ำงต่อไปนี้
จำกส่วนของโปรแกรมด้ำนบนจะปรับค่ำ I ก่อนที่จะทำกำรคูณ ซึ่งจะทำให้เป็นกำรหำค่ำของ
5*7*9.......*99*101
79. .
• จำกกำรเขียนโปรแกรมที่ผ่ำนมำได้ศึกษำวิธีกำรรับข้อมูลทำงคีย์บอร์ดมำบ้ำงแล้ว โดยใช้เมธอดใน
คลำส Scanner ในภำษษจำวำยังสำมำรถรับค่ำทำงคีย์บอร์ดได้อีกหลำยวิธี อีกวิธีหนึ่งที่นิยมใช้กัน
ได้แก่ กำรใช้เมธอด read เป็นเมธอดที่อยู่ในคลำส System กำรใช้งำนจะต้องเรียกใช้
แพ็กเกจ java.io และรับข้อมูลได้จำกกำรเขียนคำสั่งเป็น System.in.read กำรใช้เมธอดนี้จะรับ
ข้อมูลเป็นตัวอักษร 1 ตัว จำกนั้นข้อมูลที่รับเข้ำมำจะถูกแปลงไปเป็นรหัส ASCII โดยอัตโนมัติ กำรเรียกใช้
คำสั่งนี้จะมีกำรตรวจจับควำมผิดพลำดในกำรรับข้อมูลด้วย ซึ่งผู้เขียนโปรแกรมจะต้องใช้คำสั่ง throws
IOException ต่อจำกเมธอด main ด้วย ดังตัวอย่ำง
ผลลัพธ์โปรแกรมเป็นดังนี้ถ้ำหำกคีย์เข้ำไป
80. .
• กำรเรียกใช้ System.in.read นั้นจะรับตัวอักขระได้ตัวเดียว ถ้ำหำกต้องกำรรับหลำยตัวสำมำรถนำ
คำสั่งกำรทำซ้ำมำใช้ได้ และในกำรใช้เมธอดนี้ถ้ำหำกไม่เรียก java.io.* ด้วยคำว่ำ import ในส่วน
หัวของโปรแกรมแล้วก็สำมำรถเรียกใช้ต่อจำก throws ได้
ผลลัพธ์จำกกำรทำโปรแกรมโดยกดตัวอักขระไปทีละตัว
81. .• ตัวอย่ำงโปรแกรมนี้เป็นกำรทำงำนในลักษณะแสดงเมนูให้เลือกทำ ถ้ำหำกไม่กดตัวเลขตำมเมนูที่ กำหนด
โปรแกรมจะวนซ้ำให้ป้อนข้อมูลใหม่
โปรแกรมนี้เมื่อรันโปรแกรมจะแสดงเมนูให้เลือก 5 ตัวเลือก โดยให้ผู้
ใช้ป้อนตัวเลข 1 ถึง 5 เข้ำไป ถ้ำหำกไม่ป้อนตัวเลขในช่วงนี้โปรแกรมจะวนลูป
ให้ป้อนตัวเลขใหม่ ถ้ำหำกป้อนตัวเลข 3 ผลลัพธ์ของโปรแกรมจะเป็นดังนี้
จำกตัวอย่ำงที่ผ่ำนมำ ผู้เขียนโปรแกรมสำมำรถนำไปใช้เป็นพื้นฐำนในกำรออกแบบให้ทำงำนในลักษณะเมนูได้
โดยถ้ำหำกมีกำรเลือกเมนูใดก็ให้โปรแกรมไปทำงำนตำมที่เลือกต่อไป โดยนำกำรเลือกทำแบบ switch..
case มำใช้ในกำรเลือกต่อไป
83. 2. นิพจน์การตรวจสอบเงื่อนไขที่ตามหลัง if จะเป็นข้อมูลแบบใด *
• ก. ทำงตรรก
• ข. แบบเงื่อนไข
• ค. กำหนดค่ำ
• ง. ดำเนินกำร
3. คาสั่ง switch..case สามารถใช้ได้ในกรณีใด *
• ก. เงื่อนไขที่มีกำรกำหนดค่ำ
• ข. เงื่อนไขที่ต้องตัดสินใจขึ้นกับตัวแปรเดียว
• ค. เงื่อนไขที่ถูกควบคุมกลุ่มตัวแปร
• ง. เงื่อนไขที่ต้องแสดงผลลัพธ์ของคำสั่ง
84. 4. ถ้าเขียนโปรแกรมเป็นลักษณะเมนูควรใช้คาสั่งแบบใด *
• ก. แบบ switch
• ข. แบบ if
• ค. แบบ loop
• ง. แบบ while
5. คาสั่ง switch แตกต่างจากคาสั่ง if อย่างไร *
• ก. if คำสั่งเลิกทำอย่ำงใดอย่ำงหนึ่ง switch คำสั่งเลือกทำจะต้องมีกำรตรวจสอบเงื่อนไขก่อน
• ข. if คำสั่งเลือกทำจะต้องมีกำรตรวจสอบเงื่อนไขก่อน switch คำสั่งเลิกทำอย่ำงใดอย่ำงหนึ่ง
• ค. switch ตรวจสอบเฉพำะควำมสัมพันธ์หรือลอจิกเท่ำนั้น if สำมำรถทดสอบคำสั่งได้หลำยอย่ำง
• ง. switch สำมำรถทดสอบคำสั่งได้หลำยอย่ำง if ตรวจสอบเฉพำะควำมสัมพันธ์หรือลอจิกเท่ำนั้น
85. 6. ตัวแปรที่ใช้เลือกทาที่อยู่ตามหลัง switch จะต้องเป็นตัวแปรประเภทใด *
• ก.ตัวอักษร
• ข. ทศนิยม
• ค.จำนวนเต็ม
• ง. ลูป
7. ถ้าหากเงื่อนไขที่ตรวจสอบเป็นจริงตลอดจะทาให้การทางานในลูปทาซ้าแบบไม่รู้จบ เรียกว่า
อะไร *
• ก. loop for
• ข. infinite loop
• ค. while loop
• ง. statement loop
86. 8. ลูปแบบ do..while หลังการตรวจสอบเงื่อนไขจะต้องมีเครื่องหมายใด *
• ก. case
• ข. semicolon
• ค.system
• ง. println
9. ในภาษาจาวามีคาสั่งลูปกี่ประเภท ได้แก่อะไรบ้าง *
• ก. 2 ประเภท ได้แก่ ลูปแบบ while ลูปแบบ for
• ข. 2 ประเภท ได้แก่ ลูปแบบ switch ลูปแบบ if
• ค. 3 ประเภท ได้แก่ ลูปแบบ switch ลูปแบบ if ลูปแบบ case
• ง. 3 ประเภท ได้แก่ ลูปแบบ while ลูปแบบ for ลูปแบบ do..while
88. สมำชิก
1.นำยสยำมรัฐ สุภำพ ชั้นมัธยมศึกษำปีที่ 6/2 เลขที่ 1
2นำย จิตวัต กัญญำดี ชั้นมัธยมศึกษำปีที่ 6/2 เลขที่ 4
3.นำย ภำนุวัฒน์ เปลี่ยนพุ่ม ชั้นมัธยมศึกษำปีที่ 6/2 เลขที่ 5
4.นำย รณกร สำเนียงแจ่ม ชั้นมัธยมศึกษำปีที่ 6/2 เลขที่ 7
5.นำงสำว กำญจนำ ไพรวัน ชั้นมัธยมศึกษำปีที่ 6/2 เลขที่ 9
6.นำงสำว รัชนีกร แช่มเล็ก ชั้นมัธยมศึกษำปีที่ 6/2 เลขที่ 15