دستور Switch در سی شارپ #C — با مثال های کاربردی

تصویر شاخص دستور swich در سی شارپ

در زبان برنامه‌نویسی سی شارپ #C، دستور Switch یک دستور شاخه‌ای چند‌راهه است. این دستور روشی کارآمد برای انتقال اجرای کد به بخش‌های مختلف بر اساس مقدار یک عبارت فراهم می‌کند. در این مقاله به بررسی جزئیات دستور Switch در سی شارپ #C، دلایل استفاده از آن و نکات مهم مرتبط با پیاده‌سازی آن خواهیم پرداخت.

مقدمه

دستور Switch در سی شارپ یکی از انواع دستورات شرطی و ابزارهای کلیدی برای مدیریت تصمیم‌گیری چندگانه است. این دستور امکان اجرای بخش‌های مختلف کد را بر اساس مقدار یک عبارت فراهم می‌کند و جایگزینی کارآمد برای ساختارهای طولانی if-else محسوب می‌شود. استفاده از دستور Switch نه تنها باعث بهبود خوانایی کد می‌شود، بلکه در زمان و منابع نیز صرفه‌جویی می‌کند. علاوه بر این، امکانات پیشرفته‌ای نظیر استفاده از دستورهای goto و continue در شرایط خاص، انعطاف‌پذیری بیشتری را در طراحی و مدیریت جریان برنامه فراهم می‌آورد.

تصویری از دستور swich در سی شارپ

در زبان سی شارپ #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 در سی شارپ

قوانین استفاده از دستور 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 در شرایط خاص، امکان کنترل دقیق‌تر جریان برنامه را می‌دهد. با توجه به مزایای متعددی که این دستور ارائه می‌دهد، به نظر می‌رسد که در بسیاری از موقعیت‌ها جایگزین مناسبی برای ساختارهای دیگر تصمیم‌گیری باشد و به برنامه‌نویسان کمک کند تا کدهایی تمیزتر و کارآمدتر بنویسند.


سوالات متداول


چرا از دستور Switch به جای if-else استفاده کنیم؟

دستور Switch زمانی که تعداد زیادی شرط برای بررسی وجود داشته باشد، کارآمدتر از if-else است. استفاده از Switch باعث می‌شود کد شما ساده‌تر، خواناتر و سریع‌تر باشد و از پیچیدگی‌های اضافی جلوگیری می‌کند.

آیا دستور goto می‌تواند جایگزین break در دستور Switch شود؟

بله، دستور goto می‌تواند به جای break برای انتقال کنترل به یک بخش دیگر از کد استفاده شود. این دستور معمولاً زمانی استفاده می‌شود که نیاز به اجرای شرط default یا پرش به مکان‌های خاص در کد دارید.

آیا دستور default در دستور Switch ضروری است؟

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

آیا می‌توان از دستور Switch در حلقه‌ها استفاده کرد؟

بله، دستور Switch می‌تواند در حلقه‌ها (مانند for یا while) استفاده شود. اگر از دستور continue به جای break در یک حلقه استفاده کنید، این دستور باعث می‌شود که اجرای برنامه به ابتدای حلقه بازگردد.

آیا می‌توان از متغیرها به عنوان مقدار در دستور Switch استفاده کرد؟

خیر، در دستور Switch، مقادیر مورد استفاده در case باید ثابت «constant» یا literal باشند. متغیرها نمی‌توانند به عنوان مقدار مورد استفاده قرار گیرند.

میزان رضایتمندی
لطفاً میزان رضایت خودتان را از این مطلب با دادن امتیاز اعلام کنید.
[ امتیاز میانگین 5 از 9 نفر ]
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع و مراجع:
مجله پی استور geeksforgeeks javatpoint

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *



برچسب‌ها:
سی شارپ


پیمایش به بالا