Hướng dẫn chi tiết về hàm trong C++ cho người mới bắt đầu

Xin chào các bạn đang học lập trình! Hôm nay, chúng ta sẽ bắt đầu một hành trình đầy thú vị vào thế giới của các hàm trong C++. Là một giáo viên khoa học máy tính gần gũi, tôi sẽ hướng dẫn bạn qua khái niệm cơ bản này, sẽ cách mạng hóa cách bạn viết mã. Hãy ngồi vào vị trí ảo của bạn, và chúng ta cùng bắt đầu!

C++ Functions

Các hàm là gì?

Trước khi bắt đầu viết mã, hãy hiểu các hàm là gì. Hãy tưởng tượng bạn đang nướng bánh quy (ngon lắm!). Bạn không phải mỗi lần lại sáng tạo lại công thức, phải không? Bạn làm theo một这套 hướng dẫn - đó chính là bản chất của một hàm trong lập trình. Nó là một khối mã có thể tái sử dụng để thực hiện một nhiệm vụ cụ thể.

Định nghĩa một hàm

Hãy bắt đầu với những điều cơ bản về cách tạo một hàm trong C++.

returnType functionName(parameterList) {
// Thân hàm
// Mã cần thực thi
return value; // Tùy chọn
}

Dưới đây là ý nghĩa của mỗi phần:

  • returnType: Loại dữ liệu mà hàm sẽ trả về (như int, float, void, v.v.)
  • functionName: Tên duy nhất bạn đặt cho hàm của bạn
  • parameterList: Các đầu vào mà hàm cần (tùy chọn)
  • Thân hàm: Mã thực sự thực hiện công việc
  • return value: Kết quả mà hàm tạo ra (nếu có)

Ví dụ: Hàm đầu tiên của bạn

Hãy tạo một hàm đơn giản chào đón một người:

#include <iostream>
#include <string>
using namespace std;

void greet(string name) {
cout << "Hello, " << name << "! Welcome to C++ functions!" << endl;
}

int main() {
greet("Alice");
return 0;
}

Khi bạn chạy đoạn mã này, nó sẽ xuất ra:

Hello, Alice! Welcome to C++ functions!

Hãy phân tích nó:

  1. Chúng ta đã định nghĩa một hàm叫做 greet nhận một tham số stringname.
  2. Hàm này không trả về gì, vì vậy chúng ta sử dụng void làm kiểu trả về.
  3. Trong hàm, chúng ta in một thông điệp chào đón sử dụng tên đã cung cấp.
  4. Trong hàm main, chúng ta gọi greet với tham số "Alice".

Khai báo hàm

Đôi khi, bạn có thể muốn khai báo một hàm trước khi định nghĩa nó. Điều này được gọi là原型 hàm. Nó giống như nói với C++, "Này, tôi sẽ tạo hàm này sau, nhưng tôi muốn bạn biết về nó bây giờ."

// Khai báo hàm
int add(int a, int b);

int main() {
int result = add(5, 3);
cout << "5 + 3 = " << result << endl;
return 0;
}

// Định nghĩa hàm
int add(int a, int b) {
return a + b;
}

Điều này đặc biệt hữu ích trong các chương trình lớn hơn, nơi bạn có thể định nghĩa hàm sau hàm main hoặc trong các tệp riêng biệt.

Gọi hàm

Bạn đã thấy cách gọi hàm trong các ví dụ trước, nhưng hãy đi sâu hơn một chút. Khi bạn gọi một hàm, chương trình sẽ nhảy đến mã của hàm đó, thực thi nó, và sau đó quay lại nơi nó dừng lại.

#include <iostream>
using namespace std;

void countDown(int start) {
for(int i = start; i > 0; i--) {
cout << i << "... ";
}
cout << "Blast off!" << endl;
}

int main() {
cout << "Initiating countdown:" << endl;
countDown(5);
cout << "Rocket has launched!" << endl;
return 0;
}

Điều này sẽ xuất ra:

Initiating countdown:
5... 4... 3... 2... 1... Blast off!
Rocket has launched!

Ở đây, chúng ta gọi hàm countDown từ trong main. Chương trình thực thi hàm countDown và sau đó tiếp tục với phần còn lại của main.

Tham số hàm

Các hàm có thể nhận nhiều tham số, điều này cho phép chúng linh hoạt và mạnh mẽ hơn.

#include <iostream>
using namespace std;

int calculateRectangleArea(int length, int width) {
return length * width;
}

int main() {
int area = calculateRectangleArea(5, 3);
cout << "The area of a 5x3 rectangle is: " << area << endl;
return 0;
}

Hàm này nhận hai tham số (chiều dài và chiều rộng) và trả về tích của chúng (diện tích).

Giá trị mặc định cho tham số

C++ cho phép bạn đặt giá trị mặc định cho các tham số hàm. Điều này có nghĩa là nếu không cung cấp giá trị khi gọi hàm, nó sẽ sử dụng giá trị mặc định.

#include <iostream>
using namespace std;

void printPowerLevel(string name, int level = 9000) {
cout << name << "'s power level is " << level << "!" << endl;
}

int main() {
printPowerLevel("Goku", 8000);
printPowerLevel("Vegeta");  // Sử dụng giá trị mặc định
return 0;
}

Điều này sẽ xuất ra:

Goku's power level is 8000!
Vegeta's power level is 9000!

Trong ví dụ này, nếu chúng ta không chỉ định mức năng lượng, nó sẽ mặc định là 9000 (nó hơn 9000!).

Tải trọng hàm

C++ cho phép bạn có nhiều hàm với cùng tên, miễn là chúng có danh sách tham số khác nhau. Điều này được gọi là tải trọng hàm.

#include <iostream>
using namespace std;

int add(int a, int b) {
return a + b;
}

double add(double a, double b) {
return a + b;
}

int main() {
cout << "Adding integers: " << add(5, 3) << endl;
cout << "Adding doubles: " << add(3.14, 2.86) << endl;
return 0;
}

Đoạn mã này định nghĩa hai hàm add - một cho số nguyên và một cho số double. C++ biết sử dụng hàm nào dựa trên các tham số bạn cung cấp.

Các phương thức hàm C++ phổ biến

Dưới đây là bảng một số phương thức hàm C++ phổ biến bạn sẽ gặp:

Phương thức Mô tả Ví dụ
max() Trả về giá trị lớn hơn max(5, 10) trả về 10
min() Trả về giá trị nhỏ hơn min(5, 10) trả về 5
abs() Trả về giá trị tuyệt đối abs(-5) trả về 5
pow() Lũy thừa pow(2, 3) trả về 8
sqrt() Căn b square sqrt(25) trả về 5
round() Làm tròn đến số nguyên gần nhất round(3.7) trả về 4
ceil() Làm tròn lên số nguyên gần nhất ceil(3.2) trả về 4
floor() Làm tròn xuống số nguyên gần nhất floor(3.8) trả về 3

Lưu ý, để sử dụng các hàm toán học này, bạn cần bao gồm thư viện <cmath> trong chương trình của bạn.

Và thế là bạn đã bước những bước đầu tiên vào thế giới của các hàm trong C++. Nhớ rằng, thực hành là cách tốt nhất để trở thành người thợ, vì vậy đừng ngại thử nghiệm với các khái niệm này. Chúc các bạn viết mã vui vẻ, và mong rằng các hàm của bạn luôn trả về kết quả bạn mong đợi!

Credits: Image by storyset