Các loại hàm do người dùng định nghĩa trong C++

Trong hướng dẫn này, bạn sẽ tìm hiểu về các cách tiếp cận khác nhau mà bạn có thể thực hiện để giải quyết một vấn đề đơn lẻ bằng cách sử dụng các hàm.

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

  • Function with no argument and no return value
  • Function with no argument but return value
  • Function with argument but no return value
  • Function with argument and return value

Hãy xem xét một tình huống mà bạn phải kiểm tra số nguyên tố. Vấn đề này được giải quyết dưới đây bằng cách thực hiện chức năng do người dùng định nghĩa theo 4 cách khác nhau như đã đề cập ở trên.

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

# include <iostream>
using namespace std;

void prime();

int main()
{
    // No argument is passed to prime()
    prime();
    return 0;
}


// 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.";
    }
}

Trong chương trình trên, prime()được gọi từ hàm main () không có đối số.

prime() lấy số dương từ người dùng và kiểm tra xem số đó có phải là số nguyên tố hay không.

Vì, kiểu trả về prime()là void, không có giá trị nào được trả về từ hàm.

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

#include <iostream>
using namespace std;

int prime();

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.";
    }
    return 0;
}

// Return type of function is int
int prime()
{
    int n;

    printf("Enter a positive integer to check: ");
    cin >> n;

    return n;
}

Trong chương trình trên, prime()hàm được gọi từ main()không có đối số.

prime()lấy một số nguyên dương từ người dùng. Vì kiểu trả về của hàm là an int, nó trả về số đã nhập từ người dùng trở lại main()hàm đang gọi .

Sau đó, số có phải là số nguyên tố hay không sẽ được kiểm tra trong chính () và được in ra màn hình.

Ví dụ 3: Các đối số được truyền nhưng không có giá trị trả về

#include <iostream>
using namespace std;

void prime(int n);

int main()
{
    int num;
    cout << "Enter a positive integer to check: ";
    cin >> num;
    
    // Argument num is passed to the function prime()
    prime(num);
    return 0;
}

// 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.";
    }
}

Trong chương trình trên, đầu tiên số dương được hỏi từ người dùng được lưu trữ trong biến num .

Sau đó, num được chuyển đến prime()hàm trong đó, số có phải là số nguyên tố hay không sẽ được kiểm tra và in ra.

Vì kiểu trả về prime()là a void, không có giá trị nào được trả về từ hàm.

Ví dụ 4: Các đối số được truyền và một giá trị trả về.

#include <iostream>
using namespace std;

int prime(int n);

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.";
    return 0;
}

/* 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;
}

Trong chương trình trên, một số nguyên dương được hỏi từ người dùng và được lưu trữ trong biến num.

Sau đó, numđược chuyển đến hàm prime()trong đó, số có phải là số nguyên tố hay không sẽ được kiểm tra.

Vì, kiểu trả về prime()là an int, 1 hoặc 0 được trả về cho main()hàm gọi. Nếu số là số nguyên tố, 1 được trả về. Nếu không, 0 được trả về.

Quay lại main()hàm, 1 hoặc 0 trả về được lưu trữ trong cờ biến và văn bản tương ứng được in ra màn hình.

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

Cả 4 chương trình trên đều cho kết quả đầu ra như nhau và đều là chương trình đúng kỹ thuật.

Không có quy tắc cứng và nhanh về việc nên chọn phương pháp nào.

Phương pháp cụ thể được chọn tùy thuộc vào tình huống và cách bạn muốn giải quyết vấn đề.









Gõ tìm kiếm nhanh...