1. المقدمة
عبارة switch التي تُستخدم كثيرًا في البرمجة، هي أداة مفيدة جدًا لتبسيط عمليات التفرع الشرطية. حتى في لغة C، يمكن من خلال استخدام عبارة switch تنظيم خيارات متعددة بطريقة واضحة، وتقليل الأخطاء في الكود. في هذه المقالة، سنشرح كيفية استخدام عبارة switch في لغة C، من الأساسيات حتى الأمثلة التطبيقية، مع أمثلة عملية للكود.
2. ما هي عبارة switch في لغة C؟
عبارة switch هي بناء برمجي يُستخدم لمقارنة قيمة متغير معيّن بعدة قيم، وتنفيذ إجراء مختلف حسب كل قيمة. تكون مفيدة بشكل خاص عندما تكون الشروط عبارة عن أرقام أو قيم من نوع enum
. على سبيل المثال، يمكن كتابة برنامج يغيّر سلوكه بناءً على رقم قائمة اختاره المستخدم بطريقة سهلة وبسيطة.
switch (الشرط) {
case القيمة1:
// معالجة الحالة الأولى
break;
case القيمة2:
// معالجة الحالة الثانية
break;
default:
// معالجة في حال عدم التطابق مع أي قيمة
}
في هذا التركيب، يتم تنفيذ الكود تحت case
الذي يطابق قيمة التعبير في switch
. وإذا لم تتطابق أي من الحالات، يتم تنفيذ default
، ما يسمح بمعالجة القيم غير المتوقعة أو الأخطاء.

3. البنية الأساسية لعبارة switch
الآن سنقدّم مثالًا بسيطًا على الاستخدام. في البرنامج التالي، سيتم عرض رسالة بحسب الرقم الذي يظهر على النرد.
int main(void) {
int dice = 3;
switch (dice) {
case 1:
printf("ظهر الرقم 1.");
break;
case 2:
printf("ظهر الرقم 2.");
break;
case 3:
printf("ظهر الرقم 3.");
break;
case 4:
printf("ظهر الرقم 4.");
break;
case 5:
printf("ظهر الرقم 5.");
break;
case 6:
printf("ظهر الرقم 6.");
break;
default:
printf("رقم غير صالح.");
break;
}
return 0;
}
في هذا المثال، عندما تكون قيمة dice
هي 3، ستظهر الرسالة “ظهر الرقم 3.”. وإذا تم إدخال قيمة غير صالحة، سيتم عرض رسالة “رقم غير صالح.” بفضل استخدام default
لمعالجة الأخطاء.

4. مثال عملي على استخدام switch: اختيار من القائمة
عبارة switch فعالة جدًا عند الحاجة لتنفيذ إجراءات متعددة حسب مدخلات المستخدم. في المثال التالي، يتم عرض رسالة مختلفة حسب رقم الطعام الذي اختاره المستخدم.
int main(void) {
int choice;
printf("القائمة:");
printf("1. همبرغر");
printf("2. بيتزا");
printf("3. باستا");
printf("اختر رقمًا: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("اخترت همبرغر.");
break;
case 2:
printf("اخترت بيتزا.");
break;
case 3:
printf("اخترت باستا.");
break;
default:
printf("اختيار غير صالح.");
break;
}
return 0;
}
في هذا البرنامج، يتم عرض رسالة مختلفة حسب الطعام الذي اختاره المستخدم. باستخدام switch يصبح الكود أبسط وأسهل في القراءة والصيانة.

5. الفرق بين switch و if: متى يجب استخدام كل منهما؟
كلا من switch و if يُستخدمان للتفرع الشرطي، لكن هناك حالات يفضّل فيها استخدام أحدهما.
متى يفضل استخدام switch:
- عندما تكون القيم التي تتم مقارنتها ثابتة ومحددة (مثال: اختيار من قائمة، رموز الحالة).
- عندما تكون الشروط بسيطة وترغب بتنفيذ معالجة مختلفة لكل قيمة.
متى يفضل استخدام if:
- عندما تكون الشروط معقدة (مثال: تحديد نطاقات أو استخدام علامات المقارنة).
- عندما تحتاج لاتخاذ قرار بناءً على تعبيرات منطقية أو أكثر من متغير واحد.
بشكل عام، عبارة switch مناسبة للتفرعات البسيطة بناءً على قيم محددة، أما if فهي أكثر مرونة عند التعامل مع شروط معقدة. لذلك من المهم اختيار الأداة المناسبة حسب الموقف.
6. الأخطاء الشائعة عند استخدام switch وكيفية تجنبها
سنستعرض بعض الأخطاء الشائعة عند استخدام عبارة switch، وكيفية تجنبها.
1. نسيان عبارة break وحدوث “fall-through”
إذا نسيت وضع break
في نهاية كل case
، سيستمر تنفيذ الكود للحالات التالية أيضًا. يسمى هذا بـ “fall-through”، لذلك يجب دائمًا إضافة break
في نهاية كل حالة إلا إذا كان هذا مقصودًا.
2. عدم استخدام عبارة default
في حال كان هناك احتمال لإدخال المستخدم لقيم غير متوقعة، يجب استخدام default
لمعالجة الأخطاء، مما يساعد على تقليل المخاطر.

7. استخدام switch مع enum
من الطرق المتقدمة للاستفادة من switch، استخدام نوع البيانات enum (تعداد). باستخدام enum، يمكن التعامل مع القيم كأسماء ذات معنى بدلاً من أرقام، مما يجعل الكود أسهل للفهم والصيانة.
enum Fruit { APPLE, BANANA, ORANGE };
int main(void) {
enum Fruit fruit = BANANA;
switch (fruit) {
case APPLE:
printf("اخترت تفاحة.");
break;
case BANANA:
printf("اخترت موزة.");
break;
case ORANGE:
printf("اخترت برتقالة.");
break;
default:
printf("اختيار غير صالح.");
break;
}
return 0;
}
في هذا المثال، تم تعريف خيارات الفاكهة باستخدام enum
، ثم تم التفرع باستخدام switch
بناءً على الخيار المختار. هذا الأسلوب يزيد من وضوح الكود وسهولة صيانته.
8. الخلاصة
عبارة switch في لغة C فعالة جدًا عند التعامل مع شروط تعتمد على قيم محددة. مقارنة بـ if، فهي مخصصة لمعالجة التفرعات البسيطة، وتساعد في كتابة كود واضح وفعال. ننصحك باستخدام switch لتحقيق كود أكثر احترافية في مشاريع البرمجة المستقبلية.