آموزش C++ تابع

یک تابع مجموعه ای از دستورات است که در کنار هم یک کار را انجام می دهند. هر برنامه‌ای که با زبان برنامه نویسی C++ نوشته شده باشد، حداقل دارای یک تابع است که  main() نام دارد. می‌توان در کل برنامه توابع دیگری اضافه کرد.
می توانید کدهای خود را به توابع جداگانه تقسیم کنید که نحوه تقسیم کد بستگی به خود شما دارد اما معمولا نحوه تقسیم بندی به این صورت است که هر تابع یک کار خاص را انجام میدهد.
اعلان یک تابع اطلاعاتی درباره نام تابع، نوع بازگشتی و پارامترهای آن را به کامپایلر می دهد. تعریف یک تابع فرمت کلی آن را فراهم می‌کند.
کتابخانه استاندارد C++ شامل چندین توابع داخلی است که برنامه می تواند از آن استفاده کند. برای مثال تابع strcat() برای اتصال دو رشته و تابع memcpy() برای کپی یک مکان حافظه به مکان دیگر مورد استفاده قرار می گیرد که البته توابع بسیار زیادی در C++ وجود دارد.
معمولا برنامه نویسان توابع را  با نام های دیگری مانند method و یا subroutin و یا procedure نیز ضدا می زنند.

نحوه تعریف یک تابع

شکل کلی  تعریف یک تابع در C++ به شکل زیر است:
 

return_type function_name( parameter list ) {
   body of the function
}

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

  • return type : نوع داده ای که تابع بعد از اتمام کارش قرار است برگرداند را مشخص میکند. اگر قرار است تابع هیچ مقداری برنگرداند می توانید آن را void تعریف کنید.
  • function name : نشان دهنده نام واقعی یک تابع است. اسم تابع و لیست پارامترهای آن امضای یک تابع را تشکیل می دهند.
  • parameter list : یک پارامتر مانند یک  placeholder عمل می کند و زمانی که یک تابع فراخوانی می شود یک مقدار به پارامتر منتقل می شود. این مقدار به عنوان پارامتر یا آرگومان در نظر گرفته می شود. منظور از لیست پارامترها، نوع، ترتیب و تعداد پارامترهای یک تابع است.

به دلیل آنکه پارامترها اختیاری هستند ممکن است یک تابع پارامتری نداشته باشد.

مثال

کد زیر مثالی برای تابعی به نام max() است که دو پارامتر به نام num1 و num2  را دریافت می کند و بزرگترین آن ها را بر می گرداند.
 

// // function returning the max between two numbers
 
int max(int num1, int num2) {
   // local variable declaration
   int result;
 
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}

اعلان تابع

اعلان تابع اطلاعاتی در مورد نحوه فراخوانی و نام تابع به کامپایلر می دهد. بدنه تابع می تواند به صورت جداگانه تعریف شود.

اعلان یک تابع شامل بخش های زیر است:

return_type function_name( parameter list );

اعلان تابع max() که در بالا به آن اشاره کردیم به صورت زیر است:

int max(int num1, int num2);

نام پارامتر ها در زمان اعلان تابع اهمیتی ندارد و تنها نوع آنها مهم اند. مثال زیر اعلان یک تابع معتبر را ارائه داده است:

int max(int, int);

اعلان تابع زمانی مورد نیاز است که تابعی را در یک فایلی تعریف می کنید و در فایلی دیگر به آن تابع احتیاج دارید. در این صورت باید تابع را بالای فایلی که آن را می‌خواهید فراخوانی کنید اعلان کنید.

فراخوانی یک تابع

در زمان ایجاد یک تابع در C++  باید تعیین کنید که تابع قرار است چه کارهایی انجام دهد و برای استفاده از آن تابع، باید آن را فراخوانی کنید.
هنگامی که برنامه تابعی را فراخوانی می کند، کنترل برنامه به تابع منتقل می شود. یک تابع فراخوانی شده وظایف مشخصی را انجام می دهد و هنگامی که مقادیر بازگشتی آن به دست می آید و یا زمانی که دستورات به پایان می رسند، کنترل برنامه به برنامه اصلی منتقل می شود.
تنها با استفاده از نام تابع و پارامترهای مورد نظر آن می توانید تابع را فراخوانی کنید و اگر تابع مقداری را برگرداند می توانید آن مقدار بازگشتی را ذخیره کنید. به مثال زیر توجه کنید:

 

#include <iostream>
using namespace std;
 
// function declaration
int max(int num1, int num2);
 
int main () {
   // local variable declaration:
   int a = 100;
   int b = 200;
   int ret;
 
   // calling a function to get max value.
   ret = max(a, b);
   cout << "Max value is : " << ret << endl;
 
   return 0;
}
 
// function returning the max between two numbers
int max(int num1, int num2) {
   // local variable declaration
   int result;
 
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}

تابع max() را به همراه main() نگه داشتیم و کد منبع را کامپایل کردیم. پس از کامپایل و اجرای کد بالا نتیجه زیر نمایش داده می شود

Max value is : 200

آرگومان تابع

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

ردیف توضیحات
1

فراخوانی توسط مقدار

در این روش مقدار واقعی یک آرگومان در پارامتر تابع کپی می شود و تغییرات صورت گرفته در پارامتر آن تابع تاثیری بر آرگومان آن ندارد.

2

فراخوانی توسط اشاره گر

در این روش آدرس آرگومان در پارامتر کپی می شود و این آدرس در تابع برای دسترسی به آرگومان مورد استفاده قرار می گیرد. این به معنای آن است که اگر تغییری در پارامتر ایجاد شود، بر آرگومان نیز تاثیر می گذارد.

3

فراخوانی با ارجاع

در این روش آدرس مرجع آرگومان در پارامتر کپی می شود. این آدری مرجع برای دسترسی به آرگومان در زمان فراخوانی مورد استفاده قرار می گیرد. هر تغییری در پارامتر بر روی آرگومان تاثیر گذار است.

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

مقادیر پیش فرض برای پارامتر ها

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

#include <iostream>
using namespace std;
 
int sum(int a, int b = 20) {
   int result;
   result = a + b;
  
   return (result);
}
int main () {
   // local variable declaration:
   int a = 100;
   int b = 200;
   int result;
 
   // calling a function to add the values.
   result = sum(a, b);
   cout << "Total value is :" << result << endl;

   // calling a function again as follows.
   result = sum(a);
   cout << "Total value is :" << result << endl;
 
   return 0;
}

پس از کامپایل و اجرای کد بالا نتیجه زیر نمایش داده می شود 

Total value is :300
Total value is :120

 

برای درج نظر و یا طرح سوالات خود لطفا در سایت ثبت نام کنید و یا وارد سایت شوید

نظرات کاربران

برای این مطلب تاکنون نظری ارسال نشده است. شما اولین نفر باشید