Ôn tập: Bộ xử lý danh sách
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 50 trên 65.
Thử thách
DễTạo một hệ thống xử lý dữ liệu linh hoạt để minh họa hàm bậc cao bằng cách xây dựng một bộ xử lý danh sách có thể tùy chỉnh. Chương trình của bạn sẽ tạo các hàm xử lý khác nhau và dùng một hàm xử lý chính có thể áp dụng bất kỳ phép toán nào lên một danh sách dữ liệu.
- Đọc một chuỗi đầu vào chứa các số được phân tách bằng dấu phẩy (ví dụ:
"10,20,30,40") - Đọc một chuỗi đầu vào biểu thị loại phép toán thứ nhất (
"multiply","add"hoặc"subtract") - Đọc một chuỗi đầu vào biểu thị giá trị dùng cho phép toán thứ nhất (ví dụ:
"3") - Đọc một chuỗi đầu vào biểu thị loại phép toán thứ hai (
"multiply","add"hoặc"subtract") - Đọc một chuỗi đầu vào biểu thị giá trị dùng cho phép toán thứ hai (ví dụ:
"5") - Tách đầu vào thứ nhất thành các số riêng lẻ và chuyển từng số thành số nguyên
- Tạo ba hàm phép toán:
multiplyBy- nhận hai số nguyên và trả về tích của số thứ nhất với số thứ haiaddTo- nhận hai số nguyên và trả về tổng của số thứ nhất và số thứ haisubtractFrom- nhận hai số nguyên và trả về hiệu của số thứ nhất trừ số thứ hai- Tạo một hàm chính tên là
processListWithOperationnhận ba tham số: - Một danh sách số nguyên
- Một hàm nhận hai số nguyên và trả về một số nguyên
- Một giá trị số nguyên dùng cho phép toán
- Hàm
processListWithOperationcần áp dụng hàm đã cho cho từng số trong danh sách bằng giá trị được cung cấp, rồi trả về một danh sách mới chứa các kết quả - Áp dụng phép toán thứ nhất lên danh sách ban đầu, sau đó áp dụng phép toán thứ hai lên kết quả của phép toán thứ nhất
- Hiển thị kết quả theo đúng định dạng bên dưới
Ví dụ, nếu đầu vào là "2,4,6", "multiply", "3", "add" và "10", chương trình của bạn sẽ in ra:
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 successfullyNếu đầu vào là "15,25,35", "subtract", "5", "multiply" và "2", chương trình của bạn sẽ in ra:
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 successfullyChương trình của bạn phải minh họa hàm bậc cao bằng cách truyền hàm phép toán phù hợp cho processListWithOperation dựa trên đầu vào về loại phép toán. Dùng câu lệnh điều kiện để xác định hàm cần truyền cho từng phép toán. Hàm processListWithOperation cần lặp qua danh sách đầu vào, áp dụng hàm đã cho cùng với giá trị được cung cấp cho từng phần tử, rồi thu thập kết quả vào một danh sách mới. Áp dụng các phép toán lần lượt, dùng kết quả của phép toán thứ nhất làm đầu vào cho phép toán thứ hai.
Tự làm thử
import 'dart:io';
void main() {
// Đọc dữ liệu đầu vào
String? numbersInput = stdin.readLineSync();
String? firstOperation = stdin.readLineSync();
String? firstValue = stdin.readLineSync();
String? secondOperation = stdin.readLineSync();
String? secondValue = stdin.readLineSync();
// Chuyển chuỗi đầu vào thành danh sách các số nguyên
List<int> originalList = numbersInput!.split(',').map((e) => int.parse(e.trim())).toList();
int firstOpValue = int.parse(firstValue!);
int secondOpValue = int.parse(secondValue!);
// TODO: Viết code bên dưới
// Tạo ba hàm thực hiện phép tính: multiplyBy, addTo, subtractFrom
// Tạo hàm processListWithOperation
// Thực hiện các phép tính theo thứ tự và lưu kết quả
// In kết quả theo định dạng yêu cầu
print('Advanced List Processor');
print('=======================');
print('Original list: $originalList');
// In phép tính đầu tiên và kết quả
// In phép tính thứ hai và kết quả cuối cùng
print('Processing completed successfully');
}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àng7Hàm nâng cao
Hàm ẩn danhTruyền hàm làm đối sốTìm hiểu về bao đóngGiới thiệu về đệ quyHàm đệ quy: Đếm ngượcHàm đệ quy: Giai thừaÔn tập: Bộ xử lý danh sách2Thao 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ặpTự luyện tập: Trình biên dịch Dart online