Bài 10: Vòng lặp trong C# (Phần 2)

0
956

Ở phần trước chúng ta đã làm quen với các khái niệm  Vòng lặp trong C# Ở phần này, chúng ta sẽ tiếp tục tìm hiểu về cách thức hoạt động của các loại vòng lặp này nhé.

  1. Vòng lặp While

Cú pháp:

while(condition)
{
   statement(s);
}

Với statement(s) có thể là một lệnh đơn hoặc một khối lệnh. Condition có thể là một biểu thức, với giá trị khác 0 ta hiểu conditon mang giá trị true và ngược lại, biểu thức mang giá trị 0 thì condition là false. Vòng lặp while lặp khi condition  có giá trị true.

Một khi condition false, chương trình sẽ chuyển đến câu lệnh tiếp theo sau vòng lặp while.

image002

Ví dụ:

using System;

namespace Loops
{
    class Program
    {
        static void Main(string[] args)
        {
            /*Khai báo biến cục bộ a và gán giá trị là 10*/
            int a = 10;

            /* Vòng lặp while*/
            while (a < 20)
            {
                Console.WriteLine("value of a: {0}", a);
                a++;
            }
            Console.ReadLine();
        }
    }

Với đoạn chương trình trên, ta thấy a<20 là biểu thức điều kiện condition. Và với khởi tạo ban đầu a=10 thì biểu thức này cho kết quả true nên khổi lệnh trong while sẽ được thực hiện.

Khối lệnh while chỉ ngừng khi biến a tăng đến 20 (do biểu thức a++) làm cho condition a<20 sai.

Kết quả đoạn chương trình trên là:

Capture

  1. Vòng lặp For

Vòng lặp này được sử dụng trong những trường hợp ta có thể xác định được trước số lần lặp.

Cú pháp:

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

Với biểu thức init được thực hiện đầu tiên và 1 lần duy nhất. Bước này dùng để khai báo và khởi tạo biến điều khiển. Đôi lúc ta không cần có biểu thức init, miễn là có dấu ;

Condition vẫn là biểu thức điều kiện. Nếu nó đúng, phần thân của vòng lặp sẽ được thực thi. Nếu nó là sai, phần thân của vòng lặp không thực hiện và chuyển đến thực thi câu lệnh tiếp theo ngay sau vòng lặp.

Sau khi thực thi khối lệnh trong thân vòng lặp, biểu thức increment sẽ được thực hiện. Increment này cho phép ta cập nhật giá trị biến điều khiển vòng lặp. Phần này cũng có thể để trống.

Tiếp theo, chương trình sẽ lại kiểm tra condition. Nếu đúng, vòng lặp lại được thực hiện và quá trình này sẽ lặp đi lặp lại (thực hiện khối lệnh trong thân của vòng lặp, sau đó thay đổi biến điều khiển, và sau đó một lần nữa kiểm tra điều kiện). Vòng lặp for chấm dứt chỉ khi condition false.

image003

Ví dụ:

using System;
namespace Loops {
    class Program {
        static void Main(string[] args) {
            /* Vòng lặp for */
            for (int a = 10; a < 20; a = a + 1)
            {
                Console.WriteLine("value of a: {0}", a);
            } 
            Console.ReadLine();
        }
    }
}

Với đoạn chương trình trên, biểu thức init khai báo một biến a và gán giá trị là 10. Tiếp theo biểu thức condition a<20 sẽ được kiểm tra. Với a=10 condition là true, câu lệnh trong for sẽ được thực hiện. và sau đó biến a được tăng lên 1 thông qua biểu thức increment a=a+1.

Chương trình quay lại kiểm tra condition và thực thi câu lệnh trong for. Cho đến khi a tăng đến giá trị 20 làm cho condition sai thì vòng lặp kết thúc.

Kết quả vòng lặp này tương tự vòng lặp while.

  1. Vòng lặp do…while

Không giống như for và while kiểm tra các điều kiện ở đầu vòng lặp, do … while kiểm tra điều kiện của nó ở cuối vòng lặp.

do…while tương tự như vòng lặp while, ngoại trừ việc nó đảm bảo rằng vòng lặp này sẽ được thực hiện ít nhất một lần.

Cú pháp:

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

Chú ý rằng các biểu thức điều kiện xuất hiện ở cuối của vòng lặp, vì vậy statement (s) trong vòng lặp thực hiện một lần trước khi điều kiện được kiểm tra.

Nếu điều kiện là đúng chương trình sẽ trở lại đầu khối lệnh để thực hiện tiếp statement(s) trong vòng lặp một lần nữa. Quá trình này lặp đi lặp lại cho đến khi điều kiện trở thành sai.

image001

Ví dụ:

using System;
namespace Loops
{
    class Program
    {
        static void Main(string[] args)
        {
            /* Khai báo biến cục bộ */
            int a = 10;
            /* vòng lặp do..while */
            do
            {
                Console.WriteLine("value of a: {0}", a); 
                a = a + 1;
            } while (a < 20);
            Console.ReadLine();
        }
    }
}

Khi bắt đầu vòng lặp, câu lệnh console.ReadLine(“Value of a: {0}”,a); sẽ được thực hiện ngay sau đó. Tiếp theo là lệnh a=a+1; làm thay đổi giá trị biến a. Thực hiện hết các câu lệnh trong thân vòng lặp, tiếp đến chương trình kiểm tra điều kiện lặp. a<20 đúng khi a=11 do đó vòng lặp do…while được thực hiện một lần nữa. Vòng lặp được thực hiện tiếp tục cho đến khi biến a tăng đến giá trị làm biểu thức điều kiện sai.

Đoạn chương trình trên cho a kết quả tương tự vòng lặp for và while.

4. Vòng lặp lồng nhau

Ta có thể lồng các vòng lặp vào nhau như ví dụ sau đây:

using System;
namespace Loops
{
    class Program
    {
        static void Main(string[] args)
        {
            /* Khai báo biến */
            int i, j;
            /* Vòng lặp for lồng trong 1 vòng lặp for khác */
            for (i = 2; i < 100; i++)//for1
            {
                for (j = 2; j <= (i / j); j++)//for2
                    if ((i % j) == 0) break; // if factor found, not prime
                if (j > (i / j))
                    Console.WriteLine("{0} is prime", i);
            }
            Console.ReadLine();
        }
    }
}

Với mỗi lần chạy trong vòng lặp for1 thì vòng lặp for2 được thực hiện. Và kết quả của chương trình trên là:

Capture

5. Lệnh điều khiển

Ví dụ sau đây cho ta thấy cách mà lệnh break và continue điều khiển vòng lặp:

using System;
namespace Loops
{
    class Program
    {
        static void Main(string[] args)
        {
            /* local variable definition */
            int a;
            int count = 0;
            for (a = 1; a < 20; a++)
            {
                if (a % 2 == 0)//if1
                {
                    continue;
                }
                Console.WriteLine("Value of a:{0}", a);
                count++;
                if (count == 5)//if2
                    break;
            }

            Console.ReadLine();
        }
    }
}

Ta thấy lệnh continue được thực hiện chỉ khi giá trị của a không chia hết cho 2. Lệnh này làm cho các câu lệnh phía sau không được thực hiện. Và chương trình sẽ dừng nếu biến count đạt đến giá trị 5 do lệnh break trong câu if2. Đoạn chương trình trên cho ta kết quả sau:

Capture

Video Hướng dẫn

Chúc các bạn thành công! Hẹn gặp lại ở bài viết tiếp theo

This site uses Akismet to reduce spam. Learn how your comment data is processed.