دستور switch
دستورات if و if-else برای یک یا دو حالت انتخاب مناسب هستند اما برای انتخاب های بیشتر به جای یک سری از if های تودرتوانتخاب دیگری هم وجود دارد. دستور switch بر اساس مقدار يک متغير يا عبارت صحيح روی کدی که می خواهید سوئیچ می کند. شکل کلی آن به صورت زير است:

switch(selector)
{
   case integral-value1 : statement; break;
   case integral-value2 : statement; break;
   case integral-value3 : statement; break;
   case integral-value4 : statement; break;
   (...)
   default: statement;
}

selector بايد يک متغيرصحيح يا عبارتی باشد که يک عدد صحيح توليد می کند. اين مقدار با مقادير صحيح بعد از case ها مقايسه می شود اگر برابر با يکی از آنها بود دستور مربوط به آن اجرا می شود. اگر برابر با هيچکدام از مقادير نبود دستور بعد از default اجرا می شود.

دستور switch دارای یک بلاک از کد است. آکولاد درست بعد از switch شروع و بعد از آخرین دستور آن تمام می شود.

مثال.

int choice;
switch(choice)
   {
   case 1:
      cout << "you chose 1\n";
      break;
   case 2:
      cout << "you chose 2\n";
      break;
   case 3:
      cout << "you chose 3\n";
      break;
   default:
      cout << "you made an invalid choice \n";
   }

در انتهای هر case يک دستور break وجود دارد که باعث می شود اجرا به انتهای بلاک switch منتقل شود. اگر break حذف شود اجرا ادامه پيدا می کند و کلیه case های بعدی اجرا می شود تا وقتی که با يک دستور break مواجه شود.

مثال.

char Choice;
cout << "Enter the letter for your choice: ";
cin >> Choice;

switch(Choice)
   {
   case 'A':
   case 'a':
      DoOptionA();
      break;
   case 'B':
   case 'b':
      DoOptionB();
      break;
   case 'C':
   case 'c':
      DoOptionC();
   }

دستور switch راهی برای ساختن شرط های تودرتو است اما به selector احتياج دارد که بر اساس مقدار آن تصميم گيری کند. وقتی مفيد است که می خواهيد مقدار يک متغير يا عبارت صحيح با يک سری ثابت مقايسه و کد مربوط به آن اجرا شود.

نکته. در هر case تنها از يک مقدار ثابت می توان استفاه کرد.
نکته. عبارت رشته ای به عنوان selector نمی تواند بکار رود. برای يک عبارت رشته ای بايد از شرط های تودرتو استفاده کرد.
نکته. می توان دستورات switch تودرتو نیز داشت.
نکته. دستورات درون هر case می تواند بيشتر از يکی باشد و به آکولاد برای محصور کردن آنها نيازی نيست.






پیوندها