حلقة for والتحكم في التكرار
في الدرس السابق تعلمنا حلقات while و until. في هذا الدرس، سنتعلم حلقة for وكيفية التحكم في سير الحلقات باستخدام break و next.
حلقة for
حلقة for تُكرر الشيفرة لكل عنصر في نطاق (Range) أو مجموعة (Collection). هي طريقة أنيقة للتكرار عندما تعرف مسبقاً عدد التكرارات.
البنية الأساسية
مثال بسيط: العد من 1 إلى 5
الناتج:
فهم النطاقات (Ranges)
النطاق في روبي يُحدد مجموعة من القيم المتتالية:
| النطاق | المعنى | القيم |
|---|---|---|
1..5 | من 1 إلى 5 (شامل) | 1, 2, 3, 4, 5 |
1...5 | من 1 إلى 5 (غير شامل) | 1, 2, 3, 4 |
'a'..'e' | من a إلى e | a, b, c, d, e |
الناتج:
أمثلة عملية مع for
مثال 1: طباعة جدول ضرب
الناتج:
مثال 2: جمع الأرقام
الناتج:
مثال 3: طباعة الحروف
الناتج:
التحكم في الحلقات
أحياناً نريد تغيير السير الطبيعي للحلقة. روبي توفر كلمتين مفتاحيتين للتحكم:
break- الخروج من الحلقة فوراًnext- تخطي التكرار الحالي والانتقال للتالي
break - الخروج من الحلقة
break يُنهي الحلقة فوراً ويخرج منها، حتى لو لم تنتهِ الشروط.
مثال: البحث عن رقم معين
الناتج:
لاحظ أن الحلقة توقفت عند 5 ولم تكمل حتى 10.
مثال: إيقاف عند حد معين
الناتج:
استخدام break مع while
الناتج:
next - تخطي التكرار الحالي
next يتخطى بقية الشيفرة في التكرار الحالي وينتقل مباشرة للتكرار التالي.
مثال: طباعة الأرقام الزوجية فقط
الناتج:
مثال: تخطي قيم معينة
الناتج:
مثال: معالجة البيانات مع تخطي الفارغة
الناتج:
الجمع بين break و next
يمكن استخدام كليهما في نفس الحلقة:
الناتج:
أمثلة عملية متقدمة
مثال 1: إيجاد الأعداد الأولية
الناتج:
مثال 2: طباعة مثلث من الأرقام
الناتج:
مثال 3: البحث عن مضاعفات مشتركة
الناتج:
مقارنة for مع while
| الميزة | for | while |
|---|---|---|
| متى تستخدم | عدد تكرارات معروف | شرط غير محدد العدد |
| النطاقات | مثالية | تحتاج متغير عداد |
| القراءة | أوضح للتكرار المحدد | أوضح للشروط المعقدة |
| المتغير | يُعرَّف تلقائياً | تحتاج تعريفه يدوياً |
جدول ملخص التحكم في الحلقات
| الأمر | الوظيفة | متى تستخدمه |
|---|---|---|
break | الخروج من الحلقة فوراً | عند إيجاد القيمة المطلوبة أو تحقق شرط الإنهاء |
next | تخطي التكرار الحالي | لتجاهل قيم معينة والاستمرار |
نصائح مهمة
- استخدم for للنطاقات المعروفة - أوضح وأقصر من while
- استخدم break للخروج المبكر - لتوفير الوقت عند إيجاد المطلوب
- استخدم next لتصفية القيم - أوضح من وضع الشيفرة في else
- احذر من break في حلقات متداخلة - يخرج فقط من الحلقة الداخلية
- فضّل each على for - في روبي الحديثة (سنتعلمها لاحقاً)
الأخطاء الشائعة
1. نسيان أن break يخرج من الحلقة الداخلية فقط
الناتج:
2. وضع next في المكان الخطأ
3. استخدام break بدلاً من next
تمرين: الأرقام الزوجية مع استثناءات
حان وقت التطبيق! في محرر الشيفرة على اليسار:
المطلوب: اكتب برنامجاً يطبع الأرقام الزوجية من 1 إلى 20، لكن:
- تخطَّ الرقم 6 (لا تطبعه)
- توقف عند الوصول للرقم 14 (اطبعه ثم توقف)
تلميحات:
- استخدم
for i in 1..20 - استخدم
nextلتخطي الرقم 6 - استخدم
i % 2 == 0للتحقق من الزوجية - استخدم
breakللتوقف بعد طباعة 14
الناتج المتوقع:
ملاحظة: لاحظ أن 6 غير موجود في الناتج (تم تخطيه)، والحلقة توقفت عند 14.
تذكّر:
breakللخروج،nextللتخطي. استخدمهما بحكمة لكتابة شيفرة أكثر كفاءة!