Sau khi đã tìm hiểu về vòng lặp While,
chúng ta cùng bàn về một loại vòng lặp khác,
Vòng lặp For.
Đây là một vòng lặp For tôi đã tạo để đặt
loại pizza ngon nhất,
pizza dứa.
Có thể các bạn sẽ nghĩ, “Mình thích vòng lặp While
tại sao lại phải quan tâm đến vòng lặp khác?”
Rồi các bạn sẽ thấy rằng vòng lặp For là một cách
viết những vòng lặp While đơn giản,
theo con đường ngắn hơn.
Trước khi mổ xẻ vòng lặp For này
ta cùng quan sát một vòng lặp While,
các bạn sẽ thấy quen thuộc hơn một chút,
sau đó chúng ta sẽ quay lại
vòng lặp For này sau ít phút nữa.
Như các bạn đã biết trong bài Intro to While Loops
ta bắt đầu với biến y
và ta viết thông báo bằng vị trí y đó.
Ta muốn tiếp tục lặp
với điều kiện y nhỏ hơn 300,
và mỗi lần lặp tăng y theo 40 đơn vị.
Để củng cố thêm cho mỗi lần lặp,
và cũng là để xem lại nữa,
ta có thể coi “Pineapple pizza is the best”
là một thông báo quan trọng
vì vậy có thể ta sẽ muốn hiển thị nhiều hơn.
Có lẽ ta nên bắt đầu ở phía trên,
quyết định thế đi.
Ta nên chỉnh cho dòng chữ to hơn
để kéo dài được hơn nữa.
Các bạn có nghĩ dòng chữ
nên sát nhau hơn không?
Thế tốt hơn rồi đấy.
Bây giờ ta cùng tìm hiểu cách biến đổi
vòng lặp While này thành một vòng lặp For.
Tôi sẽ chú thích vòng lặp While này
để các bạn có thể thấy rằng vòng lặp For này
đang thực hiện những gì tôi ra lệnh.
Khi tạo vòng lặp For,
ta chỉ cần tạo một ít không gian
để nhập vào sau đó.
Một điều rất quan trọng,
và khác biệt đối với vòng lặp For,
đó là không chỉ có 1,
mà là 3 thứ
xuất hiện trong vòng lặp.
Ta lệnh cho máy tính bằng cách đặt
dấu chấm phẩy ngăn cách 3 phần này.
Ta sẽ có 1 phần ở đây,
1 phần ở đây, 1 phần ở đây,
rồi đưa chúng vào trong vòng lặp
như ta vẫn làm trong bài học trước.
Ta lại nhập những gì vào mỗi phần này?
Thử nghĩ xem,
khi sử dụng vòng lặp “For” tức là ta sẽ
có một dạng như bắt đầu hay khởi chạy.
Sau đó ta sẽ nhập dấu chấm phẩy.
Tiếp theo ta sẽ nhập kiểu như chỉ dẫn
nên lặp trong bao lâu,
sau đó ta có thể nhận thấy
sự thay đổi.
Điều đó thì liên quan gì tới vòng lặp While?
Ta có thể nói cụ thể rằng
phần khởi chạy sẽ thiết lập một biến y ở đây,
vậy nên ta sẽ sao chép và dán lên
phần đầu tiên của vòng lặp For.
Và tương tự nó xuất hiện đầu tiên thì sẽ hiển thị đầu tiên.
Ta có thể thấy rằng phần giữa này đang cho ta biết
ta nên lặp trong bao lâu.
Cái này cho vào giữa.
Sau đó ta sẽ có thay đổi
ở cuối chỗ này,
vì vậy ta sẽ đặt ở cuối vòng lặp For.
Ba phần này luôn luôn phải
diễn ra theo thứ tự này.
Trong vòng lặp For ta luôn luôn phải
bắt đầu với
“This is where this variable should start out as.”
Ở đây là 27.
Sau đó ta phải quyết định
thời gian lặp là bao lâu.
Lặp với điều kiện biến nhỏ hơn 354.
Sau đó ta phải quyết định
cách điều chỉnh thông báo.
Ở đây ta sẽ điều chỉnh
bằng cách tăng y theo 24 đơn vị.
Cuối cùng ta chỉ cần thực hiện những gì
ta muốn bên trong vòng lặp For.
Ta sẽ nhập văn bản vào đây.
Được rồi đó.
Pineapple pizza is the best!
Và rồi tất cả mọi người sẽ biết điều đó.
Ta cùng quan sát kỹ hơn
về những gì đang diễn ra trong vòng lặp For này.
Nếu ta muốn thay đổi vị trí bắt đầu
ta chỉ việc thay đổi khởi chạy ở đây.
Nếu ta muốn thay đổi vị trí kết thúc
ta sẽ thay đổi điểm kết thúc này.
Nếu ta muốn điều chỉnh cách dòng
ta chỉ cần thay đổi gia số.
Sau đó ta cũng có thể thay đổi,
giống như với vòng lặp While,
giá trị của x
khi nhập văn bản.
Tốt rồi!
Một điều ta hay nhầm lẫn
về vòng lặp For là
chức năng của những dấu chấm phẩy này.
Ta chỉ cần nhớ rằng chúng
luôn luôn ngăn cách
ba phần đã đề cập.
Nếu không
ta sẽ có những thông báo lỗi
kỳ cục về vòng lặp For,
vì vậy hãy đảm bảo
ta đã nhập dấu chấm phẩy trong vòng lặp.
Ta cũng có thể nhiệt tình hơn chút nữa
và thêm một dấu chấm phẩy ở cuối.
Nếu ta chỉ nhớ dấu chấm phẩy
chỉ có chức năng ngăn cách ba phần,
thì ta có thể coi
dấu chấm phẩy cuối cùng này chẳng có tác dụng gì cả.
Nó chỉ ở đó cho có thôi.
Ta có thể bỏ cũng được vì nó không cần thiết lắm.
Tôi biết các bạn đang
bắt đầu thấy mệt mỏi vì cứ phải
nhìn vòng lặp For chuyển thành
vòng lặp While rồi ngược lại.
Ta cùng làm thêm một lần nữa
để các bạn có thể thấy rằng vòng lặp For
thực chất chỉ là một cách viết khác
của một vòng lặp While đơn giản,
rồi các bạn sẽ cảm thấy rất rất tự tin
và hiểu được cách đưa
một vòng lặp For trở về vòng lặp While.
Bởi thật ra ta có thể thực hiện điều đó
đối với mọi loại vòng lặp For,
chứ không chỉ có vòng lặp này.
Trước hết ta phải nghĩ xem
nên đặt giá trị đầu tiên này ở đâu
bên trong vòng lặp For.
Vì thao tác đó chỉ khởi chạy biến này
nên đừng quên đưa nó ra bên ngoài,
chứ không phải bên trong vòng lặp While.
Và nên để xuất hiện trước
vì ta sẽ cần đến nó
khi chạy vòng lặp While.
Sau đó ta xét,
“Nên đặt điều kiện này ở đâu?”
Đơn giản thôi.
Hẳn các bạn còn nhớ
điều kiện dừng,
hay điều kiện repeat until,
thường phải được đưa vào trong đây.
Ta sẽ tiếp tục lặp
chừng nào y còn nhỏ hơn 313.
Và cuối cùng, là change.
Ta luôn luôn đặt change ở cuối
vòng lặp While trong những vòng lặp
mà ta từng thấy.
Chúng ta nên đặt nó ở đây.
Ta chỉ cần di chuyển lệnh gọi văn bản này
vào trong và thế là xong.
Ta có thể chú giải vòng lặp For này
và quan sát điều tương tự
diễn ra lần thứ hai.
Hy vọng đến thời điểm này các bạn đã nhận ra
thực chất vòng lặp For mới này không cần thiết.
Ta có thể ngẫm lại toàn bộ cuộc đời lập trình của mình
chỉ để viết những vòng lặp trông như thế này,
nhưng mức độ ngắn gọn của vòng lặp For này
cũng khá ấn tượng đấy chứ,
và khi đã quen với loại vòng lặp này
ta sẽ thấy mọi thứ trở nên dễ hiểu hơn.
Còn với cách
khởi tạo biến.
Ta đặt thời gian lặp
và sau đó thay đổi biến ở đây.
Nếu các bạn thực sự ghét vòng lặp For,
thì các bạn không cần phải sử dụng,
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.
Nếu chúng quá phức tạp hãy nhớ rằng
ta có thể biến đổi trở về
vòng lặp While như thế này.
Nếu bạn ưa mạo hiểm hãy thử sử dụng
vòng lặp For trong chương trình mới của mình,
hoặc xem lại một số chương trình cũ,
những vòng lặp While đơn giản và biến đổi chúng
thành vòng lặp For nếu thấy thích hợp.
Lưu ý cuối cùng, không phải lúc nào
ta cũng có thể biến đổi vòng lặp While thành vòng lặp For,
chỉ khi nào chúng có dạng cực kỳ đơn giản,
trong đó ta có thể thấy rõ
mình đang khởi tạo biến nào,
thời gian lặp là bao lâu,
và biến thay đổi như thế nào.