فهرست مندرجات

ساختار Switch

از دیگر ساختارهایی که در کنترل برنامه مورد استفاده قرار می‌گیرد، دستور switch است. این دستور از نظر عملکرد تقریبا با دستور if، else if مشابه است. این دستور ورودی خود را با آرگومان‌هایی که دارد مقایسه می کند و در صورت برابری عمل مربوط به آن را انجام می دهد.

ساختار کلی

در زیر ساختار کلی این دستور را می‌بینیم.

switch (input) {
    case case1 :
        //statement1
    case case2 :
        //statement2
    .
    .
    .
    default : 
        //default statement
}

عملکرد این دستور به این صورت است که یک آرگومان ورودی می‌گیرد. ورودی این دستور با case1، case2 ،… مقایسه می شود و چنان‌چه با یکی از آن‌ها برابر باشد دستورات مربوط به آن بخش اجرا می‌شود. اگر هیچ کدام از این برابری‌ها رخ ندهد دستورات مربوط به بخش default اجرا خواهند شد.

چند مثال

String userInput;
cin >> userInput;
int a,b;
cin >> a >> b;
 
switch (userInput) {
    case "multipication" :
        cout << a*b << endl;
        break;
    case "sum" : 
        cout << a+b << endl;
        break;
    case "subtraction" : 
        cout << a-b << endl;
        break;
    default :
        cout << "Your input is not supported" <<endl;
}

نحوه‌ی عملکرد این کد بدین صورت است. ابتدا یک رشته از ورودی خوانده می‌شود و سپس دو عدد صحیح از کاربر خواسته می‌شود. سپس وارد ساختار سوییچ می‌شویم. اگر رشته‌ی ورودی multipication باشد، حاصل‌ضرب دو عدد ورودی در خروجی چاپ می‌شود،اگر برابر sum باشد، حاصل جمع دو ورودی در خروجی چاپ می‌شود و در نهایت اگر برابر subtraction باشد تفاضل آن دو در خروجی چاپ می‌شود. باید توجه داشت که اگر هیچ یک از موارد بالا برقرار نباشد، حالت default رخ می‌دهد و عبارت مربوط به آن چاپ می شود. همچنین باید این نکته را در نظر بگیریم که دستور break در این حالت همان عملکرد دستورات for را دارد. اگر دستورات break را در این حالت قرار ندهیم، بعد از این که یکی از حالات برقرار شد، از دستورات آن حالت تا جایی که به آخر switch و یا یک دستور break برسیم اجرا خواهد شد. این مورد را در مثال زیر بهتر می توان درک کرد.

کد زیر از عددی که کاربر وارد کرده است تا عدد 6 را چاپ می کند.برای مثال اگر کاربر عدد 3 را وارد کند، اعداد 3، 4، 5، 6 چاپ خواهند شد.

int userInput;
switch (userInput) {
    case 1 :
        cout << "1" <<endl;
    case 2 :
        cout << "2" <<endl;
    case 3 : 
        cout << "3" <<endl;
    case 4 : 
        cout << "4" <<endl;
    case 5 :
        cout << "5" <<endl;
    case 6 : 
        cout << "6" <<endl;
    default :
        cout << "Your input is not valid" <<endl;
}