آخرین های برنامه نویسی

آموزش ویژوال بیسیک، فوکوس

آموزش ویژوال بیسیک، فوکوس

فوکوس یعنی توانایی دریافت ورودی کاربر با ماوس و کیبورد است. وقتی یک آبجکت دارای فوکوس است یعنی آن می تواند...

آموزش #C ، تابع

مجموعه : آموزش #C

c sharp

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

<visibility> <return type> <name>(<parameters>)

{

<function code>

}

شرح سینتکس : منظور از visibility اینه که از چه جاهایی این تابع دیده شود. مثلا کلمه public وقتی به جای این عبارت بیاید ، یعنی عمومی. بعد آن return type را داریم. منظور اینه که تابع چه چیزی را برمیگرداند. مثلا ممکن است یک عدد صحیح برگرداند یا چیزی برنگرداند. حالا بعدا توضیح می دهیم که این برگشتی ها چیه. بعد name یعنی نام تابع را داریم. و بعد parameters یعنی پارامترهایی که به تابع ارسال می شود. بعد هم در سینتکس بالا دو آکلاد می بینید که میان این دو آکلاد کدها قرار می گیرد.
مثال برای فهم معنی تابع: فرض کنید تابعی باشد که دو ورودی بگیرد و حاصل جمع را به عنوان برگشتی بفرستد. یعنی این تابع برای ما کاری انجام می دهد. روی ورودی ها کار می کند و خروجی می دهد. البته بعضی تابع ها ورودی ندارند و بعضی ها خروجی ندارند و بعضی هیچ کدام را ندارند. فرض کنید تابعی باشد که کارش این باشه که پیامی را چاپ کند. دیگه ورودی نداره این تابع. شاید بگید چرا اصلا از چنین تابعی استفاده کنیم؟ فرض کنید 10 جای برنامه شما ، چاپ انجام میشه و همه تابع چاپ را صدا می زنند. اگر شما بخواهید روش چاپ را تغییر دهید و تابع چاپ نداشته باشید ، باید بروید 10 جای برنامه را عوض کنید. ولی اگر تابع چاپ داشته باشید فقط یک جای برنامه شما این وظیفه خاص را به عهده دارد. کلا هر تابع یک نقش را در برنامه به عهده می گیرد.
.
طریقه فراخوانی تابع:
برای فراخوانی تابع ، براحتی اسمش را نوشته ، و پرانتز باز و بسته. و اگر پارامتر داشته باشیم در میان این پرانتزها. آخر خط هم که سمی کلون. این طوری:

DoStuff();

من روی فرم یک لیست باکس و یک باتون گذاشتم.
به کد زیر نگاه کنید:

private void button1_Click(object sender, EventArgs e)

{

DoStuff();

}

public void DoStuff()

{

listBox1.Items.Add("I'm doing something...");

}

قسمت اول ، رویداد کلیک یک باتون است که تابعی که خودم ساختم را درونش صدا زده.
در قسمت دوم هم تابع ساخته شده توسط خودمان است.
نوع آن public است یعنی عمومی.نوشتن این کلمه اختیاری است. ولی اگر ننویسیم تابع از نوع private خواهد شد.

بعدا خواهید فهمید تابع عمومی با تابع private چیه. همان رویداد کلیک باتون را نگاه کنید. می بینید که private است. در تابعی که ساختیم بعد کلمه public کلمه void را داریم.یعنی تابع برگشتی ندارد.هر نوع type مجاز در سی شارپ را می توانید استفاده کنید. بعد اسم تابع را داریم و پرانتز باز و بسته. داخل پرانتزها هیچی نیست. یعنی تابع ورودی نداره. بعد هم که آکلادها را داریم که درونش یک خط کد است. کار این یک خط کد اینه که یک متن به لیست باکس اضافه می کند.

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

.
function
به تابع زیر نگاه کنید:

public int AddNumbers(int number1, int number2)

{

int result = number1 + number2;

return result;

}

دو ورودی دارد. نامبر 1 و نامبر 2 . درون تابع این دو ورودی با هم جمع شده و در یک متغیر محلی(متغیری که فقط داخل این تابع تعریف شده است) ریخته می شود و با کلمه return این مقدار بازگردانده می شود.
برای استفاده از این تابع یک باتون دیگر روی فرم من اضافه می کنم و از درون آن این تابع را صدا می زنم:

private void button2_Click(object sender, EventArgs e)

{

int sum = AddNumbers(2, 5);

listBox1.Items.Add(sum );

}

public int AddNumbers(int number1, int number2)

{

int result = number1 + number2;

return result;

}

می بیند که چطور ورودی ها به تابع ارسال شده. 2 و 5 که داخل پرانتز است و با ویرگول از هم جدا شده اند. همچنین خروجی تابع که از نوع int است در متغیری به نام sum ریخته شده و در لیست باکس به نمایش گداشته شده.

برای تمرین خطی که return دارد را بردارید.
خواهید دید که خطا دریافت خواهید کرد. چون نوع تابع با کلمه int از نوعی تعریف شده که باید مقداری صحیح برگرداند.
اگر تابع را به شکل زیر درآورید:

public int AddNumbers(int number1, int number2)

{

int result = number1 + number2;

if(result > 10)

{

return result;

}

}

باز هم خطا دریافت می کنید. چون تضمینی برای برگشت دادن تابع نیست.
ولی اگر این طوری بنویسید:

public int AddNumbers(int number1, int number2)

{

int result = number1 + number2;

if(result > 10)

{

return result;

}

return 0;

}

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

.
نکته مهم:هر وقت ، اجرا به return برسد تابع برگشت می کند. و دیگه بقیه کدهای تابع اجرا نمیشه. مثلا اگر در تابع فوق  result  بیشتر از 10 باشد result برگردانده شده ،و دیگر به return 0 نخواهیم رسید.

.
برای مشاهده فهرست مقالات و توضیحات راهنما به این تاپیک مراجعه کنید:
آموزش #C – سی شارپ

کاری از: ali_mohammad6
منبع:

http://csharp.net-tutorials.com/basics/functions/

فرستادن دیدگاه


عضویت در خبرنامه
  • 1.در صورتیکه تمایل دارید مطالب سایت به ایمیل شما ارسال شود لطفا ایمیل خود را در کادر زیر بنویسید.
  • 2.از ایمیل شما به هیچ عنوان استفاده تبلیغاتی نخواهد شد.
  • 3.هر شب فقط یک ایمیل برای شما ارسال میشود که هیچ گونه تبلیغاتی نداشته و فقط لینک مطالب جدید داخل آن خواهد بود.
  • 5.بعد از ثبت ایمیل کد فعال سازی به ایمیل شما ارسال میشود حتما روی لینک داخل ایمیل کلیک کنید تا ایمیل شما تایید شود
  • 6.در صورتی که ایمیل خود را تایید نکنید مطالب سایت برای شما ارسال نخواهد شد
  • 4.هر زمان که بخواهید فقط با یک کلیک عضویت شما حذف خواهد شد.


آخریـــن هـــای گـــالـــری عـــکـــس