การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while บทที่ 5 การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
โครงสร้างควบคุม (Control Structure) การควบคุมโปรแกรมให้ทำงานได้ตามต้องการ เราจำเป็นต้องมีความเข้าใจเกี่ยวกับโครงสร้างควบคุมของการเขียนภาษาโปรแกรม ประกอบด้วย ลำดับการทำงาน (Sequence) ทางเลือก,ตัดสินใจ (Decision) การวนซ้ำ (Iteration)
การเขียนโปรแกรมแบบ วนซ้ำ คำสั่ง for คำสั่ง while คำสั่ง do..while
ลูป while จะทำการตรวจสอบเงื่อนไขก่อน หากพบว่าเงื่อนไขเป็นเท็จจะไม่เข้าไปทำ Statement(คำสั่ง) ภายในลูป
เปลี่ยนแปลงค่าตัวแปร คำสั่ง while start กำหนดค่าเริ่มต้น เงื่อนไข เท็จ เปลี่ยนแปลงค่าตัวแปร จริง คำสั่งต่าง ๆ คำสั่งถัดไป End
โจทย์ : ให้แสดงข้อมูล 1,2,3,.. ,100 (คำสั่ง while) start int num=1 num<=100 เท็จ num++ จริง Print num End
คำสั่งในลูป ; //สามารถมีได้มากกว่า 1 คำสั่ง คำสั่งเปลี่ยนแปลงค่า; } คำสั่ง while รูปแบบ กำหนดค่าเริ่มต้น; while(เงื่อนไข){ คำสั่งในลูป ; //สามารถมีได้มากกว่า 1 คำสั่ง คำสั่งเปลี่ยนแปลงค่า; }
ตัวอย่าง ให้แสดงข้อมูล 20,15,10,5,0 int x=20; while(x>0) { System.out.println(x); x=x-5; } System.out.println(“End Program”); 20 15 10 5 End Program
ระหว่างเลข 1 – 100 ให้แสดงเฉพาะเลขคู่ แบบฝึกหัด ให้แสดงข้อมูล 1-100 ระหว่างเลข 1 – 100 ให้แสดงเฉพาะเลขคู่ เขียนโปรแกรมให้รับค่าข้อมูลตัวเลขแล้วแสดงค่าตัวเลขนั้น ทางหน้าจอแต่ถ้าระบุตัวเลขเป็น 999 จึงหยุด
ฝึกเขียนคำสั่ง ในแต่ละ Loop ให้แสดงคำว่า “ Ture ” จากนั้นสอบถาม User ว่าต้องการให้แสดงข้อความอีกหรือไม่ ถ้า User input y หรือ Y ให้แสดงข้อความอีก ถ้า input ข้อมูลอื่นๆให้ ออกจากโปรแกรม
ตัวอย่างแบบ ที่ 1 :
แนะนำคำสั่ง ตรวจสอบการมีค่าเท่ากันของ ข้อความ(String) ตัวอย่าง String x=“yes”; โจทย์ต้องการทราบว่า ข้อความที่เขียน คือข้อความ yes ใช่หรือไม่ รูปแบบ ตัวแปร.equals(ข้อความที่ต้องการ) x.equals(“yes”) ผลที่ได้จากคำสั่งนี้คือ true,false หมายเหตุ : ค่าเริ่มต้นของตัวแปรประเภท String คือ null
ตัวอย่างแบบ ที่ 2 :
1. ให้รับค่าข้อมูลคะแนน ทางแป้นพิมพ์ทีละคน จากนั้นแสดงผลคะแนนดังกล่าว โจทย์ 1. ให้รับค่าข้อมูลคะแนน ทางแป้นพิมพ์ทีละคน จากนั้นแสดงผลคะแนนดังกล่าว 2. สอบถามผู้ใช้ว่าต้องการทำงานต่อ หรือไม่(Y/N) ถ้า Y ให้รับค่าข้อมูลคนต่อไป ถ้า N ให้ออกจากโปรแกรม
โปรแกรม
โจทย์ ให้รับค่าข้อมูล ชื่อ และคะแนนสอบทางแป้นพิมพ์ทีละคน ถ้าคะแนน 50 ขึ้นไปคือสอบผ่าน ถ้าน้อยกว่า 50 คือสอบไม่ผ่าน จากนั้นสอบถามผู้ใช้ว่า ต้องการทำงานต่อหรือไม่(Y/N) ถ้า Y ให้รับค่าข้อมูลคนต่อไป ถ้า N ให้ออกจากโปรแกรม กรุณาระบบชื่อ : som กรุณาระบุคะแนน : 77 ผลสอบของ som คือ : Pass ต้องการทำงานต่อหรือไม่ [y/n] : y กรุณาระบบชื่อ : yai กรุณาระบุคะแนน : 30 ผลสอบของ yai คือ : Fail ต้องการทำงานต่อหรือไม่ [y/n] : n End Progam
ตัวอย่างโปรแกรม
โจทย์สำหรับนักศึกษา ข้อ 1) ให้รับค่าข้อมูล ชื่อ และคะแนนสอบทางแป้นพิมพ์ทีละคน ถ้าคะแนน 50 ขึ้นไปคือสอบผ่าน จากนั้นสอบถามผู้ใช้ว่า ต้องการออกจากโปรแกรมหรือไม่ (Y/N) ? ถ้า Y ให้ออกจากโปรแกรม ถ้า N ให้รับค่าข้อมูลคนต่อไป y
โจทย์สำหรับนักศึกษา ข้อ 2 ) เขียนโปรแกรมรับข้อมูลปีเกิด (ระบุเป็นปี พ.ศ.) จากนั้นนำไปคำนวณอายุ แล้วแสดงผล (ถ้าระบุ ปีมากกว่าหรือเท่ากับปี ปัจจุบันให้แสดงข้อความเตือน ว่า “ท่านระบุข้อมูลผิด” หลังจากแสดงผล อายุ ให้สอบถามว่า ท่านต้องการออกจากโปรแกรมหรือไม่ [Y/N] ถ้า y ให้ออกจากโปรแกรม ถ้า n ให้กลับไปสอบถาม ปีเกิดใหม่อีกครั้ง
โจทย์สำหรับนักศึกษา ข้อ 3) จงเขียนโปรแกรมคำนวณผลบวก ลบ คูณ และหาร จากตัวเลข 2 ตัวที่รับเข้าไปจากผู้ใช้แล้วนำตัวเลข 2 ตัวนี้ไปคำนวณผลตามที่ผู้ใช้ต้องการโดยให้ผู้ใช้เลือกจากหัวข้อดังนี้ 1. Plus (บวก) 2. Subtract (ลบ) 3. Multiply (คูณ) 4. Divide (หาร) 5. End Program (ออกโปรแกรม)
แนะนำคำสั่ง break และ continue
break continue คำสั่งต่าง ๆ คำสั่งต่าง ๆ break; continue; คำสั่งต่าง ๆ เงื่อน ไข เงื่อน ไข จริง จริง เท็จ เท็จ คำสั่ง นอกลูป คำสั่ง นอกลูป
ตัวอย่าง ทดสอบ break ,continue…. (1) เขียนคำสังแสดงตัวเลข 1 10
ตัวอย่าง ทดสอบ break ,continue….(2) เขียนคำสังแสดงตัวเลข 1 ถึง 10 แต่ไม่แสดงข้อมูล 4 และ 7
ตัวอย่าง ทดสอบ break ,continue….(3) จากตัวเลข 1 ถึง 10 ให้แสดงข้อมูล แต่ถ้าข้อมูลเป็นเลข 7 ให้จบโปรแกรม
ตัวอย่าง ทดสอบ break ,continue
โดยจะวางนิพจน์ทดสอบค่า(เงื่อนไข)ไว้ตอนท้ายของ Loop การใช้ do…. while การใช้ do..while นั้น จะใช้เมื่อเราต้องการเข้าสู่การทำงานของลูป (Loop) อย่างน้อย 1 ครั้ง โดยจะวางนิพจน์ทดสอบค่า(เงื่อนไข)ไว้ตอนท้ายของ Loop
กำหนดค่าตัวแปรเริ่มต้น ตัวแปรเปลี่ยนแปลงค่า คำสั่ง do…while start กำหนดค่าตัวแปรเริ่มต้น คำสั่งต่าง ๆภายในลูป ตัวแปรเปลี่ยนแปลงค่า จริง เท็จ เงื่อนไข End
โจทย์ : ให้แสดงข้อมูล 1,2,3,.. ,100 (คำสั่ง do…while) start int num=1 Print num num++ num<=100 จริง เท็จ End
คำสั่ง do…while รูปแบบ ตัวแปรกำหนดค่าเริ่มต้น do{ คำสั่งในลูป; //สามารถมีได้มากกว่า 1 คำสั่ง คำสั่งเปลี่ยนแปลงค่า; } while(เงื่อนไข);
เปรียบเทียบ
โจทย์ แสดงข้อมูล 1-100 2. เขียนโปรแกรมให้รับค่าข้อมูลตัวเลขแล้วแสดงค่าตัวเลขนั้น ทางหน้าจอแต่ถ้าระบุตัวเลขเป็น 999 จึงหยุด
โจทย์ จงเขียนโปรแกรมสามารถรับค่าตัวเลขได้เรื่อย ๆไม่จำกัดจำนวนรอบ เมื่อ User ต้องการจบการทำงาน ให้ป้อนเลข 0 จากนั้น แสดงผลรวม (sum) ตัวเลขทั้งหมดที่ป้อนเข้าไป และข้อความ “Bye..Bye..End of Program”
ตัวอย่าง โปรแกรม
โจทย์ เขียนโปรแกรมให้สามารถระบุจำนวน ที่ต้องการ input คะแนน จากนั้นนำคะแนนที่ input ไปตัดเกรด 0-49 F 50-59 D 60-69 C 70-79 B 80-100 A เมื่อครบจำนวน ให้แสดงข้อมูล คะแนนและผลเกรดที่ได้
ตัวอย่างโปรแกรม
โจทย์สำหรับนักศึกษา ข้อ 4) ให้รับข้อมูลราคา สินค้า(รับทศนิยมได้) และจำนวนสินค้าที่ซื้อของรายการนั้น โดยสามารถรับราคา และจำนวน ไม่จำกัดจำนวนรอบ จนกระทั้ง ผู้ใช้ ป้อนข้อมูลเป็น 000 จึงสรุป ผลรวมของยอดเงิน ที่ต้องจ่าย
ให้นำโจทย์ที่ให้เขียนโปรแกรม นำไปเขียน เป็น Flow Chart การบ้านเพิ่มเติม ให้นำโจทย์ที่ให้เขียนโปรแกรม นำไปเขียน เป็น Flow Chart
โจทย์ : ให้แสดงข้อมูล 1,2,3,.. ,100 (คำสั่ง do…while) start int num=1 Print num num++ num<=100 จริง เท็จ End
โจทย์ : ให้แสดงข้อมูล 1,2,3,.. ,100 (คำสั่ง while) start int num=1 num<=100 เท็จ num++ จริง Print num End