الحلقة المتداخلة
الحلقة المتداخلة هي حلقة دوران موجودة داخل حلقة دوران أخرى. هذا يعني أن الحلقة الداخلية سوف تتكرر مع كل تكرار للحلقة الخارجية.
فيما يلي مثال على حلقة متداخلة في لغة C++:
#include <iostream> using namespace std; int main() { for ( size_t i = 1; i <= 5; i++) { for ( size_t j = 1; j <= 6; j++) { cout << "*"; } cout << endl; } return 0; }
هذا البرنامج يحتوي على حلقة متداخلة تطبع مستطيلاً من النجوم إلى شاشة المخرجات. تتكرر الحلقة الخارجية 5 مرات، والحلقة الداخلية تتكرر 6 مرات. هذا يعني أنه سيتم تنفيذ الكود الموجود داخل الحلقة الداخلية 30 مرة.
فيما يلي شرح خطوة بخطوة لما يحدث عند تشغيل هذا البرنامج:
- يعرّف البرنامج متغيرين إثنين
i
وj
ويعطيهما قيمة بدائية تساوي 1. - يبدأ البرنامج بحلقة الدوران الخارجية for.
- الشرط في الحلقة الخارجية يتحقق إذا كانت قيمة المتغير
i
أقل أو يساوي 5. إذا كانت كذلك، يتم الإنتقال إلى حلقة الدوران الداخلية. - الشرط في الحلقة الداخلية يتأكد ما إذا كانت قيمة المتغير
j
أقل أو تساوي 6. إذا كانت كذلك، يطبع البرنامج نجمة إلى لوحة المخرجات. - الحلقة الداخلية تقوم بزيادة قيمة المتغير
j
بمقدار 1. - تقوم الحلقة الداخلية بتكرار الخطوات 4 إلى 5 حتى تصبح قيمة المتغير
j
أكبر من 6. - بعد انتهاء حلقة for الداخلية، يقوم البرنامج بطباعة حرف السطر الجديد إلى شاشة المخرجات.
- حلقة for الخارجية تقوم بزيادة قيمة المتغير
i
بمقدار 1. - تقوم الحلقة الخارجية بتكرار الخطوات 3 إلى 8 حتى تصبح قيمة المتغير
i
أكبر من 5:
مخرجات البرنامج تكون كالتالي:
****** ****** ****** ****** ******
يمكن استخدام الحلقات المتداخلة لحل مجموعة متنوعة من المشكلات. على سبيل المثال، يمكنك استخدام حلقات متداخلة للتكرار على جميع عناصر مصفوفة ثنائية الأبعاد، أو لإنشاء جميع المجموعات الممكنة لمجموعتين من القيم.
فيما يلي بعض النصائح لاستخدام الحلقات المتداخلة:
- استخدم الحلقات المتداخلة بشكل مقتصد. يمكن أن تجعل الحلقات المتداخلة التعليمات البرمجية الخاصة بك أكثر صعوبة في القراءة والفهم.
- استخدم الحلقات المتداخلة لتجنب كتابة تعليمات برمجية مكررة. إذا وجدت نفسك تكتب نفس الكود داخل حلقة عدة مرات، فكر في استخدام حلقات متداخلة.
- استخدم الحلقات المتداخلة لجعل التعليمات البرمجية الخاصة بك أكثر كفاءة. على سبيل المثال، يمكنك استخدام حلقات متداخلة لتجنب البحث عن عنصر في مصفوفة عدة مرات.