Recapitulação - Processador de Listas
Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 50 de 65.
Desafio
FácilCrie um sistema flexível de processamento de dados que demonstre funções de ordem superior ao construir um processador de lista personalizável. Seu programa criará diferentes funções de processamento e usará uma função de processador principal que pode aplicar qualquer operação a uma lista de dados.
- Leia uma entrada de string contendo números separados por vírgulas (ex:
"10,20,30,40") - Leia uma entrada de string representando o primeiro tipo de operação (
"multiply","add", ou"subtract") - Leia uma entrada de string representando o valor a ser usado com a primeira operação (ex:
"3") - Leia uma entrada de string representando o segundo tipo de operação (
"multiply","add", ou"subtract") - Leia uma entrada de string representando o valor a ser usado com a segunda operação (ex:
"5") - Divida a primeira entrada em números individuais e converta cada um para um inteiro
- Crie três funções de operação:
multiplyBy- recebe dois inteiros e retorna o primeiro multiplicado pelo segundoaddTo- recebe dois inteiros e retorna o primeiro somado ao segundosubtractFrom- recebe dois inteiros e retorna o primeiro menos o segundo- Crie uma função principal chamada
processListWithOperationque recebe três parâmetros: - Uma lista de inteiros
- Uma função que recebe dois inteiros e retorna um inteiro
- Um valor inteiro para usar com a operação
- A função
processListWithOperationdeve aplicar a função fornecida a cada número na lista usando o valor fornecido e retornar uma nova lista com os resultados - Aplique a primeira operação à lista original e, em seguida, aplique a segunda operação ao resultado da primeira operação
- Exiba os resultados no formato exato mostrado abaixo
Por exemplo, se as entradas forem "2,4,6", "multiply", "3", "add", e "10", seu programa deve exibir:
Advanced List Processor
=======================
Original list: [2, 4, 6]
First operation: multiply by 3
After first operation: [6, 12, 18]
Second operation: add 10
Final result: [16, 22, 28]
Processing completed successfullySe as entradas forem "15,25,35", "subtract", "5", "multiply", e "2", seu programa deve exibir:
Advanced List Processor
=======================
Original list: [15, 25, 35]
First operation: subtract 5
After first operation: [10, 20, 30]
Second operation: multiply by 2
Final result: [20, 40, 60]
Processing completed successfullySeu programa deve demonstrar funções de ordem superior passando a função de operação apropriada para processListWithOperation com base nas entradas de tipo de operação. Use instruções condicionais para determinar qual função passar para cada operação. A função processListWithOperation deve iterar pela lista de entrada, aplicar a função fornecida com o valor fornecido a cada elemento e coletar os resultados em uma nova lista. Aplique as operações sequencialmente, usando o resultado da primeira operação como entrada para a segunda operação.
Experimente você mesmo
import 'dart:io';
void main() {
// Ler entradas
String? numbersInput = stdin.readLineSync();
String? firstOperation = stdin.readLineSync();
String? firstValue = stdin.readLineSync();
String? secondOperation = stdin.readLineSync();
String? secondValue = stdin.readLineSync();
// Converter entrada de string para lista de inteiros
List<int> originalList = numbersInput!.split(',').map((e) => int.parse(e.trim())).toList();
int firstOpValue = int.parse(firstValue!);
int secondOpValue = int.parse(secondValue!);
// TODO: Escreva seu código abaixo
// Criar as três funções de operação: multiplyBy, addTo, subtractFrom
// Criar a função processListWithOperation
// Aplicar as operações sequencialmente e armazenar os resultados
// Exibir os resultados no formato exigido
print('Advanced List Processor');
print('=======================');
print('Original list: $originalList');
// Imprimir a primeira operação e o resultado
// Imprimir a segunda operação e o resultado final
print('Processing completed successfully');
}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ário7Funções Avançadas
Funções AnônimasPassando Funções como ArgumentosEntendendo ClosuresIntrodução à RecursividadeFunção Recursiva: Contagem RegressivaFunção Recursiva: FatorialRecapitulação - Processador de Listas2Operaçõ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 Únicos