استفاده از توابع در برنامه امری ضروری است با استفاده از توابع می توان راحت تر برنامه را مدیریت کرد یا اگر برنامه بزرگ باشد می توان با استفاده از توابع برنامه را به صورت گروهی نوشت تا کار برنامه نویسی سریع تر انجام شود . با استفاده از توابع برنامه ما زیبا تر و قابل فهم تر می شود ، ما در مقاله به آموزش استفاده از توابع می پردازیم ، معرفی تابع به صورت زیر است و از قسمت های زیر تشکیل شده است:
و در نهایت دستورات مربوط به تابع را در داخل دو اکلاد قرار می دهیم ، یک مثال ساده از توابع : تابعی که دوعدد میگیرد و حاضل ضرب آن ها را برمیگرداند
int zarb (int a, int b) { int c; a*b; return (c); }
حال می توان از توابع با نام های مشترک در برنامه استفاده کرد البته نوع ورودی های این توابع باید فرق داشته باشد و با توجه به نوع ورودی های آن برنامه اجرا می شود به این عمل سربارگزاری توابع یا (function overloading ) می گویند مانند برنامه زیر :
int chap ( int a, int b){ return a+b;} int chap (float a, float b){return a*b;} int main () { int a=2 , b=5; float c=3.0 , d=4.0; cout<<chap(a,b)<<endl; cout<< chap(c,d)<<endl; return 0; }
حال به سراغ توابع بازگشتی می رویم که برنامه ها را کوتاه تر می کند در این نوع توابع ابتدا یک شرط برای پایان تابع می گذاریم و در ادامه دوباره تابع را فراخوانی کرده تا به آن شرط اولیه برسیم ، مثال زیر برنامه ایست که یک عدد از کاربر گرفته و به آن تع داد ستاره چاپ می کند:
void chap (int n) { if (n==0) return; cout<<"*"<<endl; return chap (n-1); }
یا مثال زیر یک عدد (n ) را گرفته و !n را به دست آورد
int fact (int n) { if (n==1) return 1; return fact(n-1) * n; }
فراخوانی توابع در برنامه به این صورت است که اسم تابع را نوشته و اگر پارامتر ورودی دارد پارامتر ورودی آن را حساب می کنیم در برنامه زیر این فراخوانی نشان داده شده است ( با فرض اینکه توابع بالا را در برنامه داریم )
int main() { int x,m; cin >>x; m=fact(x); chap(x); cout <<"x! ="<<m; }
خروجی برنامه فوق با ورودی 6 به صورت زیر است :
تابع زیر که تابع جست وجوی باینری یا دودویی است یکی از پرکاربرد ترین مسایل در C++ است و به صورت زیر نوشته می شود ، در این برنامه باید آرایه که می خواهیم در آن به دنبال عددی یا حرفی بگردیم به صورت صعودی مرتب باشد در این تابع ما به دنبال عدد x می گردیم و باید شماره خانه آن را برگردانیم:
int binary search (int a[] , int l , int h , int x ) { int m; if (l>h) return -1; m = (l+h)/2; if (x==a[m]) return m; else if ( x<a[m]) return (a,l,m-1,x); return (a,m+1,h,x); }
این برنامه هم به صورت بازگشتی است . دو نوع فراخوانی برای توابع داریم : 1- فراخوانی با ارجاع call by reference 2 -فراخوانی با مقدار call by value در فراخوانی با مقدار ، مقدار آرگومان تغییر کرده در تابع به برنامه بر نمیگردد ولی در فراخوانی با ارجاع مقداری که در تابع تغییر می کند به تابع برمیگردد ، برنامه زیر نشان دهنده ی این موضوع است
void a1 (int a) // call by value { a++; } void a2 (int &a) // call by reference { a++; } int main() { int a; cin>>a; a1(a); cout<<"call by value="<<a<<endl; a2(a); cout<<"call by reference="<<a; return 0; }
مهندس فناوری اطلاعات دارای مدرک : windows server 2008 , , network+ , , windows 7 , , میکرو کنترلرها در رباتیک AVR , ,
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود