Menu
Coddy logo textTech

הוספה והסרה מקבוצות

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 19 מתוך 65.

לאחר שיש לך Set, לעיתים קרובות תצטרך לשנות את התוכן שלו על ידי הוספת איברים חדשים או הסרת איברים קיימים. המתודות add() ו־remove() מספקות דרכים פשוטות לניהול האיברים בקבוצה שלך.

השיטה add() מנסה להוסיף איבר חדש לקבוצה. עם זאת, מכיוון שקבוצות מאחסנות רק ערכים ייחודיים, אם תנסה להוסיף איבר שכבר קיים, השיטה פשוט לא תעשה דבר - לא תתרחש שגיאה, והקבוצה תישאר ללא שינוי.

Set<String> usernames = {'alice', 'bob', 'charlie'};

usernames.add('diana');     // מוסיף את 'diana' בהצלחה
usernames.add('alice');     // לא עושה דבר - 'alice' כבר קיים

print(usernames);  // {alice, bob, charlie, diana}

המתודה remove() פועלת על ידי קבלת הערך שברצונך למחוק והסרתו מהקבוצה. אם הרכיב לא קיים בקבוצה, המתודה פשוט לא עושה דבר, ולכן בטוח להשתמש בה בלי לבדוק קודם.

usernames.remove('bob');        // מסיר את 'bob'
usernames.remove('unknown');    // לא עושה דבר - האיבר לא נמצא

print(usernames);  // {alice, charlie, diana}
challenge icon

אתגר

קל

צרו תוכנית שמנהלת מערכת לשיתוף פעולה בצוות, באמצעות הוספת חברי צוות חדשים והסרת חברים לא פעילים מצוות הפרויקט. התוכנית שלכם צריכה:

  1. לקרוא קלט מסוג מחרוזת שמייצג את שם הפרויקט
  2. לקרוא מספר קלטים מסוג מחרוזת שמייצגים את חברי הצוות הראשוניים (הקלט יסתיים כשתקבלו "initial_done")
  3. לקרוא מספר קלטים מסוג מחרוזת שמייצגים חברים חדשים להוספה (הקלט יסתיים כשתקבלו "add_done")
  4. לקרוא מספר קלטים מסוג מחרוזת שמייצגים חברים להסרה (הקלט יסתיים כשתקבלו "remove_done")
  5. ליצור Set עם חברי הצוות הראשוניים
  6. להשתמש בשיטה add() כדי להוסיף כל חבר חדש לצוות
  7. להשתמש בשיטה remove() כדי להסיר מהצוות כל חבר שצוין
  8. להדפיס את תוצאות ניהול הצוות בדיוק בפורמט שמוצג להלן

לדוגמה, אם שם הפרויקט הוא "Mobile App Development", החברים הראשוניים הם "Alice", "Bob", "Charlie", החברים החדשים להוספה הם "Diana", "Alice", "Eve", והחברים להסרה הם "Bob", "Frank", התוכנית שלכם צריכה להציג:

Project: Mobile App Development
Initial team: {Alice, Bob, Charlie}
Adding new members: [Diana, Alice, Eve]
After adding members: {Alice, Bob, Charlie, Diana, Eve}
Removing members: [Bob, Frank]
Final team: {Alice, Charlie, Diana, Eve}
Team size: 4
Status: Team updated successfully

אם שם הפרויקט הוא "Website Redesign", החברים הראשוניים הם "John", "Sarah", החברים החדשים להוספה הם "Mike", "John", והחברים להסרה הם "Sarah", "Unknown", התוכנית שלכם צריכה להציג:

Project: Website Redesign
Initial team: {John, Sarah}
Adding new members: [Mike, John]
After adding members: {John, Sarah, Mike}
Removing members: [Sarah, Unknown]
Final team: {John, Mike}
Team size: 2
Status: Team updated successfully

אם שם הפרויקט הוא "Data Analysis", החברים הראשוניים הם "Emma", החברים החדשים להוספה הם "Tom", "Lisa", והחברים להסרה הם "Emma", התוכנית שלכם צריכה להציג:

Project: Data Analysis
Initial team: {Emma}
Adding new members: [Tom, Lisa]
After adding members: {Emma, Tom, Lisa}
Removing members: [Emma]
Final team: {Tom, Lisa}
Team size: 2
Status: Team updated successfully

התוכנית שלכם חייבת להדגים שהשיטה add() אינה עושה דבר כשמנסים להוסיף חבר שכבר קיים, ושהשיטה remove() אינה עושה דבר כשמנסים להסיר חבר שאינו קיים. שמרו את רשימות הקלט כדי להציג אילו פעולות נוסו, ואז הציגו את תוכן ה־Set לאחר כל פעולה כדי להדגים את הייחודיות של Sets.

נסו בעצמכם

import 'dart:io';

void main() {
  // קראו את שם הפרויקט
  String? projectName = stdin.readLineSync();
  
  // קראו את חברי הצוות הראשוניים
  List<String> initialMembers = [];
  String? member;
  while ((member = stdin.readLineSync()) != "initial_done") {
    initialMembers.add(member!);
  }
  
  // קראו את החברים החדשים שיש להוסיף
  List<String> membersToAdd = [];
  while ((member = stdin.readLineSync()) != "add_done") {
    membersToAdd.add(member!);
  }
  
  // קראו את החברים שיש להסיר
  List<String> membersToRemove = [];
  while ((member = stdin.readLineSync()) != "remove_done") {
    membersToRemove.add(member!);
  }
  
  // TODO: כתבו את הקוד שלכם למטה
  // צרו Set עם חברי הצוות הראשוניים
  // הוסיפו חברים חדשים באמצעות המתודה add()
  // הסירו חברים באמצעות המתודה remove()
  
  // הדפיסו את התוצאות בפורמט הנדרש
  print("Project: $projectName");
  // הוסיפו כאן את פקודות ההדפסה הנותרות
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Dart אונליין