โครงสร้างแบบวนซ้ำ

โครงสร้างแบบวนซ้ำ 

ในการแก้ปัญหาบางอย่างอาจต้องมีการทำงานในบางคำสั่งหรือบางชุดของคำสั่งซ้ำกันมากกว่าหนึ่งรอบขึ้นไป  โครงสร้างแบบมีการวนซ้ำนี้จะต้องมีการตัดสินใจร่วมกันอยู่ด้วยเสมอ  เพื่อเป็นเงื่อนไขที่จะตัดสินใจว่าเมื่อใดจะวนซ้ำ  หรือเมื่อใดจะถึงเวลาหยุดการวนซ้ำ  การวนซ้ำแบบที่ต้องตรวจสอบเงื่อนไขที่จะให้วนซ้ำก่อนที่จะทำงานตามชุดคำสั่งในโครงสร้างแบบวนซ้ำ  เรียกว่า  การวนซ้ำแบบ  while  ซึ่งจะสังเกตได้ว่าถ้าเงื่อนไขไม่เป็นจริงตั้งแต่แรก  คำสั่งในโครงสร้างแบบวนซ้ำจะไม่ถูกเรียกให้ทำงานเลย  แต่การวนซ้ำแบบที่มีการตรวจสอบเงื่อนไขที่จะให้วนซ้ำหลังจากที่ได้ทำงานตามชุดคำสั่ง  ในโครงสร้างแบบวนซ้ำไปรอบหนึ่งแล้ว  เรียกว่า  การวนซ้ำแบบ until  สำหรับตัวอย่างของการวนซ้ำ  เช่น  การรับค่าตัวเลขเข้ามาหลายค่าเพื่อคำนวณหาผลรวม  ในตัวอย่างที่  4  ถือเป็นการวนซ้ำแบบ  until
สิ่งที่ควรระวังในการใช้งานขั้นตอนวิธีแบบมีการวนซ้ำคือ  ต้องตรวจสอบว่าได้กำหนดเงื่อนไขอย่างรัดกุมและถูกต้อง  มิเช่นนั้นแล้วอาจเกิดกรณีของการวนซ้ำไม่รู้จบ  (infinite loop)  หรือกรณีที่วนซ้ำไม่ได้ตามจำนวนรอบที่ต้องการ
ตัวอย่างที่  1  ลำดับขั้นตอนการเล่นเกมทายตัวเลขแบบที่  1
          ให้แสดงการวิเคราะห์และกำหนดรายละเอียดของปัญหา  พร้อมทั้งเขียนรหัสลำลองและผังงาน  เพื่อถ่ายทอดความคิดขั้นตอนวิธีในการเล่นเกมทายตัวเลข  โดยให้ผู้เล่นคนหนึ่งเป็นผู้กำหนดตัวเลขแล้วให้ผู้ทายทายตัวเลขได้หนึ่งครั้ง  โปรแกรมจะตรวจคำตอบ  และแสดงผลลัพธ์ว่าทายถูกหรือทายผิด
องค์ประกอบของขั้นตอนการวิเคราะห์และกำหนดรายละเอียดของปัญหาสามารถแสดงได้ดังนี้
ข้อมูลออกข้อมูลเข้ารายละเอียดของปัญหา
ข้อความแสดงผลการทายตัวเลข- ตัวเลขเป้าหมาย- ตัวเลขที่ทายเปรียบเทียบตัวเลขที่ทายกับตัวเลขเป้าหมาย- ถ้าตรงกัน ให้แสดงคำว่า Correct- ถ้าไม่ตรงกัน ให้แสดงคำว่า Incorrect
ตัวอย่างที่  2  ลำดับขั้นตอนการเล่นเกมทายตัวเลขแบบที่  2
          เกมทายตัวเลข  ยอมให้ผู้เล่นทำการทายได้เพียงครั้งเดียว  ให้นักเรียนเขียนรหัสลำลองและผังงาน  เพื่อถ่ายทอดความคิดขั้นตอนวิธีในการเล่นเกมทายตัวเลขที่ได้รับการปรับปรุง  โดยโปรแกรมจะตรวจสอบตัวเลขที่ทายว่า  มีค่าสูงหรือต่ำกว่าที่กำหนดแล้วให้โอกาสผู้เล่นทายใหม่จนกว่าจะถูก
องค์ประกอบของขั้นตอนการวิเคราะห์และกำหนดรายละเอียดของปัญหาสามารถแสดงได้ดังนี้
ข้อมูลออกข้อมูลเข้ารายละเอียดของปัญหา
- ข้อความแสดงผลการทายตัวเลขว่า  สูงหรือต่ำเกินไปกรณีที่ทายไม่ถูก- ข้อความที่แสดงว่าทายถูกต้อง- ตัวเลขเป้าหมาย- ตัวเลขที่ทายเปรียบเทียบตัวเลขที่ทายว่าตรงกับตัวเลขเป้าหมายหรือไม่จนกว่าจะทายถูก
ในการออกแบบขั้นตอนการทำงานเพื่อให้สามารถวนรอบให้ผู้ทายทำการทายได้หลายครั้งจนกว่าจะถูกนั้น  จะพบว่าเป็นการใช้การวนซ้ำแบบ while  ที่มีการตรวจสอบการวนรอบในส่วนต้นก่อนการทำงานภายในของการวนรอบ  โดยทั่วไปเราสามารถดัดแปลงแก้ไขขั้นตอนวิธีที่ใช้การวนซ้ำแบบ while เพียงเล็กน้อยเพื่อให้ใช้การวนซ้ำแบบ until  ที่มีการตรวจสอบการวนรอบเมื่อจบการทำงานภายในของการวนรอบ

ตัวอย่าง :  การเขียนผังงาน



ไม่มีความคิดเห็น:

แสดงความคิดเห็น