توابع در c++
توابع در c++ تعدادی ورودی دارد که به آن پارامتر می گویند و یک خروجی دارد.
و به صورت زیر تعریف می شود:
noe tabe name
tabe(vorodiha)
{
badane tabe
}
در بدنه تابع کلمه return مقدار تابع را برمیگرداند:
int sum (int a , int b)
{
return a+b;
}
تابع بالا دو عدد صحیح دریافت و حاصل جمع آن ها که صحیح می باشد را برمیگرداند.
برای اینکه یک تابع را فراخوانی کنیم باید از نام آن همراه با با لیست
آرگومان های مناسب با پارامترهای تابع استفاده کرد.
نکته:
باید تعداد و ترتیب و نوع آرگومان ها با پارامترهای نظیرشان در تابع منطبق باشند.
در غیراین صورت امکان رخداد خطا وجود دارد.
در هنگام فراخوانی یک تابع اجرای تابع فراخواننده موقتا متوقف میشود
و کنترل اجرا به تابع فراخوانی شده منتقل میشود.
پس از تمام شدن تابع فراخوانی شده و اجرای دستور return کنترل اجرا به تابع فراخواننده بازمیگردد
و اجرا را از دستور بعدی شروع میکند.
اگر تابع هیچ مقداری را بازنگرداند میتوانیم آن را به شکل یک دستور مستقل فراخوانی کنیم.مثلا:
clrscr();
اما تابعی که یک مقدار خروجی برمیگرداند را میشود در یک عبارت محاسباتی به کار برد.
مثال:
تابعی که دو عدد صحیح را دریافت کند و اولی را به توان دومی حساب کرده و آن را برگرداند. با استفاده از حلقه for
int power( int a, int b)
{
int s=1;
for(i=0 ; i<b ;i++)
s=s*a;
return s;
}
مثال:
برنامه زیر یک تابع را تعریف و از آن در برنامه اصلی استفاده میکند.
این تابع یک عدد را گرفته و فاکتوریل آن را حساب میکند.
int fact(int);
void main()
{
int a,f;
cin>>a;
f=fact(a);
cout<<f;
}
int fact(int x)
{
int i, s=1;
for(i=1 ; i<=x ; i++)
s=s*i;
return s;
}
نکته:
همانطور که میبینید برای استفاده از تابع باید اعلان تابع قبل از بدنه اصلی وجود داشته باشد
و بدنه و تعریف تابع بعد از بدنه اصلی برنامه و خارج آن تعریف می شود.
مثال:
تابعی بنویسید که با گرفتن یک عدد صحیح اگر منفی باشد صفر و اگر مثبت 1 را برگرداند سپس
از این تابع در برنامه ای که n عدد را دریافت و تعداد اعداد منفی و مثبت
را چاپ می کند استفاده کند.
int power(int);
void main()
{
int n,i,p=0,q=0;
cin>>n;
for(i=1; i<=n ; i++)
{
if(power(i)==1)
p=p+1;
else:
q=q+1;
}
cout<<p<<q;
}
int power(int x)
{
if(x>0)
return 1;
else:
return 0;
}
مثال:
برنامه ای بنویسید که با استفاده از تابع اعداد اول بین m و n را بنویسد.
int aval(int);
void main()
{
int m, n,j;
cin>>n>>m;
for(j=m ; j<=n ; j++)
if(aval(j)==1)
cout<<j;
}
int aval(int x)
{
int i,s=0;
for(i=1; i<=x ; i++)
{
if(x%i ==0)
s=s+1;
}
if(s==2)
return 1;
else:
return 0;
}
نکته:
چون بدنه اصلی تابع main با نوع int تعریف شده است باید مقدار برگشتی عدد صحیح باشد. لذا در اینجا ما از مقدار برگشتی return 0 استفاده کرده ایم.