Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - إشارة المرور

جزء من قسم المنطق وتدفق التنفيذ في رحلة Dart على Coddy. الدرس 62 من 65.

challenge icon

التحدي

سهل

أنشئ نظامًا شاملاً لإدارة إشارات المرور يوضح إتقانك لـ enums و switch statements. مهمتك هي بناء نظام يمكنه التعامل مع إشارات مرور متعددة وتقديم الإجراءات المناسبة للسائقين.

  1. قم بتعريف enum يسمى TrafficLight بثلاث قيم: red، و yellow، و green
  2. أنشئ دالة تسمى getDriverAction تأخذ معاملًا من نوع TrafficLight وتعيد سلسلة نصية للإجراء المناسب باستخدام switch statement:
    • بالنسبة لـ TrafficLight.red: أعد "Stop"
    • بالنسبة لـ TrafficLight.yellow: أعد "Caution"
    • بالنسبة لـ TrafficLight.green: أعد "Go"
  3. أنشئ دالة تسمى getWaitTime تأخذ معاملًا من نوع TrafficLight وتعيد وقت الانتظار بالثواني باستخدام switch statement:
    • بالنسبة لـ TrafficLight.red: أعد 30
    • بالنسبة لـ TrafficLight.yellow: أعد 3
    • بالنسبة لـ TrafficLight.green: أعد 25
  4. أنشئ ثلاثة متغيرات لتمثيل تقاطعات مختلفة:
    • intersection1 من نوع TrafficLight مضبوط على TrafficLight.red
    • intersection2 من نوع TrafficLight مضبوط على TrafficLight.yellow
    • intersection3 من نوع TrafficLight مضبوط على TrafficLight.green
  5. لكل تقاطع، اطبع الحالة بهذا التنسيق تمامًا:
    • Intersection 1: Red light - Stop - Wait time: 30 seconds
    • Intersection 2: Yellow light - Caution - Wait time: 3 seconds
    • Intersection 3: Green light - Go - Wait time: 25 seconds
  6. قم بمحاكاة تغيير تسلسل إشارة المرور عن طريق تحديث intersection1 إلى TrafficLight.green
  7. اطبع الحالة المحدثة: Updated Intersection 1: Green light - Go - Wait time: 25 seconds
  8. أنشئ ملخصًا عن طريق طباعة: 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 وطباعة الحالة المحدثة
  
  // طباعة الملخص
}

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم Dart عبر الإنترنت