Vòng lặp trong C#

Vòng lặp trong C#

  • Trung Nguyen
  • 27/03/2020

  • 11 min read

Vòng lặp là gì?

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 trước nhất trong một hàm được thực thi trước nhất, kế đến là câu lệnh thứ hai, v.v.

Từ ngữ lập trình phân phối các kết cấu điều khiển khác nhau cho phép thực thi những câu lệnh cầu kỳ. Vòng lặp là một trong những kết cấu điều khiển đó.

Vòng lặp cho phép tất cả 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 & sau đây là sơ đồ tổng quát từ một câu lệnh lặp trong chủ yếu các từ ngữ lập trình:

C# trợ giúp những lệnh điều khiển sau đây:

Kiểu vòng lặp
Diễn 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 đã nghĩ rằng đúng. Nó kiểm soát đ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 & tóm lược đoạn code mà làm chủ biến vòng lặp.

Vòng lặp do…while

Giống lệnh while, loại trừ ở điểm là nó kiểm soát điều kiện ở cuối thân vòng lặp & luôn thực hiện vòng lặp trước nhất 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#

Vòng lặp while trong C# thực hiện lặp đi lặp lại một lệnh cho đến lúc nào điều kiện đã cho không còn đúng.

Cú pháp vòng lặp while trong C#

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 nhanh chóng chuyển tới dòng lệnh ngay sau vòng lặp.

Sơ đồ vòng lặp while trong C#

Sơ đồ vòng lặp while trong C#

Cảnh báo: vòng lặp while có thể không chạy ngay từ đầu nếu kiểm soát điều kiện & kết quả là false, phần thân vòng lặp được bỏ qua & lệnh trước nhất ngay sau vòng lặp sẽ được thực thi.

Chẳng hạn vòng lặp while trong C#

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 & 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#

Vòng lặp for trong C# là một kết cấu đ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 rõ ràng nào đó.

Xem Thêm  such as sending structured data

Cú pháp vòng lặp for trong C#

for ( init; condition; increment ) 
{
   statement(s);
}

Dưới đây là diễn tả quy trình thực hiện một vòng lặp for:

  • Bước 1: Lệnh init được thực hiện trước nhất & chỉ một lần. Ở đây cho phép bạn khai báo & khởi tạo bất kỳ biến điều khiển vòng lặp nào.
  • Bước 2: condition là điều kiện của vòng lặp. Nếu điều kiện là true, phần thân vòng lặp được thực thi. Nếu nó là false, phần thân vòng lặp không được thực thi & dòng điều khiển nhảy tới lệnh kế đến ngay sau vòng lặp for.
  • Bước 3: thực thi các lệnh ở trong vòng lặp statement(s).
  • Bước 4: Thực thi lệnh increment. Lệnh này cho phép bạn update bất kỳ biến điều khiển vòng lặp nào rồi lặp lại bước 2.

Sơ đồ vòng lặp for trong C#

Sơ đồ vòng lặp for trong C#

Chẳng hạn vòng lặp for trong C#

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

Vòng lặp do…while trong C#

Không giống như vòng lặp for & while – phải kiểm soát điều kiện vòng lặp ở ngay bước trước nhất của vòng lặp, nếu đáp ứng thì vòng lặp mới chạy. Vòng lặp do…while kiểm soát đ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ối thiểu một lần lặp bất kì điều kiện lặp có đúng hay không.

Cú pháp vòng lặp do…while trong C#

do 
{
   statement(s);
} while( condition );

Sơ đồ vòng lặp do…while trong C#

Sơ đồ vòng lặp do while trong C#

Chẳng hạn vòng lặp do…while trong C#

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 trong C#

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.

Cú pháp vòng lặp foreach trong C#

foreach (var item in collection)
{
  	// statement(s)
}

Trong số đó:

  • item sẽ là từng phần tử trong tập hợp hoặc mảng.
  • collection là tập hợp hoặc mảng.
  • statement(s) là một hoặc nhiều lệnh sẽ được thực thi khi collection có phần tử hoặc chưa duyệt các phần tử trong collection.
Xem Thêm  Google

Sơ đồ vòng lặp foreach trong C#

Sơ đồ vòng lặp foreach trong C#

Chẳng hạn vòng lặp foreach trong C#

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

Vòng lặp lồng nhau trong C#

C# cho phép các vòng lặp lồng nhau để thực hiện các giải quyết cầu kỳ.

Cú pháp vòng lặp lồng nhau trong C#

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 );

Cảnh báo: 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. Chẳng hạn, một vòng lặp for có thể bên trong một vòng lặp while, & trái lại.

Chẳng hạn vòng lặp lồng nhau trong C#

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

Các lệnh điều khiển vòng lặp

Đôi lúc bạn mong muốn biến đổi cách vòng lặp duyệt các phần tử trong mục lục. Các lệnh điều khiển vòng lặp sẽ giúp bạn làm điều này.

C# trợ giúp các lệnh điều khiển vòng lặp sau đây:

Lệnh điều khiển
Diễn tả

Lệnh break
Chấm dứt vòng lặp hoặc lệnh switch & 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#

Lệnh break trong C# có hai cách dùng:

  • Khi lệnh break được sử dụng trong vòng lặp, vòng lặp ngay nhanh chóng chấm dứt & điều khiển chương trình khởi đầu lệnh kế đến sau vòng lặp.
  • Nó có thể được sử dụng trong lệnh switch.

Nếu bạn đang sử dụng các vòng lặp lồng nhau (chẳng hạn, 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 nhanh chóng chấm dứt & điều khiển chương trình khởi đầu lệnh kế đến sau vòng lặp con.

Xem Thêm  SameObject] readonly attribute

Cú pháp lệnh break trong C#

Cú pháp của lệnh break trong C# như sau:

break;

Sơ đồ lệnh break trong C#

Sơ đồ lệnh break trong C#

Chẳng hạn lệnh break trong C#

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ệnh continue trong C# làm việc hơi giống với lệnh break. Thay vì bắt buộc chấm dứt, nó bắt buộc vòng lặp kế đến 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 khiến cho bước kiểm soát điều kiện & phần increment của vòng lặp thực thi. Với while & do…while, lệnh continue làm điều khiển chương trình chuyển tới các kiểm soát điều kiện.

Cú pháp lệnh continue trong C#

Cú pháp của lệnh continue trong C# như sau:

continue;

Sơ đồ lệnh continue trong C#

Sơ đồ lệnh continue trong C#

Chẳng hạn lệnh continue trong C#

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

Vòng lặp vô hạn trong C#

Một vòng lặp là vòng lặp vô hạn khi một điều kiện không khi nào false.

Chẳng hạn vòng lặp vô hạn trong C#

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ẽ khiến cho hệ thống gặp lỗi StackOverflowException. Cho nên bạn cần phải kiểm soát kỹ các điều kiện của vòng lặp để tránh tạo thành các vòng lặp vô hạn.

Kết luận

Nội dung đã hỗ trợ 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ó khú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ẽ nỗ lực giải đáp sớm trong vòng 24 giờ.

Bạn có mong muốn xem nội dung kế đến không? Nó ở dưới đây nè.

Viết một bình luận