الخميس، 26 مارس 2015

الحلقـة while :

الحلقـة while :
هـــناك فــرق بــين الحلقـــة while والحلقـــة while/do ففـــي الأخيــرة يــدخل
البرنامج في الحلقـة ثم يصـطدم بالشـرط أو التعبيـر وينتظـر اختبـار الشـرط ،
فإن كان صحيحاً أعاد التكرار مرة أخرى وإن خاطئاً استمر البرنامج في عــمله
دون توقف ، أما في الحلقة while فإن البرنامج يصطدم بالشـرط أولاً قبـل أن
يدخل الحلقـة ، أنظر الصيغـة العامـة لهذه الحلقـة:
while (expression) {
statement1;
statement2;
statement3;
}
سنقوم الآن بكتابة مثال كـودي بسيط حيث نطلب من المسـتخدم فيـه كتابـة
ما يريد وفي حال وجد البرنامج علامـة النقطـة فإنـه ينتهي.
CODE
1. #include <iostream>
2. using namespace std;
3.
4. int main()
5. {
6. char d='a';
7. cout << "Please Enter What You want \n";
8.
9. while (d!='.'){
10. cin >> d;
11. }
12.
13. cout << endl << "Finish" << endl;
14.
15. return 0;
16. }
انظــر إلـى السـطر 9 ، تجــد أن الشـرط هــو عــدم إسـناد المحـرف ( . ) إلـى
المتغير الحرفي d وفي حال وقع ذلك فإن البرنامج يخرج من التكرار while .
بإمكانك تطوير المثال الحالي حتى يصبح قادراً على عـد الحروف المدخلة.
وبإمكانك أيضاً تحـويل أمثلة التكرار while/do إلى الحلقة while .
ليس في المثال الحالي أي زيادة عـددية ، سنقوم الآن بكتابة مثال آخر يقـوم
بعرض الاعداد من 0 إلى 10:
CODE
1. #include <iostream>
2. using namespace std;
3.
4. int main()
5. {
6. int number=0;
7.
8. while (number <=10) {
9. cout << "The number is :\t";
10. cout << number;
11. cout << endl;
12. number++;
13. }
14. return 0;
15. }
حاول أن تفهـم المثال أعلاه بنفسك من دون أي شرح ، ثم انتقل إلـى المثـال
القادم .
مثال عـملي:
سنقوم الآن بكتابـة كــود يقـوم بعـرض الأعــداد الزوجيــة مـن أي عــدد يقـوم
المستخدم بتحـديده إلى أي عـدد يقوم المستخدم بتحـديده أيضاً.
هـناك مسائل يجب أن نتناولها بعـين الحذر فماذا لو قرر المسـتخدم أن يـدخل
عـدداً فردياً ، لذلك علينا أن نتأكد من أن أول عـدد هـو عـدد زوجي وفـي حـال
لم يكن فعلينا بزيادته عدداً واحداً حتى يصبح زوجياً ، انظر لهذا المثال:
CODE
1. #include <iostream>
2. using namespace std;
3.
4. int main()
5. {
6. int number=0;
7. int max=0;
8. int min=0;
9.
10.
11. cout << "Please Enter The First Number:\t";
12. cin >> min;
13.
14. cout << "Please Enter The Last Number:\t";
15. cin >> max;
16.
17. if (!(min%2==0)) min++;
18.
19. number=min;
20.
21. while(number < max) {
22. cout << "The Next Number is\t";
23. cout << number << endl;
24. number=number+2;
25. }
26.
27. return 0;
28. }
هـــناك ثلاثـــة أعــداد فــي الأســطر 6 و 7 و8 ، أحدهـــما هـــو أول عـــدد يقــوم
المستخدم بإدخاله حتى يبدأ البرنامج منــه لعــد جميـع الأعـداد الزوجيــة أمـا
العـدد الآخر فهـو عـدد يقوم المستخدم بإدخاله حتى ينتهي العـد عـنده ، أمـا
المتغيــر الثالــث فهـــو العـــدد الــذي يســتعمله البرنــامج للتنقــل بــين الأعــداد
الزوجية؛ وبالطبع فإن مكمن الخــطورة هــنا هــو أول عــدد يقـوم المسـتخدم
بإدخاله فهذا العـدد لو كان فردياً وابتدأ العـد منـه لأصبحت جميع الأعداد التي
سيخرجها البرنامج أعداداً فردية.
فكرة هذا المثال تقـوم علـى التاكـد مـن أن أول عــدد هــو زوجـي ثـم إضـافة
الرقم 2 إليه وطباعـة العـدد الجديد وهـكذا حتى يصل هذا العــدد إلـى العــدد
الأخير.
يقوم السطر 17 بالتأكد أن العـدد المدخل الأول هـو عدد زوجي وفي حال لـم
يكن كذلك فإنه يضيف إليه الرقم واحد حتى يصبح زوجياً.
يقوم السطر 19 بإسناد قيمـة العـدد الاول إلى العـداد الـذي سـيبدأ البرنـامج
العـد منـه وهـو المتغير number .
تبدأ الحلقـة while من السطر 21 إلى السـطر 25 ، تـتم الزيـادة فـي السـطر
24 حيث يزيد العـداد مرتين وليس مرة واحدة.
تنتهي الحلقـة while حينما يختل شـرطها وهــو أن يكـون العـداد أكبـر مـن أو
يساوي العـدد الاكبر.

ليست هناك تعليقات:

إرسال تعليق