دوستان یک سوال فنی:
چرا وقتی میشه با if و elseif و else یک متغیر رو مقایسه کرد، با switch هم میشه؟
منظور اصلی من اینه که:
1) از کدوم بهتر هست استفاده کنم و کجا؟
2) چرا یک برای یک کار دو تا دستور داریم؟
3) و دیگر سوالاتی که خودتون تو ذهنتون بود زمانی که آموزگار بودین.
عذر می خوام چون تازه واردم بد توضیح مبدم سوالاتم رو
شرایطی وجود ندارد که switch بتواند انجام دهد ولی از توانایی if / else خارج باشد ولی گاهی کد if / else خوانا نیست.
اینکه از کدوم شیوه استفاده کنید، بیشتر بستگی به تعداد مقایساتی داره که بایستی در if انجام بدهید.
مثلا ممکنه بخواهید بر اساس زوج یا فرد بودن مقدار یکی از دو پیغام odd / even (زوج / فرد) رو نمایش بدهید،
در این حالت احتمالا از if استفاده می کنید، چون دو حالت بیشتر نداره و اگر عددی زوج نباشه، قطعا فرده.
ساختار if / else برای این منظور به حد کافی ساده و واضح است.
اما گاهی وقت ها تعداد مقایسه هایی که روی یک متغیر انجام می دهید بیش از یک مقایسه است (مثل نمایش
اسامی روز های هفته (...saturday, sunday, monday) برای مقادیر 1 الی 7) و یا تعداد مقادیری که در یک وضعیت
شریک اند، بیش از یک مورد است (مثلا ماه های میلادی که 31 روزه هستند) ، در اینگونه موارد switch ساختار مناسب تری
است، هم از این جهت که ذاتا برای این منظور (بررسی حالات مختلف یک مقدار) طراحی شده و هم کد نویسی ساده تری دارد.
(شما می توانید در ساختار switch در case های متوالی break را حذف کنید و بدین طریق شرایطی که در یک وضعیت
خاص داشتید را برای case های متوالی به اشتراک بگذارید و یا برای یک وضعیت بیش از یک مقدار تعیین کنید).
برای طراحان زبان های برنامه نویسی، صرفا ارائه فرامینی که از عهده پیاده سازی اهداف برنامه نویس بربیایند کافی نیست،
فرمان هایی مثل goto را در نظر بگیرید، به برنامه نویسان توصیه میشه که تا حد امکان از بکارگیری این فرمان مفید اجتناب کنند،
تا کدهایشان با پرش های تو در تو، خوانایی اش را از دست ندهد و به اصطلاح کدهای اسپاگتی ایجاد نشود.
ارائه فرمان هایی مثل switch هم بیشتر با هدف حفظ همین خوانایی کد ها است، نه الزاما ضعف فرامینی مثل if .