Vòng lặp While trong C#.

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

5.0 (1 đánh giá)
Tạo bởi Trần Thành Vi Thanh Cập nhật lần cuối 22:22 22-03-2019 25.097 lượt xem 12 bình luận
Học nhanh

Danh sách bài học

Vòng lặp While trong C#.

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 xuống

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 likeshare để ủ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.

Nội dung bài viết

Tác giả

Mỗi buổi sáng thức dậy, bạn có 2 lựa chọn, tiếp tục ngủ để mơ những giấc mơ hoặc thức dậy và theo đuổi chúng!

Khóa học

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

Bạn mới bắt đầu học lập trình? Bạn đang muốn học thêm ngôn ngữ lập trình mới? C# là lựa chọn hoàn hảo để đáp ứng các nhu cầu trên.

Ngôn ngữ C# là một ngôn ngữ mới, cấu trúc rõ ràng, dễ hiểu và dễ học. C# thừa hưởng những ưu việt từ ngôn ngữ Java, C, C++ cũng như khắc phục được những hạn chế của các ngôn ngữ này. C# là ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft, được xây dựng dựa trên C++ và Java.

Khoá học lần này sẽ mang đến toàn bộ những kiến thức cơ bản về C#. Chào mừng các bạn đã đến với khoá học LẬP TRÌNH C# CƠ BẢN của Kteam.

Đánh giá

nguyenphuclam đã đánh giá 21:46 02-05-2019

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
heo1682 đã bình luận 12:34 12-04-2019

giải thích em lệnh này với ad:
Console.Write("{0,8}", countLoop);
cái {0,8} em thấy lạ lạ

heo1682 đã bình luận 12:33 12-04-2019

giải thích em lệnh này với ad:
Console.Write("{0,8}", countLoop);
cái {0,8} em thấy lạ lạ

khanhwap đã bình luận 15:51 23-03-2019

ad cho e hỏi code e như sau, e muốn tạo 1 dãy số 15 số bằng random

khi chạy thường thì nó chỉ ra 1 dãy số giống nhau

 còn chạy tích đỏ vào biến để debug thì nó lại ok, ad cho e hướng giải quyết với

 

string Imei = "";

private string Random()
        {
            string im = "";
            while (im.Length < 15)
            {
                Random rd = new Random();
                im += (rd.Next(0,9)).ToString();
                
            }
            return Imei = im;

nguyentanvi.job đã bình luận 18:01 08-02-2019
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace While
{
    class Program
    {
        static void Main(string[] args)
        {
            // vẽ hình chữ nhật or hình vuông
            Console.Write("Moi ban nhap chieu dai: ");//in ra dòng chữ không xuống dòng
            int chieuDai = int.Parse(Console.ReadLine());//ép kiểu vì Console.ReadLine(); nhập vào kiễu chuỗi từ bàn phím.
            Console.Write("Moi ban nhap chieu rong: ");
            int chieuRong = int.Parse(Console.ReadLine());

            int countCD = 1;
            int countCR = 1;

            while(countCR <= chieuRong)
            {
                while(countCD <= chieuDai)
                {
                    if (countCR == 1 || countCR == chieuRong || countCD == 1 || countCD == chieuDai)
                    {
                        Console.Write('*');
                    }
                    else
                    {
                        Console.Write(' ');
                    }
                    countCD++;
                }
                countCR++;
                countCD = 1;//gán lại 1 cho countCD vì khi chạy while(countCD <= chieuDai) 
                //nó đã tăng lên nên khi chạy biểu thức sẽ false
                Console.WriteLine();
            }
            Console.ReadKey();
        }
    }
}

 

phongsmod1 đã bình luận 12:14 06-11-2018

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

Không có video.