خاصية switch في لغة C (وغيرها من لغات البرمجة) هي هيكل تحكم يسمح لك باختيار تنفيذ كتلة من التعليمات بناءً على قيمة متغير أو تعبير. تُستخدم عادةً كبديل أنيق لسلسلة طويلة من عبارات if-else if-else.

كيف تعمل switch؟

  1. التعبير: يتم تقييم تعبير (عادةً ما يكون متغيرًا من نوع صحيح أو حرفي) داخل أقواس switch().
  2. الحالات (cases): تقارن قيمة التعبير مع قيم ثابتة مُحددة في حالات case.
  3. التطابق: إذا تطابقت قيمة التعبير مع قيمة case، يتم تنفيذ كتلة التعليمات المقابلة لهذا case.
  4. break: تُستخدم الكلمة المفتاحية break للخروج من هيكل switch بعد تنفيذ كتلة التعليمات المطابقة. إذا لم يتم استخدام break، سيستمر التنفيذ إلى الحالات التالية (وهذا ما يُعرف بـ "fall-through").
  5. default (اختياري): تُستخدم الحالة default لتحديد كتلة تعليمات يتم تنفيذها إذا لم تتطابق قيمة التعبير مع أي من حالات case.

بنية switch:

C
switch (expression) {
case constant1:
// كتلة التعليمات 1
break;
case constant2:
// كتلة التعليمات 2
break;
case constant3:
// كتلة التعليمات 3
break;
default:
// كتلة التعليمات الافتراضية
}

مثال:

C
#include <stdio.h>

int main() {
int grade = 'B';

switch (grade) {
case 'A':
printf("Excellent!\n");
break;
case 'B':
printf("Good.\n");
break;
case 'C':
printf("Fair.\n");
break;
case 'D':
printf("Poor.\n");
break;
default:
printf("Invalid grade.\n");
}

return 0;
}

في هذا المثال، سيتم طباعة "Good." لأن قيمة grade هي 'B'.

ملاحظات مهمة:

  • يجب أن تكون قيم case ثوابت (constants) من نوع صحيح أو حرفي.
  • لا يُسمح باستخدام متغيرات في case.
  • يُفضل دائمًا استخدام break في نهاية كل case إلا إذا كنت ترغب في سلوك "fall-through" بشكل مُتعمد.
  • يمكن استخدام switch مع أنواع البيانات enum (التعداد) بشكل فعال.

متى تستخدم switch

تُستخدم switch بشكل مثالي عندما يكون لديك متغير واحد تريد مقارنته بعدة قيم ثابتة مُحتملة. تُعتبر أكثر وضوحًا وقراءةً من سلسلة طويلة من if-else if.

الفرق بين switch و if-else if:

الميزةswitchif-else if
التقييمتقييم قيمة واحدة مقابل قيم ثابتة متعددة.تقييم تعابير منطقية متعددة.
القيمثوابت فقط.أي تعبير منطقي.
القراءةعادةً ما تكون أكثر وضوحًا لقراءة الكود.قد تصبح معقدة مع الكثير من الشروط.
الكفاءةقد تكون أكثر كفاءة في بعض الحالات.قد تكون أقل كفاءة في بعض الحالات.

باختصار، switch هي أداة قوية في لغة C تُسهل كتابة كود واضح وفعال عند التعامل مع خيارات متعددة بناءً على قيمة تعبير واحد.