ملخص - منظم القوائم
جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 9 من 65.
التحدي
سهلقم بإنشاء برنامج يدير خط معالجة بيانات من خلال إجراء عمليات متعددة على قائمة من الأرقام بالتسلسل. يجب على برنامجك القيام بما يلي:
- قراءة مدخل نصي (string) يمثل اسم مجموعة البيانات (dataset name)
- قراءة مدخلات صحيحة (integer) متعددة تمثل قيم البيانات الأصلية (سينتهي الإدخال عندما تتلقى
-999) - إدراج القيمة
100في بداية القائمة (الموقع 0) - إزالة جميع الأرقام السالبة من القائمة باستخدام
removeWhere() - فرز الأرقام المتبقية بترتيب تصاعدي باستخدام
sort() - التحقق مما إذا كانت القائمة النهائية فارغة باستخدام
isEmpty - طباعة نتائج معالجة البيانات بالتنسيق الدقيق الموضح أدناه
على سبيل المثال، إذا كان اسم مجموعة البيانات هو "Sales Data" والقيم هي 45، -12، 78، -5، 23، يجب أن يخرج برنامجك ما يلي:
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 remainingإذا كان اسم مجموعة البيانات هو "Temperature Readings" والقيم هي -10، -5، -20، يجب أن يخرج برنامجك ما يلي:
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 remainingإذا كان اسم مجموعة البيانات هو "Error Values" والقيمة الوحيدة هي -50، يجب أن يخرج برنامجك ما يلي:
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 remainingيجب أن يقوم برنامجك بجميع العمليات بالتسلسل الدقيق المحدد: أولاً insert() للقيمة 100 في الموقع 0، ثم استخدام removeWhere() لإزالة الأرقام السالبة، ثم sort() للقائمة، وأخيراً التحقق مما إذا كانت القائمة isEmpty. اعرض "List is empty" إذا كانت القائمة النهائية لا تحتوي على عناصر، أو "List is not empty" إذا كانت تحتوي على عناصر.
جرّب بنفسك
import 'dart:io';
void main() {
// قراءة اسم مجموعة البيانات
String? datasetName = stdin.readLineSync();
// قراءة الأرقام حتى يتم مواجهة -999
List<int> originalData = [];
while (true) {
int? number = int.parse(stdin.readLineSync()!);
if (number == -999) {
break;
}
originalData.add(number);
}
// طباعة المعلومات الأولية
print('Dataset: $datasetName');
print('Original data: $originalData');
// TODO: اكتب الكود الخاص بك أدناه
// 1. إدراج 100 في البداية (الموقع 0)
// 2. إزالة جميع الأرقام السالبة باستخدام removeWhere()
// 3. فرز القائمة بترتيب تصاعدي باستخدام sort()
// 4. التحقق مما إذا كانت القائمة فارغة باستخدام isEmpty
// 5. طباعة النتائج بالتنسيق المطلوب
}جميع دروس Logic & Flow
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المجموعات
ما هي المجموعة؟إنشاء مجموعةالإضافة والحذف من المجموعاتالتحقق من وجود عناصر في المجموعةتحويل قائمة إلى مجموعةاتحاد المجموعاتتقاطع المجموعاتالفرق بين المجموعاتمراجعة - قائمة ضيوف فريدة