
برمجة نظام إشارة مرورية: تغيير الأضواء

قم بالترقية للحصول على المزيد من المحتوى
صحيح أم خطأ؟ الضوء الأصفر يعني العبور.
هذه إشارة مرور. إنها تنظم المرور عند تقاطع الطرق. الأحمر للتوقف، والأخضر للمرور، وضوء أصفر، يوضح أن الإشارة على وشك التغير من الأحمر للأخضر أو العكس. لنقم بصنع إشارتنا المرورية. سنحتاج لبعض المكونات: متحكم مصغر يمكننا برمجته للتحكم في الإشارة المرورية، وأضواء LED بألوان الأحمر والأخضر والأصفر، وبعض الكابلات لتوصيل الأجزاء. حالما نحصل على جميع المكونات، يمكننا البدئ. أولا، نأخذ LED حمراء. هكذا تبدو. لديها ساقين، أحدهما أطول بقليل من الأخرى. نباعدهما برفق قليلا، ونوصل الساق الأطول بأحد الأقطاب الموجبة للمتحكم المصغر. نختار الوصلة رقم صفر للضوء الأحمر. نوصل الضوء الأصفر بالوصلة واحد، والأخضر بالوصلة اثنان. ثم نوصل كابلا من الساق الأقصر لكل ضوء بالقطب السالب. ما زالت الأضواء منطفأة، لأن الدوائر ما زالت مفتوحة. سنقوم الآن ببرمجة المتحكم المصغر لنتحكم في توقيت غلقه وفتحه للدائرة. تعمل أضواء الإشارة المرورية بترتيب معين: أحمر، أصفر، أخضر، أصفر، وهكذا. سنقوم بصياغة تعليمات واضحة لكيفية عمل الأضواء. ينبغي أن تكون التعليمات أو الخوارزمية كالتالي: تشغيل الأحمر، تشغيل الأصفر، تشغيل الأخضر، تشغيل... أوه، جميع الأضواء تعمل الآن. أين الخطأ؟ من الواضح أن علينا تطوير الخوارزمية قليلا. أوقف الفيديو وفكر ما الذي ينقص في التعليمات؟ لم نقم بإعطاء تعليمات لتوقيت إطفاء كل ضوء، فأصبحت جميعها مُضائة معا. لنقم بتعديل الخوارزمية: تشغيل الأحمر، إطفاء الأحمر وتشغيل الأصفر، إطفاء الأصفر وتشغيل الأخضر، إطفاء الأخضر وتشغيل الأصفر، إطفاء الأصفر والتكرار. لنقم باختبار الخوارزمية. نعم! الأضواء لا تُضيء في نفس الوقت. لكن الإشارة تُغير اللون بسرعة. لن تستطيع أية حافلة التحرك قبل أن يرجع الضوء أحمر مرة أخرى. أوقف الفيديو وفكر كيف يمكننا تطوير الخوارزمية. لم نتحدث عن مدة عمل كل ضوء. متغير جديد للخوارزمية بوقفات عند كل تغير للون. نضيف: وقفة لمدة ثلاثة ثوان هنا، لتتمكن المارة من العبور، وثانية هنا، بينما هو أصفر، ليستعد الجميع، وثلاثة ثوان هنا، لتتمكن الحافلة من عبور التقاطع، وثانية هنا. نُجرب ثانية. أجل، إنها تعمل جيدا. لقد اكتمل السودوكود تقريبا. يمكننا استخدام هذه التعليمات، أي الخوارزمية، كأساس للبرمجة. لكن لحظة، هل ينتهي السودوكود هنا؟ بعد الأخضر ثم الأصفر، يُضيء الأحمر ثانية، صحيح؟ لا، لا نحتاج لذلك. لقد قمنا بكتابة 'redo'. إنها loop. الـ loop في البرنامج تتيح لجزء من البرمجة أن يتكرر طالما ظل شرط معين متحققا. نريد أن تعمل الإشارة باستمرار، لذا يجب أن تعمل الـ loop بشكل مستمر. لذا نضع شرطا يكون متحققا باستمرار. مثل 'واحد يساوي واحد'. تظل الـ loop تعمل طالما كان هذا الشرط صحيحا. لتحديد الصفوف الداخلة في الـ loop، فإننا نُبوب تلك الصفوف هكذا. حسن، لقد انتهينا من السودوكود، وحان وقت قيامك ببرمجة للإشارة المرورية.