Trang chủ C# cơ bản Vòng lặp While trong C#

Vòng lặp While trong C#

Nguyễn Dương 07-06-2024

Trong bài viết trước mình đã giới thiệu sơ lược về cấu trúc lặp và chúng ta đã cùng tìm hiểu về vòng lặp for. Nay trong bài viết này chúng ta cùng tìm hiểu về vòng lặp while nhé.

Đối với vòng lặp for chúng ta có thể biết trước được số lần lặp nhưng để giải quyết vấn đề mà không biết trước được số lần lặp thì vòng lặp while sẽ giải quyết được.

CẤU TRÚC VÒNG LẶP WHILE TRONG C#

Cú pháp
while (biểu thức điều kiện)
{
        <Khối lệnh thực hiện>
}

Biểu thức điều kiện là điều kiện để các lệnh được thực hiện, biểu thức này bắt buộc phải trả về giá trị true hoặc false
- Nếu trong while có nhiều câu lệnh được thực hiện thì phải để nó trong khối ngoặc nhọn { }

Sơ đồ cấu trúc vòng lặp while
Nhìn vào sơ đồ trên ta sẽ thấy nếu điều kiện đúng thì thực hiện khối lệnh. Sau đó quay trở lại kiểm tra điều kiện, nếu đúng thì lại thực hiện khối lệnh, nếu sai thì thoát khỏi vòng lặp.
Điều này đồng nghĩ với việc nếu điều kiện luôn đúng thì chương trình sẽ lặp vô tận.

Lưu ý
- Để thoát khỏi tình trạng lặp vô hạn, gây ra hiện tượng treo máy thì chúng ta cần có lệnh làm thay đổi giá trị của biểu thức, để đảm bảo rằng sau một số lần lặp nhất định thì biểu thức điều kiện sẽ trả về giá trị false và kết thúc vòng lặp. Nếu trong thân vòng lặp không có lệnh làm thay đổi giá trị biểu thức thì ta cần có từ khóa break để thoát khỏi vòng lặp. 
- Điều kiện lặp luôn bằng false thì vòng lặp sẽ không được thực thi.

Ví dụ 1: Gõ chương trình yêu cầu người dùng nhập vào 1 số nguyên nằm trong khoảng từ 1 đến 100. Nếu sai thì hiện thông báo và yêu cầu nhập lại.
Trong ví dụ này, chúng ta không hề biết người dùng nhập sai bao nhiêu lần, tức nghĩa là không thể biết vòng lặp sẽ lặp lại bao nhiêu lần.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace vong_lap_while
{
    class Program
    {
        static void Main(string[] args)
        {
            int x;

            Console.Write("nhap vao so nguyen tu 1 den 100: ");
            x = int.Parse(Console.ReadLine());
            while ((x <= 0) || (x > 100))
            {
                Console.WriteLine("xin loi {0} khong nam trong khoang tu 1 den 100", x);
                Console.Write("moi ban nhap lai: ");
                x = int.Parse(Console.ReadLine());
            }
            Console.WriteLine("so ban vua nhap la: " + x);
            Console.ReadKey();
        }
    }
}

Kết quả: 

Ví dụ 2: In ra màn hình ma trận gồm 9 hàng, 9 cột. Mỗi hàng là một dãy số tự nhiên từ 1 đến 9.
int countRow = 1;
int countCol = 1;
int maxRow = 9;
int maxCol = 9;

while (countRow <= maxRow)
{
      while (countCol <= maxCol)
      {
           Console.Write("{0,2}", countCol);
           countCol++;
      }
      countCol = 1;  //Reset lại giá trị số cột
      countRow++;
      Console.WriteLine();
}

Kết quả:

Lưu ý: Sau mỗi vòng lặp cho cột thì bạn phải reset lại giá trị countCol vì lúc đó số cột đang lớn hơn max cột. Nếu bạn không reset lại số cột thì sau hàng thứ nhất được in ra, lúc này số cột là 10. Sang hàng thứ 2 thì chương trình sẽ không in số cột ra nữa vì số cột lúc này không thỏa mãn điều kiện lặp. 

Bài viết liên quan

Hàm đệ quy trong C# Hàm đệ quy trong C#
enum trong C# enum trong C#
Struct trong C# Struct trong C#
Lớp String trong C# Lớp String trong C#
Vòng lặp foreach trong C# Vòng lặp foreach trong C#
Mảng đa chiều, mảng của mảng trong C# Mảng đa chiều, mảng của mảng trong C#