
الـ While loop (برمجة)

قم بالترقية للحصول على المزيد من المحتوى
صحيح أم خطأ؟ يمكننا استخدام الـ loop لتكرار الكود.
كتبت لينا برنامجا للرجل الآلي ليقوم بإعطاء كل من ليون وماريا نوع الشوكولا الذي يفضله كل منهما، وهو يقوم بذلك جيدا. يقوم ليون بتشغيل الروبوت، فيلتقط قطعة شوكولا، وينظر إليها، ويبدو أنها شوكولا حليب، ثم يتفقد إن كان بها جوز أم لا. لا. لا يوجد جوز. لذا تحصل ماريا على هذه القطعة. لم يحصل ليون على شوكولا، لذا يعيد تشغيل البرنامج. يلتقط الروبوت قطعة شوكولا جديدة، وهي شوكولا داكنة، فيقوم بإعطائها لليون. "لقد مللت من إعادة التشغيل كل مرة." "لا. من الأسهل بدلا من إعادة تشغيل الروبوت أن نأخذ الشوكولا بأنفسنا." لا يريد كل من ماريا وليون إعادة التشغيل كل مرة. كيف يمكنهما تجنب ذلك؟ تريد ماريا تطوير برنامج لينا. لذا عليها أولا معرفة كيفية كتابة السودوكود. التعليمات هي: إلتقط قطعة شوكولا وأعطها لماريا أو لليون أو تخلص منها. تُنفذ التعليمات مرة واحدة فقط، لكن ماريا تريد أن يعمل البرنامج من البداية ويتكرر في حلقة. ما تريده هو أنه طالما هناك شوكولا في العلبة، فيجب أن يُعاد تشغيل البرنامج: أي أن يتكرر. طلب ماريا هو شرط في الـ Loop. عندما يكون الشرط متحققا، يتم إعادة تشغيل التعليمات. عندما يكون الشرط غير متحقق، يستمر البرنامج في تنفيذ الكود. تسمى هذه while loop. تكتب ماريا أن على البرنامج طرح سؤال للمستخدم: ما عدد قطع الشوكولا في العلبة؟ تُدَون الإجابة في متغير يدعى الشوكولا. طلب 'طالما كان هناك شوكولا في العلبة' هو كالمتغير 'الشوكولا أكثر من 0' إذا تم تنفيذ التعليمات التي في الـ loop، فسيتم إزالة قطعة شوكولا. إذا نحتاج لقيمة جديدة لمتغير الشوكولا. لذا تضع ماريا صفا في آخر الـ loop. الشوكولا يساوي الشوكولا ناقص 1. من الصعب قليلا الآن رؤية الصفوف التي تنتمي إلى الـ loop ويُراد تكرارها. كيف يمكن أن تكون أوضح في الكود؟ حسناً، تُخط ماريا السطور هكذا. ستقوم ماريا الآن باختبار البرنامج. تبدأ... ...بإدخال أن هناك 10 شوكولا. ثم يختبر البرنامج شرط الـ while loop. متغير شوكولا يساوي 10. إنه أكبر من 0. الشرط متحقق. إذا كان الشرط متحققا، يتم تنفيذ التعليمات التي في الـ loop. يلتقط الروبوت قطعة شوكولا، وهي بالحليب. لذا فالشرط الأول في الـ loop متحقق. الشرط التالي: هل بها جوز؟ ليس بها جوز. إذا، لن يتابع البرنامج للتخلص من الشوكولا، وإنما سيذهب إلى: 'وإلا، أعطِ الشوكولا لماريا'. عدد قطع الشوكولا الآن أقل مما كان عليه، ويحصل متغير الشوكولا على قيمة 10 ناقص واحد، أي تسعة. قام البرنامج بتنفيذ جميع التعليمات التي في الـ loop، ويعود لبداية الـ loop. هل ما زال الشرط متحققا؟ نعم، الشوكولا 9. إنها أكبر من صفر. يتم تنفيذ التعليمات التي في الـ loop ثانية. يلتقط الروبوت قطعة جديدة، فينقص عدد الشوكولا بمقدار 1 إلى 8. يختبر البرنامج الشرط ثانية. 8 أكبر من 0، والشرط متحقق، ثم يتابع الروبوت. إنه يكرر الـ loop طالما أن الشرط متحقق. لكن عندما تكون العلبة فارغة، يكون عدد الشوكولا 0. ماذا إذا؟ 0 ليس أكبر من 0. إذا فالشرط غير متحقق ولا يقوم الروبوت بتنفيذ التعليمات التي في الـ loop. يُتابع البرنامج، لكن ليست هناك صفوف بعد الـ loop. ينتهي البرنامج. بمساعدة الـ loop الجديدة، يمكن لليون وماريا الحصول على الكثير من الشوكولا من الروبوت بدون الحاجة لإعادة تشغيل البرنامج. هذا جيد! صحيح ليون؟ ماريا؟