0:00:00.700,0:00:07.260 Ta cùng tìm hiểu về vòng lặp nhé. Ở đây tôi có một vòng lặp while, và chỉ với một vài dòng mã, tôi có thể hiển thị thông báo này trên toàn bộ màn hình. 0:00:07.260,0:00:10.335 Nếu tôi tiếp tục thay đổi thông báo như thế này, bạn biết đấy, để trông nổi bật hơn ấy, 0:00:10.335,0:00:11.926 thì tất cả thông báo sẽ thay đổi theo. 0:00:11.926,0:00:15.833 Vậy bí quyết là gì? Chúng ta có thể xem lại đoạn mã này. 0:00:15.833,0:00:19.422 Nhưng trước hết ta cùng nhớ lại và nghĩ về cách viết chương trình này 0:00:19.422,0:00:22.471 chỉ với những gì ta đã biết cho tới hiện tại mà không sử dụng vòng lặp. 0:00:22.471,0:00:26.751 Vậy, để làm được điều đó, chúng ta sẽ phải viết đi viết lại một đống văn bản giống nhau, phải không? 0:00:26.751,0:00:32.590 Ta sẽ nhập text, message, tôi sẽ đưa vào vị trí đầu tiên, và giờ vấn đề chỉ còn là lặp lại văn bản này 0:00:32.590,0:00:36.336 đủ để thông báo xuất hiện cho tới cuối màn hình. 0:00:36.336,0:00:38.949 Và sẽ mất rất nhiều công sức, đúng không nào? 0:00:38.949,0:00:42.753 Vì cuối màn hình còn xa lắm. Và sẽ còn tệ hơn nếu 0:00:42.753,0:00:46.758 bạn nói với tôi rằng, này, khoảng cách không để 70 được, sát hơn nữa đi, để khoảng cách 0:00:46.758,0:00:50.709 60 đi. Và giờ thì ảnh hưởng đến cả chương trình nữa vì khoảng cách sẽ nhỏ hơn 0:00:50.709,0:00:55.036 và từ đó, ta sẽ phải gọi nhiều văn bản hơn. 0:00:55.036,0:00:58.261 Trên thực tế, cách này sẽ còn tốn nhiều thời gian hơn để có thể phủ kín màn hình. 0:00:58.261,0:01:02.176 Vì vậy sẽ rắc rối cực kỳ đấy, và may mắn thay chúng ta đã có vòng lặp hỗ trợ. 0:01:02.176,0:01:06.210 Từ nay trở đi, bất cứ khi nào ta thấy có mã lặp, suy nghĩ đầu tiên hiện lên phải là 0:01:06.210,0:01:10.087 “Mình có thể sử dụng vòng lặp không?” Vòng lặp cho phép ta lặp lại một đoạn mã 0:01:10.087,0:01:14.251 liên tục, và chỉ cần một chút thay đổi cho mỗi lần lặp. Và sau đây 0:01:14.251,0:01:17.868 là cách ta sử dụng vòng lặp để viết đoạn mã này. Trước hết, ta gõ “while”, 0:01:17.868,0:01:22.089 dấu ngoặc đơn, và dấu ngoặc nhọn. Ta sẽ gặp thông báo này, nhưng 0:01:22.089,0:01:26.301 đó là bởi ta chưa xong việc thôi. Đừng lo, thông báo sẽ biến mất khi ta hoàn thành. 0:01:26.301,0:01:30.810 Như vậy mỗi lần viết một vòng lặp ta phải trả lời 3 câu hỏi chính. 0:01:30.825,0:01:33.370 Đó là: 0:01:33.370,0:01:37.371 câu hỏi thứ nhất là, “Ta muốn lặp cái gì?” Và 0:01:37.371,0:01:41.466 tất cả những thứ ta cần lặp đều phải nằm trong ngoặc nhọn. 0:01:41.466,0:01:46.198 Vậy trong trường hợp này ta muốn lặp lệnh gọi “text”, ta sẽ đưa nó vào đây. 0:01:46.198,0:01:49.571 Nhưng có vẻ hơi kỳ cục phải không? Vì hiện tại ta sẽ chỉ lặp đi lặp lại 0:01:49.571,0:01:53.477 cùng một lệnh gọi text, không hiệu quả cho lắm, nên ta cần thứ gì đó 0:01:53.477,0:01:57.710 khác biệt. Từ đó ta có câu hỏi thứ 2, đó là “Mỗi lần lặp ta muốn thay đổi điều gì?” 0:01:57.710,0:02:01.423 Vậy ta muốn thay đổi vị trí “y” đúng không? Ta muốn khoảng cách là 60 rồi sau đó ta lại muốn nó 0:02:01.423,0:02:05.503 trở thành 80. Vậy thì ta sẽ đặt là một biến. 0:02:05.503,0:02:09.476 Gọi y, vì đó là vị trí y. Ta sẽ tiếp tục khai một biến 0:02:09.476,0:02:13.376 ở trên đây. Tôi sẽ bắt đầu với 40. Và cuối cùng, ta chỉ cần 0:02:13.376,0:02:17.205 thay đổi y. Ta có thể thay đổi ở dưới đây, nhập “ y = y + 20” 0:02:17.205,0:02:21.088 và mỗi lần lặp biến sẽ lại lớn hơn. Trên thực tế, ở đây ta có thể sử dụng 0:02:21.088,0:02:24.745 kiến thức từ bài học incrementing shortcut. Thật tuyệt vời, bây giờ ta cứ thế 0:02:24.745,0:02:29.092 mà áp dụng shortcut. Tuyệt vời, và bây giờ ta chỉ 0:02:29.092,0:02:32.705 cần trả lời câu hỏi thứ 3, đó là “Ta nên lặp trong bao lâu?” 0:02:32.705,0:02:36.531 Chúng ta muốn lặp đi lặp lại nhiều lần, nhưng lại không muốn lặp mãi mãi đúng không? 0:02:36.531,0:02:41.252 Nếu lặp mãi mãi thì, trước hết, ta sẽ phải đợi rất lâu, và thứ hai, trình duyệt có nguy cơ ngưng hoạt động nữa. 0:02:41.252,0:02:44.471 Nhưng hy vọng là không. Vì vậy, ta chỉ cần 0:02:44.471,0:02:48.371 lặp đến cuối trang thôi nhỉ? Điều đó có nghĩa là ta sẽ lặp 0:02:48.371,0:02:52.469 miễn sao y nhỏ hơn 400. Vậy ta sẽ đưa vào đây, và 0:02:52.469,0:02:56.426 thế là xong! Ta đã có thông báo hiển thị xuống tận cuối màn hình. 0:02:56.426,0:02:59.920 Và ta có thể thấy phương pháp này đơn giản hơn rất nhiều so với phương pháp trước, như các bạn biết đấy, 0:02:59.920,0:03:04.175 mất rất nhiều thời gian để viết, vậy mà thậm chí chưa xong nổi 1/4. 0:03:04.175,0:03:08.090 Ta có thể bỏ phương pháp đó đi và viết chương trình theo phương pháp mới này. 0:03:08.090,0:03:11.711 Bây giờ, ta cùng tìm hiểu sâu hơn một chút nhé. Với mỗi lần lặp 0:03:11.711,0:03:15.634 tôi sẽ lại xuất y. Ta nhập “y is now”, sau đó ở dưới đây 0:03:15.634,0:03:19.410 tôi sẽ ghim y vào cuối thông báo để các bạn có thể nhìn thấy. 0:03:19.410,0:03:23.343 Hiện tại, giá trị đang tăng dần theo 20 đơn vị, và ta có thể thay đổi 0:03:23.343,0:03:27.257 giá trị đó bằng cách thay đổi biến này. Các bạn có thể chuyển thành, ví dụ, 0:03:27.257,0:03:31.426 50 đơn vị. Và bây giờ, giá trị tăng dần theo 50 đơn vị. Tương tự, 0:03:31.426,0:03:35.578 ta có thể xuất và thay đổi những giá trị khác. Và 0:03:35.578,0:03:39.201 các bạn có thể thấy được điều đó ảnh hưởng như thế nào đến vị trí chương trình ngừng chạy. 0:03:39.201,0:03:44.007 Để hiểu được điều này, ta có thể coi nó như 0:03:44.007,0:03:47.342 một mệnh đề “if”. Ta có biểu thức boolean 0:03:47.342,0:03:52.009 hệt như các bạn đã được học. Sau đó, ta sẽ chạy phần thân của mệnh đề này, 0:03:52.009,0:03:55.469 chỉ khi biểu thức boolean đúng, nếu không ta sẽ nhảy luôn 0:03:55.469,0:03:59.093 đến cuối cùng. Nhưng điều thú vị là với một vòng lặp while ta có 0:03:59.093,0:04:03.864 một dòng bí ẩn ở dưới cùng với nội dung “go back to the start of the loop”. 0:04:03.864,0:04:07.202 Và ý nghĩa của câu chỉ dẫn bí ẩn này là 0:04:07.202,0:04:11.071 thay vì thoát và tiếp tục lặp, giống như mệnh đề “if”, 0:04:11.071,0:04:15.032 mỗi lần lặp ta sẽ quay lại từ đầu và kiểm tra xem 0:04:15.032,0:04:19.204 điều kiện có còn đúng nữa hay không. Nếu đúng, ta sẽ tiếp tục lặp thêm 0:04:19.204,0:04:23.238 một lần nữa. Và đúng như các bạn đoán, ta lại lặp lần 2, và cứ thế liên tục... 0:04:23.238,0:04:27.086 ta sẽ kiểm tra, các bạn biết đấy, quay lại từ đầu. Y có còn nhỏ hơn 279 không? 0:04:27.086,0:04:31.565 Nếu vẫn nhỏ hơn, ta sẽ lặp thêm một lần nữa và tiếp tục kiểm tra. 0:04:31.565,0:04:34.591 Nếu không, ta sẽ quay trở về đầu vòng lặp. Và cuối cùng, 0:04:34.591,0:04:38.478 ta sẽ thoát và tiếp tục chạy chương trình. 0:04:38.478,0:04:42.703 Vậy là tốt rồi, vẫn còn nhiều phương pháp sử dụng vòng lặp thú vị khác mà các bạn sắp được tìm hiểu, nhưng 0:04:42.703,0:00:00.000 hiện tại, đây đã làn một khởi đầu mỹ mãn rồi.