الدرس 6 : قوة التكرار - إتقان الحلقات Pour, Tant que, و Répéter
لقد تعلمنا كيف نجعل خوارزمياتنا تتخذ قرارات. الآن، سنمنحها ميزتها الأعظم: القدرة على أداء المهام الشاقة والمتكررة دون كلل أو ملل. هذه هي قوة الحلقات التكرارية (Loops)، الأداة التي تحول الحاسوب من مجرد آلة حاسبة إلى مساعد شخصي فائق القوة.
تشبيه: إعطاء الأوامر لمساعد آلي
تخيل أنك تريد من مساعدك الآلي أن يصفق 5 مرات. لن تقول له: "صفق، صفق، صفق، صفق، صفق". بل ستقول له: "كرر التصفيق 5 مرات". هذا الأمر الأخير هو بالضبط ما تفعله الحلقات. إنها طريقة لإعطاء أمر واحد لتنفيذ مهمة عدة مرات.
1. الحلقة المحددة (Pour): العامل الذي يعرف مهمته بالضبط
حلقة Pour
(For Loop): نستخدمها عندما نعرف تمامًا عدد مرات التكرار المطلوبة قبل أن تبدأ الحلقة بالدوران. هي حلقة تعتمد على عدّاد رقمي يتغير تلقائيًا.
الصيغة العامة والتحليل:
المكونات:
compteur
: "العدّاد" الذي يتتبع رقم الدورة الحالية.début
: القيمة الأولى التي يأخذها العدّاد.fin
: القيمة الأخيرة التي يصل إليها العدّاد (ويتوقف بعدها).Pas
(اختياري): مقدار القفزة في كل دورة. إذا لم يكتب، فالقيمة الافتراضية هي 1. يمكن أن تكون سالبة للعد التنازلي.
مثال تطبيقي: حساب مضروب عدد (Factorial)
المشكلة: حساب مضروب العدد N
(الذي يرمز له N!
)، وهو حاصل ضرب جميع الأعداد الصحيحة من 1 إلى N. مثلاً: 4! = 1 * 2 * 3 * 4 = 24
.
2. الحلقة الشرطية القَبْلية (Tant que): الحارس الحذر
حلقة Tant que
(While Loop): نستخدمها عندما يكون التكرار معتمدًا على شرط يجب التحقق منه قبل كل دورة. تستمر الحلقة في الدوران "طالما" الشرط صحيح.
تشبيه: الحارس عند البوابة
تخيل حارسًا عند بوابة. أمره هو: "طالما أن الضوء أخضر، اسمح للناس بالمرور". إذا كان الضوء أخضر، يسمح بمرور شخص، ثم ينظر للضوء مرة أخرى، وهكذا. إذا كان الضوء أحمر من البداية، لن يمر أي شخص. هذا هو جوهر Tant que
، فقد لا تنفذ أبدًا.
الصيغة العامة والتحليل:
مثال تطبيقي: التحقق من صحة الإدخال
المشكلة: إجبار المستخدم على إدخال علامة صالحة (بين 0 و 20).
3. الحلقة الشرطية البَعْدية (Répéter...Jusqu'à): الموظف الذي "ينفذ ثم يسأل"
حلقة Répéter...Jusqu'à
(Repeat...Until Loop): تشبه Tant que
لكنها تفحص الشرط بعد تنفيذ جسم الحلقة. هذا يعني أن التعليمات داخل الحلقة ستنفذ مرة واحدة على الأقل بشكل مضمون.
تشبيه: لعبة تخمين الرقم
عندما تلعب لعبة تخمين، لا يمكنك أن تعرف ما إذا كان تخمينك صحيحًا إلا بعد أن تقوم بالتخمين أولاً. يجب عليك أن "تخمن" (تنفيذ)، ثم "تتحقق" (فحص الشرط). هذه هي الفلسفة المثالية لحلقة Répéter
.
الصيغة العامة والتحليل:
انتبه لمنطق التوقف! Tant que
تستمر طالما الشرط Vrai
. أما Répéter
فتستمر طالما الشرط Faux
، وتتوقف عندما يصبح الشرط Vrai
. إنهما متعاكستان.
مثال تطبيقي: قائمة تفاعلية
المشكلة: عرض قائمة خيارات على المستخدم، وتنفيذ الأوامر، والاستمرار حتى يختار المستخدم خيار الخروج.
مقارنة حاسمة: متى تختار أي حلقة؟
المعيار | Pour (لأجل) | Tant que (طالما) | Répéter...Jusqu'à (كرر...حتى) |
---|---|---|---|
جوهر الاستخدام | عدد التكرارات معروف مسبقًا | التكرار يعتمد على شرط يتم فحصه قبل التنفيذ | التكرار يعتمد على شرط يتم فحصه بعد التنفيذ |
التنفيذ المضمون | يعتمد على القيم (قد لا ينفذ) | قد لا ينفذ أبدًا (0 مرة أو أكثر) | ينفذ مرة واحدة على الأقل |
منطق الاستمرار | طالما العدّاد في مجاله | طالما الشرط صحيح (Vrai) | طالما الشرط خاطئ (Faux) |
مثال نموذجي | عرض الأعداد من 1 إلى N | التحقق من صحة الإدخال | طلب كلمة مرور |
أخطر فخ: الحلقة اللانهائية (Infinite Loop)
هذا هو أكبر خطأ يمكن أن يقع فيه المبتدئون عند استخدام حلقات Tant que
و Répéter
. تحدث الحلقة اللانهائية عندما لا يتم تحديث الشرط داخل الحلقة، مما يجعلها تستمر إلى الأبد.
مثال خاطئ:
لتجنب هذا الفخ، اسأل نفسك دائمًا: "هل توجد تعليمة داخل الحلقة تضمن أن الشرط سيصبح خاطئًا (أو صحيحًا في حالة Répéter) في النهاية؟"
خلاصة الدرس السادس
- الحلقات هي أساس أتمتة المهام المتكررة في البرمجة.
Pour
: للمهام ذات العدد المحدد من التكرارات. إنها حلقة "العدّاد".Tant que
: للمهام التي تستمر طالما أن شرطًا معينًا محقق. إنها حلقة "الفحص قبل التنفيذ".Répéter...Jusqu'à
: للمهام التي يجب أن تنفذ مرة واحدة على الأقل ثم تستمر حتى يتحقق شرط التوقف. إنها حلقة "التنفيذ قبل الفحص".- اختيار الحلقة الصحيحة ليس فقط مسألة صحة، بل هو أيضًا مسألة وضوح وكفاءة في كتابة الخوارزمية.