آموزش تابع در زبان C – سری آموزش زبان c

تابع در زبان C

در این جلسه از آموزش زبان C قراره به تابع در زبان C بپردازیم.

تابع در زبان C، یک قطعه برنامه است که داده یا داده هایی رو به عنوان ورودی دریافت میکنه و داده یا داده هایی رو به عنوان خروجی برمیگردونه ، به کارگیري توابع شامل 2 قسمت میشه :

1 – تعریف توابع

2 – استفاده از تابع (فراخوانی تابع)

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

اسامی پارامترها

اگر بخواهیم مقادیري رو به تابع ارسال کنیم از اسامی پارامتر ها استفاده میکنیم این اسامی با کاما یا “,” از هم جدا میشه. همچنین باید نوع پارامترها رو در قسمت تعریف اسامی پارامترها تعریف کرد. به مثال زیر توجه کنین :

مثال: تابع زیر یک پارامتر ورودي دارد که نوع این پارامتر باید با نوع آرگومان ورودي تابع در برنامه main یکی و از نظـر تعداد یکسان باشد.

 

 

پس چند نکته مهم که درباره ی توابع یادگرفتیم اینا هستن:

1 – درزبان c یک برنامه ممکنه از چند تابع تشکیل شده باشه که تابع main درهربرنامه اي وجود داره. تابع main رو تابع اصلی و بقیه توابع رو توابع فرعی می نامند.

2 – لیست پارامترهاي ورودي باید ازنظرنوع وتعداد با لیست آرگومان هاي فراخوانی توابع مطابقت داشته باشد.(توی مثال ها توضیح میدم)

3 -با استفاده ازدستور return میشه مقدار تابع رو برگشت بدیم.

4 -براي فراخوانی یک تابع در زبان C باید نام آن رادربرنامه main یا یک تابع دیگرصدا بزنیم.

5 -هرتابع میتواند تابع بالاتر ازخودش راصدا بزند.

6 -در تابع main در موقع فراخوانی براي استفاده از خروجی تابع یا باید خروجی تابع را به یک متغیر نسبت دهـیم یا در دستور printf مستقیم خود تابع را بیاوریم.

7- یک تابع میتونه وروردی داشته باشه یا نداشته باشه.

همینطور میتونه خروجی نداشته باشه ، میتونه یک خروجی داشته باشه و همچنین میتونه چندتا خروجی رو شامل بشه.

انواع توابع در زبان c

پس در حالت کلی یک تابع میتونه 4حالت زیر رو داشته باشه که سعی میکنم در ادامه برای هرکدوم از حالت های تابع در C مثال بزنم.

  1. تابع با ورودی، با خروجی
  2. تابع بدون ورودی، با خروجی
  3. تابع بدون ورودی، بدون خروجی
  4. تابع با ورودی، بدون خروجی

تابع با ورودی، با خروجی

ساختار کلی این تابع :

 

 

مثال : تابعی بنویسید که یک عدد را دریافت کند و فاکتوریل آنرا برگشت دهد.

اگر با دستورات Scanf, printf اشنایی ندارین ، باید مطلب scanf و printf در C رو مطالعه کنین.

در این کد در تابع main ابتدا ورودی رو از کیبورد میخونیم و بعد توسط :

تابع رو فراخوانی میکنیم و به تابع فرعی از نوع int به اسم fact ایجاد کردیم میفرستیمش.

در این تابع توسط الگوریتم ساده ای که نوشتیم فاکتوریل محاسبه میشه و اون رو برگشت میدیم به تابع main دوباره.

 

در خط اول تابع فرعی، نام و نوع تابع مشخص شده و در داخل پرانتز ورودی و نوع اون (int x) .

و در آخر هم با کمک دستور reuturn مقدار خروجی تابع برگشت داده شده.

تابع بدون ورودی، با خروجی

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

ساختار:

 

مثال : تابعی بنویسید که لیست ده تایی از اعداد صحیح را بگیرد و سپس ایـن اعداد را به ترتیب عکس ورودشان نمایش دهد. (تابع ورودي ندارد)

نکته مهم: وقتی تابع قرار است مقداري را نمایش دهد یعنی تابع خروجی ندارد.

 

تابع بدون ورودی، بدون خروجی

ساختار:

تابع بدون ورودی، بدون خروجی تابعی است که نه مقادیر را از ورودی دریافت می‌کند و نه مقادیری را به خروجی بازمی‌گردان.

معمولاً توابعی که فقط عملیاتی را بر روی رجیسترها انجام می‌دهند از این قبیل هستند.

 

تابع با ورودی، بدون خروجی

قالب یک تابع با ورودی، بدون خروجی:

این نوع تابع  بعنوان نمونه میتونه مقدارهای دریافت شده از ورودی را بر روی رجیستر های موردنظر قرار بده.

2نوع ساختار آخر زیاد در نرم افزار devcpp کابرد ندارن و برای دوستان الکترونیکی که با کدویژن و اتمل استودیو کارمیکنن کاربردی تر هستن.

 

چند مثال دیگر از تابع ها :

مثال :

تابعی بنویسید که یک خط 40 تایی ازعلامت ’*‘ را چاپ نماید سپس با استفاده از آن برنامـه اي بنویسید که ابتدا پیام Hello و سپس خط جداکننده فوق را بصورت زیر چاپ نماید.

Hello

*********….

 

مثال :

مثال قبل را طوري تغییر دهید که تابع “کاراکتر جداکننده” و “تعداد آن” را به عنوان ورودي دریافت کند.

 

چون در این مطلب فقط در نظر داشتیم تابع در زبان C توضیح داده بشه درباره ی کدها و ساختارشون توضیحات اضافی داده نشد. اما اگر مفهوم کدهارو و الگورتیمشون برای کسی جای ایهام داشت در کامنت ها مطرح کنید 🙂

حمیدرضا مودت

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

مطالب مرتبط