Các kiến thức cần biết về vòng lặp Do While và vòng lặp While trong C.

Trong bài này, chúng ta sẽ tìm hiểu về vòng lặp while (while loop) và vòng lặp do while (do..while loop) trong C#, cách sử dụng và khác biệt giữa chúng.

Khi lập trình, người ta thường muốn thực hiện một số khối lệnh nhất định trong số lần nhất định. Một giải pháp khả thi là gõ các câu lệnh lặp lại khớp với số lần cần thiết.

Tuy nhiên, số lần lặp lại có thể không thể biết hết được (trong thời gian biên dịch) hoặc số lần lặp lại khá lớn (ví dụ như 10000). Giải pháp tốt nhất cho vấn đề này là for loop.

For loop được sử dụng trong lập trình để thực thi lặp đi lặp lại một khối câu lệnh nhất định cho đến khi đáp ứng điều kiện đã ra.

Trong phần này, chúng ta sẽ tìm hiểu về cách sử dụng while loop trong ngôn ngữ lập trình C#.

Vòng lặp while trong C

Từ khoá while được sử dụng để tạo while loop trong C#.
Cú pháp của while loop như sau:
while (test-expression)
{
// body of while
}

While loop hoạt động như thế nào?

  • Câu lệnh While trong C# bao gồm một biểu thức kiểm tra (test-expression).
  • Nếu test-expressionđược đánh giá là true
    • Câu lệnh bên trong while loop sẽ được thực thi.
    • Sau khi thực thi, test-expressionsẽ được đánh giá lại lần nữa.
  • Nếu test-expression được đánh giá là false, while loop sẽ kết thúc.

Bảng hoạt động của while loop

Ví dụ 1: while Loop

usingSystem;

namespace Loop

{

class WhileLoop

{

public static void Main(string[] args)

{

inti=1; while(i<=5)

{

Console.WriteLine(“C# For Loop: Iteration {0}”, i); i++;

}

}

}

}

Khi chạy chương trình, output sẽ hiển thị:

C# For Loop: Iteration 1

C# For Loop: Iteration 2

C# For Loop: Iteration 3

C# For Loop: Iteration 4

C# For Loop: Iteration 5

Ban đầu, giá trị của i là 1.

Khi chương trình đến câu lệnh while loop,

  • test expression i <=5 sẽ được đánh giá. Bởi vì i là 1 và 1 <=  5 là đúng (true), đoạn code trong while loop sẽ được thực thi. Ở đây, dòng chữ được in ra màn hình là Iteration 1, và giá trị của i được tăng thêm 1 trở thành 2. (Iteration 2)
  • Bây giờ, test expression (i<=5) sẽ được đánh giá một lần nữa. Lần này biểu thức tiếp tục trả về true (2<=5), vì thế dòng chữ được in ra màn hình và giá trị của i bây giờ được tăng lên thành 3. (Iteration 3)
  • Quá trình này tiếp tục diễn ra cho đến khi i bằng 6 thì while loop sẽ kết thúc. Lúc này, test-expression sẽ được đánh giá là false, do đó vòng lặp ngừng lại.

Ví dụ 2: while loop để tính tổng của 5 số tự nhiên đầu tiên

usingSystem;

namespace Loop

{

class WhileLoop

{

public static void Main(string[] args)

{

inti=1, sum=0;

while(i<=5)

{

sum += i; i++;

}

Console.WriteLine(“Sum = {0}”, sum);

}

}

}

Khi chạy chương trình, output sẽ hiển thị: Sum = 15

Chương trình này tính tổng của 5 số tự nhiên đầu tiên.

  • Ban đầu, giá trị của sum được khởi tạo bằng 0.
  • Ở mỗi lần lặp, giá trị của sum sẽ được cập nhật thành sum + i và giá trị của i được tăng thêm 1.
  • Khi giá trị của i đạt đến 6, test expression i<=5 sẽ trả về false và vòng lặp kết thúc.

Hãy xem điều gì sẽ xảy ra trong mỗi lần lặp ở chương trình trên: Ban đầu, i= 1, sum= 0

Iteration/ lặp lại Giá trị của i i<=5 Giá trị của sum
1 1 true 0+1 = 1
2 2 true 1+2 = 3
3 3 true 3+3 = 6
4 4 true 6+4 = 10
5 5 true 10+5 = 15
6 6 false Vòng lặp kết thúc

Như vậy, giá trị cuối cùng của sum là 15.

Vòng lặp do while trong C#

Từ khoá do và while được sử dụng để tạo do while loop. Câu lệnh do while loop tương tự như while loop, tuy nhiên, vẫn có ba điểm khác biệt chính.

Trong while loop, condition được kiểm tra trước khi phần thân của while loop thực thi. Điều này trái ngược với do…while loop.

Condition sẽ được kiểm tra sau khi phần thân của do…while loop đã được thực thi.

Đây là lý do tại sao phần thân của do…while loop được thực thi ít nhất một lần mà không liên quan đến kết quả của test-expression.

Cú pháp của do…while loop như sau:

do

{

// body of do while loop

}

while (test-expression);

do…while loop hoạt động như thế nào?

  • Phần thân (body) của do…while loop được thực thi.
  • Sau đó test-expression được đánh giá.
  • Nếu test-expression trả về true, body của do..while loop sẽ được thực thi.
  • Nếu test-expression trả về false, do…while loop kết thúc.

Bảng hoạt động của do…while loop

Ví dụ 3: do…while loop

usingSystem;

namespace Loop

{

class DoWhileLoop

{

public static void Main(string[] args)

{

inti = 1, n = 5, product;

do

{

product = n * i;

Console.WriteLine(“{0} * {1} = {2}”, n, i, product);

i++;

}

while(i <= 10);

}

}

}

Khi chạy chương trình, output sẽ hiển thị:

5 * 1 = 5

5 * 2 = 10

5 * 3 = 15

5 * 4 = 20

5 * 5 = 25

5 * 6 = 30

5 * 7 = 35

5 * 8 = 40

5 * 9 = 45

5 * 10 = 50

Như các bạn đã thấy, chương trình trên in ra bảng cửu chương của số 5 (number (5)).

  • Ban đầu, giá trị của i là 1. Chương trình sau đó đã thực thi body của do…while loop mà không kiểm tra condition (trái ngược với while loop).
  • Trong phần body, product được tính toán và in ra màn hình. Giá trị của i sau đó được tăng lên 2.
  • Sau khi body được thực thi, test expression i <= 10 được đánh giá. Tổng cộng, do…while loop lặp lại 10 lần
  • Cuối cùng, khi giá trị của i bằng 11, test-expression được đánh giá là falsevà vòng lặp kết thúc.

Cấu trúc do while loop và while loop vô hạn

Nếu test expression trong while loop và do…while loop không bao giờ trả về kết quả false, body của vòng lặp sẽ chạy không ngừng.

Những vòng lặp như vậy gọi là infinite loop (vòng lặp vô hạn). Ví dụ:

Infinite while loop

while (true)

{

// body of while loop

}

Infinite do…while loop

do

{

// body of while loop

}

while (true);

Infinite loop rất hữu ích khi chúng ta cần vòng lặp chạy xuyên suốt chương trình.

Ví dụ, nếu chương trình của bạn là animation, bạn sẽ cần phải chạy liên tục cho đến khi chương trình kết thúc. Trong trường hợp đó, infinite loop sẽ cần thiết cho việc chạy animation liên tục.

Kết luận

Như vậy, Ironhack đã giải thích cách sử dụng vòng lặp whilevòng lặp do while trong C#.

Hi vọng các bạn sẽ có thể biết cách sử dụng 2 vòng lặp trên thành thạo hơn sau khi đọc xong bài viết cùng các ví dụ về bài tập vòng lặp While trong C.

Để lại một câu trả lời