ความหมายคาสั่งการทางานแบบวนรอบ คาสั่งที่ทางานแบบวนรอบ(Loop) คือการทางานในลักษณะคาสั่ง หรือกลุ่มคาสั่งเดิมซ้าๆ จนกระทั่ง ได้เงื่อนไขตามที่ต้องการ นิยมใช้ในโปรแกรมที่มีการประมวลผลซ้าๆ เช่น การนับจานวน การคานวณ สมการแบบเชิงเส้น และการประมวลผลที่ไม่ทราบค่าจานวนครั้งที่แน่นอน เป็นต้น นอกเหนือจากนั้นยังมี ประโยชน์อีกอย่างคือช่วยให้รหัสโปรแกรมที่ต้องเขียนคาสั่งเดิมแต่เปลี่ยนค่าบางส่วนซ้าๆ สั้นลง (เช่น แสดงค่า 1 ถึง 100 ไม่ต้องเขียนคาสั่งถึง 100 คาสั่ง)
ประเภทของคาสั่งการทางานแบบวนรอบ ประเภทของคาสั่งการทางานแบบวนรอบจะแบ่งได้เป็น 2 ประเภทใหญ่ๆ คือ 1. วนรอบซาด้วยจานวนรอบที่แน่นอน ได้แก่ 1.1. คาสั่ง For…Next (วนรอบจนกระทั่ง ค่าตัวแปรนับเท่ากับค่าสิ้นสุด) 2. วนรอบซาโดยไม่ทราบจานวนรอบที่แน่นอน ได้แก่ 2.1. คาสั่ง While…Wend (ตรวจสอบเงื่อนไขก่อนถ้าจริง ให้ทาคาสั่งซ้า) 2.2. คาสั่ง Do…Loop Until (ทาคาสั่งแล้วตรวจสอบเงื่อนไข ถ้าเท็จให้กลับไปทาซ้า) 2.3. คาสั่ง Do While …Loop (ตรวจสอบเงื่อนไขก่อนถ้าจริง ให้ทาคาสั่งซ้า) 2.4. คาสั่ง Do Until …Loop (ตรวจสอบเงื่อนไขก่อนถ้าเท็จ ให้ทาคาสั่งซ้า) 2.5. คาสั่ง Do…Loop While (ทาคาสั่งแล้วตรวจสอบเงื่อนไข ถ้าจริงให้กลับไปทาซ้า) หมายเหตุ ในบทนี้ จะกล่าวถึงการวนรอบในหัวข้อที่ 1.1 , 2.1 และ 2.2 เนื่องจากสามารถ ประยุกต์ใช้แทนคาสั่งที่เหลือ(2.3 ถึง 2.5 ) ซึ่งมีหลักการทางานคล้ายคลึงกันจะไม่สามารถแก้ไขข้อความได้
คาสั่ง For…Next เป็นการวนรอบที่แน่นอนโดยการระบุค่าเริ่มต้นและสิ้นสุดภายในคาสั่ง และสามารถกาหนด Step ในการเพิ่มหรือลดค่าได้ รูปแบบ For ตัวแปรนับรอบ = ค่าเริ่มนับ To ค่าสิ้นสุดการนับ คาสัง่ ทีจ่ ะทาซ้า Next ชื่อตัวแปรนับรอบ ตัวอย่างที่ 1 แบบนับจานวนรอบตั้งแต่ 1 ถึง 10 เพิ่มค่าครั้งละ 1 คาอธิบาย กาหนดให้มีการวนรอบจานวน 10 รอบเริ่มจาก 1 ถึง 10 โดยทุกๆ รอบจะมีการแสดง ค่าในตัวแปร Count ออกทางหน้าต่าง Immediate
ตัวอย่างที่ 2 แบบนับจานวนรอบตั้งแต่ 1 ถึง 10 เพิ่มค่าครั้งละ 2 For Count = 1 To 10 Step 2 Debug.Print Count คาอธิบาย กาหนดให้มีการวนรอบเริ่มจาก 1 ถึง 10 โดยทุกๆ รอบจะมีการเพิ่มค่า ครั้งละ 2 และ แสดงค่าในตัวแปร Count ออกทางหน้าต่าง Immediate ได้เป็น 1 3 5 7 9 ซึ่งจานวน รอบที่ได้คือ 5 รอบ ตัวอย่างที่ 3 แบบนับจานวนรอบถอยหลังตั้งแต่ 10 มายัง 1 โดยลดค่าครั้งละ -2 For Count = 10 To 1 Step -2 Debug.Print Count Next Count คาอธิบาย กาหนดให้มีการวนรอบถอยหลังตั้งแต่ 10 มายัง 1 โดยทุกๆ รอบจะมีการลดค่าลง ครั้ง ละ 2 และ แสดงค่าในตัวแปร Count ออกทางหน้าต่าง Immediate ได้เป็น 10 8 6 4 2 ซึ่งจานวน รอบที่ได้คือ 5 รอบ ขันตอนมีดังนี 1. เข้าโปรแกรม Visual Basic 2. คลิกที่ Program > Microsoft Visual Basic6.0 > 3. เลือก Standard EXE คลิกที่ 4. กาหนดคาสั่งตามเหตุการณ์เมื่อเกิดเหตุการณ์ Form Load (เมื่อฟอร์มถูกเรียกให้ทางาน) 5. ดับเบิลคลิกบนพื้นที่ของ Form1 จะปรากฏหน้าต่างรหัสโปรแกรม(Code) 6. คลิกเลือกเหตุการณ์ Load 7. พิมพ์คาสั่งดังต่อไปนี้ ขันตอนมีดังนี 8. เข้าโปรแกรม Visual Basic 9. คลิกที่ Program > Microsoft Visual Basic6.0 > 10. เลือก Standard EXE คลิกที่ 11. กาหนดคาสั่งตามเหตุการณ์เมื่อเกิดเหตุการณ์ Form Load (เมื่อฟอร์มถูกเรียกให้ทางาน) 12. ดับเบิลคลิกบนพื้นที่ของ Form1 จะปรากฏหน้าต่างรหัสโปรแกรม(Code) 13. คลิกเลือกเหตุการณ์ Load 14. พิมพ์คาสั่งดังต่อไปนี้
คาสั่ง Do…Loop Until เป็นคาสั่งที่มีการทาคาสั่งในวงรอบก่อน แล้วจึงตรวจสอบเงื่อนไข ถ้าเป็นจริง(True) จะทาคาสั่ง หลัง Loop Until แต่ถ้าเป็นเท็จ(False) จะกลับไปทาคาสั่งที่ต่อจาก Do ซ้า ซึ่งก่อนการวนรอบจะต้อง กาหนดค่าเริ่มต้นให้กับตัวแปรที่ใช้ในการตรวจสอบเงื่อนไข Do คาสั่ง(ถ้าเงื่อนไขเป็นจริงจะออกจาก Loop แต่ถ้าเป็นเท็จจะทาคาสั่งซ้า) Loop Until เงื่อนไข ตัวอย่างที่ 1 วนรอบจนกว่าค่าในตัวแปร Count จะเท่ากับ 10 Count = 1 Do Debug.Print Count Count = Count + 1 Loop Until Count = 10 รูปแบบ
คาอธิบาย กาหนดให้มีการวนรอบโดยรอบที่ 1 จะทาคาสั่ง Debug.Print Count (ค่า Count ออก ทางหน้าต่าง Immediate) และเพิ่มค่า Count อีก 1 แล้วจึงตรวจสอบเงื่อนไขคือ ถ้าค่า ในตัวแปร Count เท่ากับ 10 ให้จบการวนรอบ ซึ่งผลที่แสดงค่า Count ค่าสุดท้ายคือ 9 ไม่ใช่ 10 เพราะในรอบที่ Count เท่ากับ 9 ก่อนการตรวจสอบเงื่อนไขจะมีการเพิ่มค่า Count อีก 1 เป็น 10 ทาให้เงื่อนไขเป็นจริง จึงไม่มีการวนกลับไปแสดงค่าของ Count จึงเป็นผลให้ไม่ปรากฏค่า 10 เป็นค่าสุดท้าย ตัวอย่างการเขียนโปรแกรมวนรอบแบบ Do…Loop Until
ขั้นตอนมีดังนี้ 1. เข้าโปรแกรม Visual Basic 2. คลิกที Program > Microsoft Visual Basic6.0 > 3. เลือก Standard EXE คลิกที่ 4. กาหนดคาสั่งตามเหตุการณ์เมื่อเกิดเหตุการณ์ Form Load (เมื่อฟอร์มถูกเรียกให้ทางาน) 5. ดับเบิลคลิกบนพื้นที่ของ Form1 จะปรากฏหน้าต่างรหัสโปรแกรม(Code) 6. คลิกเลือกเหตุการณ์ Load 7. พิมพ์คาสั่งดังต่อไปนี้ 8. กดแป้นพิมพ์ F5 (Run โปรแกรม หรือคลิก ที่แถบเครื่องมือด้านบน) 9. จะปรากฏหน้าต่างรับข้อความ(InputBox) นักศึกษาทดลองพิมพ์คาว่า 55555 แล้วคลิกที่ปุ่ม จะพบว่ายังพบหน้าต่างรับ
ข้อแนะนาในการเขียนโปรแกรมแบบวนรอบ 1. กรณีที่ทราบจานวนรอบที่แน่นอนควรใช้คาสั่ง For…Next 2. กรณีที่ไม่ทราบจานวนรอบที่แน่นอนควรใช้คาสั่ง While…Wend, Do…Loop Until, Do While …Loop, Do Until …Loop, Do…Loop While ตามความเหมาะสม 3. ในการวนรอบซ้าโดยไม่ทราบจานวนรอบที่แน่นอน ต้องมีการกาหนดค่าเริ่มต้นให้กับตัวแปรที่ นาไปเป็นเงื่อนไขและต้องเป็นค่าที่สอดคล้องกับเงื่อนไขให้วงรอบสามารถเริ่มการทางานได้ 4. ในขณะที่มีการวนรอบค่าตัวแปรที่เป็นเงื่อนไขจะต้องมีคาสั่งรับหรือเปลี่ยนแปลงค่าในตัว แปร เช่น เพิ่ม – ลดค่า เพื่อให้สอดคล้องกับเงื่อนไขของวงรอบ 5. ตัวแปรที่เป็นเงื่อนไขในการวนรอบจะต้องมีชนิดหรือช่วงที่สอดคล้องกับค่าของเงื่อนไขที่นามา เปรียบเทียบ 6. ต้องแน่ใจว่าเมื่อเข้าสู่วงรอบ(Loop) แล้วสามารถออกจากวงรอบ(Loop) ได้ มิฉะนั้นจะกลายเป็น การวนรอบที่ไม่สิ้นสุด