1. البنية الأساسية لحلقة for
الـ for
loop هي أداة تُستخدم في البرمجة للتكرار على مجموعة من القيم أو تنفيذ قطعة من الكود عدة مرات بشكل محدد.
إنها طريقة فعّالة لتكرار العمليات عندما تعرف مسبقًا عدد المرات التي تحتاج فيها إلى تنفيذ الكود.
الهدف من استخدام الـ For Loop
:
- التكرار المنتظم: إذا كان لديك مجموعة من البيانات أو قائمة وتريد إجراء عملية معينة عليها مثل الطباعة أو الحسابات، يمكنك استخدام الـ
for
loop. - تحسين الكود: بدلًا من كتابة نفس الكود عدة مرات يدويًا، يمكنك استخدام التكرار لتقليل التكرار في الكود.
- توفير الوقت: تكرار نفس العمليات أو الأعمال يساعد في تنفيذ المهام بشكل أسرع وأكثر دقة.
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);
}
Dart2. مثال: جمع الأرقام من 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
}
Dart3. أمثلة تطبيقية متنوعة
المثال 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}');
}
Dart4. حلقة 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
}
Dart5. حلقة 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)
Dart8. الفرق بين أنواع الحلقات
النوع | الاستخدام الأمثل | المثال |
---|---|---|
for التقليدية | عندما تحتاج للتحكم الكامل بالعداد | for (int i=0; i<5; i++) |
for-in | للتنقل عبر عناصر المجموعات | for (var item in list) |
forEach | مع الدوال المجهولة (Lambda) | list.forEach((item){}) |
9. نصائح مهمة
- تجنب الحلقات اللانهائية بتأكيد وجود شرط نهاية
- استخدم
break
وcontinue
بحكمة - اختر نوع الحلقة حسب المهمة:
for
التقليدية للتحكم الدقيقfor-in
للقراءة فقطforEach
للعمليات البسيطة
10. تمارين تطبيقية
التمرين 2: رسم مثلث من النجوم
int rows = 5;
for (int i = 1; i <= rows; i++) {
print('*' * i);
}
----------------
*
**
***
****
*****
Dart