الحلقات Loops (for / while / do..while)
تخيل أنك تريد طباعة الأرقام من 1 إلى 100، أو عرض قائمة أسماء، أو جمع مجموع درجات… هل ستكتب 100 سطر؟ 😅 أكيد لا. هنا تأتي الحلقات (Loops): تكرّر نفس الأوامر عددًا معينًا من المرات.
لماذا نستخدم الحلقات؟
- لتكرار الكود بدل تكراره يدويًا
- للتعامل مع القوائم (Arrays) لاحقًا
- لتسريع كتابة البرامج وتنظيمها
- لعمل عدّادات، جداول، نتائج… إلخ
قاعدة مهمة
الحلقة = تكرار… لكن لازم يكون لها نهاية، وإلا ستدخل في حلقة لا نهائية.
حلقة for (الأشهر والأكثر استخدامًا)
حلقة for مفيدة عندما تعرف بالضبط كم مرة تريد التكرار.
شكلها الأساسي:
for (start; condition; step) {
// كود يتكرر
}
شرح سريع لكل جزء
- start: البداية (مثلاً i = 1)
- condition: الشرط (طالما الشرط true تستمر الحلقة)
- step: خطوة التغيير (زيادة i أو نقصانها)
مثال 1: طباعة الأرقام من 1 إلى 5
for (let i = 1; i <= 5; i++) {
console.log(i);
}
النتيجة ستكون: 1 ثم 2 ثم 3 ثم 4 ثم 5
لاحظ: المتغير i غالبًا يرمز إلى (index) أو عدّاد.
مثال 2: حساب مجموع الأرقام من 1 إلى 5
نستخدم متغير اسمه sum لتجميع النتائج. الفكرة: كل دورة نضيف رقم جديد للمجموع.
let sum = 0;
for (let i = 1; i <= 5; i++) {
sum += i; // sum = sum + i
}
console.log(sum); // 15
ليش بدأنا sum = 0 ؟
لأننا نريد بداية “نظيفة”. لو بدأتها 10، راح يكون الناتج غلط.
حلقة while (عندما لا تعرف عدد التكرارات)
نستخدم while عندما لا تعرف مسبقًا عدد التكرارات، ولكن تعرف شرط التوقف.
while (condition) {
// كود يتكرر
}
طالما الشرط true تستمر الحلقة، وإذا أصبح false تتوقف.
مثال: طباعة الأرقام من 1 إلى 5 باستخدام while
let i = 1;
while (i <= 5) {
console.log(i);
i++;
}
تنبيه مهم
لو نسيت i++ الحلقة لن تنتهي وستصبح حلقة لا نهائية.
حلقة do..while (تنفذ مرة واحدة على الأقل)
الفرق بين while و do..while:
- while قد لا تعمل ولا مرة إذا الشرط false من البداية
- do..while تعمل مرة واحدة على الأقل ثم تفحص الشرط
let x = 10;
do {
console.log("سأطبع مرة واحدة على الأقل");
x++;
} while (x < 5);
هنا الشرط x < 5 false، لكن الكود طُبع مرة واحدة لأن do تنفذ أولاً.
أوامر مهمة داخل الحلقات: break و continue
break (إيقاف الحلقة)
تستخدمها عندما تريد الخروج من الحلقة فورًا.
for (let i = 1; i <= 10; i++) {
if (i === 5) {
break; // توقف هنا
}
console.log(i);
}
سيطبع 1 إلى 4 فقط.
continue (تجاوز دورة واحدة)
تتجاوز رقم معين وتكمل.
for (let i = 1; i <= 5; i++) {
if (i === 3) {
continue; // تجاهل 3
}
console.log(i);
}
سيطبع 1، 2، 4، 5.
تمارين بسيطة (طبّق لتثبت)
- اطبع الأرقام من 10 إلى 1 (تنازليًا) باستخدام for.
-
احسب مجموع الأرقام الزوجية من 1 إلى 20.
تلميح: استخدم
if (i % 2 === 0) - اطبع كلمة "مرحبا" 5 مرات باستخدام while.
نصيحة
لا تكتفي بالقراءة… افتح الكونسول وجرب. التطبيق هو الذي يثبت المعلومة.
أخطاء شائعة في الحلقات (تجنبها)
- نسيان زيادة العداد (مثل i++) مما يسبب حلقة لا نهائية
- كتابة شرط توقف خاطئ (مثل i <= 100 بدل i < 100)
- استخدام break كثير بدون سبب (يخرب منطق البرنامج)
- عدم فهم الفرق بين break و continue
ماذا بعد هذا الدرس؟
الدرس القادم: الدوال Functions
سنتعلم كيف نجمع أوامر كثيرة في “دالة” ونعيد استخدامها بدل تكرار الكود.