آموزش انواع توابع تعریف شده توسط کاربر در ++C

رتبه: 0 ار 0 رای sssss
آموزش انواع توابع تعریف شده توسط کاربر در ++C
نویسنده: میلاد حیدری زمان مطالعه 1 دقیقه
Banner Image

در این آموزش، شما روش های مختلف تعریف توابع در C++ را یاد خواهید گرفت.

برای درک بهتر آرگومان های ارسالی و بازگشتی، توابع تعریف شده توسط کاربر می توانند به شکل زیر باشند:

  • تابع بدون آرگومان ارسالی و بدون مقدار بازگشتی
  • تابع بدون آرگومان ارسالی اما با مقدار بازگشتی
  • تابع با آرگومان ارسالی اما بدون مقدار بازگشتی
  • تابع با آرگومان ارسالی و مقدار بازگشتی

در زیر ۴ نوع تابع تعریف شده اند.

مثال ۱: تابع بدون آرگومان ارسالی و بدون مقدار بازگشتی

  1. # include <iostream>
  2. using namespace std;
  3. void prime();
  4. int main()
  5. {
  6. // No argument is passed to prime()
  7. prime();
  8. return 0;
  9. }
  10. // Return type of function is void because value is not returned.
  11. void prime()
  12. {
  13. int num, i, flag = 0;
  14. cout << “Enter a positive integer enter to check: “;
  15. cin >> num;
  16. for(i = 2; i <= num/2; ++i)
  17. {
  18. if(num % i == 0)
  19. {
  20. flag = 1;
  21. break;
  22. }
  23. }
  24. if (flag == 1)
  25. {
  26. cout << num << ” is not a prime number.”;
  27. }
  28. else
  29. {
  30. cout << num << ” is a prime number.”;
  31. }
  32. }

در قطعه کد بالا تابع ()prime بدون هیچ آرگومانی در ()main صدا زده می شود.

()prime از کاربر می خواهد یک عدد مثبت وارد کند سپس بررسی می کند که آیا اول است یا نه.

نوع بازگشتی تابع void است، یعنی تابع مقدار بازگشتی ندارد.

مثال ۲ : تابع بدون آرگومان ارسالی اما با مقدار بازگشتی

  1. #include <iostream>
  2. using namespace std;
  3. int prime();
  4. int main()
  5. {
  6. int num, i, flag = 0;
  7. // No argument is passed to prime()
  8. num = prime();
  9. for (i = 2; i <= num/2; ++i)
  10. {
  11. if (num%i == 0)
  12. {
  13. flag = 1;
  14. break;
  15. }
  16. }
  17. if (flag == 1)
  18. {
  19. cout<<num<<” is not a prime number.”;
  20. }
  21. else
  22. {
  23. cout<<num<<” is a prime number.”;
  24. }
  25. return 0;
  26. }
  27. // Return type of function is int
  28. int prime()
  29. {
  30. int n;
  31. printf(“Enter a positive integer to check: “);
  32. cin >> n;
  33. return n;
  34. }

در برنامه بالا، تابع ()prime در ()main بدون آرگومان ارسالی صدا زده می شود.

()Prime یک عدد صحیح مثبت از کاربر می گیرد. از آنجا که نوع بازگشتی تابع integer است، عدد ورودی را به تابع ()main برمی گرداند.

سپس، در تابع ()main بررسی می شود آیا عدد اول است یا خیر و نتیجه نمایش داده می شود.

مثال ۳ : تابع با آرگومان ارسالی اما بدون مقدار بازگشتی

  1. #include <iostream>
  2. using namespace std;
  3. void prime(int n);
  4. int main()
  5. {
  6. int num;
  7. cout << “Enter a positive integer to check: “;
  8. cin >> num;
  9. // Argument num is passed to the function prime()
  10. prime(num);
  11. return 0;
  12. }
  13. // There is no return value to calling function. Hence, return type of function is void. */
  14. void prime(int n)
  15. {
  16. int i, flag = 0;
  17. for (i = 2; i <= n/2; ++i)
  18. {
  19. if (n%i == 0)
  20. {
  21. flag = 1;
  22. break;
  23. }
  24. }
  25. if (flag == 1)
  26. {
  27. cout << n << ” is not a prime number.”;
  28. }
  29. else {
  30. cout << n << ” is a prime number.”;
  31. }
  32. }

در برنامه بالا، از کاربر خواسته شده عدد مثبتی وارد کند که در متغیر num ذخیره می شود.

سپس num به تابع ()prime ارسال می شود و در آن جا مشخص می شود که اول است یا نه. سپس نتیجه را نمایش می دهد.

از آنجا که نوع return در ()prime برابر با void است، تابع هیچ مقداری بازگشت نمی دهد.

مثال ۴ : تابع با آرگومان ارسالی و مقدار بازگشتی

  1. #include <iostream>
  2. using namespace std;
  3. int prime(int n);
  4. int main()
  5. {
  6. int num, flag = 0;
  7. cout << “Enter positive integer to check: “;
  8. cin >> num;
  9. // Argument num is passed to check() function
  10. flag = prime(num);
  11. if(flag == 1)
  12. cout << num << ” is not a prime number.”;
  13. else
  14. cout<< num << ” is a prime number.”;
  15. return 0;
  16. }
  17. /* This function returns integer value. */
  18. int prime(int n)
  19. {
  20. int i;
  21. for(i = 2; i <= n/2; ++i)
  22. {
  23. if(n % i == 0)
  24. return 1;
  25. }
  26. return 0;
  27. }

در برنامه فوق از کاربر خواسته می شود یک عدد صحیح مثبت وارد کند که در متغیر num ذخیره می شود.

سپس، num به تابع ()prime ارسال می شود که در آن بررسی می شود آیا عدد اول است یا خیر.

از آنجا که نوع return در ()prime صحیح است، ۱ یا ۰ به ()main بازگردانده می شود. اگر num یک عدد اول باشد، ۱ باز می گردد. اگر نه، ۰ باز می گردد.

در تابع ()main مقدار بازگشتی ۱ یا ۰ در متغیر flag ذخیره می شود، و متن مربوطه بر روی صفحه چاپ می شود.

کدام روش بهتر است؟

هر چهار برنامه بالا یک خروجی مشابه ارائه می دهند و همه از لحاظ فنی درست هستند.

هیچ قاعده ای وجود ندارد که بگوید کدام روش بهتر است انتخاب شود.

روش خاص انتخاب شده بسته به وضعیت و چگونگی رفع مشکل است.

profile name
میلاد حیدری

بخندید کتاب بخونید و خوب باشید تا جامعه مون به آرامش برسه. لطفا ! هر سوالی دارید در بخش نظرات مطرح کنید. ما یا سایر هموطنان عزیز پاسخ خواهیم داد. برای کمک به سایت ما و گسترش آموزش در بین هموطنان، در سایتها، وبلاگ ها و شبکه های اجتماعی لینک سایت ما را درج کنید.

مطالب پیشنهادی برای شما

دیدگاهتان را بنویسید

1 2 3 4 5

0 نظر درباره «آموزش انواع توابع تعریف شده توسط کاربر در ++C»

    هنوز نظری برای این بخش ثبت نشده است
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید