خاصية
switch
في لغة C (وغيرها من لغات البرمجة) هي هيكل تحكم يسمح لك باختيار تنفيذ كتلة من التعليمات بناءً على قيمة متغير أو تعبير. تُستخدم عادةً كبديل أنيق لسلسلة طويلة من عبارات if-else if-else
.كيف تعمل switch
؟
- التعبير: يتم تقييم تعبير (عادةً ما يكون متغيرًا من نوع صحيح أو حرفي) داخل أقواس
switch()
. - الحالات (cases): تقارن قيمة التعبير مع قيم ثابتة مُحددة في حالات
case
. - التطابق: إذا تطابقت قيمة التعبير مع قيمة
case
، يتم تنفيذ كتلة التعليمات المقابلة لهذاcase
. break
: تُستخدم الكلمة المفتاحيةbreak
للخروج من هيكلswitch
بعد تنفيذ كتلة التعليمات المطابقة. إذا لم يتم استخدامbreak
، سيستمر التنفيذ إلى الحالات التالية (وهذا ما يُعرف بـ "fall-through").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
:
الميزة | switch | if-else if |
---|---|---|
التقييم | تقييم قيمة واحدة مقابل قيم ثابتة متعددة. | تقييم تعابير منطقية متعددة. |
القيم | ثوابت فقط. | أي تعبير منطقي. |
القراءة | عادةً ما تكون أكثر وضوحًا لقراءة الكود. | قد تصبح معقدة مع الكثير من الشروط. |
الكفاءة | قد تكون أكثر كفاءة في بعض الحالات. | قد تكون أقل كفاءة في بعض الحالات. |
باختصار، switch
هي أداة قوية في لغة C تُسهل كتابة كود واضح وفعال عند التعامل مع خيارات متعددة بناءً على قيمة تعبير واحد.