(คุณครูธนายุส) พวกเราเคยเจอปัญหาแบบนี้บ้างไหมครับ ปัญหาที่มีลักษณะเดียวกันซ้ำหลาย ๆ รอบ พวกเราลองไปชมสถานการณ์ตัวอย่างต่อไปนี้ดูนะครับ เอ๊ะ ควรจะสั่งอย่างไร เพื่อให้สั่งครั้งเดียวแล้วสามารถทำงานได้ตลอดนะ อ๋อ ใช้คำสั่งทำซ้ำเข้ามาช่วยดีกว่า โอเคเรียบร้อย ขอบคุณมากครับ จากสถานการณ์ตัวอย่างเราจะพบ ว่าคุณครูได้สั่งงานให้นักเรียนทำการจัดโต๊ะ โดยใช้คำสั่งทีละคำสั่ง แต่คุณครูจำเป็นจะต้องสั่งคำสั่งหลายครั้งมาก คุณครูจึงเลือกใช้การทำซ้ำมาแก้ปัญหา นอกจากการทำซ้ำ ที่เราพบเจอในชีวิตประจำวันแล้ว เรายังสามารถพบเจอการทำซ้ำในสถานการณ์อื่น ๆ ได้อีกครับ ตัวอย่างให้ครับ เกมทายเลขมันเริ่มจะแบ่งผู้เล่นเป็น 2 ฝ่าย ฝ่ายแรกจะเป็นผู้เขียนคำตอบไว้ในกระดาษ ซึ่งมีค่าตั้งแต่ 0 จนถึง 100 จากนั้นให้ฝ่ายที่ 2 ทายตัวเลข เมื่อไปที่ 2 ทายตัวเลขมีค่ามากกว่าคำตอบ ให้ฝ่ายแรก บอกว่าค่ามากเกินไป ฝ่ายที่ 2 ทายตัวเลขอีก ถ้ามีค่าน้อยกว่าคำตอบ ให้ตอบว่าข้าน้อยเกินไป และเมื่อฝ่ายที่ 2 คล้ายตัวเลขทายเลขจะตอบว่าทายถูกต้อง จากนั้นจะสลับกันเล่น โดยฝ่ายไหนทายตัวเลขได้น้อยครั้งกว่าเป็นผู้ชนะ เราไปชมวิดีโอสาธิตการเล่นเกมทายเลขกันครับ (นักเรียนหญิง 1) เราเขียนเสร็จแล้วเริ่มทายได้เลย 15 เกินไปเกินไป 98 มากเกินไป 71 น้อยเกินไป 82 ถูกแล้ว (คุณครูธนายุส) เมื่อเราทำกิจกรรมเกมทายเลขเรียบร้อยแล้วนะครับ พวกเราลองร่วมกันเขียนรหัสลำลองของเกมทายเลขนี้ดูนะครับ [เสียงนาฬิกานับถอยหลัง] (คุณครูธนายุส) เป็นอย่างไรบ้างครับ เขียนรหัสลำลองกันเสร็จแล้วใช่ไหม ลองดูนะครับ ว่าเหมือนของผมหรือเปล่า เริ่มต้นจากเราสุ่มตัวเลขตั้งแต่ 1 จนถึง 100 ครับ จากนั้นไปเก็บไว้จนจบแปลก secret และจะทำคำสั่งต่อไปนี้ไปเรื่อย ๆ เริ่มจากเรารับค่าจะพูดเล่นที่ถ่ายเป็นจำนวนเต็มมาเก็บไว้ในตัวแปร answer จากนั้นตรวจสอบครับ ว่าต่อไปอาจจะมีค่าน้อยกว่า 11 ไหม ถ้าใช่ เราจะตอบผู้เล่นไปว่าถ้าน้อยเกินไป แต่ถ้าไม่ใช่เราจะมาตรวจสอบอีกครับ ว่าตัวตัวแปร Answer มากกว่า 41 ถ้าใช่ เราจะตอบไปว่าค่ามากเกินไป และanswer มีค่าเท่ากับ 48 เมื่อไหร่เราก็จะตอบผู้เล่นไปว่าทายถูกแล้ว และให้จบการทำงาน แต่ในกรณีที่ยังทายไม่ถูก เราจะวนกลับไปรับค่าใหม่ และตรวจสอบใหม่อีกครั้งหนึ่งไปเรื่อย ๆ จนกระทั่งเจอเงื่อนไขจบการทำงานครับ แล้วใช้วิธีการถ่ายแบบถูกฝั่งรายการทายน้อยที่สุดและพบคำตอบคืนหนึ่งครั้ง จำนวนครั้งในการทานมากที่สุดโอกาสถึง 100 ครั้ง แต่ถ้าเรามีกระบวนการหรือวิธีการ ในการค้นหาข้อมูล เราจะใช้ในการถ่ายน้อยที่สุด และพบคำตอบ คือ 1 ครั้ง เช่นกัน แต่จำนวนครั้งในการถ่ายมากที่สุด จะเหลือเพียงแค่ 7 ครั้งเท่านั้น เราลองหาข้อมูลเกี่ยวกับการค้นหาข้อมูล หรือการ Search ข้อมูลนะครับ Binary Search ผมว่าน่าสนใจเลยทีเดียวนะครับ ลองหาข้อมูลดูนะครับ ปัญหาอย่างหนึ่งของการทำซ้ำ คือ แล้วเมื่อไหร่ล่ะ เราจึงได้หยิบการทำซ้ำนั้นมาใช้งาน เราลองกลับไปศึกษาเรื่องพิจารณารูปแบบ หรือ Pattern connection เราจะพบว่าเมื่อไหร่ก็ตามที่เราพิจารณารูปแบบการแก้ปัญหาแล้วพบว่ามีรูปแบบการแก้ปัญหาที่เหมือนกัน เราก็จะสามารถยึดการทำซ้ำมาแก้ปัญหาในส่วนนี้ได้ครับ จากบทเรียนที่เรียนมา เราจะพบว่าการทำซ้ำนั่น มีอยู่ 2 รูปแบบใหญ่ ๆ ครับ รูปแบบแรก คือ การทำซ้ำที่มีจำนวนรอบที่ชัดเจน อย่างเช่น คุณครูสั่งให้นักเรียนยกโต๊ะครับ จะสังเกตว่านักเรียนจะทำไปเรื่อย ๆ จนกระทั่งหมดจำนวนโต๊ะ ก็จะหยุดการทำงาน กับอีกรูปแบบหนึ่งครับ คือ การทำซ้ำที่ไม่มีจำนวนรอบที่ชัดเจนครับ แต่จบการทำงานก็ต่อเมื่อตรงตามเงื่อนไข ยกตัวอย่างเช่น เกมทายเลขครับ จะสังเกตว่าเกมทายจะไม่รู้ว่าจะจบการทำงานเมื่อครั้งที่เท่าไร แต่จะจบการทำงานก็ต่อเมื่อตรงตามเงื่อนไขครับ แล้วพวกเราเคยพบการทำซ้ำในรูปแบบใดบ้าง และเป็นอย่างไร ลองคิดดูนะครับ [เสียงดนตรี]