مراجعة - تصفية البيانات
جزء من قسم المنطق وتدفق التنفيذ في رحلة Dart على Coddy. الدرس 16 من 65.
التحدي
سهلقم بإنشاء برنامج يدير خط معالجة بيانات (data analytics pipeline) من خلال تصفية، تحويل، ومعالجة مجموعات البيانات الرقمية. يجب على برنامجك القيام بما يلي:
- قراءة مدخل نصي (string) يمثل اسم مجموعة البيانات (dataset name)
- قراءة عدة مدخلات صحيحة (integers) تمثل قيم البيانات الخام (سينتهي الإدخال عندما تتلقى
-1) - قراءة مدخل صحيح يمثل الحد الأدنى (threshold) للتصفية
- استخدام التابع
where()لتصفية القيم التي تكون أكبر من الحد الأدنى (threshold) - استخدام التابع
map()لتربيع كل قيمة تمت تصفيتها - استخدام التابع
toList()لتحويل النتيجة النهائية إلى قائمة (list) - طباعة نتائج معالجة البيانات بالتنسيق الدقيق الموضح أدناه
على سبيل المثال، إذا كان اسم مجموعة البيانات هو "Sales Data"، والقيم الخام هي 2، 5، 1، 8، 3، 6، والحد الأدنى هو 3، يجب أن يخرج برنامجك ما يلي:
Dataset: Sales Data
Raw data: [2, 5, 1, 8, 3, 6]
Threshold: 3
Filtering values > 3
Filtered values: (5, 8, 6)
Squaring filtered values
Squared values: (25, 64, 36)
Final processed data: [25, 64, 36]
Processing complete: 3 values processedإذا كان اسم مجموعة البيانات هو "Temperature Readings"، والقيم الخام هي 1، 2، والحد الأدنى هو 5، يجب أن يخرج برنامجك ما يلي:
Dataset: Temperature Readings
Raw data: [1, 2]
Threshold: 5
Filtering values > 5
Filtered values: ()
Squaring filtered values
Squared values: ()
Final processed data: []
Processing complete: 0 values processedإذا كان اسم مجموعة البيانات هو "Performance Metrics"، والقيم الخام هي 4، 7، 9، والحد الأدنى هو 2، يجب أن يخرج برنامجك ما يلي:
Dataset: Performance Metrics
Raw data: [4, 7, 9]
Threshold: 2
Filtering values > 2
Filtered values: (4, 7, 9)
Squaring filtered values
Squared values: (16, 49, 81)
Final processed data: [16, 49, 81]
Processing complete: 3 values processedيجب أن يقوم برنامجك بربط العمليات (chaining) بهذا التسلسل الدقيق: أولاً استخدم where() لتصفية القيم الأكبر من الحد الأدنى، ثم استخدم map() لتربيع كل قيمة تمت تصفيتها، وأخيراً استخدم toList() لتحويل النتيجة إلى قائمة. يجب أن تظهر النتائج المتوسطة بتنسيق القابل للتكرار (iterable) بين قوسين دائريين، بينما يجب عرض القائمة النهائية بتنسيق الأقواس المربعة.
جرّب بنفسك
import 'dart:io';
void main() {
// قراءة اسم مجموعة البيانات
String? datasetName = stdin.readLineSync();
// قراءة قيم البيانات الخام حتى يتم مواجهة -1
List<int> rawData = [];
while (true) {
int value = int.parse(stdin.readLineSync()!);
if (value == -1) break;
rawData.add(value);
}
// قراءة قيمة العتبة (threshold)
int threshold = int.parse(stdin.readLineSync()!);
// عرض المعلومات الأولية
print('Dataset: $datasetName');
print('Raw data: $rawData');
print('Threshold: $threshold');
print('Filtering values > $threshold');
// TODO: اكتب الكود الخاص بك أدناه
// استخدم where() لتصفية القيم الأكبر من العتبة
// استخدم map() لتربيع كل قيمة مصفاة
// استخدم toList() لتحويل النتيجة إلى قائمة
// طباعة النتائج بالتنسيق المطلوب
// تذكر عرض القيم المصفاة بتنسيق الأقواس الهلالية
// عرض القيم المربعة بتنسيق الأقواس الهلالية
// عرض البيانات النهائية المعالجة بتنسيق الأقواس المربعة
// طباعة رسالة اكتمال المعالجة مع العدد
}جميع دروس المنطق وتدفق التنفيذ
1التعامل المتقدم مع القوائم
خصائص القائمة: first و lastحالة القائمة: isEmpty و isNotEmptyعكس القائمةالإضافة إلى القائمة: insertالحذف من القائمة: removeWhereالبحث في القائمة: indexOfفرز القائمةخلط القائمةملخص - منظم القوائم4معالجة الـ Map المتقدمة
التكرار عبر الـ Mapالتحقق من المفاتيح والقيمخصائص الـ Map: keys و valuesإضافة مشروطة: putIfAbsentإزالة العناصر من الـ Mapالـ Maps المتداخلةمراجعة - تحديث المخزون2عمليات القوائم الوظيفية
التحويل باستخدام 'map'التصفية باستخدام 'where'استخدام '.toList()'التحقق من الشروط باستخدام 'any'الشروط باستخدام 'every'البحث باستخدام 'firstWhere'مراجعة - تصفية البيانات5مشروع: حاسبة عربة التسوق
إعداد المشروعإضافة العناصر إلى العربة3المجموعات
ما هي المجموعة؟إنشاء مجموعةالإضافة والحذف من المجموعاتالتحقق من وجود عناصر في المجموعةتحويل قائمة إلى مجموعةاتحاد المجموعاتتقاطع المجموعاتالفرق بين المجموعاتمراجعة - قائمة ضيوف فريدةتدرّب بنفسك: مترجم Dart عبر الإنترنت