﻿WEBVTT

00:00:00.087 --> 00:00:37.469
[เสียงดนตรี]

00:00:37.485 --> 00:00:38.805
(คุณครูธนายุส) พวกเราเคยเจอปัญหา

00:00:38.806 --> 00:00:39.773
แบบนี้บ้างไหมครับ

00:00:40.741 --> 00:00:44.333
ปัญหาที่มีลักษณะเดียวกัน ซ้ำ ๆ หลาย ๆ รอบ

00:00:45.468 --> 00:00:47.514
พวกเราลองไปชมสถานการณ์

00:00:47.515 --> 00:00:48.882
ตัวอย่างต่อไปนี้ดูนะครับ

00:00:50.347 --> 00:00:53.744
ภัทรพลวันนี้เดี๋ยวเรามาช่วยกันจัดโต๊ะตรงนี้กันนะ

00:00:54.890 --> 00:00:57.424
เดี๋ยวเราเอาหนังสือ สมุด และปากกาไว้ใต้โต๊ะ

00:00:57.425 --> 00:00:58.958
แล้วก็เอาเก้าอี้ไว้บนโต๊ะครับ

00:01:06.568 --> 00:01:08.242
แล้วไม่ทำต่อล่ะ

00:01:08.482 --> 00:01:09.942
(ภัทรพล) ก็ครูไม่ได้สั่งผมนี่ครับ

00:01:10.125 --> 00:01:11.803
(คุณครูธนายุส) โอเค ถ้าอย่างนั้น

00:01:11.804 --> 00:01:13.974
เราเอาหนังสือ สมุด และปากกาไว้ใต้โต๊ะ

00:01:13.975 --> 00:01:15.609
แล้วเอาเก้าอี้ไว้บนโต๊ะครับ

00:01:26.618 --> 00:01:28.522
เอ๊ะ เราควรจะสั่งอย่างไร

00:01:28.970 --> 00:01:30.190
เพื่อให้สั่งครั้งเดียว

00:01:30.191 --> 00:01:32.421
แล้วสามารถทำงานได้ตลอดนะ

00:01:33.413 --> 00:01:36.666
อ๋อ ใช้คำสั่งทำซ้ำเข้ามาช่วยดีกว่า

00:01:37.528 --> 00:01:40.380
เราเอาหนังสือ สมุด และปากกาไว้ใต้โต๊ะ

00:01:40.515 --> 00:01:41.775
แล้วเอาเก้าอี้ไว้บนโต๊ะครับ

00:01:42.252 --> 00:01:45.065
แล้วเราทำจนกระทั่งหมดทุกตัวเลยครับ

00:01:45.073 --> 00:01:46.011
(ภัทรพล) ครับ

00:01:46.012 --> 00:01:56.803
[เสียงดนตรี]

00:01:56.804 --> 00:01:58.464
(คุณครูธนายุส) โอเค เรียบร้อย ขอบคุณมาก

00:02:01.821 --> 00:02:03.123
จากสถานการณ์ตัวอย่าง

00:02:03.629 --> 00:02:07.327
เราจะพบว่าคุณครูได้สั่งงานให้นักเรียน

00:02:07.328 --> 00:02:08.519
ทำการจัดโต๊ะ

00:02:09.168 --> 00:02:11.498
โดยใช้คำสั่งทีละคำสั่ง

00:02:12.533 --> 00:02:16.661
แต่คุณครูจำเป็นจะต้องสั่งคำสั่งหลายครั้งมาก

00:02:17.508 --> 00:02:20.674
คุณครูจึงเลือกใช้การทำซ้ำมาแก้ปัญหา

00:02:21.540 --> 00:02:22.909
นอกจากการทำซ้ำ

00:02:22.910 --> 00:02:24.970
ที่เราพบเจอในชีวิตประจำวันแล้ว

00:02:25.308 --> 00:02:27.252
เรายังสามารถพบเจอการทำซ้ำ

00:02:27.253 --> 00:02:28.749
ในสถานการณ์อื่น ๆ ได้อีกครับ

00:02:29.473 --> 00:02:31.120
เราลองมาชมตัวอย่าง ครับ

00:02:33.239 --> 00:02:34.559
(บรรยาย) เกมทายเลข

00:02:36.584 --> 00:02:40.226
เกมทายเลขนั้นเริ่มจากแบ่งผู้เล่นเป็น 2 ฝ่าย

00:02:40.508 --> 00:02:43.991
ฝ่ายแรกจะเป็นผู้เขียนคำตอบไว้ในกระดาษ

00:02:44.165 --> 00:02:46.684
ซึ่งมีค่าตั้งแต่ 0 จนถึง 100

00:02:47.038 --> 00:02:49.736
จากนั้นให้ฝ่ายที่ 2 ทายตัวเลข

00:02:50.092 --> 00:02:53.546
เมื่อฝ่ายที่ 2 ทายตัวเลขมีค่ามากกว่าคำตอบ

00:02:53.839 --> 00:02:57.576
ให้ฝ่ายแรกบอกว่าค่ามากเกินไป

00:02:58.208 --> 00:02:59.780
ฝ่ายที่ 2 ทายตัวเลขอีก

00:03:00.109 --> 00:03:02.064
ถ้ามีค่าน้อยกว่าคำตอบ

00:03:02.618 --> 00:03:05.719
ให้ตอบว่าค่าน้อยเกินไป

00:03:06.368 --> 00:03:09.131
และเมื่อฝ่ายที่ 2 ทายตัวเลขถูกต้อง

00:03:09.468 --> 00:03:12.426
ฝ่ายแรกจะตอบว่าทายถูกต้อง

00:03:12.805 --> 00:03:14.561
จากนั้นจะสลับกันเล่น

00:03:14.934 --> 00:03:18.298
โดยฝ่ายไหนทายตัวเลขได้น้อยครั้งกว่า

00:03:18.637 --> 00:03:19.684
จะเป็นผู้ชนะ

00:03:20.551 --> 00:03:23.570
เราไปชมวิดีโอสาธิตการเล่นเกมทายเลขกันครับ

00:03:24.280 --> 00:03:25.972
(นักเรียนหญิง 1) เราเขียนเสร็จแล้วเริ่มทายได้เลย

00:03:26.192 --> 00:03:27.240
(นักเรียนหญิง 2) 45

00:03:27.424 --> 00:03:28.668
(นักเรียนหญิง 1) ค่ามากเกินไป

00:03:28.898 --> 00:03:29.542
(นักเรียนหญิง 2) 20

00:03:29.543 --> 00:03:30.844
(นักเรียนหญิง 1) ค่าน้อยเกินไป

00:03:30.845 --> 00:03:31.863
(นักเรียนหญิง 2) 30

00:03:31.864 --> 00:03:33.024
(นักเรียนหญิง 1) ค่าน้อยเกินไป

00:03:33.264 --> 00:03:34.028
(นักเรียนหญิง 2) 39

00:03:34.401 --> 00:03:35.515
(นักเรียนหญิง 1) ค่ามากเกินไป

00:03:35.848 --> 00:03:36.850
(นักเรียนหญิง 2) 33

00:03:36.851 --> 00:03:37.953
(นักเรียนหญิง 1) ทายถูกแล้ว

00:03:37.954 --> 00:03:42.571
[เสียงปรบมือ]

00:03:42.572 --> 00:03:44.324
(นักเรียนหญิง 2) เราเขียนเสร็จแล้วมาทายกัน

00:03:44.789 --> 00:03:45.892
(นักเรียนหญิง 1) 98

00:03:45.893 --> 00:03:46.849
มากเกินไป

00:03:47.182 --> 00:03:47.961
(นักเรียนหญิง 1) 71

00:03:47.962 --> 00:03:49.162
(นักเรียนหญิง 2) น้อยเกินไป

00:03:50.186 --> 00:03:51.272
(นักเรียนหญิง 1) 82

00:03:51.419 --> 00:03:52.245
(นักเรียนหญิง 2) ถูกแล้ว

00:03:52.253 --> 00:03:55.824
[เสียงปรบมือ]

00:03:56.465 --> 00:03:58.047
(คุณครูธนายุส) เมื่อเราทำกิจกรรมเกมทายเลข

00:03:58.048 --> 00:03:59.139
เรียบร้อยแล้วนะครับ

00:03:59.640 --> 00:04:03.343
พวกเราลองร่วมกันเขียนรหัสลำลอง

00:04:03.357 --> 00:04:04.990
ของเกมทายเลขนี้ดูนะครับ

00:04:05.490 --> 00:04:14.280
[เสียงนาฬิกา]

00:04:15.014 --> 00:04:15.889
(คุณครูธนายุส) เป็นอย่างไรบ้างครับ

00:04:16.413 --> 00:04:18.261
เขียนรหัสลำลองกันเสร็จแล้วใช่ไหม

00:04:18.761 --> 00:04:20.627
ลองดูนะครับ ว่าเหมือนของผมหรือเปล่า

00:04:21.047 --> 00:04:23.378
เริ่มต้นจากเราสุ่มตัวเลข

00:04:23.379 --> 00:04:25.146
ตั้งแต่ 1 จนถึง 100 ครับ

00:04:25.428 --> 00:04:27.501
จากนั้นไปเก็บไว้ในตัวแปร secret

00:04:28.200 --> 00:04:30.675
และจะทำคำสั่งต่อไปนี้ไปเรื่อย ๆ

00:04:32.081 --> 00:04:36.947
เริ่มจากเรารับค่าจากผู้เล่นที่ทายเป็นจำนวนเต็ม

00:04:36.955 --> 00:04:38.512
มาเก็บไว้ในตัวแปร answer

00:04:39.381 --> 00:04:41.047
จากนั้นตรวจสอบครับ

00:04:41.048 --> 00:04:43.596
ว่าตัวแปร answer มีค่าน้อยกว่า secret ไหม

00:04:44.485 --> 00:04:48.710
ถ้าใช่ เราจะตอบผู้เล่นไปว่าค่าน้อยเกินไป

00:04:49.517 --> 00:04:52.259
แต่ถ้าไม่ใช่ เราจะมาตรวจสอบอีกครับ

00:04:52.260 --> 00:04:55.011
ว่าตัวแปร answer มากกว่า secret หรือเปล่า

00:04:55.684 --> 00:04:59.366
ถ้าใช่ เราจะตอบผู้เล่นไปว่าค่ามากเกินไป

00:05:00.440 --> 00:05:02.435
และถ้าตัว answer

00:05:02.436 --> 00:05:04.202
มีค่าเท่ากับ secret เมื่อไหร่

00:05:04.728 --> 00:05:07.774
เราก็จะตอบผู้เล่นไปว่าทายถูกแล้ว

00:05:08.350 --> 00:05:09.776
และให้จบการทำงาน

00:05:10.868 --> 00:05:12.746
แต่ในกรณีที่ยังทายไม่ถูก

00:05:13.077 --> 00:05:15.823
เราจะวนกลับไปรับค่ามาใหม่

00:05:15.937 --> 00:05:18.285
และตรวจสอบใหม่อีกครั้งหนึ่งไปเรื่อย ๆ

00:05:18.796 --> 00:05:21.511
จนกระทั่งเจอเงื่อนไขจบการทำงานครับ

00:05:23.443 --> 00:05:26.619
การเล่นเกมทายเลข แล้วใช้วิธีการทายแบบสุ่ม

00:05:27.288 --> 00:05:29.809
จำนวนครั้งในการทายน้อยที่สุด

00:05:29.817 --> 00:05:32.432
และพบคำตอบ คือ 1 ครั้ง

00:05:33.305 --> 00:05:35.997
แต่จำนวนครั้งในการทายมากที่สุด

00:05:36.631 --> 00:05:38.579
จะมีโอกาสถึง 100 ครั้ง

00:05:41.251 --> 00:05:43.710
แต่ถ้าเรามีกระบวนการหรือวิธีการ

00:05:44.051 --> 00:05:45.712
ในการค้นหาข้อมูล

00:05:46.155 --> 00:05:49.376
เราจะใช้จำนวนครั้งในการทายน้อยที่สุด

00:05:49.688 --> 00:05:52.219
และพบคำตอบคือ 1 ครั้งเช่นกัน

00:05:53.019 --> 00:05:55.314
แต่จำนวนครั้งในการทายมากที่สุด

00:05:55.928 --> 00:05:58.592
จะเหลือเพียงแค่ 7 ครั้งเท่านั้น

00:06:00.450 --> 00:06:03.657
เราลองหาข้อมูลเกี่ยวกับการค้นหาข้อมูล

00:06:03.658 --> 00:06:05.532
หรือการ Search ข้อมูลดูนะครับ

00:06:08.395 --> 00:06:09.428
Binary Search

00:06:10.048 --> 00:06:12.205
ผมว่าน่าสนใจเลยทีเดียวนะครับ

00:06:12.912 --> 00:06:14.128
ลองหาข้อมูลดูนะครับ

00:06:16.001 --> 00:06:18.287
ปัญหาอย่างหนึ่งของการทำซ้ำ

00:06:18.288 --> 00:06:20.094
คือแล้วเมื่อไหร่ล่ะ

00:06:20.368 --> 00:06:23.183
เราจึงจะหยิบการทำซ้ำนั้นมาใช้งาน

00:06:23.948 --> 00:06:27.654
เราลองกลับไปศึกษาเรื่องการพิจารณารูปแบบ

00:06:28.083 --> 00:06:29.801
หรือ Pattern Recognition

00:06:30.205 --> 00:06:32.392
เราจะพบว่าเมื่อไหร่ก็ตาม

00:06:32.763 --> 00:06:35.166
ที่เราพิจารณารูปแบบการแก้ปัญหา

00:06:35.167 --> 00:06:37.909
แล้วพบว่ามีรูปแบบการแก้ปัญหา

00:06:37.910 --> 00:06:39.032
ที่เหมือน ๆ กัน

00:06:39.559 --> 00:06:41.902
เราก็จะสามารถหยิบการทำซ้ำ

00:06:41.903 --> 00:06:43.454
มาแก้ปัญหาในส่วนนี้ได้ครับ

00:06:44.558 --> 00:06:46.104
จากบทเรียนที่เรียนมา

00:06:46.410 --> 00:06:48.074
เราจะพบว่าการทำซ้ำนั้น

00:06:48.075 --> 00:06:49.581
มีอยู่ 2 รูปแบบใหญ่ ๆ ครับ

00:06:50.120 --> 00:06:53.668
รูปแบบแรก คือ การทำซ้ำที่มีจำนวนรอบที่ชัดเจน

00:06:54.402 --> 00:06:57.288
อย่างเช่น คุณครูสั่งให้นักเรียนยกโต๊ะครับ

00:06:57.788 --> 00:07:01.268
จะสังเกตว่านักเรียนจะทำไปเรื่อย ๆ

00:07:01.268 --> 00:07:03.824
จนกระทั่งหมดจำนวนโต๊ะก็จะหยุดการทำงาน

00:07:04.588 --> 00:07:05.825
กับอีกรูปแบบหนึ่งครับ

00:07:06.334 --> 00:07:09.320
คือ การทำซ้ำที่ไม่มีจำนวนรอบที่ชัดเจนครับ

00:07:09.848 --> 00:07:13.199
แต่จะจบการทำงานก็ต่อเมื่อตรงตามเงื่อนไข

00:07:13.521 --> 00:07:15.769
ยกตัวอย่างเช่น เกมทายเลขครับ

00:07:16.334 --> 00:07:18.275
จะสังเกตว่าเกมทายเลข

00:07:18.708 --> 00:07:21.708
จะไม่รู้ว่าจะจบการทำงานเมื่อครั้งที่เท่าไร

00:07:22.134 --> 00:07:25.378
แต่จะจบการทำงานก็ต่อเมื่อตรงตามเงื่อนไขครับ

00:07:26.630 --> 00:07:30.074
แล้วพวกเราเคยพบการทำซ้ำในรูปแบบใดบ้าง

00:07:30.627 --> 00:07:31.818
และเป็นอย่างไร

00:07:32.366 --> 00:07:33.434
ลองคิดดูนะครับ

00:07:33.534 --> 00:07:45.677
[เสียงดนตรี]