Break
Thuộc phần Kiến thức nền tảng trong hành trình R của Coddy. Bài học 40 trên 78.
Đôi khi bạn cần thoát khỏi vòng lặp sớm, trước khi vòng lặp hoàn thành tất cả các lần lặp. Câu lệnh break cho phép bạn dừng vòng lặp ngay lập tức khi một điều kiện cụ thể được đáp ứng.
for (i in 1:10) {
if (i == 5) {
break
}
print(i)
}Đầu ra:
[1] 1
[1] 2
[1] 3
[1] 4Vòng lặp được đặt để chạy từ 1 đến 10, nhưng khi i đạt đến 5, câu lệnh break dừng hẳn vòng lặp. Lưu ý rằng số 5 không được in ra vì break thoát ngay lập tức.
Điều này đặc biệt hữu ích với vòng lặp while khi tìm kiếm một thứ gì đó:
num <- 1
while (TRUE) {
if (num * num > 20) {
break
}
num <- num + 1
}
print(num)Đầu ra:
[1] 5Ở đây, while (TRUE) thường sẽ chạy mãi, nhưng break dừng vòng lặp khi ta tìm thấy số đầu tiên có bình phương lớn hơn 20. Cách làm này thường dùng khi bạn cần tìm kiếm cho đến khi một điều kiện được thỏa mãn.
Thử thách
DễĐọc một số limit từ đầu vào. Dùng vòng lặp for để lặp từ 1 đến limit, nhưng dừng vòng lặp sớm bằng break khi gặp số đầu tiên chia hết cho cả 3 và 7.
In ra từng số trước khi kiểm tra điều kiện. Khi tìm thấy số chia hết cho cả 3 và 7, hãy in số đó rồi thoát khỏi vòng lặp.
Sau khi vòng lặp kết thúc, dùng print() để in ra "Loop ended".
Ví dụ, nếu đầu vào là 30, đầu ra sẽ là:
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
[1] 11
[1] 12
[1] 13
[1] 14
[1] 15
[1] 16
[1] 17
[1] 18
[1] 19
[1] 20
[1] 21
[1] "Loop ended"Vòng lặp dừng ở 21 vì đó là số đầu tiên chia hết cho cả 3 và 7 (21 = 3 × 7).
Tự làm thử
# Đọc đầu vào
con <- file("stdin", "r")
limit <- as.integer(suppressWarnings(readLines(con, n = 1)))
# TODO: Viết code bên dưới
# Dùng vòng lặp for từ 1 đến limit
# In từng số trước khi kiểm tra điều kiện
# Thoát vòng lặp khi tìm thấy một số chia hết cho cả 3 và 7
# Gợi ý: Dùng toán tử %% để kiểm tra tính chia hết
# In "Loop ended" sau vòng lặp
print("Loop ended")Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức nền tảng
4Toán tử phần 2
Toán tử logic (AND, OR)Toán tử logic phần 2 (NOT)Ôn tập: logic đơn giảnLogic vector hóa phần 1Logic vector hóa phần 22Biến và kiểu dữ liệu
Kiểu dữ liệu sốKiểu dữ liệu số nguyênKiểu dữ liệu ký tựKiểu dữ liệu logicKiểm tra kiểu dữ liệuQuy tắc đặt tênGiá trị thiếu: NATóm tắt: tạo biến8Vòng lặp
Vòng lặp forVòng lặp whileBreakNext (continue)Ôn tập: giai thừaTạo dãy (seq, :)Vòng lặp lồng nhauÔn tập: đầu vào động3Toán tử phần 1
Toán tử số họcPhép chia lấy phần nguyên và phép moduloToán tử gánÔn tập: phép tính đơn giảnToán tử so sánh6Nhập xuất cơ bản
In đầu raDùng cat để in đầu raĐầu ra với biếnĐọc đầu vào bằng readline()Cơ bản về chuyển đổi kiểuÔn tập: máy tính tuổiÔn tập: đúng hay sai9Hàm
Khai báo hàmĐối số hàmGiá trị trả vềÔn tập: hàm SigmaÔn tập: hàm xác thựcGiá trị tham số mặc địnhTự luyện tập: Trình biên dịch R online