آموزش سی شارپ C# قسمت هفتم

محمد احمدی 1395/1/12 3667

به نام خدا . با عرض سلام و وقت بخیر

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

تو جلسات قبل ما دستور شرطی if رو توضیح دادیم و حالت های مختلفش رو هم گفتیم.

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

توی سی شارپ و خیلی دیگه از زبان های برنامه نویسی , تنها دستور if وجود نداره و دستور دیگه ای هم به کمک ما میاد و خیلی جاها هم مورد استفاده قرار میگیره !

دستور شرطی switch هم یکی دیگه از دستورات پرکاربرد توی زبان های برنامه نویسی از جمله سی شارپ هست

اگه خاطرتون باشه توی دستور if ما یک یا چند شرط رو بررسی میکردیم و در صورت صحیح یا غلط بودن , یک سری دستورات رو اجرا میکنیم !

به زبان ساده if برای بررسی چند شرط و متغیر مختلف استفاده زیادی داره !

یک وقتی هم هست که ما میخوایم تنها یک متغیر رو بررسی کنیم و در صورت برابر بودن متغیر با هر مقداری , یک سری دستورات خاص اجرا بشه !

مثلا قراره توی یک پروژه حقوق و تحصیلات اشخاص رو دریافت و بررسی میکنیم و باید بسته به سطح تحصیلاتشون حقوقشون رو افزایش بدیم

خب اگه بخوایم این قسمت از برنامه رو با if بنویسیم یک چیزی شبیه به قطعه کد زیر میشه :

if (level == "karDaani")

 salary += (salary / 100 * 3);

else if (level == "karshenasi")

 salary += (salary / 100 * 6);

else if (level == "arshad")

 salary += (salary / 100 * 10);

else if (level == "phd")

 salary += (salary / 100 * 15);

خب اگه دقت کنید میبینید که ما 4 تا شرط داریم و 4 بار متغیر level رو بررسی کردیم . خب این یک مقدار سرعت برنامه رو پایین میاره و خیلی هم ایده آل نیست و بر فرض مثال سطح علمی شخص مورد نظر phd ( که آخرین شرط هست ) باشه . برنامه باید چهار تا شرط رو بررسی کنه تا به شرط درست برسه !

اینجا دستور switch به کار میاد .

درواقع دستور سویچ کارش اینه که تنها یک متغیر یا یک مقدار رو دریافت میکنه , و با مقادیر دیگه ای که ما میخوایم بررسی میکنه و در صورت صحیح بودن هر کدوم , دستوراتش رو اجرا میکنه .

ساختار دستور سویچ :

switch (level)

{

 case "case1":

 ;

 ;

 ;

 break;

 case 2:

 ;

 ;

 ;

 break;

 case true:

 ;

 ;

 ;

 break;

 default:

 ;

 ;

 ;

 break;

}

دقت کنید که روبروی هر کیس و بعد از نوشتن مقدار باید علامت دو نقطه : قرار بدیم .

نکته : هنگامی که دستورات هر کیس تموم شد باید از دستور break استفاده کنیم ( وگرنه اتفاقاتی میوفته که جلوتر توضیح میدم ) .

اگه یادتون باشه دستور شرطی if یک بخشی به اسم else داشت و وقتی که دستور غلط بود , کدهای بخش else اجرا میشدن . توی سویچ دستور default این کار رو انجام میده .

همونطور که توی مثال می بینید بعد از default هم باید break گذاشته بشه .

حالا میخوایم همون برنامه ی حقوق بالا رو با دستور سوییچ بنویسیم :

switch (level)

{


 case "kardaani":

 salary += (salary / 100 * 3);

 break;


 case "karshenasi":

 salary += (salary / 100 * 3);

 break;

 case "arshad":

 salary += (salary / 100 * 3);

 break;

 case "phd":

 salary += (salary / 100 * 3);

 break;

{

به زبان ساده ( و بطور معمول ) وقتی که میخوایم حالت های مختلف یک متغیر رو بررسی کنیم از سوییچ استفاده میکنیم .

یک مثال دیگه میزنم : فرض کنیم میخوایم کاراکتر های ورودی کاربر رو بررسی و کنترل کنیم . مثلا میخوایم یک کیبورد موسیقی بسازیم و به ازای ورود هر کلید , یک نوت خاص پخش بشه ( این صرفا یک مثال هست ) .

از اونجایی که بین کاراکتر های کوچک و بزرگ انگلیسی تفاوت هست ( مثلا کاراکتر “k” با کاراکتر “K” تفاوت داره ) , توی مثال کیبورد موسیقی باید همون دستوری که برای کیس k مینویسیم رو برای کیس K هم کپی کنیم که این ایده آل نیست و خیلی کد نویسی رو طولانی میکنه و همچنین خیلی دستورات تکراری به وجود میاد !!

برای حل این مشکل میتونیم برای چند کیس مختلف , یک یا چند دستور بنویسیم و از تکرار جلوگیری کنیم .

اینطوری هرکدوم از کیس ها که درست بود , اون شرط ها بصورت کامل اجرا میشن !

مثال :

char key = 'd';

switch (key)

{

 case 'a':

 case 'A':

 //My Code :)

 break;


 case 'b':

 case 'B':

 //My Code !!

 break;

 case 'c': case 'C':

break;

 case 'd':

 case 'D':

 default:

 //My code ^__^

 break;

}

توی قطعه کد بالا اگه کاراکتر a یا A باشه یک سری دستورات و اگه b یا B باشه یک سری دستورات دیگه , و در نهایت اگه c یا C و یا هیچ کدوم از موارد دیگه باشه یک سری دستورات دیگه اجرا میشه !!

خب فکر کنم دستور سویچ دیگه جا افتاده باشه .

حلقه ها :

توی برنامه نویسی یک وقتایی ما بشدت نیاز به تکرار یک سری کد داریم . مثلا میخوایم مثال بالا رو برای 1000 نفر انجام بدیم و حقوق 1000 نفر رو بررسی کنیم .

اولین راهی که ممکنه به ذهن برسه اینه که این کد ها رو 1000 بار کپی کنیم .

خب این راه حل به هیچ عنوان مناسب نیست و شک دارم در طول تاریخ برنامه نویسی کسی از این راه استفاده کرده باشه !!

اینجا حلقه ها به کمک برنامه نویسان اومدن !

وظیفه حلقه ها اینه که یک سری کد رو به تعداد دفعات مشخص و یا نا مشخص تکرار کنند .

دو نوع حلقه وجود داره :

1. While حلقه بینهایت یا با تعداد دفعات تکرار نامشخص

2. For حلقه با تعداد دفعات تکرار مشخص

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

حلقه نامحدود شبیه به دستور شرطی if یک مقدار شرطی رو دریافت میکنه و تا زمانی که اون شرط درست باشه , دستورات درون حلقه اجرا میشه !

ساختار حلقه while :

bool Condition = true;

while (Condition)

{

 ;

 ;

 ;

 ;

 ;

 ;

}

این حلقه تا زمانی که مقدار Condition برابر true باشه اجرا میشه ( و احتمالا اگه این دستور رو اجرا کنید برنامه و حتی شاید سیستمون هنگ میکنه ! ) .

برای حل این مشکل توی روند برنامه باید حلقه رو بررسی و کنترل کنیم .

برای مثال میخوای اعداد یک تا 10 رو به کاربر نشون بدیم :

int i = 1;

while (i<=10)

{

 MessageBox.Show(“The Number is “ + i.ToString(),”we are PersianDeveloper “);

 i++;

}

دادیم .

اگه i++ رو ننویسیم دوتا مشکل پیش میاد : اول اینکه حلقه نامحدود میشه و به تعداد بینهایت دستور رو اجرا میکنه ! و دوم اینکه هر بار پیام تکراری "The Number is 1" رو نمایش میده !!

دلیل مشکل اول اینکه شرط حلقه هیچ وقت false نمیشه ( چون i همیشه مقدار 1 رو داره و 1 هم کوچکترمساوی 10 هست ) و دلیل مشکل دوم اینه که i هیچ وقت تغییر نمیکنه و همیشه 1 میمونه پس همون 1 چاپ میشه !

خب این یک نوع کنترل کردن حلقه هست !

برای حلقه نامحدود مثال های خیلی بهتری هست که بدلایلی این جلسه توضیح ندادم و جلسه بعد کاملتر میگم !

امیدوارم این جلسه براتون مفید واقع بشه !

آیکن دانلود دانلود PDF قسمت هفتم آموزش سی شارپ C#

کانال تلگرام

قسمت بعدی قسمت قبلی