آموزش استفاده از توابع در برنامه نویسی ( Functions )

استفاده از توابع در برنامه امری ضروری است با استفاده از توابع می توان راحت تر برنامه را مدیریت کرد یا اگر برنامه بزرگ باشد می توان با استفاده از توابع برنامه را به صورت گروهی نوشت تا کار برنامه نویسی سریع تر انجام شود . با استفاده از توابع برنامه ما زیبا تر و قابل فهم تر می شود ، ما در مقاله به آموزش استفاده از توابع می پردازیم  ، معرفی تابع به صورت زیر است و از قسمت های زیر تشکیل شده است:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
وب سایت توسینسو
  • type اولی نوع خروجی تابع مشخص می کند و یکی از موارد (int - float - void(without return و ... است و بستگی به خروجی تابع دارد
  • name می تواند هر اسمی باشد که معرف اسم تابع است
  • type value1 نشان دهنده ی آرگومان ورودی به تابع است و type نشان دهنده نوع این آرگومان است البته این تابع که در بالا نوشته شده دو آرگومان ورودی دارد که می تواند بیشتر یا کمتر باشد

و در نهایت دستورات مربوط به تابع را در داخل دو اکلاد قرار می دهیم ، یک مثال ساده از توابع : تابعی که دوعدد میگیرد و حاضل ضرب آن ها را برمیگرداند

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 , ,

نظرات