מיון רשימה
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 7 מתוך 65.
כשצריך לסדר את הרכיבים ברשימה, Dart מספקת את המתודה sort(), שמסדרת את הרכיבים בסדר עולה. המתודה הזאת שימושית במיוחד לסידור שמות בסדר אלפביתי או מספרים מהקטן לגדול.
המתודה sort() משנה את הרשימה המקורית ישירות במקום ליצור רשימה ממוינת חדשה. כשקוראים ל־sort() על רשימה, היא מסדרת מחדש את האיברים הקיימים במקומם.
List<String> names = ['Charlie', 'Alice', 'Bob'];
names.sort();
print(names); // ['Alice', 'Bob', 'Charlie']
List<int> scores = [85, 92, 78, 96];
scores.sort();
print(scores); // [78, 85, 92, 96]השיטה sort() פועלת באופן אוטומטי עבור סוגי נתונים נפוצים כמו מחרוזות ומספרים. עבור מחרוזות, היא ממיינת לפי סדר אלפביתי, ואילו עבור מספרים, היא ממיינת מהנמוך לגבוה. כך היא הופכת לכלי פשוט לארגון הנתונים שלך בכל פעם שדרושים לך איברים בסדר צפוי.
אתגר
קלצרו תוכנית שמנהלת מערכת תפריטים של מסעדה באמצעות ארגון המנות בקטגוריות שונות. התוכנית שלכם צריכה:
- לקרוא קלט מסוג מחרוזת שמייצג את שם המסעדה
- לקרוא כמה קלטים מסוג מחרוזת שמייצגים את שמות המנות (הקלט יסתיים כשתקבלו מחרוזת ריקה)
- להשתמש בשיטה
sort()כדי לסדר את המנות בסדר אלפביתי - להדפיס את התפריט המאורגן בדיוק בפורמט שמוצג להלן
לדוגמה, אם שם המסעדה הוא "Bella Vista" והמנות הן "Pasta Carbonara", "Caesar Salad", "Grilled Salmon", "Apple Pie", התוכנית שלכם צריכה להפיק:
Restaurant: Bella Vista
Original menu: [Pasta Carbonara, Caesar Salad, Grilled Salmon, Apple Pie]
Sorted menu: [Apple Pie, Caesar Salad, Grilled Salmon, Pasta Carbonara]
Total dishes: 4
Status: Menu organized alphabeticallyאם שם המסעדה הוא "Quick Bites" והמנות הן "Burger", "Pizza", "Sandwich", התוכנית שלכם צריכה להפיק:
Restaurant: Quick Bites
Original menu: [Burger, Pizza, Sandwich]
Sorted menu: [Burger, Pizza, Sandwich]
Total dishes: 3
Status: Menu organized alphabeticallyאם שם המסעדה הוא "Cafe Corner" וסופקה רק מנה אחת, "Coffee", התוכנית שלכם צריכה להפיק:
Restaurant: Cafe Corner
Original menu: [Coffee]
Sorted menu: [Coffee]
Total dishes: 1
Status: Menu organized alphabeticallyעל התוכנית שלכם להשתמש בשיטה sort() כדי לסדר את המנות בסדר אלפביתי. זכרו ש-sort() משנה את הרשימה המקורית במקום, לכן תצטרכו ליצור עותק של הרשימה המקורית לפני המיון אם תרצו להציג גם את הגרסה המקורית וגם את הגרסה הממוינת.
נסו בעצמכם
import 'dart:io';
void main() {
// קראו את שם המסעדה
String? restaurantName = stdin.readLineSync();
// קראו את שמות המנות עד למחרוזת ריקה
List<String> dishes = [];
String? dish;
while ((dish = stdin.readLineSync()) != null && dish!.isNotEmpty) {
dishes.add(dish);
}
// TODO: כתבו את הקוד שלכם למטה
// צרו עותק של הרשימה המקורית ומיינו אותו
// חשבו את מספר המנות הכולל
// הדפיסו בפורמט הפלט הנדרש
// הציגו את התוצאות
// print("Restaurant: $restaurantName");
// print("Original menu: $dishes");
// print("Sorted menu: $sortedDishes");
// print("Total dishes: $totalDishes");
// print("Status: Menu organized alphabetically");
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
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 אונליין