Vòng lặp lồng nhau
Thuộc phần Kiến thức nền tảng trong hành trình Rust của Coddy. Bài học 41 trên 75.
Vòng lặp lồng nhau đơn giản là một vòng lặp nằm bên trong một vòng lặp khác. Vòng lặp bên trong sẽ hoàn thành tất cả các lần lặp của nó trong mỗi lần lặp của vòng lặp bên ngoài. Đồng hồ là một ví dụ dễ hình dung: với mỗi giờ (vòng lặp bên ngoài), kim phút (vòng lặp bên trong) phải hoàn thành cả chu kỳ 60 phút.
Ví dụ về vòng lặp lồng nhau:
let rows = 2;
let cols = 2;
for x in 0..rows {
for y in 0..cols {
println!("{} {}", x, y);
}
}
// Đoạn code này sẽ in ra:
// 0 0
// 0 1
// 1 0
// 1 1Vòng lặp ngoài (x) chạy rows lần, và với mỗi lần như vậy, vòng lặp trong (y) chạy cols lần. Mỗi vòng lặp có bộ đếm riêng: y bắt đầu lại từ 0 mỗi khi vòng lặp ngoài chạy, trong khi rows và cols giữ nguyên và chỉ cho các vòng lặp biết khi nào cần dừng.
Thử thách
Người mớiViết chương trình in ra một hình chữ nhật gồm các dấu hoa thị (*) với chiều rộng và chiều cao cho trước.
Đầu vào: Hai số nguyên: width và height (code khởi đầu đã đọc chúng).
Ví dụ:
Nếu width = 5 và height = 3, đầu ra sẽ là:
*****
*****
*****Nếu width = 4 và height = 6, đầu ra sẽ là:
****
****
****
****
****
****Dùng một biến đếm mới cho mỗi vòng lặp (ví dụ i cho các hàng và j cho các dấu hoa thị trong một hàng), rồi so sánh biến đó với height hoặc width. Đừng thay đổi chính height và width: mỗi hàng cần dùng lại width.
Tự làm thử
use std::io;
fn main() {
let mut width_input = String::new();
let mut height_input = String::new();
io::stdin().read_line(&mut width_input).unwrap();
io::stdin().read_line(&mut height_input).unwrap();
let width: i32 = width_input.trim().parse().unwrap();
let height: i32 = height_input.trim().parse().unwrap();
// Viết code của bạn bên dưới
}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
5Các toán tử phần 2
Các toán tử logic phần 1Các toán tử logic phần 2Ôn tập: logic đơn giảnCác toán tử logic phần 33Biến phần 2
Khai báo kiểu dữ liệuQuy ước đặt tênSuy luận kiểu dữ liệuÔn tập: Khởi tạo biếnÉp kiểu dữ liệu9Vòng lặp
Vòng lặp for qua chuỗiVòng lặp whileBreakContinueVòng lặp lồng nhauNhãn vòng lặpVòng lặp vô hạnÔn tập: Đầu vào động12Kiến thức cơ bản về mảng
Khai báo mảngMảng làm tham sốTruy cập phần tửChỉnh sửa mảngÔn tập: In mảng đẹp mắtTự luyện tập: Trình biên dịch Rust online