• · مقدمه

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

هربار که ما تمامی کدهایمان را میان دو براکت پشت‌سرهم بنویسیم، کدها ناخواناتر خواهند شد و حتی برنامه‌نویس هم درآینده متوجه نخواهد شد که هر قسمت در حال انجام چه کاری است. در چنین حالتی، ما از چیزی استفاده خواهیم کرد به نام متد (Method).

  • ·  معرفی متد (Method)

یک متد، یک بخشی از کد است که یک کار خاصی را انجام می‌دهد. ماشین‌حسابی را که پیش‌تر نوشته‌ایم را به یاد دارید؟ در آن برنامه ما می‌توانستیم که بخشی از کدی را در یک متد بنویسیم که کار جمع انجام دهد؛ بخش دیگری را در متد دیگری می‌نوشتیم که متد تفریق را انجام دهد؛ و به همین ترتیب برای ضرب و تقسیم. در نهایت، هر کجا که به انجام عملیات فوق نیازی پیدا کردیم، کافیست که متد را صدا بزنیم!

پیش از آنکه کارمان را با متد آغاز کنیم، به این نکته توجه داشته باشید که متد در زبان‌های دیگر همانند C++، با نام تابع (Function) شناخته می‌شود؛ اما مایکروسافت در زبان سی‌شارپ خود، آن را به‌نام متد (Method) به دلایل خاص خودش تغییر نام داده است.

برای شروع کار با متدها، ما یک برنامه ساده‌ای را استارت خواهیم زد؛ بدین نحو که دو شماره را از کاربر بوسیله text box می‌خواند. ما چهار button نیز خواهیم داشت که عملیات اصلی ریاضی (جمع، تفریق، ضرب و تقسیم) را انجام می‌دهد. اما این بار این عملیات را با استفاده از متدها انجام خواهیم داد.

پروژه‌ی جدیدی را در Visual Studio آغاز کنید و فرم خود را به شکل زیر طراحی کنید:

1_simpleForm

هنگامی که Text Box و Button ها را اضافه کردید، لازم نیست که مشخصه Name آن‌ها را تغییر دهید؛ همان‌هایی که هستند رها کنید (button1، button2، …(

بر روی button با نام Add Up دوبار کلیک کنید تا پنجره کدنویسی برای شما باز شود. نشانگر جایی که باید تایپ کنید مابین دو براکت مربوط به button با نام Add Up است. ما کاری به داخل براکت نخواهیم داشت؛ لذا این نشانگر را به براکت بسته انتقال دهید و پس از وارد خط جدید شوید و کد زیر را بنویسید:

void AddUp()

{

            MessageBox.Show(“Add Up Here”);

            return;

}

کد شما به شکل زیر درخواهد آمد:

2_methodAddUp

متدها می‌توانند مقداری را برگردانند (اصطلاحاً مقداری را return کنند)؛ مثلاً جواب جمع دو عدد، اما هیچ لزومی ندارند که حتماً مقداری را برگردانند. متدی که ما نوشتیم، یک MessageBox را نشان می‌دهد که تنها زمانی اجرا می‌شود که ما آن را صدا بزنیم.

وقتی که شما از متد خود می‌خواهید که هیچ مقداری را برنگرداند (مثل متد ما)، کافیست قبل از نام متد، کلمه کلیدی Void را قرار دهید. بعد از یک فاصله (Space)، نام تابع را می‌نویسید و پس از دو پرانتز باز و بسته، دو براکت باز و بسته قرار می‌دهید و کدهای مورد نظر خودتان را مابین آن می‌نویسید. انتخاب نام متد نیز همانند انتخاب نام متغیر کاملاً دل‌به‌خواه است و می‌تواند هر نامی باشد. مثلاً ما در اینجا نام متد خود را AddUp انتخاب کردیم.

در انتهای متد خود، قبل از آنکه براکت بسته شود، کلمه‌ی کلیدی‌ای با نام Return نوشته‌ایم و در انتهای آن یک Semicolon قرار داده‌ایم. وقتی که ما متد خود را به شکل void تعریف کرده‌ایم، لزومی بر قرار دادن کلمه کلیدی return نیست، چونکه شما نمی‌خواهید مقداری را return کنید (برگردانید.) شما فقط این تابع را نوشتید که کار خاصی را انجام دهد و نیازی به مقداری ندارید. ما تنها این کلمه کلیدی return را قرار داده‌ایم چونکه یک استاندارد در هنگام نوشتن یک متد است.

هنگامی که C# کلمه return را در متدی ببینید (به آن برسد،) از متد خارج می‌شود و ادامه کدهای موجود در بخش اصلی را انجام می‌دهد.

متد AddUp که ما نوشتیم، فعلاً هیچ کاری را نمی‌کنید، چونکه آن را صدا نزدیم. ما می‌خواهیم که این متد کار خود را زمانی آغاز کند، وقتی که ما بر روی button با نام Add Up کلیک کرده‌ایم. پس برای صدا زدن یک متد، اینگونه می‌نویسیم:

AddUp();

پس برای صدا زدن این متد در هنگام کلیک بر روی Button با نام AddUp، کد شما باید به شکل زیر باشد:

3_methodAddUp2

برنامه خود را یک بار اجرا کنید؛ خواهید دید که زمانی که بر روی Add Up کلیک می‌کنید، یک MessageBox برای شما ظاهر می‌شود.

حال می‌دانید که چه اتفاقی می‌افتد؟ شما وقتی که بر روی Add Up کلیک می‌کنید، سی‌شارپ به سراغ کدهای ما بین مربوط به button1 می‌رود. در آنجا با متدی با نام AddUp ملاقات می‌کند. وقتی که می‌بیند که AddUp از نوع متد است (چون پرانتز باز و بسته دارد)، متوجه می‌شود که این متد باید جایی در کدهای ما تعریف شده باشد؛ لذا شروع به جستجو می‌کند تا می‌بیند که AddUp در زیر تعریف شده است. درنتیجه وارد تعریف داخل متد می‌شود و کارهای خواسته شده را انجام می‌دهد و مجدداً به برنامه باز می‌گردد.

در بخش بعدی‌، با امکانات بیشتری از متدها آشنا خواهید شد.

جهت دریافت فایل PDF این بخش آموزشی، اینجا را کلیک کنید.

نظرات کاربران
اشتراک در
اطلاع از
32 نظرات
ایمان شهسواری
13 سال قبل

سلام ممنون بسیار عالی بود آقای موسوی . یک سوال آیا در آینده امکان آموزش ساخت یک برنامه همراه با دیتابیس هم آموزش میدید با نه ؟

فروش کارت شارژ رایتل | شارژ ایرانسل | شارژ همراه اول | شارژ تالیا
13 سال قبل

سلام دوست عزیز
با خرید کارت شارژ از سایت timeup.ir کودکان مبتلا به سرطان محک را حمایت کنید

Behzad
13 سال قبل

درود اقای Jeff Mosawy عزیز ، خدا قوت ، بسیار بسیار لطف می کنی اموزش زبان بسیارخوب #C برای ما کاربران قرار میدی،

باور نمی کنید به خاطر این اموزشتون رفتم نرم افزار VS.net رو خریدم از اموزشهایی که لطف می کنید قرار میدید استفاده کنم چون برنامه نویسی دوست دارم.

اقای موسوی محبت کنید ، لطف کنید اموزش تون ادامه بدید واقعا خیلی لذت می برم.

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

ممنون و موفق باشید.

محمد
13 سال قبل

سید سلام یه سوال داشتم سوالم اینه که ما بعد خواندن تمام آموزش های شما حدود همان 100 تا میتونیم یه برنامه نویس حرفه ای بشیم یعنی منظورم اینه که خودمون هر چه می خواهیم بنویسیم یا این که هنوز خیلی راه داره خواهشن جواب بده سید جان.

Reza
13 سال قبل

تشکر

110
13 سال قبل

سلام آقای موسوی، ممنون از آموزش خیلی خوبتون. شما لینک دانلود کتاب ‘C# 5 All-in-One for Dummies’ رو دارین؟ اصلا یک کتاب خیلی خوب انگلیسی C# 5 همراه با لینک دانلود معرفی کنین لطفا. (از پایه تا پیشرفته تو کتابش باشه)

110
پاسخ به  Jeff Mosawy
13 سال قبل

منظور شما کتب ترجمه شدست؟
کدوم کتاب O’Reily مد نظر شماست؟ لطفا یه نمونه بگین.

باران
13 سال قبل

سلام آقای موسوی
میشه یه منبع معرفی کنید که از سطح مبتدی شروع کرده باشه برای آموزش ورد و پاورپینت 2007

mostafa
13 سال قبل

سلام آقای موسوی
ببخشید می خواستم بدونم که بخش جدید آموزش سی شارپ رو کی توی سایت قرار می دید؟
باتشکر

Reza
13 سال قبل

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

110
پاسخ به  Reza
13 سال قبل

به نظر بنده آموزش هارو ازینجا پیگیری کنی خیلی بهتره: http://homeandlearn.co.uk/csharp/csharp.html

اگه بازم می خوای ادامه بدی کتاب C# 2010 All-in-One for Dummies به نظر من خوبه، تو سایت حاج آقا O’Reily بود.

اینکه گفتی موهای هممون سفید می شه واقعا اشتباه بود چون احتمالا بعضی ها موهاشونو رنگ می کنن.

110
پاسخ به  Jeff Mosawy
13 سال قبل

متاسفم، فکر نمی کردم اینجوری بشه…

لئوناردو
13 سال قبل

با سلام خدمت آقای سیدجعفرموسوی سوالی داشتم میخواستم اگه ممکنه من رو راهنمایی کنید.
راستش من برنامه نویس در سطح مقدماتی در ویژوال بیسیک ۶ هستم. بعد از اینکه نسخه ۲۰۱۲ این نرم افزار اومد اون رو تهیه کردم و سعی کردم دانسته های قبلیم رو با این نسخه جدید تطبیق بدم و این کار رو تا حدودی انجام دادم. اما وقتی کار تطبیقم تمام شد متوجه شدم که هیچ منبع فارسی برای آموزش این نسخه نیست و اگه سعی میکردم بازم کار تطبیق رو ادامه بدم, معلوم نبود چقدر موفق میشدم. حتی خوده سایت مایکروسافت هم آموزشهای چندان جالبی برای این نسخه (از نظر من) نگذاشته بود به همین دلیل تصمیم گرفتم که یک زبان رو که منابع آموزشیش فراون هست مثل سی شارپ و سی پلاس پلاس رو برای یادگرفتن شروع کنم. منتهی وقتی در مورد سی شارپ تحقیق کردم , دیدم یه عده از کاربرهای سی شارپ گفتن هر کاری با سی شارپ انجام بدی با ویژوال بیسیک هم میشه انجام داد. خوب اگه واقعا اینطور باشه دیگه یادگیری سی شارپ با پیچیدگیش چه فایده ای داره؟
در مورد سی پلاس پلاس هم تحقیق کردم به عنوان یک زبان سطح میانی شناختمش که توانایی های خیلی خوبی براش ذکر شد از جمله اینکه برخلاف سی شارپ و ویژوال بیسیک مستقیم به زبان ماشین تبدیل میشه پس سرعتش خیلی در اجرا بالاتره. اما خوب نبود یک IDE مناسب براش که با جزوه های آموزشی تطبیق داشته باشه کار رو سخت میکنه.البته زبانی هست که چون همه چیزش رو باید برنامه نویس بنویسه, اساس برنامه نویسی رو به ادم یاد میده.
حالا با توضیحاتی که دادم لطفا اگه اطلاعاتی دارید, خوشحال میشم من رو راهنمایی کنید.
(اینکه میگن سی شارپ توانایی هاش فرقی با ویژوال بیسیک نمیکنه اعصابم خورد میکنه و من رو از یادگرفتن سی شارپ منصرف میکنه!)

110
پاسخ به  لئوناردو
13 سال قبل

منم بیسیک 6 یاد دارم تا حدودی ولی C# رو دنبال کن به این دلایل:
– وب فارسی و برنامه نویس های ایرانی سی شارپ رو خیلی بهتر ساپورت می کنن
– همکاری با برنامه نویس های دیگه تو ایران با سی شارپ راحت تره چون اونام سی شارپ کار می کنن، مخصوصا حرفه ای هاش. (من خودم بیسیک کار خفن ندیدم راستش، البت شاید باشه)
– اگه سی شارپ یاد داشته باشی، سی، سی پلاس پلاس، جاوا و بعضی زبان های دیگه رو هم یاد گرفتی. (مثلا گیم میکر که می تونی باش دو سوت بازی بسازی (من خودم گیم میکر رو خفن کار کردم(کلا سی خیلی جاهای دیگه به کارت میاد(چه پرانتز تو پرانتزی شد))))
– جاوا و پلاس پلاس خودشون غولین واسه خودشون و یاد داشتن اونا وحشتناک خفنت می کنه (اندروید، iOS، vhdl،…)
– سی شارپ تیریپ بهتری داره واست، مثلا بگی سی شارپ بلدم خیلی خوفتری تا اینکه بگی بیسیک بلدم.
– اگه بیسیک یاد داری، یادگیری سی شارپ واقعا راحته.
– مهمترین دلیلش اینکه من جون کندم تا این جوابو بنویسم. (تایپ فارسیم در حد گشنگان سومالیه) (شوخی کردم قابل شما رو نداره)

اینم ای میلم: Sadodah@msn.com
ای میل msn دیده بودی تا حالا؟ واقعا عجیبه این دنیا.

احسان
13 سال قبل

سلام می شه لطفا اموزش را ادامه بدهید مرسی

Reza
13 سال قبل

من عبارت موی سفید، با کنایه از اینکه آموزش ها خیلی طولانی شده عرض کردم.البته شما خودت متوجه منظور من شدی حالا اینکه چرا اینو گفتی نمی دونم :
Jeff Mosawy ” اینکه گفتی موهای هممون سفید می شه واقعا اشتباه بود ”
به نظر خودت طولانی نشده ؟ این قول شما تو بخش نظرات نبود ؟ :
Jeff Mosawy ” اما انشاءالله طبق قولی که پیشتر دادم، همین که فصل امتحان بنده به پایان برسد، با سرعت بالاتری آموزش ها را قرار خواهم داد؛ هم به نفع کسانی که دوست دارند در طول یک هفته مطالب بیشتری یاد بگیرند می شود، هم شما که دوست دارید که سریع تر از موارد جزئی جدا شوید و مطالب اصلی را دنبال کنید ”
قبلا هفته 2 جلسه یا هفته ای 1 جلسه بود ( معنی سرعتم فهمیدیم )
البته همیشه حرف زدن ساده است، مهم عمل کردنه
البته من طلب کار نیستما ، این آموزش ها به طور رایگان برای همه قرار داده شده، اینو خودم میدونم ، ولی وقتی زیر قول خودت میزنی با ادبانه رفتار کردن اینه که بیایی اشتباهتو قبول کنی ، نه اینکه بیایی به خاطر اینکه خودتو آروم کنی تیکه بندازی بگی :
Jeff Mosawy ” احتمالا بعضی ها موهاشونو رنگ می کنن ”
بنده بهترین کتاب ها را پیدا کردم تا چند روز دیگه هم خریداری میکنم اشتباه من این بوده که وقت خودمو اثیر قول های شما کردم.
خدا نگهدار

110
پاسخ به  Reza
13 سال قبل

بازم عذر می خوام، نمی دونم چرا دوستمون به اسم توجه نکردن…

hamid
12 سال قبل

سلام آقای موسوی
واقعاً خسته نباشید
کاملاً مشخصه چقدر زمان گذاشتید که این آموزش رو رایگان برای ما گذاشتید
من چندین بار خواستم #c یاد بگیرم ، کتاب گرفتم ، سی دی آموزشی و … ، اما فکر نمیکنم هیچکدوم اندازه این آموزش شما تاثیرگذار بوده باشه ، احساس میکنم با این آموزش خیلی بیشتر یادگرفتم ،
واقعاً ازت ممنونم ،
من یک هفته است که دارم آموزشهای شما رو میخونم ، الان به این بخش رسیدم ، و دارم برات کامنت میزارم ، باز هم تشکر میکنم و خدا قوت میگم ، واقعاً چیز دیگه ای ازمون برنمیاد
تشکر تشکر