خوراک پی سی کدنویس

ورود کاربران

آمار سایت

اعضا : 431
محتوا : 74
پیوندها : 6
بازدیدهای محتوا : 245455

حاضرین در سایت

 78 مهمان حاضر

برای نمایش بهتر سایت، از مرورگر استاندارد فایرفاکس استفاده کنید! مرورگر اینترنت اکسپلورر متعلق به دهه گذشته است!

firefox icon

Valid XHTML 1.0 Transitional Valid CSS!

نحوه استفاده از توابع در C++

9 امتیاز

تابع چیست؟

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

نحوه تعریف تابع در C++

برای تعریف تابع به صورت زیر عمل می کنیم:

output type   function name (parameters)
{
//body
return output type;
}

به عنوان مثال اگر بخواهیم تابعی تعریف کنیم که یک عدد را به توان 2 برساند می توانیم به صورت زیر عمل کنیم:

double power2(double x)
{
    return x*x;
}

حال در برنامه اصلی هرگاه خواستیم عددی را به توان 2 برسانیم به سادگی این تابع را فراخوانی می کنیم:

double power2(double x)
{
    return x*x;
}
int main(int argc, char* argv)
{
    cout << "12.25 ^ 2 = " << power2(12.25);
    return 0;
}

استفاده از پارامترهای پیش فرض در توابع (Default Parameters)

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

double power(double x, int pow = 2)
{
    double output = x;
    for(int i = 0; i < pow-1; i++)
       output *= x; // the same as output = output * x;
    return output;
}
int main(int argc, char* argv)
{
    //since we have defined default parameter as 2 the following lines are equal!
    cout << "12.25 ^ 2 = " << power(12.25);
    cout << "12.25 ^ 2 = " << power(12.25, 2);
    //but if we want to find power 3 or more, we must mention it as int the following
    cout << "12.25 ^ 3 = " << power(12.25, 3);
    return 0;
}

سربارگذاری توابع (Function Overloading)

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

double average(double input[], int length)
{
    double sum = 0;
    for (int i = 0; i < length; i++)
        sum += input[i];
    return sum / length;
}


حال اگر یک آرایه از اعداد صحیح داشته باشیم، آیا می توانیم از تابع فوق برای محاسبه میانگین انها استفاده کنیم؟ متاسفانه خیر. چرا که نوع داده اعشاری و صحیح اندازه های متفاوتی دارند و امکان تبدیل آرایه هایی از دو نوع غیر همسان وجود ندارد (چرا؟) از طرفی پارامتر ورودی هم آرایه است، پس مجبوریم تابع دیگری تعریف کنیم که تنها ورودی آن تفاوت داشته و از نوع int خواهد بود. نکته خوب ماجرا این است که اسم این تابع می تواند هم نام تابع قبلی باشد.

double average(int input[], int length)
{
    double sum = 0;
    for (int i = 0; i < length; i++)
        sum += input[i];
    return sum / length;
}

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

  • morteza
    avatar
    jadidtar bezari behtar mi bashad :X
  • mliliana  - baha bah
    avatar
    :confused: :0 :angry: :X <img src=ide:' title=':side:' class='postemoticon' /> :unsure: :woohoo: :huh: :whistle: :!: :?: :( :pinch: :D :kiss: :lol: :dry: <img src=illy:' title=':silly:' class='postemoticon' /> <img src=hock:' title=':shock:' class='postemoticon' /> :arrow: :idea: :?: :!: :s :s ;) :whistle: :evil:
  • superman  - up to date
    avatar

    :evil:
    salam
    mamnoon az blogeton
    lotfan agar yek blog misaazid talash konid ke hadde aghal har hafte oon ro up to date konid
    na in ke saali yek bar oon ro baz konid
    :pinch: :!: :!: :angry:
  • مدیر سایت
    avatar
    سلام
    اینجا البته وبلاگ نیست، مطلبی که گذاشته می شود باید حساب شده باشد. لیکن در مورد به روز رسانی حق با شماست.
    سایت را که ایجاد کردیم آزمایشی بود لیکن هنوز ادامه دارد! امید این بود که کاربرانی پیدا بشوند و با استفاده از دکمه ارسال مقاله! به محتویات سایت بیفزایند. متاسفانه تاکنون پیدا نشده و سایت دارد یکنفره اداره می شود...
  • najma
    avatar
    mamnun az matlabe2n age mishe rajebe tavabe bishtar matlab bezarin
اظهار نظر
مشخصات شما:
گراواتار enabled
نظر:
[b] [i] [u] [url] [quote] [code] [img]   
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch::(:shock:
:X:side::):P:unsure::woohoo::huh::whistle:;):s:!::?::idea::arrow:
امنیت
کد آنتی اسپم نمایش داده شده در عکس را وارد کنید.