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 định nghĩa có thể được phân loại thành:

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

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 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 <> 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ừ 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()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 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<  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 using namespace std; void prime(int n); int main() ( int num; cout <> 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, số dương được hỏi đầu tiên 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 using namespace std; int prime(int n); int main() ( int num, flag = 0; cout <> 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ố thì trả về 1. 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 đầ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 đề.

thú vị bài viết...