PracticU

Set Bitwise Bit masks - Multiple Choice Data Structures

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode › Set Bitwise Bit masks - Multiple Choice Data Structures
מילון מושגים:
ביט - יחידת המידע הקטנה ביותר במחשב, שערכה 0 או 1. שמונה ביטים מרכיבים בייט.
בינארי - ייצוג מידע בבסיס 2 בעזרת הספרות 0 ו-1. גם קובץ הכולל קוד מכונה ולא טקסט קריא.
Java - שפת תכנות עילית ומונחית עצמים, הרצה על מכונה וירטואלית (JVM) ומשמשת לפיתוח מגוון יישומים.
C# - שפת תכנות מונחית עצמים של מיקרוסופט, המשמשת בעיקר לפיתוח יישומים על פלטפורמת .NET.
אופרטור - סימן בקוד שמבצע פעולה על ערכים, כמו חיבור, השוואה או פעולה לוגית.

Set Bitwise Bit masks - Multiple Choice Data Structures
ההרצאה מסבירה את הרקע התיאורטי לבחירה מרובה: כיצד מייצגים כמה אפשרויות בערך אחד, ואיך בודקים אם אפשרות מסוימת נבחרה. הדרך המוצגת מבוססת על חזקות של שתיים ועל הפרוטוקול OptionSet בסוויפט.
למה חזקות של שתיים
1. בייצוג בינארי כל ספרה היא ביט, והמספר 2 בחזקת n הוא ביט אחד שדולק במקום n.
2. לכן כל אפשרות מקבלת חזקה אחרת של שתיים: 1, 2, 4, 8 וכן הלאה. שילוב של אפשרויות הוא סכום הערכים, וכל ערך נשאר ייחודי.
3. המרצה מציין שאין צורך לדעת חשבון בינארי כדי להשתמש בשיטה, אבל כדאי להכיר אותה כרקע.
דוגמה עם שפות תכנות
- מגדירים כל שפה עם ערך משלה: Java 1, C# 2 וכן הלאה.
- כאשר המשתמש בוחר כמה שפות, מחברים את הערכים עם האופרטור OR. בדיקה אם שפה מסוימת נבחרה נעשית על ידי AND עם הערך של השפה ובדיקה ששווה לה.
- המרצה מראה שבדיקה כזו מחזירה true רק לשפות שהמתכנת הצהיר שהוא יודע.
OptionSet בסוויפט
1. מגדירים מבנה (struct) שמכריז על OptionSet, ובעל ערך rawValue מסוג Int.
2. בתוך המבנה מגדירים static let לכל אפשרות עם החזקה של שתיים המתאימה לה. בשיעור האפשרויות הן תוספות לפיצה: גבינה, זיתים, עגבניות וכן הלאה.
3. בוחרים כמה אפשרויות על ידי רשימה בסוגריים מרובעים, והמערכת דואגת לאחסן את הערך המאוחד.
4. בדיקה אם אפשרות נבחרה נעשית על ידי הפעולה contains. המשתמש לא צריך לדעת איך הערך נשמר.
הסיכום: חזקות של שתיים מייצגות אפשרויות כביטים נפרדים, OptionSet בסוויפט מסתיר את החישוב הבינארי, ושילוב ובדיקה של אפשרויות נעשים בקלות.
השיעור הבא בקורס: UINaviagationControllers - Practice

פרקי ההרצאה: Set Bitwise Bit masks - Multiple Choice Data Structures

  1. 00:00

    מבוא: בחירה מרובה ומבני נתונים

  2. 00:39

    הגדרת שפות תכנות כקבועים

  3. 03:00

    מבוא לבינארי וחזקות של שתיים

  4. 04:17

    ייצוג מספרים בבינארי ב-Swift

  5. 04:57

    שילוב אפשרויות עם אופרטור OR

  6. 05:51

    בדיקה אם המתכנת יודע שפה מסוימת

  7. 08:51

    OptionSet לבחירה מרובה

  8. 09:55

    תוספות הפיצה כחזקות של שתיים

תמלול ההרצאה: Set Bitwise Bit masks - Multiple Choice Data Structures

הטקסט המלא של הדקות הראשונות בהרצאה «Set Bitwise Bit masks - Multiple Choice Data Structures» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום וברוכים הבאים לפני שניגש לפתרון של התרגיל והשיעור הקודם רציתי להראות לכם את הרקע התיאורטי לפתרון, בסדר? בואו נניח שאתם רוצים לבחור אחת מתוך שלוש פיצות אז במקרה כזה אתם בוודאי תלכו על אינם כי אינם הוא מאפשר רשימת בחירה וזה בדיוק מה שנעשה עכשיו מה קורה ברגע שיש לכם מולטיפל צ'וייסס

  2. 00:25

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

  3. 00:39

    אז מולטיפל צ'וייסס אחד המבנה נתונים המעניינים פה יהיה סט. אבל כבר דיברנו על זה בעבר והייתי רוצה להכיר לכם היום דרך אחרת.

  4. 00:48

    דרך שנייה תהיה מבוססת על שפת שיא האמת תהיה להגדיר למשל סטראקט מאוד מאוד פשוט נניח עבור שפות תכנות נניח אנחנו שואלים איזה שפות תכנות אתם יודעים ואתם בוודאי יודעים הרבה שפות תכנות אז אנחנו רוצים להגדיר מספר אפשרויות.

  5. 01:08

    בסדר? עכשיו בוא נניח שיש לנו איזשהו מספר שאיתו אתם רוצים לייצג כל שפה. נניח יש לנו static let, בואו נאמר Java. בסדר? עכשיו Java ניתן לה ערך של 1. וככה אנחנו יכולים להוסיף static let, בואו נאמר C-sharp ובואו ניתן ל-C-sharp, בואו נכתוב את זה ככה ובואו ניתן ל-C-sharp ערך של 2. בסדר?

  6. 01:40

    עכשיו איך אני יכול לדעת איזה שפות בחרתם אני יכול להגיד שאם בחרתם אם יצא שלוש אז זה גם Java וגם C-Sharp בסדר עכשיו אם בחרתם אחד אז זה רק Java ואם בחרתם שתיים אז זה רק C-Sharp ברגע שיש לי מספרים פשוטים אז הכל טוב אבל מה קורה ברגע ששפות התכנון שלי קצת גדלות ואנחנו רוצים לדעת גם ביקשתם ככה ממני לדעת קוטלין וביקשתם ככה לדעת גם בוא נראה מה חסר לנו פה ג'אווה סקריפט אולי

  7. 02:16

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

  8. 02:31

    עכשיו אם אתם תשימו לב מה שאני עשיתי כאן בטעות או לא בטעות זה לבחור פה בחזקות של שתיים אוקיי שתיים בחזקת אפס זה אחד 2 בחזקת 1 כן זה מה שאתם רואים כאן זה 2 בחזקת 0 זה יוצא 2 בחזקת 1 וזה יוצא 2 בריבוע 2 בריבוע זה 4 נכון זה אנחנו זוכרים מהדברים האלה אוקיי בסדר אז קריק מאוד מאוד נחמד בתכנות

  9. 03:02

    זה דווקא להגדיר את הדברים האלה כחזקות של 2 עכשיו למה מגדירים את הדברים האלה כחזקות של 2 ובואו אני מזהיר אתכם עכשיו יהיה לכם פה בינארי קראש קורס אוקיי עכשיו אתם לא באמת צריכים לדעת בינארי בכל מיני מצבים ותמיד אתם מצליחים איכשהו להתחמק אבל לפעמים זה כלי טוב שיש לנו בארסנל לפחות ככה לדעת איך הדברים עובדים לאו דווקא להשתמש בהם אבל כן לדעת

  10. 03:35

    שאיפשהו יש את הפתרון בסדר אז בואו נראה בינארי קראש קורס מה שאני טוען זה שהמחשב שלנו יודע נהדר לחשב חזקות של 2 המחשב שלנו בשבילו זה ככה לחם חוקו אם אני רוצה להגדיר את הדבר הזה הוא אינטג'ר ואם אני רוצה אני יכול לכתוב אינטג'רים בצורה בינארית אני יכול לטעון שהדבר הזה זה כמו 1 זה כמו לכתוב 0,1 או 0,0,0,1

  11. 04:02

    כמה פעמים שאני רוצה אני יכול לכתוב 0 זה ככה לגמרי לגיטימי 2 בבסיס בינארי אפשר לייצג את זה בצורה הזאת רגע סליחה יפה מאוד וכמובן אם אני רוצה שבאמת יהיה בינארי אז אני צריך לרשום פה 0b לפני כל דבר בסדר ככה אנחנו מגדירים מספרים בינאריים כליטרל בסוויל.

  12. 04:24

    איך מייצגים ארבע? אתם מוזמנים ככה לגרד בראש ואולי למדתם את זה קודם ואולי לא אז הנה בדיוק הזמן ארבע זה כשאנחנו מזיזים את הבית הזה עוד קצת את הבית הזה סליחה עוד קצת ושמונה בוא נראה איך אנחנו עושים שמונה בבסיס בינארי 0b 0 1 0 0 0 יפה ומה לגבי 16 אני מקווה שכבר ניחשתם 0b אחד וכל השאר

  13. 04:57

    יפה זה היה השש עשרה הזה וכך הלאה עכשיו הטריק המגניב שרציתי להראות לכם בבינארי למולטיפל צ'וייסס מה שאנשים היו עושים פעם וככה באמת מתכנתים ובודקים כי זה טריק מדהים אני יכול להגיד שהיוזר צ'וייס לט צ'וייס שווה והיוזר שלי יכול לבחור בכמה שפות תכנות שהוא רוצה איך הוא היה בוחר הוא היה אומר languages נקודה אני יודע ג'אווה ואני יודע

  14. 05:24

    גם עושים את זה בעזרת האופרטור or אנחנו יכולים להביא פונקציה שתקבל כמה שאנחנו רוצים מספרים כאלה ואנחנו נעשה קומבינה קומביין קומביין מולטי כן אני רוצה לשלב לצרף גם language java וגם language c-sharp זה מה שהיוזר בחר זה מה שהוא אמר שהוא יודע יפה עכשיו איך אני בודק

  15. 05:51

    נגיד עכשיו אני מקבל מועמד לראיון עבודה ואני רוצה לבדוק טסט if the programmer knows Java איך בודקים המבדק שלנו יהיה לבדוק האם choice שלנו and languages.java שווה שווה כל הדבר הזה ביחד האם הוא שווה ל-Java בסדר זה יהיה המבחן של המתכנת כדי לבדוק האם הוא יודע גם Java בוא נדפיס מה תהיה פה התשובה אני אריץ את הדבר הזה והוא אומר לי

  16. 06:40

    עכשיו, המתכנת פה בחר גם C-Sharp. בואו נבדוק האם זה עובד, הטריק הזה, גם על C-Sharp. זאת אומרת, איפה שכתוב Java, אני מחליף עכשיו ל-C-Sharp, וזה מבחן האם המתכנת שלנו יודע C-Sharp.

  17. 06:50

    אני מריץ פה את הפליי, בודק, True, אוקיי? הוא אומר לי שהוא יודע גם Java וגם C-Sharp. בואו נבדוק שזה לא מקרי. אני רוצה לבדוק אם המתכנת שלנו יודע קוטלין, כי הוא לא הצהיר על זה בקורות חיים.

  18. 07:03

    כאן הוא הצהיר שהוא יודע רק Java ו-C-Sharp. אז אני בא בודק את קוטלין לא לא יודע קוטלין סורי אנחנו ניקח מישהו אחר לעבודה בוא נראה מה לגבי ג'אווה סקריפט בוא נראה לא הוא לא יודע ג'אווה סקריפט בסדר אנחנו נתקן את זה בוא נראה שוב פעם כן אז ג'אווה הוא יודע והוא יודע c-sharp בגלל שהדבר הזה בהחלט עובד יפה עכשיו על מה זה מבוסס כל הסיפור הזה אתם מוזמנים

  19. 07:33

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

  20. 07:45

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

  21. 08:01

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

  22. 08:12

    בסדר? זאת אומרת, כשאתם מזיזים, הופ, נזיז מקום, הופ, נזיז מקום, הופ, נזיז מקום, הופ, נזיז מקום. בסדר? אז ככה, יש אופרטור כזה שאומר בוא נזיז מקום, וזה גם אופרטור בינארי, הביטווייז.

  23. 08:25

    האופרטורים הבינאריים שראינו פה זה תאור ואת האנד. עכשיו, אני לא רוצה להגיד לכם שזאת הדרך היחידה. אני רק רציתי להגיד לכם שזאת התיאוריה למה הדרך שאני הולך להציג בפניכם עובדת.

  24. 08:38

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

  25. 09:00

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

  26. 09:15

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

  27. 09:30

    יפה? מצוין. עכשיו, איזה טופינגס אתם רוצים? אני רוצה אננס, אני רוצה זיתים, אני רוצה בוא נגיד צ'יז וטומטוס בסדר טומטוס אוקיי מקווה שלא שכחנו פה איזה משהו חשוב בפיצה בטח לא יזיק איזה אניאנס או משהו אבל בוא נעצור כאן יפה אז אלה התוספות איך אנחנו מגדירים אותם מה

  28. 10:03

    אתם אומרים אני אומר בוא נגדיר אותם כחזקות של שתיים אבל בלי כל הדרכים החנוניות האלה כמו זה וזה אני אומר בואו נגדיר אותם כחזקות של שתיים עכשיו אני מגדיר את זה סטטי למה משתנה סטאטי הוא משתנה שמגדירים פעם אחת והוא נשאר כל הזמן בזיכרון, להבדיל פר יצירת מופע נגדיר משתנה אחר וזה סתם בזבוז, אוקיי?

  29. 10:25

    וזה מה שאני רוצה. אגב, זה לא איזה זליגת זיכרון, למה אני מגדיר פה דברים מאוד מאוד קטנים בזיכרון, בסדר? אז בוא נגדיר פיינפל שווה 1, זוכרים?

  30. 10:35

    זה 2 בחזקת 0. יאיי,

לקורס המלא: קורס פיתוח אפליקציות לאייפון

ההרצאה הקודמת: UINaviagationControllers - UINavigationItems Titles, Bar Button Items

ההרצאה הבאה: UINaviagationControllers - Practice

הרצאות קשורות מקורסים אחרים

  • הסבר על set
  • Multiple Contracts
  • Set Dimensions Programmatically
  • הרשאות מיוחדות - sticky bit

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון