Vòng lặp lồng nhau
Thuộc phần Kiến thức nền tảng trong hành trình GDScript của Coddy. Bài học 49 trên 92.
Vòng lặp lồng nhau là vòng lặp nằm bên trong một vòng lặp khác. Với mỗi lần lặp của vòng lặp bên ngoài, vòng lặp bên trong chạy hết tất cả các lần lặp:
var rows := 3
var cols := 2
for i in range(rows):
print("Outer: ", i)
for j in range(cols):
print(" Inner: ", j)Outer: 0
Inner: 0
Inner: 1
Outer: 1
Inner: 0
Inner: 1
Outer: 2
Inner: 0
Inner: 1Khối lệnh bên trong được thụt lề hai cấp. Khối này chạy tổng cộng rows x cols = 3 x 2 = 6 lần. j lại bắt đầu từ 0 mỗi khi vòng lặp bên ngoài chạy, còn rows và cols giữ nguyên và chỉ cho các vòng lặp biết khi nào cần dừng.
Hai vòng lặp cần các tên biến khác nhau. Viết for i bên trong một for i khác sẽ gây lỗi, và lỗi này được báo trước khi chương trình chạy.
Vòng lặp lồng nhau hữu ích khi xử lý hàng và cột. print() luôn kết thúc dòng, vì vậy để in một hàng dấu sao, trước tiên hãy tạo hàng đó trong một chuỗi rồi in ra sau khi vòng lặp bên trong hoàn tất:
for row in range(2):
var line := ""
for col in range(3):
line += "*"
print(line)***
***Vòng lặp ngoài chạy một lần cho mỗi hàng, còn vòng lặp trong thêm một dấu sao cho mỗi cột. Một câu lệnh break bên trong vòng lặp trong chỉ dừng vòng lặp trong: vòng lặp ngoài tiếp tục với lần lặp tiếp theo.
Thử thách
DễChương trình đọc hai số nguyên: rows và cols.
Dùng các vòng lặp lồng nhau để in một hình chữ nhật gồm các dấu sao (*), với rows dòng và mỗi dòng có cols dấu sao.
Với đầu vào 3 và 4, đầu ra là:
****
****
****Dùng một biến đếm mới cho mỗi vòng lặp (ví dụ: row cho các dòng và col cho các dấu sao trên một dòng), rồi so sánh biến đó với rows hoặc cols. Đừng thay đổi chính rows và cols: mỗi dòng đều cần cols.
Tự làm thử
extends Node
func _ready():
var rows := int(OS.read_string_from_stdin())
var cols := int(OS.read_string_from_stdin())
# Vòng lặp (loop) ngoài: mỗi hàng một lần lặp
# Vòng lặp trong: thêm một dấu sao cho mỗi cột
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 1
Toán tử số họcPhép chia lấy phần nguyênToán tử moduloPhép tính số học rút gọnÔn tập, phép tính đơn giảnToán tử so sánh7Nhập xuất cơ bản
Đầu raĐầu ra với biếnĐịnh dạng chuỗiĐầu vàoÉp kiểuÔn tập đến 120Ôn tập đúng hay sai10Hàm
Khai báo hàmĐối sốTrả vềKiểu trả vềÔn tập: hàm SigmaÔn tập: hàm kiểm tra hợp lệGiá trị mặc định16Theo dõi chi tiêu hằng ngày
Tổng quan dự ánThoát chương trình5Toán tử phần 2
Toán tử logic phần 1Toán tử logic phần 2Ôn tập: logic đơn giảnToán tử logic phần 3Toán tử ba ngôi8Máy tính chia hóa đơn
Lời chàoNhận đầu vào3Biến, phần 2
Khai báo kiểu dữ liệuSuy luận kiểu dữ liệuHằng sốÔn tập: khởi tạo biếnChuyển đổi kiểu dữ liệu9Vòng lặp
Vòng lặp forVòng lặp whileBreakContinueÔn tập: giai thừaHàm rangeVòng lặp lồng nhauÔn tập: đầu vào độngTự luyện tập: Trình biên dịch GDScript online