يستخدم القرار switch لاختبار قيمة متغيرة مع قيمة ثابتة صحيحة، حيث كل قيمة ثابتة تعتبر كشرط أو مقارنة. والقرار switch مشابه للقرارات ifو else…if، ولكن إذا زاد عدد الاحتمالات، فمن الأفضل استخدام عبارة switch بدلاً من if المتداخلة، أي أن القرار switch سيغنينا عن باقي القرارات في الكثير من الحالات.
شرح تركيب جملة switch:
- تبدأ العبارة switch بالكلمة الأساسية (switch) ثم يليها المتغير المطلوب بين قوسين.
- جسمها المحصور بين الأقواس: قوس { يوضح بداية التركيب وبداخلة عدة بدائل.
- كل بديل يبدأ بكلمة case (الشرط) ثم نقطتين(:)، يليه جملة أو عدة جمل تنفذ في حال تحقق البديل،وينتهي كل بديل بكلمة (break).
- بعد نهاية بلوكات البدائل تأتي كلمة (default) متبوعة بعبارة أو بعدة عبارات ينفذها جهاز الحاسوب في حالة عدم تحقق أي من الشروط السابقة (أي أن المستخدم أدخل قيمة خارج دائرة الاختبار)، ثم كلمة (break) ثم قوس } يوضح نهاية التركيب.
الشكل العام لجملة switch:
تأخذ جملة switch في لغة ++C الشكل العام التالي:
(switch (variable name
}
;case constant 1:statement 1
;break
;case constant 2:statement 2
;break
.
.
;case constant n:statement n ;
break
;default: last statement
{
ملاحظات هامة:
عندما تكون قيمة متغير العبارة (switch) مساوية للثابت المذكور في أحد وسوم (case) ينتقل التنفيذ إلى العبارات التي تلي ذلك الوسم وتؤدي العبارة (break) إلى منع تنفيذ باقي العبارة (switch)، وإذا لم تتطابق قيمة متغير العبارة (switch) مع أي وسم بنتقل النفيذ إلى الوسم الافتراضي default.
إذا تحقق أحد شروط المقارنة فإنه سوف ينفذ الجملة التابعة للشرط، ليس هذا فقط بل سوف ينفذ جمل المقارنات التي تليه، ولحل هذه المشكلة نستخدم كلمة التوقف ;break، حيث يكون عملها إذا تحقق الشرط الأول، مثلاً نفذ جملته ثم توقف، ولا يذهب للتحقق من الشروط الأخرى بل يخرج من جمله switch.
في القرار switch لا يمكن استعمال متغير من نوع أعداد حقيقية مثل float و double (هنا ستفضل if و else).
default: مثلها مثل عمل الـ else في جمل if، فإن لم يتحققأي شرط تنفذ هذه الجملة ويمكن عدم كتابتها.