مراجعة - معالج القوائم
جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 50 من 65.
التحدي
سهلقم بإنشاء نظام مرن لمعالجة البيانات يوضح الدوال العليا (higher-order functions) من خلال بناء معالج قائمة قابل للتخصيص. سيقوم برنامجك بإنشاء دوال معالجة مختلفة واستخدام دالة معالجة رئيسية يمكنها تطبيق أي عملية على قائمة من البيانات.
- اقرأ مدخلاً نصياً يحتوي على أرقام مفصولة بفاصلة (مثلاً،
"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');
}جميع دروس Logic & Flow
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المجموعات
ما هي المجموعة؟إنشاء مجموعةالإضافة والحذف من المجموعاتالتحقق من وجود عناصر في المجموعةتحويل قائمة إلى مجموعةاتحاد المجموعاتتقاطع المجموعاتالفرق بين المجموعاتمراجعة - قائمة ضيوف فريدة