آموزش توابع در سی شارپ، انواع و نکات کاربردی

رتبه: 0 ار 0 رای sssss
سی شارپ

یک تابع که به شما اجازه می دهد که یک قسمت از کد را به صورت یک بسته درآورده و آن را از بخش های دیگر کد خودتان فراخوانی کنید. شما ممکن است در شرایطی قرار بگیرید که بخواهید یک بخش از کد را از چندین موقعیت تکرار کنید؛ و در این بخش ها است که توابع وارد می شوند.

استفاده از تابع باعث می‌شود برنامه:

  • منظم‌تر شود.
  • کدهای تکراری کمتر شوند.
  • خطایابی ساده‌تر شود.
  • بخش‌های مختلف برنامه راحت‌تر مدیریت شوند.

ساختار ساده یک تابع

static void SayHello()
{
    Console.WriteLine("سلام");
}

در این مثال:

  • SayHello نام تابع است.
  • void یعنی تابع چیزی برنمی‌گرداند.
  • دستورات داخل { } بدنه تابع هستند.

برای اجرای تابع می‌نویسیم:

SayHello();

خروجی:

سلام

تابع دارای ورودی

می‌توان اطلاعاتی را به تابع ارسال کرد.

static void SayHello(string name)
{
    Console.WriteLine("سلام " + name);
}

استفاده:

SayHello("علی");

خروجی:

سلام علی

در اینجا name یک پارامتر (Parameter / پارامتر ورودی) است.

تابع با چند پارامتر

یک تابع می‌تواند چند ورودی داشته باشد.

static void ShowInfo(string name, int age)
{
    Console.WriteLine(name);
    Console.WriteLine(age);
}

فراخوانی:

ShowInfo("رضا", 25);

تابعی که مقدار برمی‌گرداند

بعضی توابع نتیجه محاسبه را به قسمت دیگری از برنامه برمی‌گردانند.

مثلاً:

static int Sum(int a, int b)
{
    return a + b;
}

استفاده:

int result = Sum(10, 20);

Console.WriteLine(result);

خروجی:

30

در اینجا:

  • int یعنی تابع یک عدد صحیح برمی‌گرداند.
  • return برای برگرداندن نتیجه استفاده می‌شود.

تفاوت void و return

اگر تابع فقط کاری انجام دهد و نیازی به برگرداندن نتیجه نباشد:

static void ShowMessage()
{
    Console.WriteLine("خوش آمدید");
}

از void استفاده می‌کنیم.

اما اگر تابع باید نتیجه تولید کند:

static int Multiply(int a, int b)
{
    return a * b;
}

نوع نتیجه باید مشخص شود.

مثال محاسبه مساحت مستطیل

static double RectangleArea(double length, double width)
{
    return length * width;
}

استفاده:

double area = RectangleArea(10, 5);

Console.WriteLine(area);

خروجی:

50

فراخوانی تابع چیست؟

نوشتن تابع به‌تنهایی باعث اجرای آن نمی‌شود.

مثلاً ابتدا تابع را تعریف می‌کنیم:

static void Welcome()
{
    Console.WriteLine("خوش آمدید");
}

سپس آن را فراخوانی (Call / اجرا) می‌کنیم:

Welcome();

متغیر محلی در تابع

متغیری که داخل تابع تعریف شود معمولاً فقط در همان تابع قابل استفاده است.

static void Test()
{
    int number = 10;

    Console.WriteLine(number);
}

متغیر number یک متغیر محلی است.

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

پارامتر اختیاری

در سی‌شارپ می‌توان برای بعضی پارامترها مقدار پیش‌فرض تعیین کرد.

static void Welcome(string name = "کاربر")
{
    Console.WriteLine("سلام " + name);
}

اگر بنویسیم:

Welcome();

خروجی:

سلام کاربر

اما اگر بنویسیم:

Welcome("محمد");

خروجی:

سلام محمد

تابع با نوع bool

گاهی تابع فقط مشخص می‌کند یک شرط درست است یا خیر.

static bool IsAdult(int age)
{
    return age >= 18;
}

استفاده:

bool result = IsAdult(20);

Console.WriteLine(result);

خروجی:

True

بازنویسی تابع

در سی‌شارپ می‌توان چند تابع با یک نام ولی ورودی‌های متفاوت داشت. به این قابلیت Overloading یا سربارگذاری متد گفته می‌شود.

static int Sum(int a, int b)
{
    return a + b;
}

static int Sum(int a, int b, int c)
{
    return a + b + c;
}

اکنون هر دو حالت قابل استفاده‌اند:

Sum(10, 20);

Sum(10, 20, 30);

چرا از تابع استفاده می‌کنیم؟

فرض کنید لازم است چند بار مالیات یک مبلغ را محاسبه کنیم.

به‌جای نوشتن فرمول در چند جای برنامه، یک تابع می‌سازیم:

static double CalculateTax(double price)
{
    return price * 0.1;
}

سپس هر جا لازم باشد:

double tax1 = CalculateTax(1000);
double tax2 = CalculateTax(2500);

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

یک مثال کامل

static int Sum(int a, int b)
{
    return a + b;
}

int result = Sum(15, 25);

Console.WriteLine("نتیجه:");
Console.WriteLine(result);

خروجی:

نتیجه:
40

نکات مهم برای نام‌گذاری توابع

نام تابع بهتر است مشخص کند چه کاری انجام می‌دهد.

نام‌های مناسب:

CalculatePrice
ShowMessage
GetUserName
CheckPassword
CalculateArea

نام‌های ضعیف:

x
test1
abc
method2

نام واضح باعث خواناتر شدن برنامه می‌شود.

خلاصه

ساختار کلی یک تابع در سی‌شارپ:

نوع_خروجی نام_تابع(پارامترها)
{
    دستورات

    return نتیجه;
}

مثلاً:

static int Multiply(int a, int b)
{
    return a * b;
}

مهم‌ترین مفاهیمی که باید درباره توابع یاد بگیرید عبارت‌اند از:

تعریف تابع → فراخوانی تابع → پارامتر → مقدار بازگشتی → return → void → متغیر محلی → سربارگذاری

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

توضیح به زبان ساده تر

در سی شارپ، توابع را اساساً به صورت زیر بیان می کنند.

()
{

}

برای فراخوانی یک تابع؛ شما به سادگی نام آن را نوشته، یک پرانتز باز گذاشته و سپس اگر پارامتری وجود داشته باشد؛ آنها را نوشته و سپس پارانتز را ببندید؛ که به صورت زیر نوشته می شود:

DoStuff();

در این قسمت مثالی از تابع ()DoStuff را مشاهده می کنید:

public void DoStuff()
{
Console.WriteLine(“I’m doing something…”);
}

بخش اول، یعنی public، آشکار می باشد و اختیاری است. اگر چیزی را تعریف نکنید؛ سپس تابع خصوصی خواهد بود. در مورد این موضوع در فصل های بعدی بیشتر بحث می کنیم. سپس نوع داده ای که در نتیجه حاصل می شود، باید مطرح شود. این نوع داده می تواند هر نوع داده ی مجاز در سی شارپ باشد؛ و همان طور که می بینید ما در این قسمت از void استفاده کرده ایم. یک void به این معنا است که این تابع قطعاً هیچ نتیجه ای را به دست نخواهد داد. همچنین، این تابع پارامتری را نیز اتخاذ نمی کند؛ زیرا مشاهده می کنید که پرانتزهای مقابل تابع خالی هستند، در واقع کدی که نوشته شده است تا حدودی خسته کننده می باشد. پس بیایید آن را تغییر دهیم.

public int AddNumbers(int number1, int number2)
{
int result = number1 + number2;
return result;
}

همان طور که مشاهده می کنید؛ ما تقریباً همه چیز را تغییر داده ایم. این تابع اکنون یک عدد صحیح را برمی گرداند، دو پارامتر (هر دو عدد صحیح) را می گیرد و به جای ایجاد چیزی در خروجی، یک محاسبه را انجام می دهد و سپس نتیجه را برمی گرداند. این بدان معنی است که به جای این که بخواهیم هر بار کد محاسبه را بنویسیم، می توانیم به راحتی با فراخوانی این تابع، دو عدد را از مکانهای مختلف در کد خود اضافه کنیم. در حالی که این مثال کوچک، وقت و تلاش زیادی را برای ما، ذخیره سازی نمی کند؛ بهتر است باور داشته باشید که هر چقدر بیشتر توابع را بیاموزید می توانید بیشتر از سی شارپ استفاده کنید. این تابع به صورت زیر بیان می شود:

int result = AddNumbers(10, 5);
Console.WriteLine(result);

همانطور که گفته شد ، این تابع در واقع چیزی را بر می گرداند و باید این کار را انجام دهد زیرا ما به C شارپ گفتیم که قرار است این کار را انجام دهد. زمانی که هر چیزی به جز void به عنوان داده بازگشتی بیان شود؛ ما برنامه خود را در واقع ملزم می کنیم تا حتماً چیزی را بازگرداند. شما می توانید خطی که نتیجه را باز می گرداند از مثال بالا حذف کنید و حاصل کامپایلر را مشاهده کنید:

‘AddNumbers(int, int)’: not all code paths return a value

کامپایلر به ما یادآوری می کند که ما تابعی داریم که چیزی را بر نمی گرداند. البته جای حذف کردن آن خط، می توانید چیزی شبیه به این کدها را امتحان کنید:

public int AddNumbers(int number1, int number2)
{
int result = number1 + number2;
if(result > 10)
{
return result;
}
}

شما همان خطا را مشاهده خواهید کرد؛ اما چرا؟ زیرا هیچ ضمانتی وجود ندارد که عبارت if ما درست ارزیابی کند و خطی که باید نتیجه را ایجاد نماید؛ شروع به اجرا کند. شما می توانید با لحاظ کردن یک عبارت دوم بازگردانی نتیجه در انتها، این مشکل را برطرف کنید.

public int AddNumbers(int number1, int number2)
{
int result = number1 + number2;
if(result > 10)
{
return result;
}
return 0;
}

به این ترتیب مشکلی که برای خودمان ایجاد کرده ایم؛ برطرف می شود؛ و به این ترتیب به شما نشان دادیم که می توانید بیشتر از یک عبارت برای حاصل کردن نتیجه داشته باشید. به محض این که به یک عبارت بازگرداندن نتیجه برسیم؛ عملکرد باقی مانده و دیگر کدی که در آن وجود دارد؛ اجرا نمی شود. در این مورد؛ تا زمانی که نتیجه بزرگتر از ۱۰ باشد؛ نتیجه ی “۰” هرگز به دست نمی آید.

profile name
سریع آسان

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

مطالب پیشنهادی برای شما

محصولات مرتبط

مشاهده همه
آموزش گیت و گیت هاب از صفر تا صد
آموزش گیت و گیت هاب از صفر تا صد
قیمت محصول 16٪ 737,000 تومان 880,000
ادامه مطلب

دیدگاهتان را بنویسید

1 2 3 4 5

0 نظر درباره «آموزش توابع در سی شارپ، انواع و نکات کاربردی»

    هنوز نظری برای این بخش ثبت نشده است
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید