
הטקסט המלא של הדקות הראשונות בהרצאה «Set Bitwise Bit masks - Multiple Choice Data Structures» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום וברוכים הבאים לפני שניגש לפתרון של התרגיל והשיעור הקודם רציתי להראות לכם את הרקע התיאורטי לפתרון, בסדר? בואו נניח שאתם רוצים לבחור אחת מתוך שלוש פיצות אז במקרה כזה אתם בוודאי תלכו על אינם כי אינם הוא מאפשר רשימת בחירה וזה בדיוק מה שנעשה עכשיו מה קורה ברגע שיש לכם מולטיפל צ'וייסס
יש לכם מספר בחירות מה אתם עושים במקרה כזה אחת האפשרויות שאתם יכולים ללכת עליה היא ללכת על סט שיוודא מניעת כפילויות ואפשר באמת ללכת פה על סטים.
אז מולטיפל צ'וייסס אחד המבנה נתונים המעניינים פה יהיה סט. אבל כבר דיברנו על זה בעבר והייתי רוצה להכיר לכם היום דרך אחרת.
דרך שנייה תהיה מבוססת על שפת שיא האמת תהיה להגדיר למשל סטראקט מאוד מאוד פשוט נניח עבור שפות תכנות נניח אנחנו שואלים איזה שפות תכנות אתם יודעים ואתם בוודאי יודעים הרבה שפות תכנות אז אנחנו רוצים להגדיר מספר אפשרויות.
בסדר? עכשיו בוא נניח שיש לנו איזשהו מספר שאיתו אתם רוצים לייצג כל שפה. נניח יש לנו static let, בואו נאמר Java. בסדר? עכשיו Java ניתן לה ערך של 1. וככה אנחנו יכולים להוסיף static let, בואו נאמר C-sharp ובואו ניתן ל-C-sharp, בואו נכתוב את זה ככה ובואו ניתן ל-C-sharp ערך של 2. בסדר?
עכשיו איך אני יכול לדעת איזה שפות בחרתם אני יכול להגיד שאם בחרתם אם יצא שלוש אז זה גם Java וגם C-Sharp בסדר עכשיו אם בחרתם אחד אז זה רק Java ואם בחרתם שתיים אז זה רק C-Sharp ברגע שיש לי מספרים פשוטים אז הכל טוב אבל מה קורה ברגע ששפות התכנון שלי קצת גדלות ואנחנו רוצים לדעת גם ביקשתם ככה ממני לדעת קוטלין וביקשתם ככה לדעת גם בוא נראה מה חסר לנו פה ג'אווה סקריפט אולי
והתיאבון כמובן גדל וגדל ואנחנו בהחלט רוצים ללמוד גם סוויפט. אוקיי אז עכשיו כבר המספר פה גדל וגדל והגענו לכל מיני בחירות.
עכשיו אם אתם תשימו לב מה שאני עשיתי כאן בטעות או לא בטעות זה לבחור פה בחזקות של שתיים אוקיי שתיים בחזקת אפס זה אחד 2 בחזקת 1 כן זה מה שאתם רואים כאן זה 2 בחזקת 0 זה יוצא 2 בחזקת 1 וזה יוצא 2 בריבוע 2 בריבוע זה 4 נכון זה אנחנו זוכרים מהדברים האלה אוקיי בסדר אז קריק מאוד מאוד נחמד בתכנות
זה דווקא להגדיר את הדברים האלה כחזקות של 2 עכשיו למה מגדירים את הדברים האלה כחזקות של 2 ובואו אני מזהיר אתכם עכשיו יהיה לכם פה בינארי קראש קורס אוקיי עכשיו אתם לא באמת צריכים לדעת בינארי בכל מיני מצבים ותמיד אתם מצליחים איכשהו להתחמק אבל לפעמים זה כלי טוב שיש לנו בארסנל לפחות ככה לדעת איך הדברים עובדים לאו דווקא להשתמש בהם אבל כן לדעת
שאיפשהו יש את הפתרון בסדר אז בואו נראה בינארי קראש קורס מה שאני טוען זה שהמחשב שלנו יודע נהדר לחשב חזקות של 2 המחשב שלנו בשבילו זה ככה לחם חוקו אם אני רוצה להגדיר את הדבר הזה הוא אינטג'ר ואם אני רוצה אני יכול לכתוב אינטג'רים בצורה בינארית אני יכול לטעון שהדבר הזה זה כמו 1 זה כמו לכתוב 0,1 או 0,0,0,1
כמה פעמים שאני רוצה אני יכול לכתוב 0 זה ככה לגמרי לגיטימי 2 בבסיס בינארי אפשר לייצג את זה בצורה הזאת רגע סליחה יפה מאוד וכמובן אם אני רוצה שבאמת יהיה בינארי אז אני צריך לרשום פה 0b לפני כל דבר בסדר ככה אנחנו מגדירים מספרים בינאריים כליטרל בסוויל.
איך מייצגים ארבע? אתם מוזמנים ככה לגרד בראש ואולי למדתם את זה קודם ואולי לא אז הנה בדיוק הזמן ארבע זה כשאנחנו מזיזים את הבית הזה עוד קצת את הבית הזה סליחה עוד קצת ושמונה בוא נראה איך אנחנו עושים שמונה בבסיס בינארי 0b 0 1 0 0 0 יפה ומה לגבי 16 אני מקווה שכבר ניחשתם 0b אחד וכל השאר
יפה זה היה השש עשרה הזה וכך הלאה עכשיו הטריק המגניב שרציתי להראות לכם בבינארי למולטיפל צ'וייסס מה שאנשים היו עושים פעם וככה באמת מתכנתים ובודקים כי זה טריק מדהים אני יכול להגיד שהיוזר צ'וייס לט צ'וייס שווה והיוזר שלי יכול לבחור בכמה שפות תכנות שהוא רוצה איך הוא היה בוחר הוא היה אומר languages נקודה אני יודע ג'אווה ואני יודע
גם עושים את זה בעזרת האופרטור or אנחנו יכולים להביא פונקציה שתקבל כמה שאנחנו רוצים מספרים כאלה ואנחנו נעשה קומבינה קומביין קומביין מולטי כן אני רוצה לשלב לצרף גם language java וגם language c-sharp זה מה שהיוזר בחר זה מה שהוא אמר שהוא יודע יפה עכשיו איך אני בודק
נגיד עכשיו אני מקבל מועמד לראיון עבודה ואני רוצה לבדוק טסט if the programmer knows Java איך בודקים המבדק שלנו יהיה לבדוק האם choice שלנו and languages.java שווה שווה כל הדבר הזה ביחד האם הוא שווה ל-Java בסדר זה יהיה המבחן של המתכנת כדי לבדוק האם הוא יודע גם Java בוא נדפיס מה תהיה פה התשובה אני אריץ את הדבר הזה והוא אומר לי
עכשיו, המתכנת פה בחר גם C-Sharp. בואו נבדוק האם זה עובד, הטריק הזה, גם על C-Sharp. זאת אומרת, איפה שכתוב Java, אני מחליף עכשיו ל-C-Sharp, וזה מבחן האם המתכנת שלנו יודע C-Sharp.
אני מריץ פה את הפליי, בודק, True, אוקיי? הוא אומר לי שהוא יודע גם Java וגם C-Sharp. בואו נבדוק שזה לא מקרי. אני רוצה לבדוק אם המתכנת שלנו יודע קוטלין, כי הוא לא הצהיר על זה בקורות חיים.
כאן הוא הצהיר שהוא יודע רק Java ו-C-Sharp. אז אני בא בודק את קוטלין לא לא יודע קוטלין סורי אנחנו ניקח מישהו אחר לעבודה בוא נראה מה לגבי ג'אווה סקריפט בוא נראה לא הוא לא יודע ג'אווה סקריפט בסדר אנחנו נתקן את זה בוא נראה שוב פעם כן אז ג'אווה הוא יודע והוא יודע c-sharp בגלל שהדבר הזה בהחלט עובד יפה עכשיו על מה זה מבוסס כל הסיפור הזה אתם מוזמנים
לחפש לעצמכם איזה שהוא ביטווייז קלקולטור אונליין בסדר זאת אומרת איזשהו בינארי קלקולטור ולראות מה קורה כשאתם עושים אינדים למספרים ואורים למספרים.
שוב פעם, אני לא יכול כרגע להקדיש קורס שלם לפעולות בבינארי, למרות שזה מגניב ומדליק, אבל בהחלט סוג הדברים האלה קיים בשטח וזה ככה משהו שהייתם רוצים לדעת כרקע בתכנות.
עוד רקע בתכנות שאני יכול להגיד לכם זה שאנחנו יכולים להגיד כשהדבר הזה זה אחד שהזיזו אותו בארבע מקומות.
בסדר? זאת אומרת, כשאתם מזיזים, הופ, נזיז מקום, הופ, נזיז מקום, הופ, נזיז מקום, הופ, נזיז מקום. בסדר? אז ככה, יש אופרטור כזה שאומר בוא נזיז מקום, וזה גם אופרטור בינארי, הביטווייז.
האופרטורים הבינאריים שראינו פה זה תאור ואת האנד. עכשיו, אני לא רוצה להגיד לכם שזאת הדרך היחידה. אני רק רציתי להגיד לכם שזאת התיאוריה למה הדרך שאני הולך להציג בפניכם עובדת.
עכשיו הסתיימה ההשערה, בסדר זה בוא נאמר ההשערה זה מעניין זה טוב לדעת אתם בלא הולכים לתכנת ככה אבל מה שאני רוצה עכשיו ללמד אתכם הטיפים שאני עכשיו רוצה לתת לכם ככה אתם בהחלט הולכים לתכנת כי זה דרך פנטסטית ונהדרת קוראים לזה אופשן סט עבור בחירה מרובה
אוקיי ואת זה אתם כבר צריכים לדעת בסדר אם עד עכשיו אטמתם את האוזניים לא רוצים להתעניין בבינארי, כל הדברים האלה. מפה אני רוצה שתקשיבו, בסדר? נניח שאנחנו רוצים לעשות טופינגס לפיצה שלנו.
עכשיו, אתם יודעים, טופינגס זה קטע כזה שאפשר לבחור הרבה טופינגס. אז יהיה לי סטראקט, נקרא לו, בוא נקרא לו פיצה טופינגס.
יפה? מצוין. עכשיו, איזה טופינגס אתם רוצים? אני רוצה אננס, אני רוצה זיתים, אני רוצה בוא נגיד צ'יז וטומטוס בסדר טומטוס אוקיי מקווה שלא שכחנו פה איזה משהו חשוב בפיצה בטח לא יזיק איזה אניאנס או משהו אבל בוא נעצור כאן יפה אז אלה התוספות איך אנחנו מגדירים אותם מה
אתם אומרים אני אומר בוא נגדיר אותם כחזקות של שתיים אבל בלי כל הדרכים החנוניות האלה כמו זה וזה אני אומר בואו נגדיר אותם כחזקות של שתיים עכשיו אני מגדיר את זה סטטי למה משתנה סטאטי הוא משתנה שמגדירים פעם אחת והוא נשאר כל הזמן בזיכרון, להבדיל פר יצירת מופע נגדיר משתנה אחר וזה סתם בזבוז, אוקיי?
וזה מה שאני רוצה. אגב, זה לא איזה זליגת זיכרון, למה אני מגדיר פה דברים מאוד מאוד קטנים בזיכרון, בסדר? אז בוא נגדיר פיינפל שווה 1, זוכרים?
זה 2 בחזקת 0. יאיי,