11

الدرس التاسع



الدرس التاسع
الأخوة الكرام السلام عليكم ورحمة الله وبركاته
ماذا يتناول هذا الدرس :
1.   الحلقات التكرارية .
2.   الحلقة التكرارية For.
3.   الحلقة التكرارية While
4.   الحلقة التكرارية اللانهائية




====================
الحلقات التكرارية
ما هي الحلقات التكرارية ؟؟
هي حلقات جزء من الكود عدة مرات وتنقسم إلي نوعين :
1.   حلقة تكرارية تقوم بتكرار جزء معين من الكود لعدت مرات يحددها المبرمج أو البرنامج أثناء عملة التشغيل .
2.   حلقة تكرارية مفتوحة و هي تقوم بتكرار جزء معين من الكود لعدد غير منتهي من المرات .
طيب يعني أيه الكلام ده ؟؟
تعالي نشوف الكود ده :
Portb.f0 = 0;
Delay_ms(1000);
Portb.f0 = 1 ;
Delay_ms(1000);
طبعا الدالة الرئيسية مش مكتوبة وكذلك البورت B خرج  مش محتاج أقول (إحنا كبرنا خلاص بقي علي الحجات دي !).
المهم الكود اللي فات يتسبب في إنارة ليد وانتظار ثانية و ثم يطفئها وينتظر ثانية !
ما أنا عارف الكلام ده أنت بتقوله لي ليه هو أنا عويل يعني ؟!
لا أنت مش كده خالص بس أنا بقي عاوز اكرر الكود ده 200 مرة !
بس كده الليد هيتحرق يا فقيق !
ده أنا برضه اللي فقيق ماشي طيب ركزي بقي ....
طبعا فيه ناس ممكن تفكر بنسخ الكود وتكراره بس ده طبعا حل غبي (متأسف بس هو فعلا حل غبي)
الحل طبعا يكون بواسطة الحلقات التكرارية وعلشان نطبق الكلام ده لازم نعرف الحلقات التكرارية .
====================
الحلقة التكرارية For
ولحل المشكلة السابقة باستخدام For يكون الكود بالشكل ده :
For ( X = 0 ; X<200 ; X++) {
Portb.f0 = 0;
Delay_ms(1000);
Portb.f0 = 1 ;
Delay_ms(1000);
}
هو ده الحل ولا بلاش مش تقولي ننسخ ونلصق ونكرر ويحترق ومش عارف أيه !
تمام بس أنا مش فاهم حاجة ؟
طيب ليه يا عصام ... ليه يا عصام !
طيب أنا هشرحلك الكود بالألوان :
·       اللون الأحمر : دي صيغة جملةFor
For ( ; ; ) { }
·       اللون البرتقالي : متغير بيتم تعريفه في قول الكود بعد الدالة الرئيسية مباشرة وممكن يكون ليه أي اسم يعني زيه زى أي متغير ونوعه يخضع لأنواع المتغيرات العادية .
آه مش شرط نساويه بالصفر ممكن بأي قيمة عادي جدا.
X = 0
·       اللون الأخضر : ده شرط التكرار ويظل يتكرر ما دام الشرط محقق او بمعني اكبر قيمة للمتغير الذي تم تعريفه في الخطوة السابقة وهنا تكون 200.
X<200
·       اللون البنفسجي : ده قيمة تزايد أو تناقص المتغير وهنا يزداد  بمقدار 1
X++
·       اللون الأسود : ده الكود اللي هيتكرر إن شاء الله !
Portb.f0 = 0;
Delay_ms(1000);
Portb.f0 = 1 ;
Delay_ms(1000);
·       اللون الفحلقوي : ده مش ليه لذمة ممكن نمسحه عادي !
قوم اشرب شوب ليمون بالنعناع و جرب الكود اللي فات ده و شوف النتيجة وبعد كده جرب الكود ده وقولي النتيجة ؟؟
For ( X = 200 ; X>0 ; X--) {
Portb.f0 = 0;
Delay_ms(1000);
Portb.f0 = 1 ;
Delay_ms(1000);
}
·       نلاحظ انه في الحلتين هيتم يتكرر الكود 200 مرة بس الحلقة الأولي تزايدية لان قيمة X بتزيد كل دورة إلي أن تصل لـ 200 وبعدها تتوقف عن التكرار .
·       أم الحالة الثانية تناقصية لان قيمة X بتقل كل دورة إلي أن تصل لـ صفر وبعدها تتوقف عن التكرار .
وده كان الفرق بين الحلقة التكرارية التزايدية والتناقصية !
===============
الحلقة التكرارية While
مش دي كانت جملة شرطية ولا أنا مش واخد بالي ؟؟!
آه هي أنت كلامك زنبوط !
زنبوط آه وماله بس دي أنا هستخدمها أزاي ؟
أنا أقولك تعالي نطبق الكود اللي فات بس بـ While
X=0 ;
while ( X < 200 ) {
Portb.f0 = 0;
Delay_ms(1000);
Portb.f0 = 1 ;
Delay_ms(1000);
X++;
}
اللي حصل إننا سوينا X بصفر وكان شرط while انه يكون اقل من 200  وفي نهاية الحلقة يتم زيادة X بقيمة 1 وهكذا إلي أن تصل 200 وعندها يتوقف التكرار .
=================
الحلقة التكرارية اللانهائية
الصورة التالية بين لنا ما هي الحلقات التكرارية اللانهائية والتي يتم تنفيذ ما بداخلها عدد لا نهائي من المرات :




هكذا يكون قد انتهي الدرس
المطلوب :
1.   يوجد خطاء في هذه الاكواد فما هو :
1. 
void main (){
Trisb=0;portb=0;
Char x = 7;
Portb = x;}
--------------------
2.
void main (){
Trisa=1; Trisb=0; portb=0;
If (porta.f0=0){portb=1}
}
--------------------
3.
while (2 ) {
Portb.f0 = 0; Delay_ms(100);
Portb.f0 = 1 ; Delay_ms(100);
}
--------------------
4.
Loop;
Portb.f0 = 0; Delay_ms(10);
Portb.f0 = 1 ; Delay_ms(10);
Goto loop;
--------------------
2.   تم توصيل عدد 2 ليد في البورت B نحتاج إلي إضاءة الليد الأول 25 مرة بفاصل 100 ملي ثانية بين عملية الإنارة والإطفاء أم الليد الثاني نضيئه 10 مرات فقط بفاصل 250 ملي ثانية.
3.   حاول إنشاء مشروع لإخراج القيم من 1 إلي 37 علي البورت B باستخدام الحلقات التكرارية .. سوف تحتاج لتوصيل 6 ليدات علي البورت لرؤية الخرج.
4.   إذا كنت لم تتطبق مشاريع الدرس السابق رجاء طبقها .


في النهاية احب ان اقولك ان الجزء الثاني من الدورة قد اقترب ولكن ربما يكون هذه الجزء لبعض الاشخاص فقط وليس للعامة ! 
اذا من سيكون مشترك في الجزء التالي ؟؟
هم من يشاركوا معانا في المشروعات المقدمة بالمداونة واول من اشترك هو الاخ :

محمد التوم

تذكر لا يتم النظر إلي الاكواد الموجودة في التعليقات رجاء قم بتحميلها علي أي موقع وسيتم مراجعتها .
إلي اللقاء 
Blogger Tricks
11 تعليقات

هناك 11 تعليقًا :

  1. السلام عليكم
    الاخطاء في الاكواد:
    1- الخطاء هو ان char يجب ان تكون تحت الدالة مباشرة وحروفها يجب تكون كلها
    small letters.
    2-If تعدل الى if
    الشرط الذي بداخل if يجب ان يحتوي على == وليس = واحدة فقط والا ستصبح جملة اسناد
    وليست جملة مقارنة.
    وهنالك فاصلة منقوطة يجب وضعها بعد الامر portb=1
    3- لم اجد به خطاء
    4- Goto loop تعدل الى goto loop
    فكلمات اللفة المحجوزة كلها بالاحرف الصغيرة

    المشروع الاول على الرابط
    http://www.mediafire.com/download/hctthjcdttt1u8l/proj_2leds.rar

    المشروع الثاني على الرابط
    http://www.mediafire.com/download/6xdl1da9ja9th0f/proj_1_37.rar

    ردحذف
    الردود
    1. احسنت وسوف نقوم بعرض تقرير عن اجابتك في الدرس التالي
      وفقك الله

      حذف
  2. جزاك الله كل خير يا بشمهدس
    الي حضرتك طالبه ع اللينك ده
    http://www.mediafire.com/download/gt2qp1i2txzq265/New_folder.zip
    السوال التالت مفهمتش اية المطلوب يعني اخرج القيم دي ازاي ع 6 ليدات المفروض علي seven segment ياريت السوال بصيغة اكثر توضيحاً

    ردحذف
    الردود
    1. اخي الفاضل المقصود بالاخراج علي الليدات هو الاخراج بالنظام الثنائي مثلا القيمة 3 تكون 11 والقيمة 6 تكون 110 وهكذا اما بالنسبة للسفن سجمنت سوف نتحدث عنها باذن الله قريبا
      سيتم النظر للمشروع المقدم وانتظر التقيم في الدرس القادم

      حذف
    2. بارك الله فيك اشكرك علي ردك واهتمامك
      هذا رابط المشروع
      http://www.mediafire.com/download/66pjq6cn560rw16/pro_3.zip
      لك مني كل الاحترام والتقدير

      حذف
  3. السيد أحمد
    التمرين الأول:
    هل يجب أن ينتهي الضوء الأول من الإضائة ثم ينتقل إلى الضوئ الثاني.
    أم أن الضوئين يجب أن يضومضوا معا كل حسب الزمن الذي وضعته.
    وشكرا لجهودك

    ردحذف
    الردود
    1. ينتهي الضوء الأول من الإضائة ثم ينتقل إلى الضوئ الثاني
      وفقك الله

      حذف
  4. سلام عليكم
    1- تعريف متغيرات اولا دائما ويفضل تعريفها خارج داله الرئيسيه لكي لانقع في مثل هذا خطا اضافه لكي يصبح متغير عام لكل دوال بدلا من داله واحده
    2- يوجد خطأ في داله شرطيه توجد = واحده ولازم ==
    3- لايوجد خطأ
    4- عنوان لازم يكون : بدلا من ;

    عندي سؤال
    هل استخدام كلمات كعناوين محبذ في مايكروسي لو يمكن استخدامه
    لان استاذ احمد سمير فايد في دورته قال لااحبذ استخدام goto
    مع شكري وتقديري لك اخي كريم
    سأكون من متابعيك ان شالله

    ردحذف
    الردود
    1. استخدام عنوان امر عادي وهو من تعليمات اللغة قد تحتاج الي استخدامه في بعض الاحيان ويمكن عدم استخدامها اذا وجد بديل ولكن ماذا ستفعل اذ لم تجد بديل ؟؟!

      حذف
  5. سلام عليكم
    جواب رقم3

    http://arabsh.com/files/0d3e4c4a6dfb/home-work-lesson-9-3-rar.html
    *******************************************************\
    جواب رقم 4
    http://arabsh.com/files/0d3e4c4b64f0/home-work-lesson-9_conter-rar.html

    ردحذف
  6. السيد أحمد.
    هذا حل الأسئلة مع الشكر الجزيل.
    http://www.mediafire.com/?cfhjos70ykgse9y

    ردحذف