Podsumowanie – sygnalizacja świetlna
Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 62 z 65.
Wyzwanie
ŁatwyStwórz kompleksowy system zarządzania sygnalizacją świetlną, który zademonstruje Twoją biegłość w korzystaniu z typów wyliczeniowych i instrukcji switch. Twoim zadaniem jest zbudowanie systemu, który obsługuje wiele sygnalizatorów świetlnych i podaje kierowcom odpowiednie wskazówki.
- Zdefiniuj typ wyliczeniowy o nazwie
TrafficLightz trzema wartościami:red,yellowigreen - Utwórz funkcję o nazwie
getDriverAction, która przyjmuje parametr typuTrafficLighti zwraca odpowiedni tekst z instrukcją, używając instrukcji switch:- Dla
TrafficLight.red: zwróć"Stop" - Dla
TrafficLight.yellow: zwróć"Caution" - Dla
TrafficLight.green: zwróć"Go"
- Dla
- Utwórz funkcję o nazwie
getWaitTime, która przyjmuje parametr typuTrafficLighti zwraca czas oczekiwania w sekundach, używając instrukcji switch:- Dla
TrafficLight.red: zwróć30 - Dla
TrafficLight.yellow: zwróć3 - Dla
TrafficLight.green: zwróć25
- Dla
- Utwórz trzy zmienne reprezentujące różne skrzyżowania:
intersection1typuTrafficLight, ustawiona naTrafficLight.redintersection2typuTrafficLight, ustawiona naTrafficLight.yellowintersection3typuTrafficLight, ustawiona naTrafficLight.green
- Dla każdego skrzyżowania wyświetl jego status w dokładnie takim formacie:
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
- Zasymuluj zmianę sekwencji sygnalizacji świetlnej, ustawiając
intersection1naTrafficLight.green - Wyświetl zaktualizowany status:
Updated Intersection 1: Green light - Go - Wait time: 25 seconds - Utwórz podsumowanie, wyświetlając:
Traffic system managing 3 intersections successfully
Twój program powinien zademonstrować możliwości połączenia typów wyliczeniowych z instrukcjami switch w celu stworzenia bezpiecznego typowo, czytelnego systemu zarządzania ruchem drogowym. Instrukcje switch muszą obsługiwać wszystkie wartości typu wyliczeniowego i zwracać dokładnie określone powyżej ciągi znaków i liczby.
Spróbuj swoich sił
import 'dart:io';
// TODO: Zdefiniuj tutaj enum TrafficLight
// TODO: Utwórz tutaj funkcję getDriverAction
// TODO: Utwórz tutaj funkcję getWaitTime
void main() {
// TODO: Napisz swój kod poniżej
// Utwórz zmienne dla skrzyżowań
// Wyświetl stan każdego skrzyżowania
// Zaktualizuj intersection1 i wyświetl jego aktualny stan
// Wyświetl podsumowanie
}Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Zaawansowana manipulacja listami
Właściwości listy: first i lastStan listy: isEmpty i isNotEmpOdwracanie listyDodawanie do listy: insertUsuwanie z listy: removeWhereWyszukiwanie na liście: indexOfSortowanie listyMieszanie elementów listyPodsumowanie – Organizator listy4Zaawansowane operacje na mapach
Iterowanie po mapieSprawdzanie kluczy i wartościWłaściwości mapy: klucze i wartościDodawanie warunkowe: putIfAbsentUsuwanie wpisów z mapyZagnieżdżone mapyPodsumowanie – aktualizacja stanu magazynowego2Operacje funkcyjne na listach
Przekształcanie za pomocą 'map'Filtrowanie za pomocą 'where'Używanie '.toList()'Sprawdzanie warunków za pomocą 'any'Warunki z użyciem 'every'Wyszukiwanie za pomocą 'firstWhere'Podsumowanie — filtrowanie danych5Projekt: Kalkulator koszyka zakupowego
Konfiguracja projektuDodawanie produktów do koszyka3Zbiory
Czym jest zbiór?Tworzenie zbioruDodawanie i usuwanie elementów ze zbiorówSprawdzanie, czy element znajduje się w zbiorzeKonwersja listy na zbiórSuma zbiorówCzęść wspólna zbiorówRóżnica zbiorówPodsumowanie — unikalna lista gości6Podstawy obsługi błędów
Czym są wyjątki?Blok „try-catch”Przechwytywanie wyjątków za pomocą „on”Blok „finally”Rzucanie wyjątkuPodsumowanie – bezpieczne dzielenie9Wyliczenia (enumy)
Czym są enumy?Definiowanie prostego enumaUżywanie enumów w zmiennychEnumy w instrukcjach „switch”Podsumowanie – sygnalizacja świetlnaPoćwicz samodzielnie: Kompilator Dart online