دستور switch در برنامه نویسی C
در این آموزش به کمک مثال با دستور switch در برنامه نویسی C آشنا خواهید شد. دستور switch این امکان را فراهم می کند تا بلوک کد از بین چند گزینه اجرا شود.
همین کار را می توانید با if…else..if نردبانی انجام دهید. البته خواندن و نوشتن ساختار دستور switch بسیار آسان تر است.
ساختار دستور switch:
switch (عبارت)
{
case مقدار ثابت۱:
// دستورات
break;
case مقدار ثابت۲:
// دستورات
break;
.
.
.
default:
// دستورات پیشفرض
}
دستور switch چگونه کار می کند؟
عبارت داخل پرانتز یک بار بررسی شده و با مقدر هر کدام از case ها مقایسه می شود.
- اگر عبارت با یک مقدار ثابت مطابقت داشته باشد، دستورات متناظر با آن case اجرا خواهد شد. به عنوان مثال اگر عبارت با مقدار ثابت۲ برابر باشد، دستورات بعد از آن اجرا می شود تا زمانی که به دستور break برسد. با اجرای دستور break، کنترل برنامه از دستور switch خارج شده و به بعد از این دستور می رود.
- اگر عبارت با هیچ یک از مقادیر ثابت مطابقت نداشته باشد دستورات پیشفرض اجرا می شوند.
اگر از دستور break در case ها استفاده نکنید، دستورات تمام caseهایی که مقدار ثابت آنها با عبارت برابر هستند، اجرا خواهد شد.
علاوه بر این قسمت default (پیشفرض) نیز در دستور switch اختیاری است.
نمودار دستور switch
مثال: ماشین حساب ساده
// برنامه ساخت یک ماشین حساب ساده
#include <stdio.h>
int main() {
char operator;
double n1, n2;
printf(“Enter an operator (+, -, *, /): “);
scanf(“%c”, &operator);
printf(“Enter two operands: “);
scanf(“%lf %lf”,&n1, &n2);
switch(operator)
{
case ‘+’:
printf(“%.1lf + %.1lf = %.1lf”,n1, n2, n1+n2);
break;
case ‘-‘:
printf(“%.1lf – %.1lf = %.1lf”,n1, n2, n1-n2);
break;
case ‘*’:
printf(“%.1lf * %.1lf = %.1lf”,n1, n2, n1*n2);
break;
case ‘/’:
printf(“%.1lf / %.1lf = %.1lf”,n1, n2, n1/n2);
break;
//مطابقت ندارد + ,- ,* ,/ عملگر با هیچ یک از ثابت های
default:
printf(“Error! operator is not correct”);
}
return 0;
}
خروجی
Enter an operator (+, -, *,): –
Enter two operands: 32.5
۱۲٫۴
۳۲٫۵ – ۱۲٫۴ = ۲۰٫۱
عملگر ورودی – در متغیر operator و دو عملوند ۳۲٫۵ و ۱۲٫۴ به ترتیب در متغیرهای n1 و n2 ذخیره می شوند.
چون عملگر – (تفریق) است، کنترل برنامه در دستور switch به دستور زیر می رود،
printf(“%.1lf – %.1lf = %.1lf”, n1, n2, n1-n2);
در نهایت دستور break باعث خروج از دستور switch می شود.