قسمت ۱۸
انواع تابع
به طور کلی توابع به چهار حالت تقسیم بندی می شوند که ایجاد تابع به حالت تابع بستگی دارد
۱- تابعی که ورودی ندارد و خروجی نیز ندارد
۲- تابعی که ورودی ندارد اما خروجی دارد
۳- تابعی که ورودی دارد اما خروجی ندارد
۴- تابعی که هم ورودی دارد و هم خروجی دارد
برای نشان دادن اول بودن یک عدد چهار مثال زیر با چهار حالت مختلف ارائه شده است
لطفا مثال ها را بررسی کنید و تفاوت های هر حالت را بررسی و به آی دی @hrgh74 ارسال نمایید
مثال ها در ادامه همین مطلب
انواع تابع
به طور کلی توابع به چهار حالت تقسیم بندی می شوند که ایجاد تابع به حالت تابع بستگی دارد
۱- تابعی که ورودی ندارد و خروجی نیز ندارد
۲- تابعی که ورودی ندارد اما خروجی دارد
۳- تابعی که ورودی دارد اما خروجی ندارد
۴- تابعی که هم ورودی دارد و هم خروجی دارد
برای نشان دادن اول بودن یک عدد چهار مثال زیر با چهار حالت مختلف ارائه شده است
لطفا مثال ها را بررسی کنید و تفاوت های هر حالت را بررسی و به آی دی @hrgh74 ارسال نمایید
مثال ها در ادامه همین مطلب
C++ program آموزش
قسمت ۱۸ انواع تابع به طور کلی توابع به چهار حالت تقسیم بندی می شوند که ایجاد تابع به حالت تابع بستگی دارد ۱- تابعی که ورودی ندارد و خروجی نیز ندارد ۲- تابعی که ورودی ندارد اما خروجی دارد ۳- تابعی که ورودی دارد اما خروجی ندارد ۴- تابعی که هم ورودی دارد…
مثال اول با حالت اول
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;
{
{
flag = 1;
break;
}
}
if (flag == 1)
{
}
else
{
}
}
# 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.";
}
}
C++ program آموزش
قسمت ۱۸ انواع تابع به طور کلی توابع به چهار حالت تقسیم بندی می شوند که ایجاد تابع به حالت تابع بستگی دارد ۱- تابعی که ورودی ندارد و خروجی نیز ندارد ۲- تابعی که ورودی ندارد اما خروجی دارد ۳- تابعی که ورودی دارد اما خروجی ندارد ۴- تابعی که هم ورودی دارد…
مثال دوم با حالت دوم
using namespace std;
int prime();
int main()
{
int num, i, flag = 0;
// No argument is passed to prime()
num = prime();
{
{
flag = 1;
break;
}
}
if (flag == 1)
{
}
else
{
}
return 0;
}
// Return type of function is int
int prime()
{
int n;
return n;
}
#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;
}
C++ program آموزش
قسمت ۱۸ انواع تابع به طور کلی توابع به چهار حالت تقسیم بندی می شوند که ایجاد تابع به حالت تابع بستگی دارد ۱- تابعی که ورودی ندارد و خروجی نیز ندارد ۲- تابعی که ورودی ندارد اما خروجی دارد ۳- تابعی که ورودی دارد اما خروجی ندارد ۴- تابعی که هم ورودی دارد…
مثال سوم با حالت سوم
using namespace std;
void prime(int n);
int main()
{
int 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;
{
{
flag = 1;
break;
}
}
if (flag == 1)
{
}
else {
}
}
#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.";
}
}
C++ program آموزش
قسمت ۱۸ انواع تابع به طور کلی توابع به چهار حالت تقسیم بندی می شوند که ایجاد تابع به حالت تابع بستگی دارد ۱- تابعی که ورودی ندارد و خروجی نیز ندارد ۲- تابعی که ورودی ندارد اما خروجی دارد ۳- تابعی که ورودی دارد اما خروجی ندارد ۴- تابعی که هم ورودی دارد…
مثال چهارم با حالت چهارم
using namespace std;
int prime(int n);
int main()
{
int num, flag = 0;
// Argument num is passed to check() function
flag = prime(num);
else
return 0;
}
/* This function returns integer value. */
int prime(int n)
{
int i;
{
return 1;
}
return 0;
}
#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;
}
قسمت ۱۹
ایجاد overload یک تابع
همانطور که در عکس بالا مشاهده می کنید overload به این معنی است که شما چند تابع با نام های یکسان اما ورودی و یا خروجی متفاوت داشته باشید .
این عمل در بسیاری از موارد می تواند کمک خوبی برای ایجاد برنامه های کاربر محور باشد
به مثال های زیر توجه کنید
int test() { }
int test(int a) { }
float test(double a) { }
int test(int a, double b) { }
در صورتی که تابع تست را به صورت های بالا تعریف کنید از عمل overload استفاده کرده اید اما توجه داشته باشید که هیچکدام از این توابع در ورودی های خود به یک صورت عمل نکرده اند
پس نتیجه اینکه اگر تابع های زیر را استفاده کنید دچار خطا خواهید شد
// Error code
int test(int a) { }
double test(int b){ }
چون هر دو تابع ورودی شان یک عدد صحیح است و تنها خروجی هایشان متفاوت است و این عمل overload نیست .
مثال زیر یک نمونه از استفاده از overload می باشد
void display(int);
void display(float);
void display(int, float);
int main() {
int a = 5;
float b = 5.5;
display(a);
display(b);
display(a, b);
return 0;
}
void display(int var) {
}
void display(float var) {
}
void display(int var1, float var2) {
}
ایجاد overload یک تابع
همانطور که در عکس بالا مشاهده می کنید overload به این معنی است که شما چند تابع با نام های یکسان اما ورودی و یا خروجی متفاوت داشته باشید .
این عمل در بسیاری از موارد می تواند کمک خوبی برای ایجاد برنامه های کاربر محور باشد
به مثال های زیر توجه کنید
int test() { }
int test(int a) { }
float test(double a) { }
int test(int a, double b) { }
در صورتی که تابع تست را به صورت های بالا تعریف کنید از عمل overload استفاده کرده اید اما توجه داشته باشید که هیچکدام از این توابع در ورودی های خود به یک صورت عمل نکرده اند
پس نتیجه اینکه اگر تابع های زیر را استفاده کنید دچار خطا خواهید شد
// Error code
int test(int a) { }
double test(int b){ }
چون هر دو تابع ورودی شان یک عدد صحیح است و تنها خروجی هایشان متفاوت است و این عمل overload نیست .
مثال زیر یک نمونه از استفاده از overload می باشد
#include <iostream>
using namespace std;
void display(int);
void display(float);
void display(int, float);
int main() {
int a = 5;
float b = 5.5;
display(a);
display(b);
display(a, b);
return 0;
}
void display(int var) {
cout << "Integer number: " << var << endl;
}
void display(float var) {
cout << "Float number: " << var << endl;
}
void display(int var1, float var2) {
cout << "Integer number: " << var1;
cout << " and float number:" << var2;
}
مثالی کاربردی از overload
#تکمیلی قسمت ۱۹
لطفا اگر شما هم مثالی در نظر دارید ارسال کنید تا به اسم شما در کانال ثبت شود
#تکمیلی قسمت ۱۹
لطفا اگر شما هم مثالی در نظر دارید ارسال کنید تا به اسم شما در کانال ثبت شود
مثالی از کاربرد overloading
using namespace std;
int absolute(int);
float absolute(float);
int main() {
int a = -5;
float b = 5.5;
return 0;
}
int absolute(int var) {
if (var < 0)
var = -var;
return var;
}
float absolute(float var){
if (var < 0.0)
var = -var;
return var;
}
// Program to compute absolute value
// Works both for integer and float
#include <iostream>
using namespace std;
int absolute(int);
float absolute(float);
int main() {
int a = -5;
float b = 5.5;
cout << "Absolute value of " << a << " = " << absolute(a) << endl;
cout << "Absolute value of " << b << " = " << absolute(b);
return 0;
}
int absolute(int var) {
if (var < 0)
var = -var;
return var;
}
float absolute(float var){
if (var < 0.0)
var = -var;
return var;
}
C++ program آموزش
https://cdn.programiz.com/sites/tutorial2program/files/cpp-default-arguments.jpg
قسمت ۲۰
مقدار اولیه
مقدار اولیه زمانی استفاده می شود که شما می خواهید در صورتی که کاربر مقداری را در تابع مورد نظر وارد نکرد خود تابع مقدار اولیه را در نظر بگیرد و به وسیله ی آن عملیات های خود را انجام دهد
برای مثال عمل رادیکال دارای مقدار اولیه فرجه ۲ می باشد ولی حال آنکه این مقدار می تواند به ۳ یا عدد صحیح بالاتری نیز تغییر یابد اما چون بیشتر مقدار ۲ در این تابع مورد استفاده است می توان آن را به صورت مقدار اولیه قرار داد تا در صورتی که عددی به عنوان زیر رادیکال ارسال شد و فرجه مشخص نگردید به صورت خودکار جذر عدد یعنی فرجه ۲ آن محاسبه شود
نحوه ایجاد مقدار اولیه در شکل پایین نمایش داده شده است
مقدار اولیه
مقدار اولیه زمانی استفاده می شود که شما می خواهید در صورتی که کاربر مقداری را در تابع مورد نظر وارد نکرد خود تابع مقدار اولیه را در نظر بگیرد و به وسیله ی آن عملیات های خود را انجام دهد
برای مثال عمل رادیکال دارای مقدار اولیه فرجه ۲ می باشد ولی حال آنکه این مقدار می تواند به ۳ یا عدد صحیح بالاتری نیز تغییر یابد اما چون بیشتر مقدار ۲ در این تابع مورد استفاده است می توان آن را به صورت مقدار اولیه قرار داد تا در صورتی که عددی به عنوان زیر رادیکال ارسال شد و فرجه مشخص نگردید به صورت خودکار جذر عدد یعنی فرجه ۲ آن محاسبه شود
نحوه ایجاد مقدار اولیه در شکل پایین نمایش داده شده است
مثالی از مقدار اولیه
خروجی مثال را در سیستم خود بررسی کنید و مثال های بیشتری را برای ما ارسال کنید
int main()
{
display();
return 0;
}
void display(char c, int n)
{
{
}
}
خروجی مثال را در سیستم خود بررسی کنید و مثال های بیشتری را برای ما ارسال کنید
// C++ Program to demonstrate working of default argument
#include <iostream>
using namespace std;
void display(char = '*', int = 1);
int main()
{
cout << "No argument passed:\n";
display();
cout << "\nFirst argument passed:\n";
display('#');
cout << "\nBoth argument passed:\n";
display('$', 5);
return 0;
}
void display(char c, int n)
{
for(int i = 1; i <= n; ++i)
{
cout << c;
}
cout << endl;
}
Forwarded from DailyTradePluse
This media is not supported in your browser
VIEW IN TELEGRAM
نسل آینده تکنولوژی؛ کامپیوترهایی که در جیب جا میشوند!
🖥 @It_Universee
🖥 @It_Universee
C++ program آموزش
https://cdn.programiz.com/sites/tutorial2program/files/how-recursion-works-c%2B%2B.jpg
قسمت ۲۱
توابع بازگشتی
فرض کنید نیاز به تابعی دارید که باید بر روی مقدار ورودی ، عملی را تا زمان مشخصی و نه نامحدود ، تکرار کند .
به نظر شما چگونه باید این کار را انجام دهیم
در ساده ترین حالت باید از کد زیر استفاده کنید:
int a,b;
while(true){
b=func(a);
if(b<100)
a=b;
else
break;
}
اما این مورد را می توان با تابع بازگشتی به صورت هوشمند تری باز نویسی کرد
تابع بازگشتی به تابعی گفته می شود که در داخل خود تابع ، تابع مجددا صدا زده می شود و استفاده شده است
مثلا اگر بخواهید فاکتوریل یک عدد کمتز از ۳۰ را محاسبه کنید با استفاده از توابع بازگشتی می توانید از روش زیر استفاده کنید
using namespace std;
int factorial(int);
int main()
{
int n;
return 0;
}
int factorial(int n)
{
{
}
else
{
return 1;
}
}
دقت کنید که در این حالت شرط در داخل خود تابع قرار دارد و با رسیدن مقدار ورودی به عدد ۱ تابع شروع به بازگشت مقدار نهایی خود به فراخوانی های قبلی می کنید و به این ترتیب مقدار های ضرب شده از ۱ تا عدد مورد نظر به سمت اولین فراخوانی ارسال می شوند
در نهایت شما مقدار فاکتوریل عدد مورد نظر را در خروجی تابع در تابع main خواهید داشت
مثال های بیشتر در ادامه ارسال خواهد شد
توابع بازگشتی
فرض کنید نیاز به تابعی دارید که باید بر روی مقدار ورودی ، عملی را تا زمان مشخصی و نه نامحدود ، تکرار کند .
به نظر شما چگونه باید این کار را انجام دهیم
در ساده ترین حالت باید از کد زیر استفاده کنید:
int a,b;
while(true){
b=func(a);
if(b<100)
a=b;
else
break;
}
اما این مورد را می توان با تابع بازگشتی به صورت هوشمند تری باز نویسی کرد
تابع بازگشتی به تابعی گفته می شود که در داخل خود تابع ، تابع مجددا صدا زده می شود و استفاده شده است
مثلا اگر بخواهید فاکتوریل یک عدد کمتز از ۳۰ را محاسبه کنید با استفاده از توابع بازگشتی می توانید از روش زیر استفاده کنید
// Factorial of n = 1*2*3*...*n
#include <iostream>
using namespace std;
int factorial(int);
int main()
{
int n;
cout<<"Enter a number to find factorial: ";
cin >> n;
cout << "Factorial of " << n <<" = " << factorial(n);
return 0;
}
int factorial(int n)
{
if (n > 1)
{
return n*factorial(n-1);
}
else
{
return 1;
}
}
دقت کنید که در این حالت شرط در داخل خود تابع قرار دارد و با رسیدن مقدار ورودی به عدد ۱ تابع شروع به بازگشت مقدار نهایی خود به فراخوانی های قبلی می کنید و به این ترتیب مقدار های ضرب شده از ۱ تا عدد مورد نظر به سمت اولین فراخوانی ارسال می شوند
در نهایت شما مقدار فاکتوریل عدد مورد نظر را در خروجی تابع در تابع main خواهید داشت
مثال های بیشتر در ادامه ارسال خواهد شد