
**السلام عليكم ورحمة الله وبركاته**
تحية عطرة لكل رواد المنتدى الكرام وطاقم اشرافه الفاضل ...،

اليوم نعود قليلا بدرس اخر من اساسيات برمجة الـ #C (والتي صراحة بدات امل منها
) الاساسيات تحتاج الى الكثير من الشرح بالتالي الكثير من الوقت وليست ممتعة اعدادها لكني مستعد للمشقة
اذا كان هناك مستفيد والذي صراحة الى حد الان لاارى اهتمام من المبدئين لتعلمها ... سيكون هذا اخر درس بالاساسيات من اعدادي لوحدي يعني اذا احدكم اراد درس حول اي من اساسيات البرمجة عليه ان يراسلني او يترك ردا باي من مواضيعي وان شاء الله ساضع درسا حسب الطلب
على كل حال درس اليوم سيحدث كما ذكر في العنوان عن الـ Loops يعني for , foreach and while ...

اولا وكما تتوقعون هذه التعليمات الثلاث لها شيء مشترك وهو "تكرار العملية" مع بعض التغيير ... وتستعمل هذه التعليمات اكثر الوقت مع الانواع المتسلسلة مثل الجداول والقائمات ... ايضا يمكن استعمالها لاعادة نفس التعليمة لحين تلبية "شرط" ... هذه فقط امثلة لحالات نستعمل فيها هذه التعليمات وكما تتوقعون سنستعمل هذه التعليمات كثير في مشوارنا مع البرمجة ،
الان الى العمل لنرى كيف تستغل هذه "التعليمات" بدا مع for :
تعليمة for تمكننا مع اعادة "جزء من كود" مادام لدينا "شرط معين صحيح" ، وهذه التعليمة عادة ماتستعمل كعدّاد مثلا اذا مااردنا اظهار رسالة ما 10 مرات بامكاننا استعمال هذه التعليمة هكذا :

وعند التشغيل :

هنا قمنا بتعريف int تحت اسم count ،اعطيناه قيمة 0 في بداية "الدورة" وبعد كل "دورة" من يظهر لنا رسالة "#Hello C" ومتغير count يضاف اليه 1 بسبب تعليمة ++count وتعاد العملية الى حين ان يصبح "شرط" count<10 يصبح خاطأ ، يعني الى حين ان تصل قيمة count الى 10
طبعا يمكننا الولوج الى متغير count من داخل الدورة ومشاهدة كيف ان قيمته تتغير بعد كل دورة :

بصفة عامة نستعمل تعليمة for لنجول جدول وكذلك بامكاننا استعمال العداد (counter) كعلامة لولوج خانات الجدول ، مثلا هكذا :

في هذه الدورة ، ومادام القيمة الاولية للعداد هي 0 ، نبدا باظهار القيمة الموجودة بالجدول في المركز 0 يعني سنظهر Monday ، في الدورة الثانية index تصبح 1 يعني سنظهر Tuesday ...
يعني النتيجة ستكون كالتالي :

طبعا من المهم النتباه كي لايتعدى العداد حجم الجدول والافسنفتعل خطا ، لذلك من المستحسن استخدام خاصية Length الخاصة بالجداول كالاتي :

يمكننا ايضا مثلا ان نظهر خانة ونغب خانة يعني مثلا نضهر الخانة الاولى والثالثة ... وللقيام بهذه العملية كل ما علينا فعله هو تغيير الاتي :

اويمكننا حتى لنجول الجدول بطريقة معكوسة ، يعني من الخانة الاخيرة الى الاولى ، هكذا :

هذا كل ماهناك تقريبا بخصوص تعليمة for الان حان وقت ابنة عمها تعليمة foreach :
foreach هي نوعا ما نسخة متطورة من for وهي اكثر تطبيق خاصة اذا لم تكن بحاجة لان تستعمل عدّاد وهي الاكثراستعمالا لتجوال الانواع المتسلسلة كالجداول والقائمات ...

لااظن انها تحتاج لكثير من الشرح فهي اساسا تجول الجدول خانة بعد خانة وفي كل مرة تضع قيمة الخانة في متغير day وتظهره على الشاشة
وكما سبق وقلت يمكننا استعمالها مع القائمات :

ملاحظة مهمة للغاية: تعليمة foreachللقراءة فقط ، يعني لوانك تريد تغيير قيمة خانات الجدول او القائمة ... استعمل for لانه اذا استعملت foreach فستفتعل خطا هكذا مثلا :

طيب ، الان نمر الى تعليمة While وهي المفضلة لدي 
هذه التعليمة تشتغل تقريبا مثل for تحديدا مع فرق بسيط ، يعني انها تكرر الدورة الى ان يصبح شرطها خاطا ، الفرق بينها وبين الـ for هو ان في حالة for فانت تعلم تماما كم من دورة ستقوم بها تعليمة for مثلا في المثال اعلاه نعلم انها ستقوم بـ 10 دورات قبل حتى ان ننفذ الكود بينما بالنسبة لتعليمة while فالامر مختلف ، يعني في اغلب الحالات لانعلم كم من دورة ستقوم بها ....
دعنا نتعرف عليها اولا وسنفهم اكثر ،
فرضا اننا نريد البحث عن عدد 15 داخل جدول واظهار ترتيبه داخل الجدول ، باستعمال تعليمة for سنقوم بالعملية كالاتي :

هنا قامت تعليمة for بـ 7 دورات بالرغم من انها قد وجدت العدد 15 في الموقع الرابع
الان باستعمال تعليمة While الكود سيكون كالاتي :

هنا تعليمة while قامت بـ4 دورات فقط ، يعني بمجرد ان وجدت العدد انهت عملها وبذلك وفرت علينا 3 دورات اضافية غير لازمة مقارنة بتعليمة for
وما فعلناه بالتحديد هنا هو اننا قلنا للحاسوب "مادامت قيمة الخانة مخالفة لـ15 اضف 1 لـ index" ،هذا كان شرطنا وعندما وصلنا الى الخانة الرابعة صار الشرط خطا لذلك خرجا من التعليمة وقيمة index تحمل القيمة الصحيحة لمكان العدد 15 
الى هنا ينتهي درسنا اليوم ، اظن انه كان درس بسيط في المتناول فقط اترككم بتنبيه وحيد هو ان لاتقعوا في خطا الدورات الامتناهية يعني ان تضعوا شرط يبقى دائما صحيح وبذلك لن تخرجوا ابدا من الدورة وسيفشل تطبيقكم
بالتوفيق

ارجو ان الدرس كان مفيد واذا كان لكم اي استفسار فكلي اذان صاغية ،
كذلك لن تنسوا ان تضعوا ردود او تراسلني بخصوص الدروس المقبلة وماتريد تعلمه حول الـ #C
الى اللقاء في الدرس القادم ،
مع تحياتــــــ ..،
