حلقات التكرار for و while
بدل كتابة الأمر نفسه مرارًا، نطلب من الحاسب تكراره ما دام الشرط صحيحًا.
- تكتب حلقة while و for وتحدّد أجزاءها الثلاثة.
- تتتبّع تنفيذ الحلقة خطوة بخطوة.
- تتجنّب الحلقة اللانهائية.
- تستخدم الحلقات المتداخلة.
١الفكرة
طباعة الأرقام من 1 إلى 100، أو إعادة سؤال حتى تصحّ الإجابة: كلاهما تكرار. والحلقة while تعني: «طالما الشرط صحيح، كرّر».
while (الشرط){ // الكود الذي يتكرّر}
٢الأجزاء الثلاثة لأي حلقة
int i = 1;i <= 5i++;int i = 1; while (i <= 5){ System.out.println(i); i++;}
لاحظ أن الشرط يُفحص 6 مرّات: خمس مرّات true، والسادسة false عندما تصبح i = 6.
٣مثال تطبيقي: جمع الأرقام من 1 إلى 5
int i = 1;int sum = 0; while (i <= 5){ sum = sum + i; i++;}System.out.println("المجموع = " + sum);
٤الحلقة اللانهائية
int i = 1;while (i <= 5){ System.out.println(i); // نسينا i++}
- الشرط يُفحص قبل كل تكرار؛ إن كان false من البداية فلن تُنفَّذ الحلقة إطلاقًا.
- هيّئ المتغيّر قبل الحلقة، وغيّره داخلها.
٥تشريح رأس الحلقة
تُفصل الأجزاء الثلاثة بفاصلة منقوطة ; وليست فاصلة عادية.
for (int i = 1; i <= 5; i++){ System.out.println(i);}
٦for مقابل while
العمل نفسه، لكن for تجمع ما كان متفرّقًا:
int i = 1;while (i <= 5) { System.out.println(i); i++;}
for (int i = 1; i <= 5; i++) { System.out.println(i);}
| for | while | |
|---|---|---|
| متى؟ | عدد التكرارات معروف مسبقًا | عدد التكرارات غير معروف |
| مثال | كرّر 10 مرّات، أو من 1 إلى n | كرّر حتى يُدخل المستخدم 0 |
٧أمثلة
العدّ التنازلي باستخدام --
for (int i = 5; i >= 1; i--){ System.out.println(i);}
جمع الأرقام من 1 إلى 5
int sum = 0; for (int i = 1; i <= 5; i++){ sum = sum + i;}System.out.println("المجموع = " + sum);
غيّر البداية والشرط والخطوة، وشاهد القيم التي تمرّ بها i.
٨نقاط مهمة
- المتغيّر المعرَّف داخل for (مثل i) يعمل داخل الحلقة فقط.
- يمكن التغيير بخطوة أكبر من 1، مثل
i = i + 2؛ فإن بدأت من 2 حصلت على الأرقام الزوجية. - انتبه للحدود: من 1 مع
i <= 5خمس دورات، ومعi < 5أربع.
توقّع وتحقّق
تأمل الكود التالي،
int i = 0;while (i < 3){ System.out.println("مرحبا"); i++;}
كم مرّة تُطبع «مرحبا» عند تنفيذه؟
تأمل الكود التالي،
int x = 10;while (x < 5){ System.out.println(x); x++;}
ماذا سيكون الناتج عند تنفيذه؟
تأمل الكود التالي،
int i = 1;while (i <= 5){ System.out.println(i); i++;}
ما قيمة i بعد انتهاء الحلقة؟
ما الذي يسبّب الحلقة اللانهائية غالبًا؟
تأمل الكود التالي،
for (int i = 0; i < 5; i++){ System.out.println(i);}
كم مرّة يتكرّر جسم الحلقة؟
تأمل الكود التالي،
for (int i = 2; i <= 10; i = i + 2) System.out.print(i + " ");
ماذا سيكون الناتج عند تنفيذه؟
أي جزء من رأس for يُنفَّذ مرّة واحدة فقط؟
تأمل رأس الحلقة التالي،
for (int i = 1, i <= 5, i++){ System.out.println(i);}
ما الخطأ فيه؟
الخلاصة
- كل حلقة لها تهيئة وشرط وتحديث.
- while مناسبة عندما لا نعرف عدد المرات مسبقًا، و for عندما نعرفه.
- نسيان التحديث يسبب حلقة لا نهائية.
- الحلقة المتداخلة تنفّذ الداخلية كاملة في كل دورة من الخارجية.
تحدٍّ برمجي: جدول الضرب
سهلاطبع جدول ضرب العدد 7 من 1 إلى 10 باستخدام حلقة for.
- كل سطر بالشكل: 7 x 1 = 7
- استخدم متغيّرًا للعدد حتى يسهل تغييره.
ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:
public class Table{ public static void main(String[] args) { int n = 7; // for (…) }}
💡 تلميح 1
💡 تلميح 2
حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.
public class Table{ public static void main(String[] args) { int n = 7; for (int i = 1; i <= 10; i++) { System.out.println(n + " x " + i + " = " + (n * i)); } }}