درخواست های ارتباط
جستجو
لیست دوستان من
صندوق پیام
همه را دیدم
  • در حال دریافت لیست پیام ها
صندوق پیام
رویدادها
همه را دیدم
  • در حال دریافت لیست رویدادها
همه رویدادهای من
تخفیف های وب سایت
همه تخفیف ها

عضویت در

کانال تلگرام

توسینسو

اطلاعات مطلب
مدرس/نویسنده
حسین احمدی
امتیاز: 215942
رتبه:3
344
265
416
2833
حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ... پروفایل کاربر

آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش دوم)

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

var name = Console.ReadLine();
if(name == "Hossein")
{
    Console.WriteLine("Hello Hossein!");
}
else if(name == "ITPro")
{
    Console.WriteLine("Welcome to ITPro.IR");
}
else if(name == "Information Technology")
{
    Console.WriteLine("Just ITPro.ir");
}

همانطور که در کد بالا مشاهده می کنید، دستورات 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 "Hossein":
        Console.WriteLine("Hello Hossein!");
        break;
    case "ITPro":
        Console.WriteLine("Welcome to ITPro.ir");
        break;
    case "Information Technology":
        Console.WriteLine("Just ITPro.ir");
        break;
}

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

if(name == "Hossein")
{
    Console.WriteLine("Hello Hossein!");
}
else if(name == "ITPro")
{
    Console.WriteLine("Welcome to ITPro.IR");
}
else if(name == "Information Technology")
{
    Console.WriteLine("Just ITPro.ir");
}
else
{
    Console.WriteLine("Input is not valid!");
}

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


switch (name)
{
    case "Hossein":
        Console.WriteLine("Hello Hossein!");
        break;
    case "ITPro":
        Console.WriteLine("Welcome to ITPro.ir");
        break;
    case "Information Technology":
        Console.WriteLine("Just ITPro.ir");
        break;
    default:
        Console.WriteLine("Input is not valid!");
        break;
}

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

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

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

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

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

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

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

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

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

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

نویسنده : حسین احمدی
منبع : جزیره برنامه نویسی وب سایت توسینسو
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است
برچسب ها
ردیف عنوان
1 دوره آموزشی .NET Framework و زبان برنامه نویسی سی شارپ - مقدمه
2 آموزش سی شارپ - قسمت اول :: معرفی و بررسی ابزارهای مورد نیاز دوره
3 آموزش زبان سی شارپ - قسمت دوم :: آشنایی با .NET Framework و ساختار آن (بخش اول)
4 آموزش زبان سی شارپ - قسمت دوم :: آشنایی با .NET Framework و ساختار آن (بخش دوم)
5 آموزش زبان سی شارپ - قسمت سوم :: آشنایی اولیه با محیط Visual Studio و نوشتن اولین برنامه
6 آموزش زبان سی شارپ - قسمت چهارم :: آشنایی با ساختار برنامه ها و کامپایلر زبان سی شارپ
7 آموزش زبان سی شارپ - قسمت پنجم :: آشنایی با دستورات کنسول و متغیرها
8 آموزش زبان سی شارپ - قسمت ششم :: نوع های داده اولیه
9 آموزش زبان سی شارپ - قسمت هفتم :: آشنایی با عملگرهای زبان سی شارپ
10 آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش اول)
11 آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش دوم)
12 آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش سوم)
13 آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش چهارم)
14 آموزش زبان سی شارپ - قسمت نهم :: آشنایی با آرایه ها و دستور foreach
15 آموزش زبان سی شارپ - قسمت دهم :: آشنایی با متدها در زبان سی شارپ (بخش اول)
16 آموزش زبان سی شارپ - قسمت دهم :: آشنایی با متدها در زبان سی شارپ (بخش دوم)
17 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت یازدهم :: مقدمه ای بر برنامه نویسی شئ گرا
18 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت دوازدهم :: آشنایی با کلاس، اشیاء و فضاهای نام
19 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت سیزدهم :: آشنایی با فیلدها و رفتارها
20 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت چهاردهم :: آشنایی با Property ها
21 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت پانزدهم :: آشنایی با سازنده ها و روش های ایجاد اشیاء
22 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت شانزدهم :: وراثت یا Inheritance
23 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت هفدهم :: آشنایی با مفهوم Polymorphism
24 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت هجدهم:: کلاس های abstract و sealed
25 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت نوزدهم :: سازنده ها در وراثت، کلمه کلیدی protected و فیلدهای readonly
26 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیستم :: کلاس های static و partial و Extension Method ها
27 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیست و یکم :: Reference Types و Value Types
28 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیست و دوم :: آشنایی با کاربرد interface ها
29 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیست و سوم :: آشنایی با مفاهیم Inversion of Control و Dependency Injection
30 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و چهارم :: آشنایی با مفهوم Type Casting و انواع Cast ها
31 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و پنجم :: آشنایی با operator overloading و تعریف cast ها
32 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و ششم :: مفاهیم boxing و unboxing
33 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و هفتم :: قابلیت Generics
34 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و هشتم :: نکات تکمیلی Generic ها، کلاس List و کلاس Dictionary
35 آموزش زبان سی شارپ -قسمت بیست و نهم (پایانی): استثناء ها (Exceptions) و مدیریت خطاها در سی شارپ
دوره مجموعه کل دوره
مطالب مرتبط

در حال دریافت اطلاعات

نظرات
  • سلام استاد.
    لطفا بیشتر درباره زمان هایی که میشه از دستود return در Switch استفاده کرد توضیح بدید.اگر امکانش هست با یه مثال!
  • سلام، بیشترین استفاده return در ساختار switch زمانی هست که شما بر اساس یک پارامتر ورودی قصد دارید یک مقدار رو برگردونید، برای مثال تابع زیر رو در نظر بگیرید:

    public int GetState(string input)
    {
        swtich(input)
        {
            case 'Value1':
                return 0;
            case 'Value2':
                return 1;
            case 'Value3':
                return 2;
            case 'Value4:
                return 3;
            default: 
                return 0;
        }
    }
    

    تو کد بالا، بر اساس یک ورودی یک خروجی از نوع int ایجاد می کنیم، مثال کاربردی تری که می تونم بزنم الگوی Factory هست، شما یک interface تعریف کردید و چند کلاس دارید که این Interface رو پیاده سازی کرده، حالا داخل یک متد بر اساس پارامتر ورودی می خوایید کلاس مورد نظر رو ایجاد و بر گردونید:

    public interface IBase
    {
    }
    
    public class ClassA : IBase
    {
    }
    
    public class ClassB : IBase
    {
    }
    
    public IBase ClassFactory(string type)
    {
        switch(type):
        {
            case "A":
                return new ClassA();
            case "B":
                return new ClassB();
            default:
                return null;
        }
    }
    

  • متشکرم استاد.
    من تازه کار هستم و با اینترفیس آشنایی ندارم.ولی از مثالی که درباره تابع زدید تا حدودی متوجه مطلب شدم.

برای ارسال نظر ابتدا به سایت وارد شوید