Có thể có tình huống, khi bạn cần thực thi một khối mã nhiều lần. Nói chung, các câu lệnh được thực hiện tuần tự: Câu lệnh đầu tiên trong một hàm được thực thi đầu tiên, tiếp theo là câu lệnh thứ hai, v.v.
Ngôn ngữ lập trình cung cấp các cấu trúc điều khiển khác nhau cho phép thực thi những câu lệnh phức tạp. Vòng lặp là một trong những cấu trúc điều khiển đó.
Vòng lặp cho phép chúng ta thực thi một câu lệnh hoặc một nhóm các câu lệnh nhiều lần và sau đây là sơ đồ tổng quát từ một câu lệnh lặp trong hầu hết các ngôn ngữ lập trình:
C# hỗ trợ những lệnh điều khiển sau đây:
Kiểu vòng lặp | Miêu tả |
---|---|
Vòng lặp while | Lặp lại một hoặc một nhóm các lệnh trong khi điều kiện đã cho là đúng. Nó kiểm tra điều kiện trước khi thực hiện thân vòng lặp. |
Vòng lặp for | Thực thi một dãy các lệnh nhiều lần và tóm tắt đoạn code mà quản lý biến vòng lặp. |
Vòng lặp do...while | Giống lệnh while, ngoại trừ ở điểm là nó kiểm tra điều kiện ở cuối thân vòng lặp và luôn thực hiện vòng lặp đầu tiên dù điều kiện đúng hay không. |
Vòng lặp foreach | Được sử dụng để duyệt lần lượt từng phần tử trong một tập hợp, mảng có sẵn.. |
Vòng lặp lồng nhau | Bạn có thể sử dụng một hoặc nhiều vòng lặp trong các vòng lặp while, for hoặc do..while khác. |
Vòng lặp while trong C# thực hiện lặp đi lặp lại một lệnh cho đến khi nào điều kiện đã cho không còn đúng.
while (condition)
{
statement(s);
}
Theo cú pháp trên thì statement(s) có thể là lệnh đơn hoặc một khối các lệnh. condition có thể là bất kỳ biểu thức logic nào. Vòng lặp sẽ lặp đi lặp lại khi điều kiện là true.
Khi điều kiện trở thành false, chương trình điều khiển ngay lập tức chuyển tới dòng lệnh ngay sau vòng lặp.
Lưu ý: vòng lặp while có thể không chạy ngay từ đầu nếu kiểm tra điều kiện và kết quả là false, phần thân vòng lặp được bỏ qua và lệnh đầu tiên ngay sau vòng lặp sẽ được thực thi.
using System;
namespace Loops
{
class Program
{
static void Main(string[] args)
{
// local variable definition
int a = 10;
// while loop execution
while (a < 15)
{
Console.WriteLine("value of a: {0}", a);
a++;
}
Console.ReadLine();
}
}
}
Đây là kết quả khi biên dịch và chạy chương trình trên:
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
Vòng lặp for trong C# là một cấu trúc điều khiển lặp đi lặp lại mà cho phép bạn viết một vòng lặp một cách hiệu quả, mà cần thực hiện trong một khoảng thời gian cụ thể nào đó.
for ( init; condition; increment )
{
statement(s);
}
Dưới đây là miêu tả quy trình thực hiện một vòng lặp for:
using System;
namespace Loops
{
class Program
{
static void Main(string[] args)
{
// for loop execution
for (int a = 10; a < 15; a++)
{
Console.WriteLine("value of a: {0}", a);
}
Console.ReadLine();
}
}
}
Đây là kết quả khi chạy chương trình trên:
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
Không giống như vòng lặp for và while - phải kiểm tra điều kiện vòng lặp ở ngay bước đầu tiên của vòng lặp, nếu thỏa mãn thì vòng lặp mới chạy. Vòng lặp do…while kiểm tra điều kiện ở cuối vòng lặp.
Điều này có nghĩa là vòng lặp do…while luôn thực hiện ít nhất một lần lặp bất kể điều kiện lặp có đúng hay không.
do
{
statement(s);
} while( condition );
using System;
namespace Loops
{
class Program
{
static void Main(string[] args)
{
// local variable definition
int a = 10;
// do loop execution
do
{
Console.WriteLine("value of a: {0}", a);
a = a + 1;
} while (a < 15);
Console.ReadLine();
}
}
}
Đây là kết quả trả về:
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
Vòng lặp foreach được sử dụng để duyệt lần lượt từng phần tử trong một tập hợp, mảng có sẵn.
foreach (var item in collection)
{
// statement(s)
}
Trong đó:
using System;
namespace Samples
{
class Program
{
static void Main(string[] args)
{
int[] array = new int[5] { 1, 2, 3, 4, 5 };
foreach (var item in array)
{
Console.WriteLine("value: {0}", item);
}
Console.ReadLine();
}
}
}
Kết quả khi chạy chương trình:
value: 1
value: 2
value: 3
value: 4
value: 5
C# cho phép các vòng lặp lồng nhau để thực hiện các xử lý phức tạp.
Cú pháp vòng lặp for lồng nhau:
for ( init1; condition1; increment1 )
{
for ( init2; condition2; increment2 )
{
statement(s);
}
statement(s);
}
Cú pháp vòng lặp while lồng nhau:
while (condition1)
{
while (condition2)
{
statement(s);
}
statement(s);
}
Cú pháp vòng lặp do...while lồng nhau:
do
{
statement(s);
do
{
statement(s);
} while( condition1 );
} while( condition2 );
Lưu ý: Với vòng lặp lồng nhau thì bạn có thể đặt bất kỳ kiểu vòng lặp bên trong kiểu vòng lặp khác. Ví dụ, một vòng lặp for có thể bên trong một vòng lặp while, và ngược lại.
using System;
namespace Loops
{
class Program
{
static void Main(string[] args)
{
for (var i = 1; i < 3; i++)
{
for (var j = 5; j < 7; j++)
{
Console.WriteLine("i = {0}; j = {1}, i + j = {2}", i, j, i + j);
}
}
Console.ReadLine();
}
}
}
Đây là kết quả:
i = 1; j = 5, i + j = 6
i = 1; j = 6, i + j = 7
i = 2; j = 5, i + j = 7
i = 2; j = 6, i + j = 8
Đôi khi bạn muốn thay đổi cách vòng lặp duyệt các phần tử trong danh sách. Các lệnh điều khiển vòng lặp sẽ giúp bạn làm điều này.
C# hỗ trợ các lệnh điều khiển vòng lặp sau đây:
Lệnh điều khiển | Miêu tả |
---|---|
Lệnh break | Kết thúc vòng lặp hoặc lệnh switch và chuyển sang thực thi vòng lặp hoặc lệnh switch ngay sau nó. |
Lệnh continue | Khi gặp lệnh này thì chương trình sẽ bỏ qua các câu lệnh ở dưới nó (trong cùng một câu lệnh lặp) để thực hiện vòng lặp mới. |
Lệnh break trong C# có hai cách sử dụng:
Nếu bạn đang sử dụng các vòng lặp lồng nhau (ví dụ, một vòng lặp bên trong vòng lặp khác). Nếu lệnh break nằm trong vòng lặp con thì vòng lặp con ngay lập tức kết thúc và điều khiển chương trình bắt đầu lệnh tiếp theo sau vòng lặp con.
Cú pháp của lệnh break trong C# như sau:
break;
using System;
namespace Loops
{
class Program
{
static void Main(string[] args)
{
// local variable definition
int a = 10;
// while loop execution
while (a < 20)
{
Console.WriteLine("value of a: {0}", a);
a++;
if (a > 15)
{
// terminate the loop using break statement
break;
}
}
Console.ReadLine();
}
}
}
Đây là kết quả của chương trình trên:
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 15
Lệnh continue trong C# làm việc hơi giống với lệnh break. Thay vì bắt buộc kết thúc, nó bắt buộc vòng lặp tiếp theo diễn ra, bỏ qua bất kỳ đoạn code nào ở giữa.
Với vòng lặp for, lệnh continue làm cho bước kiểm tra điều kiện và phần increment của vòng lặp thực thi. Với while và do…while, lệnh continue làm điều khiển chương trình chuyển tới các kiểm tra điều kiện.
Cú pháp của lệnh continue trong C# như sau:
continue;
using System;
namespace Loops
{
class Program
{
static void Main(string[] args)
{
// local variable definition
int a = 10;
// do loop execution
do
{
if (a == 15)
{
// skip the iteration
a++;
continue;
}
Console.WriteLine("value of a: {0}", a);
a++;
} while (a < 20);
Console.ReadLine();
}
}
}
Kết quả của chương trình như sau:
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 16
value of a: 17
value of a: 18
value of a: 19
Một vòng lặp là vòng lặp vô hạn khi một điều kiện không bao giờ false.
using System;
namespace Loops
{
class Program
{
static void Main(string[] args)
{
// vòng lặp for không có điều kiện
for (; ; )
{
Console.WriteLine("Hey! I am trapped");
}
// hoặc while (true)
while (true)
{
Console.WriteLine("Hey! I am trapped too");
}
}
}
}
Các vòng lặp vô hạn này sẽ làm cho hệ thống gặp lỗi StackOverflowException. Do đó bạn cần phải kiểm tra kỹ các điều kiện của vòng lặp để tránh tạo ra các vòng lặp vô hạn.
Bài viết đã giúp bạn có một cái nhìn tổng quát về các loại vòng lặp trong C# như for, while, do...while, foreach.
Nếu bạn có thắc mắc hay gặp bất kỳ vấn đề gì thì đừng ngần ngại để lại lời nhắn ở bên dưới nhé. Mình sẽ cố gắng trả lời sớm trong vòng 24 giờ.
Bạn có muốn xem bài viết tiếp theo không? Nó ở dưới đây nè.
Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Trong loạt bài này, tôi sẽ xem xét một số
Ngôn ngữ C# đã bật các bộ tăng áp liên
Trong bài viết này, chúng ta sẽ tìm hiểu lớp tiện ích ZipFile trong C#, cách nén tập tin và thư mục, cùng với giải nén tập tin zip.
Bài viết này sẽ giới thiệu cách đơn giản nhất mà tôi đã tìm thấy để đọc và ghi file Excel bằng C# sử dụng ExcelMapper.