Menu
Coddy logo textTech

חזרה: מעבד רשימות

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-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 אונליין