ویرگول
ورودثبت نام
سید عمید قائم مقامی
سید عمید قائم مقامیبرنامه نویسی سیستم ویندوز و مهندسی معکوس و علاقه مند به آموزش.
سید عمید قائم مقامی
سید عمید قائم مقامی
خواندن ۴ دقیقه·۲ ماه پیش

آموزش برنامه نویسی قسمت 7 ( قسمت دوم Function در زبان C++):

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

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

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

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

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

موقعیتی را تصور کنید که باید اول بودن عددی را بررسی کنید. این مسئله در ادامه با تعریف توابع توسط کاربر به ۴ روشی که در بالا اشاره شد، حل شده است.

مثال 1

هیچ آرگومانی ارسال نمی‌شود و مقداری نیز بازگشت نمی‌یابد:

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

در برنامه فوق، ()prime از ()main و بدون هیچ آرگومانی فراخوانی می‌شود. ()Prime عدد صحیحی را از کاربر می‌گیرد و بررسی می‌کند که آیا عدد اول است یا خیر. از آنجا که نوع مقدار بازگشتی از ()prime از نوع void است، هیچ مقداری از تابع بازگشت نخواهد یافت.

مثال 2

هیچ آرگومانی ارسال نمی‌شود، اما مقداری بازگشت می‌یابد:

#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; }

در برنامه فوق، تابع ()primes از ()main فراخوانی می‌شود اما آرگومانی ندارد. ()Prime عدد صحیح مثبتی از کاربر می‌گیرد. از آنجا که نوع مقدار بازگشتی یک int است، عدد وارد شده از کاربر را به تابع فراخوانی کننده ()main بازگشت می‌دهد. سپس این که عدد مربوطه اول است یا نه را در خود ()main بررسی می‌کند و روی صفحه، نمایش می‌دهد.

مثال 3

آرگومان‌هایی ارسال می‌شوند، اما مقداری بازگشت نمی‌یابد:

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

در برنامه فوق، عدد صحیح در ابتدای امر از کاربر پرسیده و در متغیر num ذخیره می‌شود. سپس num به تابع ()prime ارسال می‌شود که در آنجا اول بودن آن بررسی شده و پرینت می‌شود. از آنجا که نوع بازگشتی ()prime به صورت void است، هیچ مقداری از تابع بازگشت نمی‌یابد.

مثال 4

آرگومان‌هایی ارسال می‌شوند و مقداری بازگشت می‌یابد:

#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; }

در برنامه فوق یک عدد صحیح از کاربر پرسید می‌شود و در متغیر num ذخیره می‌شود. سپس num به تابع ()prime ارسال می‌شود که در آنجا اول بودن آن بررسی می‌شود. از آنجا که نوع بازگشتی ()prime به صورت int است، بسته به اول بودن یا نبودن عدد ورودی مقدار 1 یا 0 به تابع فراخوانی‌کننده ()main بازگشت می‌یابد. بدین ترتیب اگر عدد مربوطه اول باشد، مقدار بازگشتی 1 و در غیر این صورت صفر خواهد بود. اگر به تابع ()main بازگردیم، مقدار بازگشتی 1 یا 0 در متغیر flag ذخیره می‌شود و متن متناظر روی صفحه نمایش می‌یابد.

Telegram: @CaKeegan
Gmail : amidgm2020@gmail.com

functioncppبرنامه نویسی
۰
۰
سید عمید قائم مقامی
سید عمید قائم مقامی
برنامه نویسی سیستم ویندوز و مهندسی معکوس و علاقه مند به آموزش.
شاید از این پست‌ها خوشتان بیاید