نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.
قوة التكرار في البرمجة (Why Loops Matter?) 🔁 فكرة التكرار (Automation): الحواسيب خُلقت لأداء المهام المتكررة ملايين المرات بدقة فائقة دون ملل. كسر قاعدة تكرار الكود (DRY Principle): بدلاً من نسخ ولصق أمر الطباعة 100 مرة، نكتب حلقة تكرار في 3 أسطر. أنواع الحلقات في C#: حلقة for (تكرار بعداد معلوم)، حلقة while (تكرار مشروط)، حلقة do-while، وحلقة foreach. حلقة التكرار المحددة (The for Loop) 🎯 الاستخدام الأساسي: عندما نكون على علم مسبق بعدد مرات التكرار بدقة مثل تكرار 10 مرات. البنية الثلاثية الشهيرة: for (initialization; condition; iterator). نقطة البداية (Initialization): int i = 1; شرط الاستمرار (Condition): i <= 10; خطوة التحديث (Increment): ++i; قوة التكرار في البرمجة (Why Loops Matter?) 🔁 فكرة التكرار (Automation): الحواسيب خُلقت لأداء المهام المتكررة ملايين المرات بدقة فائقة دون ملل. كسر قاعدة تكرار الكود (DRY Principle): بدلاً من نسخ ولصق أمر الطباعة 100 مرة، نكتب حلقة تكرار في 3 أسطر. أنواع الحلقات في C#: حلقة for (تكرار بعداد معلوم)، حلقة while (تكرار مشروط)، حلقة do-while، وحلقة foreach. حلقة التكرار المحددة (The for Loop) 🎯 الاستخدام الأساسي: عندما نكون على علم مسبق بعدد مرات التكرار بدقة مثل تكرار 10 مرات. البنية الثلاثية الشهيرة: for (initialization; condition; iterator). نقطة البداية (Initialization): int i = 1; شرط الاستمرار (Condition): i <= 10; خطوة التحديث (Increment): ++i; حلقة التكرار المشروطة (The while Loop) ⏳ الاستخدام الأساسي: عندما نكرر الكود طالما أن شرطاً معيناً لا يزال صحيحاً وعدد المرات غير معروف مسبقاً. آلية العمل (Check Then Execute): يفحص الشرط أولاً قبل الدخول في كل دورة؛ فإذا كان خطأ من البداية لا يدخل نهائياً. مثال واقعي: تكرار محاولة الاتصال بالخادم، أو انتظار إدخال المستخدم للرقم السري الصحيح. حلقة التنفيذ الحتمي (The do-while Loop) 🛡️ الميزة الفريدة (Execute Then Check): تنفذ كود الدورة الأولى حتماً قبل فحص الشرط. الضمان البرمجي: تضمن تشغيل الكود مرة واحدة على الأقل، حتى لو كان الشرط غير متحقق من البداية. مثال عملي: عرض قائمة الخيارات للمستخدم لمرة واحدة على الأقل قبل سؤاله هل يريد الخروج. حلقة المرور على العناصر (The foreach Loop) 📦 الاستخدام الأسهل والأكثر أماناً: تكرار الكود عبر المرور على كل عنصر في مصفوفة أو قائمة. البنية فائقة النظافة: foreach (var item in collection). الميزة الكبرى: لا تحتاج لعداد يدوي أو تتبع الفهرس، وتتوقف تلقائياً عند نهاية العناصر. أمر الإيقاف والخروج الفوري (The break Statement) 🛑 وظيفة الهروب الفوري: كسر وإنهاء حلقة التكرار في نفس اللحظة والخروج من البلوك بالكامل. متى نستخدمها؟: بمجرد العثور على العنصر المستهدف في البحث، لإيقاف إهدار موارد المعالج. مثال: البحث في قاعدة بيانات؛ بمجرد العثور على اسم المستخدم، نستخدم break فوراً. أمر التخطي للدورة التالية (The continue Statement) ⏭️ وظيفة التخطي الذكي: إيقاف الدورة الحالية فقط والقفز فوراً للدورة التي تليها دون الخروج من الحلقة. متى نستخدمها؟: لتجاوز عناصر غير مرغوب فيها وتجاهل معالجتها. مثال: طباعة الأرقام الفردية فقط؛ إذا كان الرقم زوجياً نكتب continue لنتخطى الطباعة. أمر الإيقاف والخروج الفوري (The break Statement) 🛑 وظيفة الهروب الفوري: كسر وإنهاء حلقة التكرار في نفس اللحظة والخروج من البلوك بالكامل. متى نستخدمها؟: بمجرد العثور على العنصر المستهدف في البحث، لإيقاف إهدار موارد المعالج. مثال: البحث في قاعدة بيانات؛ بمجرد العثور على اسم المستخدم، نستخدم break فوراً. حلقة المرور على العناصر (The foreach Loop) 📦 الاستخدام الأسهل والأكثر أماناً: تكرار الكود عبر المرور على كل عنصر في مصفوفة أو قائمة. البنية فائقة النظافة: foreach (var item in collection). الميزة الكبرى: لا تحتاج لعداد يدوي أو تتبع الفهرس، وتتوقف تلقائياً عند نهاية العناصر. حلقة التنفيذ الحتمي (The do-while Loop) 🛡️ الميزة الفريدة (Execute Then Check): تنفذ كود الدورة الأولى حتماً قبل فحص الشرط. الضمان البرمجي: تضمن تشغيل الكود مرة واحدة على الأقل، حتى لو كان الشرط غير متحقق من البداية. مثال عملي: عرض قائمة الخيارات للمستخدم لمرة واحدة على الأقل قبل سؤاله هل يريد الخروج. حلقة المرور على العناصر (The foreach Loop) 📦 الاستخدام الأسهل والأكثر أماناً: تكرار الكود عبر المرور على كل عنصر في مصفوفة أو قائمة. البنية فائقة النظافة: foreach (var item in collection). الميزة الكبرى: لا تحتاج لعداد يدوي أو تتبع الفهرس، وتتوقف تلقائياً عند نهاية العناصر. أمر الإيقاف والخروج الفوري (The break Statement) 🛑 وظيفة الهروب الفوري: كسر وإنهاء حلقة التكرار في نفس اللحظة والخروج من البلوك بالكامل. متى نستخدمها؟: بمجرد العثور على العنصر المستهدف في البحث، لإيقاف إهدار موارد المعالج. مثال: البحث في قاعدة بيانات؛ بمجرد العثور على اسم المستخدم، نستخدم break فوراً. أمر التخطي للدورة التالية (The continue Statement) ⏭️ وظيفة التخطي الذكي: إيقاف الدورة الحالية فقط والقفز فوراً للدورة التي تليها دون الخروج من الحلقة. متى نستخدمها؟: لتجاوز عناصر غير مرغوب فيها وتجاهل معالجتها. مثال: طباعة الأرقام الفردية فقط؛ إذا كان الرقم زوجياً نكتب continue لنتخطى الطباعة. الحلقات المتداخلة وجداول البيانات (Nested Loops) 📐 حلقة داخل حلقة (Loops Inside Loops): استخدام حلقة داخلية لمعالجة صفوف وأعمدة. مثال كلاسيكي: طباعة جدول الضرب، أو معالجة بكسلات الصور ثنائية الأبعاد (X, Y). قاعدة الأداء: انتبه لعدد الدورات الإجمالي؛ فحلقة 100 دورة بداخلها 100 دورة تعني 10,000 عملية. أمر التخطي للدورة التالية (The continue Statement) ⏭️ وظيفة التخطي الذكي: إيقاف الدورة الحالية فقط والقفز فوراً للدورة التي تليها دون الخروج من الحلقة. متى نستخدمها؟: لتجاوز عناصر غير مرغوب فيها وتجاهل معالجتها. مثال: طباعة الأرقام الفردية فقط؛ إذا كان الرقم زوجياً نكتب continue لنتخطى الطباعة. الحلقات المتداخلة وجداول البيانات (Nested Loops) 📐 حلقة داخل حلقة (Loops Inside Loops): استخدام حلقة داخلية لمعالجة صفوف وأعمدة. مثال كلاسيكي: طباعة جدول الضرب، أو معالجة بكسلات الصور ثنائية الأبعاد (X, Y). قاعدة الأداء: انتبه لعدد الدورات الإجمالي؛ فحلقة 100 دورة بداخلها 100 دورة تعني 10,000 عملية. أشهر فخاخ الحلقات التكرارية (Loop Pitfalls) ⚠️ فخ الحلقة اللانهائية (Infinite Loop): نسيان خطوة التحديث (++i) مما يجعل الشرط صحيحاً دائماً ويجمد المعالج. فخ الخطأ بمقدار واحد (Off-by-One Error): الخلط بين علامة أصغر من (<) وأصغر من أو يساوي (<=). فخ تعديل العداد داخل الحلقة: تغيير قيمة عداد for يدوياً داخل البلوك يربك مسار التكرار. فخ الفاصلة المنقوطة بعد القوس: كتابة ;()for توقف الحلقة وتجعلها تكرر فراغاً. الحلقات المتداخلة وجداول البيانات (Nested Loops) 📐 حلقة داخل حلقة (Loops Inside Loops): استخدام حلقة داخلية لمعالجة صفوف وأعمدة. مثال كلاسيكي: طباعة جدول الضرب، أو معالجة بكسلات الصور ثنائية الأبعاد (X, Y). قاعدة الأداء: انتبه لعدد الدورات الإجمالي؛ فحلقة 100 دورة بداخلها 100 دورة تعني 10,000 عملية. أشهر فخاخ الحلقات التكرارية (Loop Pitfalls) ⚠️ فخ الحلقة اللانهائية (Infinite Loop): نسيان خطوة التحديث (++i) مما يجعل الشرط صحيحاً دائماً ويجمد المعالج. فخ الخطأ بمقدار واحد (Off-by-One Error): الخلط بين علامة أصغر من (<) وأصغر من أو يساوي (<=). فخ تعديل العداد داخل الحلقة: تغيير قيمة عداد for يدوياً داخل البلوك يربك مسار التكرار. فخ الفاصلة المنقوطة بعد القوس: كتابة ;()for توقف الحلقة وتجعلها تكرر فراغاً.