ساختار های تصمیم گیری if , switch-case

در بسياري از موارد هنگام برنامه نويسي لازم است تا از عبارات شرطي استفاده كنيم. براي انجام اينكار دو روش عمده وجود دارد. استفاده از if و يا switch . از if بيشتر براي مقايسه هايي تكي و كوچك استفاده مي شود و حاصل مقايسه ي آن يا true است و يا false . از عبارت switch هنگامي استفاده مي شود كه مقايسه هاي متعددي بايد در مورد يك مقدار صورت گيرد.


هر دو عبارت
if و switch توسط عبارتهايي Boolean كنترل مي شوند ( true و يا false ) . در هنگام استفاده از if اگر عبارت Boolean حاصل اش true باشد اولين قسمت شرط اجرا مي شود و سپس برنامه از انتهاي if ادامه پيدا مي كند. اگر حاصل عبارت Boolean مساوي false باشد كنترل برنامه به قسمت else منتقل مي شود.



مثال :



يك پروژه ي جديد
console باز كنيد و نام آنرا ex04 بگذاريد. سپس كد زير را در آن وارد و جرا كنيد :

 

using System;

namespace ex04
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("Enter 1 character to be evaluated");

char cUserInput = (char) Console.Read();

if ( char.IsDigit( cUserInput ) )
Console.WriteLine("The char is a number!");
else
Console.WriteLine("The char is not a number!");

}
}
}

 

نكاتي در مورد كد فوق :



1- سي شارپ به كوچكي و بزرگي حروف حساس است . براي مثال
cUserInput با cUserinput فرق مي كند.


2- حتما بايد بعد از
if پرانتزها ذكر گردد.


3- حتما بايد داخل
if يك عبارت Boolean ذكر شود مانند if(x>5) .


4- در سي شارپ مقايسه ي تساوي دو عبارت با == و انتساب با = انجام مي شود. ( موارد 1 و 4 مواردي هستند كه اغلب تازه كاران با آن مشكل دارند! ) براي مثال
if(i==3) صحيح است اما if(i=3) در سي شارپ معنايي ندارد.


5- اگر بعد از
if يك خط كد قرار گيرد نيازي به آوردن آكولاد ها نيست. هنگامي نياز به آكولادها مي باشد كه بيش از يك خط بايد بعد از if قرار گيرد.


6- در سي شارپ همانند اسلاف خودش براي تبديل نوع هاي داده ايي مي توان به صورت زير نيز عمل كرد : (
char) Console.Read() ; يعني دريافتي Read به char تبديل مي شود .در اين مورد باز هم صحبت خواهد شد.


7- همانطور كه ذكر شد در سي شارپ همه چيز شيء است حتي نوع هاي پايه ايي مانند
char . با استفاده از متد IsDigit آن مي توان چك كرد كه آيا ورودي آن عدد است يا خير؟ ( در مورد متدها صحبت خواهد شد )



استفاده از
switch :



بهتر است اين مورد را با يك مثال دنبال كنيم.


پروژه ي سي شارپ جديدي به نام
ex05 در حالت console در VS.NET باز كنيد. دراينجا مي خواهيم يك كلاس جديد تعريف كرده و توسط خاصيتي كه در آن ايجاد مي كنيم متوجه شويم روز جاري مطابق سيستم چه روزي است .


يك كلاس جديد از منوي پروژه ،‌با استفاده از گزينه ي
Addclass به برنامه اضافه كنيد و نام آنرا در ابتدا clsDate بگذاريد.

 

using System;

namespace ex05
{
///
/// Summary description for clsDate.
///
public class clsDate
{
public clsDate()
{
//
// TODO: Add constructor logic here
//
}

public string systemDayOfWeek
{
get
{

string res="";
switch( System.DateTime.Now.DayOfWeek.ToString())
{
case "Saturday" :
res = "
شنبه";
break;

case "Sunday" :
res = "
يک شنبه" ;
break;

case "Monday":
res = "
دوشنبه";
break;

case "Tuesday":
res = "
سه شنبه";
break;

case "Wednesday":
res = "
چهار شنبه";
break;

case "Thursday":
res = "
پنج شنبه";
break;

case "Friday":
res = "
جمعه" ;
break;
}

return res ;
}

}


}
}

 

هنگام ذخيره كردن اين كد ويژوال استوديو به شما اخطار مي دهد كه كد داراي حروف يونيكد است. از منوي فايل گزينه ي advanced save options را انتخاب كنيد. در اينجا مي توان نوع ذخيره سازي را يونيكد انتخاب كرد.



براي استفاده از كلاس فوق مانند مطالبي كه در قسمت قبل گفته شد عمل مي كنيم :

 

using System;

namespace ex05
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
clsDate m_var = new clsDate();
Console.WriteLine( m_var.systemDayOfWeek );
Console.ReadLine();

}
}
}

 

هر چند حالت console يونيكد را پشتيباني نمي كند ولي اصل برنامه براي ما مهم است و در آينده بيشتر از آن استفاده خواهيم كرد.



همانطور كه ملاحظه كرديد اگر از
switch استفاده نمي شد بايد از 7 عدد if ‌استفاده مي گرديد كه اصلا ظاهر حرفه اي و شكيلي نداشت!


با استفاده از عبارت زير كار مقايسه شروع مي شود. روز سيستم در يافت شده و وارد بدنه ي
switch مي گردد. سپس توسط case ها چك مي شود تا تساوي آن با عبارت بعد از case به اثبات برسد.

 

switch( System.DateTime.Now.DayOfWeek.ToString())

 

اگر هر كدام از عبارات بعد از case صحيح بودند كار پس از آن كه در اينجا انتساب است انجام شده و سپس توسط break كنترل برنامه از switch خارج مي شود و ادامه ي كار دنبال مي گردد.


اگر هيچكدام از
case ها صحيح نبودند مي توان از گزينه ي default هم در صورت نياز استفاده كرد. اين حالت در يك چنين مواقعي اجرا مي گردد.



مطالب مشابه :


آرایه ها در سی شارپ

فروش سامانه پیامک و پنل sms در زبان سي كمي متفاوت بود. فروش پروژه شطرنج به زبان سی شارپ.




حلقه های تکرار درسی شارپ

فروش سامانه پیامک و پنل sms يك برنامه ي سي شارپ جديد console فروش پروژه شطرنج به زبان سی شارپ.




تعريف متدها در سي شارپ

تعريف متدها در سي شارپ فروش سامانه پیامک و پنل sms فروش پروژه شطرنج به زبان سی شارپ.




مباحث تكميلي آرايه ها (آرايه هاي چند بعدي):

فروش سامانه پیامک و پنل sms سي شارپ دو نوع آرايه ي چند فروش پروژه شطرنج به زبان سی شارپ.




پارامترهای ref , out در سی شارپ

فروش سامانه پیامک و پنل sms در سي شارپ دو كلمه ي كليدي به فروش پروژه شطرنج به زبان سی شارپ.




ساختار های تصمیم گیری if , switch-case

1- سي شارپ به كوچكي و فروش پروژه ساعت به زبان #C و سامانه پیام کوتاه و پنل sms-ارسال




کنترل TreeView در سی شارپ

متون مربوط به زبان تخصصی استاد خیر اندیش Sms انگلیسی ارسال در تاريخ شنبه هجدهم اردیبهشت




برچسب :