היפוך רשימה
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 3 מתוך 65.
לפעמים צריך להציג את איברי הרשימה בסדר הפוך. Dart מספקת את המאפיין .reversed, שיוצר תצוגה הפוכה של הרשימה בלי לשנות את הרשימה המקורית.
המאפיין .reversed מחזיר אובייקט שניתן לעבור עליו, המציג את איברי הרשימה בסדר הפוך. פירוש הדבר שהאיבר האחרון מופיע ראשון, האיבר הלפני אחרון מופיע שני, וכן הלאה.
List<int> numbers = [1, 2, 3, 4, 5];
var reversedNumbers = numbers.reversed;
print(reversedNumbers); // (5, 4, 3, 2, 1)
// הרשימה המקורית נותרת ללא שינוי
print(numbers); // [1, 2, 3, 4, 5]פרט חשוב הוא ש-.reversed מחזיר אובייקט שניתן לעבור עליו באיטרציה, ולא רשימה. אם צריך לעבוד איתו כרשימה, אפשר להמיר אותו באמצעות .toList(). התכונה הזו שימושית במיוחד כשצריך לעבד נתונים בסדר הפוך, תוך שמירה על הרשימה המקורית ללא שינוי.
אתגר
קלצרו תוכנית שמנתחת רשימת קריאה על ידי הצגת הספרים גם בסדר המקורי וגם בסדר הפוך. התוכנית שלכם צריכה:
- לקרוא קלט מסוג מחרוזת שמייצג את כותרת רשימת הקריאה
- לקרוא כמה קלטים מסוג מחרוזת שמייצגים כותרות של ספרים (הקלט יסתיים כשתתקבל מחרוזת ריקה)
- להשתמש במאפיין
.reversedכדי ליצור תצוגה הפוכה של רשימת הספרים - להדפיס את ניתוח רשימת הקריאה בדיוק בפורמט שמוצג למטה
לדוגמה, אם כותרת רשימת הקריאה היא "Summer Reading" והספרים הם "1984", "To Kill a Mockingbird", "The Great Gatsby", התוכנית שלכם צריכה להציג:
Reading List: Summer Reading
Books in original order: (1984, To Kill a Mockingbird, The Great Gatsby)
Books in reversed order: (To Kill a Mockingbird, The Great Gatsby, 1984)
Total books: 3אם כותרת רשימת הקריאה היא "Quick Reads" ומסופק רק ספר אחד, "Animal Farm", התוכנית שלכם צריכה להציג:
Reading List: Quick Reads
Books in original order: (Animal Farm)
Books in reversed order: (Animal Farm)
Total books: 1התוכנית שלכם חייבת להשתמש במאפיין .reversed כדי להציג את הספרים בסדר הפוך. זכרו ש-.reversed מחזיר איטרביל, ולכן כשתדפיסו אותו, הוא יוצג עם סוגריים עגולים ולא עם סוגריים מרובעים.
נסו בעצמכם
import 'dart:io';
void main() {
// קראו את הכותרת של רשימת הקריאה
String? title = stdin.readLineSync();
// קראו כותרות של ספרים עד למחרוזת ריקה
List<String> books = [];
String? book;
while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
books.add(book);
}
// TODO: כתבו את הקוד שלכם כאן
// השתמשו במאפיין .reversed כדי ליצור תצוגה בסדר הפוך של רשימת books
// הדפיסו את הפלט בפורמט הנדרש
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
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 אונליין