Chi tiết bài học Các loại hàm trong C++

Các loại hàm trong C++

Trong bài này, bạn sẽ được học về những hướng tiếp cận khác nhau hoàn toàn có thể sử dụng để xử lý một yếu tố bằng cách dùng hàm .

Để hiểu rõ hơn về đối số và trả về trong hàm, hàm do người dùng định nghĩa có thể được phân loại thành:

  • Hàm không có đối số và giá trị trả về

  • Hàm không có đối số nhưng có trả về giá trị

  • Hàm có đối số nhưng không trả về giá trị

  • Hàm có đối số và có trả về giá trị

Xét trường hợp khi bạn cần kiểm tra số nguyên tố. Vấn đề này được giải quyết bên dưới bằng cách tạo ra một hàm do người dùng định nghĩa theo 4 cách khác nhau như đã nêu trên.

Ví dụ 1: Không truyền vào đối số và không trả về giá trị

# include 
using namespace std;

void prime();

int main()
{
	// Không truyền vào đối số cho hàm prime()
	prime();
	return 0;
}


// Kiểu trả về là void vì hàm không trả về giá trị
void prime()
{
	int num, i, flag = 0;

	cout << "Enter a positive integer enter to check: ";
	cin >> num;

	for(i = 2; i <= num/2; ++i)
	{
		if(num % i == 0)
		{
			flag = 1; 
			break;
		}
	}

	if (flag == 1)
	{
		cout << num << " is not a prime number.";
	}
	else
	{
		cout << num << " is a prime number.";
	}
}

Trong ví dụ trên, hàm prime ( ) được gọi từ main ( ) mà không có đối số nào .
Hàm prime ( ) sẽ nhận 1 số ít nguyên từ người dùng và kiểm tra xem số đó có phải số nguyên tố hay không .
Vì kiểu trả về của prime ( ) là void, nên không có giá trị nào được trả về từ hàm .

Ví dụ 2: Không truyền vào đối số nhưng trả về một giá trị

#include 
using namespace std;

int prime();

int main()
{
	int num, i, flag = 0;

	// Không truyền vào đối số cho hàm prime()
	num = prime();
	for (i = 2; i <= num/2; ++i)
	{
		if (num%i == 0)
		{
			flag = 1;
			break;
		}
	}

	if (flag == 1)
	{
		cout<> n;

	return n;
}

Trong ví dụ trên, hàm prime ( ) được gọi từ main ( ) mà không cần đối số .
Hàm prime ( ) sẽ nhận 1 số ít nguyên dương từ người dùng. Vì kiểu trả về của hàm là một giá trị int, nó sẽ trả về số đã nhập vào từ người dùng cho hàm main ( ) .
Sau đó, việc kiểm tra số có phải là số nguyên tố hay không được thực thi trong hàm main ( ) và in ra màn hình hiển thị .

Ví dụ 3: Truyền vào đối số nhưng không trả về giá trị

#include 
using namespace std;

void prime(int n);

int main()
{
	int num;
	cout << "Enter a positive integer to check: ";
	cin >> num;

	// Đối số num được truyền vào hàm prime()
	prime(num);
	return 0;
}

// Không có giá trị trả về nên kiểu trả về của hàm là void. */
void prime(int n)
{
	int i, flag = 0;
	for (i = 2; i <= n/2; ++i)
	{
		if (n%i == 0)
		{
			flag = 1;
			break;
		}
	}

	if (flag == 1)
	{
		cout << n << " is not a prime number.";
	}
	else {
		cout << n << " is a prime number.";
	}
}

Trong ví dụ trên, những số nguyên dương được nhập vào từ người dùng và lưu vào biến num .
Sau đó, biến num được truyền vào hàm prime ( ) và sẽ được kiểm tra liệu số đó có phải số nguyên tố hay không rồi in ra màn hình hiển thị .
Vì kiểu trả về của hàm prime ( ) là void nên không có giá trị nào được trả về từ hàm .

Ví dụ 4: Truyền vào đối số và trả về một giá trị

#include 
using namespace std;

int prime(int n);

int main()
{
	int num, flag = 0;
	cout << "Enter positive integer to check: ";
	cin >> num;

	// Truyền vào đối số num cho hàm prime()
	flag = prime(num);

	if(flag == 1)
		cout << num << " is not a prime number.";
	else
		cout<< num << " is a prime number.";
	return 0;
}

/* Hàm này trả về giá trị là một số nguyên.  */
int prime(int n)
{
	int i;
	for(i = 2; i <= n/2; ++i)
	{
		if(n % i == 0)
			return 1;
	}

	return 0;
}

Trong chương trình trên, 1 số ít nguyên dương được nhập vào từ người dùng lưu vào biến num .
Sau đó, num được truyền cho hàm prime ( ), nơi mà nó sẽ được kiểm tra xem liệu nó có phải số nguyên tố hay không .
Vì kiểu trả về của hàm prime ( ) là int, 1 hoặc 0 sẽ được trả về hàm main ( ). Nếu số là nguyên tố, 1 được trả về. Nếu không, 0 sẽ được trả về .

Trở lại hàm main(), giá trị trả về 1 hoặc 0 được lưu trong biến flag, và câu trả lời tương ứng sẽ được in ra màn hình.

Phương pháp nào tốt hơn?

Tất cả 4 chương trình đều cho ra cùng đầu ra và toàn bộ đều là những chương trình hài hòa và hợp lý về mặt kỹ thuật .
Sẽ không có quy tắc cứng ngắc hoặc nhanh gọn nào về việc lựa chọn giải pháp sử dụng .
Phương pháp đơn cử được lựa chọn tùy theo trường hợp và những bạn muốn xử lý yếu tố .