محتويات
ماذا تعني الحلقة المتداخلة
تعني الحلقة المتداخلة هي مبدأ برمجة يتم خلاله تشغيل حلقة واحدة داخل حلقة أخرى، مما يتيح إمكانية معالجة بيانات كثيرة التعقيد بسرعة وبكل سهولة.
يشبهها بعض خبراء البرمجة بمبدأ عمل الساعة فكل ساعة منها تؤدي حكماً إلى الساعة الأخرى التي تليها، ويتم اعتماد الحلقات المتداخلة للتعامل الدقيق مع المهام التي تتألف بنيتها من طبقات متعددة ومتماثلة عبر التكرار، مما يجعل مبدأ العمل قريب من لعبة ماتريوشكا الروسية؛ إذ أن كل من عمليات الحلقات سيكشف عن مستويات أعمق في التالي.
الحلقة المتداخلة تمثل بنية متسلسلة تسلسلاً منطقيّاً تستخدم عادةً خلال برمجة لحواسيب وعمليات التشفير، وتتميز أكواد خوارزمية البرمجة بوجود عبارات تتكرر بشكل “متداخل”، وهذا يعني أنّ نص أو عبارة حلقة ما سيتواجد ضمن نص أ عبارة حلقة أخرى.
باتت الحلقة المتداخلة طريقة بسيطة بالنسبة للمبرمجين وفعّالة في خلق أحداث تعتمد على بعضها البعض عبر سلسلة مترابطة من الأكواد وعمليات التبديل بالإشارات، لذا فهي الجزء الأكثر شيوعاً بغالبية برامج الحواسيب، ولكن بإمكاننا العثور تطبيقات مشابهة لها كالمواقف المتقاطعة بعالم التكنولوجيا لعرض نوع ما من المعلومات. [1]
القواعد التي تنطبق على الحلقات المتداخلة
- قواعد الحلقات المفردة.
- قواعد الحلقات المتداخلة:
تنطبق على الحلقات المتداخلة عدّة قواعد ناظمة لمبدأ العمل وطريقة الإعداد، بحيث توجد قواعد عامّة وهي التي تنطبق عليها وعلى الحلقات المفردة بالإضافة إلى قواعد خاصة تنطبق على الحلقات المتداخلة فقط:
قواعد الحلقات المفردة: وهي القواعد والأساسيات التالية:
- يبدأ نص أي حلقة بعبارة FOR-TO”” ويختتم بعبارة “NEXT”.
- يستخدم اسم المتغير ذاته إذا كان قيد التشغيل العبارات “FOR-TO” وNEXT””.
- إنّ المتغير الذي يتم تشغيله سيظهر ضمن عبارة في الحلقة، لكن دون التمكن من تغيير قيمته.
- تتم تلقائياً زيادة قيمة المتغير الجاري تشغيله بما يعادل 1 ما لم يتم التغيير عبر جملة STEP.
- في حال تساوت القيم الأولية والنهائية للمتغير الجاري تشغيله وكانت أكثر من الـ 0، فسيتم تنفيذ الحلقة تلقائياً لمرة واحدة.
- يمكن أن يتم نقل التّحكم إلى خارج الحلقة لا إلى داخلها.
قواعد الحلقات المتداخلة: وهي قواعد ناظمة لآلية كتابة الخوارزميات البرمجية خاصة بالحلقات المتداخلة تتمثل بما يلي:
- تبدأ أي حلقة FOR-NEXT”” المتداخلة بالعبارة “FOR-TO” التي تتعلق بها وتنتهي بالعبارة “NEXT” التي تخصها.
- من غير الممكن تماثل المتغير ما بين الحلقة الخارجية والحلقة الداخلية عندما يكون قيد التشغيل.
- الحلقة الداخلية (أو الحلقة المتداخلة) يجب أن تدمج بالكامل ضمن حلقة خارجية ويستحيل أن تتداخل معها.
- يمكن أن يتم نقل التحكم من حلقة داخلية إلى عبارة ضمن حلقة خارجية أو حتى خارج الخوارزمية بأكملها، لكن يستحيل نقل التحكم من نقطة خارج الخوارزمية إلى عبارة داخل الخوارزمية.
- الحلقة الداخلية هي ما يكتمل أولاً، وتنفذ من خلالها كافة التكرارات في الحلقة الخارجية لكل تكرار. [2]
ما هي أنواع الحلقات
- For loop.
- While loop.
- Do-while loop.
يساعدك فهم أنواع المعتمدة في البرمجة على اختلافها بالتعرف عليها وعلى آلية استخدامها في عمليات كتابة التعليمات البرمجية الأكثر كفاءة ودقّةً خلال مشاريع البرمجة، وتتمثل تلك الأنواع بما يلي:
For loop: أي الحلقة for ذات البنية القوية في ميدان البرمجة، والتي تناسب الحالات المليئة بالتكرارات المتماثلة بحيث يتم تحديد حلقة ما يتم تنفيذها بعدد معين من المرات، وتتألف هذه الحلقة من مكونات أساسية تتمثل بما يلي:
- التهيئة لمتغير التحكم (أو ما يعرف بعداد الحلقة).
- تحديد حالة الاستمرارية بالحلقة (كتعبير عن الاختبار).
- تحديث المتغير (أي العديل على عدد مرات الزيادة أو النقصان).
يبدأ نص حلقة for بقوس مفتوح تليه تلك الأجزاء تفصلها فواصل منقوطة على النحو التالي (التهيئة؛ الحالة؛ التحديث).
While loop: أي حلقة while وهي حلقة غير محددة من ناحية التكرار فتستمر طالما أن الشرط المُحدد خالٍ من الأخطاء، وبعكس حلقة for فهي بحاجة إلى تعبير اختبار وحيد، فتبدأ بالكلمة الأساسية “while” تليها أداة الشرط بين قوسين ثم التعليمات البرمجية التي سينفذها، وتهيئة متغير التّحكم أمر قبل الولوج إلى الحلقة أما التحديث فيكون داخل جسم الحلقة.
:Do-while loop وهو النوع الأقرب إلى الحلقة while لكنها تختلف عنها بشكل طفيف ضمن تسلسل التنفيذ، ويتمثل الفارق الرئيسي بينهما أن حلقة do-while مضمونة لإجراء أمر نص الحلقة لمرة واحدة كحد أدنى، بغض النظر عن حال الشرط صحيحاً أم خاطئاً عند إدراج بيانات الحلقة، وعادةً يتم تقييم حالة الحلقة بعد كل تكرار. [3]
ما فائدة الحلقات المتداخلة
- إعادة استثمار التعليمات البرمجية.
- الكفاءة.
- المرونة.
- تسهيل استكشاف الأخطاء وإصلاحها.
تتمثل الفائدة من استخدام الحلقات المتداخلة في لغات أو عمليات البرمجة الحاسوبية بما يلي من النقاط:
إعادة استثمار التعليمات البرمجية: فمع نظام الحلقات ستتلاشى الحاجة لكتابة ذات التعليمات البرمجية من جديد لإنشاء أوامر تكرار العملية، مما يبسّط مبدأ التّعليمات البرمجيّة عبر تقصيرها وجعلها أسهل في الإدارة.
الكفاءة: إذ تتناول الحلقات المهام المتماثلة وتتعامل معها بكفاءة عالية خلال التكرار، ما يضمن عدم إبطاء البرنامج أو استهلاك جزء يسير من الذاكرة.
المرونة: عبر إتاحة إمكانية تعديل الحلقات بكل يسر لتأمين العمل مع سيناريوهات متباينة مهما كانت كمية البيانات أو المهام.
تسهيل استكشاف الأخطاء وإصلاحها: عبر أداء الحلقات بالشكل الدقيق مما يسهّل استكشاف مواطن الخطأ ويصلحها، قبل الاستخدام مجدداً للكتلة البرمجية عند كل تكرار.
الحلقات المتداخلة في بايثون
- نوع الحلقة.
- تعدد الحلقات الخارجية.
- عدد التكرارات في الحلقة الداخلية.
- ماهية التكرار في الحلقة الخارجية.
- استخدامات الحلقات المتداخلة.
ضمن لغة البرمجة الشهيرة بايثون أيضاً تُعرّف الحلقة المتداخلة بنفس التعريف المتعارف عليه بلغات البرمجة الأخرى كحلقة داخل جسم حلقة، لكنها تتميّز بعدّة أمور كما هو في الآتي:
نوع الحلقة: الحلقة سواء الداخلية أو الخارجية ممكن أن تكون من أي نوع من الحلقات، سواءً (حلقة الـ “while” أو حلقة الـ “for”)، فعلى سبيل المثال إذا كانت الحلقة الداخلية من نوع الـ “for” يمكن أن تحتوي الحلقة الخارجية حلقة while أو بالعكس.
تعدد الحلقات الخارجية: فلا يوجد قيود في تسلسل الحلقات الدّاخلية أو عددها بالحلقات الخارجية.
عدد التكرارات في الحلقة الداخلية: يكون مساوياً لعدد التكرارات في الحلقة الخارجية بعد الضرب بعدد المرات من التكرارات داخلياً.
ماهية التكرار في الحلقة الخارجية: كل تكرار واحد للحلقة الخارجية يعني أن الحلقة الدّاخلية نفذت كافة تكراراتها، أي أنه تتم إعادة تشغيل الحلقة الداخلية لإتمام تنفيذ تكراراتها قبل أن تنتهي الحلقة الخارجية لتبدأ بالتكرار التالي.
استخدامات الحلقات المتداخلة: في لغة بايثون تُستخدم الحلقات المتداخلة خلال التعامل مع هياكل البيانات متعددة الأبعاد، كما هو الحال خلال طباعة مصفوفات ثنائية الأبعاد، أو خلال تكرار قائمة غنيّة مع قائمة أخرى متداخلة. [4]


لو كان هناك مصفوفة ثنائية داخلية تحتوي على بيانات يمكن استخدام حلقة خارجية لقراءة جميع بيانتها للتحكم في الصفوف وحلقة داخلية للتحكم في الأعمدة