الحلقات for و while

16:00 دقائق مجاني

ما معنى التكرار؟ ولماذا نحتاجه؟ وكيف تعمل for و while؟ مع أمثلة عملية وتمارين وأخطاء شائعة.

ما هي الحلقات ولماذا نحتاجها؟

أحيانًا تحتاج تنفيذ نفس الأمر أكثر من مرة — طباعة الأرقام من 1 إلى 10، أو المرور على قائمة أسماء، أو تكرار سؤال للمستخدم.

يمكنك كتابة الأمر 10 مرات يدويًا، لكن هذا غير منطقي. هنا تظهر أهمية الحلقات (Loops) — تعني: "كرّر تنفيذ هذا الكود عدة مرات".

🔁

حلقة for

تستخدمها عندما تعرف عدد مرات التكرار مسبقًا — مثل: كرّر 10 مرات.

🔄

حلقة while

تستخدمها عندما لا تعرف العدد مسبقًا — بل تريد التكرار "طالما" شرط صحيح.

حلقة for — عندما تعرف عدد مرات التكرار

حلقة for مناسبة عندما تعرف عدد المرات مسبقًا. إليك بنيتها:

// الصيغة العامة

for ( بداية ; شرط الاستمرار ; خطوة التغيير ) { }

int i = 1

① البداية — قيمة العداد الأولية

i <= 5

② الشرط — استمر طالما صحيح

i++

③ الخطوة — زد i بعد كل دورة

ForLoop.java
for (int i = 1; i <= 5; i++) {
    System.out.println("الرقم: " + i);
}
🖥️

الناتج:

الرقم: 1
الرقم: 2
الرقم: 3
الرقم: 4
الرقم: 5

🔍 ماذا يحدث خطوة بخطوة؟

الدورة قيمة i الشرط i <= 5 ماذا يحدث؟
1 1 true ✅ يطبع "الرقم: 1"
2 2 true ✅ يطبع "الرقم: 2"
... ... ... ...
6 6 false ❌ تتوقف الحلقة

حلقة while — عندما لا تعرف عدد مرات التكرار

حلقة while تعمل "طالما" الشرط صحيح — لا تحتاج لمعرفة العدد مسبقًا.

WhileLoop.java
int i = 1;             // ① تعريف العداد خارج الحلقة

while (i <= 5) {      // ② الشرط
    System.out.println(i);
    i++;              // ③ زيادة العداد — لا تنساها!
}

🔁 for

  • العداد مدمج في الحلقة
  • مناسبة عندما تعرف العدد مسبقًا
  • كود أقصر وأوضح

🔄 while

  • العداد يُعرَّف خارج الحلقة
  • مناسبة عندما لا تعرف العدد
  • يجب زيادة العداد يدويًا داخلها
⚠️

الحلقة اللانهائية — أخطر خطأ في while

إذا نسيت i++ داخل الحلقة — لن تتوقف أبدًا وسيتجمد البرنامج!

❌ حلقة لا تنتهي

int i = 1; while (i <= 5) { System.out.println(i); // نسي i++ هنا! }

أمثلة واقعية لتثبيت الفكرة

مثال ١ جمع الأرقام من 1 إلى 5

Sum.java
int sum = 0;

for (int i = 1; i <= 5; i++) {
    sum = sum + i;
}
System.out.println("المجموع: " + sum);
🖥️ المجموع: 15

مثال ٢ العدّ التنازلي

Countdown.java
for (int i = 5; i >= 1; i--) {
    System.out.println("تبقى: " + i);
}
🖥️
تبقى: 5
تبقى: 4
تبقى: 3
تبقى: 2
تبقى: 1
💡

لاحظ i-- بدل i++ — يُقلّل العداد بدل زيادته.

مثال ٣ الأرقام الزوجية فقط

EvenNumbers.java
for (int i = 2; i <= 10; i += 2) {
    System.out.println(i);
}
🖥️ 2   4   6   8   10
💡

i += 2 تعني: زد العداد بمقدار 2 في كل دورة بدل 1.

أخطاء شائعة في الحلقات ⚠️

خطأ ١

نسيان زيادة العداد في while ← حلقة لا تنتهي

❌ خطأ — لا تنتهي

int i = 1; while (i <= 5) { println(i); }

✅ صحيح

int i = 1; while (i <= 5) { println(i); i++; }
خطأ ٢

استخدام < بدل <= فيفوتك آخر رقم

❌ يطبع 1 إلى 4 فقط

for (int i=1; i < 5; i++)

✅ يطبع 1 إلى 5

for (int i=1; i <= 5; i++)
خطأ ٣

شرط لا يتحقق أبدًا — الحلقة لن تشتغل

❌ i تبدأ بـ 10 لكن الشرط i <= 5

for (int i = 10; i <= 5; i++)

الحلقة لن تنفذ ولو مرة واحدة!

خطأ ٤

الخلط بين i++ و i--

i++

يزيد i بمقدار 1 — للعد التصاعدي

i--

ينقص i بمقدار 1 — للعد التنازلي

تمرين — جرّب بنفسك! 💪

🎯 حلّ هذه التمارين قبل الدرس القادم

١

اطبع الأرقام من 10 إلى 1

تلميح: استخدم i-- والبداية من 10

٢

احسب مجموع الأرقام من 1 إلى 100

الإجابة الصحيحة: 5050

٣

اطبع الأرقام الزوجية فقط من 1 إلى 20

تلميح: ابدأ من 2 وزد بمقدار 2

📋 ملخص الدرس

الحلقات تكرّر تنفيذ الكود عدة مرات

for عندما تعرف العدد — while عندما لا تعرفه

i++ للتصاعد، i-- للتنازل

لا تنسَ i++ في while لتجنب الحلقة اللانهائية

⏭️ في الدرس القادم:

سنتعلم الدوال (Methods) — كيف نقسّم الكود إلى أجزاء منظمة قابلة لإعادة الاستخدام.