آموزش تابع در زبان C – بخش دوم { شناخت دقیق یک تابع }
مقدمه
با سلام خدمت همه شما دوستان. درجلسه قبل ما گفتیم که اصلا یک تابع چی هست و به چه دردی میخوره. ولی قول دادیم که بیشتر در زمینه توابع صحبت کنیم. در این جلسه قصد داریم که یاد بگیریم ، چگونه میتونیم یک تابع رو بسازیم و ازش استفاده کنیم. پیشنهاد میکنم برای فهم بهتر این مطلب ، ابتدا جلسه قبل رو از لینک زیر بخونید:
ساخت توابع در زبان C :
همونطور که در جلسه قبل گفتیم ، توابع یک بلوک کد است که وظیفه ی خاصی رو انجام میده. زبان C به ما اجازه میده تا مطابق با نیازی که داریم یک تابع رو تعریف کنیم و ازش استفاده کنیم. به این توابع ، توابع تعریف شده توسط کاربرد ( به انگلیسی User defined functions ) گفته میشود.
مثالی که در جلسه قبل استفاده کردیم این بود که ، مثلا میخوایم یک دایره رو رسم کنیم و اون رو رنگ آمیزی کنیم. در این صورت دو تا تابع میتونیم تعریف کنیم:
- تابعی برای رسم دایره
- تابعی برای رنگ آمیزی آن
مثالی ساده برای یک تابع :
در مثال زیر ما یک تابع ساختیم که وظیفه این تابع این هست که دو تا عدد رو با همدیگه جمع بزنه. ابتدا یک نگاه کلی به این کد داشته باشید تا در ادامه در مورد تابع به کار رفته در این کد توضیحاتی رو ارایه بدیم:
#include <stdio.h> int addNumbers(int a, int b); // function prototype int main() { int n1,n2,sum; printf("Enters two numbers: "); scanf("%d %d",&n1,&n2); sum = addNumbers(n1, n2); // function call printf("sum = %d",sum); return 0; } int addNumbers(int a,int b) // function definition { int result; result = a+b; return result; // return statement }
اجزای مختلف یک تابع
آشنایی با prototype یک تابع:
منظور از Prototype یک تابع ، یک تعریف ساده از اون تابع هست که با استفاده از اون ، نام تابع ، پارامترهای ورودی اون تابع و پارامترهای خروجی اون تابع رو مشخص کنیم. در prototype یک تابع ما کدی قرار نمیدیم و صرفا یک تابع رو تعریف میکنیم:
prototype یک تابع ، یک سری اطلاعات رو به کامپایلر میده و به کامپایلر میگه که من میخوایم از این تابع در ادامه برنامه ام استفاده کنم.
اجزای سازنده یک prototype :
در شکل زیر اجزای سازنده یک prototype آورده شده است :
در مثال بالا عبارت addNumbers(int a, int b); همون prototype تابع هست که اطلاعات زیر رو به کامپایلر ارایه میده :
- نام تابع هست addNumbers
- مقدار بازگشتی تابع از نوع int هست. ( خروجی تابع از نوع int هست)
- این تابع دو آرگومان ورودی دریافت میکنه. ( در واقع دو آرگومان به این تابع پاس داده می شوند. )
نکته :اگه یک تابع رو به صورت کامل ( یعنی همراه با کاری که انجام میده ) رو قبل از تابع main تعریف کنیم ، آنگاه نیازی به معرفی prototype تابع درابتدای برنامه نمی باشد.
نحوه فراخوانی تابع:
فراخوانی یک تابع یعنی وقتی که در وسط برنامه ، اسم اون تابعی که میخوایم رو صدا بزنیم. به این کار میگن فراخوانی تابع. نحوه فراخوانی یک تابع به صورت زیر هست:
در مثال بالا ، فراخوانی تابع با استفاده از دستور addNumbers(n1, n2) در تابع main انجام شده.
تعریف یک تابع:
منظور از تعریف تابع این هست که داخل تابع ، کاری که میخوایم اون تابع برامون انجام بده رو به صورت یک کد بنویسیم. مثلا در مثال بالا در داخل تابع addNumbers بنویسیم که دو تا عدد رو برامون جمع کن و نتیجه رو در خروجی خودت قرار بده. در شکل زیر نحوه تعریف یک تابع به صورت کامل آورده شده است :
وقتی که یک تابع فراخوانی شد ، کنترل برنامه به محل تعریف اون تابع میره وکامپایلر اون تابع و کدهای داخل اون رو اجرا میکنه.
پاس دادن آرگومان ها به یک تابع :
در برنامه نویسی منظور از آرگومان ها ، متغیرهایی هستند که به یک تابع پاس داده می شوند. مثلا در مثال بالا ، دو تا متغیر n1 و n2 دو تا آرگومان تابع هستند که به این تابع پاس داده میشوند و تابع کاری که میخواد انجام بده رو روی اون دو تا متغیر انجام میده.
تابع مربوطه هم این دو تا متغیر رو میپذره و n1 رو به جای a و n2 رو به جای b قرار میده و عملیات مورد نظر رو روی این دو تا متغیر انجام میده.
البته اینجور هم نیست که باید همیشه تابع یک آرگومان ورودی داشته باشه. میتونه بدون هیچ آرگومانی یک تابع صدا زده بشه.
خروجی تابع ( جمله بازگشتی ) :
خروجی تابع هم همونطور که از اسمش معلومه ، نتیجه انجام عملیات یک تابع هست و اون نتیجه رو به تابع main برمیگردونه. البته این نکته رو هم بگم که الزامی وجود نداره که یک تابع حتما خروجی داشته باشه.
کنترل برنامه هم بعد از این که خط مربوط به return رو اجرا کرد ، به ادامه برنامه برمیگرده.
در مثال بالا ، نتیجه متغیر result خروجی تابع هست و در متغیر sum قرار میگیره.
اجزای تشکیل دهنده return :
شکل زیر گویای همه چیز هست:
نکته مهم این هست که خروجی یک متغیر که return میشه با خروجی تابع که در prototype تابع در اول برنامه تعریف شده ، باید یکی باشه. مثلا باید هر دو حتما int باشن و اینجور نمیشه که یکی int باشه و دیگری char .
خوب دوستان. برای این جلسه هم کافی هست. ما در مورد تابع و انواع توابع جلسات دیگه ای هم خواهیم داشت. مثل همیشه میتونید ما رو در تلگرام و یا اینستاگرام دنبال کنید.
2 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
ممنون از سایت فوق العادتون
سلام ،عالی توضیح دادی و تابع را معرفی کردی