"درس دوم"
ساختارهای تصمیم
اهداف آموزشی :
بررسی ساختار if ساده و تودرتو
بررسی ساختار switch
انتظارات !
از شما دوستان عزیز انتظار دارم پس از مطالعه این درس بتونید یک مساله رو تحلیل کنید و با توجه به نیاز مساله، یکی از ساختارهای if یا switch رو بکار بگیرید.
کمی مقدمه :
در حالت عادی یک برنامه روال بالا به پایین را طی می کند. یعنی چی؟ یعنی اینکه در حالت عادی دستورات برنامه از اولین کد به آخرین کد به صورت خط به خط اجرا میشه. پس یعنی هر دستوری یک بار اجرا میشه. حالا یه سوال از شما می پرسم! اگر من تمایل داشته باشم که تحت شرایط خاصی، بخشی از کدها اجرا نشه باید چیکار می کنم؟! بالفرض من می خوام برنامه ای بنویسم که اگر اعداد ورودی زوج بودند اونها رو در 5 ضرب کنه و اگر اعداد فرد بودند اونها رو در 10 ضرب کنه. خب! به عنوان مثال عدد 7 رو به عنوان ورودی در نظر می گیریم. پس باید کاری کنیم که کدهای مربوط به اعداد زوج اجرا نشه!
ساختارهای تصمیم :
ساختار تصمیم if :
این ساختار ابتدا شرطی رو تست می کنه و در صورتی که شرط درست باشه، کدها اجرا میشه. دستور if در حالت کلی به دو صورت زیر هستش :
1)
if (شرط)
دستور1 ;
else
دستور2 ;
2)
if (شرط)
{
دستور1 ;
…
n دستور ;
}
else
{
دستور1 ;
…
n دستور ;
}
در روش اول، هنگامی که شرط دارای ارزش درستی باشه دستور 1 و در غیر این صورت دستور 2 اجرا میشه.
در روش دوم که در اصل تعمیمی از روش اول هست بجای یک دستور از چندین دستور استفاده شده. (به آکولادها توجه کنید!)
اینجا رو ببین! :
if (Z > Y)
max=Z;
else
max=Y;
در این مثال چنانچه Z بزرگتر از Y باشه، Z در max قرار می گیره وگرنه Y در متغیر max قرار می گیره.
پروژه محور یک :
برنامه ای که عددی رو میگیره و نشان میده که بر 4 بخش پذیز هست یا نه.
فایل UNIT2 رو از اینجا دانلود کنید و از حالت ZIP خارج کنید و دنبال فایل UNIT2_1.sln (که از نوع پروژه های .NET هست) بگردید و اجرا کنید. در ستون Solution Explorer (سمت راست تصویر) به روی form1.cs دوبار کلیک کنید. و پس از آن از منوی view (بالای پنجری) گزینه Code رو انتخاب کنید تا صفحه ی حاوی کدها نمایان بشه. (این توضیحات یادتون باشه چون از درسهای آینده فرض می کنم که شما این کارها رو بلدید!)
حال در میان کدها به دنبال //www.irspn.com بگردید و آن را حذف کنید و کدهای زیر را دقیقا به جای عبارت گفته شده بنویسید.
int num= Convert.ToInt32(textBox1.Text);
if (num % 4 == 0)
label2.Text=” YES “;
else
label2.Text=” NO “;
به کوچک و بزرگ بودن حروف توجه کنید. حال کلیدهای Ctrl+F5 رو بزنید و اجرای برنامه رو ببینید !
2-1 ساختار if تودرتو :
اگر برنامه نیاز به شرط های متعدد داشته باشه از if تودرتو یا else-if استفاده می کنیم. ساختار کلی :
if (شرط 1 )
دستور 1 ;
else if ( شرط 2 )
دستور 2 ;
…
else if ( n شرط )
n دستور;
else
دستور ;
در این ساختار اگر شرط اول درست باشه، دستور 1 اجرا میشه و کنترل اجرای برنامه از کل این ساختار خارج میشه (یعنی else-if های بعدی اجرا نمیشه). و اگر شرط 1 درست نباشه دستورات بعدی بررسی می شوند.
نکته کنکوری !!!!! :
در این ساختار می توان آخرین else را حذف کرد. چنانچه آخرین else حذف شود، در صورتی که هیچ شرطی درست نباشد، کنترل اجرای برنامه به دستور بعد از if انتقال می یابد و هیچکدام از دستورات 1 تا n اجرا نمیشوند.
پروژه محور دو :
برنامه ای که عددی رو می خواند و تععین علامت کند.
در فایلی که دانلود کردید UNIT2_2.sln را از پوشه UNIT2_2 باز کنید. قسمت کدها را نمایان کنید. عبارت //www.irspn.com رو پاک کنید و کدهای زیر را با آن جایگزین کنید و از برنامه اجرا بگیرید:
int num = Convert.Toint32(textBox1.text);
if (num>0)
label2.Text=” + “;
else if (num == 0)
label2.Text=” zero “;
else
label2.Text=” – “;
ساختار تصمیم switch :
به نظر من ساختار switch یه ساختار جالبه که بر اساس نیاز ما بخشی از کد رو اجرا می کنه. پیشنهاد می کنم که در تمام تصمیم گیری هایی که بیشتر از سه انتخاب وجود داره، از switch استفاده کنید.(از if هم میشه اما switch بهتره!)
ساختار :
switch (عبارت)
{
case مقدار1 :
دستورات 1 ;
break ;
case مقدار2 :
دستورات2 ;
break;
….
default
n دستورات ;
break;
}
در مرحله اول عبارت جلوی کلمه switch محاسبه میشه و بر اساس جواب بدسا اومده، یکی از Caseها اجرا میشه ودرصورتی که جواب بدست آمده مطابق با هیچ کدوم از case ها نباشه، عبارت بعد از default اجرا میشه. Default یک کلمه کلیدی و اختیاری هست ( می تونیم ازش استفاده نکنیم.).
پروژه محور سه :
برنامه ای که عددی بین 1 تا 7 رو می خواند و اسم روز هفته رو می نویسد.
فایل unit2_3.sln رو باز کنید. بجای عبارت //www.irspn.com کدهای زیر رو جایگزین کنید و اجرا کنید.
int n;
n = Convert.ToInt16(textBox1.Text);
switch (n)
{
case 1:
label2.Text = “shanbe”;
break;
case 2:
label2.Text = “1 shanbe”;
break;
case 3:
label2.Text = “2 shanbe”;
break;
case 4:
label2.Text = “3 shanbe”;
break;
case 5:
label2.Text = “4 shanbe”;
break;
case 6:
label2.Text = “5 shanbe”;
break;
case 7:
label2.Text = “jome”;
break;
default:
label2.Text = “Please enter a nuuber 1 to 7″;
break;
}
خب !
خسته نباشید !
درس سوم از سری آموزش های سی شارپ به زبان ساده، در تاریخ 15 خرداد 91 روی IRSPN.com قرار میگیرد.
درصورتی که جایی از متن اشتباه بود یا مشکلی برای شما پیش اومد، در قسمت نظرات مطرح کنید.
منبع : www.irspn.com (جامعه برنامه نویسی دانشجویان)