การวนรอบซ้ำด้วยคำสั่ง do while
do while เป็นคำสั่งที่มีการทำงานซ้ำ ๆ วนลูป คล้ายกับคำสั่ง while มาก แตกตางกันตรงที่คำสั่ง do while จะทดสอบเงื่อนไขหลังจากที่ได้ทำงานตามคำสั่งภายในลูปไปแล้ว 1 รอบ จากนั้นจึงค่อยย้อนกลับมาทดสอบเงื่อนไขอีกครั้งหนึ่ง ถ้าเงื่อนไขเป็นจริงก็จะทำงานตามคำสั่งภายในลูป แต่ถ้าเงื่อนไขเป็นเท็จจะออกจากคำสั่ง do while ทันที
รูปแบบการใช้คำสั่ง do while
รูปแบบการใช้คำสั่ง do while
ลักษณะการทำงานของคำสั่ง do while สามารถเขียนเป็นแผนผังได้ดังนี้
รูปที่ 4.3 ผังงานแสดงลักษณะการทำงานของคำสั่ง do while
ที่มา : สมชาย รัตนเลิศนุสรณ์, 2545 : 85.
ที่มา : สมชาย รัตนเลิศนุสรณ์, 2545 : 85.
ข้อควรระวังในการใช้คำสั่ง do while
ควรระวังเงื่อนไขของคำสั่ง do while ต้องพิจารณาให้ดีว่ามีทั้งกรณีที่เป็นจริงและเท็จอยู่หรือไม่ ถ้ามีอยู่ทั้ง 2 กรณี แสดงว่าใช้คำสั่งนี้ได้ถูกต้องตามไวยากรณ์ของคำสั่งนี้ ถ้ามีเฉพาะกรณีที่เงื่อนไขเป็นจริงเท่านั้นแสดงว่าเกิดลักษณะการทำงานวนลูป (looping) ไม่มีทางออกจากคำสั่งนี้ ในทำนองกลับกันถ้าเงื่อนไขเป็นเท็จอย่างเดียว จะทำคำสั่ง do while เพียงครั้งเดียว
โปรแกรมตัวอย่างที่ 4.8 แสดงการใช้คำสั่ง do while เพื่อวนลูปแสดง main memu ให้ผู้ใช้เลือกเมนู ไปเรื่อย ๆ จนกว่าเลือกเมนูที่ 5 ถึงจะออกจากโปรแกรม
ควรระวังเงื่อนไขของคำสั่ง do while ต้องพิจารณาให้ดีว่ามีทั้งกรณีที่เป็นจริงและเท็จอยู่หรือไม่ ถ้ามีอยู่ทั้ง 2 กรณี แสดงว่าใช้คำสั่งนี้ได้ถูกต้องตามไวยากรณ์ของคำสั่งนี้ ถ้ามีเฉพาะกรณีที่เงื่อนไขเป็นจริงเท่านั้นแสดงว่าเกิดลักษณะการทำงานวนลูป (looping) ไม่มีทางออกจากคำสั่งนี้ ในทำนองกลับกันถ้าเงื่อนไขเป็นเท็จอย่างเดียว จะทำคำสั่ง do while เพียงครั้งเดียว
โปรแกรมตัวอย่างที่ 4.8 แสดงการใช้คำสั่ง do while เพื่อวนลูปแสดง main memu ให้ผู้ใช้เลือกเมนู ไปเรื่อย ๆ จนกว่าเลือกเมนูที่ 5 ถึงจะออกจากโปรแกรม
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.8 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 คำสั่ง do จะควบคุมการทำงานของโปรแกรม ให้ทำตามคำสั่งที่อยู่ภายใน loop do คือคำสั่งภายในเครื่องหมาย { } บรรทัดที่ 8 ถึง 16 ซึ่งจะทำอย่างน้อย 1 รอบ หลังจากนั้นค่อยไปตรวจสอบเงื่อนไข while ในบรรทัดที่ 17 ถ้าเป็นจริงจะกลับมาทำคำสั่งใน loop อีกครั้ง แต่ถ้าเป็นเท็จก็จะออกจากโปรแกรม และสิ้นสุดการทำงาน
บรรทัดที่ 17 คำสั่ง while (choice!=‘5‘); จะตรวจสอบค่าที่รับเข้ามาจากคีย์บอร์ด ซึ่งจะเก็บไว้ในตัวแปร choice และค่าที่รับเข้ามาจะเป็นชนิดอักขระ ตรวจสอบว่าไม่เท่ากับ ตัวอักขระ 5 จริงหรือเท็จ (‘5‘ ความหมายเป็นตัวอักขระไม่ใช่ตัวเลข ซึ่งเวลาตรวจสอบเงื่อนไข ตัวดำเนินการทางคณิตศาสตร์ ข้อมูลที่จะตรวจสอบต้องเป็นชนิดเดียวกัน) มีเงื่อนไขที่จะเป็นเท็จอยู่กรณีเดียว คือ เติม 5 จะทำให้ ‘5‘ != 5 เป็นเท็จ ก็จะออกจาก loop และจบการทำงาน
จากโปรแกรมตัวอย่างที่ 4.8 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 คำสั่ง do จะควบคุมการทำงานของโปรแกรม ให้ทำตามคำสั่งที่อยู่ภายใน loop do คือคำสั่งภายในเครื่องหมาย { } บรรทัดที่ 8 ถึง 16 ซึ่งจะทำอย่างน้อย 1 รอบ หลังจากนั้นค่อยไปตรวจสอบเงื่อนไข while ในบรรทัดที่ 17 ถ้าเป็นจริงจะกลับมาทำคำสั่งใน loop อีกครั้ง แต่ถ้าเป็นเท็จก็จะออกจากโปรแกรม และสิ้นสุดการทำงาน
บรรทัดที่ 17 คำสั่ง while (choice!=‘5‘); จะตรวจสอบค่าที่รับเข้ามาจากคีย์บอร์ด ซึ่งจะเก็บไว้ในตัวแปร choice และค่าที่รับเข้ามาจะเป็นชนิดอักขระ ตรวจสอบว่าไม่เท่ากับ ตัวอักขระ 5 จริงหรือเท็จ (‘5‘ ความหมายเป็นตัวอักขระไม่ใช่ตัวเลข ซึ่งเวลาตรวจสอบเงื่อนไข ตัวดำเนินการทางคณิตศาสตร์ ข้อมูลที่จะตรวจสอบต้องเป็นชนิดเดียวกัน) มีเงื่อนไขที่จะเป็นเท็จอยู่กรณีเดียว คือ เติม 5 จะทำให้ ‘5‘ != 5 เป็นเท็จ ก็จะออกจาก loop และจบการทำงาน
โปรแกรมตัวอย่างที่ 4.9 แสดงการใช้คำสั่ง do while เพื่อวนลูป คำนวณค่าผลบวกตัวเลข 1 ถึง 100
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.9 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 คำสั่ง do จะควบคุมการทำงานของโปรแกรม ให้ทำตามคำสั่งที่อยู่ภายใน loop do คือคำสั่งภายในเครื่องหมาย { } บรรทัดที่ 9 ถึง 10 ซึ่งจะทำอย่างน้อย 1 รอบ หลังจากนั้นค่อยไปตรวจสอบเงื่อนไข while ในบรรทัดที่ 11 ถ้าเป็นจริงจะกลับมาทำคำสั่งใน loop อีกครั้ง แต่ถ้าเป็นเท็จก็จะออกจากโปรแกรม และสิ้นสุดการทำงาน
บรรทัดที่ 11 คำสั่ง while (i<=100); จะตรวจสอบว่าค่า i น้อยกว่าหรือเท่ากับ 100 เป็นจริงหรือเท็จ ถ้าเป็นจริงจะกลับไปทำงานตามคำสั่งใน loop do คือ บวกสะสมตัวเลข เก็บไว้ในตัวแปร sum แล้วเพิ่มค่า i ขึ้นทีละ 1 แต่ถ้าเป็นเท็จ คือ ค่า i เป็น 101 จะออกจาก loop do แล้วไปทำคำสั่งบรรทัดที่ 12 ถึง 14 นั่นคือ พิมพ์ค่าผลบวกสะสมตัวเลข 1 ถึง 100 แล้วพิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับเข้าสู่โปรแกรม และหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
จากโปรแกรมตัวอย่างที่ 4.9 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 คำสั่ง do จะควบคุมการทำงานของโปรแกรม ให้ทำตามคำสั่งที่อยู่ภายใน loop do คือคำสั่งภายในเครื่องหมาย { } บรรทัดที่ 9 ถึง 10 ซึ่งจะทำอย่างน้อย 1 รอบ หลังจากนั้นค่อยไปตรวจสอบเงื่อนไข while ในบรรทัดที่ 11 ถ้าเป็นจริงจะกลับมาทำคำสั่งใน loop อีกครั้ง แต่ถ้าเป็นเท็จก็จะออกจากโปรแกรม และสิ้นสุดการทำงาน
บรรทัดที่ 11 คำสั่ง while (i<=100); จะตรวจสอบว่าค่า i น้อยกว่าหรือเท่ากับ 100 เป็นจริงหรือเท็จ ถ้าเป็นจริงจะกลับไปทำงานตามคำสั่งใน loop do คือ บวกสะสมตัวเลข เก็บไว้ในตัวแปร sum แล้วเพิ่มค่า i ขึ้นทีละ 1 แต่ถ้าเป็นเท็จ คือ ค่า i เป็น 101 จะออกจาก loop do แล้วไปทำคำสั่งบรรทัดที่ 12 ถึง 14 นั่นคือ พิมพ์ค่าผลบวกสะสมตัวเลข 1 ถึง 100 แล้วพิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับเข้าสู่โปรแกรม และหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
4.1.4 คำสั่ง break
break เป็นคำสั่งที่สั่งให้ออกจากคำสั่ง for หรือ while หรือ do while หรือคำสั่ง switch (คำสั่ง switch อธิบายไว้ในหัวข้อ 2.4)
รูปแบบการใช้คำสั่ง break
break;
โปรแกรมตัวอย่างที่ 4.10 แสดงการใช้คำสั่ง break ควบคู่กับคำสั่ง for
break เป็นคำสั่งที่สั่งให้ออกจากคำสั่ง for หรือ while หรือ do while หรือคำสั่ง switch (คำสั่ง switch อธิบายไว้ในหัวข้อ 2.4)
รูปแบบการใช้คำสั่ง break
break;
โปรแกรมตัวอย่างที่ 4.10 แสดงการใช้คำสั่ง break ควบคู่กับคำสั่ง for
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.10 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 คำสั่ง for (j = 1; j <=20; j++) ต้องการให้โปรแกรมวนทำงานพิมพ์ค่าของตัวแปร j ตั้งแต่ 1 ถึง โดยแต่ละค่าให้ห่างกัน 1 tab
บรรทัดที่ 9 คำสั่ง if (j == 10) break; จะตรวจสอบค่าตัวแปร j ว่าเท่ากับ 10 หรือไม่ ถ้าเท่ากับ 10 ให้หยุดการทำงาน (break) และออกจาก loop for ดังนั้นโปรแกรมนี้จะไม่ได้พิมพ์ตัวเลข 1 ถึง 20 เพราะพบคำสั่ง break แต่จะพิมพ์ตัวเลข 1 ถึง 10
บรรทัดที่ 11 และ 12 เป็นคำสั่งที่จะทำงานภายหลังจากตรวจสอบเงื่อนไข for ในบรรทัดที่ 7 แล้วได้ค่าเท็จ นั่นคือ พิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่โปรแกรม และหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
จากโปรแกรมตัวอย่างที่ 4.10 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 คำสั่ง for (j = 1; j <=20; j++) ต้องการให้โปรแกรมวนทำงานพิมพ์ค่าของตัวแปร j ตั้งแต่ 1 ถึง โดยแต่ละค่าให้ห่างกัน 1 tab
บรรทัดที่ 9 คำสั่ง if (j == 10) break; จะตรวจสอบค่าตัวแปร j ว่าเท่ากับ 10 หรือไม่ ถ้าเท่ากับ 10 ให้หยุดการทำงาน (break) และออกจาก loop for ดังนั้นโปรแกรมนี้จะไม่ได้พิมพ์ตัวเลข 1 ถึง 20 เพราะพบคำสั่ง break แต่จะพิมพ์ตัวเลข 1 ถึง 10
บรรทัดที่ 11 และ 12 เป็นคำสั่งที่จะทำงานภายหลังจากตรวจสอบเงื่อนไข for ในบรรทัดที่ 7 แล้วได้ค่าเท็จ นั่นคือ พิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่โปรแกรม และหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
4.1.5 คำสั่ง continue
continue เป็นคำสั่งที่สั่งให้กลับไปทำงานที่คำสั่งแรกของลูปคำสั่ง for หรือ while หรือ do while ทำให้มีการทำงานในรอบต่อไป
รูปแบบการใช้คำสั่ง continue
continue;
โปรแกรมตัวอย่างที่ 4.11 แสดงการใช้คำสั่ง continue ควบคู่กับคำสั่ง for
continue เป็นคำสั่งที่สั่งให้กลับไปทำงานที่คำสั่งแรกของลูปคำสั่ง for หรือ while หรือ do while ทำให้มีการทำงานในรอบต่อไป
รูปแบบการใช้คำสั่ง continue
continue;
โปรแกรมตัวอย่างที่ 4.11 แสดงการใช้คำสั่ง continue ควบคู่กับคำสั่ง for
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.11 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 คำสั่ง for (j=1; j<=20; j++) ต้องการให้โปรแกรมวนทำงานพิมพ์ค่าของตัวแปร j ตั้งแต่ 1 ถึง 20 โดยแต่ละค่าให้ห่างกัน 1 tab
บรรทัดที่ 9 คำสั่ง if (j==5) {j=j+10; continue;} จะตรวจสอบค่าตัวแปร j ว่าเท่ากับ 5 หรือไม่ ถ้าเท่ากับ 5 ให้เพิ่มค่า j ไป 10 แล้วกลับไปทำงาน (continue) คำสั่งบรรทัดที่ 7 คือ เพิ่มค่า j อีก 1 เป็น 16 ดังนั้นโปรแกรมนี้จะไม่ได้พิมพ์ตัวเลข 1 ถึง 20 ทุกตัว แต่จะข้ามตัวเลขช่วง 6 ถึง 15 ไป
บรรทัดที่ 11 และ 12 เป็นคำสั่งที่จะทำงานภายหลังจากตรวจสอบเงื่อนไข for ในบรรทัดที่ 7 แล้วได้ค่าเท็จ นั่นคือ พิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่โปรแกรม และหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
จากโปรแกรมตัวอย่างที่ 4.11 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 คำสั่ง for (j=1; j<=20; j++) ต้องการให้โปรแกรมวนทำงานพิมพ์ค่าของตัวแปร j ตั้งแต่ 1 ถึง 20 โดยแต่ละค่าให้ห่างกัน 1 tab
บรรทัดที่ 9 คำสั่ง if (j==5) {j=j+10; continue;} จะตรวจสอบค่าตัวแปร j ว่าเท่ากับ 5 หรือไม่ ถ้าเท่ากับ 5 ให้เพิ่มค่า j ไป 10 แล้วกลับไปทำงาน (continue) คำสั่งบรรทัดที่ 7 คือ เพิ่มค่า j อีก 1 เป็น 16 ดังนั้นโปรแกรมนี้จะไม่ได้พิมพ์ตัวเลข 1 ถึง 20 ทุกตัว แต่จะข้ามตัวเลขช่วง 6 ถึง 15 ไป
บรรทัดที่ 11 และ 12 เป็นคำสั่งที่จะทำงานภายหลังจากตรวจสอบเงื่อนไข for ในบรรทัดที่ 7 แล้วได้ค่าเท็จ นั่นคือ พิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่โปรแกรม และหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม