Vòng lặp Do While trong C#.

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

5.0 (5 đánh giá)
Tạo bởi Kteam Cập nhật lần cuối 12:57 20-07-2020 88.565 lượt xem 4 bình luận
Tác giả/Dịch giả: Kteam
Học nhanh

Danh sách bài học

Vòng lặp Do 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 WHILE 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 do 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 do while trong C#
  • Các ví dụ sử dụng do while trong C#

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

Cú pháp:

do

            {

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

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

  • Đ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 do while biểu thị đây là một vòng lặp do 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 do while.
  • Tiến trình:
    • Đầu tiên trình biên dịch sẽ đi vào dòng do và thực hiện khối lệnh bên trong. Sau đó khi gặp ký tự } sẽ 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ẽ quay lại ký tự { 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.

Lưu ý: vòng lặp do while sẽ thực hiện câu lệnh trong khối code xong rồi mới kiểm tra điều kiện lặp. Cuối vòng lặp do while có dấu ; ở cuối.


Các ví dụ sử dụng do 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 do 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
            do
            {

                // 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++;

            } while (countLoopTime < loopTime) ;
            Console.ReadKey();
        }
  • Kết quả một ma trận số xuất hiện trên màn hình

Vòng lặp Do While trong C#, C# cơ bản, tự học C#, Kteam, HowKteam

  •  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
            do
            {
                // reset lại biến countLoop về 0 để viết lại từ đầu
                countLoop = 0;

                // vẽ từ trái qua valueNum lần
                do
                {
                    // 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++;
                } while (countLoop < valueNum);


                // 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++;
            } while (countLoopTime < loopTime);
            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

Vòng lặp Do While trong C#, C# cơ bản, tự học C#, Kteam, HowKteam

  •  Chúng ta cũng có thể vẽ một hình chữ nhật rỗng NxM với vòng lặp do 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
            do
            {
                // 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
                do
                {
                    /*
                     * 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++;
                } while (countLoopHorizontal < Horizontal);

                // 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++;
            } while (countLoopVertical < Vertical) ;

            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.

Vòng lặp Do While trong C#, C# cơ bản, tự học C#, Kteam, HowKteam

  • 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.

Vòng lặp Do While trong C#, C# cơ bản, tự học C#, Kteam, HowKteam

  • 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.

Vòng lặp Do While trong C#, C# cơ bản, tự học C#, Kteam, HowKteam


Kết luận

Qua bài này chúng ta đã nắm được cách sử dụng vòng lặp do 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 do while. Cùng những điều cần lưu ý.

Bài sau chúng ta sẽ tìm hiểu qua một khái niệm mới – đó là CẤU TRÚC HÀM 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 Do 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ê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ả/Dịch giả

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á

Duytran48 đã đánh giá 10:11 19-10-2023

linhcunb đã đánh giá 15:56 03-03-2022

Congdinh280497 đã đánh giá 01:06 25-03-2021

Hiếu đã đánh giá 15:22 09-08-2019

Trung Xì đã đánh giá 23:42 03-07-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
Sasanoka đã bình luận 16:50 17-08-2024

 int length, width;
 int i = 0, j = 0;
 char drawchar = '*';
 char insidechar = ' ';
 Console.WriteLine("Moi ban nhap chieu dai:");
 length = int.Parse(Console.ReadLine());
 Console.WriteLine("Moi ban nhap chieu rong:");
 width = int.Parse(Console.ReadLine());
 do
 {
     j = 0;
     while (j < length)
     {
         if ((j % (length - 1) == 0) || (j % (length - 1) != 0) && (i % (width - 1) == 0))
         {
             Console.Write(drawchar);
         }
         else
         {
             Console.Write(insidechar);
         }
         j++;
     }
     Console.WriteLine();
     i++;
 } while (i < width);
 
 Console.ReadKey();

_♥Gà Con♥_ đã bình luận 16:51 26-10-2022

internal class hinhtron
    {
        static void Main(string[] args)
        {
            int hangDoc = 6;
            int hangNgang = 6;
            char hinhtron = 'o';
            char khung = '.';
            int demHangDoc = 0;
            int demHangNgang = 0;
            
            do
            {
                demHangNgang = 0;

                while (demHangNgang < hangNgang) 
                {
                    if (((demHangDoc % (hangDoc - 1) == 0) && demHangNgang == 2) || ((demHangDoc % (hangDoc - 1) == 0) && demHangNgang == 3))
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.Write("{0,2}", hinhtron);
                    }
                    else if((demHangDoc == 1 && demHangNgang == 1) || (demHangDoc == 1 && demHangNgang == 4) || (demHangDoc == 4 && demHangNgang == 1) || (demHangDoc == 4 && demHangNgang == 4))
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.Write("{0,2}", hinhtron);
                    }
                    else if((demHangDoc == 2 && demHangNgang == 0) || (demHangDoc == 2 && demHangNgang == 5) || (demHangDoc == 3 && demHangNgang == 0) || (demHangDoc == 3 && demHangNgang == 5))
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.Write("{0,2}", hinhtron);
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.Write("{0,2}", khung);
                    }
                    demHangNgang++;
                    
                }
                Console.WriteLine();
                demHangDoc++;
            }
            while (demHangDoc < hangDoc);
            Console.ReadKey();
           

        }
    }

binvan789 đã bình luận 11:53 10-08-2022
using System;

namespace LearningCode
{
    class Program
    {
        static void Main(string[] args)
        {
            int height = 5;
            int width = 4;
            int i = 0;
            int j = 0;
            do
            {
                j = 0;
                while(j < width)
                {   
                    if (i == 0 || j == 0 || i == height-1 || j == width-1)
                    {
                        Console.Write(" * ");
                    } else
                    {
                        Console.Write("   ");
                    }
                    j++;
                }
                i++;
                Console.WriteLine();
            } while (i < height);
        }
    }
}

 

uuvvww đã bình luận 17:54 14-08-2020

e thấy nếu điều kiện lặp luôn = false thì vòng lặp sẽ thực thi 1 lần chứ ad !

Không có video.