Menu
CoddyTech

Vòng lặp lồng nhau

Thuộc phần Kiến thức nền tảng trong hành trình Kotlin của Coddy. Bài học 52 trên 93.

Bạn có thể đặt một vòng lặp bên trong một vòng lặp khác để tạo thành vòng lặp lồng nhau. Vòng lặp bên trong chạy hết các lần lặp cho mỗi lần lặp của vòng lặp bên ngoài.

val rows = 2
val cols = 3
for (i in 1..rows) {
    for (j in 1..cols) {
        println("i=$i, j=$j")
    }
}
// Đầu ra:
// i=1, j=1
// i=1, j=2
// i=1, j=3
// i=2, j=1
// i=2, j=2
// i=2, j=3

Khi i bằng 1, vòng lặp bên trong chạy cols lần (j chạy từ 1 đến 3). Sau đó, i trở thành 2 và vòng lặp bên trong bắt đầu lại, với j chạy từ 1 đến 3 lần nữa. Như vậy, tổng cộng có 2 × 3 = 6 lần lặp. rows và cols không bao giờ thay đổi: chúng chỉ cho các vòng lặp biết khi nào cần dừng.

Vòng lặp lồng nhau thường được dùng để tạo mẫu hoặc làm việc với các cấu trúc dạng lưới:

for (row in 1..3) {
    for (col in 1..row) {
        print("*")
    }
    println()
}
// Đầu ra:
// *
// **
// ***

Ở đây, phạm vi của vòng lặp bên trong phụ thuộc vào biến của vòng lặp bên ngoài, tạo thành một mẫu hình tam giác. Hàm (function) print() in ra mà không xuống dòng, còn println() chuyển sang dòng tiếp theo sau mỗi hàng.

challenge icon

Thử thách

Trung bình

Đọc một số nguyên n từ đầu vào. Dùng các vòng lặp lồng nhau để in bảng nhân cho các số từ 1 đến n.

Với mỗi hàng i từ 1 đến n, in các tích i * 1, i * 2, ..., i * n cách nhau bằng dấu cách, rồi xuống dòng.

Ví dụ, nếu đầu vào là 3, đầu ra sẽ là:

1 2 3
2 4 6
3 6 9

Nếu đầu vào là 4, đầu ra sẽ là:

1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16

Dùng print() kèm một dấu cách để in các giá trị trên cùng một dòng, và dùng println() để chuyển sang hàng tiếp theo.

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 cột), rồi so sánh cả hai với n. Đừng thay đổi chính n: mỗi hàng cần dùng lại giá trị này.

Tự làm thử

fun main() {
    // Đọc đầu vào
    val n = readLine()!!.toInt()
    
    // TODO: Viết code bên dưới
    // Dùng các vòng lặp lồng nhau để in ra bảng cửu chương
    // Dùng print() và dấu cách để in các giá trị trên cùng một dòng
    // Dùng println() để chuyển sang hàng tiếp theo
    
}
quiz iconTự kiểm tra

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

Tự luyện tập: Playground Kotlin