บทที่ 9 โครงสร้างการควบคุมการวนรอบ
วนซ้ำหรือวนรอบ คือ กลุ่มของคำสั่งที่คอมพิวเตอร์ดำเนินการหลายๆ รอบจนกระทั่งพบเงื่อนไขการจบงาน
*เราไม่สามารถรู้จำนวนการทำซ้ำได้เนื่องจาก การรวนซ้ำขึ้นอยู่กับการป้อนค่าจากผู้ใช้
การวนซ้ำแบบนี้ เรียนกว่า การวนซ้ำไม่รู้จบ เพราะไม่สามารถรู้จำนวนรอบที่แน่นนอนในการวนซ้ำจากผู้ใช้
วนซ้ำหรือวนรอบ คือ กลุ่มของคำสั่งที่คอมพิวเตอร์ดำเนินการหลายๆ รอบจนกระทั่งพบเงื่อนไขการจบงาน
*เราไม่สามารถรู้จำนวนการทำซ้ำได้เนื่องจาก การรวนซ้ำขึ้นอยู่กับการป้อนค่าจากผู้ใช้
การวนซ้ำแบบนี้ เรียนกว่า การวนซ้ำไม่รู้จบ เพราะไม่สามารถรู้จำนวนรอบที่แน่นนอนในการวนซ้ำจากผู้ใช้
การวนซ้ำแบบ while
การวนซ้ำที่ไม่รู้จบจะใช้คำสั่ง while ในการทำงาน ตัววนซ้ำ จะอยู่ระหว่าเครื่องหมาย ก้ามปู “{ }” ถ้าภายในลูปมีคำสั่งเดียวไม่จำเป็น
โครงสร้างของการใช้งานแต่ละคำสั่ง
while ( condition ) // เมื่อ เงื่อนไข (condition) เป็นจริง ก็จะทำการวนซ้ำ ใน statement ถัดไป
statement
ยกตัวอย่างเช่น
การวนซ้ำที่ไม่รู้จบจะใช้คำสั่ง while ในการทำงาน ตัววนซ้ำ จะอยู่ระหว่าเครื่องหมาย ก้ามปู “{ }” ถ้าภายในลูปมีคำสั่งเดียวไม่จำเป็น
โครงสร้างของการใช้งานแต่ละคำสั่ง
while ( condition ) // เมื่อ เงื่อนไข (condition) เป็นจริง ก็จะทำการวนซ้ำ ใน statement ถัดไป
statement
ยกตัวอย่างเช่น
ในที่นี้จะเห็นว่า ค่า x มีค่าเริ่มต้นเท่ากับ 5 ซึ่ง 5 > 0 เงื่อนไขของคำสั่ง while เป็นจริง จึงทำคำสั่งถัดมาคือ sum += x; หมายความว่า sum = sum + x = 5 จากนั้นค่า x ก็มีค่าลดลงไป 1 เหลือ 4 ก็จะทำการ check เงื่อนไขว่า 4 > 0 หรือไม่ เมื่อเงื่อนไขเป็นจริง ก็จะทำการวนซ้ำ sum ก็จะมีค่าเป็น 5 + 4 = 9 และ x ก็จะมีค่าลดลงเหลือ 3 และดำเนินการวนซ้ำเช่นนี้จนกระทั่ง x มีค่าเป็น 0 ซึ่งค่า 0 ไม่ได้มีค่ามากกว่า 0.0 เงื่อนไขจึงเป็นเท็จ โปรแกรมจึงจะจบการวนซ้ำ
คราวนี้เราลองมาดูตัวอย่างของการใช้คำสั่ง while ในการเขียนโปรแกรมแบบวนซ้ำ และผลลัพท์ที่ได้
การที่ผลลัพท์ออกมาเช่นนี้ ก็เนื่องจากว่า x มีค่าเริ่มต้น 0 และเงื่อนไข x <= 2 เป็นจริงตลอด โปรแกรมจึงทำการพิมพ์ค่า 0 0 ออกมา และเนื่องจากค่า x ไม่มีการเปลี่ยนแปลง เงื่อนไขจึงเป็นจริงตลอด โปรแกรมจึงแสดงผลบนหน้าจอโดยไม่หยุดนั่นเอง
ข้อผิดพลาดที่ควรหลีกเลี่ยง
การรวนซ้ำของ while จะจบการทำงานเมื่อเงื่อนไขเป็นเท็จ ถ้าภายในตัววนซ้ำของ while มีค่าความจริงเป็นจริง จะทำให้เกิดวนซ้ำไม่รู้จบ เรียกวนซ้ำแบบนี้ว่า infinite loop
การวนซ้ำแบบ do-while
จะใช้งานคล้ายกับวนรอบแบบ while ตัววนซ้ำ จะอยู่ระหว่างเครื่องหมาย ก้ามปู“{ }”
ถ้าภายในลูปมีคำสั่งเดียวไม่จำเป็นต้องใส่เครื่องหมายดังกล่าว
คำสั่ง do/while เป็นโครงสร้างการวนซ้ำเหมือนค่ำสั่ง while แต่จะมีการตรวจสอบเงื่อนไขภายหลังจากทำงานในตัว วนซ้ำเสร็จแล้ว ส่วน while จะทดสอบเงื่อนไขก่อนเข้าตัววนซ้ำ
การรวนซ้ำจะทำต่อเนื่อง จนพบเงื่อนไขที่สอดคล้องกับการวนซ้ำ
คำสั่ง do/while จะทำการตรวจสอบเงื่อนไขหลังจากทำงานภายในตัววนซ้ำเสร็จแล้วดังนั้นวนรอบชนิดนี้จะต้องมีการดำเนินงานอย่างน้อย 1 รอบ
ตัวนับรอบของ while และ do/while
การรนซ้ำที่ไม่รู้จบ หมายถึง การที่ไม่รู้จำนวนครั้งของการดำเนินงานภายในตัววนซ้ำ เมื่อค่าของตัแปรควบคุม วนรอบได้เท่ากับตัวเลขที่เป็นเงื่อนไข โปรแกรมจะออกจากการทำงานของการซ้ำทันที
รูปแบบของการเขียน code สำหรับโปรแกรมแบบวนซ้ำที่ใช้ do-while สามารถเขียนให้อยู่ในรูปทั่วไปได้ดังนี้
ข้อผิดพลาดที่ควรหลีกเลี่ยง
การรวนซ้ำของ while จะจบการทำงานเมื่อเงื่อนไขเป็นเท็จ ถ้าภายในตัววนซ้ำของ while มีค่าความจริงเป็นจริง จะทำให้เกิดวนซ้ำไม่รู้จบ เรียกวนซ้ำแบบนี้ว่า infinite loop
การวนซ้ำแบบ do-while
จะใช้งานคล้ายกับวนรอบแบบ while ตัววนซ้ำ จะอยู่ระหว่างเครื่องหมาย ก้ามปู“{ }”
ถ้าภายในลูปมีคำสั่งเดียวไม่จำเป็นต้องใส่เครื่องหมายดังกล่าว
คำสั่ง do/while เป็นโครงสร้างการวนซ้ำเหมือนค่ำสั่ง while แต่จะมีการตรวจสอบเงื่อนไขภายหลังจากทำงานในตัว วนซ้ำเสร็จแล้ว ส่วน while จะทดสอบเงื่อนไขก่อนเข้าตัววนซ้ำ
การรวนซ้ำจะทำต่อเนื่อง จนพบเงื่อนไขที่สอดคล้องกับการวนซ้ำ
คำสั่ง do/while จะทำการตรวจสอบเงื่อนไขหลังจากทำงานภายในตัววนซ้ำเสร็จแล้วดังนั้นวนรอบชนิดนี้จะต้องมีการดำเนินงานอย่างน้อย 1 รอบ
ตัวนับรอบของ while และ do/while
การรนซ้ำที่ไม่รู้จบ หมายถึง การที่ไม่รู้จำนวนครั้งของการดำเนินงานภายในตัววนซ้ำ เมื่อค่าของตัแปรควบคุม วนรอบได้เท่ากับตัวเลขที่เป็นเงื่อนไข โปรแกรมจะออกจากการทำงานของการซ้ำทันที
รูปแบบของการเขียน code สำหรับโปรแกรมแบบวนซ้ำที่ใช้ do-while สามารถเขียนให้อยู่ในรูปทั่วไปได้ดังนี้
โปรแกรมข้างต้นจะทำการอ่านค่าจะ keyboard เมื่อ User พิมพ์ค่าที่มีค่ามากกว่าศูนย์ ก็จะทำการบวกค่าเหล่านี้ไปที่ตัวแปร sum จนกระทั่ง User พิมพ์ ตัวเลข 0 หรือค่าที่น้อยกว่า ศูนย์ ทำให้เงื่อนไขเป็นเท็จ และโปรแกรมจึงจะออกจากโครงสร้าง do-while
คราวนี้เราลองมาเขียนโปรแกรมที่ใช้โครงสร้าง do-while โดยโจทย์กำหนดให้ว่า ให้โปรแกรมสามารถรับค่าตัวเลขใดๆ (X) และ แสดงผลของตัวเลข ระหว่าง 0 ถึง X ที่สามารถหารด้วย 4 ลงตัว
คราวนี้เราลองมาเขียนโปรแกรมที่ใช้โครงสร้าง do-while โดยโจทย์กำหนดให้ว่า ให้โปรแกรมสามารถรับค่าตัวเลขใดๆ (X) และ แสดงผลของตัวเลข ระหว่าง 0 ถึง X ที่สามารถหารด้วย 4 ลงตัว
สิ่งที่สำคัญสำคัญสำหรับตัวแปรที่ใช้เพื่อควบคุมการวนซ้ำ
1.ต้องมีการประกาศตัวแปรควบคุมหรือตัวนับการวนซ้ำ
2.ต้องมีการกำหนดค่าเริ่มต้นตัวแปรที่ใช้ควบคุม
3.ค่าตัวแปรควบคุมต้องมีการเปลี่ยนแปลงการทำงาน
4.สอบค่าของตัวแปรควบคุมเพื่อทำงานเงื่อนไขที่ใช้ตวจหรือออกแบบการวนซ้ำควรจะเป็นค่าที่ต่อจากค่าสุดท้ายของตัวควบคุม
การวนซ้ำแบบ for
โครงสร้างการทำซ้ำชนิด for สามารถจัดการกับรายละเอียดของตัวแปรควบคุมโดย อัตโนมัติ ซึ่งจากโปรแกรมที่ผ่านมาสามารถเขียนใหม่ในรูปของประโยคคำสั่ง for
1.ต้องมีการประกาศตัวแปรควบคุมหรือตัวนับการวนซ้ำ
2.ต้องมีการกำหนดค่าเริ่มต้นตัวแปรที่ใช้ควบคุม
3.ค่าตัวแปรควบคุมต้องมีการเปลี่ยนแปลงการทำงาน
4.สอบค่าของตัวแปรควบคุมเพื่อทำงานเงื่อนไขที่ใช้ตวจหรือออกแบบการวนซ้ำควรจะเป็นค่าที่ต่อจากค่าสุดท้ายของตัวควบคุม
การวนซ้ำแบบ for
โครงสร้างการทำซ้ำชนิด for สามารถจัดการกับรายละเอียดของตัวแปรควบคุมโดย อัตโนมัติ ซึ่งจากโปรแกรมที่ผ่านมาสามารถเขียนใหม่ในรูปของประโยคคำสั่ง for
คำสั่ง break และ continue
ใช้เพื่อปรับเปลี่ยนการไหลการควบคุม เมื่อการดำเนินงานของโปรแกรมเจอคำสั่ง break ในวนซ้ำ while , for , do/while หรือคำสั่ง switch จะทำให้โปรแกรมออกจากโครงสร้างหรือการวนซ้ำนั้นทันที ซึ่งการวนซ้ำนั้นทันที ซึ่งการใช้งานคำสั่ง break ส่วนใหญ่แล้วจะใช้เพื่อออกจากรอบของการวนซ้ำ หรือข้ามบางคำสั่งในโครงสร้างคำสั่ง switch
คำสั่ง break
ใช่เพื่อปรับเปลี่ยนการไหลของการควบคุม เมื่อการดำเนินงานของโปรแกรมเจอคำสั่ง
breakในวนซ้ำ while , for , do/while หรือคำสั่ง switch จะทำให้โปรแกรมออกจากโครงสร้างหรือการวนซ้ำนั้นทันที ซึ่งการใช้งานคำสั่ง break ส่วนใหญ่แล้วจะใช้เพื่อออกจากรอบของการวนซ้ำ หรือข้ามบางคำสั่งในโครงสร้างคำสั่ง switch
คำสั่ง continue
ใช้เพื่อปรับเปลี่ยนการไหลของการควบคุม เมื่อการดำเนินงานของโปรแกรมเจอคำสั่ง continue ในวนซ้ำ while , for , do/while หรือคำสั่ง switch จะทำให้โปรแกรมหยุดการทำงานในรอบปัจจุบันแล้วกลับไปเริ่มทำงานรอบใหม่
คำสั่ง continue ถ้าถูกดำเนินการในวนซ้ำ while , for หรือ do/while จะเป็นการข้ามการทำงานคำสั่งนั้นเพื่อทำคำสั่งถัดไปในการวนซ้ำ
ใช้เพื่อปรับเปลี่ยนการไหลการควบคุม เมื่อการดำเนินงานของโปรแกรมเจอคำสั่ง break ในวนซ้ำ while , for , do/while หรือคำสั่ง switch จะทำให้โปรแกรมออกจากโครงสร้างหรือการวนซ้ำนั้นทันที ซึ่งการวนซ้ำนั้นทันที ซึ่งการใช้งานคำสั่ง break ส่วนใหญ่แล้วจะใช้เพื่อออกจากรอบของการวนซ้ำ หรือข้ามบางคำสั่งในโครงสร้างคำสั่ง switch
คำสั่ง break
ใช่เพื่อปรับเปลี่ยนการไหลของการควบคุม เมื่อการดำเนินงานของโปรแกรมเจอคำสั่ง
breakในวนซ้ำ while , for , do/while หรือคำสั่ง switch จะทำให้โปรแกรมออกจากโครงสร้างหรือการวนซ้ำนั้นทันที ซึ่งการใช้งานคำสั่ง break ส่วนใหญ่แล้วจะใช้เพื่อออกจากรอบของการวนซ้ำ หรือข้ามบางคำสั่งในโครงสร้างคำสั่ง switch
คำสั่ง continue
ใช้เพื่อปรับเปลี่ยนการไหลของการควบคุม เมื่อการดำเนินงานของโปรแกรมเจอคำสั่ง continue ในวนซ้ำ while , for , do/while หรือคำสั่ง switch จะทำให้โปรแกรมหยุดการทำงานในรอบปัจจุบันแล้วกลับไปเริ่มทำงานรอบใหม่
คำสั่ง continue ถ้าถูกดำเนินการในวนซ้ำ while , for หรือ do/while จะเป็นการข้ามการทำงานคำสั่งนั้นเพื่อทำคำสั่งถัดไปในการวนซ้ำ