التحكّم في الحلقات: break و continue
كلمتان تتحكّمان في سير الحلقة من الداخل: واحدة تخرج منها، وأخرى تتخطّى دورة واحدة.
- استخدام break للخروج الفوري من الحلقة.
- استخدام continue لتخطّي الدورة الحالية فقط.
- توقّع ناتج حلقة تحتوي على break أو continue.
١الفرق في جملة واحدة
وتأتي كلتاهما غالبًا داخل شرط if يتحقّق من حالة معيّنة.
٢الحلقة نفسها بالكلمتين
for (int i = 1; i <= 5; i++){ if (i == 3) break; System.out.println(i);}System.out.println("انتهت الحلقة");
for (int i = 1; i <= 5; i++){ if (i == 3) continue; System.out.println(i);}System.out.println("انتهت الحلقة");
| break | continue | |
|---|---|---|
| ماذا يفعل؟ | يُنهي الحلقة كلّها | يتخطّى الدورة الحالية فقط |
| ثم ماذا؟ | يخرج من الحلقة نهائيًّا | يعود لأعلى الحلقة للدورة التالية |
| ناتج المثال | 1 2 | 1 2 4 5 |
٣أمثلة تطبيقية
break: ابحث ثم توقّف
int target = 7; for (int i = 1; i <= 10; i++){ if (i == target) { System.out.println("وجدته عند: " + i); break; // لا داعي لإكمال باقي الأرقام }}
continue: اطبع الفردي فقط
for (int i = 1; i <= 6; i++){ if (i % 2 == 0) continue; // تخطَّ الزوجي System.out.println(i); // اطبع الفردي فقط}
٤نقاط مهمة
- break تعمل أيضًا في switch بالمعنى نفسه: «اخرج الآن».
- continue لا توقف الحلقة؛ تتخطّى دورة واحدة فقط.
- لا تُفرط فيهما؛ كثرتهما تصعّب تتبّع الكود، وغالبًا يكفي شرط حلقة جيّد.
توقّع وتحقّق
أجب قبل أن تنظر إلى الشرح. التصحيح فوري، وإجاباتك تُحفظ.
ما الناتج؟
for (int i = 1; i <= 6; i++){ if (i == 4) break; System.out.print(i + " ");}
ما الناتج؟
for (int i = 1; i <= 6; i++){ if (i == 4) continue; System.out.print(i + " ");}
أي كلمة تناسب: «عندما تجد الرقم المطلوب توقّف عن البحث»؟
الخلاصة
- break: اخرج من الحلقة كلّها فورًا.
- continue: تخطَّ بقية هذه الدورة وانتقل للتالية.
- كلتاهما توضع غالبًا داخل if.
- استخدمهما عند الحاجة الواضحة فقط.
تحدٍّ برمجي: مُصفّي الأرقام
متوسطمرّ على الأرقام من 1 إلى 20: تخطَّ مضاعفات 3، وتوقّف تمامًا عندما يتجاوز الرقم 15.
- استخدم continue لتخطّي مضاعفات 3.
- استخدم break للتوقّف بعد 15.
- اطبع الأرقام في سطر واحد بينها مسافات.
ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:
public class Filter{ public static void main(String[] args) { for (int i = 1; i <= 20; i++) { // continue و break هنا } }}
💡 تلميح 1
💡 تلميح 2
حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.
public class Filter{ public static void main(String[] args) { for (int i = 1; i <= 20; i++) { if (i % 3 == 0) continue; // تخطَّ مضاعفات 3 if (i > 15) break; // توقّف بعد 15 System.out.print(i + " "); } }}
أسئلة التقييم
ورقة العمل: التحكّم في الحلقات: break و continue. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».
1السؤال الأول: اختر الإجابة الصحيحة
1) break داخل الحلقة:
2) continue:
3) break يعمل أيضًا في:
4) بعد continue يعود التنفيذ إلى:
2السؤال الثاني: صح أم خطأ
3السؤال الثالث: أكمل الفراغات
1) يُنهي الحلقة كلّها.
💡 تعني «اكسر/اخرج».
2) يتخطّى الدورة الحالية.
💡 تعني «استمر».
3) عند إيجاد الهدف نستخدم للخروج.
💡 هل تكمل البحث أم تخرج؟
4) لطباعة الفردي فقط نتخطّى الزوجي بـ .
💡 تخطَّ الدورة فقط.
5) break يعمل في switch وفي .
💡 for و while من …
4السؤال الرابع: التوصيل
طابِق كل عنصر في العمود (أ) بما يناسبه في العمود (ب):
- 1) وجدتُ ما أبحث عنه فأخرج
- 2) تخطّي الأرقام الزوجية
- 3) break
- 4) continue
- 5) switch
- أ. يُنهي الحلقة.
- ب. يتخطّى الدورة.
- ج. break.
- د. continue.
- هـ. يُستخدم فيه break أيضًا.
5السؤال الخامس: أسئلة عملية
1) تتبّع الناتج:
for (int i = 1; i <= 5; i++) { if (i == 3) break; System.out.print(i + " ");}
2) تتبّع الناتج:
for (int i = 1; i <= 5; i++) { if (i == 3) continue; System.out.print(i + " ");}
3) أيّهما تستخدم للخروج فور إيجاد القيمة؟