Lập trình viên có thể tự định nghĩa hàm trong C++. Dựa vào tham số và kiểu trả về, có thể có các loại hàm sau:
- Hàm không có tham số và không có kiểu trả về
- Hàm không có tham số nhưng có kiểu trả về
- Hàm có tham số nhưng không có kiểu trả về
- Hàm có tham số và có kiểu trả về
Bên dưới là các ví dụ của chương trình kiểm tra số nguyên tố. Các chương trình này sẽ được viết hàm theo các loại hàm kể trên.
1. Hàm không có tham số và không có kiểu trả về
# include <iostream>
using namespace std;
// Return type of function is void because value is not returned.
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.";
}
}
int main()
{
// No argument is passed to prime()
prime();
system("pause");
}
Hàm void prime(); không có tham số và không có kiểu trả về.
2. Hàm không có tham số nhưng có kiểu trả về
#include <iostream>
using namespace std;
// Return type of function is int
int prime()
{
int n;
printf("Enter a positive integer to check: ");
cin >> n;
return n;
}
int main()
{
int num, i, flag = 0;
// No argument is passed to prime()
num = prime();
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.";
}
system("pause");
}
Hàm int prime(); không có tham số nhưng có kiểu trả về là int.
3. Hàm có tham số nhưng không có kiểu trả về
#include <iostream>
using namespace std;
// There is no return value to calling function. Hence, return type of function is 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.";
}
}
int main()
{
int num;
cout << "Enter a positive integer to check: ";
cin >> num;
// Argument num is passed to the function prime()
prime(num);
system("pause");
}
Hàm void prime(int n); có tham số int n nhưng không có kiểu trả về.
4. Hàm có tham số và có kiểu trả về
#include <iostream>
using namespace std;
/* This function returns integer value. */
int prime(int n)
{
int i;
for(i = 2; i <= n/2; ++i){
if(n % i == 0)
return 1;
}
return 0;
}
int main()
{
int num, flag = 0;
cout << "Enter positive integer to check: ";
cin >> num;
// Argument num is passed to check() function
flag = prime(num);
if(flag == 1){
cout << num << " is not a prime number.";
}else{
cout<< num << " is a prime number.";
}
system("pause");
}
Hàm int prime(int n); có tham số int n và có kiểu trả về là int.
5. Nên chọn loại hàm nào?
Kết quả 1
Enter positive integer to check: 5
5 is a prime number.
Kết quả 2
Enter positive integer to check: 4
4 is not a prime number.
Các loại hàm đều cho kết quả như nhau. Bạn chọn loại hàm nào cũng được. Nhưng mình khuyên bạn nên sử dụng hàm sao cho linh hoạt, code ngắn gọn dễ hiểu và tiện lợi khi sửa đổi code.