יצירת קבוצה
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 18 מתוך 65.
כעת, לאחר שהבנת מהו Set, נלמד איך ליצור אחד. ב-Dart יוצרים Set באמצעות סוגריים מסולסלים {}, כשהאיברים מופרדים בפסיקים, בדומה לכתיבת קבוצה מתמטית.
Set<String> colors = {'red', 'blue', 'green'};
print(colors); // {red, blue, green}חשוב לא לבלבל בין התחביר הזה לבין יצירת Map. אף ששניהם משתמשים בסוגריים מסולסלים, Set מכיל ערכים בלבד, ואילו Map מכיל זוגות של מפתח וערך המופרדים בנקודתיים. יש להצהיר במפורש על הטיפוס של Set ריק כדי להבדיל בינו לבין Map ריק.
Set<String> emptySet = <String>{}; // קבוצה ריקה
Map<String, int> emptyMap = {}; // מפה ריקהאפשר גם ליצור Set עם ערכים כפולים, אבל חשוב לזכור שהכפילויות יוסרו אוטומטית, כך שבאוסף הסופי יישארו רק איברים ייחודיים.
אתגר
קלצרו תוכנית שמנהלת מערכת תיוג לבלוג באמצעות יצירת קבוצה של תגיות ייחודיות לפוסט בבלוג. התוכנית שלכם צריכה:
- לקרוא קלט מסוג מחרוזת שמייצג את כותרת הפוסט בבלוג
- לקרוא כמה קלטים מסוג מחרוזת שמייצגים תגיות שיש להוסיף לפוסט (הקלט יסתיים כשתקבלו
"done") - ליצור קבוצה של מחרוזות לאחסון התגיות הייחודיות
- להוסיף כל תגית לקבוצה (כפילויות יוסרו אוטומטית)
- להדפיס את תוצאות תיוג הבלוג בדיוק בפורמט שמוצג למטה
לדוגמה, אם כותרת הבלוג היא "Introduction to Dart Programming" והתגיות הן "programming", "dart", "tutorial", "programming", "beginner", התוכנית שלכם צריכה להציג:
Blog Post: Introduction to Dart Programming
Tags added: [programming, dart, tutorial, programming, beginner]
Unique tags: {programming, dart, tutorial, beginner}
Total unique tags: 4
Status: Blog post tagged successfullyאם כותרת הבלוג היא "Web Development Tips" והתגיות הן "web", "html", "css", "web", "html", "javascript", התוכנית שלכם צריכה להציג:
Blog Post: Web Development Tips
Tags added: [web, html, css, web, html, javascript]
Unique tags: {web, html, css, javascript}
Total unique tags: 4
Status: Blog post tagged successfullyאם כותרת הבלוג היא "Getting Started" והתגיות הן "guide", "basics", התוכנית שלכם צריכה להציג:
Blog Post: Getting Started
Tags added: [guide, basics]
Unique tags: {guide, basics}
Total unique tags: 2
Status: Blog post tagged successfullyהתוכנית שלכם חייבת ליצור קבוצה באמצעות התחביר של סוגריים מסולסלים {} ולהדגים כיצד קבוצות מטפלות אוטומטית בהסרת כפילויות. תחילה, אחסנו את כל תגיות הקלט ברשימה כדי להציג מה הוזן במקור, ולאחר מכן צרו את הקבוצה כדי להציג את התגיות הייחודיות. הקבוצה צריכה להציג את התוכן שלה בפורמט הרגיל של קבוצה, עם סוגריים מסולסלים.
נסו בעצמכם
import 'dart:io';
void main() {
// קרא את כותרת הפוסט בבלוג
String? title = stdin.readLineSync();
// קרא תגיות עד להזנת "done"
List<String> allTags = [];
String? tag;
while ((tag = stdin.readLineSync()) != "done") {
if (tag != null) {
allTags.add(tag);
}
}
// TODO: כתוב כאן את הקוד שלך
// צור Set מרשימת התגיות כדי לקבל תגיות ייחודיות
// חשב את המספר הכולל של התגיות הייחודיות
// הצג את התוצאות
print("Blog Post: $title");
print("Tags added: $allTags");
// הדפס את התגיות הייחודיות בפורמט Set
// הדפס את המספר הכולל של התגיות הייחודיות
// הדפס הודעת מצב
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
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 אונליין