١.١٢ الحلقات التكرارية — الجزء الثالث¶
تدريبات إضافية¶
التمرين 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
يحتاج هذا المثال إلى انتباه. لنفهمه خطوة بخطوة:
- نضبط العدّاد على 0.
- تستمر الحلقة ما دام العدّاد أقل من 5.
- نزيد العدّاد بمقدار 1، فيصبح 1.
- هل العدّاد يساوي 3؟ لا.
- نعرض قيمة العدّاد 1 في وحدة التحكم.
- نزيد العدّاد بمقدار 1، فيصبح 2.
- هل العدّاد يساوي 3؟ لا.
- نعرض قيمة العدّاد 2 في وحدة التحكم.
- نزيد العدّاد بمقدار 1، فيصبح 3.
- هل العدّاد يساوي 3؟ نعم! نتجاوز هذه الدورة.
- نزيد العدّاد بمقدار 1، فيصبح 4.
- هل العدّاد يساوي 3؟ لا.
- نعرض قيمة العدّاد 4 في وحدة التحكم.
- نزيد العدّاد بمقدار 1، فيصبح 5.
- هل العدّاد يساوي 3؟ لا.
- نعرض قيمة العدّاد 5 في وحدة التحكم.
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 جيدًا بعد. اقرأ الشيفرة مجددًا وحاول كتابة مثال مشابه؛ ستتّضح الفكرة بالممارسة.