1 00:00:01,410 --> 00:00:02,832 Sau khi đã tìm hiểu về vòng lặp While, 2 00:00:02,832 --> 00:00:04,311 chúng ta cùng bàn về một loại vòng lặp khác, 3 00:00:04,527 --> 00:00:05,611 Vòng lặp For. 4 00:00:05,704 --> 00:00:07,048 Đây là một vòng lặp For tôi đã tạo để đặt 5 00:00:07,048 --> 00:00:08,844 loại pizza ngon nhất, 6 00:00:08,998 --> 00:00:10,606 pizza dứa. 7 00:00:11,022 --> 00:00:12,704 Có thể các bạn sẽ nghĩ, “Mình thích vòng lặp While 8 00:00:12,704 --> 00:00:14,743 tại sao lại phải quan tâm đến vòng lặp khác?” 9 00:00:15,143 --> 00:00:17,248 Rồi các bạn sẽ thấy rằng vòng lặp For là một cách 10 00:00:17,248 --> 00:00:18,887 viết những vòng lặp While đơn giản, 11 00:00:19,057 --> 00:00:20,380 theo con đường ngắn hơn. 12 00:00:21,074 --> 00:00:22,389 Trước khi mổ xẻ vòng lặp For này 13 00:00:22,389 --> 00:00:24,489 ta cùng quan sát một vòng lặp While, 14 00:00:24,582 --> 00:00:25,991 các bạn sẽ thấy quen thuộc hơn một chút, 15 00:00:25,991 --> 00:00:26,815 sau đó chúng ta sẽ quay lại 16 00:00:26,815 --> 00:00:27,942 vòng lặp For này sau ít phút nữa. 17 00:00:28,559 --> 00:00:31,035 Như các bạn đã biết trong bài Intro to While Loops 18 00:00:31,035 --> 00:00:33,544 ta bắt đầu với biến y 19 00:00:33,544 --> 00:00:36,507 và ta viết thông báo bằng vị trí y đó. 20 00:00:36,692 --> 00:00:38,098 Ta muốn tiếp tục lặp 21 00:00:38,098 --> 00:00:40,265 với điều kiện y nhỏ hơn 300, 22 00:00:40,374 --> 00:00:42,787 và mỗi lần lặp tăng y theo 40 đơn vị. 23 00:00:42,787 --> 00:00:44,562 Để củng cố thêm cho mỗi lần lặp, 24 00:00:44,562 --> 00:00:46,754 và cũng là để xem lại nữa, 25 00:00:46,754 --> 00:00:49,158 ta có thể coi “Pineapple pizza is the best” 26 00:00:49,158 --> 00:00:50,324 là một thông báo quan trọng 27 00:00:50,324 --> 00:00:52,025 vì vậy có thể ta sẽ muốn hiển thị nhiều hơn. 28 00:00:52,025 --> 00:00:53,873 Có lẽ ta nên bắt đầu ở phía trên, 29 00:00:54,043 --> 00:00:55,221 quyết định thế đi. 30 00:00:55,221 --> 00:00:57,127 Ta nên chỉnh cho dòng chữ to hơn 31 00:00:57,127 --> 00:00:58,333 để kéo dài được hơn nữa. 32 00:00:58,333 --> 00:00:59,396 Các bạn có nghĩ dòng chữ 33 00:00:59,396 --> 00:01:00,738 nên sát nhau hơn không? 34 00:01:01,276 --> 00:01:03,168 Thế tốt hơn rồi đấy. 35 00:01:03,399 --> 00:01:04,953 Bây giờ ta cùng tìm hiểu cách biến đổi 36 00:01:04,953 --> 00:01:07,123 vòng lặp While này thành một vòng lặp For. 37 00:01:07,539 --> 00:01:09,278 Tôi sẽ chú thích vòng lặp While này 38 00:01:09,278 --> 00:01:11,059 để các bạn có thể thấy rằng vòng lặp For này 39 00:01:11,059 --> 00:01:13,851 đang thực hiện những gì tôi ra lệnh. 40 00:01:14,051 --> 00:01:17,445 Khi tạo vòng lặp For, 41 00:01:17,445 --> 00:01:18,409 ta chỉ cần tạo một ít không gian 42 00:01:18,409 --> 00:01:19,995 để nhập vào sau đó. 43 00:01:19,995 --> 00:01:20,829 Một điều rất quan trọng, 44 00:01:20,829 --> 00:01:22,315 và khác biệt đối với vòng lặp For, 45 00:01:22,315 --> 00:01:23,569 đó là không chỉ có 1, 46 00:01:23,569 --> 00:01:24,484 mà là 3 thứ 47 00:01:24,484 --> 00:01:26,082 xuất hiện trong vòng lặp. 48 00:01:26,929 --> 00:01:28,597 Ta lệnh cho máy tính bằng cách đặt 49 00:01:28,597 --> 00:01:31,223 dấu chấm phẩy ngăn cách 3 phần này. 50 00:01:31,393 --> 00:01:32,455 Ta sẽ có 1 phần ở đây, 51 00:01:32,455 --> 00:01:34,065 1 phần ở đây, 1 phần ở đây, 52 00:01:34,065 --> 00:01:35,472 rồi đưa chúng vào trong vòng lặp 53 00:01:35,472 --> 00:01:37,105 như ta vẫn làm trong bài học trước. 54 00:01:37,521 --> 00:01:39,199 Ta lại nhập những gì vào mỗi phần này? 55 00:01:39,323 --> 00:01:40,339 Thử nghĩ xem, 56 00:01:40,339 --> 00:01:42,945 khi sử dụng vòng lặp “For” tức là ta sẽ 57 00:01:42,945 --> 00:01:46,474 có một dạng như bắt đầu hay khởi chạy. 58 00:01:46,474 --> 00:01:47,754 Sau đó ta sẽ nhập dấu chấm phẩy. 59 00:01:47,754 --> 00:01:49,030 Tiếp theo ta sẽ nhập kiểu như chỉ dẫn 60 00:01:49,030 --> 00:01:50,704 nên lặp trong bao lâu, 61 00:01:52,088 --> 00:01:53,285 sau đó ta có thể nhận thấy 62 00:01:53,577 --> 00:01:55,556 sự thay đổi. 63 00:01:56,941 --> 00:01:59,416 Điều đó thì liên quan gì tới vòng lặp While? 64 00:01:59,586 --> 00:02:00,882 Ta có thể nói cụ thể rằng 65 00:02:00,882 --> 00:02:03,988 phần khởi chạy sẽ thiết lập một biến y ở đây, 66 00:02:03,988 --> 00:02:05,362 vậy nên ta sẽ sao chép và dán lên 67 00:02:06,315 --> 00:02:08,817 phần đầu tiên của vòng lặp For. 68 00:02:08,940 --> 00:02:11,430 Và tương tự nó xuất hiện đầu tiên thì sẽ hiển thị đầu tiên. 69 00:02:11,430 --> 00:02:13,080 Ta có thể thấy rằng phần giữa này đang cho ta biết 70 00:02:13,080 --> 00:02:15,503 ta nên lặp trong bao lâu. 71 00:02:15,503 --> 00:02:17,185 Cái này cho vào giữa. 72 00:02:18,032 --> 00:02:18,995 Sau đó ta sẽ có thay đổi 73 00:02:18,995 --> 00:02:20,695 ở cuối chỗ này, 74 00:02:20,695 --> 00:02:25,577 vì vậy ta sẽ đặt ở cuối vòng lặp For. 75 00:02:25,716 --> 00:02:27,211 Ba phần này luôn luôn phải 76 00:02:27,211 --> 00:02:28,685 diễn ra theo thứ tự này. 77 00:02:28,685 --> 00:02:29,828 Trong vòng lặp For ta luôn luôn phải 78 00:02:29,828 --> 00:02:32,221 bắt đầu với 79 00:02:32,221 --> 00:02:33,959 “This is where this variable should start out as.” 80 00:02:33,959 --> 00:02:34,876 Ở đây là 27. 81 00:02:34,876 --> 00:02:36,650 Sau đó ta phải quyết định 82 00:02:36,650 --> 00:02:37,855 thời gian lặp là bao lâu. 83 00:02:37,855 --> 00:02:41,453 Lặp với điều kiện biến nhỏ hơn 354. 84 00:02:41,453 --> 00:02:42,831 Sau đó ta phải quyết định 85 00:02:42,831 --> 00:02:44,402 cách điều chỉnh thông báo. 86 00:02:44,402 --> 00:02:45,729 Ở đây ta sẽ điều chỉnh 87 00:02:45,837 --> 00:02:47,945 bằng cách tăng y theo 24 đơn vị. 88 00:02:48,715 --> 00:02:50,338 Cuối cùng ta chỉ cần thực hiện những gì 89 00:02:50,338 --> 00:02:52,477 ta muốn bên trong vòng lặp For. 90 00:02:52,507 --> 00:02:54,394 Ta sẽ nhập văn bản vào đây. 91 00:02:54,394 --> 00:02:55,241 Được rồi đó. 92 00:02:55,241 --> 00:02:56,658 Pineapple pizza is the best! 93 00:02:56,905 --> 00:02:58,399 Và rồi tất cả mọi người sẽ biết điều đó. 94 00:02:59,629 --> 00:03:01,279 Ta cùng quan sát kỹ hơn 95 00:03:01,279 --> 00:03:03,338 về những gì đang diễn ra trong vòng lặp For này. 96 00:03:03,338 --> 00:03:05,200 Nếu ta muốn thay đổi vị trí bắt đầu 97 00:03:05,739 --> 00:03:07,593 ta chỉ việc thay đổi khởi chạy ở đây. 98 00:03:07,593 --> 00:03:09,555 Nếu ta muốn thay đổi vị trí kết thúc 99 00:03:09,555 --> 00:03:11,062 ta sẽ thay đổi điểm kết thúc này. 100 00:03:11,139 --> 00:03:12,669 Nếu ta muốn điều chỉnh cách dòng 101 00:03:12,669 --> 00:03:16,250 ta chỉ cần thay đổi gia số. 102 00:03:16,943 --> 00:03:19,365 Sau đó ta cũng có thể thay đổi, 103 00:03:19,365 --> 00:03:20,604 giống như với vòng lặp While, 104 00:03:21,175 --> 00:03:23,307 giá trị của x 105 00:03:23,369 --> 00:03:24,697 khi nhập văn bản. 106 00:03:25,206 --> 00:03:26,147 Tốt rồi! 107 00:03:28,671 --> 00:03:29,916 Một điều ta hay nhầm lẫn 108 00:03:29,916 --> 00:03:31,154 về vòng lặp For là 109 00:03:31,154 --> 00:03:32,518 chức năng của những dấu chấm phẩy này. 110 00:03:32,765 --> 00:03:34,115 Ta chỉ cần nhớ rằng chúng 111 00:03:34,115 --> 00:03:35,122 luôn luôn ngăn cách 112 00:03:35,122 --> 00:03:37,044 ba phần đã đề cập. 113 00:03:37,291 --> 00:03:38,416 Nếu không 114 00:03:38,416 --> 00:03:39,955 ta sẽ có những thông báo lỗi 115 00:03:39,955 --> 00:03:42,195 kỳ cục về vòng lặp For, 116 00:03:42,195 --> 00:03:44,105 vì vậy hãy đảm bảo 117 00:03:44,105 --> 00:03:45,354 ta đã nhập dấu chấm phẩy trong vòng lặp. 118 00:03:45,354 --> 00:03:46,972 Ta cũng có thể nhiệt tình hơn chút nữa 119 00:03:46,972 --> 00:03:48,755 và thêm một dấu chấm phẩy ở cuối. 120 00:03:48,924 --> 00:03:50,852 Nếu ta chỉ nhớ dấu chấm phẩy 121 00:03:50,852 --> 00:03:53,082 chỉ có chức năng ngăn cách ba phần, 122 00:03:53,082 --> 00:03:54,857 thì ta có thể coi 123 00:03:54,857 --> 00:03:56,466 dấu chấm phẩy cuối cùng này chẳng có tác dụng gì cả. 124 00:03:56,466 --> 00:03:58,554 Nó chỉ ở đó cho có thôi. 125 00:03:58,554 --> 00:04:00,380 Ta có thể bỏ cũng được vì nó không cần thiết lắm. 126 00:04:01,641 --> 00:04:02,828 Tôi biết các bạn đang 127 00:04:02,828 --> 00:04:04,088 bắt đầu thấy mệt mỏi vì cứ phải 128 00:04:04,088 --> 00:04:05,313 nhìn vòng lặp For chuyển thành 129 00:04:05,313 --> 00:04:06,554 vòng lặp While rồi ngược lại. 130 00:04:06,554 --> 00:04:08,264 Ta cùng làm thêm một lần nữa 131 00:04:08,264 --> 00:04:09,738 để các bạn có thể thấy rằng vòng lặp For 132 00:04:09,738 --> 00:04:11,402 thực chất chỉ là một cách viết khác 133 00:04:11,402 --> 00:04:12,681 của một vòng lặp While đơn giản, 134 00:04:12,681 --> 00:04:14,571 rồi các bạn sẽ cảm thấy rất rất tự tin 135 00:04:14,571 --> 00:04:16,523 và hiểu được cách đưa 136 00:04:16,523 --> 00:04:18,499 một vòng lặp For trở về vòng lặp While. 137 00:04:18,514 --> 00:04:19,743 Bởi thật ra ta có thể thực hiện điều đó 138 00:04:19,743 --> 00:04:21,122 đối với mọi loại vòng lặp For, 139 00:04:21,122 --> 00:04:22,568 chứ không chỉ có vòng lặp này. 140 00:04:22,706 --> 00:04:24,056 Trước hết ta phải nghĩ xem 141 00:04:24,056 --> 00:04:26,584 nên đặt giá trị đầu tiên này ở đâu 142 00:04:26,584 --> 00:04:28,496 bên trong vòng lặp For. 143 00:04:28,635 --> 00:04:30,769 Vì thao tác đó chỉ khởi chạy biến này 144 00:04:30,769 --> 00:04:32,281 nên đừng quên đưa nó ra bên ngoài, 145 00:04:32,281 --> 00:04:33,789 chứ không phải bên trong vòng lặp While. 146 00:04:33,789 --> 00:04:35,384 Và nên để xuất hiện trước 147 00:04:35,384 --> 00:04:36,742 vì ta sẽ cần đến nó 148 00:04:36,742 --> 00:04:38,298 khi chạy vòng lặp While. 149 00:04:38,298 --> 00:04:38,884 Sau đó ta xét, 150 00:04:38,884 --> 00:04:39,945 “Nên đặt điều kiện này ở đâu?” 151 00:04:39,945 --> 00:04:41,260 Đơn giản thôi. 152 00:04:41,260 --> 00:04:42,745 Hẳn các bạn còn nhớ 153 00:04:42,745 --> 00:04:44,268 điều kiện dừng, 154 00:04:44,268 --> 00:04:45,794 hay điều kiện repeat until, 155 00:04:45,794 --> 00:04:47,219 thường phải được đưa vào trong đây. 156 00:04:47,219 --> 00:04:49,108 Ta sẽ tiếp tục lặp 157 00:04:49,108 --> 00:04:51,815 chừng nào y còn nhỏ hơn 313. 158 00:04:52,923 --> 00:04:54,327 Và cuối cùng, là change. 159 00:04:54,327 --> 00:04:55,786 Ta luôn luôn đặt change ở cuối 160 00:04:55,786 --> 00:04:56,775 vòng lặp While trong những vòng lặp 161 00:04:56,775 --> 00:04:57,494 mà ta từng thấy. 162 00:04:57,494 --> 00:04:58,971 Chúng ta nên đặt nó ở đây. 163 00:05:00,201 --> 00:05:02,003 Ta chỉ cần di chuyển lệnh gọi văn bản này 164 00:05:02,003 --> 00:05:04,225 vào trong và thế là xong. 165 00:05:04,225 --> 00:05:05,845 Ta có thể chú giải vòng lặp For này 166 00:05:05,937 --> 00:05:07,431 và quan sát điều tương tự 167 00:05:07,431 --> 00:05:10,053 diễn ra lần thứ hai. 168 00:05:11,115 --> 00:05:13,665 Hy vọng đến thời điểm này các bạn đã nhận ra 169 00:05:13,665 --> 00:05:15,620 thực chất vòng lặp For mới này không cần thiết. 170 00:05:15,744 --> 00:05:18,072 Ta có thể ngẫm lại toàn bộ cuộc đời lập trình của mình 171 00:05:18,072 --> 00:05:20,270 chỉ để viết những vòng lặp trông như thế này, 172 00:05:20,270 --> 00:05:21,804 nhưng mức độ ngắn gọn của vòng lặp For này 173 00:05:21,804 --> 00:05:23,815 cũng khá ấn tượng đấy chứ, 174 00:05:23,815 --> 00:05:24,992 và khi đã quen với loại vòng lặp này 175 00:05:24,992 --> 00:05:26,576 ta sẽ thấy mọi thứ trở nên dễ hiểu hơn. 176 00:05:26,576 --> 00:05:27,685 Còn với cách 177 00:05:27,685 --> 00:05:29,195 khởi tạo biến. 178 00:05:29,549 --> 00:05:30,518 Ta đặt thời gian lặp 179 00:05:30,518 --> 00:05:32,394 và sau đó thay đổi biến ở đây. 180 00:05:33,595 --> 00:05:34,873 Nếu các bạn thực sự ghét vòng lặp For, 181 00:05:34,873 --> 00:05:36,494 thì các bạn không cần phải sử dụng, 182 00:05:36,494 --> 00:05:38,337 nhưng các bạn nên làm quen với việc thường xuyên nhìn thấy chúng. 183 00:05:38,337 --> 00:05:39,920 Nếu chúng quá phức tạp hãy nhớ rằng 184 00:05:39,920 --> 00:05:40,966 ta có thể biến đổi trở về 185 00:05:40,966 --> 00:05:42,398 vòng lặp While như thế này. 186 00:05:42,952 --> 00:05:44,646 Nếu bạn ưa mạo hiểm hãy thử sử dụng 187 00:05:44,646 --> 00:05:46,192 vòng lặp For trong chương trình mới của mình, 188 00:05:46,192 --> 00:05:47,660 hoặc xem lại một số chương trình cũ, 189 00:05:47,660 --> 00:05:49,077 những vòng lặp While đơn giản và biến đổi chúng 190 00:05:49,077 --> 00:05:51,259 thành vòng lặp For nếu thấy thích hợp. 191 00:05:51,766 --> 00:05:54,750 Lưu ý cuối cùng, không phải lúc nào 192 00:05:54,750 --> 00:05:56,594 ta cũng có thể biến đổi vòng lặp While thành vòng lặp For, 193 00:05:56,594 --> 00:05:58,197 chỉ khi nào chúng có dạng cực kỳ đơn giản, 194 00:05:58,197 --> 00:05:59,942 trong đó ta có thể thấy rõ 195 00:05:59,942 --> 00:06:01,759 mình đang khởi tạo biến nào, 196 00:06:01,759 --> 00:06:03,336 thời gian lặp là bao lâu, 197 00:06:03,336 --> 00:00:00,000 và biến thay đổi như thế nào.