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 por meio da criação de um processador de listas personalizável. Seu programa criará diferentes funções de processamento e usará uma função processadora principal que pode aplicar qualquer operação a uma lista de dados.
- Leia uma entrada de texto contendo números separados por vírgulas (por exemplo,
"10,20,30,40") - Leia uma entrada de texto que represente o tipo da primeira operação (
"multiply","add"ou"subtract") - Leia uma entrada de texto que represente o valor a ser usado na primeira operação (por exemplo,
"3") - Leia uma entrada de texto que represente o tipo da segunda operação (
"multiply","add"ou"subtract") - Leia uma entrada de texto que represente o valor a ser usado na segunda operação (por exemplo,
"5") - Divida a primeira entrada em números individuais e converta cada um em 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 a soma do primeiro com o 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 a ser usado na operação
- A função
processListWithOperationdeve aplicar a função fornecida a cada número da 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 exatamente no formato mostrado abaixo
Por exemplo, se as entradas forem "2,4,6", "multiply", "3", "add" e "10", seu programa deverá 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 deverá 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 nos tipos de operação informados. Use instruções condicionais para determinar qual função passar para cada operação. A função processListWithOperation deve percorrer a lista de entrada, aplicar a função fornecida com o valor informado a cada elemento e reunir 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() {
// Leia as entradas
String? numbersInput = stdin.readLineSync();
String? firstOperation = stdin.readLineSync();
String? firstValue = stdin.readLineSync();
String? secondOperation = stdin.readLineSync();
String? secondValue = stdin.readLineSync();
// Converta a entrada de texto em uma lista de números 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
// Crie as três funções de operação: multiplyBy, addTo, subtractFrom
// Crie a função processListWithOperation
// Aplique as operações em sequência e armazene os resultados
// Exiba os resultados no formato exigido
print('Advanced List Processor');
print('=======================');
print('Original list: $originalList');
// Exiba a primeira operação e o resultado
// Exiba 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 ÚnicosPratique por conta própria: Compilador de Dart online