الدرس 6 : قوة التكرار - إتقان الحلقات Pour, Tant que, Répéter

الدرس 6 : قوة التكرار - إتقان الحلقات Pour, Tant que, Répéter

الدرس 6 : قوة التكرار - إتقان الحلقات Pour, Tant que, و Répéter

لقد تعلمنا كيف نجعل خوارزمياتنا تتخذ قرارات. الآن، سنمنحها ميزتها الأعظم: القدرة على أداء المهام الشاقة والمتكررة دون كلل أو ملل. هذه هي قوة الحلقات التكرارية (Loops)، الأداة التي تحول الحاسوب من مجرد آلة حاسبة إلى مساعد شخصي فائق القوة.

تشبيه: إعطاء الأوامر لمساعد آلي

تخيل أنك تريد من مساعدك الآلي أن يصفق 5 مرات. لن تقول له: "صفق، صفق، صفق، صفق، صفق". بل ستقول له: "كرر التصفيق 5 مرات". هذا الأمر الأخير هو بالضبط ما تفعله الحلقات. إنها طريقة لإعطاء أمر واحد لتنفيذ مهمة عدة مرات.

1. الحلقة المحددة (Pour): العامل الذي يعرف مهمته بالضبط

حلقة Pour (For Loop): نستخدمها عندما نعرف تمامًا عدد مرات التكرار المطلوبة قبل أن تبدأ الحلقة بالدوران. هي حلقة تعتمد على عدّاد رقمي يتغير تلقائيًا.

الصيغة العامة والتحليل:

Pour compteur AllantDe début A fin [Pas خطوة] Faire     // ... التعليمات التي سيتم تكرارها ... FinPour

المكونات:

  • compteur: "العدّاد" الذي يتتبع رقم الدورة الحالية.
  • début: القيمة الأولى التي يأخذها العدّاد.
  • fin: القيمة الأخيرة التي يصل إليها العدّاد (ويتوقف بعدها).
  • Pas (اختياري): مقدار القفزة في كل دورة. إذا لم يكتب، فالقيمة الافتراضية هي 1. يمكن أن تكون سالبة للعد التنازلي.

مثال تطبيقي: حساب مضروب عدد (Factorial)

المشكلة: حساب مضروب العدد N (الذي يرمز له N!)، وهو حاصل ضرب جميع الأعداد الصحيحة من 1 إلى N. مثلاً: 4! = 1 * 2 * 3 * 4 = 24.

Algorithme CalculFactoriel Variables     N, i : Entier     factoriel : Réel // قد يصبح الرقم كبيرًا جدًا Début     Écrire("أدخل عددًا صحيحًا موجبًا لحساب مضروبه: ")     Lire(N)          Si (N < 0) Alors         Écrire("لا يمكن حساب المضروب لعدد سالب.")     Sinon         factoriel ← 1 // تهيئة المضروب بالواحد (العنصر الحيادي لعملية الضرب)         Pour i AllantDe 1 A N Faire             factoriel ← factoriel * i         FinPour         Écrire(N, "! = ", factoriel)     FinSi Fin

2. الحلقة الشرطية القَبْلية (Tant que): الحارس الحذر

حلقة Tant que (While Loop): نستخدمها عندما يكون التكرار معتمدًا على شرط يجب التحقق منه قبل كل دورة. تستمر الحلقة في الدوران "طالما" الشرط صحيح.

تشبيه: الحارس عند البوابة

تخيل حارسًا عند بوابة. أمره هو: "طالما أن الضوء أخضر، اسمح للناس بالمرور". إذا كان الضوء أخضر، يسمح بمرور شخص، ثم ينظر للضوء مرة أخرى، وهكذا. إذا كان الضوء أحمر من البداية، لن يمر أي شخص. هذا هو جوهر Tant que، فقد لا تنفذ أبدًا.

الصيغة العامة والتحليل:

Tant que (شرط الاستمرار هو Vrai) Faire     // ... التعليمات التي سيتم تكرارها ...     // هام: يجب تحديث المتغير الموجود في الشرط هنا! FinTantque

مثال تطبيقي: التحقق من صحة الإدخال

المشكلة: إجبار المستخدم على إدخال علامة صالحة (بين 0 و 20).

Algorithme ValiderNote Variables note: Réel Début     Écrire("أدخل العلامة (بين 0 و 20): ")     Lire(note)          Tant que (note < 0 OU note > 20) Faire         Écrire("علامة خاطئة! أعد الإدخال (بين 0 و 20): ")         Lire(note) // نعطي المستخدم فرصة أخرى لتصحيح الخطأ     FinTantque          Écrire("شكرًا لك. العلامة المدخلة هي: ", note) Fin

3. الحلقة الشرطية البَعْدية (Répéter...Jusqu'à): الموظف الذي "ينفذ ثم يسأل"

حلقة Répéter...Jusqu'à (Repeat...Until Loop): تشبه Tant que لكنها تفحص الشرط بعد تنفيذ جسم الحلقة. هذا يعني أن التعليمات داخل الحلقة ستنفذ مرة واحدة على الأقل بشكل مضمون.

تشبيه: لعبة تخمين الرقم

عندما تلعب لعبة تخمين، لا يمكنك أن تعرف ما إذا كان تخمينك صحيحًا إلا بعد أن تقوم بالتخمين أولاً. يجب عليك أن "تخمن" (تنفيذ)، ثم "تتحقق" (فحص الشرط). هذه هي الفلسفة المثالية لحلقة Répéter.

الصيغة العامة والتحليل:

Répéter     // ... التعليمات التي سيتم تكرارها (تنفذ مرة واحدة على الأقل) ... Jusqu'à (شرط التوقف هو Vrai)

انتبه لمنطق التوقف! Tant que تستمر طالما الشرط Vrai. أما Répéter فتستمر طالما الشرط Faux، وتتوقف عندما يصبح الشرط Vrai. إنهما متعاكستان.

مثال تطبيقي: قائمة تفاعلية

المشكلة: عرض قائمة خيارات على المستخدم، وتنفيذ الأوامر، والاستمرار حتى يختار المستخدم خيار الخروج.

Algorithme MenuInteractif Variables choix: Entier Début     Répéter         Écrire("==== قائمتي ====")         Écrire("1. عرض رسالة ترحيب")         Écrire("2. عرض الوقت (افتراضي)")         Écrire("0. خروج")         Lire(choix)                  Selon choix Faire             Cas 1: Écrire("مرحباً بك!")             Cas 2: Écrire("الوقت هو 10:00 صباحًا")         FinSelon              Jusqu'à (choix = 0)          Écrire("شكرًا لاستخدامك البرنامج. إلى اللقاء!") Fin

مقارنة حاسمة: متى تختار أي حلقة؟

المعيارPour (لأجل)Tant que (طالما)Répéter...Jusqu'à (كرر...حتى)
جوهر الاستخدامعدد التكرارات معروف مسبقًاالتكرار يعتمد على شرط يتم فحصه قبل التنفيذالتكرار يعتمد على شرط يتم فحصه بعد التنفيذ
التنفيذ المضمونيعتمد على القيم (قد لا ينفذ)قد لا ينفذ أبدًا (0 مرة أو أكثر)ينفذ مرة واحدة على الأقل
منطق الاستمرارطالما العدّاد في مجالهطالما الشرط صحيح (Vrai)طالما الشرط خاطئ (Faux)
مثال نموذجيعرض الأعداد من 1 إلى Nالتحقق من صحة الإدخالطلب كلمة مرور

أخطر فخ: الحلقة اللانهائية (Infinite Loop)

هذا هو أكبر خطأ يمكن أن يقع فيه المبتدئون عند استخدام حلقات Tant que و Répéter. تحدث الحلقة اللانهائية عندما لا يتم تحديث الشرط داخل الحلقة، مما يجعلها تستمر إلى الأبد.

مثال خاطئ:

Variables x: Entier ← 5 Tant que (x > 0) Faire     Écrire("X لا يزال موجبًا")     // خطأ! نسينا تحديث قيمة x. ستبقى x=5 للأبد.     // التصحيح: يجب إضافة السطر x ← x - 1 FinTantque

لتجنب هذا الفخ، اسأل نفسك دائمًا: "هل توجد تعليمة داخل الحلقة تضمن أن الشرط سيصبح خاطئًا (أو صحيحًا في حالة Répéter) في النهاية؟"

خلاصة الدرس السادس

  • الحلقات هي أساس أتمتة المهام المتكررة في البرمجة.
  • Pour: للمهام ذات العدد المحدد من التكرارات. إنها حلقة "العدّاد".
  • Tant que: للمهام التي تستمر طالما أن شرطًا معينًا محقق. إنها حلقة "الفحص قبل التنفيذ".
  • Répéter...Jusqu'à: للمهام التي يجب أن تنفذ مرة واحدة على الأقل ثم تستمر حتى يتحقق شرط التوقف. إنها حلقة "التنفيذ قبل الفحص".
  • اختيار الحلقة الصحيحة ليس فقط مسألة صحة، بل هو أيضًا مسألة وضوح وكفاءة في كتابة الخوارزمية.
google-playkhamsatmostaqltradent