Wednesday, March 16, 2016

การทำงานแบบวนซ้ำ

การทำงานแบบวนซ้ำ
 
          การทำงานแบบวนซ้ำ (Loop)เป็นการนำคำสั่งมาทำงานซ้ำหลายๆ รอบ จะทำงานกี่รอบขึ้นอยู่กับเงื่อนไขที่ผู้เขียนโปรแกรมกำหนดไว้ ซึ่งอาจจะเป็นการกำหนดจำนวนรอบที่แน่นอน เช่น ตั้งใจว่าจะวิ่งรอบสนาม 3 รอบ คือรู้แน่นอนว่าจะทำงานกี่รอบ หรือแบบจำนวนรอบไม่แน่นอน เช่น ตั้งใจว่าจะวิ่งรอบสนามไปเรื่อยๆ เหนื่อยเมื่อไหร่จึงจะหยุดวิ่ง คือไม่แน่ชัดว่าจะทำงานกี่รอบ
          การทำงานซ้ำๆ ในชีวิตประจำวันมีอยู่มากมาย ครูจะขอยกตัวอย่างง่ายๆ ที่นักเรียนทุกๆ คนคงเคยทำมาด้วยตนเองแล้ว เช่น
 
                1.นักเรียนอาบน้ำโดยใช้ขันน้ำตักราดบนร่างกายหลายๆ ครั้ง (ทำซ้ำ) จนร่างกายสะอาดดีแล้วจึงหยุดอาบน้ำ (หยุดทำซ้ำ)
                2.นักเรียนจัดสมุดหนังสือใส่กระเป๋าเพื่อนำไปโรงเรียนทีละเล่ม (ทำซ้ำ) จนครบทุกวิชาลงในกระเป๋า จึงหยุดจัดสมุดหนังสือลงประเป๋า (หยุดทำซ้ำ)
                3.นักเรียนรับประทานอาหารโดยตักอาหารเข้าปากหลายๆ คำ (ทำซ้ำ) จนกระทั่งอิ่มแล้ว จึงหยุดรับประทาน (หยุดทำซ้ำ)
          สิ่งที่สำคัญสำหรับการทำงานแบบวนซ้ำในการเขียนโปรแกรมคือ เงื่อนไข ซึ่งเงื่อนไขในที่นี้จะมีลักษณะคล้ายกันกับเงื่อนไขแบบทางเลือกนั่นเอง โดยเงื่อนไขจะเป็นตัวกำหนดว่าจะมีการเข้าไปทำงานหรือไม่ ถ้าเงื่อนไขเป็นจริงก็จะเข้าไปทำงาน เมื่อทำงานเสร็จแล้วก็จะมาตรวจสอบเงื่อนไขอีกครั้ง และก็จะทำงานไปเรื่อยๆ ถ้าเงื่อนไขเป็นจริงอยู่เสมอ โปรแกรมจะหยุดทำงานก็ต่อเมื่อผลการตรวจสอบเงื่อนไขในรอบใดรอบหนึ่งเป็นเท็จ ดังแผนภาพ
 
 


          จากแผนภาพ คำสั่งที่จะถูกทำซ้ำหลายๆ ครั้งคือคำสั่ง A ซึ่งเป็นคำสั่งที่อยู่ในลูป (Loop) คือในทุกๆ รอบที่ทำการตรวจสอบเงื่อนไข ถ้าเป็นจริงคำสั่ง A ก็จะถูกกระทำไปเรื่อยๆ แต่ถ้ารอบใดที่ตรวจสอบแล้วเงื่อนไขเป็นเท็จ ก็จะหลุดออกจากการทำซ้ำมาทำตามคำสั่ง B ที่อยู่นอกลูปของการวนซ้ำ
          อย่างที่กล่าวไว้แล้วตั้งแต่ตอนต้นว่าการทำซ้ำมี 2 ลักษณะคือ การทำซ้ำที่มีจำนวนรอบแน่นอน และที่มีจำนวนรอบไม่แน่นอน เพื่อให้เห็นภาพที่ชัดเจนขึ้น นักเรียนลองดูแผนภาพ ดังต่อไปนี้
           
 การทำซ้ำที่มีจำนวนรอบแน่นอน
 
 
      
     การทำซ้ำที่มีจำนวนรอบไม่แน่นอน   
 
 
 
 
   
            นอกจากนี้แล้ว ยังมีรูปแบบของการทำซ้ำอีก 2 รูปแบบที่นักเรียนควรทราบอีกก็คือ การทำซ้ำแบบตรวจสอบเงื่อนไขก่อนทำ และการทำซ้ำแบบทำซ้ำก่อน 1 รอบแล้วจึงตรวจสอบเงื่อนไข ดังแผนภาพต่อไปนี้
          
 
    การทำซ้ำที่ตรวจสอบเงื่อนไขก่อนทำ
 
 
            รูปแบบนี้ก่อนที่จะเข้าไปทำตามคำที่อยู่ในลูป (Loop) คือคำสั่ง A และ B (ต้องเข้าใจว่าคำสั่งที่อยู่ในลูปจะมีกี่คำสั่งก็ได้) โปรแกรมจะทำการตรวจสอบเงื่อนไขก่อน ถ้าผลลัพธ์เป็นจริง ก็จะเข้าไปทำคำสั่งในลูป แล้ววนขึ้นมาตรวจสอบเงื่อนไขใหม่ เป็นอย่างนี้ไปเรื่อยๆ ถ้ารอบใดที่พบว่าเงื่อนไขเป็นเท็จก็จะจบการทำซ้ำ มาทำตามคำสั่ง C
 
           
 
 การทำซ้ำที่ทำก่อน 1 รอบแล้วจึงตรวจสอบเงื่อนไข
 
 
 
 
 
            รูปแบบนี้โปรแกรมจะเข้าไปทำงานในลูปก่อน 1 ครั้ง แล้วจึงตรวจสอบเงื่อนไข ถ้าผลลัพธ์เป็นจริง ก็จะวนกลับขึ้นไปทำสั่งในลูปอีกครั้ง แล้วจึงตรวจสอบเงื่อนไขใหม่ เป็นอย่างนี้ไปเรื่อยๆ ถ้ารอบใดที่พบว่าเงื่อนไขเป็นเท็จก็จะจบการทำซ้ำ มาทำตามคำสั่ง C
            จริงๆ แล้วการเขียนโปรแกรมถ้าผู้เขียนโปรแกรมมีความเข้าใจเกี่ยวกับการทำซ้ำแล้วก็สามารถเลือกใช้รูปแบบใดรูปแบบหนึ่งไปใช้แก้ปัญหาได้อยู่แล้ว นักเรียนจึงไม่ต้องกังวลว่าจะต้องใช้ครบทุกรูปแบบของการทำซ้ำ
            ตัวอย่างผังงานต่อไปนี้ จะเป็นตัวอย่างเชิงโปรแกรมมากขึ้น ซึ่งจะเป็นการทำซ้ำโดยให้แสดงตัวเลขตั้งแต่ 1 ถึง 10 ออกทางจอภาพ ดังแผนภาพต่อไปนี้
 
 
 
 
(อ้างอิงจาก http://computer.bps.in.th/suteerat/loop)

No comments:

Post a Comment