٢٥ مارس ٢٠٢١

الحلقات التكرارية: while و for

أحيانًا نحتاج لتكرار مجموعة من الأوامر.

مثل عرض منتجات من قائمة واحدًا تلو الآخر أو تكرار نفس الأمر عشر مرات.

الحلقات التكرارية هي طريقة لتكرار الأوامر.

حلقة “while”

إن حلقة while تكتب بالطريقة التالية:

while (condition) {
    // code
    // so-called "loop body"
}

طالما condition محقق يتم تنفيذ الكود المكتوب بداخلها.

على سبيل المثال فإن الكود التالي يعرضقيمة i طالما i < 3:

let i = 0;
while (i < 3) {
    // يعرض 0 ثم 1 ثم 2
    alert(i);
    i++;
}

تنفيذ الأوامر لمرة واحدة تكرار. المثال السابق يقوم بثلاثة عمليات تكرار.

إذا حذفت i++ سيتم تنفيذ الأوامر (نظريًا) إلى الأبد. ولكن في الحقيقة يقوم المتصفح بمنع حدوث هذا وعند استخدام جافا سكريبت في جانب Server يمكننا لإنهاء العملية.

يمكن لأي تعبير أن يكون شرط للتكرار وليس فقط عمليات المقارنة. يتم تنفيذ العملية وتحويل الناتج إلى قيمة منطقية بواسطة while.

على سبيل المثال يمكن اختصار while (i != 0) إلى while (i):

let i = 3;
while (i) { // عندما i تصبح 0, يصبح الشرط falsy وتتوقف الحلقة
  alert( i );
  i--;
}
الأقواس المعقوفة غير ضرورية عند تنفيذ أمر واحد

إذا أردنا تنفيذ أمر واحد فقط فيمكن تجاهل الأقواس المعقوفة {…}:

let i = 3;
while (i) alert(i--);

حلقة “do…while”

يمكن نقل الشرط إلى بعد الأوامر باستخدام نمط do..while:

do {
    // loop body
} while (condition);

سيتم أولا تنفيذ الأوامر ثم اختبار الشرط وإذا تحقق سيتم تنفيذ الأوامر مرة أخرى.

على سبيل المثال:

let i = 0;
do {
    alert(i);
    i++;
} while (i < 3);

هذه الطريقة يجب أن تستخدم فقط إذا أرد للأوامر أن تنفذ مرة واحدة على الأقل متجاهلًا الشرط. ففي الغالب يفضل استخدام: while(…) {…}.

حلقة “for”

حلقة for معقدة أكثر ولكنها الأكثر استخدامًا في تكرار الأوامر.

تكتب كالآتي:

for (begin; condition; step) {
    // ... loop body ...
}

لنتعرف على معاني هذه الأجزاء باستخدام مثال. الحلقة التالية تنفذ الأمر alert(i) ابتداءًا من