JavaScript / التكرار

تكرار الحسابات والحلقات المتداخلة

اجمع واضرب بحلقة for، ونفّذ أمرًا في دورة معينة بـ if، وضع حلقة داخل حلقة.

الحلقة لا تكرر الطباعة فقط، بل أي عملية. لحساب 2×2×2×2×2 نبدأ بـ num = 1 ونضربه في 2 خمس مرات، فيحمل المتغير الناتج من دورة إلى التالية:

JavaScript
let num = 1;
for (let i = 0; i < 5; i++) {
  num = num * 2;
  console.log(num);
}
وحدة التحكم
2
4
8
16
32

ويمكن استخدام العدّاد نفسه في الحساب. هنا يأخذ i القيم من 1 إلى 5، فيحسب البرنامج 1×2×3×4×5 ويطبع الناتج النهائي فقط لأن الطباعة بعد الحلقة:

JavaScript
let num = 1;
for (let i = 1; i <= 5; i++) {
  num = num * i;
}
console.log(num);
وحدة التحكم
120

وللجمع نبدأ من 0. والاختصار total += i يعني total = total + i:

JavaScript
let total = 0;
for (let i = 1; i <= 10; i++) {
  total += i;
}
console.log(total);
وحدة التحكم
55
في الضرب يبدأ المتغير بـ 1 (الضرب في 0 يعطي 0 دائمًا)، وفي الجمع يبدأ بـ 0. وأعلن المتغير قبل الحلقة، وإلا بدأ من جديد في كل دورة.

if داخل الحلقة

بوضع if داخل الحلقة ننفّذ أمرًا في دورة معينة فقط. هنا تمرين بطن خمس مرات، وبعد المرة الثالثة جري. العدّاد يبدأ من 0، فالمرة الثالثة هي i == 2:

JavaScript
for (let i = 0; i < 5; i++) {
  console.log("sit-up");
  if (i == 2) {
    console.log("running");
  }
}
وحدة التحكم
sit-up
sit-up
sit-up
running
sit-up
sit-up

حلقة داخل حلقة

يمكن وضع حلقة كاملة داخل حلقة أخرى. في كل دورة من الحلقة الخارجية تعمل الحلقة الداخلية من أولها لآخرها. هكذا نطبع جدول ضرب صغيرًا:

JavaScript
for (let i = 1; i <= 3; i++) {
  for (let j = 1; j <= 3; j++) {
    console.log(i + " x " + j + " = " + i * j);
  }
}
وحدة التحكم
1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9

ولرسم شكل نبني كل سطر بإضافة "*" إلى نص فارغ في الحلقة الداخلية، ثم نطبعه في الحلقة الخارجية:

JavaScript
for (let row = 1; row <= 3; row++) {
  let line = "";
  for (let col = 1; col <= 5; col++) {
    line = line + "*";
  }
  console.log(line);
}
وحدة التحكم
*****
*****
*****
أعطِ كل حلقة عدّادًا باسم مختلف (i وj). عدّاد الحلقة الداخلية يبدأ من جديد في كل دورة من الخارجية، لذلك تعمل 3 × 3 = 9 مرات.

تدريبات

1اكتب البرنامجتدريب المنهج

احسب 7×7×7×7×7: أعلن num = 1، وكرر num = num * 7 خمس مرات (i من 0 وأصغر من 5)، ثم اطبع num مرة واحدة في النهاية.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
2اكتب البرنامجتدريب المنهج

احسب 1×2×3×…×10 باستخدام العدّاد i (من 1 إلى 10)، ثم اطبع الناتج.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
3اكتب البرنامجتدريب المنهج

احسب 0+1+2+3+4+5: أعلن num = 0، وكرر num = num + i ست مرات (i من 0 وأصغر من 6)، ثم اطبع num.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
4اكتب البرنامجتدريب المنهج

احسب 5040÷1÷2÷3÷4÷5: ابدأ بـ num = 5040، وكرر num = num / i و i من 1 إلى 5، ثم اطبع num.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
5عدّل البرنامجتدريب المنهج

البرنامج يطبع lunch box خمس مرات. أضف ما يطبع fruit بعد المرة الرابعة مباشرة.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
for (let i = 0; i < 5; i++) {
  console.log("lunch box");
}
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
6اكتب البرنامجتدريب إضافي

اجمع الأعداد الزوجية فقط من 1 إلى 20 واطبع المجموع مرة واحدة في النهاية.

تلميحالعدد زوجي إذا كان i % 2 == 0.
JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
7اكتب البرنامجتدريب إضافي

اطبع هذا الدرج بحلقتين متداخلتين (السطر رقم r فيه r نجمة):
*
**
***
****

تلميحاجعل شرط الحلقة الداخلية col <= row.
JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.

النقاط الرئيسية

  • لتكرار حساب: أعلن المتغير قبل الحلقة (1 للضرب و 0 للجمع) وحدّثه داخلها، مثل num = num * i أو total += i.
  • if داخل الحلقة تنفّذ أمرًا في دورات معينة، مثل if (i == 2).
  • في الحلقات المتداخلة تعمل الحلقة الداخلية كاملة في كل دورة من الخارجية، ولكل منهما عدّاد مختلف.