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.
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,
thì tất cả thông báo sẽ thay đổi theo.
Vậy bí quyết là gì? Chúng ta có thể xem lại đoạn mã này.
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
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.
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?
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
đủ để thông báo xuất hiện cho tới cuối màn hình.
Và sẽ mất rất nhiều công sức, đúng không nào?
Vì cuối màn hình còn xa lắm. Và sẽ còn tệ hơn nếu
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
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
và từ đó, ta sẽ phải gọi nhiều văn bản hơn.
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.
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ợ.
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à
“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ã
liên tục, và chỉ cần một chút thay đổi cho mỗi lần lặp. Và sau đây
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”,
dấu ngoặc đơn, và dấu ngoặc nhọn. Ta sẽ gặp thông báo này, nhưng
đó 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.
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.
Đó là:
câu hỏi thứ nhất là, “Ta muốn lặp cái gì?” Và
tất cả những thứ ta cần lặp đều phải nằm trong ngoặc nhọn.
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.
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
cùng một lệnh gọi text, không hiệu quả cho lắm, nên ta cần thứ gì đó
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ì?”
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ó
trở thành 80. Vậy thì ta sẽ đặt là một biến.
Gọi y, vì đó là vị trí y. Ta sẽ tiếp tục khai một biến
ở trên đây. Tôi sẽ bắt đầu với 40. Và cuối cùng, ta chỉ cần
thay đổi y. Ta có thể thay đổi ở dưới đây, nhập “ y = y + 20”
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
kiến thức từ bài học incrementing shortcut. Thật tuyệt vời, bây giờ ta cứ thế
mà áp dụng shortcut. Tuyệt vời, và bây giờ ta chỉ
cần trả lời câu hỏi thứ 3, đó là “Ta nên lặp trong bao lâu?”
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?
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.
Nhưng hy vọng là không. Vì vậy, ta chỉ cần
lặp đến cuối trang thôi nhỉ? Điều đó có nghĩa là ta sẽ lặp
miễn sao y nhỏ hơn 400. Vậy ta sẽ đưa vào đây, và
thế là xong! Ta đã có thông báo hiển thị xuống tận cuối màn hình.
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,
mất rất nhiều thời gian để viết, vậy mà thậm chí chưa xong nổi 1/4.
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.
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
tôi sẽ lại xuất y. Ta nhập “y is now”, sau đó ở dưới đây
tôi sẽ ghim y vào cuối thông báo để các bạn có thể nhìn thấy.
Hiện tại, giá trị đang tăng dần theo 20 đơn vị, và ta có thể thay đổi
giá trị đó bằng cách thay đổi biến này. Các bạn có thể chuyển thành, ví dụ,
50 đơn vị. Và bây giờ, giá trị tăng dần theo 50 đơn vị. Tương tự,
ta có thể xuất và thay đổi những giá trị khác. Và
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.
Để hiểu được điều này, ta có thể coi nó như
một mệnh đề “if”. Ta có biểu thức boolean
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,
chỉ khi biểu thức boolean đúng, nếu không ta sẽ nhảy luôn
đến cuối cùng. Nhưng điều thú vị là với một vòng lặp while ta có
một dòng bí ẩn ở dưới cùng với nội dung “go back to the start of the loop”.
Và ý nghĩa của câu chỉ dẫn bí ẩn này là
thay vì thoát và tiếp tục lặp, giống như mệnh đề “if”,
mỗi lần lặp ta sẽ quay lại từ đầu và kiểm tra xem
đ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
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...
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?
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.
Nếu không, ta sẽ quay trở về đầu vòng lặp. Và cuối cùng,
ta sẽ thoát và tiếp tục chạy chương trình.
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
hiện tại, đây đã làn một khởi đầu mỹ mãn rồi.