مراجعة - معالج القوائم
جزء من قسم المنطق وتدفق التنفيذ في رحلة Dart على Coddy. الدرس 50 من 65.
التحدي
سهلأنشئ نظامًا مرنًا لمعالجة البيانات يوضّح الدوال عالية الرتبة من خلال بناء معالج قوائم قابل للتخصيص. سينشئ برنامجك دوال معالجة مختلفة، ويستخدم دالة معالجة رئيسية يمكنها تطبيق أي عملية على قائمة من البيانات.
- اقرأ إدخالًا نصيًا يحتوي على أعداد مفصولة بفواصل (مثلًا،
"10,20,30,40") - اقرأ إدخالًا نصيًا يمثّل نوع العملية الأولى (
"multiply"أو"add"أو"subtract") - اقرأ إدخالًا نصيًا يمثّل القيمة المراد استخدامها مع العملية الأولى (مثلًا،
"3") - اقرأ إدخالًا نصيًا يمثّل نوع العملية الثانية (
"multiply"أو"add"أو"subtract") - اقرأ إدخالًا نصيًا يمثّل القيمة المراد استخدامها مع العملية الثانية (مثلًا،
"5") - قسّم الإدخال الأول إلى أعداد منفردة، وحوّل كل عدد إلى عدد صحيح
- أنشئ ثلاث دوال للعمليات:
multiplyBy- تأخذ عددين صحيحين وتُرجع حاصل ضرب الأول في الثانيaddTo- تأخذ عددين صحيحين وتُرجع مجموع الأول والثانيsubtractFrom- تأخذ عددين صحيحين وتُرجع ناتج طرح الثاني من الأول- أنشئ دالة رئيسية باسم
processListWithOperationتأخذ ثلاث معاملات: - قائمة من الأعداد الصحيحة
- دالة تأخذ عددين صحيحين وتُرجع عددًا صحيحًا
- قيمة عدد صحيح لاستخدامها مع العملية
- ينبغي لدالة
processListWithOperationتطبيق الدالة المعطاة على كل عدد في القائمة باستخدام القيمة المقدّمة، ثم إرجاع قائمة جديدة بالنتائج - طبّق العملية الأولى على القائمة الأصلية، ثم طبّق العملية الثانية على نتيجة العملية الأولى
- اعرض النتائج بالتنسيق الدقيق الموضّح أدناه
على سبيل المثال، إذا كانت المُدخلات هي "2,4,6" و"multiply" و"3" و"add" و"10"، فينبغي أن يُخرج برنامجك:
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 successfullyإذا كانت المُدخلات هي "15,25,35" و"subtract" و"5" و"multiply" و"2"، فينبغي أن يُخرج برنامجك:
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 successfullyيجب أن يوضّح برنامجك الدوال عالية الرتبة من خلال تمرير دالة العملية المناسبة إلى processListWithOperation بناءً على مُدخلات نوع العملية. استخدم العبارات الشرطية لتحديد الدالة التي ستمرّرها لكل عملية. ينبغي لدالة processListWithOperation المرور على قائمة الإدخال، وتطبيق الدالة المعطاة مع القيمة المقدّمة على كل عنصر، وتجميع النتائج في قائمة جديدة. طبّق العمليتين بالتتابع، مستخدمًا نتيجة العملية الأولى مُدخلًا للعملية الثانية.
جرّب بنفسك
import 'dart:io';
void main() {
// اقرأ المدخلات
String? numbersInput = stdin.readLineSync();
String? firstOperation = stdin.readLineSync();
String? firstValue = stdin.readLineSync();
String? secondOperation = stdin.readLineSync();
String? secondValue = stdin.readLineSync();
// حوّل الإدخال النصي إلى قائمة من الأعداد الصحيحة
List<int> originalList = numbersInput!.split(',').map((e) => int.parse(e.trim())).toList();
int firstOpValue = int.parse(firstValue!);
int secondOpValue = int.parse(secondValue!);
// TODO: اكتب الكود الخاص بك أدناه
// أنشئ دوال العمليات الثلاث: multiplyBy, addTo, subtractFrom
// أنشئ الدالة processListWithOperation
// طبّق العمليات بالتتابع وخزّن النتائج
// اعرض النتائج بالتنسيق المطلوب
print('Advanced List Processor');
print('=======================');
print('Original list: $originalList');
// اطبع العملية الأولى ونتيجتها
// اطبع العملية الثانية والنتيجة النهائية
print('Processing completed successfully');
}جميع دروس المنطق وتدفق التنفيذ
1التعامل المتقدم مع القوائم
خصائص القائمة: first و lastحالة القائمة: isEmpty و isNotEmptyعكس القائمةالإضافة إلى القائمة: insertالحذف من القائمة: removeWhereالبحث في القائمة: indexOfفرز القائمةخلط القائمةملخص - منظم القوائم4معالجة الـ Map المتقدمة
التكرار عبر الـ Mapالتحقق من المفاتيح والقيمخصائص الـ Map: keys و valuesإضافة مشروطة: putIfAbsentإزالة العناصر من الـ Mapالـ Maps المتداخلةمراجعة - تحديث المخزون7الدوال المتقدمة
الدوال المجهولةتمرير الدوال كوسطاءفهم الـ Closuresمقدمة في الاستدعاء الذاتيدالة الاستدعاء الذاتي: العد التنازليدالة الاستدعاء الذاتي: العامليمراجعة - معالج القوائم2عمليات القوائم الوظيفية
التحويل باستخدام 'map'التصفية باستخدام 'where'استخدام '.toList()'التحقق من الشروط باستخدام 'any'الشروط باستخدام 'every'البحث باستخدام 'firstWhere'مراجعة - تصفية البيانات5مشروع: حاسبة عربة التسوق
إعداد المشروعإضافة العناصر إلى العربة3المجموعات
ما هي المجموعة؟إنشاء مجموعةالإضافة والحذف من المجموعاتالتحقق من وجود عناصر في المجموعةتحويل قائمة إلى مجموعةاتحاد المجموعاتتقاطع المجموعاتالفرق بين المجموعاتمراجعة - قائمة ضيوف فريدةتدرّب بنفسك: مترجم Dart عبر الإنترنت