0:00:01.273,0:00:04.238 Ta cùng quay lại với chương trình mảng về bạn bè của tôi. 0:00:04.238,0:00:07.007 Có một điều khiến tôi cảm thấy rất khó chịu. 0:00:07.007,0:00:11.295 Mỗi khi thêm một người bạn mới vào mảng, tôi lại phải thêm một lệnh text ở dưới đây. 0:00:11.295,0:00:13.378 Giả sử tôi thêm Winston. 0:00:13.378,0:00:15.211 Cậu ta không tự động hiển thị đâu. 0:00:15.211,0:00:20.775 Nếu tôi muốn cậu ta hiển thị, tôi phải nhập text(myFriends[3], sau đó thay đổi vị trí y và ta sẽ nhìn thấy Winston. 0:00:23.630,0:00:25.414 Quá nhiều thứ phải làm. 0:00:25.522,0:00:30.767 Tôi chỉ muốn mỗi lần thêm ai đso vào mảng, lệnh văn bản sẽ tự động được nhập. 0:00:31.937,0:00:34.736 Các bạn có nhớ những gì đã học về vòng lặp không? 0:00:34.736,0:00:38.378 Đó là phương pháp lặp mã liên tục rất hiệu quả. 0:00:38.378,0:00:43.273 Giống như khi ta muốn có một hàng cây hay một chùm bóng. 0:00:43.273,0:00:49.628 Hóa ra, vòng lặp còn rất hữu ích trong việc chạy một đoạn mã trên từng phần tử trong một mảng. 0:00:49.628,0:00:57.378 Trên thực tế, hầu như mỗi khi sử dụng mảng, ta đều phải sử dụng vòng lặp. Chúng phối hợp với nhau rất tốt. 0:00:57.378,0:01:03.736 Ta hãy sử dụng vòng lặp để hiển thị tên bạn bè của tôi, thay vì phải nhập toàn bộ chỗ lệnh văn bản này, để cho các bạn thấy ý đồ của tôi. 0:01:03.736,0:01:07.795 Ta sẽ bắt đầu với ba câu hỏi mà ta thường tự đặt ra khi tạo vòng lặp. 0:01:07.795,0:01:13.438 Thứ nhất, tôi muốn lặp cái gì? Hãy nhìn lên đây. Cái gì đang được lặp lại? Lệnh text. 0:01:13.438,0:01:26.069 Mỗi lần lặp tôi muốn thay đổi cái gì? Ta cùng quan sát và xem có gì khác biệt. Vị trí y và chỉ số hiện tại, đúng không? Vậy là friendNum và vị trí y. 0:01:26.069,0:01:33.570 Và ta nên lặp trong bao lâu? Ta sẽ lặp cho tới khi không còn bạn bè để lặp nữa. 0:01:33.570,0:01:37.440 Sau khi đã xác định được những gì mình cần, ta có thể tiến hành tạo vòng lặp. 0:01:37.440,0:01:44.378 Trước hết ta tạo một biến đếm để theo dõi vị trí của mình trong vòng lặp. Ta nhập var friendNum = 0. 0:01:44.378,0:01:50.471 Ta sẽ bắt đầu với số 0 vì 0 là phần tử đầu tiên trong mảng, không phải 1. 0:01:50.548,0:01:57.766 Sau đó ta tạo vòng lặp while. Ta nhập while(friendNum < myfriends.length). 0:01:57.766,0:02:04.462 Ta sẽ so sánh biến đếm hiện tại với tổng số phần tử trong mảng. 0:02:04.462,0:02:07.868 Và áp dụng lệnh văn bản trong vòng lặp. 0:02:08.068,0:02:13.460 Ta nhập text(myFriends[ - và tại vị trí này, thay vì số, ta sẽ nhập friendNum vì friendNum thể hiện số bạn bè hiện tại. 0:02:13.460,0:02:17.961 Bây giờ ta sẽ chỉ thêm một vị trí thôi. 0:02:17.961,0:02:25.710 Ta đang mắc phải lỗi vòng lặp vô hạn vì ta chưa thay đổi friendNum. 0:02:25.710,0:02:30.230 Hãy nhớ rằng, mỗi lần lặp ta đều phải gia tăng friendNum, nếu không vòng lặp sẽ chạy mãi mãi vì điều kiện luôn luôn đúng. 0:02:34.750,0:02:39.271 Tôi thấy có điều gì đó ở đây. Tôi sẽ chú thích mã cũ để có thể hiểu được chuyện gì vừa xảy ra. 0:02:39.271,0:02:43.607 Ta đã hiện thị toàn bộ tên rồi, nhưng chúng đang chồng chéo lên nhau. 0:02:43.607,0:02:45.706 Vì vậy ta cần phải thay đổi vị trí y. 0:02:45.706,0:02:50.211 Ta nhập friendNum*30. 0:02:50.211,0:02:55.129 Vậy là tốt rồi nhưng Sophia đang bị ra khỏi màn hình và sẽ không vui tí nào nếu biết đâu. 0:02:55.129,0:02:59.628 Ta phải thêm 30 vào biến. Giờ thì tên sẽ hiển thị từ 30 trở đi. 0:02:59.628,0:03:04.294 Đẹp rồi đấy! Hiện tại ta đã có một vòng lặp hiển thị mảng. 0:03:04.294,0:03:13.569 Điều đó có nghĩa là khi ta thêm người, ví dụ như ông OhNoes kia, hay thậm chí Sal, vào mảng thì Sal sẽ trở thành bạn của tôi. Tuyệt vời! 0:03:13.569,0:03:21.271 Các bạn có thể thấy tên mới sẽ tự động được hiển thị vì vòng lặp luôn luôn rà lại toàn bộ mảng. 0:03:21.271,0:03:24.296 Vậy là ta có thể xóa mã được rồi. Nó không cần thiết nữa. 0:03:24.296,0:03:28.237 Ta cùng xem lại mã này một chút nhé. 0:03:28.237,0:03:31.628 Ta bắt đầu với friendNum = 0. 0:03:31.628,0:03:34.673 Ta sẽ kiểm tra xem liệu friendNum có nhỏ hơn độ dài hiện tại không. 0:03:34.673,0:03:37.841 0 nhỏ hơn 6. Như vậy điều kiện đúng. 0:03:37.841,0:03:41.712 Sau đó ta nhập vào bên trong, text myFriends friendNum. 0:03:41.712,0:03:44.294 Lần đầu tiên sẽ là số 0. 0:03:44.294,0:03:47.295 Sau đó 30 + 0 * 30. 0:03:47.295,0:03:53.712 Sophia sẽ được hiển thị tại vị trí 10 và 30. Đó chính là chức năng của đoạn mã này. 0:03:53.712,0:03:56.295 Tiếp theo là friendNum ++. Sau đó tới phần tử 1. 0:03:56.295,0:04:00.268 Đoạn mã sẽ lại quay lại từ đầu và tự hỏi, “OK, 1 có nhỏ hơn 6 không? Có”. 0:04:00.361,0:04:02.396 Rồi cứ thế liên tục. 0:04:02.488,0:04:10.957 Và cuối cùng ta có Sal. Hãy nhớ rằng, Sal là phần tử thứ 6 trong mảng, nhưng chỉ số lại là 5, vì ta bắt đầu từ 0. 0:04:11.034,0:04:13.296 Vậy 5 có nhỏ hơn 6 không? Có. 0:04:13.296,0:04:15.462 Ta hiển thị myFriends 5. 0:04:15.462,0:04:21.628 Sau đó biến tăng lên 6 và ta lại hỏi, “6 có nhỏ hơn 6 không?” Không, nó bằng nhau. 0:04:21.628,0:04:25.440 Vây điều kiện sai. Máy tính sẽ không hiển thị phần tử thứ 6, 0:04:25.440,0:04:29.272 cũng tốt vì chẳng có gì ở chỉ số 6 cả. 0:04:29.272,0:04:32.772 Ta có phần tử thứ 6, nhưng không có chỉ số 6. 0:04:32.772,0:04:38.570 Chuyện 0 và 1 có thể khá khó hiểu, nhưng dần dần bạn sẽ quen thôi. 0:04:38.570,0:04:41.402 Được rồi, vậy đó chính là vòng lặp. 0:04:41.402,0:04:45.045 Bây giờ, nếu muốn, các bạn cũng có thể sử dụng vòng lặp for nếu thích vòng lặp for hơn. 0:04:45.045,0:04:52.212 Đối với vòng lặp for, ta sẽ nhập for, sau đó var friendNum = 0, kế đến là điều kiện 0:04:52.212,0:04:57.237 'friendNum < myFriends.length' 0:04:57.237,0:05:01.672 và gia số friendNum ++, 0:05:01.672,0:05:06.711 rồi ta có thể đưa dòng mã này vào bên trong vòng lặp for. 0:05:06.711,0:05:09.711 Tôi sẽ thay đổi x để các bạn thấy 0:05:09.711,0:00:00.000 quy trình giống y hêt. Sử dụng vòng lặp nào là tùy thuộc vào bạn, tôi chỉ nhấn mạnh nên sử dụng vòng lặp khi làm việc với mảng vì nó cực kỳ hiệu quả.