انتقل إلى المحتوى

١.١٢ الحلقات التكرارية — الجزء الثالث

تدريبات إضافية

التمرين 1: اعرض مربعات الأعداد من 0 إلى 10 في وحدة التحكم.

for(var num=0; num<=10; num++){
  console.log(num*num);
}

ستكون النتيجة:

0
1
4
9
16
25
36
49
64
81
100

أحسنت! لاحظ أننا استخدمنا حلقة for هنا لأنها أنسب من حلقة while ما دمنا نعرف عدد الدورات.

التمرين 2: اعرض مربعات الأعداد من 0 إلى 10، لكن عند العدد 5 اعرض ضعفه بدلًا من مربّعه.

for(var num=0; num<=10; num++){
  if(num === 5){
    console.log(5 * 2);
  }else{
    console.log(num*num);
  }
}

ستكون النتيجة:

0
1
4
9
16
10
36
49
64
81
100

التمرين 3: اعرض مربعات الأعداد من 0 إلى 10، وتجاوز العدد 5 دون عرضه.

for(var num=0; num<=10; num++){
  if(num === 5){

  }else{
    console.log(num*num);
  }
}

ستكون النتيجة:

0
1
4
9
16
36
49
64
81
100

ما الذي يحدث هنا؟

إذا كان العدد 5، فلا تفعل شيئًا؛ لذلك تركنا الفرع فارغًا.

يمكننا كتابة تعليق لتوضيح المقصود لمن يقرأ الشيفرة. نعيد كتابتها هكذا:

for(var num=0; num<=10; num++){
  if(num === 5){
        //Do nothing
  }else{
    console.log(num*num);
  }
}

// علامة بدء تعليق من سطر واحد في JavaScript. ما تكتبه بعدها // لن يُنفّذ. التعليقات ملاحظات نضيفها للشيفرة. ولتعليق متعدد الأسطر استخدم /* your comment here*/

التعليقات

التمرين 4: أضف تعليقًا من سطر واحد.

// This is a single line comment. This line will not be executed. Yaay!

التمرين 5: أضف تعليقًا متعدد الأسطر.

/*
This is a multi-line comment
This will not be executed.
I can write anything I want
I can add whatever I like here
But I will be moderate in writing comments
I will add them as notes to myself and other programmers
to clarify why I did a certain task in a certain way.
*/

عبارة continue

التمرين 6: قارن الشيفرة التالية بشيفرة التمرين 3.

for(var num=0; num<=10; num++){
  if(num === 5){
      continue;
  }
  console.log(num*num);
}

ستكون النتيجة:

0
1
4
9
16
36
49
64
81
100

تحقق هذه الشيفرة النتيجة نفسها التي حققناها في التمرين 3، لكننا استخدمنا continue هنا. continue تعني تجاوز بقية تعليمات الدورة الحالية والانتقال إلى الدورة التالية. لنتدرّب:

التمرين 7: اقسم الأعداد (-50، -40، -30، -20، -10، 0، 10، 20، 30، 40، 50) على 10، مع تجاوز الصفر.

for(var num=-50; num<=50; num=num+10){
  if(num === 0){
      continue;
  }
  console.log(num / 10);
}

ستكون النتيجة:

-5
-4
-3
-2
-1
1
2
3
4
5

التمرين 8: عُدّ من 1 إلى 5 مع تجاوز 3. تلميح: استخدم while .

var counter = 0;
while (counter < 5) {
   counter++;
   if (counter === 3) {
      continue;
   }
   console.log(counter);
}

ستكون النتيجة:

1
2
4
5

يحتاج هذا المثال إلى انتباه. لنفهمه خطوة بخطوة:

  1. نضبط العدّاد على 0.
  2. تستمر الحلقة ما دام العدّاد أقل من 5.
  3. نزيد العدّاد بمقدار 1، فيصبح 1.
  4. هل العدّاد يساوي 3؟ لا.
  5. نعرض قيمة العدّاد 1 في وحدة التحكم.
  6. نزيد العدّاد بمقدار 1، فيصبح 2.
  7. هل العدّاد يساوي 3؟ لا.
  8. نعرض قيمة العدّاد 2 في وحدة التحكم.
  9. نزيد العدّاد بمقدار 1، فيصبح 3.
  10. هل العدّاد يساوي 3؟ نعم! نتجاوز هذه الدورة.
  11. نزيد العدّاد بمقدار 1، فيصبح 4.
  12. هل العدّاد يساوي 3؟ لا.
  13. نعرض قيمة العدّاد 4 في وحدة التحكم.
  14. نزيد العدّاد بمقدار 1، فيصبح 5.
  15. هل العدّاد يساوي 3؟ لا.
  16. نعرض قيمة العدّاد 5 في وحدة التحكم.
  17. 5 < 5 غير متحقق، فتنتهي الحلقة.

ملاحظة (١): حدّث عدّاد حلقة while قبل استخدام عبارة continue ، وإلا فقد يعلق البرنامج.

التمرين 9: أضف 2 إلى كل عدد من -4 إلى 4، مع تجاوز -4 و4. اخرج من الحلقة إذا كانت النتيجة أكبر من أو تساوي 4.

for(var num=-4;num<=4; num++){
  if(num === -4 || num === 4){
    continue;
  }
  var add2 = num + 2;
  if(add2 >= 4){
    break;
  }
  console.log(add2);
}

ستكون النتيجة:

-1
0
1
2
3

لا تقلق إن لم تفهم task 8 و task 9 جيدًا بعد. اقرأ الشيفرة مجددًا وحاول كتابة مثال مشابه؛ ستتّضح الفكرة بالممارسة.