Menu
CoddyTech

مراجعة - معالج القوائم

جزء من قسم المنطق وتدفق التنفيذ في رحلة Dart على Coddy. الدرس 50 من 65.

challenge icon

التحدي

سهل

أنشئ نظامًا مرنًا لمعالجة البيانات يوضّح الدوال عالية الرتبة من خلال بناء معالج قوائم قابل للتخصيص. سينشئ برنامجك دوال معالجة مختلفة، ويستخدم دالة معالجة رئيسية يمكنها تطبيق أي عملية على قائمة من البيانات.

  1. اقرأ إدخالًا نصيًا يحتوي على أعداد مفصولة بفواصل (مثلًا، "10,20,30,40")
  2. اقرأ إدخالًا نصيًا يمثّل نوع العملية الأولى ("multiply" أو "add" أو "subtract")
  3. اقرأ إدخالًا نصيًا يمثّل القيمة المراد استخدامها مع العملية الأولى (مثلًا، "3")
  4. اقرأ إدخالًا نصيًا يمثّل نوع العملية الثانية ("multiply" أو "add" أو "subtract")
  5. اقرأ إدخالًا نصيًا يمثّل القيمة المراد استخدامها مع العملية الثانية (مثلًا، "5")
  6. قسّم الإدخال الأول إلى أعداد منفردة، وحوّل كل عدد إلى عدد صحيح
  7. أنشئ ثلاث دوال للعمليات:
    • multiplyBy - تأخذ عددين صحيحين وتُرجع حاصل ضرب الأول في الثاني
    • addTo - تأخذ عددين صحيحين وتُرجع مجموع الأول والثاني
    • subtractFrom - تأخذ عددين صحيحين وتُرجع ناتج طرح الثاني من الأول
  8. أنشئ دالة رئيسية باسم processListWithOperation تأخذ ثلاث معاملات:
    • قائمة من الأعداد الصحيحة
    • دالة تأخذ عددين صحيحين وتُرجع عددًا صحيحًا
    • قيمة عدد صحيح لاستخدامها مع العملية
  9. ينبغي لدالة processListWithOperation تطبيق الدالة المعطاة على كل عدد في القائمة باستخدام القيمة المقدّمة، ثم إرجاع قائمة جديدة بالنتائج
  10. طبّق العملية الأولى على القائمة الأصلية، ثم طبّق العملية الثانية على نتيجة العملية الأولى
  11. اعرض النتائج بالتنسيق الدقيق الموضّح أدناه

على سبيل المثال، إذا كانت المُدخلات هي "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');
}

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم Dart عبر الإنترنت