Khái niệm hàm (function) trong lập trình và minh họa với C++

Đây là bài 22/43 bài của series môn học Nhập môn lập trình

Bài này sẽ giới thiệu về khái niệm hàm (function) cũng như cách xây dựng hàm. Các bạn cần nắm vững hàm bởi các bạn sẽ sử dụng hàm rất nhiều và hàm giúp bạn tổ chức chương trình tốt hơn.

1. Tại sao phải sử dụng hàm (function)

Ví dụ, cần viết chương trình tính S = a! + b! + c! với a, b, c là 3 số nguyên dương nhập từ bàn phím.

3 đoạn lệnh nhập a, b, c > 0

do {
	cout<<"Nhap mot so nguyen duong:";
	cin>>a;
} while (a <= 0);
do {
	cout<<"Nhap mot so nguyen duong:";
	cin>>b;
} while (b <= 0);
do {
	cout<<"Nhap mot so nguyen duong:";
	cin>>c;
} while (c <= 0);

3 đoạn lệnh tính s1 = a!, s2 = b!, s3 = c!

//s1 = a! = 1 * 2 * … * a
s1 = 1;
for (i = 2; i <= a ; i++)
	s1 = s1 * i;
//s2 = b! = 1 * 2 * … * b
s2 = 1;
for (i = 2; i <= b ; i++)
	s2 = s2 * i;
//s3 = c! = 1 * 2 * … * c
s3 = 1;
for (i = 2; i <= c ; i++)
	s3 = s3 * i;

Nhận xét:

– Cùng một công việc có tính chất giống nhau được thực hiện nhiều lần

– Code sẽ dài dòng và rối rắm

Giải pháp: Viết 1 lần và sử dụng nhiều lần.

Đoạn lệnh nhập tổng quát, với n = a, b, c

do {
	cout << "Nhap mot so nguyen duong: ";
	cin >> n;
} while (n <= 0);

Đoạn lệnh tính giai thừa tổng quát với n = a, b, c

//s = n! = 1 * 2 * … * n
s = 1;
for (i = 2; i <= n ; i++)
	s = s * i;

Để sử dụng những đoạn lệnh tổng quát này nhiều lần, ta đưa chúng vào hàm (function).

2. Khái niệm hàm (function)

Hàm (function) là một đoạn chương trình có tên, đầu vào và đầu ra. Hàm có chức năng giải quyết một số vấn đề chuyên biệt cho chương trình chính. Hàm được gọi nhiều lần với các tham số khác nhau.

function definition

Hàm là một đơn vị độc lập của chương trình, không cho phép xây dựng một hàm bên trong một hàm khác.

Một chương trình bao gồm một hoặc nhiều hàm. Trong đó, hàm main() là thành phần bắt buộc của chương trình.

3. Cú pháp khai báo hàm và các bước viết hàm

Cú pháp:

<kiểu trả về> <tên hàm>([danh sách tham số])

{

            <các câu lệnh>

            [return <giá trị>;]

}

Trong đó:

<kiểu trả về>: kiểu dữ liệu bất kỳ trong C++ (char, int, float,…). Nếu không trả về thì là void.

<tên hàm>: theo quy tắc đặt tên định danh.

<danh sách tham số>: tham số hình thức đầu vào giống khai báo biến, cách nhau bằng dấu “,”

<giá trị>: trả về cho hàm qua lệnh return.

Giá trị trả về của hàm

– Được xác định dựa vào mục đích của hàm.

– Trong thân hàm, phải trả về đúng <kiểu trả về> đã định ban đầu.

– Nếu các hàm không trả về giá trị thì phải khai báo kiểu void.

Ví dụ:
int TinhTong(int a, int b)
{
	int S;
	…
	return S;
}

Các bước viết hàm

Cần xác định các thông tin sau:

    • Tên hàm.
    • Hàm sẽ thực hiện công việc gì.
    • Các đầu vào (nếu có).
    • Đầu ra (nếu có).
Các bước viết hàm

Lời gọi hàm

Để sử dụng hàm thì cần định nghĩa hàm trước và gọi hàm.

Lời gọi hàm
#include <iostream>
using namespace std;

// declaring a function
void greet() {
	cout << "Hello there!";
}

int main() {
	
	// calling the function
	greet();
	
	return 0;
}

Lưu ý: Trong C++, hàm cần được định nghĩa trước rồi mới gọi hàm, định nghĩa sau sẽ bị lỗi. Nếu lời gọi hàm trong main() mà định nghĩa hàm ở phía dưới main() sẽ bị lỗi.

Chương trình sau sẽ báo lỗi chưa khai báo hàm greet();

#include <iostream>
using namespace std;

int main() {
	
	// calling the function
	greet();// error when calling the function
	
	return 0;
}
// declaring a function
void greet() {
	cout << "Hello there!";
}

4. Một số ví dụ sử dụng hàm

Chương trình C++ in ra số nguyên và số thực

#include <iostream>
using namespace std;

// display a number
void displayNum(int n1, float n2) {
	cout << "The int number is " << n1<<endl;
	cout << "The double number is " << n2<<endl;
}

int main() {
	int num1 = 5;
	double num2 = 5.5;

	// calling the function
	displayNum(num1, num2);

    system("pause");
}
Kết quả
The int number is 5
The double number is 5.5

Chương trình C++ tính tổng 2 số nguyên

#include <iostream>
using namespace std;

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

int main() {
	int a;
	int b;
	cout<<"Input a:";
	cin>>a;
	cout<<"Input b:";
	cin>>b;
	int sum;
    
	// calling the function and storing
	// the returned value in sum
	sum = add(a, b);

	cout << "Sum of "<<a<<" and "<<b<<" = " << sum << endl;

    system("pause");
}
Kết quả
Input a:100
Input b:78
Sum of 100 and 78 = 178

Khi sử dụng hàm, các bạn nên lưu ý kiểu trả về của hàm phải giống kiểu trả về của kết quả trong thân hàm.

Mời bạn đánh giá bài viết
Bài trước và bài sau trong môn học<< Cách sử dụng câu lệnh break, continue và go to trong C++Các loại hàm (function) có thể được định nghĩa trong C++ >>
Chia sẻ trên mạng xã hội:

Tác giả Vinh Lê

Vinh Lê hiện đang là biên tập viên tại Góc Học IT.

Bài viết của Vinh Lê

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.