سلام دوستای برنامه‌نویس عزیز! توی این آموزش می‌خوایم با «توابع تعریف‌شده توسط کاربر» در زبان 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

اگه تابع قبل از main() تعریف شده باشه، نیازی به نمونه اولیه نیست.

فراخوانی تابع

فراخوانی یعنی گفتن به برنامه: «برو اون تابع رو اجرا کن!» ساختارش اینطوریه:

addNumbers(n1, n2);

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

تعریف تابع

این بخش شامل بدنهٔ کده. مثل:

int addNumbers(int a, int b) {
    int result;
    result = a + b;
    return result;
}

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

نوع برگشتی نام تابع(پارامتر۱, پارامتر۲, ...){
    // بدنه تابع
}

ارسال آرگومان به تابع

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

addNumbers(n1, n2);

پارامترهای a و b توی تعریف تابع، همون آرگومان‌های ورودی هستن. بهشون می‌گن "پارامترهای رسمی".

🧠 یادت باشه: نوع آرگومان‌های ورودی باید با نوع پارامترها یکی باشه. مثلاً اگه n1 عدد اعشاری باشه، a هم باید float یا double باشه.

Image

دستور return

با دستور return، تابع تموم می‌شه و مقدار مشخصی رو برمی‌گردونه. مثلاً:

return result;

یا حتی می‌تونی بنویسی:

return a + b;

نوع مقدار برگشتی باید با نوع برگشتی تابع (توی اعلان و تعریف) یکی باشه.

امیدواریم این آموزش براتون مفید بوده باشه! این مقاله توسط سایت علمی رایشمند برای شما آماده شده است.