تعلم +
الدرس الثالث
|
مساء الخير سندخل في الموضوع مباشرة بدون لف أو دوران مع ان الموضوع يتعلق بالدوران والتكرار لقد تحدثنا عن فكرة الحلقات التكرارية او Loops في المقال العام عن البرمجة طريقتين لعمل هذه الحلقات الاسلوب الاول بلامر
for والثاني بالامر while لنأخذ جزئية البرنامج التالي #include
<iostream.h>
int
main()
{
int
x;
for(x=0;x<100;x++)
{
cout<<x<<endl;
}
السطور ذات اللون الازرق
تناولنا شرحها بالدرس الاول أما السطور ذات اللون الاحمر فهي موضوع دراستنا اليوم تقوم الحلقات التكرارية بتنفيذ عدة اوامر
موضوعة داخل بلوك ونقصد ببلوك مابين القوسين } مجموعة اوامر{ الى ان تنتهي الحلقات
او عدد الحلقات المحددة منك وعددها في مثالنا السابق 100 حلقة تكرارية وبدقة تبدء
الحلقات من رقم صفر الى رقم 99 ومعنى ذلك ان العدد الاجمالي 100 حلقة بعد حساب
الصفر من ضمن الارقام انتبه لذلك وتذكر ان المتغير x يجب الاعلان عنه قبل
استخدامه وذلك حسب نوع استخدامك له وهنا استخدمنا نوعه كعدد صحيح بالطبع يمكنك
استخدامه كعدد عشري واليك صيغة الامر بالتفصيل
بداخل بلوك الاوامر تم تنفيذ الامر
cout<<x<<endl وهو امر يقوم بطبع قيمة x التي تتغير في كل مرة ابتداء من صفر حسب
ماذكرت ان X=0 وتزيد في كل مرة بمقدار 1 حسبما
ذكرت ان x++ وذلك حتى يصل الى 99
حسبما ذكرت ان x<100 وendl تعني end of line اي انتقل الى سطر جديد كلما طبعت قيمة حتى لا يسرد طبع الارقام
متجاورة بل يطبع على كل سطر قيمة المتغير وبالتالي ستكون مخراجات البرنامج كما
يلي 0 1 2 3 4 . . . 99 لنستفيد اكثر من قوة الحلقات التكرارية وايضا
نرى امكانات اخرى لها بوضع حلقة داخل حلقة كما يلى
في البرنامج الذي يطبع جدول الضرب من جدول
واحد حتى جدول 12 #include
<iostream.h>
int main()
{
int x , y ,
z; for(x=1;x<13;x++) {
for(y=1;y<13;y++) { z =
x * y;
cout<<x<<”*”<<y<<”=”<<z<<endl;
} } return 0;
} كما تعلم ان السطور الزرقاء سبق دراستها ولكن
ننوه فقط اننا اعلنا عن ثلاث متغيرات لاعداد صحيحة الاول للحلقة الاولى والثاني
للحلقة الثانية والثالث لاحتواء حاصل الضرب وهو الهدف من البرنامج. بنفس ماسبق شرحه وضعنا حلقة تكرارية تبدء من
رقم واحد وتنتهي برقم 12 وتزيد بمقدار واحد واوامر هذه الحلقة مكتوبة للتوضيح
بخلفية صفراء حيث بدأت الحلقة بالصيغة السابق شرحها ثم قوس بداية البلوك وقوس نهاية
البلوك حيث يوضع مابين القوسين سلسلة اوامر لتنفيذها كما سبق واتفقنا عليه for(x=1;x<13;x++)
{
اوامر مطلوب تنفيذها } وبداخل اقواس البلوك للحلقة الاولى مطلوب وضع
اوامر للتنفيذ فكانت اوامر التنفيذ داخل البلوك عبارة عن حلقة اخرى وما المانع
فالحلقات وغيرها هي نفسها اوامر والحلقه الاخرى كانت عبارة عن عداد يعد من الرقم 1
الى الرقم 12 وهي ايضا تحتاج الى صيغة معينة واقواس بلوك للتنفيذ وهي موضوعة في
البرنامج بخلفية خضراء كما يلي
for(y=1;y<13;y++)
{ z =
x * y;
cout<<x<<"*"<<y<<"="<<z<<endl;
} وبداخل بلوك الاوامر للحلقة الثانية وضعنا عدة
اوامر لتفى بالغرض الذي من اجله تم عمل البرنامج وهو جدول الضرب – عبارة عن معادلة
لحساب حاصل ضرب المتغيرين x و y ويوضع الناتج في المتغير z كما يلي
z = x *
y;
بالطبع تلى ذلك صيغة لطبع
مخرجات البرنامج والا ما الفائدة منه اذا لم ارى نتيجة عملى وهذه الصيغة سأشرح لك
فيما بعد وفي هذا الدرس لماذا اخترت هذه الصيغة بالتحديد فهو ليس موضوعنا الآن
ودعني اشرح لك الاهم من ذلك وهو ميكانيكية عمل الحلقتين ·
يبدء البرنامج
بالدخول الى الحلقه الاولى ويخصص للمتغير اكس القيمة واحد حيث انها قيمة عداد
البداية ثم يدخل الى داخل اقواس بلوكه لتنفيذ ما بداخله فيجد حلقه اخرى فيبدء
بتنفيذها وطلبت الحلقة ان يكون متغيرها واي يبدء بالقيمة واحد وينتهي بالقيمة 12 ثم
تدخل الحلقة الثانية الى بلوك اوامرها فتجد معادلة يضرب فيها قيمة اكس التي هي واحد
الآن وتتغير قيمة واي فيها ثم طبع النتائج وتظل الحلقة الداخلية تنفذ بتغير واي مع
ثبات اكس بالطبع وتكون النتائج كما يلى
1
* 1 = 1
1
* 2 = 2
1
* 3 = 3 . . .
1
* 12 = 12 وعند وصول نهاية عداد الحلقة الداخلية الى 12
وهو نهاية الحلقة ينتهي تنفيذ الحلقة فيستمر البرنامج فيجد امامه قوس نهاية الحلقه
الخارجية ذو الخلفية الصفراء فيعود الى الحلقة الخارجيه حيث تزيد قيمة اكس بمقدار
واحد وتصبح قيمتها = 2 فيدخل الى بلوك اوامره كما سبق فيجد حلقة اخرى تبدء من واحد
وتنتهي ب 12 وبداخلها معادلة وامر طبع فيكون التنفيذ كما يلي
2
* 1 = 2
2
* 2 = 4
2
* 3 = 6 . . .
2
* 12 = 24 وهكذا يستمر التنفيذ الى ان تصل الحلقة
الخارجية الى نهايتها بالرقم 12 واثناء ذلك تنفذ الحلقة الداخلية من بدايتها الى
نهايتها اي من 1 الى 12 وتطبق المعادلة وامر الطبع ليكون اخر تنفيذ كما
يلي
12
* 1 = 12
12
* 2 = 24
12
* 3 = 36 . . .
12
* 12 = 144 شرح صياغة امر الطبع بالصورة
التالية cout<<x<<"*"<<y<<"="<<z<<endl; مابداخل علامات الاقتباس دائما يطبع كما هو
وهو مميز اعلاه بالخلفية الخضراء وكل مايوضع داخل علامة الاقتباس
يطبع نصه كما هو اما ماهو خارج علامات الاقتباس بين ازواج الاقواس >>متغير>> فيطبع قيمة المتغير وليس
اسم المتغير فمثلا x لاتطبع x ولكن تطبع قيمتها فمثلا 1 – 2 –
3 ----- 12 حيث انها متغيرات وتميز اعلاه بالخلفية الصفراء وذلك
للحصول على شكل مقبول يوضح العملية المطلوبة لتظهر النتائج
بالصورة 12
* 12 =
144 والآن الى النوع الثاني من الحلقات وهو ابسط
من السابق ولكن السابق اكثر استخداما واكثر قوة While #include <iostream.h>
int
main()
{
int x=0;
while(x<100)
{
cout<<x<<endl; x++;
}
return 0; } سوف اشرحها لك في سطور قليلة
لبساطتها الاوامر باللون الازرق سبق شرحها اما الحلقة موضع النقاش فهي باللون
الاحمر وصيغتها while(x<100) وبعد الاعلان عن المتغير اكس
خلاصة شرح الامر السابق (أعد تنفيذ ما بداخل البلوك طالما اكس او المتغير اقل من
100 ثم اقواس بلوك تضع ماشئت بداخله من اوامر وقوس نهاية البلوك ويزيد معنا فقط
عداد للمتغير ليزيده بالمقدار الذي تريده ويوضع في اي مكان داخل الحلقة او حسب
افكارك عن البرنامج المهم لاتنساه والا سوف يدور البرنامج داخل الحلقة الى الابد
حيث ان شرط نهايتها ان تزيد اكس عن 100 وطالما لم تضع عداد زياده للمتغير فلن يتحقق
الشرط وبالتالى لن تنتهي الحلقه الى الابد ويظل يعمل الكومبيوتر بلا نهاية للبرنامج
ويميز العداد بالخلفية الصفراء واليك جدول صياغة الامر الذي تعودنا عليه.
لقد ذكرت لك كلمة عداد الزيادة او النقصان نعم
يمكن ان يتناقص العداد اذا كانت صيغة البرنامج كما يلي وذلك لطبع قيمة المتغير
تناقصيا من 99 الى صفر بعد ان كان في البرنامج السابق تصاعديا من صفر الى 99 ويكون
التعديل كما يلي #include <iostream.h>
int
main()
{
int x=99;
while(x>0)
{
cout<<x<<endl; x--;
}
return 0; } بدء هنا تخصيص المتغير مع
الاعلان بالقيمة 99 ثم شرط التكرار ان يكون متى كانت قيمة المتغير اكبر من الصفر ثم
عداد تناقصي يظل يطرح واحد من القيمة الى ان يصل الى الصفر ثم يطرح من الصفر 1
فتصبح قيمته –1 وبالتالي لايتحقق الشرط حيث ان قيمة –1 ليست اكبر من الصفر وتنتهي
الحلقه كما نريد لاحظ العداد التناقصي بالخلفية الصفراء الكاتب : م . محمد حسن Mohandes.net
|
||||||||||||||||||||||||||||||||||||||
Copyright © www.kettaneh.net