در دو مبحث قبلی ساختارهای
if
و
if/else را بررسی کرديم. در برنامه نويسی گاهی به
الگوريتمی نياز پيدا می کنيم که در آن متغيری به ازای هر مقدار صحيح ثابتی،
باعث اجرای يک دستور خاص شود و به ازای هر مقدار اعمال مختلف انجام پذيرد. برای
نيل به اين هدف ++C ساختار چند انتخابی
switch
را که به صورت زير می باشد در اختيار ما قرار داده است:
switch (عبارتی که بايد مورد بررسی قرار گيرد )
{
case مقدار ثابت 1 :
مجموعه دستورات 1
break;
case مقدار ثابت 2 :
مجموعه دستورات 2
break;
.
.
.
case n مقدار ثابت :
n مجموعه دستورات
break;
default :
مجموعه دستورات حالت پيش فرض
}
ساختار
switch به شيوه زير عمل می کند:switch ابتدا عبارت داخل پرانتز را مورد ارزيابی قرار می
هد و سپس آن را با مقدار ثابت 1 مورد مقايسه قرار می دهد. اگر برابر
بودند مجموعه دستورات 1 را اجرا خواهد شد، تا هنگامی که برنامه به دستور
break برسد، هنگامی که برنامه به دستور
break رسيد از ساختار چند انتخابی
switch خارج می شود. اگر عبارت داخل پرانتز با
مقدار ثابت 1 برابر نبود ساختار
switch
عبارت داخل پرانتز را با مقدار ثابت 2 مورد مقايسه قرار می دهد، در صورت
برابر بودن مجموعه دستورات 2 اجرا می گردد. اين روال همينطور ادامه پيدا
می کند. در صورتی که عبارت داخل پرانتز با هيچ يک از مقادير ثابت برابر نباشد،
مجموعه دستورات حالت
default (پيش فرض) اجرا می گردد. به برنامه زير
توجه کنيد:
#include <iostream.h>
int main( )
{
int x;
cout << "Please enter a number:";
cin >> x;
switch (x) {
case 1:
cout << "x is 1";
break;
case 2:
cout << "x is 2";
break;
default:
cout << "Unknown value";
}
return 0;
}
برنامه فوق را سه بار با سه عدد مختلف اجرا می کنيم. خروجی ها به صورت زير می
باشند:
Please enter a number:1
x is 1
Please enter a number:2
x is 2
Please enter a number:5
Unknown value
توجه داشته باشيد که ساختار
switch
را می توان با ساختار
if/else نيز پياده سازی کرد. به عنوان مثال ساختار
switch به کار رفته در مثال فوف معادل ساختار
if/else
زير می باشد:
if (x == 1)
cout << "x is 1";
else
if (x == 2)
cout << "x is 2";
else
cout << Unknown value";
ما الزامی به استفاده از حالت
default
در ساختار
switch نداريم ولی توصيه می شود که حالت پيش فرض
را به کار ببريم چون معمولاً امکان دارد که عبارت برابر با هيچ يک از مقادير
ثابت نباشد و با به کار بردن حالت پيش فرض می توانيد پيغام مناسبی در اين رابطه
به صفحه نمايش بفرستيد.
توجه داشته باشيد اگر دستور
break
بعد از هر مجموعه از دستورات استفاده نکنيم برنامه از ساختار
switch
خارج نخواهد شد و مجموعه دستورات بعدی اجرا می گردد تا به
اولين دستور
break برسد. اين مورد به ما امکان ايجاد حالتهای ترکيبی را می دهد. البته
در به کار بردن اين تکنيک دقت لازم را بکنيد.
#include <iostream.h>
int main( )
{
int x;
cout << "Please enter a number:";
cin >> x;
switch (x) {
case 1:
case 2:
case 3:
cout << "x is (1 or 2 or 3)";
break;
default:
cout << "x is not (1 or 2 or 3)";
}
return 0;
}
برنامه فوق را سه بار با سه عدد مختلف اجرا می کنيم. خروجی ها به صورت زير می
باشند:
Please enter a number:1
x is (1 or 2 or 3)
Please enter a number:2
x is (1 or 2 or 3)
Please enter a number:5
x is not (1 or 2 or 3)
|