1. البنية الأساسية لحلقة for
الـ for loop هي أداة تُستخدم في البرمجة للتكرار على مجموعة من القيم أو تنفيذ قطعة من الكود عدة مرات بشكل محدد.
إنها طريقة فعّالة لتكرار العمليات عندما تعرف مسبقًا عدد المرات التي تحتاج فيها إلى تنفيذ الكود.
الهدف من استخدام الـ For Loop:
- التكرار المنتظم: إذا كان لديك مجموعة من البيانات أو قائمة وتريد إجراء عملية معينة عليها مثل الطباعة أو الحسابات، يمكنك استخدام الـ
forloop. - تحسين الكود: بدلًا من كتابة نفس الكود عدة مرات يدويًا، يمكنك استخدام التكرار لتقليل التكرار في الكود.
- توفير الوقت: تكرار نفس العمليات أو الأعمال يساعد في تنفيذ المهام بشكل أسرع وأكثر دقة.
for (initialization; condition; increment/decrement) {
// الكود الذي يتكرر تنفيذه
}Dart- التهيئة (initialization): تنفذ مرة واحدة عند البدء – حيث تُعرّف المتغير الذي سيُستخدم في التكرار
- الشرط (condition): يتم التحقق من هذا الشرط في كل مرة يتم فيها التكرار. إذا كان الشرط صحيحًا، يتم تنفيذ الكود، وإذا كان خاطئًا، يتم إيقاف التكرار.
- التحديث (increment/decrement): يتم تعديل المتغير في كل مرة بعد تنفيذ الكود.
مثال أساسي:
for (int i = 0; i < 5; i++) {
print('التكرار رقم $i');
}
-----------------
التكرار رقم 0
التكرار رقم 1
التكرار رقم 2
التكرار رقم 3
التكرار رقم 4Dartالشرح:
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 إلى 10Dartالشرح:
- نبدأ من 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'); // 5050Dartالمثال 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