دستورات کنترلی switch

سی شارپ

دستورات کنترلی switch

در ادامه سری مباحث آموزش زبان برنامه نویسی سی شارپ، در این قسمت مباحث مربوط به دستورات کنترلی را ادامه خواهیم داد. در قسمت قبلی به بررسی دستور if پرداختیم. در این قسمت قصد داریم که با دستور switch و نحوه استفاده از آن در برنامه هایمان آشنا شویم. اما پیش از شروع، به قسمت قبل برمی گردیم. در قسمت قبل گفتیم که با دستور if می توانیم نسبت به کنترل روند اجرای برنامه بر اساس حالت های مختلف اقدام نماییم. به دستور زیر دقت کنید:

 
        
var name = Console.ReadLine();
if(name == "Erfan")
{
    Console.WriteLine("Hello Erfan!");
}
else if(name == "DatoosTech")
{
    Console.WriteLine("Welcome to DatoosTech.com");
}
else if(name == "Programming")
{
    Console.WriteLine("Just DatoosTech.com");
}
            
        

همانطور که در کد بالا مشاهده می کنید، دستورات if بر اساس مقدار متغیر عمل می کنند. یعنی اگر برابر مقداری بود، دستورات اول، مقدار دوم دستورات دوم و ...

اما در این حالت ما می توانیم از دستور switch استفاده کنیم. دستور switch بر اساس مقدار یک مقدار حالت های مختلف را بررسی کرده و دستورات قسمت مربوطه را اجرا خواهد کرد. ساختار کلی دستور switch به صورت زیر است:

 
        
switch({variable})
{
    case {value1}:
        statements
        break;
    case {value2}:
        statements
        break
        .
        .
        .
    case {value-n}:
        statements
        break;
    default:
        statements
        break;
}
            
        

بخش بالا، ساختار کلی دستور switch را نشان می دهد. در ادامه به بررسی بخش های مختلف دستور بالا خواهیم پرداخت:
  1. ساختار switch با دستور switch شروع شده و مقابل آن در داخل پردانتز نام متغیری که قصد داریم مقادیر آن را چک کنیم قرار می گیرد. یعنی به جای {variable} نام متغیر مورد نظر را می نویسیم.
  2. دستورات مخصوص عبارت switch بین علامت های brace باز و بسته قرار میگیرند.
  3. بوسیله دستور case به ترتیب شرایط مختلف را مشخص می کنیم. به جای {value} در مقابل دستور case مقدار مورد نظر را می نویسیم.
  4. بعد از نوشتن دستور مربوط به هر case باید انتهای case را با دستور break مشخص کنیم. در غیر اینصورت با پیغام خطا مواجه خواهیم شد.
  5. در بخش default، دستوراتی که در صورت برقرار نبودن هیچ کدام از شرط های case باید اجرا شود را می نویسیم. نوشتن بخش default دلخواه است و می توانیم از نوشتن آن صرفنظر کنیم.

در ادامه، دستور if که در ابتدای این مقاله نوشتیم را به دستور switch تبدیل می کنیم. همانطور که مشاهده میکنید، در تمامی شرط های if از متغیر name استفاده شده است. پس ما می توانیم دستور if را به دستور switch تبدیل کنیم. به مثال زیر دقت کنید:

 
        
var name = Console.ReadLine();

switch (name)
{
    case "Erfan":
        Console.WriteLine("Hello Erfan!");
        break;
    case "DatoosTech":
        Console.WriteLine("Welcome to DatoosTech.com");
        break;
    case "Programming":
        Console.WriteLine("Just DatoosTech.com");
        break;
}
            
        

دستورات بالا، دقیقاً معادل عبارت if ابتدای آموزش هستند. اما بخش default! فرض کنید دستورات if به صورت زیر بودند:

 
        
if(name == "Erfan")
{
    Console.WriteLine("Hello Erfan!");
}
else if(name == "DatoosTech")
{
    Console.WriteLine("Welcome to DatoosTech.com");
}
else if(name == "Programming")
{
    Console.WriteLine("Just DatoosTech.com");
}
else
{
    Console.WriteLine("Input is not valid!");
}
            
        

قسمت else آخر، دقیقاً کار default را برای ما انجام می دهد:

 
        
switch (name)
{
    case "Erfan":
        Console.WriteLine("Hello Erfan!");
        break;
    case "DatoosTech":
        Console.WriteLine("Welcome to DatoosTech.com");
        break;
    case "Programming":
        Console.WriteLine("Just DatoosTech.com");
        break;
    default:
        Console.WriteLine("Input is not valid!");
        break;
}
            
        

زمانی که ما تصمیم داریم از دستور switch استفاده کنیم، می توانیم برای یک بدنه case چند مقدار مختلف را مشخص کنیم. برای مثال، دستور if زیر را در نظر بگیرید:

 
        
if(name == "DatoosTech" || name == "www.DatoosTech.com" || name == "DatoosTech.com")
{
    Console.WriteLine("Welcome to DatoosTech.com");
}

            
        

برای شبیه سازی دستور بالا با دستور switch به صورت عمل می کنیم:

 
        
switch(name)
{
    case "DatoosTech":
    case "www.DatoosTech.com":
    case "DatoosTech.com":
        Console.WriteLine("Welcome to DatoosTech.com");
        break;
}

            
        

همانطور که مشاهده می کنید، چند دستور case پشت سر هم نوشته شده است، به این معنا که در صورت برابر بودن مقدار name با هریک از مقادیر دستور case، وارد بخش مربوطه شود.

نکته: زمانی که داخل قسمت case، از دستور return استفاده می کنیم، نیازی به نوشتن دستور break نیست:

 
        
switch(name)
{
    case "DatoosTech":
    case "www.DatoosTech.com":
    case "DatoosTech.com":
        return "Welcome to DatoosTech.com";
}
            
        

نکته: زمانی که قصد تعریف یک متغیر داخل قسمت case را داریم و همان متغیر در case دیگری، در همان دستور switch نیز تعریف می شود، باید بدنه case را با علامت های brace باز و بسته مشخص کنیم:

 
        
switch(name)
{
    case "Value1":
    {
        var number = 12;
        break;
    }
    case "Value2":
    {
        var number = 34;
        break;
    }
}

            
        

در این قسمت با ساختار کلی دستور switch آشنا شدیم ، دستورات کنترلی if و switch را بررسی کردیم. در بخش های بعدی به بررسی حلقه ها و دستور if خواهیم پرداخت.