Recapitulação - Semáforo
Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 62 de 65.
Desafio
FácilCrie um sistema abrangente de gerenciamento de semáforos que demonstre seu domínio de enums e instruções switch. Sua tarefa é construir um sistema que possa lidar com múltiplos semáforos e fornecer as ações apropriadas para os motoristas.
- Defina um enum chamado
TrafficLightcom três valores:red,yellowegreen - Crie uma função chamada
getDriverActionque recebe um parâmetroTrafficLighte retorna a string de ação apropriada usando uma instrução switch:- Para
TrafficLight.red: retorne"Stop" - Para
TrafficLight.yellow: retorne"Caution" - Para
TrafficLight.green: retorne"Go"
- Para
- Crie uma função chamada
getWaitTimeque recebe um parâmetroTrafficLighte retorna o tempo de espera em segundos usando uma instrução switch:- Para
TrafficLight.red: retorne30 - Para
TrafficLight.yellow: retorne3 - Para
TrafficLight.green: retorne25
- Para
- Crie três variáveis para representar diferentes cruzamentos:
intersection1do tipoTrafficLightconfigurada comoTrafficLight.redintersection2do tipoTrafficLightconfigurada comoTrafficLight.yellowintersection3do tipoTrafficLightconfigurada comoTrafficLight.green
- Para cada cruzamento, imprima o status neste formato exato:
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
- Simule uma mudança na sequência do semáforo atualizando
intersection1paraTrafficLight.green - Imprima o status atualizado:
Updated Intersection 1: Green light - Go - Wait time: 25 seconds - Crie um resumo imprimindo:
Traffic system managing 3 intersections successfully
Seu programa deve demonstrar o poder de combinar enums com instruções switch para criar um sistema de gerenciamento de tráfego legível e com segurança de tipos (type-safe). As instruções switch devem lidar com todos os valores do enum e retornar exatamente as strings e números especificados acima.
Experimente você mesmo
import 'dart:io';
// TODO: Defina seu enum TrafficLight aqui
// TODO: Crie sua função getDriverAction aqui
// TODO: Crie sua função getWaitTime aqui
void main() {
// TODO: Escreva seu código abaixo
// Criar variáveis de interseção
// Imprimir o status de cada interseção
// Atualizar intersection1 e imprimir o status atualizado
// Imprimir resumo
}Todas as lições de Lógica & Fluxo
1Manipulação Avançada de Listas
Propriedades de Lista: first & lastEstado da Lista: isEmpty & isNotEmptyInvertendo uma ListaAdicionando a uma Lista: insertRemoção em Listas: removeWhereBuscando em uma Lista: indexOfOrdenando uma ListaEmbaralhando uma ListaRecapitulação - Organizador de Listas4Manipulação Avançada de Mapas
Iterando sobre um MapVerificando Chaves e ValoresPropriedades do Map: keys & valuesAdição Condicional: putIfAbsentRemovendo Entradas de um MapMaps AninhadosRecapitulação - Atualização de Inventário2Operações Funcionais em Listas
Transformando com 'map'Filtrando com 'where'Usando '.toList()'Verificando Condições com 'any'Condições com 'every'Encontrando com 'firstWhere'Recapitulação - Filtragem de Dados5Projeto: Cálculo de Carrinho de Compras
Configuração do ProjetoAdicionando Itens ao Carrinho3Conjuntos
O que é um Conjunto?Criando um ConjuntoAdicionando e Removendo de ConjuntosVerificando Elementos em um ConjuntoConvertendo uma Lista para um ConjuntoUnião de ConjuntosInterseção de ConjuntosDiferença de ConjuntosRecapitulação - Lista de Convidados Únicos6Tratamento de Erros Básico
O que são Exceções?O Bloco 'try-catch'Capturando Exceções com 'on'O Bloco 'finally'Lançando uma ExceçãoRecapitulação - Divisão Segura9Enumerações (Enums)
O que são Enums?Definindo um Enum simplesUsando Enums em variáveisEnums em instruções 'switch'Recapitulação - Semáforo