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
-
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).
-
Nắm vững cú pháp khai báo hàm, truyền tham số (Parameters) và trả về kết quả (
return). -
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
publichoặcprivate(hoặcstaticnếu gọi trực tiếp bên trong hàmMaintĩ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
-
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ì.
-
Dùng
voidkhi 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óareturnkhi cần trả về kết quả. -
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ố:
-
Tạo một hàm có tên là
IsPrimenhận vào một số nguyên (int number) và trả về kiểubool(truenếu là số nguyên tố,falsenếu không phải). -
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àmIsPrimeđể kiểm tra và in kết quả ra màn hình.
All rights reserved