WEBVTT 00:00:00.700 --> 00: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. 00:00:07.260 --> 00: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, 00:00:10.335 --> 00:00:11.926 thì tất cả thông báo sẽ thay đổi theo. 00:00:11.926 --> 00:00:15.833 Vậy bí quyết là gì? Chúng ta có thể xem lại đoạn mã này. 00:00:15.833 --> 00: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 00:00:19.422 --> 00: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. 00:00:22.471 --> 00: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? 00:00:26.751 --> 00: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 00:00:32.590 --> 00:00:36.336 đủ để thông báo xuất hiện cho tới cuối màn hình. 00:00:36.336 --> 00:00:38.949 Và sẽ mất rất nhiều công sức, đúng không nào? 00:00:38.949 --> 00:00:42.753 Vì cuối màn hình còn xa lắm. Và sẽ còn tệ hơn nếu 00:00:42.753 --> 00: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 00:00:46.758 --> 00: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 00:00:50.709 --> 00:00:55.036 và từ đó, ta sẽ phải gọi nhiều văn bản hơn. 00:00:55.036 --> 00: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. 00:00:58.261 --> 00: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ợ. 00:01:02.176 --> 00: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à 00:01:06.210 --> 00: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ã 00:01:10.087 --> 00: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 00:01:14.251 --> 00: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”, 00:01:17.868 --> 00: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 00:01:22.089 --> 00: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. 00:01:26.301 --> 00: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. 00:01:30.825 --> 00:01:33.370 Đó là: 00:01:33.370 --> 00:01:37.371 câu hỏi thứ nhất là, “Ta muốn lặp cái gì?” Và 00:01:37.371 --> 00:01:41.466 tất cả những thứ ta cần lặp đều phải nằm trong ngoặc nhọn. 00:01:41.466 --> 00: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. 00:01:46.198 --> 00: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 00:01:49.571 --> 00: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ì đó 00:01:53.477 --> 00: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ì?” 00:01:57.710 --> 00: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ó 00:02:01.423 --> 00:02:05.503 trở thành 80. Vậy thì ta sẽ đặt là một biến. 00:02:05.503 --> 00:02:09.476 Gọi y, vì đó là vị trí y. Ta sẽ tiếp tục khai một biến 00:02:09.476 --> 00:02:13.376 ở trên đây. Tôi sẽ bắt đầu với 40. Và cuối cùng, ta chỉ cần 00:02:13.376 --> 00:02:17.205 thay đổi y. Ta có thể thay đổi ở dưới đây, nhập “ y = y + 20” 00:02:17.205 --> 00: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 00:02:21.088 --> 00: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ế 00:02:24.745 --> 00:02:29.092 mà áp dụng shortcut. Tuyệt vời, và bây giờ ta chỉ 00:02:29.092 --> 00:02:32.705 cần trả lời câu hỏi thứ 3, đó là “Ta nên lặp trong bao lâu?” 00:02:32.705 --> 00: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? 00:02:36.531 --> 00: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. 00:02:41.252 --> 00:02:44.471 Nhưng hy vọng là không. Vì vậy, ta chỉ cần 00:02:44.471 --> 00:02:48.371 lặp đến cuối trang thôi nhỉ? Điều đó có nghĩa là ta sẽ lặp 00:02:48.371 --> 00:02:52.469 miễn sao y nhỏ hơn 400. Vậy ta sẽ đưa vào đây, và 00:02:52.469 --> 00: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. 00:02:56.426 --> 00: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, 00:02:59.920 --> 00: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. 00:03:04.175 --> 00: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. 00:03:08.090 --> 00: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 00:03:11.711 --> 00:03:15.634 tôi sẽ lại xuất y. Ta nhập “y is now”, sau đó ở dưới đây 00:03:15.634 --> 00: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. 00:03:19.410 --> 00:03:23.343 Hiện tại, giá trị đang tăng dần theo 20 đơn vị, và ta có thể thay đổi 00:03:23.343 --> 00: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ụ, 00:03:27.257 --> 00:03:31.426 50 đơn vị. Và bây giờ, giá trị tăng dần theo 50 đơn vị. Tương tự, 00:03:31.426 --> 00:03:35.578 ta có thể xuất và thay đổi những giá trị khác. Và 00:03:35.578 --> 00: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. 00:03:39.201 --> 00:03:44.007 Để hiểu được điều này, ta có thể coi nó như 00:03:44.007 --> 00:03:47.342 một mệnh đề “if”. Ta có biểu thức boolean 00:03:47.342 --> 00: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, 00:03:52.009 --> 00:03:55.469 chỉ khi biểu thức boolean đúng, nếu không ta sẽ nhảy luôn 00:03:55.469 --> 00: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ó 00:03:59.093 --> 00: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”. 00:04:03.864 --> 00:04:07.202 Và ý nghĩa của câu chỉ dẫn bí ẩn này là 00:04:07.202 --> 00:04:11.071 thay vì thoát và tiếp tục lặp, giống như mệnh đề “if”, 00:04:11.071 --> 00:04:15.032 mỗi lần lặp ta sẽ quay lại từ đầu và kiểm tra xem 00:04:15.032 --> 00: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 00:04:19.204 --> 00: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... 00:04:23.238 --> 00: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? 00:04:27.086 --> 00: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. 00:04:31.565 --> 00:04:34.591 Nếu không, ta sẽ quay trở về đầu vòng lặp. Và cuối cùng, 00:04:34.591 --> 00:04:38.478 ta sẽ thoát và tiếp tục chạy chương trình. 00:04:38.478 --> 00: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 00:04:42.703 --> 00:00:00.000 hiện tại, đây đã làn một khởi đầu mỹ mãn rồi.