دستور 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 است که به برنامهنویسان این امکان را میدهد تا شرایط مختلف را به صورت بهینه مدیریت کنند. این دستور به خصوص زمانی مفید است که تعداد زیادی حالت برای یک متغیر وجود دارد و انتخاب بین مسیرهای مختلف اجرای کد به سادگی با این ساختار ممکن میشود.
اما محدودیتهایی نیز دارد، از جمله اینکه فقط مقادیر عددی را میپذیرد و برای عبارات شرطی پیچیده یا مقادیر غیرعددی مناسب نیست.
آیا این مطلب برای شما مفید بود ؟




