آموزش کار با دستور Switch در #C

آموزش کار با دستور Switch در #C

درس پنچم

 

دستور Switch همانند مجموعه ای از دستورات پشت سر هم if عمل می کند. دستور Switch درواقع لیستی از حالت های ممکن است که برای هر حالت یک دستور یا کدی جهت اجرا پیش بینی شده است. این دستور همچنین یک حالت default یا پیش فرضی دارد که در صورتی که هیچ یک از حالات آن true نباشد، اجرا خواهد شد.

 

 

 

 

فلوچارت دستور Switch

 

یک دستور ساده Switch ساختاری همانند کد مثال زیر دارد:

 

;int number = 1

 } switch (number)

;case 0: Console.WriteLine(“The number is zero!”)

;break

;case 1: Console.WriteLine(“The number is one!”)

;break

{

 

مقدار شناسه یا identifier (مقدار متغیری که می خواهیم دستور Switch بر حسب آن عمل کند) را پس از واژه کلیدی Switch قرار می دهیم. سپس لیستی از انواع حالت های مختلف برای آن مقدار توسط هر دستور case مشخص شده و مقدار شناسه با مقدار هر case مقایسه می شود. اگر مقدار شناسه با مقدار هر کدام برابر نبود، دستورات بخش پیش فرض default اجرا می شود.

اگر دقت کرده باشید، در پایان هر case یک دستور break قرار داده شده است. برای چیست؟ اگر مقدار یک case با مقدار شناسه دستور Switch برابر شود، دستورات آن case اجرا شده و اگر در انتهای case دستور break وجود نداشته باشد، دستورات case های بعدی نیز اجرا خواهد شد. به عبارت دیگر، دستور break ، باعث توقف روند اجرای دستورات Switch شده و برنامه به خط کد بعد از Switch می فرستد.

هنگامی که هم یک تابع را در دستورات یک case تعیین می کنید، می توانید با استفاده از return خروجی تابع را به عنوان خروجی Switch برگردانید.

در کد مثال، ما از یک متغیر عددی integer به عنوان شناسه دستور Switch استفاده کرده ایم، اما این شناسه می تواند از نوع متنی String و یا هر نوع داده ای دیگر زبان #C باشد.

در مثال زیر، ابتدا یک مقدار را به عنوان ورودی از کاربر گرفته ایم، سپس آن را به عنوان یک متغیر متنی String به دستور Switch ارسال نموده ایم. در کد مثال زیر، برای هر دو مقدار “yes” و “Maybe” یک دستور مشترک را تعیین کرده ایم.

 

;Console.WriteLine(“Do you enjoy C# ? (yes/no/maybe)”)

;()string input = Console.ReadLine

} switch(input.ToLower())

:case “yes

:case “maybe

;Console.WriteLine(“Great!”)

;break

:case “no

;Console.WriteLine(“Too bad!”)

;break

{

در کد مثال فوق، سوالی از کاربر پرسیده شده و از وی خواسته شد یکی از مقادیر “yes” ، “no” و “maybe” را وارد نماید. سپس مقدار وارد شده از ورودی توسط دستور ()Console.ReadLine خوانده شده و یک دستور Switch بر مبنای آن طراحی شده است.

برای سهولت کار کاربر، توسط دستور ()ToLower ، کاراکترهای ورودی کاربر را به حروف کوچک تبدیل کرده ایم تا در هنگام مقایسه با مقادیر Case ها، فرقی بین مقدار وارد شده برای حروف بزرگ و کوچک وجود نداشته باشد.

اما بدون وجود دستور default در Switch ، اگر کاربر در مثال فوق مقداری غیر از مقادیر تعیین شده برای case ها وارد نماید، برنامه هیچ خروجی نخواهد داشت. بنابراین کد مثال فوق را به همراه default به صورت زیر بازنویسی می کنیم:

 

;Console.WriteLine(“Do you enjoy C# ? (yes/no/maybe)”)

;()string input = Console.ReadLine

} switch(input.ToLower())

:case “yes

:case “maybe

;Console.WriteLine(“Great!”)

;break

:case “no

;Console.WriteLine(“Too bad!”)

;break

:default

;Console.WriteLine(“I’m sorry, I don’t understand that!”)

;break

{

اگر کاربر مقداری به غیر از مقادیر تعیین شده برای case ها وارد نماید، بخش default به صورت پیش فرض اجرا خواهد شد.

برای مشاهده درس چهارم آموزش ساختار دستوری if در #C اینجا کلیک کنید.