Ôn tập: trình sắp xếp 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 9 trên 65.
Thử thách
DễTạo một chương trình quản lý quy trình xử lý dữ liệu bằng cách lần lượt thực hiện nhiều thao tác trên danh sách (list) số. Chương trình của bạn cần:
- Đọc một đầu vào chuỗi (string) biểu thị tên tập dữ liệu
- Đọc nhiều đầu vào số nguyên (integer) biểu thị các giá trị dữ liệu ban đầu. Đầu vào sẽ kết thúc khi bạn nhận được
-999 - Chèn giá trị
100vào đầu danh sách (vị trí 0) - Xóa tất cả số âm khỏi danh sách bằng
removeWhere() - Sắp xếp các số còn lại theo thứ tự tăng dần bằng
sort() - Kiểm tra xem danh sách cuối cùng có rỗng không bằng
isEmpty - In kết quả xử lý dữ liệu theo đúng định dạng bên dưới
Ví dụ, nếu tên tập dữ liệu là "Sales Data" và các giá trị là 45, -12, 78, -5, 23, chương trình của bạn cần in ra:
Dataset: Sales Data
Original data: [45, -12, 78, -5, 23]
Step 1: Inserted 100 at beginning
After insertion: [100, 45, -12, 78, -5, 23]
Step 2: Removed negative numbers
After removal: [100, 45, 78, 23]
Step 3: Sorted in ascending order
After sorting: [23, 45, 78, 100]
Final result: List is not empty
Processing complete: 4 values remainingNếu tên tập dữ liệu là "Temperature Readings" và các giá trị là -10, -5, -20, chương trình của bạn cần in ra:
Dataset: Temperature Readings
Original data: [-10, -5, -20]
Step 1: Inserted 100 at beginning
After insertion: [100, -10, -5, -20]
Step 2: Removed negative numbers
After removal: [100]
Step 3: Sorted in ascending order
After sorting: [100]
Final result: List is not empty
Processing complete: 1 values remainingNếu tên tập dữ liệu là "Error Values" và giá trị duy nhất là -50, chương trình của bạn cần in ra:
Dataset: Error Values
Original data: [-50]
Step 1: Inserted 100 at beginning
After insertion: [100, -50]
Step 2: Removed negative numbers
After removal: [100]
Step 3: Sorted in ascending order
After sorting: [100]
Final result: List is not empty
Processing complete: 1 values remainingChương trình của bạn phải thực hiện mọi thao tác theo đúng trình tự đã nêu: đầu tiên dùng insert() để chèn giá trị 100 vào vị trí 0, sau đó dùng removeWhere() để xóa các số âm, rồi dùng sort() để sắp xếp danh sách, cuối cùng kiểm tra xem danh sách có isEmpty hay không. Hiển thị "List is empty" nếu danh sách cuối cùng không có phần tử nào, hoặc "List is not empty" nếu danh sách có phần tử.
Tự làm thử
import 'dart:io';
void main() {
// Đọc tên bộ dữ liệu
String? datasetName = stdin.readLineSync();
// Đọc các số cho đến khi gặp -999
List<int> originalData = [];
while (true) {
int? number = int.parse(stdin.readLineSync()!);
if (number == -999) {
break;
}
originalData.add(number);
}
// In ra thông tin ban đầu
print('Dataset: $datasetName');
print('Original data: $originalData');
// TODO: Viết code của bạn bên dưới
// 1. Chèn 100 vào đầu danh sách (vị trí 0)
// 2. Xóa tất cả các số âm bằng removeWhere()
// 3. Sắp xếp danh sách theo thứ tự tăng dần bằng sort()
// 4. Kiểm tra danh sách có rỗng không bằng isEmpty
// 5. In kết quả theo định dạng yêu cầu
}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àng2Thao 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