הוספה לרשימה: insert
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 4 מתוך 65.
כשצריך להוסיף איבר למיקום מסוים ברשימה, המתודה insert() מאפשרת לך לשלוט במדויק במיקום שבו האיבר החדש יופיע. בניגוד למתודה add(), שתמיד מוסיפה איברים לסוף הרשימה, insert() מאפשרת לך למקם איבר בכל מיקום שתבחר.
המתודה insert() מקבלת שני פרמטרים: מיקום האינדקס שבו רוצים להוסיף את האיבר, והאיבר עצמו. כשמוסיפים איבר, כל האיברים הקיימים במיקום הזה ואחריו זזים מקום אחד ימינה.
List<String> tasks = ['Buy groceries', 'Walk the dog', 'Read a book'];
// הוסף משימה חדשה בהתחלה (באינדקס 0)
tasks.insert(0, 'Check emails');
print(tasks); // ['Check emails', 'Buy groceries', 'Walk the dog', 'Read a book']השיטה הזו שימושית במיוחד כאשר לסדר של האיברים יש חשיבות, למשל ברשימות עדיפויות, בלוחות זמנים או בכל מצב שבו צריך לשמור על סדר מסוים. האפשרות להוסיף בכל מיקום הופכת את insert() לכלי רב־עוצמה לניהול אוספים מסודרים.
אתגר
קלצרו תוכנית שמנהלת מערכת משימות בעדיפות גבוהה באמצעות הוספת משימות דחופות במיקומים ספציפיים ברשימת משימות קיימת. התוכנית שלכם צריכה:
- לקרוא קלט מסוג מחרוזת המייצג את שם רשימת המשימות
- לקרוא כמה קלטים מסוג מחרוזת המייצגים משימות קיימות (הקלט יסתיים כאשר תתקבל מחרוזת ריקה)
- לקרוא קלט מסוג מחרוזת המייצג משימה דחופה להוספה
- לקרוא קלט מסוג מספר שלם המייצג את המיקום שבו יש להוסיף את המשימה הדחופה
- להשתמש בשיטה
insert()כדי להוסיף את המשימה הדחופה במיקום שצוין - להדפיס את רשימת המשימות המעודכנת בדיוק בפורמט שמוצג למטה
לדוגמה, אם שם רשימת המשימות הוא "Work Schedule", המשימות הקיימות הן "Review documents", "Team meeting", "Submit report", המשימה הדחופה היא "Client call", והמיקום הוא 1, התוכנית שלכם צריכה להפיק:
Task List: Work Schedule
Original tasks: [Review documents, Team meeting, Submit report]
Inserted: Client call at position 1
Updated tasks: [Review documents, Client call, Team meeting, Submit report]
Total tasks: 4אם שם רשימת המשימות הוא "Daily Goals", המשימות הקיימות הן "Exercise", "Read book", המשימה הדחופה היא "Buy groceries", והמיקום הוא 0, התוכנית שלכם צריכה להפיק:
Task List: Daily Goals
Original tasks: [Exercise, Read book]
Inserted: Buy groceries at position 0
Updated tasks: [Buy groceries, Exercise, Read book]
Total tasks: 3התוכנית שלכם חייבת להשתמש בשיטה insert() כדי להוסיף את המשימה הדחופה במיקום שצוין. קלט המיקום יהיה תמיד אינדקס תקף (בין 0 לאורך רשימת המשימות הקיימת).
נסו בעצמכם
import 'dart:io';
void main() {
// קרא את שם רשימת המשימות
String? taskListName = stdin.readLineSync();
// קרא את המשימות הקיימות עד למחרוזת ריקה
List<String> tasks = [];
while (true) {
String? task = stdin.readLineSync();
if (task == null || task.isEmpty) {
break;
}
tasks.add(task);
}
// קרא את המשימה הדחופה ואת המיקום
String? urgentTask = stdin.readLineSync();
int position = int.parse(stdin.readLineSync()!);
// TODO: כתוב את הקוד שלך למטה
// השתמש במתודה insert() כדי להוסיף את המשימה הדחופה במיקום שצוין
// הדפס את התוצאות בפורמט הנדרש
print('Task List: $taskListName');
print('Original tasks: $tasks');
print('Inserted: $urgentTask at position $position');
// הדפס את המשימות המעודכנות ואת המספר הכולל שלהן
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
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 אונליין