Chi tiết bài học Hàm trong C++

Hàm trong C++

Trong bài này, bạn sẽ được học mọi thứ về hàm trong C + + ; có những loại hàm nào, cách sử dụng chúng kèm theo ví dụ .

Trong lập trình, hàm được dùng để chỉ một đoạn mã nguồn được nhóm lại nhằm thực hiện một tác vụ nhất định.

Dựa trên việc một hàm được định nghĩa trước từ trước hay được viết bởi lập trình viên, sẽ có hai loại hàm :

  1. Hàm thư viện

  2. Hàm người dùng định nghĩa

Hàm thư viện

Các hàm thư viện là những hàm được dựng sẵn trong lập trình C + + .
Lập trình viên hoàn toàn có thể sử dụng hàm thư viện bằng lời gọi hàm trực tiếp ; họ không cần phải tự viết lại chúng .

Ví dụ 1: Hàm thư viện

#include 
#include 

using namespace std;

int main()
{
    double number, squareRoot;
    cout << "Enter a number: ";
    cin >> number;

    // sqrt() là một hàm thư viện giúp tính giá trị căn bậc hai
    squareRoot = sqrt(number);
    cout << "Square root of " << number << " = " << squareRoot;
    return 0;
}

Đầu ra

Enter a number : 26

Square root of 26 = 5.09902

Trong ví dụ trên, hàm thư viện sqrt ( ) được gọi để tính căn bậc hai của 1 số ít .

Chú ý dòng #include trong chương trình trên. Ở đây, cmath là tệp header. Định nghĩa hàm sqrt() (thân của hàm đó) được đưa ra trong tệp header cmath.

Bạn có thể sử dụng toàn bộ hàm định nghĩa trong cmath khi bạn thêm nội dung của tệp cmath trong chương trình này bằng cách sử dụng #include .

Mỗi chương trình C + + hợp cách sẽ có tối thiểu một hàm, đó là hàm main ( ) .

Hàm người dùng định nghĩa

C + + cho phép người dùng tự định nghĩa hàm của mình .
Hàm do người dùng định nghĩa sẽ nhóm một đoạn mã nhằm mục đích triển khai một tác vụ nhất định và đoạn mã nguồn đó sẽ được đặt tên ( định danh ) .
Khi một hàm được gọi từ bất kể phần nào của chương trình, nó sẽ thực thi đoạn mã được định nghĩa trong thân hàm .

Hàm người dùng định nghĩa hoạt động thế nào trong lập trình C?

Khi một chương trình khởi đầu chạy, mạng lưới hệ thống sẽ gọi hàm main ( ), nghĩa là mạng lưới hệ thống khởi đầu thực thi mã nguồn từ hàm main ( ) .
Khi chương trình thực thi tới function_name ( ) bên trong main ( ), nó sẽ vận động và di chuyển tới void function_name ( ) và hàng loạt mã nguồn bên trong void function_name ( ) sẽ được thực thi .
Sau đó, quy trình thực thi của chương trình sẽ trở lại với hàm main và liên tục thực thi mã nguồn sau khi kết thúc hàm function_name ( ) như bộc lộ trên hình .

Ví dụ 2: Hàm người dùng định nghĩa

Chương trình C++ giúp cộng hai số. Tạo một hàm add() để cộng hai số nguyên và hiển thị tổng trong hàm main().

#include 
using namespace std;

// nguyên mẫu hàm (khai báo)
int add(int, int);

int main()
{
    int num1, num2, sum;
    cout<<"Enters two numbers to add: ";
    cin >> num1 >> num2;

    // lời gọi hàm
    sum = add(num1, num2);
    cout << "Sum = " << sum;
    return 0;
}

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

    // Câu lệnh trả về
    return add;
}

Đầu ra

Enters two integers : 8
– 4

Sum = 4

Nguyên mẫu hàm (khai báo)

Nếu một hàm người dùng định nghĩa được định nghĩa sau hàm main ( ), trình biên dịch sẽ báo lỗi. Đó là vì trình biên dịch sẽ không hiểu được hàm do người dùng định nghĩa, kiểu đối số truyền vào hàm và kiểu trả về .
Trong C + +, nguyên mẫu hàm là một khai báo hàm mà không cần phần thân của nó nhằm mục đích cung ứng thông tin cho trình biên dịch về hàm do người dùng định nghĩa. Nguyên mẫu hàm trong ví dụ trên là :

int add(int, int);

Bạn hoàn toàn có thể thấy rằng, không có thân hàm trong nguyên mẫu. Ngoài ra, chỉ có kiểu trả về của đối số mà không có đối số. Bạn cũng hoàn toàn có thể khai báo nguyên mẫu hàm như dưới đây nhưng không nhất thiết phải viết những đối số .

int add(int a, int b);

Chú ý: Không cần thiết phải định nghĩa nguyên mẫu hàm nếu hàm người dùng định nghĩa nằm ở trước hàm main().

Lời gọi hàm

Để thực thi mã nguồn trong thân hàm, hàm người dùng định nghĩa cần được gọi .
Trong ví dụ trên, add ( num1, num2 ) ; trong hàm main ( ) sẽ gọi tới hàm người dùng định nghĩa .
Hàm đó sẽ trả về một số ít nguyên được lưu tại biến add .

Định nghĩa hàm

Bản thân hàm đã được xem là một định nghĩa hàm. Định nghĩa hàm trong chương trình trên là :

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

Khi hàm được gọi, trình điều khiển và tinh chỉnh được chuyển tới câu lệnh tiên phong của thân hàm .
Sau đó, những câu lệnh tiếp theo trong thân hàm lần lượt được thực thi .
Khi hàng loạt mã nguồn bên trong định nghĩa hàm được thực thi, trình tinh chỉnh và điều khiển của chương trình sẽ trở lại với nơi đã triển khai lời gọi hàm .

Truyền đối số vào hàm

Trong lập trình, đối số ( tham số ) ám chỉ tài liệu được truyền vào một hàm ( định nghĩa hàm ) khi hàm được gọi .
Trong ví dụ trên, hai biến, num1 và num2 được truyền vào hàm trong khi hàm được gọi. Các đối số này được xem là những đối số thực .
Giá trị của num1 và num2 được khởi tạo lần lượt cho biến a và b. Các đối số a và b được gọi là đối số hình thức .
Nó được biểu lộ trong hình vẽ dưới đây :

Chú ý về việc truyền đối số

  • Số lượng đối số thực và đối số hình thức cần giống nhau. ( Ngoại lệ :Nạp chồng hàm)
  • Kiểu của đối số thực tiên phong cần giống với kiểu của đối số hình thức tiên phong. Tương tự như vậy, kiểu của đối số thực thứ 2 cần giống với kiểu của đối số hình thức thứ 2 và cứ như vậy .

  • Bạn hoàn toàn có thể gọi hàm mà không cần truyền vào bất kể đối số nào. Số lượng đối số truyền vào một hàm nhờ vào vào cách lập trình viên muốn xử lý yếu tố .

  • Bạn hoàn toàn có thể gán giá trị mặc định cho những đối số. Các đối số khi đó được gọi làđối số mặc định.
  • Trong chương trình trên, cả hai đối số đều có kiểu int. Nhưng việc cả hai đối số phải có cùng kiểu là không cần thiết.

Câu lệnh trả về

Một hàm cần trả về một giá trị duy nhất cho chương trình gọi nó trải qua câu lệnh trả về .
Trong chương trình trê, giá trị của add được trả về từ hàm người dùng định nghĩa tới chương trình gọi nó trải qua câu lệnh sau :

return add;

Hình vẽ dưới đây bộc lộ quy trình hoạt động giải trí của câu lệnh trả về

Trong chương trình trên, giá trị của add bên trong hàm người dùng định nghĩa sẽ được trả về hàm gọi nó. Giá trị được lưu vào biến sum.

Lưu ý rằng biến trả về, nghĩa là add có kiểu int và sum cũng có kiểu int .
Ngoài ra, chú ý quan tâm rằng kiểu trả về của hàm được định nghĩa trong phần khai báo hàm là int add ( int a, int b ). Chữ int trước add ( int a, int b ) có nghĩa là hàm nên trả về một giá trị kiểu int .
Nếu không có giá trị nào trả về chương trình đã gọi hàm, nên sử dụng void .