Ôn tập: Đèn giao thông
Thuộc phần Logic và luồng điều khiển trong hành trình Dart của Coddy. Bài học 62 trên 65.
Thử thách
DễTạo một hệ thống quản lý đèn giao thông toàn diện để thể hiện bạn thành thạo enum và câu lệnh switch. Nhiệm vụ của bạn là xây dựng một hệ thống có thể quản lý nhiều đèn giao thông và đưa ra hành động phù hợp cho người lái xe.
- Định nghĩa một enum có tên
TrafficLightvới ba giá trị:red,yellowvàgreen - Tạo một hàm có tên
getDriverAction, nhận tham sốTrafficLightvà trả về chuỗi hành động phù hợp bằng câu lệnh switch:- Với
TrafficLight.red: trả về"Stop" - Với
TrafficLight.yellow: trả về"Caution" - Với
TrafficLight.green: trả về"Go"
- Với
- Tạo một hàm có tên
getWaitTime, nhận tham sốTrafficLightvà trả về thời gian chờ tính bằng giây bằng câu lệnh switch:- Với
TrafficLight.red: trả về30 - Với
TrafficLight.yellow: trả về3 - Với
TrafficLight.green: trả về25
- Với
- Tạo ba biến đại diện cho các giao lộ khác nhau:
intersection1có kiểuTrafficLight, được đặt thànhTrafficLight.redintersection2có kiểuTrafficLight, được đặt thànhTrafficLight.yellowintersection3có kiểuTrafficLight, được đặt thànhTrafficLight.green
- Với mỗi giao lộ, in trạng thái theo đúng định dạng sau:
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
- Mô phỏng việc thay đổi chu kỳ đèn giao thông bằng cách cập nhật
intersection1thànhTrafficLight.green - In trạng thái đã cập nhật:
Updated Intersection 1: Green light - Go - Wait time: 25 seconds - Tạo phần tóm tắt bằng cách in:
Traffic system managing 3 intersections successfully
Chương trình của bạn cần thể hiện sức mạnh của việc kết hợp enum với câu lệnh switch để tạo ra một hệ thống quản lý giao thông có kiểu dữ liệu an toàn và dễ đọc. Các câu lệnh switch phải xử lý mọi giá trị enum và trả về chính xác các chuỗi và số đã nêu ở trên.
Tự làm thử
import 'dart:io';
// TODO: Định nghĩa enum TrafficLight tại đây
// TODO: Tạo hàm getDriverAction tại đây
// TODO: Tạo hàm getWaitTime tại đây
void main() {
// TODO: Viết code bên dưới
// Tạo các biến cho các giao lộ
// In ra trạng thái của từng giao lộ
// Cập nhật intersection1 và in ra trạng thái mới
// In ra bản tóm tắt
}Tất cả bài học trong Logic và luồng điều khiển
1Thao tác nâng cao với danh sách
Thuộc tính danh sách: đầu và cuốiTrạng thái danh sách: isEmpty và isNotEmpĐảo ngược danh sáchThêm vào danh sách: insertXóa khỏi danh sách: removeWhereTìm trong danh sách: indexOfSắp xếp danh sáchXáo trộn danh sáchÔn tập: trình sắp xếp danh sách4Thao tác nâng cao với Map
Duyệt qua MapKiểm tra khóa và giá trịCác thuộc tính của Map: khóa và giá trịThêm có điều kiện: putIfAbsentXóa mục khỏi MapMap lồng nhauÔn tập: Cập nhật kho hàng2Thao tác hàm trên danh sách
Biến đổi bằng 'map'Lọc bằng 'where'Dùng '.toList()'Kiểm tra điều kiện bằng 'any'Điều kiện với 'every'Tìm phần tử bằng 'firstWhere'Ôn tập: lọc dữ liệu5Dự án: Tính tiền giỏ hàng
Thiết lập dự ánThêm mặt hàng vào giỏ8Dự án: Trình phân tích văn bản đơn giản
Tổng quan và thiết lập dự ánĐếm ký tự3Tập hợp
Tập hợp là gì?Tạo tập hợpThêm và xóa phần tử khỏi tập hợpKiểm tra phần tử trong tập hợpChuyển danh sách thành tập hợpPhép hợp của các tập hợpPhép giao của các tập hợpPhép hiệu của các tập hợpÔn tập: danh sách khách mời không trùng lặp6Xử lý lỗi cơ bản
Ngoại lệ là gì?Khối lệnh 'try-catch'Bắt ngoại lệ bằng 'on'Khối lệnh 'finally'Ném ngoại lệÔn tập: phép chia an toàn9Kiểu liệt kê (enum)
Enum là gì?Định nghĩa enum đơn giảnDùng enum với biếnEnum trong câu lệnh switchÔn tập: Đèn giao thôngTự luyện tập: Trình biên dịch Dart online