Professional Documents
Culture Documents
5 توابع
5 توابع
توابع در C++
توابع کتابخانهای
2
توابع کتابخانهای در C++
کتابخانه cmath
-شامل توابع ریاضی موجود در ماشین حساب ،مانند )،cos(x) ،sin(x
) pow(x,p) ،log2(x) ،log(x) ،fabs(xو ...
-نوع برگشتی توابع ریاضی double
دیگر کتابخانهها
5
استفاده از توابع ساخت برنامه نویس
مثال:تعریف و استفاده از تابع مکعب
>#include<iostream
;using namespace std
)int cube (int x پارامتر
{ تعریف تابع
;return x*x*x
} خروجی:
)(int main 0: 0
{ 1: 1
فراخوانی تابع 2: 8
)for (int n = 0; n<=5 ; n++ 3: 27
;cout<<n<<“:\t”<<cube(n)<<endl 4: 64
;return 0 آرگومان 5: 125
}
4
استفاده از توابع ساخت برنامه نویس
روش دوم
اعالن تابع روش سوم
روش اول int func1(int);
تعریف تابع
تعریف تابع int main() int func1(int x)
int func1(int x) {int x, N; {return x*x*x;
{return x*x*x; ….. }
} N = func1(x)
…… #include “cube.h”
int main() return 0; int main()
{int x, N; } {int x, N;
….. …..
N = func1(x) تعریف تابع
N = func1(x)
…… int func1(int x) ……
return 0; {return x*x*x; return 0;
} } }
5
مثال توابع
𝑛!
𝑃(n, k) = تابع جایگشت:مثال
(𝑛−𝑘)!
int fact (int n){
if (n<0)
return 0;
int f = 1;
while (n>1)
{f *= n; f *= n--;
n--;}
return f;}
int perm (int n, int k) حالتهای غیرممکن
{ if (n<0 | | k<0 | | k>n )
return 0;
return fact(n)/fact(n-k);
}
6
روشهای ارسال پارامترها به توابع
ارسال با مقدار ()Pass by value
-پارامتر کپی از متغیر ارسالی (آرگومان) است.
-تابع نمیتواند آرگومان را تغییر دهند.
-پارامتر خود آرگومان است ،یعنی تابع مستقیماً خود آرگومان را بهکار میگیرد.
-تابع میتواند آرگومان را تغییر دهند.
7
مثال روشهای ارسال پارامترها به توابع
× نسخهنادرست:) (جابهجایی محتویات دو مقدارswap تعریف و استفاده از تابع:مثال
void swap (int, int);
int main()
:خروجی
{ int a = 5, b = 7;
ارسال باcout<<“a = ”<<a<<“, b = ”<<b<<endl; a = 5, b = 7
a = 5, b = 7
مقدار swap(a, b);
cout<<“a = ”<<a<<“, b = ”<<b<<endl;
return 0; main() swap(int x, int y)
}
a 5 x 57
void swap (int x, int y)
{ int temp = x;
b 7 y 57
x = y; تا بزنید Enter
روند تابع را ببینید
y = temp; temp 5
}
8
مثال روشهای ارسال پارامترها به توابع
نسخهدرست:) (جابهجایی محتویات دو مقدارswap تعریف و استفاده از تابع:مثال
void swap (int&, int&);
int main()
{ int a = 5, b = 7; :خروجی
ارسال باcout<<“a = ”<<a<<“, b = ”<<b<<endl; a = 5, b = 7
a = 7, b = 5
ارجاع swap(a, b);
cout<<“a = ”<<a<<“, b = ”<<b<<endl;
return 0; main() swap(int& x, int& y)
}
void swap (int& x, int& y) a 75 x
{ int temp = x;
x = y; b 75 y
y = temp; temp 5
}
9
روشهای ارسال پارامترها به توابع
ارسالباارجاع()Pass by reference ارسالبامقدار()Pass by value
10
بازگشت بیش از یک مقدار از تابع
-دستور returnفقط میتواند یک مقدار را برگرداند.
-در مواقعی که الزم است بیش از یک مقدار برگردانده شود ،این امر توسط پارامترهایی
که به صورت ارجاع ارسال شدهاند ،انجام میگیرد.
-میتوان عالوه بر پارامترهایی که به صورت ارجاع ارسال شدهاند ،پارامترهایی به صورت
مقدار نیز به تابع ارسال کرد.
-بهطور قراردادی پارامترهایی که از طریق ارجاع ارسال میشوند در ابتدای فهرست
پارامترها قرار میگیرند.
مثال :تابعی برای محاسبه محیط و مساحت دایره
)void compute (float& s, float& p, float r
;{s = 3.14*r*r
;p = 2*3.14*r
}
11