โครงสร้างแบบวนซ้ำ (repetition structure)
ในการแก้ปัญหาบางอย่างอาจต้องมีการทำงานในบางคำสั่งหรือบางชุดของคำสั่งซ้ำกันมากกว่าหนึ่งรอบขึ้นไป โครงสร้างแบบมีการวนซ้ำนี้จะต้องมีการตัดสินใจร่วมกันอยู่ด้วยเสมอ เพื่อเป็นเงื่อนไขที่จะตัดสินใจว่าเมื่อใดจะวนซ้ำ หรือเมื่อใดจะถึงเวลาหยุดการวนซ้ำ การวนซ้ำแบบที่ต้องตรวจสอบเงื่อนไขที่จะให้วนซ้ำก่อนที่จะทำงานตามชุดคำสั่งในโครงสร้างแบบวนซ้ำ เรียกว่า การวนซ้ำแบบ while ซึ่งจะสังเกตได้ว่าถ้าเงื่อนไขไม่เป็นจริงตั้งแต่แรก คำสั่งในโครงสร้างแบบวนซ้ำจะไม่ถูกเรียกให้ทำงานเลย แต่การวนซ้ำแบบที่มีการตรวจสอบเงื่อนไขที่จะให้วนซ้ำหลังจากที่ได้ทำงานตามชุดคำสั่ง ในโครงสร้างแบบวนซ้ำไปรอบหนึ่งแล้ว เรียกว่า การวนซ้ำแบบ until สำหรับตัวอย่างของการวนซ้ำ เช่น การรับค่าตัวเลขเข้ามาหลายค่าเพื่อคำนวณหาผลรวม ในตัวอย่างที่ 4 ถือเป็นการวนซ้ำแบบ until
สิ่งที่ควรระวังในการใช้งานขั้นตอนวิธีแบบมีการวนซ้ำคือ ต้องตรวจสอบว่าได้กำหนดเงื่อนไขอย่างรัดกุมและถูกต้อง มิเช่นนั้นแล้วอาจเกิดกรณีของการวนซ้ำไม่รู้จบ (infinite loop) หรือกรณีที่วนซ้ำไม่ได้ตามจำนวนรอบที่ต้องการ
ตัวอย่างที่ 1 ลำดับขั้นตอนการเล่นเกมทายตัวเลขแบบที่ 1
ให้แสดงการวิเคราะห์และกำหนดรายละเอียดของปัญหา พร้อมทั้งเขียนรหัสลำลองและผังงาน เพื่อถ่ายทอดความคิดขั้นตอนวิธีในการเล่นเกมทายตัวเลข โดยให้ผู้เล่นคนหนึ่งเป็นผู้กำหนดตัวเลขแล้วให้ผู้ทายทายตัวเลขได้หนึ่งครั้ง โปรแกรมจะตรวจคำตอบ และแสดงผลลัพธ์ว่าทายถูกหรือทายผิด
องค์ประกอบของขั้นตอนการวิเคราะห์และกำหนดรายละเอียดของปัญหาสามารถแสดงได้ดังนี้
ข้อมูลออก | ข้อมูลเข้า | รายละเอียดของปัญหา |
ข้อความแสดงผลการทายตัวเลข | – ตัวเลขเป้าหมาย- ตัวเลขที่ทาย | เปรียบเทียบตัวเลขที่ทายกับตัวเลขเป้าหมาย- ถ้าตรงกัน ให้แสดงคำว่า Correct- ถ้าไม่ตรงกัน ให้แสดงคำว่า Incorrect |
ตัวอย่างที่ 2 ลำดับขั้นตอนการเล่นเกมทายตัวเลขแบบที่ 2
เกมทายตัวเลข ยอมให้ผู้เล่นทำการทายได้เพียงครั้งเดียว ให้นักเรียนเขียนรหัสลำลองและผังงาน เพื่อถ่ายทอดความคิดขั้นตอนวิธีในการเล่นเกมทายตัวเลขที่ได้รับการปรับปรุง โดยโปรแกรมจะตรวจสอบตัวเลขที่ทายว่า มีค่าสูงหรือต่ำกว่าที่กำหนดแล้วให้โอกาสผู้เล่นทายใหม่จนกว่าจะถูก
องค์ประกอบของขั้นตอนการวิเคราะห์และกำหนดรายละเอียดของปัญหาสามารถแสดงได้ดังนี้
ข้อมูลออก | ข้อมูลเข้า | รายละเอียดของปัญหา |
– ข้อความแสดงผลการทายตัวเลขว่า สูงหรือต่ำเกินไปกรณีที่ทายไม่ถูก- ข้อความที่แสดงว่าทายถูกต้อง | – ตัวเลขเป้าหมาย- ตัวเลขที่ทาย | เปรียบเทียบตัวเลขที่ทายว่าตรงกับตัวเลขเป้าหมายหรือไม่จนกว่าจะทายถูก |
ในการออกแบบขั้นตอนการทำงานเพื่อให้สามารถวนรอบให้ผู้ทายทำการทายได้หลายครั้งจนกว่าจะถูกนั้น จะพบว่าเป็นการใช้การวนซ้ำแบบ while ที่มีการตรวจสอบการวนรอบในส่วนต้นก่อนการทำงานภายในของการวนรอบ โดยทั่วไปเราสามารถดัดแปลงแก้ไขขั้นตอนวิธีที่ใช้การวนซ้ำแบบ while เพียงเล็กน้อยเพื่อให้ใช้การวนซ้ำแบบ until ที่มีการตรวจสอบการวนรอบเมื่อจบการทำงานภายในของการวนรอบ
ตัวอย่าง : การเขียนผังงาน
– โครงสร้างแบบลำดับ (sequential structure)
ที่มา : http://www.nkpw.ac.th/pornsak/com54/22242/images/p922-1.gif
ที่มา : http://61.7.214.35/c/webbase/unit2/images/flow1.jpg
ที่มา : https://preawnud.files.wordpress.com/2014/08/6e808-screenhunter_1.jpg
– โครงสร้างแบบทางเลือก (selection structure)
– โครงสร้างแบบวนซ้ำ (repetition structure)
ที่มา :
สถาบันส่งเสริมการสอนวิทยาศาสตร์และเทคโนโลยี กระทรวงศึกษาธิการ. (2553). หนังสือเรียนรายวิชาพื้นฐาน เทคโนโลยีสารสนเทศและการสื่อสาร ชั้นมัธยมศึกษาปีที่ 4-6. กรุงเทพฯ: โรงพิมพ์ สกสค.
. (2547). เอกสารศึกษาด้วยตนเอง สำหรับครูเทคโนโลยีสารสนเทศ เรื่องที่ 6 หลักการแก้ปัญหาและเครื่องมือในการแก้ปัญหา. กรุงเทพฯ: โรงพิมพ์ สกสค.
http://www.thaiall.com/flowchart/
http://bu.lpc.rmutl.ac.th/naravit/begin-programming/lab01/02-Flowchart.htm
http://cmi.nfe.go.th/multimedialesson/multi_lesson/lesson/06/flowchart.html