C# for loop

By 07/01/2021Tháng Sáu 10th, 2021C#, KIẾN THỨC LẬP TRÌNH

Trong phần này, chúng ta sẽ tìm hiểu về vòng lặp for (for loop) trong C# và các cách khác nhau để sử dụng chúng trong một chương trình.

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ề for loop cho ngôn ngữ lập trình C#.

C# for loop

Từ khóa for được dùng để tạo for loop trong C #. Cú pháp của for loop là:

for (initialization; condition; iterator)

{

// body of for loop

}

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

  1. C# for loop có ba câu lệnh là: initialization, conditioniterator (Khởi tạo, điều kiện và trình lặp)
  2. Câu lệnh initialization được thực hiện đầu tiên và chỉ một lần duy nhất. Ở đây, biến thường được khai báo và khởi tạo.
  3. Sau đó,  condition sẽ được đánh giá. condition là một biểu thức boolean vì thế nó chỉ trả về hai kết quả là true hoặc false.
  4. Nếu condition được đánh giá là true:
    1. Câu lệnh bên trong for loop được thực thi.
    2. Tiếp theo, câu lệnh iterator được thực hiện, nó thường thay đổi giá trị của biến khởi tạo.
    3. Sau đó condition lại tiếp tục được đánh giá lại.
    4. Quá trình sẽ được tiếp tục cho đến khi condition được đánh giá là false.
  5. Nếu  condition được đánh giá là false, for loop sẽ kết thúc.

Bảng hoạt động của for Loop 

Ví dụ 1: C# for Loop

using System;

namespace Loop

{

class ForLoop

{

public static void Main(string[] args)

{

for (int i=1; i<=5; i++)

{

Console.WriteLine(“C# For Loop: Iteration {0}”, 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

Trong chương trình này,

  • Câu lệnh initializationint i=1
  • Câu lệnh conditioni<=5
  • Câu lệnh iteratori++

Khi chương trình khởi chạy:

  • Đầu tiên, biến i được khai báo và khởi tạo là 1.
  • Sau đó, condition (i<=5) được đánh giá
  • Vì condition trả về true, chương trình sau đó sẽ thực thi phần code của for loop. Nó in dòng chữ: Iteration 1 
  • Bây giờ, trình lặp (i++) sẽ được đánh giá. Đây là lý do giá trị của i tăng lên 2.
  • Condition (i<=5) được đánh giá một lần nữa. Vào lúc kết thúc, giá trị của i được tăng thêm 1. Condition được đánh giá là true trong 5 lần lại đầu tiên.
  • Khi giá trị của i đạt 6, condition sẽ trở thành false, do đó vòng lặp lại cũng kết thúc.

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

using System;

namespace Loop

{

class ForLoop

{

public static void Main(string[] args)

{

int n = 5,sum = 0;

 

for (int i=1; i<=n; i++)

{

// sum = sum + i;

sum += i;

}

 

Console.WriteLine(“Sum of first {0} natural numbers = {1}”, n, sum);

}

}

}

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

Sum of first 5 natural numbers = 15

Ở đây, giá trị của sum được khởi tạo là 0 và n được khởi tạo là 5. Biến lặp i được khởi tạo là 1 và tăng dần sau mỗi lần lặp.

Bên trong for loop, giá trị của sum được tăng lên theo i , tức là sum = sum + i. for loop tiếp tục cho tới khi i nhỏ hơn hoặc bằng n (input của user).

Hãy xem điều gì sẽ xảy ra trong chương trình đã cho dưới đây trong mỗi lần lặp lại.

Lúc đầu, i = 1, sum = 0 và n = 3

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 Loop kết thúc

Vì vậy, giá trị cuối cùng của sum sẽ là 15 khi n=5. 

Nhiều biểu thức trong for loop

Chúng ta cũng có thể sử dụng nhiều biểu thức bên trong for loop. Bạn có thể viết nhiều hơn một câu lệnh khởi tạo và/ hoặc trình lặp trong for loop. 

Hãy xem ví dụ dưới đây:

Ví dụ 3: for loop với nhiều biểu thức khởi tạo và biểu thức lặp.

using System;

 

namespace Loop

{

class ForLoop

{

public static void Main(string[] args)

{

for (int i=0, j=0; i+j<=5; i++, j++)

{

Console.WriteLine(“i = {0} and j = {1}”, i,j);

}         

}

}

}

 

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

i = 0 and j = 0

i = 1 and j = 1

i = 2 and j = 2

Trong chương trình này, chúng ta đã khai báo và khởi tạo hai biến: ij trong câu lệnh khởi tạo.

Ngoài ra, chúng ta có hai biểu thức trong phần trình lặp. Có nghĩa là cả ij đều được tăng thêm 1 sau mỗi lần lặp. 

for loop không có lệnh khởi tạo và lệnh lặp 

Lệnh khởi tạo, lệnh condition và lệnh lặp là tuỳ chọn trong for loop, tức là chúng ta có thể chạy for loop mà không cần các câu lệnh trên. 

Trong những trường hợp như vậy, for loop đóng vai trò như while loop. Hãy cùng xem xét ví dụ dưới đây:

Ví dụ 4: for loop không có lệnh khởi tạo và lệnh lặp 

using System;

namespace Loop

{

class ForLoop

{

public static void Main(string[] args)

{

int i = 1;

for ( ; 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

Trong ví dụ trên, câu lệnh khởi tạo và câu lệnh lặp không xuất hiện.

Biến i được khởi tạo bên trên for loop và giá trị của nó được tăng lên bên trong for loop. Chương trình này tương tự như chương trình ở Ví dụ 1. Tương tự, condition cũng là câu lệnh tuỳ chọn, bạn có thể thêm hoặc không thêm vào chương trình khi sử dụng for loop. 

Tuy nhiên, nếu chúng ta không sử dụng biểu thức kiểm tra (test-expression), for loop sẽ không kiểm tra condition và chạy mãi không ngừng (vòng lặp vô hạn). Chúng ta sẽ đi sâu hơn vào vòng lặp vô hạn này ngay phần dưới đây:

Infinite for loop (vòng lặp for vô hạn)

Nếu condition trong for loop luôn đúng (true), for loop sẽ chạy không ngừng. Trường hợp này được gọi là infinite for loop (for loop vô hạn). 

Ví dụ 5: Infinite for loop

using System;

namespace Loop

{

class ForLoop

{

public static void Main(string[] args)

{

for (int i=1 ; i>0; i++)

{

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

}

}

}

}

Ở đây, i được khởi tạo thành 1 và condition là i>0. Trên mỗi lần lặp, chúng ta tăng giá trị i thêm 1, vì thế condition sẽ luôn đúng, không bao giờ false. Điều này sẽ làm cho vòng lặp thực thi vô hạn.

Chúng ta cũng có thể tạo một vòng lặp vô hạn bằng cách thay thế condition bằng một khoảng trống. Ví dụ,

for ( ; ; )

{

// body of for loop

}

 

hoặc

for (initialization ; ; iterator)

{

// body of for loop

}

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