0

Bài 8: Hàm (Methods) - Tổ chức code gọn gàng, tái sử dụng

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

  1. Hiểu bản chất của Hàm (Method) và lý do tại sao không được viết code dồn hết vào một chỗ (Spaghetti code).

  2. Nắm vững cú pháp khai báo hàm, truyền tham số (Parameters) và trả về kết quả (return).

  3. Phân biệt được phạm vi hoạt động của biến (Scope).

📖 Phần 1: Tại sao phải dùng Hàm?

Hãy tưởng tượng bạn viết một ứng dụng tính tiền giảm giá cho khách hàng ở 5 nơi khác nhau trong code. Nếu công thức giảm giá thay đổi, bạn sẽ phải sửa code ở cả 5 chỗ. Rất dễ sót lỗi!

Hàm (Method) sinh ra để giải quyết việc đó. Nó là một khối lệnh độc lập làm một nhiệm vụ cụ thể. Khi cần, bạn chỉ việc "gọi tên" nó ra dùng mà không cần viết lại từ đầu. (Chính hàm Main mà bạn viết từ Bài 1 đến giờ cũng là một hàm đặc biệt).

📖 Phần 2: Cấu trúc cơ bản của một Hàm trong C#

1. Cú pháp chuẩn

C#

[Phạm_vi] [Kiểu_trả_về] [Tên_Hàm] ([Tham_số_truyền_vào])
{
    // Các câu lệnh thực thi
    return [Giá_trị_trả_về]; // (Nếu kiểu trả về khác void)
}

2. Các thành phần chi tiết:

  • Phạm vi (Access Modifier): Thường dùng public hoặc private (hoặc static nếu gọi trực tiếp bên trong hàm Main tĩnh).

  • Kiểu trả về (Return Type):

    • Nếu hàm chỉ làm việc rồi in ra màn hình mà không trả về kết quả gì, dùng từ khóa void.

    • Nếu hàm tính toán ra một con số, một chuỗi,... và muốn ném kết quả đó ra ngoài cho nơi khác dùng, khai báo kiểu dữ liệu tương ứng (int, double, string,...).

  • Tên hàm: Nên đặt theo quy tắc PascalCase (Viết hoa chữ cái đầu mỗi từ, ví dụ: CalculateTotal, PrintHeader).

📖 Phần 3: Các dạng hàm thường gặp

1. Hàm không có tham số, không trả về giá trị (void)

C#

static void PrintWelcomeBanner()
{
    Console.WriteLine("================================");
    Console.WriteLine("    HE THONG QUAN LY BAN HANG   ");
    Console.WriteLine("================================");
}

// Cách gọi hàm:
PrintWelcomeBanner();

2. Hàm có tham số truyền vào

Tham số giống như "nguyên liệu" bạn đưa vào nhà máy để xử lý.

C#

static void SayHello(string name, int age)
{
    Console.WriteLine($"Xin chao {name}, ban nam nay {age} tuoi.");
}

// Cách gọi hàm:
SayHello("Hieu", 22);

3. Hàm có giá trị trả về (return)

Khi tính toán xong, hàm cần trả kết quả về cho biến gọi nó.

C#

// Hàm nhận vào 2 số nguyên và trả về tổng của chúng
static int Sum(int a, int b)
{
    int result = a + b;
    return result; // Trả kết quả về nơi gọi
}

// Cách gọi hàm và nhận kết quả:
int total = Sum(10, 20); // Biến total sẽ nhận giá trị 30
Console.WriteLine(total);

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

Viết một chương trình chuẩn hóa tên người dùng và tính điểm trung bình, sử dụng các hàm riêng biệt để code cực kỳ gọn gàng, chuyên nghiệp:

C#

using System;

namespace Lesson8
{
    class Program
    {
        // 1. Hàm chính điều phối chương trình
        static void Main(string[] args)
        {
            ShowHeader();

            double math = 8.5;
            double literature = 7.0;
            double english = 9.0;

            // Gọi hàm tính điểm trung bình
            double avg = CalculateAverage(math, literature, english);

            Console.WriteLine($"Diem toan: {math} | Van: {literature} | Anh: {english}");
            Console.WriteLine($"Diem trung binh: {Math.Round(avg, 2)}");

            // Gọi hàm xếp loại
            string rank = GetRanking(avg);
            Console.WriteLine($"Xep loai: {rank}");

            Console.ReadLine();
        }

        // 2. Hàm in tiêu đề giao diện
        static void ShowHeader()
        {
            Console.WriteLine("--- CHUONG TRINH QUAN LY DIEM HOC SINH ---");
        }

        // 3. Hàm tính điểm trung bình (Có trả về kết quả double)
        static double CalculateAverage(double m, double l, double e)
        {
            return (m + l + e) / 3;
        }

        // 4. Hàm xếp loại học lực dựa vào điểm số (Có trả về chuỗi string)
        static string GetRanking(double avgScore)
        {
            if (avgScore >= 8.0) return "Gioi";
            if (avgScore >= 6.5) return "Kha";
            if (avgScore >= 5.0) return "Trung Binh";
            return "Yeu";
        }
    }
}

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

  1. Hàm (Method) giúp chia nhỏ bài toán phức tạp thành các khối code độc lập, dễ tái sử dụng và bảo trì.

  2. Dùng void khi hàm không cần trả về giá trị; dùng các kiểu dữ liệu (int, string,...) kèm từ khóa return khi cần trả về kết quả.

  3. Tham số (Parameters) là dữ liệu truyền vào hàm để xử lý.

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

Yêu cầu: Viết một hàm kiểm tra số nguyên tố:

  1. Tạo một hàm có tên là IsPrime nhận vào một số nguyên (int number) và trả về kiểu bool (true nếu là số nguyên tố, false nếu không phải).

  2. Trong hàm Main, yêu cầu người dùng nhập vào một số bất kỳ, gọi hàm IsPrime để kiểm tra và in kết quả ra màn hình.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí