Vòng lặp
Đôi khi, ta cần làm một việc nhiều lần; để tránh viết lặp mã, ta dùng vòng lặp.
Đôi khi số lần lặp không phải là một hằng số, ta không thể sao chép mã nhiều lần, bắt buộc phải dùng vòng lặp.
Câu lệnh for
Cấu trúc của câu lệnh for:
1 2 3 | |
Thứ tự thực thi:
Ví dụ: đọc vào n số:
1 2 3 | |
Ba phần của for đều có thể bỏ trống. Nếu bỏ điều kiện, điều kiện được hiểu là luôn đúng.
Câu lệnh while
Cấu trúc của câu lệnh while:
1 2 3 | |
Thứ tự thực thi:
Ví dụ: kiểm chứng giả thuyết 3x+1:
1 2 3 4 5 6 7 | |
Câu lệnh do...while
Cấu trúc của câu lệnh do...while:
1 2 3 | |
Thứ tự thực thi:
Khác với while ở chỗ do...while sẽ chạy thân vòng lặp trước rồi mới kiểm tra điều kiện.
Ví dụ: liệt kê hoán vị:
1 2 3 | |
Liên hệ giữa ba loại vòng lặp
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Khi statement4 không có continue (xem dưới) thì hai cách trên tương đương, nhưng cách dưới ít dùng.
1 2 3 4 5 6 7 8 9 10 11 12 | |
Khi statement1 không có continue thì hai cách này cũng tương đương.
1 2 3 4 5 6 7 | |
Hai cách đều là vòng lặp vô hạn (có thể dùng break (xem dưới) để thoát).
Có thể thấy ba loại có thể thay thế nhau, nhưng thường chọn theo nguyên tắc:
- Khi vòng lặp có bước tăng cố định (phổ biến nhất là liệt kê), dùng for;
- Khi chỉ biết điều kiện dừng, dùng while;
- Khi cần chạy thân vòng lặp trước rồi mới kiểm tra, dùng do...while. Thường ít gặp, hay dùng cho nhập liệu người dùng.
Câu lệnh break và continue
break dùng để thoát khỏi vòng lặp.
continue dùng để bỏ qua phần còn lại của thân vòng lặp. Ví dụ với do...while:
1 2 3 4 5 6 | |
break và continue đều có thể dùng trong cả ba loại vòng lặp.
Thông thường break và continue giúp logic rõ ràng hơn, ví dụ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
1 2 3 4 5 6 7 8 9 10 11 12 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Last updated on this page:, Update history
Found an error? Want to help improve? Edit this page on GitHub!
Contributors to this page:OI-wiki
All content on this page is provided under the terms of the CC BY-SA 4.0 and SATA license, additional terms may apply