Menu
CoddyTech

Vòng lặp while

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 44 trên 92.

Vòng lặp for chạy một lần với mỗi số trong một khoảng. Vòng lặp while tiếp tục chạy chừng nào điều kiện còn là true:

var count := 3
while count > 0:
	print(count)
	count -= 1
print("Go!")
3
2
1
Go!

Điều kiện được kiểm tra trước mỗi lần lặp. Khi count trở thành 0, count > 0 có giá trị false, nên vòng lặp dừng và chương trình tiếp tục chạy sau vòng lặp. Nếu điều kiện là false ngay từ đầu, khối lệnh sẽ không chạy.

Khối lệnh phải thay đổi một giá trị mà điều kiện phụ thuộc vào. Ở đây, count -= 1 đưa count đến gần 0 hơn. Nếu thiếu câu lệnh này, điều kiện sẽ luôn là true và vòng lặp sẽ không bao giờ kết thúc.

Dùng while khi bạn chưa biết trước cần bao nhiêu lần lặp. Ví dụ, đoạn code này tìm lũy thừa nhỏ nhất của 2 lớn hơn 27:

var number := 27
var power_of_two := 1
while power_of_two <= number:
	power_of_two *= 2
print(power_of_two)

power_of_two tăng gấp đôi sau mỗi lần lặp: 2, 4, 8, 16, 32. Ở 32, power_of_two <= number là false, nên chương trình in ra 32.

challenge icon

Thử thách

Dễ

Chương trình đọc một số thập phân vào number.

Dùng vòng lặp while để chia number cho 2 chừng nào nó còn lớn hơn hoặc bằng 3.5. Sau đó in ra kết quả, tức là giá trị đầu tiên nhỏ hơn 3.5.

Ví dụ, với đầu vào 15, các giá trị là 15, 7.5, 3.75 và 1.875, nên chương trình in ra:

1.875

Nếu đầu vào đã nhỏ hơn 3.5, hãy in ra giá trị đó mà không thay đổi. Không dùng vòng lặp for.

Tự làm thử

extends Node

func _ready():
	var number := float(OS.read_string_from_stdin())
	# Liên tục chia đôi number khi nó lớn hơn hoặc bằng 3.5, rồi in ra
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: Trình biên dịch GDScript online