در این آموزش می توانید به کمک مثال با توابع تعریف شده توسط کاربر در برنامه نویسی C آشنا شوید.
یک تابع مجموعه ای از کدها است که وظیفه خاصی را انجام می دهد. زبان C این امکان را فراهم کرده تا بتوانید براساس نیاز خود تابع تعریف کنید. این توابع به عنوان توابع تعریف شده توسط کاربر شناخته می شوند. مثال:
فرض کنید باید برنامه ای بنویسید که در آن ابتدا یک دایره ساخته می شود و سپس براساس شعاع و رنگ، رنگ آمیزی خواهد شد. برای حل این مسئله می توانید دو تابع ایجاد کنید:
- تابع ()createCircle
- تابع ()color
مثال: تابع تعریف شده توسط کاربر
در این مثال تابعی برای جمع دو عدد صحیح با نام () addNumbers نوشته شده است.
#include <stdio.h>
int addNumbers(int a, int b); // نمونه اولیه تابع
int main()
{
int n1,n2,sum;
printf(“Enters two numbers: “);
scanf(“%d %d”,&n1,&n2);
sum = addNumbers(n1, n2); // فراخوانی تابع
printf(“sum = %d”,sum);
return 0;
}
int addNumbers(int a, int b) // تعریف تابع
{
int result;
result = a+b;
return result; // return دستور
}
قسمت های مختلف مرتبط با تابع
- نمونه اولیه تابع
- فراخوانی تابع
- تعریف تابع
- دستور return
نمونه اولیه تابع
نمونه اولیه تابع همان اعلان تابع است که نام، پارامترهای ورودی و نوع مقدار بازگشتی از تابع را مشخص می کند. شامل بدنه و دستورات تابع نیست.
در واقع نمونه اولیه تابع به کامپایلر اطلاعاتی می دهد که ممکن است در ادامه از این تابع در برنامه استفاده شود.
ساختار نمونه اولیه تابع
ساختار کلی:
نام تابع نوع بازگشتی از تابع(آرگومان ۱, آرگومان ۲, …);
در مثال بالا
int addNumbers(int a, int b);
نمونه اولیه تابع است که اطلاعات زیر را به کامپایلر ارائه می دهد:
۱- ()addNumbers نام تابع است.
۲- int نوع مقدار بازگشتی از تابع است
۳- دو آرگومان a و b از نوع int به تابع ارسال می شود.
اگر تابع کاربر قبل از تابع ()main تعریف شده باشد نیازی به نمونه اولیه تابع نیست.
فراخوانی تابع
با فراخوانی تابع کنترل برنامه به قسمت تعریف تابع منتقل می شود.
ساختار فراخوانی تابع
نام تابع(آرگومان ۱, آرگومان ۲, …);
در مثال بالا فراخوانی تابع با استفاده از دستور
addNumbers(n1, n2);
در داخل تابع ()main انجام می شود.
تعریف تابع
تعریف تابع شامل بلوک کد برای انجام یک کار خاص است. در مثال بالا تابع
addNumbers(int a, int b)
جمع دو عدد را محاسبه کرده و مقدار مجموع را برمی گرداند.
ساختار تعریف تابع
مقدار بازگشتی اسم تابع(نوع داده۱ پارامتر۱ , نوع داده۲ پارامتر۲ , …)
{
//بدنه تابع
}
هنگامی که یک تابع فراخوانی می شود، کنترل برنامه به خط تعریف تابع منتقل می شود و کامپایلر کدهای داخل بدنه تابع را اجرا می کند.
ارسال آرگومان ها به تابع
آرگومان در برنامه نویسی به متغیری گفته می شود که به تابع ارسال می شود. در مثال بالا دو متغیر n1 و n2 در هنگام فراخوانی تابع ارسال می شوند.
پارامترهای a و b آرگومان های ارسال شده در تعریف تابع را می پذیرند. این آرگومان ها پارامترهای رسمی تابع نامیده می شوند.
نوع آرگومان های ارسالی باید با نوع پارامترهای رسمی تابع مطابقت داشته باشند. در غیر این صورت، کامپایلر خطا می دهد.
اگر n1 از نوع char باشد، a نیز باید از نوع char باشد. اگر n2 از نوع عدد اعشاری باشد، متغیر b نیز باید از نوع عدد اعشاری باشد.
تابع می تواند پارامتر نداشته باشد، در این صورت برای فراخوانی آن نیازی به ارسال آرگومان نیست.
دستور return
دستور return اجرای تابع را تمام می کند و یک مقدار به فراخوانی تابع برمی گرداند. کنترل برنامه بعد از دستور return به فراخوانی تابع منتقل می شود.
در مثال بالا، مقدار متغیر result برگشت داده می شود. این مقدار به فراخوانی تابع بر می گردد که آن نیز در متغیر sum در تابع ()main ذخیره می شود یعنی مقدار result در sum قرار می گیرد.
ساختار دستور return
return مقدار بازگشتی;
مثال،
return a;
return (a+b);
نوع مقدار برگشتی از تابع باید با نوع بازگشتی تعیین شده در نمونه اولیه تابع و تعریف تابع یکسان باشد.