Ta cùng quay lại với chương trình mảng về bạn bè của tôi.
Có một điều khiến tôi cảm thấy rất khó chịu.
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.
Giả sử tôi thêm Winston.
Cậu ta không tự động hiển thị đâu.
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.
Quá nhiều thứ phải làm.
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.
Các bạn có nhớ những gì đã học về vòng lặp không?
Đó là phương pháp lặp mã liên tục rất hiệu quả.
Giống như khi ta muốn có một hàng cây hay một chùm bóng.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Sau đó ta tạo vòng lặp while. Ta nhập while(friendNum < myfriends.length).
Ta sẽ so sánh biến đếm hiện tại với tổng số phần tử trong mảng.
Và áp dụng lệnh văn bản trong vòng lặp.
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.
Bây giờ ta sẽ chỉ thêm một vị trí thôi.
Ta đang mắc phải lỗi vòng lặp vô hạn vì ta chưa thay đổi friendNum.
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.
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.
Ta đã hiện thị toàn bộ tên rồi, nhưng chúng đang chồng chéo lên nhau.
Vì vậy ta cần phải thay đổi vị trí y.
Ta nhập friendNum*30.
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.
Ta phải thêm 30 vào biến. Giờ thì tên sẽ hiển thị từ 30 trở đi.
Đẹp rồi đấy! Hiện tại ta đã có một vòng lặp hiển thị mảng.
Đ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!
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.
Vậy là ta có thể xóa mã được rồi. Nó không cần thiết nữa.
Ta cùng xem lại mã này một chút nhé.
Ta bắt đầu với friendNum = 0.
Ta sẽ kiểm tra xem liệu friendNum có nhỏ hơn độ dài hiện tại không.
0 nhỏ hơn 6. Như vậy điều kiện đúng.
Sau đó ta nhập vào bên trong, text myFriends friendNum.
Lần đầu tiên sẽ là số 0.
Sau đó 30 + 0 * 30.
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.
Tiếp theo là friendNum ++. Sau đó tới phần tử 1.
Đ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ó”.
Rồi cứ thế liên tục.
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.
Vậy 5 có nhỏ hơn 6 không? Có.
Ta hiển thị myFriends 5.
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.
Vây điều kiện sai. Máy tính sẽ không hiển thị phần tử thứ 6,
cũng tốt vì chẳng có gì ở chỉ số 6 cả.
Ta có phần tử thứ 6, nhưng không có chỉ số 6.
Chuyện 0 và 1 có thể khá khó hiểu, nhưng dần dần bạn sẽ quen thôi.
Được rồi, vậy đó chính là vòng lặp.
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.
Đối với vòng lặp for, ta sẽ nhập for, sau đó var friendNum = 0, kế đến là điều kiện
'friendNum < myFriends.length'
và gia số friendNum ++,
rồi ta có thể đưa dòng mã này vào bên trong vòng lặp for.
Tôi sẽ thay đổi x để các bạn thấy
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ả.