For Loop

1. البنية الأساسية لحلقة for

الـ for loop هي أداة تُستخدم في البرمجة للتكرار على مجموعة من القيم أو تنفيذ قطعة من الكود عدة مرات بشكل محدد.

إنها طريقة فعّالة لتكرار العمليات عندما تعرف مسبقًا عدد المرات التي تحتاج فيها إلى تنفيذ الكود.

الهدف من استخدام الـ For Loop:
  1. التكرار المنتظم: إذا كان لديك مجموعة من البيانات أو قائمة وتريد إجراء عملية معينة عليها مثل الطباعة أو الحسابات، يمكنك استخدام الـ for loop.
  2. تحسين الكود: بدلًا من كتابة نفس الكود عدة مرات يدويًا، يمكنك استخدام التكرار لتقليل التكرار في الكود.
  3. توفير الوقت: تكرار نفس العمليات أو الأعمال يساعد في تنفيذ المهام بشكل أسرع وأكثر دقة.
for (initialization; condition; increment/decrement) {
  // الكود الذي يتكرر تنفيذه
}
Dart
  • التهيئة (initialization): تنفذ مرة واحدة عند البدء – حيث تُعرّف المتغير الذي سيُستخدم في التكرار
  • الشرط (condition): يتم التحقق من هذا الشرط في كل مرة يتم فيها التكرار. إذا كان الشرط صحيحًا، يتم تنفيذ الكود، وإذا كان خاطئًا، يتم إيقاف التكرار.
  • التحديث (increment/decrement): يتم تعديل المتغير في كل مرة بعد تنفيذ الكود.

مثال أساسي:

for (int i = 0; i < 5; i++) {
  print('التكرار رقم $i');
}
-----------------
التكرار رقم 0
التكرار رقم 1
التكرار رقم 2
التكرار رقم 3
التكرار رقم 4
Dart

الشرح:

  • int i = 1: تبدأ المتغير i من القيمة 1.
  • i <= 5: الشرط هو أن i يجب أن يكون أصغر من أو يساوي 5.
  • i++: بعد كل تكرار، تزيد قيمة i بمقدار 1.

2. أنواع وأشكال حلقة for

أ. حلقة for التقليدية

for (int i = 1; i <= 10; i++) {
  print(i);
}

-----------------------------
ب. حلقة for تنازلية
-----------------------------
for (int i = 10; i > 0; i--) {
  print(i);
}
Dart
2. مثال: جمع الأرقام من 1 إلى 10
int sum = 0;
for (int i = 1; i <= 10; i++) {
  sum += i;  // إضافة قيمة i إلى sum في كل تكرار.
}
print(sum); // الناتج سيكون مجموع الأرقام من 1 إلى 10
Dart

الشرح:

  • نبدأ من 1 ونستمر حتى 10.
  • في كل مرة، نقوم بجمع قيمة i إلى المتغير sum.

ج. حلقة for بخطوة مخصصة

for (int i = 0; i < 10; i += 2) {
  print(i); // 0, 2, 4, 6, 8
}
Dart

3. أمثلة تطبيقية متنوعة
المثال 1: جمع أعداد من 1 إلى 100

int sum = 0;
for (int i = 1; i <= 100; i++) {
  sum += i;
}
print('المجموع: $sum'); // 5050
Dart

المثال 2: طباعة جدول الضرب

int number = 5;
for (int i = 1; i <= 10; i++) {
  print('$number × $i = ${number * i}');
}
Dart

4. حلقة for مع break و continue
أ. استخدام break لإيقاف الحلقة

for (int i = 0; i < 10; i++) {
  if (i == 5) {
    break; // يوقف الحلقة عند i = 5
  }
  print(i); // 0, 1, 2, 3, 4
}
Dart

ب. استخدام continue لتخطي التكرار

for (int i = 0; i < 10; i++) {
  if (i % 2 == 0) {
    continue; // يتخطى الأعداد الزوجية
  }
  print(i); // 1, 3, 5, 7, 9
}
Dart

5. حلقة for المتداخلة (Nested for)

for (int i = 1; i <= 3; i++) {
  for (int j = 1; j <= 3; j++) {
    print('($i, $j)');
  }
}
------------------------------------------------
(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)
(2, 3)
(3, 1)
(3, 2)
(3, 3)
Dart
8. الفرق بين أنواع الحلقات
النوعالاستخدام الأمثلالمثال
for التقليديةعندما تحتاج للتحكم الكامل بالعدادfor (int i=0; i<5; i++)
for-inللتنقل عبر عناصر المجموعاتfor (var item in list)
forEachمع الدوال المجهولة (Lambda)list.forEach((item){})
9. نصائح مهمة
  1. تجنب الحلقات اللانهائية بتأكيد وجود شرط نهاية
  2. استخدم break و continue بحكمة
  3. اختر نوع الحلقة حسب المهمة:
    • for التقليدية للتحكم الدقيق
    • for-in للقراءة فقط
    • forEach للعمليات البسيطة

10. تمارين تطبيقية

التمرين 2: رسم مثلث من النجوم

int rows = 5;
for (int i = 1; i <= rows; i++) {
  print('*' * i);
}
----------------
*
**
***
****
*****
Dart