الدرس
التاسع
الأخوة
الكرام السلام عليكم ورحمة الله وبركاته
ماذا
يتناول هذا الدرس :
1.
الحلقات
التكرارية .
2.
الحلقة
التكرارية For.
3.
الحلقة
التكرارية While
====================
الحلقات
التكرارية
ما
هي الحلقات التكرارية ؟؟
هي
حلقات جزء من الكود عدة مرات وتنقسم إلي نوعين :
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.
إذا
كنت لم تتطبق مشاريع الدرس السابق رجاء طبقها .
في النهاية احب ان اقولك ان الجزء الثاني من الدورة قد اقترب ولكن ربما يكون هذه الجزء لبعض الاشخاص فقط وليس للعامة !
اذا من سيكون مشترك في الجزء التالي ؟؟
هم من يشاركوا معانا في المشروعات المقدمة بالمداونة واول من اشترك هو الاخ :
محمد التوم
تذكر
لا يتم النظر إلي الاكواد الموجودة في التعليقات رجاء قم بتحميلها علي أي موقع
وسيتم مراجعتها .
إلي
اللقاء
السلام عليكم
ردحذفالاخطاء في الاكواد:
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
احسنت وسوف نقوم بعرض تقرير عن اجابتك في الدرس التالي
حذفوفقك الله
جزاك الله كل خير يا بشمهدس
ردحذفالي حضرتك طالبه ع اللينك ده
http://www.mediafire.com/download/gt2qp1i2txzq265/New_folder.zip
السوال التالت مفهمتش اية المطلوب يعني اخرج القيم دي ازاي ع 6 ليدات المفروض علي seven segment ياريت السوال بصيغة اكثر توضيحاً
اخي الفاضل المقصود بالاخراج علي الليدات هو الاخراج بالنظام الثنائي مثلا القيمة 3 تكون 11 والقيمة 6 تكون 110 وهكذا اما بالنسبة للسفن سجمنت سوف نتحدث عنها باذن الله قريبا
حذفسيتم النظر للمشروع المقدم وانتظر التقيم في الدرس القادم
بارك الله فيك اشكرك علي ردك واهتمامك
حذفهذا رابط المشروع
http://www.mediafire.com/download/66pjq6cn560rw16/pro_3.zip
لك مني كل الاحترام والتقدير
السيد أحمد
ردحذفالتمرين الأول:
هل يجب أن ينتهي الضوء الأول من الإضائة ثم ينتقل إلى الضوئ الثاني.
أم أن الضوئين يجب أن يضومضوا معا كل حسب الزمن الذي وضعته.
وشكرا لجهودك
ينتهي الضوء الأول من الإضائة ثم ينتقل إلى الضوئ الثاني
حذفوفقك الله
سلام عليكم
ردحذف1- تعريف متغيرات اولا دائما ويفضل تعريفها خارج داله الرئيسيه لكي لانقع في مثل هذا خطا اضافه لكي يصبح متغير عام لكل دوال بدلا من داله واحده
2- يوجد خطأ في داله شرطيه توجد = واحده ولازم ==
3- لايوجد خطأ
4- عنوان لازم يكون : بدلا من ;
عندي سؤال
هل استخدام كلمات كعناوين محبذ في مايكروسي لو يمكن استخدامه
لان استاذ احمد سمير فايد في دورته قال لااحبذ استخدام goto
مع شكري وتقديري لك اخي كريم
سأكون من متابعيك ان شالله
استخدام عنوان امر عادي وهو من تعليمات اللغة قد تحتاج الي استخدامه في بعض الاحيان ويمكن عدم استخدامها اذا وجد بديل ولكن ماذا ستفعل اذ لم تجد بديل ؟؟!
حذفسلام عليكم
ردحذفجواب رقم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
السيد أحمد.
ردحذفهذا حل الأسئلة مع الشكر الجزيل.
http://www.mediafire.com/?cfhjos70ykgse9y