الحلقات التكرارية (متوسط)
مقدمة
هذا الدرس تكملة لدرس الحلقات التكرارية (مستوى ابتدائي) لذلك ننصح بمراجعة درس المستوى اﻹبتدائي قبل قراءة هذا الدرس
الحلقات التكرارية المتداخلة (Nested Loops)
يمكن إنشاء حلقة تكرارية بداخل حلقة تكرارية، فكما قلنا كل حلقة تكرارية لها كتلة أوامر Block والكتلة ممكن أن تتكون من عدة أوامر، وبالتالي يمكن أن نضع بداخل الكتلة حلقات تكرارية أخرى أو شروط أو أي أوامر!
طباعة اﻷعداد من 1 إلى 4 ثلاث مرات
هذا المثال سيطبع اﻷعداد من 1 إلى 4 ثلاث مرات متتالية، عن طريق الحلقات التكرارية المتداخلة...
- هناك حلقة تكرارية تتكرر 4 مرات لتطبع اﻷعداد من 1 إلى 4
- وهناك حلقة تكرارية أخرى تضم بداخلها الحلقة التكرارية اﻷولى، وتتكرر ثلاث مرات، بالتالي تتسبب في تكرار طباعة اﻷعداد 3 مرات
var i = 1;
while (i <= 3){
var n = 1;
while(n <= 4){
console.log(n);
n = n + 1;
}
i = i + 1;
}
جرب المثال السابق في محرر دليل مبرمج السريع أو محرر النصوص vscode
متغير العداد يجب أن يكون مختلف في كل حلقة، لا تستخدم متغير عداد واحد ﻷكثر من حلقة تكرارية
وضع مسافة (سطر فارغ) بين المرات الثلاثة
ويمكننا تحسين المثال السابق عن طريق وضع سطر فارغ بين كل مرة من الثلاث مرات، ولكن كيف تنفيذها؟ بسيطة نتحقق عن طريق if
إذا كان الرقم الحالي هو 4 (آخر رقم في حلقة طباعة اﻷرقام) إذن نقوم بطباعة سطر فارغ ""
.
var i = 1;
while (i <= 3){
var n = 1;
while(n <= 4){
console.log(n);
if (n == 4){
console.log("");
}
n = n + 1;
}
i = i + 1;
}
ويمكننا تنفيذ نفس الفكرة السابقة بحل أفضل، نضع أمر الطباعة خارج الحلقة التكرارية الداخلية، بحيث في كل دورة من دورات الحلقة التكرارية الخارجية يقوم المفسر بطباعة اﻷعداد من 1 إلى 4 ثم يقوم بطباعة سطر جديد فارغ، ثم يعود ليكرر نفس العملية
var i = 1;
while (i <= 3){
var n = 1;
while(n <= 4){
console.log(n);
n = n + 1;
}
console.log("");
i = i + 1;
}
قم بكتابة دالة تأخذ العدد rows
كمُدخل وتقوم بطباعة شكل مثلث قائم من النجوم *
عدد صفوفه rows
.
مثال: عندما قيمة
rows
تساوي4
يجب أن يكون الناتج:
**
***
****
for
الحلقة التكرارية الحلقة التكرارية for
تسهل علينا الحلقات التكرارية العددية وتجعل كتابتها أسهل وأسرع، فبدلاً من أن نقوم بإنشاء متغير العداد، ونقوم بزيادة قيمته أو إنقاصها في أوامر الحلقة، يمكننا استخدام الحلقة for
لتسهيل واختصار هذه العملية.
تُستخدم الحلقة for
فقط مع الحلقات التكرارية العددية أي التي تتكرر عدد معين من المرات.
for
طريقة كتابة الحلقة for (statement1; statement2; statement3) {
// block
}
- statement1: اﻷمر اﻷول، يتنفذ قبل تنفيذ الحلقة التكرارية، مرة واحدة. وفيه نقوم بإنشاء متغير العداد
- statement2: اﻷمر الثاني، نكتب فيه شرط الحلقة التكرارية، مثلاً
i <= 3
- statement3: اﻷمر الثالث، يتنفذ في نهاية كل دورة من دورات الحلقة التكرارية، تذكر أننا في وفيه نقوم بتغيير متغير العداد
تذكر: نفصل بين اﻷوامر الثلاثة بعلامة ;
for
مثال على الحلقة for (var i = 0; i <= 3; i++) {
console.log(i);
}
1
2
3
تتكون الحلقة التكرارية في المثال السابق من ثلاثة أوامر:
var i = 0
: أمر إنشاء متغير العدادi
وقيمته تساوي صفر، أي أن الحلقة ستبدأ من الصفرi <= 3
: شرط التكرار، ويعني أن الحلقة ستتكرر مادامت قيمة متغير العداد أقل من أو تساوي3
بالتالي ستتكرر الحلقة 4 مرات (0, 1, 2, 3)i++
: أمر تغيير قيمة متغير العداد في كل دورة
اﻷمر الثالث في المثال السابق بالضبط يقوم بنفس مهمة الأمر
i += 1
الذي كنا نكتبه مع حلقةwhile
في نهاية كتلة اﻷوامر.
قد درسنا العلامة ++
سابقاً في درس العمليات الحسابية وتعنى زيادة واحد على قيمة المتغير
for
ومتى while
متى نستخدم على الرغم من أن while
يمكنها فعل ما تفعله for
بالضبط، ولكننا نفضّل استخدام for
في الأمر التي تختص به، وهو التكرار لعدد معين معلوم من المرات، أما نستخدم while
بشكل عام في الحلقات التكرارية التي تتكرر إلى أن يتحقق شرط معين، لا تتكرر عدد من المرات ولكن تتكرر إلى أن يتحقق الشرط، فمثلاً نطلب من المستخدم أن يقوم بإدخال عدد، ونقوم بإنشاء حلقة تكرارية تظل تتكرر إذا لم يقم المستخدم بإدخال عدد، مثلاً أدخل نصّا أو رمزاً، وتظل هذه الحلقة تتكرر إلى أن يقوم المستخدم بإدخال عدد صحيح!
أو في حالة أخرى، نريد أن ننشئ برنامج يتابع سعر الدولار مثلاً، ويظل يتابعه إلى أن يصل الدولار لسعر 20 جنيه، في هذه الحالة نريد التكرار... ولكن عدد غير معين من المرات، نريد التكرار إلى أن يتحقق الشرط "وصول سعر الدولار إلى 20" ولا نعلم هل سيتحقق الشرط بعد 100 مرة أم بعد 100 ألف! في هذه الحالة نستخدم while
for
الوصول لكل عناصر المصفوفة باستخدام كما كنا نستخدم while
للوصول لكل عناصر المصفوفة سابقاً في درس المصفوفات يمكننا اﻵن استخدام for
للوصول لكل عناصر المصفوفة بكتابة كود أكثر تنسيقاً وسهولة
var numbers = [2,4,6,8];
for (var i = 0; i < numbers.length; i++){
console.log(numbers[i]);
}
4
6
8
for
الحلقات المتداخلة باستخدام يمكن تطبيق ما تعلمناه عن الحلقات المتداخلة (Nested Loops) مع الحلقة for
وستلاحظ أن الكود أصبح مختصراً ومنسقاً أكثر
for (var i = 1; i <= 3; i++){
for(var n = 1; n <= 4; n++){
console.log(n);
}
}
جرب الرجوع لنفس المثال مع
while
وانظر الفرق بين الكود هنا وهناك!
المساهمين
وجدت خطأ أو تريد المساهمة في محتوى الدرس؟ عدل الصفحة على Github