
insert. ניסיון להכניס ערך שכבר קיים לא יוסיף אותו שוב.count מחזירה את מספר האיברים הייחודיים שבקבוצה.union מחזירה קבוצה שמכילה את כל האיברים משתי הקבוצות, בלי כפילויות. בדוגמה של שני חוגים, כל התלמידים מופיעים פעם אחת, גם מי שלומד בשניהם.intersection מחזירה רק את מי שנמצא בשתי הקבוצות. בדוגמה, התלמיד שלומד בשני החוגים הוא התשובה.subtracting מחזירה את האיברים שבקבוצה הראשונה ולא נמצאים בשנייה.symmetricDifference מחזירה את האיברים שנמצאים רק באחת משתי הקבוצות, כלומר בלי החלק המשותף.sorted או בלי מיון. גם מפתחות או ערכים של מילון אפשר להמיר לקבוצה.הטקסט המלא של הדקות הראשונות בהרצאה «קבוצות - Sets - שפת Swift» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום וברוכים הבאים. דיברנו בשיעורים הקודמים על מערכים ולאחר מכן על מילוניים והיום אנחנו רוצים לדבר על סוג שלישי ועקרוני של מבנה נתונים, מאוד חשוב, שנקרא קבוצה.
קבוצה, כמו שאנחנו נראה בסרטון הדגמה, היא פשוט אוסף של איברים בדומה למבנה הנתונים האחרים. אז מה מייחד בכל זאת את הקבוצה על פני מערך או מילון?
אם אנחנו מסתכלים על מערך, מערך מאפשר כפילויות, אנחנו רואים שיש לנו פעמיים את הערך הירוק ופעמיים גם יש לנו פה את הערך הכתום. אם אני לעומת זאת ממיר את המערך שלי לקבוצה, אז בקבוצה אין אפשרות להכיל כפילויות והיא תסנן את הכפולים בצורה אוטומטית, שזה כלי נהדר.
אנחנו יכולים למנוע פשוט כפילויות בעזרת קבוצה, בעזרת סט. תכונה נוספת שהיא חשובה בצורה עקרונית להגיד על קבוצות היא שבקבוצה אין חשיבות לסדר.
אם במערך אני שמתי משהו באינדקס האפס, יישאר באינדקס האפס וכך אם שמתי את האיבר הירוק במערך במקום האחד אז האינדקס תמיד יהיה 1. בקבוצה אני מכניס דברים אבל אין חשיבות לסדר ואני לא יודע באיזה מקום בקבוצה זה נמצא.
כמובן שאפשר לסדר את זה באיזושהי צורה שאני ארצה אבל לא בעזרת קבוצה, בסדר אנחנו נצטרך ברגע שיש לי קבוצה אין חשיבות לסדר.
לפני שנעבור לדוגמאות אז אני רוצה להגיד עוד כמה מילים על הסיבות שבגללה אני רוצה להשתמש בקבוצה. קודם כל קבוצה עוזרת לנו למנוע כפילויות אז זה ה-use case הבסיסי ביותר והחשוב ביותר להשתמש בקבוצה זה באופן אוטומטי מבנה נתונים שמסנן את כל מה שכפול.
דבר שני וחשוב לא פחות קבוצה אפשר לעשות איתה הרבה מאוד פעולות שאנחנו כמובן נראה אחת אחת בכל סרטוני הדגמה שנקראות חיתוך איחוד הפרש בין קבוצות ואפילו הפרש סימטרי כלומר קבוצות מאפשרות לי לנתח את המידע שנמצא בפנים על ידי סדרת פעולות מוגדרות והן כבר נמצאות בתוכנה אז אני אראה לכם בסרטונים אוסף של מקרים שבהם
כדאי לנו מאוד להשתמש בקבוצה בנוסף ל-Use Case הבסיסי ביותר למנוע כפילויות בואו קודם כל נראה איך להגדיר קבוצה אז אני פשוט מגדיר לעצמי קבוצה בצורה הבאה var בוא נאמר group כלשהו ופה אנחנו נרצה לייצר אולי סט חדש קבוצה באנגלית למקרה שלא ציינו את זה קודם נקראת סט עכשיו אני רוצה לייצר לעצמי סט של סטרינגים סט של מכרוזות
ועל כן אנחנו מתחילים את זה בצורה הבאה כלומר אם הייתי רוצה סט של מספרים אז הייתי מתחיל את זה בצורה הזאת אז יצירת קבוצה מתבצעת באופן הבא סט חדש וכאן אנחנו כותבים סט של איזה טייפ לתוך הקבוצה אפשר להכניס איברים על ידי אינסרט עכשיו כאן אנחנו בסט של סטרינגים ואני יכול
לנסות להכניס כמה דברים שאני רוצה אבל מה קורה אם אני מנסה לשלול דברים אותו דבר? מה יהיה בקבוצה באמת? בואו נדפיס רגע את הקבוצה וננסה לבדוק את העניין הזה.
וגם הייתי מציע שנבדוק את הגודל של הקבוצה כי זה גם משהו חשוב. דברים עקרוניים שאני רוצה שתדעו א' להגדיר קבוצה, דיברנו, דבר שני להכניס דברים לקבוצה, נעשה את נקודה אינסרט, ודבר שלישי אני רוצה שנדע איך מוצאים את הגודל של הקבוצה אז בוא נראה
הוא נקודה קאונט בסדר זה יהיה הגודל של הקבוצה אני יכול להדפיס אותו כרגע מספר האיברים אנחנו יכולים לראות את הסייז קאונט בואו נראה מה יצא במקום בתקנסה רק מור למה רק מור זוכרים מה שאמרנו על קבוצה היא מונעת באופן אוטומטי אפילו יותר זה נחמד בוא ננסה לבדוק את הטענה שלי לגבי הסדר אני אכניס את דייב ראשון את מור שני ואת ג'וש אני אכניס אותו
שלישי אני אריץ שוב את התוכנית ובואו ננסה לראות מה יהיה הסדר אחרי ההדפסה, מה יהיה סדר ההדפסה. אנחנו רואים את סדר ההכנסה אבל סדר ההדפסה הוא שונה, ג'וש אין חשיבות לסדר, אני לא יכול לטעון פה איזשהו סדר מסוים.
בקבוצה אנחנו רואים שא' מונע כפילויות, אנחנו ראינו שאם הכנסתי דברים כפולים זה פשוט נעלם אוטומטית, סונן אוטומטית, דבר שני ראינו שבקבוצה גם אין חשיבות לסדר זה מה שהדפסה הזאת מראה לי אין חשיבות לסדר אבל הנה יש לכם עכשיו מבנה נתונים שמונע כפילויות באופן אוטומטי וזאת סיבה מצוינת להשתמש בסט
אם יבקשו מכם ברעיון עבודה להגריל שלושה מספרים שונים יהיה מאוד מאוד אלגנטי אם תשתמשו בסט בפתרון ובכלל הרבה מאוד שאלות ברעיונות עבודה מתכווננים למבנה נתונים כאלה ואחרים כמו סט כמו מילון וכמו מערב אז תנסו כל הזמן לחשוב על שאלות ברעיונות עבודה בהקשר של מבנה הנתונים שכדאי לכם להשתמש בהם כדי להקל על עצמכם על
החיים וגם בתכנות דרך אגב לא רק בראיון עצמו. עכשיו אני רוצה לדבר איתכם על ארבע הפעולות החשובות הנוספות שאתם מקבלים כבונוס כשמשתמשים בקבוצות.
אנחנו נדבר על הפעולות האלה אחת אחת בואו נסתכל. יש כל מיני פעולות בעצם על קבוצות תחשבו שיש לכם שתי קבוצות ועכשיו אם אתם רוצים מידע על הקבוצות האלה פעולות שאפשר לעשות על שתי קבוצות למשל אני רוצה לדעת איזה איברים נמצאים בשתי הקבוצות אז לדבר הזה אנחנו נקרא פיתוף לפעמים אני דווקא להפך אני רוצה לדעת איזה איברים הם שונים בשתי הקבוצות
תחשבו שיש לכם כמה תלמידים ואתם רוצים לסנן אותם לדעת איזה תלמידים שלכם שלומדים קסנתר גם לומדים גיטרה או להפך בסדר שלומדים את זה ולא את השני או לומדים גם וגם או לא לומדים אף אחד כל הפעולות האלה אתם יכולים לעשות אותן או בקושי רב בתכנות רגיל או פשוט להשתמש בקבוצה קבוצה עוזרת לנו לנתח את המידע שלנו בצורה מאוד יעילה
וגם נעימה וכיפית לשימוש אז בואו נראה את הפעולות הפעולה הראשונה שאני רוצה להראות לכם היא פשוט נקראת איחוד איחוד בין סטים מאחד באמת את שתי הקבוצות לקבוצה אחת למה זה טוב לי בואו נראה ביחד נניח שיש לנו קבוצה ראשונה שבה יש שלוש שמות דייב ג'וש ומור בסדר
עכשיו בוא נאמר שאני מייצר קבוצה שנייה אסור לי לייצר את הקבוצה הבלית כי אז אני לא אוכל להכניס לשם כלום נכון לא רוצה שהקבוצה תהיה קבוע אני רוצה שהיא תהיה משתנה אני אייצר קבוצה שנייה גרופ 2 ובוא נאמר שיש לנו פה גם כן אוסף של תלמידים אבל בחוג אחר בסדר נגיד אלה הקודמים למדו חוג גיטרה ופה אנחנו מלמדים חוג פסלתר בסדר אז לגרופ 2 אני אוסיף את התלמידים שלומדים
בו על ידי הפעולה אינסרט בוא נגיד דינה לומדת בקבוצה מספר 2 דפנה וגם ג'וש עכשיו בואו נראה מה יהיה האיחוד של שתי הקבוצות האלה בואו פשוט ניקח את גרופ 1 ופשוט אנחנו רוצים לאחד אותו על ידי הפעולה יוניון יוניון נקראת איחוד בעברית ואנחנו רוצים לאחד את גרופ 2 עכשיו מה לדעתכם תהיה
התשובה מה תהיה התוצאה בואו נעשה ככה נקרא לזה יוניון פה ונדפיס את היוניון עכשיו היוניון אני אתן לכם רמז מה תהיה התשובה היוניון הוא גם סנט אז מה בעצם יהיה האיחוד בין שתי הקבוצות כמה