توابع در زبان C++ – آموزش زبان C++

cpp functions 4313 توابع در زبان C++   آموزش زبان C++

توابع در زبان C++

یک تابع گروهی از دستورات است که با هم یک کار را انجام می دهند. هر برنامه ای که با زبان برنامه نویسی C++ نوشته می شود، حتما باید یک تابع اصلی به نام تابع main() را داشته باشد. شما می توانید کدهای خود را به توابع مختلف تقسیم کنید و نحوه تقسیم کدها نیز بستگی به خود شما دارد. اما منطق تقسیم کد این است که هر تابع یک کار خاص را انجام دهد.

اعلان یک تابع، اطلاعات لازم در مورد تابع (مانند اسم تابع، مقدار بازگشتی و پارامترهای تابع) را به کامپایلر می دهد. کتابخانه استاندارد C++ توابع پیش ساخته متعددی را فراهم می کند که می توانید در برنامه های خود از آن ها استفاده کنید. برای نمونه تابع strcat() برای چسباندن دو رشته به یک دیگر استفاده می شود.

تعریف یک تابع

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

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

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

  • return_type : نوع داده ای است که تابع قرار است بعد از اتمام کارش باز گرداند. اگر تابع هیچ مقداری را بر نمی گرداند، می توانید آن را به صورت void تعریف کنید.
  • funcation_name : اسم تابع را مشخص می کند. اسم تابع به همراه لیست پارامترها امضای یک تابع را تشکیل می دهند.
  • parameter list : پارامترهای یک تابع را مشخص می کند. یک پارامتر مانند یک placeholder عمل می کند و زمانی که شما تابع را فراخوانی می کنید، باید مقدار پارامترهای تعریف شده را نیز به آن بدهید. همچنین یک تابع می تواند بدون پارامتر تعریف شود.
  • body of the function : بدنه تابع را مشخص می کند. بدنه تابع شامل مجموعه ای از دستورات است که عملی که تابع انجام می دهد را تعریف می کنند.

مثال

در زیر سورس کد مربوط به یک تابع که 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; 
}

امتحان کنید

زمانی که کد بالا توسط کامپایلر زبان C++ اجرا شود، نتیجه زیر را تولید خواهد کرد:

Max value is : 200

آرگومان های تابع

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

در هنگام فراخوانی یک تابع، دو راه برای ارسال آرگومان ها به آن وجود دارد که در زیر مشاهده می کنید:

ردیف توضیحات
۱ فراخوانی با مقدار (By Value)

در این نوع فراخوانی فقط یک کپی از مقدار اصلی به تابع ارسال می شود و تغییرات اعمال شده در تابع تاثیری بر مقدار اصلی ندارد.

فراخوانی با اشاره گر (By Pointer)

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

۲ فراخوانی با ارجاع (By Reference)

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

توجه! در زبان C++ به طور پیشفرض آرگومان ها به صورت فراخوانی با مقدار (By Value) به توابع ارسال می شوند. به این معنی که توابع نمی توانند مقادیر اصلی آرگومان ها را تغییر دهند.

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

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

توجه! نباید بعد از پارامتری که مقدار پیشفرض دارد، پارامتر بدون مقدار پیشفرض تعریف شود.

#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

نوشته توابع در زبان C++ – آموزش زبان C++ اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.

درباره نویسنده: administrator

ممکن است دوست داشته باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *