🎛️ إتقان التحكم في التدفق: شرح بيان switch في جافا خطوة بخطوة
مرحباً بك في درس جديد من دروس "كودكس أكاديمي"! بعد أن تعلمنا استخدام عبارات if-else للتحكم في تدفق البرنامج، حان الوقت لنتعرف على أداة أخرى قوية ومفيدة عندما نواجه حالات متعددة: بيان switch.
🤔 ما هو بيان switch؟
بيان switch هو هيكل تحكم يتيح لك تنفيذ كود مختلف بناءً على قيمة متغير معين. بدلاً من كتابة سلسلة طويلة من if-else if، يمكن لـ switch جعل الكود أكثر تنظيماً وسهولة في القراءة.
الفكرة الأساسية: تقييم تعبير واحد، ثم مقارنة نتيجته بقيم متعددة محتملة (cases). عندما تتطابق القيمة، يتم تنفيذ الكود المخصص لها.
📝 البنية الأساسية لـ switch
لنبدأ بالنظر إلى الهيكل العام لبيان switch:
switch (متغير_أو_تعبير) {
case value1:
// الكود الذي ينفذ إذا كان المتغير يساوي value1
break;
case value2:
// الكود الذي ينفذ إذا كان المتغير يساوي value2
break;
// يمكنك إضافة العديد من cases كما تريد
default:
// الكود الذي ينفذ إذا لم يتطابق المتغير مع أي case
}
دعونا نشرح كل جزء:
switch (متغير_أو_تعبير): نبدأ بكتابةswitchمتبوعاً بقوسين()بداخلهما المتغير أو التعبير الذي نريد فحص قيمته (مثل رقم يوم الأسبوع، أو درجة الطالب).case value:: داخل الأقواس المعقوفة{}، نحدد كل حالة محتملة باستخدام الكلمة المفتاحيةcaseمتبوعةً بالقيمة المحددة التي نريد مقارنتها، ثم نقطتين:.break;: هذه الكلمة المفتاحية بالغة الأهمية. تخبر البرنامج بمغادرة كتلةswitchبالكامل بعد تنفيذ الكود المطابق للحالة. بدونها، سيستمر البرنامج في تنفيذ جميعcasesالتي تليها (ظاهرة تسمى "Fall-through").default:: هذه الحالة اختيارية. تشبهelseفي عبارةif. يتم تنفيذ الكود الموجود تحتها إذا لم تتطابق قيمة المتغير مع أي من القيم المذكورة فيcases.
💡 مثال عملي بسيط: أيام الأسبوع
لنفترض أن لدينا متغيراً يمثل رقم اليوم في الأسبوع (1 للأحد، 2 للإثنين، ...، 7 للسبت)، ونريد طباعة اسم اليوم.
الطريقة باستخدام if-else (الطريقة الطويلة):
int dayNumber = 3;
if (dayNumber == 1) {
System.out.println("الأحد");
} else if (dayNumber == 2) {
System.out.println("الإثنين");
} else if (dayNumber == 3) {
System.out.println("الثلاثاء");
} // ... وهكذا لباقي الأيام
الطريقة باستخدام switch (الطريقة المنظمة):
int dayNumber = 3;
switch (dayNumber) {
case 1:
System.out.println("الأحد");
break;
case 2:
System.out.println("الإثنين");
break;
case 3:
System.out.println("الثلاثاء");
break;
case 4:
System.out.println("الأربعاء");
break;
case 5:
System.out.println("الخميس");
break;
case 6:
System.out.println("الجمعة");
break;
case 7:
System.out.println("السبت");
break;
default:
System.out.println("رقم يوم غير صحيح!");
}
ماذا يحدث هنا؟
- يتم تقييم قيمة
dayNumber(وهي 3). - يبحث البرنامج عن
caseتطابق هذه القيمة. - يجد
case 3:فيقوم بتنفيذ الأمر بداخله:System.out.println("الثلاثاء");. - يصادف
break;فيتوقف عن التنفيذ ويخرج من كتلةswitch.
⚠️ أهمية كلمة break
لنرى ما يحدث إذا نسينا كتابة break في المثال السابق:
int dayNumber = 3;
switch (dayNumber) {
case 3:
System.out.println("الثلاثاء");
// تم حذف break هنا عن قصد
case 4:
System.out.println("الأربعاء");
break;
}
مخرجات الكود:
الثلاثاء
الأربعاء
لاحظ أن البرنامج استمر في التنفيذ من نقطة التطابق (case 3:) وواصل تنفيذ جميع الأوامر في الـ cases التالية حتى صادف break. هذا يؤكد على أهمية استخدام break للتحكم الدقيق في التدفق.
🛡️ استخدام الحالة الافتراضية default
الحالة default هي شبكة الأمان الخاصة بـ switch. فهي تضمن أن لدينا رد فعل في الحالات غير المتوقعة.
int grade = 95;
char letterGrade;
switch (grade / 10) { // نقسم الدرجة على 10 لتبسيط الحالات
case 10:
case 9:
letterGrade = 'A';
break;
case 8:
letterGrade = 'B';
break;
case 7:
letterGrade = 'C';
break;
case 6:
letterGrade = 'D';
break;
default:
letterGrade = 'F'; // لأي درجة أقل من 60
}
System.out.println("تقديرك هو: " + letterGrade);
في هذا المثال، إذا كانت grade تساوي 45، فإن grade / 10 تساوي 4، والتي لا تطابق أي case، لذا سيتم تعيين letterGrade إلى 'F' في قسم default.
🆚 متى نستخدم switch بدلاً من if-else؟
- استخدم
switchعندما يكون لديك متغير واحد أو تعبير واحد تريد مقارنته بعدد كبير من القيم الثابتة والمحددة. - استخدم
if-elseعندما تحتاج إلى التحقق من شروط معقدة (مثل نطاقات:if (age > 18 && age < 65)) أو مقارنة أكثر من متغير.
باختصار، switch هو أداة تنظيمية رائعة تجعل الكود أنظف وأسهل في الفهم عندما تناسب الموقف.
ماذا سنتعلم في الدرس القادم؟ 🚀
لقد أصبحت الآن قادراً على استخدام بيان switch بثقة لتبسيط عمليات اتخاذ القرار متعددة الحالات. في الدرس القادم، سننتقل إلى مفهوم أساسي وجديد تماماً: الحلقات التكرارية (Loops). سنبدأ بأشهرها وأبسطها، حلقة for. ستتعلم كيف تجعل البرنامج يكرر تنفيذ مجموعة من الأوامر عدداً محدداً من المرات، مما يفتح أمامك أبواباً جديدة للتعامل مع البيانات بشكل أكثر كفاءة. استعد لاكتشاف قوة التكرار!
🎓 اختبر نفسك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال