Trong bài này, bạn sẽ học cách tạo vòng lặp while và lặp lại… while trong lập trình Swift.
Trong bài trước, chúng ta đã tìm hiểu về vòng lặp for-in để chạy một tập hợp các tác vụ trong một số lần nhất định. Trong bài viết này, bạn sẽ học cách sử dụng while
và repeat… while
thay thế cho vòng lặp for-in khi số lần lặp không xác định.
Vòng lặp while thực hiện một tập hợp các câu lệnh cho đến khi một điều kiện trở thành false
. Các loại vòng lặp này được sử dụng tốt nhất khi không biết số lần lặp trước khi lần lặp đầu tiên bắt đầu. Swift cung cấp hai loại vòng lặp while:
1. Swift trong khi vòng lặp
Vòng lặp này đánh giá điều kiện của nó khi bắt đầu mỗi lần đi qua vòng lặp.
Cú pháp của vòng lặp while là:
while (TestExpression) ( // statements )
Vòng lặp while hoạt động như thế nào?
Đây TestExpression
là một biểu thức boolean.
Nếu TestExpression
được đánh giá là true
,
- các câu lệnh bên trong vòng lặp while được thực thi.
- và
TestExpression
được đánh giá lại.
Quá trình này tiếp tục cho đến khi TestExpression
được đánh giá là false
. Nếu TestExpression
để đánh giá false
, trong khi vòng lặp kết thúc.
Lưu đồ Vòng lặp trong khi
Ví dụ 1: Vòng lặp trong khi
var currentLevel:Int = 0, finalLevel:Int = 5 let gameCompleted = true while (currentLevel <= finalLevel) ( //play game if gameCompleted ( print("You have passed level (currentLevel)") currentLevel += 1 ) ) print("outside of while loop")
Khi bạn chạy chương trình, đầu ra sẽ là:
Bạn đã vượt qua cấp độ 0 Bạn đã vượt qua cấp độ 1 Bạn đã vượt qua cấp độ 2 Bạn đã vượt qua cấp độ 3 Bạn đã vượt qua cấp độ 4 Bạn đã vượt qua cấp độ 5 bên ngoài vòng lặp while
Trong chương trình trên, biến currentLevel và finalLevel được khởi tạo thành 0 và hằng số gameCompleted được khởi tạo thành true
.
Trong mỗi lần lặp của vòng lặp while, nó sẽ kiểm tra điều kiện currentLevel <= finalLevel
. Nếu điều kiện trả về true
, các câu lệnh bên trong vòng lặp while được thực thi nếu không thì vòng lặp kết thúc.
Lặp lại | Điều kiện (currentLevel <= finalLevel) | Đầu ra |
---|---|---|
1 | 0 <= 5 (đúng) | Bạn đã vượt qua cấp độ 0 |
2 | 1 <= 5 (đúng) | Bạn đã vượt qua cấp độ 1 |
3 | 2 <= 5 (đúng) | Bạn đã vượt qua cấp độ 2 |
4 | 3 <= 5 (đúng) | Bạn đã vượt qua cấp 3 |
5 | 4 <= 5 (đúng) | Bạn đã vượt qua cấp độ 4 |
6 | 5 <= 5 (đúng) | Bạn đã vượt qua cấp độ 5 |
7 | 6 <= 5 (sai) | bên ngoài vòng lặp while |
2. Lặp lại trong khi Vòng lặp
Vòng lặp này đánh giá điều kiện của nó ở cuối mỗi lần đi qua vòng lặp. Vòng lặp lặp lại… while tương tự như vòng lặp while với một điểm khác biệt chính. Phần thân của vòng lặp lặp lại… while được thực hiện một lần trước khi biểu thức kiểm tra được kiểm tra.
Cú pháp của vòng lặp lặp lại… while là:
repeat ( // statements… ) while (testExpression)
Cách lặp lại… vòng lặp while hoạt động?
Phần thân của vòng lặp lặp lại… while được thực hiện một lần (trước khi kiểm tra biểu thức kiểm tra). Chỉ khi đó, testExpression mới được kiểm tra.
Nếu testExpression được đánh giá là true, các câu lệnh bên trong phần thân của vòng lặp sẽ được thực thi và testExpression được đánh giá lại. Quá trình này tiếp tục cho đến khi testExpression được đánh giá false
.
Khi testExpression là false
, vòng lặp lặp lại… while kết thúc.
Lưu đồ lặp lại… trong khi Vòng lặp
Ví dụ 2: Lặp lại trong khi Vòng lặp
var currentLevel:Int = 0, finalLevel:Int = 5 let gameCompleted = true repeat ( //play game if gameCompleted ( print("You have passed level (currentLevel)") currentLevel += 1 ) ) while (currentLevel <= finalLevel) print("outside of repeat while loop")
Khi bạn chạy chương trình, đầu ra sẽ là:
Bạn đã vượt qua cấp độ 0 Bạn đã vượt qua cấp độ 1 Bạn đã vượt qua cấp độ 2 Bạn đã vượt qua cấp độ 3 Bạn đã vượt qua cấp độ 4 Bạn đã vượt qua cấp độ 5 bên ngoài vòng lặp lặp lại while
Trong ví dụ trên, lần đầu tiên các câu lệnh bên trong vòng lặp thực thi. Và đối với lần lặp tiếp theo, nó sẽ kiểm tra điều kiện currentLevel <= finalLevel
.
Nếu điều kiện trả về true
, các câu lệnh bên trong vòng lặp while được thực thi nếu không thì vòng lặp kết thúc.
Lặp lại | Điều kiện (currentLevel <= finalLevel) | Đầu ra |
---|---|---|
1 | 0 <= 5 (đúng) | Bạn đã vượt qua cấp độ 0 |
2 | 1 <= 5 (đúng) | Bạn đã vượt qua cấp độ 1 |
3 | 2 <= 5 (đúng) | Bạn đã vượt qua cấp độ 2 |
4 | 3 <= 5 (đúng) | Bạn đã vượt qua cấp 3 |
5 | 4 <= 5 (đúng) | Bạn đã vượt qua cấp độ 4 |
6 | 5 <= 5 (đúng) | Bạn đã vượt qua cấp độ 5 |
7 | 6 <= 5 (sai) | ngoài vòng lặp lặp lại while |
Mặc dù cả vòng lặp while
và repeat while
vòng lặp đều có các bước thực thi giống nhau, nhưng điều kiện currentLevel <= finalLevel
trên repeat while
vòng lặp chỉ được thực hiện sau khi thực hiện các câu lệnh bên trong nó.
Nhưng trong while
, điều kiện được kiểm tra ở đầu trước khi thực hiện các câu lệnh bên trong nó.
3. Vòng lặp vô hạn trong khi
Nếu biểu thức kiểm tra không bao giờ đánh giá false
là phần thân của while
và repeat… while
vòng lặp được thực thi vô số lần.
Ví dụ 3: Vòng lặp while vô hạn
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Khi bạn chạy chương trình, đầu ra sẽ là:
Chào thế giới! Chào thế giới!…
Khi bạn chạy chương trình, cả hai vòng lặp đều thực hiện print("Hello, World!")
câu lệnh với số lần vô hạn. Vì vậy, bạn có thể thấy đầu ra liên tục Hello, World! trong bảng điều khiển.