الدرس 4: السلوكيات المتكررة
في الدرس السابق، لاحظت كيفية استخدام عبارات if حتى يتمكن روبوت الواقع الافتراضي من التحقق من الشروط. ومع ذلك، بسبب تدفق المشروع، يتم التحقق من الشروط داخل عبارات if مرة واحدة فقط. في هذا الدرس، ستتعرف على حلقة لا نهائية وكيف يمكن استخدامها لحل تحدي متاهة القرص.

مخرجات التعلم
- حدد أن الحلقة اللانهائية بينما تكرر السلوكيات الموجودة داخل الحلقة إلى الأبد.
- صف سبب استخدام حلقة لا نهائية while في مشروع.
- وصف تدفق المشروع في مشروع يحتوي على عدة عبارات if داخل حلقة لا نهائية while .
- اشرح لماذا يتم استخدام عبارات if مع حلقات لا نهائية while .
التحقق من الشروط بشكل متكرر
كما لوحظ في الدرس السابق، فإن العبارة if تتحقق من الشرط مرة واحدة فقط. لكي يتم التحقق من الشروط الواردة في العبارات if بشكل متكرر، يحتاج المشروع إلى العودة إلى البداية مرارًا وتكرارًا. للقيام بذلك، هناك حاجة إلى حلقة لا نهائية.
بينما صحيح:
انتظر (5، مللي ثانية)
تستخدم حلقة لا نهائية while شرطًا يتم تقييمه دائمًا على أنه صحيح. أثناء تنفيذ الحلقات لجسم الحلقة عندما يكون الشرط صحيحًا، تتكرر الأوامر داخل الحلقة إلى ما لا نهاية.
الحلقة اللانهائية while ومشكلة متاهة القرص
لجعل روبوت الواقع الافتراضي يتصرف بالطريقة التي ننويها، ويتنقل بنجاح في متاهة القرص، يجب التحقق من الشروط التي تم تحديدها بواسطة العبارات if بشكل متكرر أثناء قيادة روبوت الواقع الافتراضي حول ساحة اللعب. إن إضافة حلقة لا نهائية while إلى المشروع بأكمله سوف يمكّن من حدوث ذلك لأن جميع العبارات if الموجودة في الحلقة اللانهائية while في المشروع أدناه يتم فحصها بشكل متكرر حتى يتم إيقاف المشروع.
لاحظ المسافة البادئة هنا. تم وضع جميع العبارات if في مسار مسنن لتكون ضمن الحلقة اللانهائية while. يتم الإشارة إلى نهاية الحلقة اللانهائية while بواسطة الأمر wait.
def main ():
while True:
# If front eye detects green then turn right
if front_eye.detect (GREEN): drivetrain.turn_for
(RIGHT, 90, DEGREES)
# If front eye detects blue then turn left
if front_eye.detect (BLUE): drivetrain.turn_for
(LEFT, 90, DEGREES)
# If front eye detect red then stop
if front_eye.detect (RED):
drivetrain.stop ()
# If front eye detects none then drive forward
if front_eye.detect (NONE): drivetrain.drive
(FORWARD)
wait(5, MSEC)
في المشروع من الدرس السابق، تم التحقق من الشروط داخل العبارات if مرة واحدة فقط. نظرًا لأن الشروط داخل العبارات if تم فحصها مرة واحدة فقط، فقد تحرك روبوت الواقع الافتراضي للأمام إلى الأبد لأن حالة عدم اكتشاف اللون تم الإبلاغ عنها على أنها صحيحة في بداية المشروع.
الآن بعد إضافة الحلقة اللانهائية while ، سيتم التحقق من كل شرط من شروط عبارات if بشكل متكرر.
- حالة اللانهائية أثناء الحلقة هي دائمًا صحيحة، وبالتالي فإن الكود داخل
اللانهائية أثناء الحلقة سينفذ دائمًا. سيؤدي هذا إلى التحقق بشكل مستمر من
شروط العبارات if أثناء تشغيل المشروع.
- تذكر أن "الجزء الداخلي" من حلقة بينما يتم الإشارة إليه عن طريق المسافة البادئة.
- أثناء سير المشروع، إذا كان شرط العبارة if صحيحًا، فسيتم تنفيذ الأوامر الموجودة داخل العبارة if. إذا كان شرط العبارة if هو False، فلن يتم تنفيذ الأوامر الموجودة داخل العبارة if ، وسيستمر تدفق المشروع إلى الأمر التالي. وهذا يمكّن روبوت الواقع الافتراضي من أداء سلوكيات منفصلة مثل الدوران أو التوقف بمجرد اكتشاف لون معين.
- إذا تم استخدام عبارات مع حلقات لا نهائية بينما للتأكد من التحقق من الشروط باستمرار، وذلك من خلال الجمع بشكل أساسي بين تدفق المشروع لعبارات if داخل تدفق الحلقة.
قم باختيار الزر التالي لمواصلة بقية هذا الدرس.