در زبان برنامهنویسی سی شارپ #C، دستور Switch یک دستور شاخهای چندراهه است. این دستور روشی کارآمد برای انتقال اجرای کد به بخشهای مختلف بر اساس مقدار یک عبارت فراهم میکند. در این مقاله به بررسی جزئیات دستور Switch در سی شارپ #C، دلایل استفاده از آن و نکات مهم مرتبط با پیادهسازی آن خواهیم پرداخت.
مقدمه
دستور Switch در سی شارپ یکی از انواع دستورات شرطی و ابزارهای کلیدی برای مدیریت تصمیمگیری چندگانه است. این دستور امکان اجرای بخشهای مختلف کد را بر اساس مقدار یک عبارت فراهم میکند و جایگزینی کارآمد برای ساختارهای طولانی if-else محسوب میشود. استفاده از دستور Switch نه تنها باعث بهبود خوانایی کد میشود، بلکه در زمان و منابع نیز صرفهجویی میکند. علاوه بر این، امکانات پیشرفتهای نظیر استفاده از دستورهای goto و continue در شرایط خاص، انعطافپذیری بیشتری را در طراحی و مدیریت جریان برنامه فراهم میآورد.
در زبان سی شارپ #C، دستور Switch یک دستور شاخهای چندراهه است. این دستور روشی کارآمد برای انتقال اجرای کد به بخشهای مختلف بر اساس مقدار یک عبارت فراهم میکند. عبارت switch میتواند از نوع عدد صحیح مانند int، char، byte، یا short، یا از نوع enumeration یا string باشد. این عبارت برای موارد مختلف بررسی میشود و موردی که مطابقت دارد اجرا میشود.
ساختار یا Syntax دستور switch در سی شارپ
به طور کلی در زبان های برنامه نویسی دستور switch دارای ساختارهای مشابهی هستند. ساختار یا Syntax دستور switch در سی شارپ نیز مشابه همین ساختارها است. نحو این دستور در سی شارپ بصورت زیر است:
switch (expression) { case value1: // statement sequence break; case value2: // statement sequence break; . . . case valueN: // statement sequence break; default: // default statement sequence }
فلوچارت دستور Switch در سی شارپ
با استفاده از فلوچارت، مراحل مختلف یک فرآیند یا الگوریتم بهطور گرافیکی نمایش داده میشود که این امر موجب تسهیل فهم و یادگیری میشود. در مورد دستور switch در سیشارپ، فلوچارت بهطور واضح نحوه عملکرد این دستور را نشان میدهد و فرآیند تصمیمگیری را مرحله به مرحله توضیح میدهد. در ادامه فلوچارت دستور switch در سیشارپ آورده شده است تا کاربران بتوانند بهراحتی از این ابزار در برنامهنویسی خود بهرهبرداری کنند.
قوانین استفاده از دستور Switch در سی شارپ
- در زبان برنامهنویسی #C، مقادیر تکراری برای caseها مجاز نیستند.
- نوع دادهای که در دستور switch بررسی میشود باید با نوع داده مقادیر موجود در caseها تطابق داشته باشد.
- مقدار case باید یک ثابت یا literal باشد، استفاده از متغیرها مجاز نیست.
- بعد از اجرای یک case، دستور break موجب خروج از دستور switch و جلوگیری از اجرای سایر caseها میشود.
- دستور default اختیاری است و میتواند در هر جای دستور switch استفاده شود.
- تنها یک دستور default میتواند در دستور switch وجود داشته باشد و استفاده از چندین دستور default مجاز نیست.
مثال
// C# program to illustrate // switch case statement using System; public class PStore { // Main Method public static void Main(String[] args) { int nitem = 5; switch (nitem) { case 1: Console.WriteLine("case 1"); break; case 5: Console.WriteLine("case 5"); break; case 9: Console.WriteLine("case 9"); break; default: Console.WriteLine("No match found"); break; } } }
خروجی
case 5
چرا از دستورات Switch به جای if-else استفاده میکنیم؟
دستور switch در سی شارپ به جای if-else زمانی استفاده میشود که بخواهیم از تعداد زیادی شرط برای ارزیابی یک مقدار خاص استفاده کنیم. در مقایسه با if-else که بیشتر برای شرایط محدود و ارزیابیهای منطقی ساده مناسب است، استفاده از switch در شرایطی که تعداد زیادی گزینه وجود داشته باشد، کد را سادهتر و خواناتر میکند. اگر از if-else برای بررسی شرایط متعدد استفاده کنیم، کد پیچیدهتر و طولانیتر میشود و فهم آن برای برنامهنویسان دشوار خواهد بود. switch همچنین باعث بهبود کارایی و سرعت خواندن کد میشود.
مثال: در ادامه یک مثال از استفاده از دستور if-else در زبان سیشارپ آورده شده است.
// C# program to illustrate // if-else statement using System; class PStore { // Main Method public static void Main(String[] args) { // taking two strings value string topic; string category; // taking topic name topic = "Inheritance"; // using compare function of string class if ((String.Compare(topic, "Introduction to C#") == 0) || (String.Compare(topic, "Variables") == 0) || (String.Compare(topic, "Data Types") == 0)) { category = "Basic"; } // using compare function of string class else if ((String.Compare(topic, "Loops") == 0) || (String.Compare(topic, "If Statements") == 0) || (String.Compare(topic, "Jump Statements") == 0)) { category = "Control Flow"; } // using compare function of string class else if ((String.Compare(topic, "Class & Object") == 0) || (String.Compare(topic, "Inheritance") == 0) || (String.Compare(topic, "Constructors") == 0)) { category = "OOPS Concept"; } else { category = "Not Mentioned"; } System.Console.Write("Category is " + category); } }
خروجی
Category is OOPS Concept
توضیح: همانطور که در برنامه بالا نشان داده شد، کد طولانی نیست اما خواندن آن پیچیده به نظر میرسد و نوشتن آن زمان بیشتری میبرد. بنابراین، از دستور switch استفاده میکنیم تا در زمان صرفهجویی کرده و کدی بهینه بنویسیم. استفاده از دستور switch خوانایی کد را بهبود میبخشد.
مثال: همان برنامهای که قبلاً با دستور if-else نوشته شد، اکنون با استفاده از دستور switch در زبان سیشارپ آورده شده است.
// C# program to illustrate // switch statement using System; class PStore { // Main Method public static void Main(String[] args) { // taking two strings value string topic; string category; // taking topic name topic = "Inheritance"; // using switch Statement switch(topic) { case "Introduction to C#": case "Variables": case "Data Types": category = "Basic"; break; case "Loops": case"If Statements": case"Jump Statements": category = "Control Flow"; break; case "Class & Object": case "Inheritance": case "Constructors": category = "OOPS Concept"; break; // default case default: category = "Not Mentioned"; break; } System.Console.Write("Category is " + category); } }
خروجی
Category is OOPS Concept
استفاده از دستور goto در Switch
در زبان سیشارپ، دستور goto معمولاً برای پرش به یک نقطه خاص در کد استفاده میشود. در دستور switch، میتوان از goto به جای break استفاده کرد تا به بلوک خاصی از کد مانند default پرش کنیم و از اجرای سایر کیسها جلوگیری کنیم. به طور کلی، از دستور break برای خروج از دستور switch استفاده میشود. اما در برخی مواقع، اجرای دستور default ضروری است، بنابراین از دستور goto استفاده میکنیم. این دستور امکان اجرای شرط default را در دستور switch فراهم میکند.
مثال
// C# program to illustrate the // use of goto in switch statement using System; public class PStore { // Main Method public static void Main(String[] args) { int greeting = 2; switch (greeting) { case 1: Console.WriteLine("Hello"); goto default; case 2: Console.WriteLine("Bonjour"); goto case 3; case 3: Console.WriteLine("Namaste"); goto default; default: Console.WriteLine("Entered value is: " + greeting); break; } } }
خروجی
Bonjour Namaste Entered value is: 2
توضیح: در برنامه بالا، دستور goto در یک دستور switch استفاده شده است. ابتدا case 2 یعنی “Bonjour” چاپ میشود، زیرا مقدار greeting در switch برابر با ۲ است. سپس کنترل به case 3 منتقل میشود به دلیل وجود دستور goto، بنابراین “Namaste” چاپ میشود. در نهایت، کنترل به شرط default منتقل شده و مقدار “Entered value is: 2” چاپ میشود.
توجه: اگر دستور switch بخشی از یک حلقه باشد، میتوانید از دستور continue به جای break استفاده کنید. دستور continue باعث میشود اجرای برنامه فوراً به ابتدای حلقه بازگردد.
نتیجهگیری
در نهایت، دستور Switch در سی شارپ ابزاری قدرتمند برای مدیریت تصمیمگیریهای چندگانه است که میتواند کد را به صورت چشمگیری سادهتر و خواناتر کند. استفاده از دستور Switch به جای ساختارهای پیچیده if-else نه تنها باعث کاهش زمان نوشتن کد میشود، بلکه اجرای سریعتر و بهینهتری را نیز فراهم میآورد. همچنین، قابلیتهای اضافی مانند استفاده از goto و continue در شرایط خاص، امکان کنترل دقیقتر جریان برنامه را میدهد. با توجه به مزایای متعددی که این دستور ارائه میدهد، به نظر میرسد که در بسیاری از موقعیتها جایگزین مناسبی برای ساختارهای دیگر تصمیمگیری باشد و به برنامهنویسان کمک کند تا کدهایی تمیزتر و کارآمدتر بنویسند.