סיכום – מארגן רשימות
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 9 מתוך 65.
אתגר
קלצרו תוכנית שמנהלת צינור עיבוד נתונים על ידי ביצוע מספר פעולות ברצף על רשימת מספרים. התוכנית שלכם צריכה:
- לקרוא קלט של מחרוזת המייצגת את שם מערך הנתונים
- לקרוא מספר קלטים שלמים המייצגים את ערכי הנתונים המקוריים (הקלט יסתיים כשתקבלו
-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. הדפיסו את התוצאות בפורמט הנדרש
}כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1מניפולציות מתקדמות ברשימות
מאפייני רשימה: ראשון ואחרוןמצב הרשימה: isEmpty ו-isNotEmpהיפוך רשימההוספה לרשימה: insertהסרת פריטים מרשימה: removeWhereחיפוש ברשימה: indexOfמיון רשימהערבוב רשימהסיכום – מארגן רשימות4מניפולציה מתקדמת של Map
מעבר על Mapבדיקה אם מפתחות וערכים קיימיםמאפייני Map: מפתחות וערכיםהוספה מותנית: putIfAbsentהסרת רשומות מ־MapMaps מקונניםסיכום – עדכון מלאי2פעולות פונקציונליות על רשימות
טרנספורמציה באמצעות 'map'סינון באמצעות 'where'שימוש ב-'.toList()'בדיקת תנאים באמצעות 'any'תנאים באמצעות 'every'איתור באמצעות 'firstWhere'סיכום – סינון נתונים5פרויקט: חישוב עגלת קניות
הגדרת הפרויקטהוספת פריטים לעגלה3קבוצות
מהי קבוצה?יצירת קבוצההוספה והסרה מקבוצותבדיקת נוכחות של איברים בקבוצההמרת רשימה לקבוצהאיחוד קבוצותחיתוך קבוצותהפרש קבוצותסיכום – רשימת אורחים ייחודית6טיפול בסיסי בשגיאות
מהן חריגות?בלוק ה-try-catchתפיסת חריגות באמצעות onבלוק ה-finallyהשלכת חריגהסיכום – חלוקה בטוחה9טיפוסי מנייה (Enums)
מה הם Enums?הגדרת Enum פשוטשימוש ב-Enums במשתניםEnums במשפטי 'switch'סיכום – רמזורתרגלו בעצמכם: קומפיילר Dart אונליין