مراجعة - إشارة المرور
جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 62 من 65.
التحدي
سهلأنشئ نظامًا شاملاً لإدارة إشارات المرور يوضح إتقانك لـ enums و switch statements. مهمتك هي بناء نظام يمكنه التعامل مع إشارات مرور متعددة وتقديم الإجراءات المناسبة للسائقين.
- قم بتعريف enum يسمى
TrafficLightبثلاث قيم:red، وyellow، وgreen - أنشئ دالة تسمى
getDriverActionتأخذ معاملًا من نوعTrafficLightوتعيد سلسلة نصية للإجراء المناسب باستخدام switch statement:- بالنسبة لـ
TrafficLight.red: أعد"Stop" - بالنسبة لـ
TrafficLight.yellow: أعد"Caution" - بالنسبة لـ
TrafficLight.green: أعد"Go"
- بالنسبة لـ
- أنشئ دالة تسمى
getWaitTimeتأخذ معاملًا من نوعTrafficLightوتعيد وقت الانتظار بالثواني باستخدام switch statement:- بالنسبة لـ
TrafficLight.red: أعد30 - بالنسبة لـ
TrafficLight.yellow: أعد3 - بالنسبة لـ
TrafficLight.green: أعد25
- بالنسبة لـ
- أنشئ ثلاثة متغيرات لتمثيل تقاطعات مختلفة:
intersection1من نوعTrafficLightمضبوط علىTrafficLight.redintersection2من نوعTrafficLightمضبوط علىTrafficLight.yellowintersection3من نوعTrafficLightمضبوط علىTrafficLight.green
- لكل تقاطع، اطبع الحالة بهذا التنسيق تمامًا:
Intersection 1: Red light - Stop - Wait time: 30 secondsIntersection 2: Yellow light - Caution - Wait time: 3 secondsIntersection 3: Green light - Go - Wait time: 25 seconds
- قم بمحاكاة تغيير تسلسل إشارة المرور عن طريق تحديث
intersection1إلىTrafficLight.green - اطبع الحالة المحدثة:
Updated Intersection 1: Green light - Go - Wait time: 25 seconds - أنشئ ملخصًا عن طريق طباعة:
Traffic system managing 3 intersections successfully
يجب أن يوضح برنامجك قوة الجمع بين enums و switch statements لإنشاء نظام إدارة مرور آمن النوع (type-safe) وسهل القراءة. يجب أن تتعامل switch statements مع جميع قيم enum وتعيد السلاسل النصية والأرقام المحددة أعلاه بالضبط.
جرّب بنفسك
import 'dart:io';
// TODO: قم بتعريف enum الخاص بـ TrafficLight هنا
// TODO: قم بإنشاء دالة getDriverAction هنا
// TODO: قم بإنشاء دالة getWaitTime هنا
void main() {
// TODO: اكتب الكود الخاص بك أدناه
// إنشاء متغيرات التقاطع
// طباعة الحالة لكل تقاطع
// تحديث intersection1 وطباعة الحالة المحدثة
// طباعة الملخص
}جميع دروس Logic & Flow
1التعامل المتقدم مع القوائم
خصائص القائمة: first و lastحالة القائمة: isEmpty و isNotEmptyعكس القائمةالإضافة إلى القائمة: insertالحذف من القائمة: removeWhereالبحث في القائمة: indexOfفرز القائمةخلط القائمةملخص - منظم القوائم4معالجة الـ Map المتقدمة
التكرار عبر الـ Mapالتحقق من المفاتيح والقيمخصائص الـ Map: keys و valuesإضافة مشروطة: putIfAbsentإزالة العناصر من الـ Mapالـ Maps المتداخلةمراجعة - تحديث المخزون2عمليات القوائم الوظيفية
التحويل باستخدام 'map'التصفية باستخدام 'where'استخدام '.toList()'التحقق من الشروط باستخدام 'any'الشروط باستخدام 'every'البحث باستخدام 'firstWhere'مراجعة - تصفية البيانات5مشروع: حاسبة عربة التسوق
إعداد المشروعإضافة العناصر إلى العربة3المجموعات
ما هي المجموعة؟إنشاء مجموعةالإضافة والحذف من المجموعاتالتحقق من وجود عناصر في المجموعةتحويل قائمة إلى مجموعةاتحاد المجموعاتتقاطع المجموعاتالفرق بين المجموعاتمراجعة - قائمة ضيوف فريدة6أساسيات معالجة الأخطاء
ما هي الاستثناءات؟كتلة 'try-catch'التقاط الاستثناءات باستخدام 'on'كتلة 'finally'رمي استثناءملخص - القسمة الآمنة9التعدادات (Enums)
ما هي الـ Enums؟تعريف Enum بسيطاستخدام الـ Enums في المتغيراتالـ Enums في جمل 'switch'مراجعة - إشارة المرور