Khóa học lập trình C# căn bản

Serial tutorial hướng dẫn lập trình C# cơ bản

Vòng lặp While trong C#. Vòng lặp While trong C#. Vòng lặp While trong C#. Vòng lặp While trong C#. Vòng lặp While trong C#. 5/5 (279 reviews)

Vòng lặp While trong C#.

Đã đăng 2016-09-19 08:58:00 bởi Trần Thành Vi Thanh
4 bình luận 19869 lượt xem
Vòng lặp While trong C#. 5 /5 stars (2 reviews)
 

Dẫn nhập

Ở các bài học trước, chúng ta đã cùng nhau tìm hiểu về CẤU TRÚC VÒNG LẶP TRONG C#. Ở bài này chúng ta sẽ cùng đi sâu vào chi tiết cách sử dụng vòng lặp while trong C#.


Nội dung

Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:

Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:

  • Cấu trúc của một vòng lặp while trong C#
  • Các ví dụ sử dụng while trong C#

Cấu trúc của một vòng lặp while trong C#

Cú pháp:    

       while (<Điều kiện lặp>)

            {

                // khối lệnh lặp lại

            }

  • Điều kiện lặp là một biểu thức logic bắt buộc phải có với kết quả trả về bắt buộc là true hoặc false.
  • Từ khóa while biểu thị đây là một vòng lặp while. Các câu lệnh trong khối lệnh sẽ được lặp lại đến khi không còn thỏa mãn điều kiện lặp sẽ kết thúc vòng lặp while.
  • Tiến trình:
    • Đầu tiên trình biên dịch sẽ đi vào dòng while (<Điều kiện lặp>). Kiểm tra điều kiện lặp có thỏa mãn hay không. Nếu kết quả là true thì sẽ đi vào bên trong thực hiện khối code. Khi gặp ký tự } sẽ quay lên kiểm tra điều kiện lặp và tiếp tục thực hiện khối code. Quá trình chỉ kết thúc khi điều kiện lặp là false.
    • Điều kiện lặp luôn bằng true thì vòng lặp while sẽ trở thành vòng lặp vô tận.
    • Điều kiện lặp luôn bằng false thì vòng lặp sẽ không được thực thi.

Các ví dụ sử dụng while trong C#

Chúng ta cùng thử một ví dụ đầy đủ về các phần của vòng lặp while nhé.

  •  Ví dụ: In ra một ma trận số
static void Main(string[] args)
        {
            int countLoop = 0;
            int countLoopTime = 0;
            int valueNum = 10;
            int loopTime = 5;


            // Vẽ từ trên xuống LoopTime lần
            while (countLoopTime < loopTime)
            {
                // reset lại biến countLoop về 0 để viết lại từ đầu
                countLoop = 0;


                // vẽ từ trái qua valueNum lần
                while (countLoop < valueNum)
                {

                    // in ra giá trị của countLoop trong 8 vị trí
                    Console.Write("{0,8}", countLoop);


                    // tăng giá trị của biến countLoop lên một đơn vị
                    countLoop++;
                }


                // Mỗi khi hoàn thành một vòng lặp nhỏ thì lại xuống dòng chuẩn vị vẽ lần tiếp theo
                Console.WriteLine();


                // tăng giá trị countLoopTime lên một đơn vị
                countLoopTime++;
            }
            Console.ReadKey();
        }
  •  Kết quả một ma trận số xuất hiện trên màn hình

kteam

  •  Chúng ta cũng có thể in ra ma trận số với giá trị ngẫu nhiên bằng cách sử dụng lớp Random. (Phần sử dụng lớp Random một cách chi tiết sẽ được hướng dẫn ở bài RANDOM TRONG C#)
static void Main(string[] args)
        {
            int countLoop = 0;
            int countLoopTime = 0;
            int valueNum = 10;
            int loopTime = 5;
            int minRandomValue = 0;
            int maxRandomValue = 100;


            Random rand = new Random();

            // Vẽ từ trên xuống LoopTime lần
            while (countLoopTime < loopTime)
            {

                // reset lại biến countLoop về 0 để viết lại từ đầu
                countLoop = 0;


                // vẽ từ trái qua valueNum lần
                while (countLoop < valueNum)
                {

                    // giá trị sinh ngẫu nhiên trong khoảng [minRandomValue . . maxRandomValue - 1]
                    int showValue = rand.Next(minRandomValue, maxRandomValue);


                    // in ra giá trị của showValue trong 8 vị trí
                    Console.Write("{0,8}", showValue);


                    // tăng giá trị của biến countLoop lên một đơn vị
                    countLoop++;
                }


                // Mỗi khi hoàn thành một vòng lặp nhỏ thì lại xuống dòng chuẩn vị vẽ lần tiếp theo
                Console.WriteLine();


                // tăng giá trị countLoopTime lên một đơn vị
                countLoopTime++;
            }
            Console.ReadKey();
        }
  • Kết quả một ma trận số hoàn toàn ngẫu nhiên được xuất ra màn hình

kteam

  •  Chúng ta cũng có thể vẽ một hình chữ nhật rỗng NxM với vòng lặp while.
static void Main(string[] args)
        {
            int Vertical = 20;
            int Horizontal = 50;
            char drawChar = '*';
            char insideChar = ' ';
            int countLoopVertical = 0;
            int countLoopHorizontal = 0;


            // Vẽ từ trên xuống
            while (countLoopVertical < Vertical)
            {

                // khởi tạo lại giá trị countLoopHorizontal = 0 mỗi lần lặp mới
                countLoopHorizontal = 0;

                // Vẽ từ trái sang
                while (countLoopHorizontal < Horizontal)
                {

                    /*
                     * Nếu đang ở tọa độ là cạnh trên hoặc dưới i % (N - 1) == 0
                     * hoặc đang ở cạnh trái hoặc phải (j % (M - 1) == 0)
                     * mà không nằm ở cạnh trên hoặc dưới (i % (N - 1) != 0)
                     * ((i % (N - 1) != 0) && (j % (M - 1) == 0))
                     * thì vẽ ra ký tự của hình chữ nhật
                     * ngược lại vẽ ra ký tự không thuộc hình chữ nhật
                    */

                    if (countLoopVertical % (Vertical - 1) == 0 || ((countLoopVertical % (Vertical - 1) != 0) && (countLoopHorizontal % (Horizontal - 1) == 0)))
                    {
                        Console.Write(drawChar);    // lúc này là ký tự *
                    }
                    else
                    {
                        Console.Write(insideChar);  // lúc này là ký tự rỗng ' '
                    }


                    // tăng giá trị của countLoopHorizontal lên 1 đơn vị
                    countLoopHorizontal++;
                }

                // mỗi lần vẽ xong một hàng thì xuống dòng
                Console.WriteLine();


                // tăng giá trị của countLoopVertical lên 1 đơn vị
                countLoopVertical++;
            }
            Console.ReadKey();
        }
  • Kết quả sẽ thấy một hình chữ nhật rỗng chiều ngang 20 chiều dài 50 được vẽ lên màn hình.

kteam

  • Ta có thể thay đổi giá trị của M, N, drawChar và insideChar để có những hình chữ nhật màu mè cùng kích thước khác nhau.

kteam

  • Bạn hãy thử thay đổi màu sắc hoặc vẽ hình chữ nhật ở bất cứ đâu trên màn hình console nhé. Thử vẽ hình chữ nhật đặc hay hình tam giác, hình tròn cũng là một thử thách thú vị đấy. Chúc các bạn thành công.

kteam


Kết luận

Qua bài này chúng ta đã nắm được cách sử dụng vòng lặp while. Một cấu trúc rất mạnh mẽ và tần xuất sử dụng cực kỳ nhiều trong lập trình. Những đặc điểm của vòng lặp while. Cùng những điều cần lưu ý.

Bài sau chúng ta sẽ đi sâu hơn vào cách sử dụng của CẤU TRÚC DO WHILE TRONG C#.

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.



Tài liệu 

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học vòng lặp while trong C# dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên like hoặc +1 Google để ủng hộ Kteam và tác giả nhé! 


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng. 

 

Chia sẻ:
Thảo luận Hỏi và đáp Báo lỗi bài viết
Hủy bỏ   hoặc  
Vòng lặp While trong C#.
phongsmod1 2018-11-06 12:14:02

ad cho mình hỏi ở ví dụ đầu tiên in ra trong 8 vị tris {0,8} là sao nhỉ?  Tại sao giữ các số nó lại có 1 khoảng cách vậy?

Console.Write("{0,8}", countLoop);

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
phongsmod1 2018-11-06 12:25:00
ồh có phải {0,8} là khoảng cách không vậy? mình thử thay 8 bằng các số khác thì thấy khoảng cách giữa các số cũng thay đổi.
0 bình chọn
Reply
Vòng lặp While trong C#.
dungn8979 2018-05-29 22:31:32

int dai, rongn,rongt, irong, idai;
            bool ktdai, ktrong;
            Console.WriteLine("_______________________________");
            Console.WriteLine("|                             |");
            Console.WriteLine("|        CHUONG TRINH         |");
            Console.WriteLine("|           VE HINH           |");
            Console.WriteLine("|_____________________________|");
            Console.WriteLine("hay nhap so nguyen de ve hinh:");
            Console.Write("chieu dai: ");
            ktdai = int.TryParse(Console.ReadLine(), out dai);
            Console.Write("chieu rong: ");
            ktrong = int.TryParse(Console.ReadLine(), out rongn);
            rongt = rongn * 2;
            Console.WriteLine("hinh cua ban:");
            if (ktdai == false || ktrong == false)
            {
                Console.Write("ban chi duoc nhap so nguyen");
            }
            else if (dai==0 && rongt == 0)
            {
                Console.WriteLine("khong the tao hinh");
            }
            else
            {
                for (idai=1;idai<=dai;idai++)
                {
                    if (idai==1|| idai==dai)
                    {
                        for (irong = 1; irong <= rongt; irong++) 
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.Write("$");
                        }

                        Console.WriteLine("");
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.Write("$");
                        for(irong=2;irong<rongt;irong++)
                        {
                            Console.ForegroundColor = ConsoleColor.White;
                            Console.Write("-");
                        }
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.Write("$\n");
                    }


                }
            }
            Console.Read();

0 bình chọn
Reply
Vòng lặp While trong C#.
Hung Hoang 2017-06-24 15:34:49

mọi người thấy sao ạ.// Vẽ HCN

static void Main(string[] args)
        {
            int vertical = 30;
            int horizontal = 100;
            int i = 0;
            int j = 0;
            while (i < vertical)
            {
                while (j < horizontal)
                {
                    if (i == 0 || i == vertical - 1 || j == 0 || j == horizontal - 1)
                    {
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.Write("*");
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.Write(" ");
                    }
                    j++;
                }
                Console.WriteLine();
                i++;
                j = 0;
            }
            Console.ReadKey();                     
        }

0 bình chọn
Reply
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  

Chiến dịch

Kteam - Howkteam Free Education