دستور switch در C
در این بخش به بررسی دستور switch در C می پردازیم، در برنامهنویسی با زبان C، مدیریت جریان برنامه نقش حیاتی در ساختار کد دارد و به شما این امکان را میدهد که مسیرهای متفاوتی برای اجرای برنامه انتخاب کنید. یکی از ابزارهای اصلی برای این کار استفاده از دستورات شرطی مانند if-else
و switch
است. دستور switch
به شما این امکان را میدهد تا یک متغیر را بررسی کرده و براساس مقادیر مختلف، مسیرهای مختلفی را در برنامه مشخص کنید. این دستور به خصوص زمانی کاربردی است که نیاز دارید چندین حالت ممکن برای یک متغیر را پوشش دهید.
استفاده از switch
در مقایسه با دستورات if-else
میتواند کد را خواناتر و کوتاهتر کند. به ویژه زمانی که با مجموعهای از شرایط مجزا برای یک متغیر مواجه هستید، استفاده از switch
میتواند کمککننده باشد. در این مقاله، دستور switch
در C را به صورت جامع بررسی میکنیم و به مثالهای عملی برای درک بهتر این دستور میپردازیم.
ساختار دستور switch
دستور switch
در زبان C دارای ساختاری ساده و خواناست که به شما این امکان را میدهد تا به جای استفاده از زنجیرهای از دستورات if-else
، چندین حالت مختلف را با استفاده از یک دستور بررسی کنید. ساختار کلی این دستور به صورت زیر است:
switch (expression) {
case constant1:
// Code to execute if expression == constant1
break;
case constant2:
// Code to execute if expression == constant2
break;
...
default:
// Code to execute if expression doesn't match any case
}
در این ساختار، expression
یک عبارت است که مقدار آن با مقادیر case
های مختلف مقایسه میشود. اگر مقدار expression
با مقدار یکی از case
ها مطابقت داشته باشد، کد مربوط به آن case
اجرا خواهد شد. در غیر این صورت، اگر بخش default
تعریف شده باشد، کد موجود در این بخش اجرا میشود.
مثال ساده از دستور switch
در این مثال، برنامهای نوشتهایم که یک عدد بین ۱ تا ۵ را دریافت میکند و نام روز هفته مربوطه را چاپ میکند.
در این مثال، اگر مقدار متغیر day
برابر با ۳ باشد، خروجی Wednesday
خواهد بود. استفاده از دستور break
پس از هر case
به این دلیل است که اجرای برنامه پس از یافتن تطابق متوقف شود و به سراغ بخشهای دیگر case
نرود. اگر break
استفاده نشود، برنامه به صورت پیوسته کدهای بعدی را نیز اجرا خواهد کرد.
بخش default
در دستور switch
بخش default
در دستور switch
زمانی استفاده میشود که هیچکدام از case
ها با مقدار expression
مطابقت نداشته باشند. این بخش به نوعی حالت پیشفرض برنامه را تعیین میکند.
مثال کاربردی برای بخش default
فرض کنید برنامهای میخواهیم که براساس کد ورودی یک کشور نام آن کشور را چاپ کند. اگر کدی به برنامه وارد شود که برای کشور خاصی تعریف نشده باشد، پیامی به کاربر نشان داده میشود که کد وارد شده نامعتبر است.
در این مثال، اگر countryCode
برابر ۹۱ باشد، برنامه نام کشور “India” را چاپ میکند. اگر کاربر عددی را وارد کند که در هیچکدام از case
ها وجود ندارد، برنامه پیام Invalid country code
را نمایش میدهد.
استفاده از break
در switch
در بیشتر موارد، زمانی که یک case
با expression
مطابقت دارد و کدهای آن case
اجرا میشود، میخواهیم برنامه به صورت پیوسته به اجرای case
های دیگر نپردازد. برای این کار از دستور break
استفاده میکنیم تا اجرای switch
در همان case
متوقف شود و به قسمتهای دیگر کد برود.
حذف break
و تاثیر آن
در برخی مواقع، ممکن است بخواهیم چندین case
با یکدیگر به صورت پیوسته اجرا شوند. در این حالت، میتوانیم از break
صرفنظر کنیم تا همهی case
های متوالی اجرا شوند.
مثال زیر نشان میدهد که چگونه حذف break
میتواند بر اجرای کد تاثیر بگذارد:
در اینجا اگر مقدار score
برابر با ۳ باشد، خروجی برنامه به این صورت خواهد بود:
Score is 3
End of switch
با عدم استفاده از break
در این مثال، برنامه از آن نقطه به بعد همهی خطوط کد را اجرا میکند. این ویژگی گاهی در برنامهنویسی میتواند مفید باشد.
محدودیتهای دستور switch
در زبان C
با وجود اینکه switch
ابزار قدرتمندی برای کنترل جریان برنامه است، محدودیتهایی نیز دارد. به عنوان مثال، عبارت expression
در switch
باید از نوع عدد صحیح (مانند int
یا char
) باشد. در زبان C، شما نمیتوانید از float
، double
یا رشتهها (string
) به عنوان عبارت expression
در switch
استفاده کنید.
نمونهای از محدودیتها
فرض کنید میخواهیم برنامهای بنویسیم که براساس جنسیت یک فرد و سن آن، پیامی را نشان دهد. برای این کار نمیتوانیم از دستور switch
استفاده کنیم، زیرا بررسی جنسیت و سن در این ساختار امکانپذیر نیست.
این محدودیتها گاهی برنامهنویسان را مجبور میکند که به جای switch
از دستورات شرطی پیچیدهتری مانند if-else
استفاده کنند.
مقایسهی switch
و if-else
اگرچه هر دوی switch
و if-else
برای کنترل جریان برنامه استفاده میشوند، انتخاب بین این دو بستگی به شرایط برنامه دارد. switch
به طور کلی زمانی کارآمدتر است که با یک متغیر واحد و تعداد زیادی حالت ممکن سر و کار دارید. از طرف دیگر، اگر نیاز به بررسی چندین شرط پیچیده داشته باشید یا مقادیر شرطها غیرعددی باشند، استفاده از if-else
بهتر خواهد بود.
مثال مقایسهای
در مثال زیر، همان شرایط را هم با switch
و هم با if-else
نشان میدهیم:
در اینجا، هر دو روش نتیجه مشابهی تولید میکنند. اما switch
در این مثال خواناتر است و استفاده از آن باعث میشود کد کمتر شلوغ به نظر برسد.
دستور switch
یک ابزار ارزشمند در زبان C است که به برنامهنویسان این امکان را میدهد تا شرایط مختلف را به صورت بهینه مدیریت کنند. این دستور به خصوص زمانی مفید است که تعداد زیادی حالت برای یک متغیر وجود دارد و انتخاب بین مسیرهای مختلف اجرای کد به سادگی با این ساختار ممکن میشود.
اما محدودیتهایی نیز دارد، از جمله اینکه فقط مقادیر عددی را میپذیرد و برای عبارات شرطی پیچیده یا مقادیر غیرعددی مناسب نیست.
آیا این مطلب برای شما مفید بود ؟