حلقات while و until
في البرمجة، نحتاج أحياناً لتكرار شيفرة معين عدة مرات. بدلاً من كتابة نفس الشيفرة مراراً وتكراراً، نستخدم الحلقات التكرارية (Loops). في هذا الدرس، سنتعلم حلقتي while و until.
حلقة while (طالما)
حلقة while تُكرر الشيفرة طالما الشرط صحيح (true). بمجرد أن يصبح الشرط خاطئاً (false)، تتوقف الحلقة.
البنية الأساسية
مثال بسيط: العد من 1 إلى 5
الناتج:
كيف تعمل الحلقة؟
- التحقق من الشرط: هل
counter <= 5؟ (هل 1 <= 5؟ نعم) - تنفيذ الشيفرة: اطبع counter، ثم زِد counter بـ 1
- العودة للخطوة 1: تحقق من الشرط مجدداً
- التكرار: يستمر حتى يصبح الشرط false (عندما counter = 6)
مثال: العد التنازلي
الناتج:
أهمية تحديث المتغير
تحذير مهم: إذا لم تُحدّث المتغير داخل الحلقة، ستحصل على حلقة لا نهائية (Infinite Loop)!
ملاحظة: في المتصفح، ستتوقف الشيفرة تلقائياً بعد 60 ثانية لمنع تجميد الصفحة.
أمثلة عملية
مثال 1: جمع الأرقام من 1 إلى 10
الناتج:
مثال 2: مضاعفة الرقم حتى يتجاوز 100
الناتج:
لاحظ أن 128 طُبعت لأن الشرط يُفحص قبل التنفيذ، و 64 <= 100.
مثال 3: طباعة أعداد فردية
الناتج:
حلقة until (حتى)
حلقة until هي عكس حلقة while. تُكرر الشيفرة حتى يصبح الشرط صحيحاً.
while= كرر طالما الشرط صحيحuntil= كرر حتى يصبح الشرط صحيحاً (أي طالما الشرط خاطئ)
البنية الأساسية
مثال: العد من 1 إلى 5 باستخدام until
الناتج:
مقارنة while و until
نفس النتيجة، طريقتان مختلفتان:
| while | until | المعنى |
|---|---|---|
while x <= 5 | until x > 5 | طالما x أصغر أو يساوي 5 |
while x < 10 | until x >= 10 | طالما x أصغر من 10 |
while x != 0 | until x == 0 | طالما x لا يساوي صفر |
مثال: العد التنازلي باستخدام until
الناتج:
متى تستخدم while ومتى تستخدم until؟
استخدم while عندما:
- تريد الاستمرار طالما شيء ما صحيح
- الشرط الطبيعي للاستمرار
استخدم until عندما:
- تريد الاستمرار حتى يحدث شيء ما
- تنتظر تحقق شرط معين
الحلقات السطرية (Inline Loops)
يمكن كتابة حلقات بسيطة في سطر واحد باستخدام المُعدِّل (modifier):
الناتج (لكليهما):
ملاحظة: الحلقات السطرية أقل وضوحاً، استخدمها فقط للعمليات البسيطة جداً.
أمثلة عملية متقدمة
مثال 1: إيجاد العوامل
الناتج:
مثال 2: حساب المضروب (Factorial)
الناتج:
مثال 3: جدول الضرب
الناتج:
حلقات متداخلة (Nested Loops)
يمكن وضع حلقة داخل حلقة أخرى:
الناتج:
مثال: طباعة مثلث من النجوم
الناتج:
الأخطاء الشائعة
1. نسيان تحديث المتغير
2. شرط لا يتحقق أبداً
3. خطأ في اتجاه المقارنة
جدول ملخص
| الحلقة | متى تستمر | متى تتوقف | الاستخدام |
|---|---|---|---|
while شرط | طالما الشرط true | عندما يصبح الشرط false | الاستمرار بشرط |
until شرط | طالما الشرط false | عندما يصبح الشرط true | الانتظار لتحقق شرط |
نصائح مهمة
- تأكد من تحديث المتغير - لتجنب الحلقات اللانهائية
- تحقق من الشرط الابتدائي - تأكد أن الحلقة ستنفذ مرة واحدة على الأقل إذا أردت
- استخدم += و -= - لتبسيط شيفرة تحديث المتغيرات
- اختر while أو until - بناءً على أيهما أوضح للقراءة
- احذر من الحلقات المتداخلة - قد تؤثر على الأداء إذا كثرت التكرارات
تمرين: العد التنازلي من 10
حان وقت التطبيق! في محرر الشيفرة على اليسار:
المطلوب: اكتب برنامجاً يعد تنازلياً من 10 إلى 1، ثم يطبع "انطلق!".
- عرّف متغير
countdown = 10 - استخدم حلقة
whileللعد التنازلي - اطبع كل رقم في سطر منفصل
- بعد انتهاء الحلقة، اطبع "انطلق!"
الناتج المتوقع:
تلميح: استخدم
countdown -= 1أوcountdown = countdown - 1لتقليل القيمة في كل تكرار.
تذكّر: الحلقات أداة قوية، لكن تأكد دائماً أن لديك طريقة للخروج منها!