0

Bài 5: Vòng lặp (for, while, do-while, foreach)

🎯 Mục tiêu bài học

  1. Hiểu và sử dụng thành thạo các loại vòng lặp để tự động hóa các tác vụ lặp đi lặp lại.

  2. Phân biệt được khi nào nên dùng for, khi nào dùng while hay foreach.

  3. Kiểm soát luồng vòng lặp bằng break và continue.

📖 Phần 1: Vòng lặp for (Biết trước số lần lặp)

Vòng lặp for được dùng khi bạn biết chính xác bạn muốn lặp lại một công việc bao nhiêu lần (ví dụ: lặp qua 10 phần tử, đếm từ 1 đến 100).

Cú pháp

C#

for (khởi_tạo; điều_kiện_tiếp_tục; bước_nhảy)
{
    // Khối code chạy lặp lại ở đây
}

Ví dụ: In ra các số từ 1 đến 5.

C#

for (int i = 1; i <= 5; i++)
{
    Console.WriteLine($"Gia tri cua i la: {i}");
}

Giải thích luồng chạy:

  1. int i = 1: Khởi tạo biến đếm i bắt đầu từ 1 (chỉ chạy 1 lần duy nhất ở đầu).

  2. i <= 5: Kiểm tra điều kiện. Nếu đúng, chạy code bên trong ngoặc nhọn {}.

  3. i++: Sau khi chạy xong khối code, tăng i lên 1 đơn vị, rồi quay lại bước 2 kiểm tra tiếp.

📖 Phần 2: Vòng lặp while và do-while (Dựa trên điều kiện)

Dùng khi bạn không biết trước phải lặp bao nhiêu lần, mà chỉ biết vòng lặp sẽ dừng lại khi nào (ví dụ: lặp cho đến khi người dùng nhập đúng mật khẩu).

1. Vòng lặp while (Kiểm tra trước, làm sau)

Nếu ngay từ đầu điều kiện đã sai, vòng lặp này sẽ không bao giờ chạy.

C#

int count = 1;
while (count <= 3)
{
    Console.WriteLine($"While dang chay lan thu: {count}");
    count++; // Quan trọng: Phải có bước thay đổi điều kiện để tránh lặp vô tận (infinite loop)
}

2. Vòng lặp do-while (Làm trước, kiểm tra sau)

Khác với while, khối lệnh bên trong do-while bắt buộc chạy ít nhất 1 lần trước khi kiểm tra điều kiện ở cuối.

C#

string password;
do
{
    Console.Write("Moi nhap mat khau: ");
    password = Console.ReadLine();
} 
while (password != "123456"); // Nếu nhập sai, tiếp tục bắt nhập lại

Console.WriteLine("Dang nhap thanh cong!");

📖 Phần 3: Vòng lặp foreach (Dạo chơi qua các tập hợp)

Khi bạn làm việc với Mảng (Array) hoặc danh sách (List), thay vì dùng for với các chỉ số i phức tạp, C# cung cấp foreach để duyệt qua từng phần tử một cách cực kỳ thanh lịch và an toàn.

C#

string[] names = { "Hieu", "An", "Binh", "Cuong" };

// Duyệt qua từng tên trong mảng names
foreach (string name in names)
{
    Console.WriteLine($"Xin chao, {name}!");
}

Lưu ý: foreach chỉ dùng để đọc dữ liệu, bạn không thể dùng nó để thay đổi giá trị của phần tử bên trong mảng gốc trong lúc duyệt.

📖 Phần 4: Điều khiển vòng lặp (break và continue)

  • break: Lập tức thoát hẳn khỏi vòng lặp, bỏ qua các lần lặp còn lại.

  • continue: Bỏ qua lần lặp hiện tại, nhảy cóc sang bước lặp tiếp theo ngay lập tức.

C#

// Ví dụ: In ra các số từ 1 đến 5, nhưng bỏ qua số 3
for (int i = 1; i <= 5; i++)
{
    if (i == 3)
    {
        continue; // Bỏ qua đoạn code bên dưới, quay lên tăng i và chạy tiếp
    }
    Console.WriteLine(i); // In ra: 1, 2, 4, 5 (số 3 bị bỏ qua)
}

💻 Phần 5: Thực hành

Viết chương trình mô phỏng một menu đơn giản cho phép người dùng chọn tính năng cho đến khi họ bấm thoát (0):

C#

using System;

namespace Lesson5
{
    class Program
    {
        static void Main(string[] args)
        {
            int choice;
            
            do
            {
                Console.WriteLine("\n--- MENU QUAN LY ---");
                Console.WriteLine("1. Xem danh sach nguoi dung");
                Console.WriteLine("2. Them nguoi dung moi");
                Console.WriteLine("0. Thoat chuong trinh");
                Console.Write("Lua chon cua ban (0-2): ");
                
                choice = int.Parse(Console.ReadLine());

                // Xử lý lựa chọn bằng switch expression
                string message = choice switch
                {
                    1 => "-> Dang tai danh sach nguoi dung...",
                    2 => "-> Mo form them nguoi dung...",
                    0 => "-> Tam biet!",
                    _ => "-> Lua chon khong hop le, vui long thu lai!"
                };

                Console.WriteLine(message);

            } while (choice != 0); // Lặp lại liên tục miễn là chưa chọn 0

            Console.ReadLine();
        }
    }
}

📝 Tóm tắt bài học

  1. for: Dùng khi biết trước số lần lặp.

  2. while / do-while: Dùng khi lặp dựa vào điều kiện (vòng lặp vô định).

  3. foreach: Công cụ tối ưu để duyệt qua các phần tử trong Mảng hoặc Danh sách.

  4. break: Thoát vòng lặp; continue: Bỏ qua lượt lặp hiện tại.

🛠 Bài tập thực hành

Yêu cầu: Viết chương trình tính tổng các số chẵn từ 1 đến 100.

  1. Sử dụng một vòng lặp (for hoặc while).

  2. Kiểm tra nếu số đó là số chẵn (dùng toán tử chia lấy dư % 2 == 0) thì cộng dồn vào một biến tổng (sum).

  3. In kết quả tổng cuối cùng ra màn hình.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.