الوحدة 3: اتّخاذ القرار · الموضوع 8 من 13
الموضوع 8

جملة switch

جملة تحكّم تقارن متغيّرًا واحدًا بعدّة قيم ثابتة، وتنفّذ الكود الموافق للقيمة المطابقة.

1234… case 1: الأحدcase 2: الاثنين case 3: الثلاثاءdefault
بعد هذا الدرس ستستطيع أن:
  • كتابة جملة switch بعناصرها: case و break و default.
  • توقّع أثر نسيان break (fall-through).
  • تجميع عدّة حالات لها الناتج نفسه.
  • الاختيار بين switch و if بحسب نوع المقارنة.

١الفكرة والصيغة

بديل أنظف عن سلسلة if … else if عندما نسأل: هل قيمة المتغيّر تساوي إحدى هذه القيم؟ والمقارنة تكون مع رقم أو حرف أو نصّ.

الصيغة العامة
switch (المتغيّر){    case القيمة_الأولى:        // كود يُنفّذ عند التطابق        break;    case القيمة_الثانية:        // كود آخر        break;    default:        // إذا لم تتطابق أي قيمة}
العنصروظيفته
caseقيمة نقارن بها المتغيّر
breakيوقف الجملة ويخرج منها بعد تنفيذ الحالة
defaultتُنفَّذ إذا لم تتطابق أي حالة (اختيارية لكنها مستحسنة)

٢جرّب: رقم اليوم ← اسمه

مختبر switch

اختر قيمة day، ثم جرّب إلغاء break من إحدى الحالات.

int
snippet
int day = 3; switch (day){    case 1:        System.out.println("الأحد");        break;    case 2:        System.out.println("الاثنين");        break;    case 3:        System.out.println("الثلاثاء");        break;    default:        System.out.println("رقم غير صحيح");}
الناتج

مثال: المقارنة مع حرف

Main.java
char grade = 'B'; switch (grade){    case 'A': System.out.println("ممتاز");     break;    case 'B': System.out.println("جيد جدًا");  break;    case 'C': System.out.println("جيد");       break;    default:  System.out.println("يحتاج تحسين");}
Output – JavaApplication (run)×
run:
جيد جدًا
BUILD SUCCESSFUL (total time: 0 seconds)

٣تجميع الحالات: ترك break عمدًا

الحالات التي لها الناتج نفسه تُكتب متتالية بلا break بينها:

snippet
case 'A':case 'B':    System.out.println("ناجح بتقدير مرتفع");    break;

٤switch أم if؟

switchif
نوع المقارنةمساواة متغيّر واحد بقيم ثابتةمجالات أو منطق مركّب
أمثلةرقم قائمة، حرف تقدير، رقم يومالدرجة أكبر من 60، أو شرطان معًا

توقّع وتحقّق

أجب قبل أن تنظر إلى الشرح. التصحيح فوري، وإجاباتك تُحفظ.

ما الناتج؟

snippet
int n = 2;switch (n){    case 1: System.out.print("A ");    case 2: System.out.print("B ");    case 3: System.out.print("C ");    default: System.out.print("D");}
لا يوجد break، فيكمل من case 2 حتى النهاية (fall-through).

أي حالة لا تناسب switch؟

المجالات تحتاج if.

متى يُنفَّذ default؟

ما فائدة break داخل switch؟

الخلاصة

تحدٍّ برمجي: آلة حاسبة بـ switch

متوسط

نفّذ عملية حسابية بحسب الرمز المخزّن في المتغيّر op.

المطلوب:
  • العمليات: + و - و * و /.
  • أي رمز آخر يطبع «عملية غير معروفة».
  • جرّب بتغيير op إلى '+' ثم إلى '?'.

ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:

Calc.java
public class Calc{    public static void main(String[] args)    {        int a = 12, b = 4;        char op = '*';         // switch على op     }}
Output – المطلوب×
12 * 4 = 48
💡 تلميح 1
case '*': … break;
💡 تلميح 2
default للرموز غير المعروفة.

حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.

Calc.java
public class Calc{    public static void main(String[] args)    {        int a = 12, b = 4;        char op = '*';         switch (op)        {            case '+': System.out.println(a + " + " + b + " = " + (a + b)); break;            case '-': System.out.println(a + " - " + b + " = " + (a - b)); break;            case '*': System.out.println(a + " * " + b + " = " + (a * b)); break;            case '/': System.out.println(a + " / " + b + " = " + (a / b)); break;            default:  System.out.println("عملية غير معروفة");        }    }}

أسئلة التقييم

ورقة العمل: جملة switch. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».

1السؤال الأول: اختر الإجابة الصحيحة

1) switch تقارن المتغيّر:

2) الكلمة التي توقف الحالة وتخرج منها:

3) الحالة التي تُنفَّذ عند عدم التطابق:

4) نسيان break يؤدّي إلى:

2السؤال الثاني: صح أم خطأ

1) switch تصلح للمجالات مثل «أكبر من».
الصواب: خطأ
2) قيم case يجب أن تكون ثابتة.
الصواب: صح
3) default حالة اختيارية.
الصواب: صح
4) switch يدعم الأنواع int و char و String.
الصواب: صح
5) نضع break بعد كل حالة عادةً.
الصواب: صح

3السؤال الثالث: أكمل الفراغات

1) نبدأ الجملة بالكلمة .

💡 اسم الجملة نفسها.

الإجابة: switch

2) كل قيمة نقارن بها تُكتب بعد الكلمة .

💡 كلمة تسبق كل قيمة.

الإجابة: case

3) لإيقاف الحالة والخروج نستخدم .

💡 الكلمة التي توقف التنفيذ.

الإجابة: break

4) عند عدم تطابق أي حالة تُنفَّذ .

💡 الحالة الافتراضية.

الإجابة: default

5) switch يقارن فقط.

💡 switch لا تقارن «أكبر من»، بل …

الإجابة: المساواة

4السؤال الرابع: التوصيل

طابِق كل عنصر في العمود (أ) بما يناسبه في العمود (ب):

  1. 1) switch
  2. 2) case
  3. 3) break
  4. 4) default
  5. 5) fall-through
  1. أ. قيمة نقارن بها.
  2. ب. بداية الجملة.
  3. ج. الحالة الافتراضية.
  4. د. الخروج من الحالة.
  5. هـ. متابعة الحالات عند نسيان break.
المفتاح: (1) ب (2) أ (3) د (4) ج (5) هـ

5السؤال الخامس: أسئلة عملية

1) تتبّع الناتج:

snippet
char g = 'B';switch (g) {    case 'A': System.out.print("ممتاز"); break;    case 'B': System.out.print("جيد جدًا"); break;}
الناتج الصحيح:
Output×
جيد جدًا

2) صحّح: أكمل ما ينقص السطر

snippet
case 1  System.out.print("واحد")
إجابة نموذجية:
snippet
case 1: System.out.print("واحد"); break;

3) متى تُفضّل switch على if؟

أجب عن الأسئلة ثم اضغط «صحّح ورقتي».
أنهيت وحدة «اتّخاذ القرار»ثبّت ما تعلّمته بمراجعة تراكمية تخلط مواضيع الوحدة.ابدأ المراجعة ←