ZAMYLA צ'אן: היי, כולם. ברוכים הבאים למדור. היום הוא רק הולך להיות כל החידון לסקור עבור החידון שלך ביום רביעי. אני מקווה שכולם זוכר ש יש להם חידון ביום רביעי. ואם לא, גם, עכשיו אתה כבר הזכיר. לכן יום רביעי לוודא שאתה מופיע לכיתה או התאמות אחרות כ הכרחי. אתם הולכים להיות מדהים. זה הולך להיות נהדר. ואני הולך לעשות כל שביכולתי כדי לעזור להכין אותך היום לחידון שלך עכשיו. וגם במקרה שאתה לא יודע, יש מפגש סקירה רחב כמובן היום בשעה 7 ב מעבדות Northwest B103 חדר. אתה יכול לראות אותי שוב להדרן אני תוביל את חלק שמושב הסקירה גם. אז אם אתה לא יכול לקבל מספיק ממני עכשיו, אתה יכול לבוא שוב הלילה. כל הדברים הנכונים, כל כך הראשונים ראשון. רק כמה טיפים חידון לפני ש למעשה לצלול לביקורות. אז כמו בכל בחינה, תרגול בהחלט לעזור לך. יש בחינות מהעבר שש או שבע שנים על שם, אז זה הרבה תרגול חומר בשבילכם יש לי. ואכן, היום הוא באמת רק הולך להיות הולך על כל נושאים שיש לכם שאלות על כן כעובד על בעיות בפועל מהחידון אפס. אז אני אזרוק את אפס חידון בשנה שעברה כאן, ואנחנו יכולים לעבוד דרך כל בעיות כי אתם רוצים. אז תרגול. אתה הולך להתחיל לעשות את זה היום. קוד על נייר. אז כן, אם כולם באמת יכול לצאת נייר, זה יהיה נהדר, בגלל שאתה לא הולך להיות המחשב שלך על בחינה וכתיבת קוד ביד לעתים קרובות הרבה יותר קשה ממה שאתה מצפה. אתה רגיל רק לראות אותו ולהקליד אותה, ויש לך מהדר שלך לעזור לך כאשר יש לך טעויות, אבל אתה לא מקבל את זה בבחינה. אז זה באמת חשוב בעצם תוכל לכתוב את הקוד, וכי זיכרון שריר של עשייה זה ביד ממש לעזור לך. אז אנחנו מקבלים קצת קרובים. זה יום שני ב. הבחינה שלך ביום רביעי. אבל אם יש לך זמן, בהחלט לקחת אחד של בחינות משנה שעברה או שנה לפני תחת אילוץ הזמן של שעה וחצי. רק לדפוק את שעה וחצי של זמן, ולשבת בעצמך, ו פשוט לעבוד דרך הבעיות כאילו היית למעשה לוקח את זה, כי אחד הדברים הגדולים ביותר שאנו שומעים על החידונים הוא שהם ארוכים מאוד. זה הרבה חומר. יש הרבה שאלות, ורוב האנשים לא יכולים לסיים. אני יודע שאני לגמרי לא סיימתי החידונים שלי כשלקחתי את הכיתה. ברוח זו, כפחות סעיף נוח, להבין שקורס זה נועד כדי לספק לאנשים בכל הרמות. כל הסיבה שיש לנו לפצל פחות נוח, אי שם בין, יותר ונוח יותר הוא ל סוג של לעשות את זה הוגן יותר. ואם אתה פחות נוח, זה אין צורך כשלעצמה כדי לקבל את הכל. כמו אם היית מקבל הכל, כנראה שהיית עושה להיות בחלק יותר בנוח. אז ברור שאתה לא הכה את עצמכם קשה מדי אם אתה לא יכול לסיים את הבחינה. קח את זה ממני, אני לא עשיתי את זה. אני עדיין רכז. אני עדיין עוזר ללמד את הקורס. אתה תהיה בסדר. בְּסֵדֶר. ולבסוף, לישון קצת. ברור לכל בחינה אנחנו תמיד אומרים את זה. דחס בלילה שלפני ושלא יישן עושה not-- אולי אם ש עובד בשבילך, לכו על זה. אבל עבור הרוב המכריע של אנשים, מצליח לישון קצת, להניח למוח שלך ולשחזר לפני שהגעתי לבחינה יהיה באמת לעזור לך. כמו כן אין ספק כמעט ש בטח יהיו ממתקים במבחן, ולכן אתה צריך להסתכל קדימה. אתם הולכים לעשות גדולים. זה הולך להיות בסדר. ועכשיו בשעה וחצי הקרובים אני אנסה ומכין לך כמיטב יכולתי. אז יש לי שקופיות מבעצם כל החלקים עד עכשיו. אני לא הולך לעבור כולם כי זה לא אפשרי בשעה וחצי, כמו גם כעובד על בעיות בפועל. אז במקום שיש לי רשימה של נושאים. כל אלה הם הדברים שאנחנו יכולים חוקרים אותך על. אם יש משהו ש זה באמת קופץ כי אתה רוצה ללכת על, ש רוצה שאני אעבור על מושגית, אני יכול לנסות ולתת לי שלכם סקירה יש. או אם אתה רוצה לקפוץ ישר ל עושה בעיות תרגול יחד, אנחנו יכולים לעשות את זה. זה תלוי בכם. אין כל כך הרבה מכם. אז זה מה שאתם רוצים לעשות. אני רוצה להיות הכי מועיל לכיוונכם. אז אני אתן לך רק להסתכל. קהל: דבר אחד הוא התרשים שנשמור אומר על הערימה והערימה. רק כל הרעיון מאחורי ושמה זה אומר. ZAMYLA צ'אן: כן, בסדר. זה כל הדרך ב הסוף, אז תן לי לגלול. קהל: אין לנו ל לעשות את זה עכשיו, אבל שיהיה. ZAMYLA צ'אן: האם היה anything-- זה אחד. האם זה סוג של נעים על אנשים? קהל: כן, אני שני ש. ואנחנו יכולים גם לעשות גלישת חוצץ? ZAMYLA צ'אן: הצפת מאגר? אישור. אז גלישת חוצץ היא די פשוט קל לדבר עליו. זה בעצם אוגר אתה חושב על כמה זיכרון מערך שיש לך, נכון? אנחנו בדרך כלל מדברים על הצפת מאגר כאשר אתה לא בודק כמה המשתמש מכניס, נכון? ולהיות הרעיון עם חיץ גלישה היא הם לשים בהרבה יותר מדי נתונים למרחב כי אתה כבר הוקצה להם, נכון? אז אם אתה אומר, לתת לי שלי מסר כלשהו, ​​אנחנו בהנחה שהם הולכים לתת לי לנו הודעה באורך סבירה. אולי כמה שורות, מה לא. אז אנחנו לא בודקים. במקום זאת, הם להאכיל אותנו ב ספר שלם שמסר, וזה גולש הסכום של שטח שאנחנו כבר הוקצו לכך. ומה שקורה הוא שזה יכול להחליף מקומות שהוא לא אמור. אז אני יודע שהפרוף מלאן אמר משהו על התקפות גלישת מאגר. אז זה שבו קלט רצון המשתמשים חלק מהכמות אדירה של נתונים בתקווה שהוא מחליף האחרון סוף החיץ שלך ומחליף את something-- אני תוהה אני יש לנו שקופיות אלה כאן. אני לא חושב שיש לנו אלה שקופיות בכאן. אבל בעיקרון הוא מחליף חלק מסוים מזיכרון המאפשר לו גישה לחלקים של המחשב שלך שלא היית בדרך כלל יש להם גישה ל. הדבר הגדול ביותר ב הצפת מאגר היא רק להבין שזה קורה כאשר אתה לא ב בדיקה כמה המשתמש מכניס. כאשר אתה לא סוג של שמירה על ש. ו הפשוט ביותר דבר, זה רק המשתמש שלך הזנת כמות מסיבית הנתונים בניסיון כדי להחליף כמה ביטחון חלק מהזיכרון שלך. זה כל מה שזה. אז זה כאן, מחסנית וערימה. בעיקרון כל זה הוא רק ייצוג של זיכרון ושבו הם מאוחסנים דברים. זה באמת סוג של כל מה שאתה צריך לדעת. הדברים הגדולים ביותר ש אתה צריך לדעת הם that-- תנו לי לראות אם יש better-- כאן. אז זה הערימה כאן. אז ערימה יש לעשות עם כל הפונקציות שלך שאתה קורא בכל זמן נתון. ומה שחשוב לזכור נוסע של שבוע שעבר עם malloc הוא, כי לא באמת יש לך שליטה הנדרשת על זה. הכל תלוי בכאשר מסוים פונקציות ביצוע. וכאשר הם מבצעים, הם יש מה שנקרא מסגרות מחסנית כי לעלות כאן. אז זה כל סוג של קורה ללא כל קלט אמיתי ממך. אתה כותב את התכנית שלך, ואתה לתת לו לרוץ, וערימת סוג של לוקחת מתחזק את עצמו כפי שהוא צריך. אז אם בעיקרי שאתה קורא קובייה, שיועבר כאן. זה יהיה ליצור מסגרת. אבל אין שום דבר שאתה באופן מפורש לעשות כדי ליצור את מסגרת ערימה אחרת מאשר לכתוב הפונקציה מלכתחילה, בסדר? מה הוא סוג של תחת שלך שליטה היא הערמה עם malloc. אז בכל פעם שמשהו malloc, אתה לוקח זיכרון מהערימה. וזה זיכרון ש יש לי, מחוסר מילה טובה יותר, שליטה מפורשת על, כי תזכור עם malloc זה בעצם שם עד שאתה אומר אחר. לאלו מכם ש צפה סעיף בשבוע שעבר, זה שם עד שתגיד לו ללכת משם. זה יהיה שם, אלא אם כן אחרת אמר שלא. אז הערימה רק משהו אתה יכול לחשוב על זיכרון שיש לך שליטה עליו. ואלה הם רק שני דברים גדולים אחרים. חוץ מזה, אתה לא צריך להיות לדאוג יותר מדי על מחסנית וערימה שאלות או בדרך כלל יותר פשוט אם יש לך פרמטרים מקומיים או פונקציה זה תהיה על הערימה או הערימה. ברור במקרה הזה זה יהיה הערימה. אם אתה mallocing משהו, איפה זה מגיע? הערימה. אם אתה מסתכל על חידונים בפועל, אלה הם בדרך כלל הסוג של שאלות שיש להם. אתה לא צריך לדאוג על זה יותר מדי. אתה נכנסת באופן מפורש יותר על ערימה וערימה בשלב מאוחר יותר או בכיתות CS אחרות. אז רק שיש סוג של רעיון כללי של מה זה יהיה טוב, שבו אני פשוט סוג של ניגש. כל נושאים אחרים? כן? קהל: אתה יכול לעבור על מצביעים שוב ממש מהר? ZAMYLA צ'אן: מצביעים? האם אתה רוצה רעיוני סקירה של מצביעים או שאתה נוהג עם מצביעים? קהל: כמו סוג של התחביר. ZAMYLA צ'אן: התחביר? כן. בסדר, אנחנו מקבלים שם. כן, אז זה פשוט סוג של משהו כאשר יש לך פונקציה רקורסיבית, בכל פעם שפונקציה רקורסיבית היא בשם, זה רק מוסיף מסגרת ערימה אחרת. פחות או יותר דוגמא איך אתה לא באמת יש שליטה על מסגרות על הערימה שלך. אישור, מצביעים. בסדר, כל כך יצירת מצביעים. זכור, זה פשוט להקליד כוכב. אז כל סוג של נתונים ש אתה הולך להיות הצבעה ל. אז זה יהיה מצביע לint. זה יהיה מצביע לchar. זה יהיה מצביע למצוף. אז זה בעצם מה ש אתה רוצה שזה יהיה הצבעה ל, כוכב הוא איך אתה מצהיר מצביע, בסדר? אבל אז ברור שאהיה קצת מסובך כאשר יש לך מצביע או שאתה צריך לככב בכל. אז ההבדל הגדול הוא כאשר אתה declaring-- אז יש לנו כל כך some-- זה לוקח קצת כוכב int. אז זה חלק ממצביע קורא x לint, נכון? אז לזכור מה זה עושה זה קורא x המערכת. וזה הולך יש לי כמה כתובות, נכון? אז בואו רק נגיד שזה הכתובת שלנו. מצביעים להחזיק כתובות. אז מה זה אומר הוא כי בשלב זה מיקום, אנו מאחסנים int. אז בדרך אחרת שאנחנו יכולים לחשוב על זה הוא שמדובר בכמה int. יש לנו לא ממש הוטל עליה ל שום דבר עדיין, אבל זה רק int. אז אנחנו יכולים לעשות הוא אם אנחנו לככב x שווה 5, זה הופך להיות 5, בסדר? זה אומר ללכת לכל מה שx הוא מצביע עליו, אז לך לכתובת זו ולעשות את זה שווה ל 5. אז אנו מקצים 5 לכתובת זו, נכון? ואז אם אתה עושה את זה, זה נותן לנו את הכתובת של. זוהי הכתובת של מפעיל. אז מה היא הכתובת של x? אנחנו לא יודעים. יש לנו לא הוטל עליה כתובת. אנחנו יכולים להגיד שזה some-- עכשיו אנחנו נתנו לי זה כתובת, כך הכתובת היא 4. ובעצם, אם אנחנו עוברים משהו ככה, סוג של מה שעשינו. אז עובד דרך here-- אני מוצא זה עוזר אם אתה מצייר את מצביעים. אם אתה על הבחינה שלך, אני ממליץ בחום על ציור תיבות. אז זה ראשון, int x שווה 5. זה רק אומר שיש לנו כמה מקום בזיכרון שהוא 5, נכון? והשולחן שלנו כאן אומר לנו שזה ב0x04 כתובת. ואז אנחנו יוצרים כמה מצביע. אז בואו לשבור את זה אחד בכל פעם. אז זה יוצר כמה תיבה לint, נכון? זה הולך להחזיק כמה כתובת שלו. אז זה חלק ממצביע. וגיר הזה הוא ממש קטן. אז יש לנו כמה מצביע כאן. והשולחן שלנו אומר לנו כלומר כתובת היא 0x08. מגניב. ואנחנו מקצים אותו לכתובת של x. זכור, מצביעים להחזיק כתובות, בסדר? אז אם אנחנו רוצים להחזיק את x, יש לנו להשתמש באופרטור הכתובת, ש הוא האמפרסנד, כדי לקבל את הכתובת של x, אשר במקרה זה, 0x04. ואז אם יש לנו כמה עותק int, זה פשוט יוצר כמה תיבה אחרת ש מחזיק עותק int בשם. ואם אנחנו להקצות את זה-- אז זה הוא התייחסותו. אז זה אומר ללכת לכל מה ש מצביע כתובת מחזיק. מצביע מחזיק כתובת זו, כך היינו הולך לכאן, ואנחנו אומרים, בסדר, מה יש בו? זה 5. אז עותק הופך 5. הגיוני? מה אם אנסה להקצות זה רק לפוינטר. מה עושה מצביע שווה בעצם? זה יהיה פשוט כל מה ש מצביע מכיל, נכון? ואז מה אם אני עשיתי את זה? מה היית להעתיק להיות עכשיו? קהל: 0x08. ZAMYLA צ'אן: כן, כתובת של המצביע שלנו. כל חלק של ש צריך להיות מחדש הסביר? מגניב. יש בהחלט מאוד בעיה כיף בחידון אחד שאנחנו יכולים על זה נותן לך יותר בפועל. הבחורים משבוע שעבר יכול אומר לך שזה לא היה כל כך נורא. יש לנו דרך כל התרשים, וכולם עשו נהדרים. אוקיי, אז זה סקירה תחביר של מצביעים. הדבר הגדול ביותר הוא ההבנה כיצד כדי ליצור אותם, לעשות התייחסות, וכתובת של, בסדר? מגניב. כל נושאים אחרים לפני ש אנחנו צוללים לפועל. גם אם אנחנו עוברים הבעיות בפועל ויש משהו שאתה רוצה השתלמות על, אנחנו יכולים לעשות את זה יותר מדי. האם יש לך משהו? קהל: structs ורשימות מקושרות. ZAMYLA צ'אן: structs ורשימות מקושרות, על אישור. אז structs. אנחנו בעצם הולכים על הערב הזה יותר מדי. אוקיי, אז structs. Structs הוא בעצם רק כך תוכל להחזיק ערכים מרובים מסוגים שונים. אז עם מערך אנחנו מכווץ לסוג נתונים אחד. המערך שלנו גם יש רק כמספרים, או פשוט להיות תווים, או סתם להיות צף. אבל אולי אתה צריך מכיל יותר מזה. אולי אתה צריך hold-- אם אתה, על תלמיד מדבר אתה הולך להיות הבית שלהם, שלהם מספר תעודת זהות, גילם, בו הם מתגוררים, נכון? ואת כל אלה הם סוגים שונים של סוגים. אז אתה לא יכול לאחסן אלה כל במערך. אז מה אתה יכול לעשות זה אתה יכול ליצור struct, ש אתה יכול לחשוב על כ סוג המידע האישי שלו. אז במקום שיש רק ints ובמקום צף רק שיש, אתה יכול להיות תלמיד סוג ש יש כל התחומים הללו בזה. אז הדרך בה אנו לאתחל structs is-- למעשה מאז הכתיבה שלי היא נוראה, אנחנו הולכים לעבור להקלדה. וו. אוקיי, אז אם אנחנו רוצים ליצור struct-- אני רק הולך אליו כאן למטה. להתעלם בעיקרי מה בו נשתמש מאוחר יותר. אז כמו שאתה רוצה לעשות זה עם typedef struct. ובואו פשוט נקראים לתלמיד זה מה כי זה היה אני משתמש. אוקיי, אז typedef אומר שאתה הגדרת סוג חדש, בסדר? יש ניואנסים לכאשר אתה עושה רק struct לעומת struct typedef. לכל דבר ו מטרות, אתם פשוט הולך להניח שהם בערך באותו ורק להשתמש typedef struct לעת עתה. זה יהפוך את הדרך ברור יותר בך P הבא להגדיר מה הם הבדלים אלה, אבל אני לא חושב שאתה צריך לדאוג שעכשיו. אני הרבה מעדיף אותך יודע איך ליצור אחד, לגשת אליו, ולהקצות [? ערך. ?] סוג חדש של struct, ו אנחנו קוראים לזה תלמיד. אז אחרי שסיימנו ליצור את זה, לכל דבר ועניין, יהיה לך סוג המכונה תלמיד. ואתה יכול לחשוב על זה בדיוק כמו סוג כמו int, או לצוף, או char. זה פשוט סוג אחר, בסדר? אז בזה, מה יש לנו? יש לנו אולי שם. אז אולי אנחנו רוצים שם מחרוזת. ויש לנו אולי int זה מזהה. ויש לנו עוד ב זה מספר טלפון. ויש לנו some-- בואו נראה. מה עוד שנהיה לנו? תהיה לנו איזה חוט בביתו. כל הדברים שיש לו תלמיד. אז זה יוצר struct עכשיו. אז איך אנחנו יכולים ליצור תלמיד? אם יש לנו כמה משתנים שהוא הולך לדבר על וקר כאן, ולכן אנחנו have-- אנחנו רק הולך לקרוא ווקר זה. הוא זקוק לסוג. מה הטיפוס שלך? קהל: סטודנטים. ZAMYLA צ'אן: סטודנט. אז זה רק יוצר אובייקט שאתה יכול יש לחשוב על זה את כל הדברים האלה. זה עתה יצר סטודנט הליכון. אז עכשיו אנחנו צריכים להיות מסוגלים כדי להקצות את כל אלה, נכון? אז האם מישהו זוכר איך אנו לגשת בתוך struct? קהל: התקופה. ZAMYLA צ'אן: התקופה בדיוק. אז אם אנחנו רוצים להקצות שלו שם, אנחנו יכולים לעשות את זה. ברור שזה היית be-- חלק זה כאן היה להיות בתוך עיקרי, כך פשוט נתת לי לעשות את זה. להכריז על זה מעל עיקרי כל כך שאנחנו יכולים להשתמש בו בתוך עיקריים. אז עכשיו אני רוצה לעשות את זה מזהה, ואנחנו פשוט לעשות קצת שם, ואז להקצות בית. Bam. מגניב. אז עכשיו אנחנו צריכים אי פעם צריכים גישה שום דבר מאוחר יותר on-- אולי we-- אם אי פעם אנחנו צריכים לגשת לכל דבר, בואו פשוט לעשות עותק int ID. ואני רוצה להעתיק זיהוי של ווקר לזה. איך אוכל לעשות את זה? אתה צריך לגשת בהליכון struct ל[? ללכת על זה?] [? E?]. באותו אופן שאנו שהוקצה אותו כאן, איך אנו עשויים לגשת אליו מתי שאנחנו רוצים ל לתת ערך שלמשהו אחר? קהל: Walker.id. ZAMYLA צ'אן: כן, בדיוק. אז זה פחות או יותר כל אתה צריך לדעת לstructs. אתה פשוט צריך לחשוב על שלהם כמשתנה אחרת. בעיקרון ליצור משלך סוג משתנה שלו, בסדר? אתה משתמש בו כדי להכריז משתנים בכל דרך. כאן הליכון הוא עדיין משתנה. זה פשוט לתלמיד סוג עכשיו במקום של סוג int, או מחרוזת סוג, או סוג char. אם הייתה דרך קלה לדבר על structs, זה ממש פשוט ליצור סוג הנתונים שלך המאפשר לך קבוצה כל אלה שונים סוג של נתונים ביחד. האם זה הגיוני? אישור. ושגישה עם נקודות. פחות או יותר כל מה שאתה צריך. אישור, שבו לא PowerPoint ללכת? הנה הוא. ובכן, זה מוזר. אהה. אישור, מגניב. כל דברים או אחרים לעשות רוצה את הראש להתאמן? להתאמן? אישור. מדהים. אני הולך לצאת זה. אם בכל נקודה במהלך שאלות תרגול, אני שמח לשפץ ולעבור דברים. אז יש לי חידון אפס עד כאן. אם אתם רוצים למשוך אותו במחשב שלך, בדיוק כמו לקחת חמש דקות כדי לדפדף. אולי לבחור כמה עליון שאלות שאתה רוצה ללכת על. אם אתם לא יכולים להחליט, אנחנו פשוט להתחיל לאט לעבוד דרכם, אבל אני בטוח שיש הולך להיות כמה שאלות שאתה במיוחד שישה לדבר על ויש לי לי לעבוד דרך עם כל מה שאתה. אז פשוט ללכת קדימה ולקחת חמש דקות. לגלול. ואת זה הוא החידון משנת 2013. קהל: אפס? ZAMYLA צ'אן: כן, חידון אפס. אנחנו לא עושים חידון דברים אחד. נצטרך לעשות את זה בכמה שבועות. גם לאלו מכם ש הגיע בסוף, יש לנו ממתקים, כך גם אתם רוצים סוכרייה? קהל: בטח. ZAMYLA צ'אן: אני רק הולך לעבור בסביבה. היי, אתם אם להגיע לכאן מוקדם, אתה מקבל יותר סוכריות. זה בסדר. בן, אתה רוצה סוכריות? אתה רוצה כמה כאלה? יש גם סניקרס אם מישהו רוצה סניקרס. אני אשאיר אותם כאן וכאן. תרגיש חופשי. האם אתה רוצה יותר? קהל: כל קבוצה. תודה לך. ZAMYLA צ'אן: והיה לי נחמד ערימה קטנה שם בתחילת. אתם מקבלים לקחת את החידון ו אני מקבל שיש צד חידון לדירוג. זה תוהו. 900 בחינות. זה הולך להיות כל כך כיף. הולך להיות נהדר. אני די בטוח שזה אחד של המליטה צוות הגדולה לילות של השנה. האם מישהו עשה חידון אפס מ בשנה שעברה עדיין מתוך סקרנות? קהל: חלקים ממנו. ZAMYLA צ'אן: חלקים ממנו, על אישור. האם יש לך שאלות על כל אחד מהם? קהל: אני כבר הלכתי לשעתי עבודה. אבל תודה. ZAMYLA צ'אן: ובכן, אני מקווה ש זה עדיין סוג של מועיל. מתי אתה הולך ל שעתי עבודה בשביל זה? קהל: TF שלי היה להם היום אחר הצהריים. ZAMYLA צ'אן: אה. מי TF שלך? קהל: פרד [? Wujaya?]. ZAMYLA צ'אן: יש TFS כל כך הרבה. כל כך הרבה. בְּסֵדֶר. מישהו יש לך להתחיל שאני יכול לרשום שאנחנו רוצים לעבוד? אני מניח את המצביעים אחד עם השולחן. לכו על זה. קהל: אולי מתג אחד. ZAMYLA צ'אן: אז מספר 12? אני מניח שמספר 8 ו -9 הם כנראה אנשים אלה רוצים ללכת על. קהל: ו-10 ו -11. ZAMYLA צ'אן: ואתם יודעים אתה מקבל דף אחד של הערות, נכון? קהל: כן, אז מה הם מותר לנו לשים על זה. ZAMYLA צ'אן: מותר לך לשים כל דבר שאתה רוצה. ויכול להיות שהקלדה זה. עד כמה שאני זוכר, קליד גולש. קהל: אתה יכול לעשות גב ושני הצדדים? ZAMYLA צ'אן: כן, שני הצדדים. אז משהו כמו הערימה ו [? סוף חזרה?] ערימה, הריצה שלך פעמים. שימושי. דברים קטנים אולי על מצביעים כדי להזכיר לך. תחביר לדברים. יש רק כמו שלד תכנית יכולה להיות סופר שימושי. אני יודע שאני תמיד שכחתי בדיוק מה אני היה אמור לכתוב עבור ראשי int, כי אני תמיד פשוט להעתיק להדביק מסט P הקודם שלי או שזה כבר שם, כל כך אף פעם לא באמת כתבתי את זה, כך שיש שיכולה להיות סופר שימושי. אוקיי, אז למה אנחנו לא תתחיל עם מספר 8 ולאחר מכן? בְּסֵדֶר. אישור. אז לשקול את התכנית בהמשך. אז ברור, כאשר אנו רואים מצביעים, זה כנראה רעיון טוב להתחיל ציור, נכון? אני רוצה לדעת איפה כולי חתיכות גדולות של גיר הלכו. זהו סוג של מעצבן. אז יש לנו כאן כמה פונקצית swap זה הולך לקחת בשני מצביעים. אז במקרה הזה, הם צריך להיות ממש מיתוג דברים לעומת ההחלפה המקורית שלנו פונקציה שלקחה רק בעותקים. אז מה זה הולך לעשות is-- בואו נתחיל עם עיקרי, כי שם הוא 1. אז יש לנו כמה int x 1. יש לנו כמה y זה שווה ל 2. ולאחר מכן יש לנו כמה swap זה הולך לקחת אותם. ובואו נראה מה יש לנו כאן. ובtable-- שלנו אוי ואבוי. איך אני הולך לעשות את זה? אני הולך לצייר השולחן שלי לכאן. בקושי עושה את זה שם. בקושי עושה את זה. 1, 2, 3, 4, 5, 6, 7. והם נותנים לנו כי 1 הוא 1, ו 1 2. מגניב. מדהים. אז 3. ויש [? 1.?] בְּסֵדֶר. ואז כתובת של x היא 0x123. ו- Y הוא Ox127. מגניב. בְּסֵדֶר. אני רוצה שהבחורים לעבוד על זה לעבודה רק like-- על זה עם האנשים סביבך. אני מצטער שלא אמרתי ש בזמן שההגדרה. לעבוד על זה. נסה ולעבוד על זה על ידי את עצמכם לכמה דקות, ולאחר מכן אני אעבוד על זה איתך. כי הדרך היחידה שאתה באמת הולך ללמוד הוא על ידי עושה את זה בעצמך. אין דאגות. מזל טוב. אישור, למה אנחנו לא לאט להתחיל לעבוד דרך זה. אז כולם מקבל אחרי השורה אחת, x הוא 1. לאחר השורה שתיים, X ו y הוא 1 ו -2, נכון? מגניב. אז קו שלוש שבו דברים לקבל מעניין כמובן. אז מה שעשינו כאן הוא יש לנו עכשיו החליף. אנחנו אומרים שיש לי x ו- y נקודות אלה, או שיש להם את הכתובת של x ו- y, נכון? אז במקרה הזה, שלוש, מהו הערך של? הועבר ב, ניתנה את הערך של הכתובת של x, נכון? קהל: 1? ZAMYLA צ'אן: אז אנחנו מוסיפים אותו לx? מה הכתובת של x? קהל: 0x123. ZAMYLA צ'אן: בדיוק. אבל מה הוא בעצם מצביע? אם היינו dereference, מה ערך היה זה נותן לנו. קהל: 1. ZAMYLA צ'אן: זה יהיה תן לנו 1, כי מה ש אנחנו אומרים זה ללכת לזה כתובת, לספר לנו מה הוא הערך. אז מה יהיה ב '? קהל: 0x127. ZAMYLA צ'אן: בדיוק. אז זה הכתובת של y. ואז מה [? dereference? ?] קהל: 2. ZAMYLA צ'אן: אוקיי, אז עכשיו ארבעה. אמרנו הוא equal-- גם עכשיו יש לנו עשה int temp שווה לכוכב של. אז מה משנה? יש רק דבר אחד שמשנה כאן. מה זה? קהל: Temp. ZAMYLA צ'אן: טמפ '. אז אנחנו יכולים לשכתב את כל אלה. אסטרטגיה טובה לאלה רק להבין מה שינויים, משום שלרוב יש רק דבר אחד שהוא הולך לשנות בכל רגע נתון, בסדר? אז הקצנו זמני. עכשיו הנקודה הבאה שלנו, חמש, אנחנו הפך כוכב שווה לככב ב. אז מה משנה עכשיו? קהל: כוכב. ZAMYLA צ'אן: כוכב, כך כל דבר אחר נשאר אותו הדבר. ומה אומר כוכב שווה? קהל: 2. ZAMYLA צ'אן: 2. יפה. מדהים. אישור, ולאחר מכן עכשיו יש לנו להתחיל ב שווה לטמפ '. אז השינוי היחיד הוא כוכב ב. כל השאר נשאר אותו הדבר. ומה הוא כוכב ב שווה לחברה? ושהשלמת את השולחן. כי עכשיו בסוף, אם אנחנו אומרים x ו- y, אנו יודעים כי בpoint-- זה אנו יודעים כי כאשר אנו השתנה לככב 2, מה שעשה הוא שהוא אמר על אישור, ב מענה 0x123 כאן, לשנות אותו. עכשיו זה היה 2. ולאחר מכן, בשלב זה, אמרנו בסדר, ללכת לכוכב ב. אז גש לכתובת ב 0x127 ולהפוך אותו 1. אז עכשיו בסוף כאשר מאוד אנחנו באמת לחזור לעיקריים, אנחנו באמת צריכים שx הוא שווה ל 2 ו- y שווה ל 1. כולם טובים בזה? אישור, מגניב. מספר 9. אתם עובדים על זה. אני הולך להגדיר לוח כדי שנוכל לצייר באמצעותו. זה יהיה פיצוץ. השולחנות הגדולים יכולים להיות ממש מפחיד, אני יודע. אבל אם אתה פשוט לקחת אותם שורה אחת ב זמן, הם מקבלים הרבה פחות מפחידים. בְּסֵדֶר. אז אתה יודע שזה יהיה לי עבר עיקרי ראשון, נכון? מאתחל x ו- y ו לאחר מכן מנסה להחליף אותם. אז החלפה אפילו מעל, אמיתית דרכו הולך הוא שאנחנו עוברים ראשיים, ואז זה מתקשר עד להחליף, בסדר? אז כולם יודע את זה. אז איזה מהם לעשות לך אתם רוצים להתחיל עם? האם מישהו באמת בטוח אחד מאלה? או אפילו באופן חלקי בטוח? למה שלא תתחילו עם x? מה אנחנו חושבים x הוא? קהל: 1. ZAMYLA צ'אן: 1. אז למה הוא 2. וזה בגלל הבדל גדול כאן הם שאנחנו רק עובר עותקים ב, נכון? אנחנו לא עוברים על דרך הפניה. אז גם בסוף x תכנית זו וy נשאר אותו הדבר, בגלל שהם רק עותקים בפונקצית swap. הם לא באמת יכולים לשנות, נכון? אז מה לגבי, ב, וזמני? קהל: היא ב. ZAMYLA צ'אן: היא ב. אז במקרה הזה, היה x, שהוא 1, נכון? אז הנה, בואו לעבור את זה. אז בהתחלה, ו b הוא 1 ו -2 ולא מוגדר. אז במקור זמני מקבל שהוקצה ל, כך זמני הוא 1. שווה ל- B, אז אנחנו מקבלים 2, ו- B שווים לטמפ '. עכשיו אנחנו מקבלים 1. קהל: בו לאחד הקודם x ו- y החליף אמפרסנד האמפרסנד. מה בדיוק זה אומר? ZAMYLA צ'אן: אז זה אומר ש אתה עובר בדרך של הפניה. אז זה אומר שאתה בעצם שעבר בכתובות של בי x ו- y מאוחסנים. קהל: אבל אתה לא החלפת הכתובת. ZAMYLA צ'אן: אתה לא החלפת הכתובות. אתה מחליף את מה שבתוכם. כמו מה בכתובת ש, וזה למה זה עובד. לעומת בתכנית זו כאן מה שאתה עושה הוא שאתה יוצר עותקים. אז יש לך x ו- y שקיים כמשתנים שלהם כאן. אבל אז כאשר אתה עובר שלהם להחלפה, זה כאילו שאתה יוצר סט שני כל זה. אז אתה אף פעם לא באמת x ו- y נוגע ללב. קהל: אם x האמפרסנד הוא מה הוא ב הכתובת של x, מה הייתה כוכב X להיות? ZAMYLA צ'אן: x האמפרסנד הוא מה ב הכתובת של x, אז star-- גם, במקרה זה, x הוא לא מצביע. קהל: אה, בסדר. אז אתה עושה את זה רק כי זה לא מצביע. ZAMYLA צ'אן: העכבר. אתה יכול לעשות רק כוכב של משהו שהוא מצביע. אולי אתה יכול לעשות את זה לדברים ש לא, אבל ההידור ש לעשות את זה דברים מטורפים היו קורים. ואני לא בדיוק בטוח מה יקרה. אתה תמיד יכול לקחת כתובת של משהו, אבל אתה לא יכול dereference משהו שהוא לא מצביע. אם זה נשמע הגיוני, זה הבחנה טובה שיש. אז לא רע, נכון? הלוחות הם תקווה נעשה קצת פחות מפחיד. בְּסֵדֶר. אה, הכיף אלה. אז עכשיו, בכתיבת קוד משלך. אז אני הולך לתת לכם לעבוד על זה במשך כארבע דקות, ואז נוכל לדבר על דרכים להתקרב אליו. תרגיש חופשי לדבר עם אנשים סביבך. גם זה מעניין. זה כמו כל הבנות סעיף עכשיו. די מרגש. פרט לצ'נג. אבל צ'אנג הוא לא ממש חלק מסעיף. מדהים. מושלם. אז אני אתן לך כמה רמזים. במקרה שבו יש לך יותר מתווים אחד, שבו יש לך משהו אחר כמו 123 או 1000 משהו, אתה צריך להיות מסוגל לולאה דרך ולהמיר כל אחד מאלה. אז יש כמה דרכים אתה יכול לעשות את זה, אבל אתה בהחלט הולך להיות ללולאה איפשהו שם ללולאה דרכם, שהוא כמו סוג של בגידה עם אפילו אם אתה קורא את strlen, אשר הוא כמו סוג של הו אולי אתה רוצה להשתמש באורך של המחרוזת בדרך כלשהי. בְּסֵדֶר. אז מה אתם חושבים שיהיו אחד הדברים הראשונים שאנחנו רוצים לעשות? יש כמה מקרים בכאן אנחנו צריכים לתת דין וחשבון ל, נכון? או שיש לנו משהו שnull. מה יש לנו? מקרים. Null. יש לנו המקרה שיש לו משהו אחר מאשר 09, נכון? אז בואו נגיד שיש לו מכתבים. או שיש לנו המקרה זה תקף. שלושה מקרים לחשוב על. אז איזה מהם אתם חושבים שיכולים להיות אחד הקלה ביותר לטפל בראשון? קהל: Null. ZAMYLA צ'אן: המקרה הוא null. אז מה היינו עושה שם? קהל: [לא ברור]. ZAMYLA צ'אן: כן. ומה לעשות שאני רוצה לעשות? קהל: חזור 0. ZAMYLA צ'אן: בדיוק. מדהים. אישור. אז עכשיו מקרה שיש לו מכתבים והמקרה שזה חוקי. אנחנו יכולים בעצם דואגים ל זה בתוך לולאה אחת, בסדר? אז דרך אחת לעשות את it-- מה יכול להיות דרך פשוטה לבדוק אם זה חוקי. היינו צריך לעבור כל אות ולעשות מה? קהל: בדוק אם זה in-- ZAMYLA צ'אן: ימין, אתה יכול לבדוק אם זה בין 0 ל 9, נכון? ואז במקרה שזה חוקי, אנחנו הולך בסופו iterating דרך המחרוזת שלנו בכל מקרה, נכון? אז למה שלא תנסו ו לשלב אותם לתוך אחד. אנחנו הולכים לחזר באמצעות המחרוזת החוצה, וכפי ש לעשות את זה, אנחנו הולכים ראשון לעשות בדיקה כדי לראות אם מכתב ש או אם הדמות שהיא בתוקף. אם זה הוא, שאנחנו הולכים לבצע פעולה שאנחנו צריכים להמיר אותו. אחרת זה יחזור 0, נכון? אז לפני שאנחנו עושים את זה, אנחנו כנראה רוצה קצת משתנים שאנחנו יכולים לחזור בסוף זה הולך להיות הערך האמיתי שלנו. אז אנחנו הולכים לאתחל ערך כלשהו להיות 0. וזה רק איך שאנחנו מתחילים. אז אני הולך להיפטר מזה. אז איך אנחנו הולכים איטרציות במחרוזת זו. קהל: ללולאה. ZAMYLA צ'אן: ללולאה. אז מה לשלנו? קהל: הוא 0. ZAMYLA צ'אן: ממ-הממ. ומה אנחנו iterating עד? קהל: אורך str של ים. ZAMYLA צ'אן: בסדר, עכשיו תזכור יש דרך טובה יותר. [לא ברור]. קהל: n כן, אנחנו יכולים לעשות שווה. ZAMYLA צ'אן: בדיוק. קהל: הוא לי פחות מ n. ZAMYLA צ'אן: ולמה היינו רוצה לעשות את זה? האם אתה זוכר את הסיבה? קהל: אנחנו צריכים לחשב מחדש את זה. ZAMYLA צ'אן: גלל בדרך זו תוכל רק צריכים לחשב את strlen פעם אחת. אם אתה צריך לעשות זה אני פחות מstrlen של, זה אומר שזה ייחשב מחדש האורך בכל פעם אתה מפעיל את לולאה, וזה לא עלות ענק של אנרגיה, אבל זה תרגול טוב יותר כדי לנסות ו לעשות דברים כמו שפעם. אלא אם כן אולי יש לך מחרוזת מטורפת זה משתנה בכל איטרציה. אבל אם זה נשארת אותו הדבר, לשמור אותו. בְּסֵדֶר. ואז אני פלוס פלוס. מדהים. אנחנו בדרך שלנו. קהל: באמת במהירות. ראשון, אז נניח שאנחנו פשוט כן אני פחות מstrlen של ים, הם לדירוגנו בעיצוב בכלל, או רק תקינות? הם לא. אנחנו דירוג על תקינות לחידונים ככל שאני יודע. אני לא יכול לעשות על מלא ערבות, אך על פי רוב, רובם המכריע הוא נכון, משום ש אתה תחת הרבה אילוצי זמן. עיצוב בדרך כלל אומר יש לך זמן לחשוב על האלגנטיות של המצב שלך. אוקיי, אז אנחנו iterating דרך. אז אנחנו צריכים לבדוק או ל לראות אם הדמות הזאת היא תקפה או אם אנחנו יכולים לבצענו נורמלי [? לi?] פונקציה. אנחנו יכולים לדאוג לגבי מה ש כי הוא בשני. אז למה אנחנו לא take-- אם מישהו יכול לחשוב על דרך לבדוק ל לראות אם זה תקף. אנחנו יודעים שזה הולך להיות כמה אם מצב, נכון? וזכור זה בASCII, אז איך אולי אנו רואים אם זה לא 0,1, 2, 3, 4, 5, 6, 7, 8, או 9. קהל: אם אלפא. ZAMYLA צ'אן: אז אם היית אלפא רק תן לנו לדעת אם זה מכתב. ואם הם נותנים לנו סמל, זה עדיין לא ממש הולך לבדוק. אז אם אתה מושך עד ASCII שלך שולחן, אנו יודעים כי 0 עד 9 בקטע אחד. תגיד לי את המספרים שהם מתאים לאם אפשר. קהל: 40. ZAMYLA צ'אן: אז הטווח הוא כמו 40-- קהל: אולי. 48-57. אֲנִי לֹא בָּטוּחַ. ZAMYLA צ'אן: 40-57? קהל: 48, אני חושב. ZAMYLA צ'אן: 48-57. אז אנחנו יודעים שASCII אלה symbols-- אם ערך ASCII הוא לא בין 48 ו -57, זה לא חוקי, נכון? אז אנחנו יכולים להשתמש בזה ל היתרון שלנו אולי? איך אנחנו הולכים לקבל מכתב זה, מראשון? איך אנחנו ניגשים זה הטיפוס הזה? קהל: שניות הסוגר אני. ZAMYLA צ'אן: ממ-הממ. מכיוון שאנחנו יכולים לחשוב על מחרוזות כמערכים, לזכור. אז מה אנחנו רוצים להגיד? אנחנו רוצים להגיד אם זה is-- אני אתן לך רמז. זה פחות מ. מה אתה חושב שזה צריך להיות פחות מ? קהל: 57? ZAMYLA צ'אן: 47, נכון? אבל היא גם מייצגת שכאתה 0 ב[ יחיד? דוברה?], כי זה האופי 0. גם אתה יכול לשים 47. יש שולחן ASCII, כ אתה רואה, רק משהו צריך להיות לך על גיליון החידון שלך. אז אם זה המקרה, אם זה פחות מ 0-- לא בהכרח ו. זה רק הולך או להיות פחות או יותר מ -9. אז אתה יכול למלא את זה אחרון בשבילי? אז או של שלי הוא מה ש, ריאה? קהל: גדול מ 9. ZAMYLA צ'אן: יש. האם זה הגיוני כולם, איך הגעתי לשם? בעיות אלה, הם כמו ברגע שאתה לראות את הפתרונות, זה כמו אה, אוקיי. וזו הסיבה שהתרגול יעזור לך. אוקיי, אז אנחנו חוזרים 0. יפה. בְּסֵדֶר. אחרת מה שאנחנו רוצים לעשות? זה החלק המעניין שבו זה קצת יותר כמו מתמטיקה לעומת CS בדעתי. למישהו יש רעיון כיצד אנו עלולים לעשות את זה? אז הדבר חשוב מבין הוא התו הראשון אנחנו לוקחים הולכים להיות הספרה הגבוהה ביותר כדי, נכון? אז אם אנחנו מסתכלים על ההמרה 123, בפעם הראשונה שנעמיק הולך להיות 1, אבל אנחנו צריכים כי להיות 100 עד הסוף, נכון? אז דבר אחד שאתה יכול לעשות הוא ש עם כל ספרה הבאה אתה לוקח, אתה להכפיל את הערך שלך על ידי 10, כך שעד שאתה מגיע לסוף, כל מה שהיה עבר כלפי מעלה, נכון? אז בפעם הראשונה שתפעיל את זה, יש לך 1 כערך שלך. פעם שנייה אתה מפעיל את זה, אתה להכפיל את הערך שלך על ידי 10. זה יעדכן אותו כל כך שזה עכשיו 10, ואתה מוסיף על הערך הבא שלך. ואז אתה תכפיל את זה על ידי 10 ולהוסיף על הערך הבא שלך. וזו הסיבה שהם אומרים את זה הרבה יותר כמו בדיקה אלגוריתם מתמטי לעומת CS, אבל אני סוטה מהנושא. אני לא כותב חידונים. אז דבר אחד שאנחנו יכולים לעשות הוא אומר פעמים ערך שווים 10. אז זה עומד להשתנות הספרה שלך פעם אחת בכל פעם. ואז אנחנו פשוט רוצים להוסיף. אנחנו רוצים להוסיף במה רק שיש לנו, נכון? אז איך אנחנו באמת להמירנו תווי ASCII למספר שהיא מייצגת? כך אנו יודעים כי 0 שווים ל 47, נכון? אז אם 0 הוא 47, מה ש היינו צריך לעשות את זה כדי להפוך למעשה זה יהיה int של 0? קהל: זה 48. ZAMYLA צ'אן: 48? מצטער. היינו להחסיר 48, נכון? זכור את המתמטיקה ASCII? אנחנו יכולים לטפל בהם רק כמו מספרים רגילים. אם תתייחס אליהם כמו מספרים, הם הופכים למספרים בצורה יעילה. אז אם יש לנו ים שלי, שבואו אומר שבמקרה זה הוא שווה 0. אז ככה, שעה שלי במקרה זה יהיה ASCII-- int ASCII לזה יהיה 47. כדי שנוכל subtract-- או 48. אתה יכול לעשות את זה, הוא אחת דרכים. האם מישהו יודע יותר טוב דרך בה אנו יכולים לעשות 48? פשוט אמרנו 0 is-- להיכנס ל ASCII אתה יכול לעשות ציטוט 0. אז עושה את זה סוג של לעשות תחושה איך זה עובד? קהל: בשלב זה, הוא הערך 0 משום שגם אם תכפיל את זה ב -10, אתה מתחיל עם אפס, כך זה צריך להיות מופעל? ZAMYLA צ'אן: אז במקרה הזה, אתה רוצה להכפיל את זה לפני שאתה מוסיף, כי במקרה זה, כן, זה היה עדיין be-- המצביע שלי חסר. הערך במקרה זה, ראשון זמן להפעיל אותו יהיה אפס. אז אתה רק מוסיף שבספרה הראשונה. מה שחשוב הוא בפעם הבאה אתה לחזר, אתה רוצה להעביר אותו לפני שתוסיף הספרה הבאה שלך על. האם זה להבהיר לך? אישור. לפעמים אתה הולך לקחת את הדברים יותר mathy מוזרים. אם היה לך רוב זה, אתה עדיין ממשיך לget-- אתה הולך לעשות די טוב. זיכוי חלקי הוא מאוד דבר גדול על חידוני CS50. אז לכתוב מה שאתה יודע. אם יש לך הכל פרט לכאן, אתה עדיין הולך לעשות ממש טוב את הבעיה. בגלל שאתה מראה, אישור, אני כמעט יודע. אני יודע שאני צריך לחזר דרך. אני יודע מה אני צריך לבדוק. אני רק לא בדיוק לקבל כיצד להמיר אותו. אתה יהיה בסדר. כן, אתה הולך ל לאבד כמה נקודות, אבל אתה עדיין הולך לקבל מספר לא מבוטל של נקודות למשהו כמו שאם אתה חסר שתי שורות אלה. אני כמו אישור, אדם זה יהיה יודע מה הם עושים. המתמטיקה היא קשה. אז הייתי אומר שאתה יהיה בסדר. אוקיי, אז אתם מוכנים נסה strlen עם מצביעים עכשיו כי אתם הם אדוני מצביע? אז אני אתן לכם לעבוד שלקצת. אם מישהו זקוק לרענון. אז אתה רוצה להשתמש במצביע חשבון, ולאחר מכן, אם זה הוא null, היישום שלך צריך להחזיר 0. דברים כמו זה שגורם לך ממש שמח רק כדי לקרוא strlen בסופו של היום. אני חושב שזה אחד יכול להיות קצת קל יותר מזו האחרונה, ש טוב. אני אתן לכם עוד דקה, ואז יעבדו דרכו. ואז אנחנו מקבלים ללכת למתגים. אישור, בחורים מוכנים? אולי קצת. אז אני כבר נתתי לך שלך שתי אפשרויות, נכון? כך או לבדוק בטלים ולהחזיר 0 אם זה, או בעצם לחשב את האורך. אז מי שרוצה לכתוב לבדוק null? לכו על זה. קהל: אם סוגריים של שווה שווה תמורת null 0. ZAMYLA צ'אן: יפה. אני אוהב כשחצי מהבעיה שלך הוא רק בודק לnull. אני יודע איתכם אחרון שבוע הייתי כמו צ'ק על null פשוטו כמשמעו בכל פעם. אישור, אז-- קהל: אם תמורה 0 היא רק קו אחד, אנחנו עדיין צריכים את התושבת מתולתלת? ZAMYLA צ'אן: אתה לא מבחינה טכנית צריך אותם כל עוד אתה עולה בקנה אחד. זה תרגול טוב רק כדי לקבל את הרגל של שימוש בסוגריים מסולסלים, אבל מבחינה טכנית לא. אתה לא צריך אותם לשורה אחת. אנחנו פשוט נוטים להמליץ ​​עליו לאנשים מתחילים תכנית. אז עכשיו מה שאנחנו רוצים לעשות כאן? אז עכשיו אנחנו יודעים שהמחרוזת שלנו היא נכון. אנחנו רוצים לשמור על מחשוב האורך. מה כנראה הראשון דבר שאנחנו רוצים לעשות? קהל: צור int זה האורך. ZAMYLA צ'אן: בדיוק. קהל: ואנחנו רוצים להגדיר אותו? ZAMYLA צ'אן: 0. מושלם. בְּסֵדֶר. עכשיו מה תרצה לעשות? זה באמת חלק הארי שלו. לכו על זה. קהל: אז אתה כנראה לעשות ללולאה. ואז ממתי אתה קורא ים אתה קבלת הכתובת של הדבר הראשון, היית מתחיל עם i שווה 0. ולאחר מכן עוד כx פלוס אני לא חזרה לקצץ 0. ZAMYLA צ'אן: שליחות קטלנית null. קהל: שליחות קטלנית null. ואז אתה מוסיף אחד לאורך. ZAMYLA צ'אן: כן. טוב, אז בואו להפוך את זה לתוך קוד קונקרטי מאוד. אבל זה הרעיון המושלם. זה בדיוק מה שאנחנו עושים. אנחנו הולכים להיות iterating דרך עם המצביע. אז מה אנחנו רוצים לעשות הוא במקום int כאן, בגלל שאנחנו לא התכוון לזה. אנחנו מתייחסים לתחילת מחרוזת, שמתחילה להיות קצת כתובת, נכון? אז אנחנו רוצים מצביע. אז אנחנו הולכים לקבל קצת כוכב char, כי זה מתאים לשלנו, נכון? אז זה נקודה שאנחנו אתחול כמה לתחילת המחרוזת, בסדר? אז בואו פשוט נקראים לזה אני. אם זה ההתחלה של המחרוזת, מה זה הולך להיות מוקצה? לא 0. אנחנו רוצים שזה יהיה תתחיל מהמחרוזת שלנו. מה מייצג את תחילתו של המחרוזת שלנו שניתנה לנו? קהל: רק של. ALLISON BUCHHOLTZ-AU: שניות. אז זה יוצר כמה מצביע חדש ש מייצג את ההתחלה של המחרוזת שלנו, בסדר? דרך נוספת לחשוב על זה כמו הנה המערך שלנו. זה המחרוזת, שלנו. אז בואו נגיד שזה הוא מקום הראשון, וזה 0x4. 04. זה שלנו, המחזיק את כתובת ש. ואנחנו רק יצרנו עוד אחד בשם אני זה רק מתייחס לאותו הדבר. אז הם שניהם רק מצביעים לתחילת המחרוזת שלנו. זה רק ייצוג גרפי. אז עכשיו מה שאנחנו רוצים לעשות הוא שאנחנו רוצים לחזר התנאי שלנו לiterating באמצעות המחרוזת שלנו. עכשיו קניות. הגיע לחנות, בחורים. האם אנחנו רוצים לשמור על עדכון עד אנחנו מגיעים לשליחות קטלנית null, נכון? אז מה יכול זה נראה? האם אנחנו רוצים אני, או שאנחנו רוצים כוכב הוא אני השאלה? האם שליחות קטלנית null כתובת או משהו הממוקם בכתובת? ממוקם בכתובה, נכון? אז אנחנו צריכים dereference כל מה ש כאן, בגלל זה הוא רק חלק כתובת. למעשה, כדי להגיע להתחלה אנחנו צריכים dereference זה כך שלמעשה אנו מקבלים מה במקום הראשון זו. אז אם אנחנו עושים כוכב אני, מה אנחנו לא רוצים שזה שווה? קהל: קו נטוי חזרה? ZAMYLA צ'אן: יש. האם זה הגיוני לכולם? אנחנו צריכים ללכת למחרוזת שלנו ו לוודא שזה לא הסוף. ואז אנחנו יכולים רק לעדכן כמו זה. עדכון רגיל. אז כל עוד אלה הם המטרופוליטן, מה שאנחנו צריכים לעשות? קהל: אורך פלוס פלוס. ZAMYLA צ'אן: ממ-הממ. ואז לאחר ללולאה מסתיים, מה אנחנו רוצים לחזור? קהל: אורך? ZAMYLA צ'אן: אורך. הנה לך. כמובן הבשר של זה הבנה זו ללולאה. האם כולם מקבלים איך זה עובד? אני שמח לחזור על זה שוב. קהל: השני חלק, כל כך כוכב i יש, זה את הכתובת של first-- ZAMYLA צ'אן: זה לא הכתובת. זה מה שב. קהל: זה בעצם שם. ZAMYLA צ'אן: זה מה בעצם שם. אז זה saying-- תן לי לעשות את זה טוב יותר. אז זה 0x04, ואני רק הולך להגיד שאני הולך לעשות את השם שלי זה. אישור. כן, אני יודע שיש לי ערב סקירת חידון. הרבה ביקורת חידון. אז בואו נגיד שמחרוזת זו השם שלי, אליסון. קצת מבולגן, אבל זה שם. והים מייצג את המיקום היכן המחרוזת מתחילה, אז אני הולך לעשות את זה real-- זו היא הכתובת של, שבו המחרוזת מתחילה, נכון? אז מה שאנחנו עושים כאן הוא שאנחנו רוצים משתמש במצביעים כדי לבצע איטרציות ב. אז אנחנו יוצרים כמה מצביע, אני, שגם שווה להתחלה של המחרוזת. ובכל נקודה, אנחנו רוצים תמשיך עובר המערך כאן, עד שנגיע שליחות קטלנית null. אז אנחנו תמיד רוצים לבדוק מה בכל אחת מהכתובות הללו. אז אנחנו dereference אני, כך ש בפעם הראשונה אנחנו עושים את זה אנחנו אומר, בסדר, מה ב0x04 כתובת? זה. אישור, שאנחנו טובים. אורך תוספת. לעבור לבא אחריו. אז אני- לזכור עליית לשות של גודל של מה שהם מצביעים. אז במקרה הזה, מכיוון שזה char, זה יהיה לעדכן על ידי אחד. אז עכשיו אנחנו הולכים להסתכל על 5, מה שאומר שזה הולך לכאן. אז זה אומר על אישור, ללכת ל0x05. מה יש שם? זה l. וזה ימשיך לעשות את זה עד שהוא מגיע זה אחד. וזה אומר על אישור, מה ב מה כתובת זו היא? שליחות קטלנית null, על אישור. יציאה. ורק לחזור אורך. מכיוון שאתה צריך את מה שבעצם ב כתובת ש, לא את הכתובת עצמה. יש מעט מאוד מקומות שבם אתה באמת צריך את הכתובת. רוב הזמן כאשר אתה משתמש וזה כאשר אתה ראשון הקצאת מצביע או כאשר אתה עובר אותו בפונקציה אחרת. אישור, כולם טובים שם? סוג של? אישור. כך זה נראה כאילו יש לנו קיבלתי כ -12 דקות לסיום, אז נלך על ל אולי הבעיה האחרונה שלנו, ואז יש כל מושגים שצריכות לבוא בינתיים אנחנו יכולים ללכת במהירות על ש. אז מיתוג הילוכים הוא שעבר בעיה כאן, לעבור הצהרות. אז התפקיד שלך הוא לכתוב את זה מחדש כך שהוא מתנהג באותה אבל לא להשתמש בבוררים. ידי גירי. אז שאלות על זה את הבת? אין? אישור. האם כולם מבינים שאם מקרה אין שום דבר אחרי זה, זה אומר שהוא צריך בצע את הצעד הבא? אז מקרה 1 ו -2 במקרה זה לעשות את אותו הדבר בדיוק. לפעמים נקודה של בלבול. בְּסֵדֶר. מישהו יש לך רעיונות? כן? קהל: כך שאתה יכול פשוט לעשות אם דוחות. ZAMYLA צ'אן: ממ-הממ. אז מה הראשון שלנו? קהל: אם n שווה שווה 1, ו- 2 קווים לאו n שווים שווה 2, ולאחר מכן להדפיס קטן. ואז אתה יכול לעשות אחר אם? או שאתה יכול פשוט לעשות אם? ZAMYLA צ'אן: אתה יכול לעשות דבר אחר אם? קהל: האם זה משנה אם אתה עושה אם? ZAMYLA צ'אן: אז היא עושה. האם anyone-- כך, אתה יקבל את אותו הפלט אם אתה משתמש רק IFS לעומת אם אתה משתמש בIFS אחר. אתם יכולים לחשוב על הסיבה מדוע ייתכן שתרצו להשתמש אחר אם לעומת תנאים רבים? יש ביעילות. כן? קהל: זה יהיה לבדוק כל IFS בכל פעם. ZAMYLA צ'אן: אז גם אם זה הכה בי ראשון זה, זה ילך על בדיקה כל אחד אחר. אז אתה רוצה להשתמש אם IFS אחר במקרים שבו רק אחד מהם לא חל. אז הרחקה הדדית היא מה שאנחנו נוטים לומר. אם יש לך חבורה של IFS, זה אומר שאולי יותר מאחד מהם עניינים, ואולי יותר מ אחד מהם יכול להיות נכון. ואתה רוצה את שניהם לביצוע אם הם אמיתיים. אם אתה רוצה רק אחד מהם לעבודה במקרים סותרים אלה, אתה רוצה להשתמש אחר אם, משום ש את כל זה יש לעשות עם יעילות. הקוד שלך הוא רק טוב יותר נועד אם היא דבקה במנהג זה. אז במקרה הזה נצטרך אחר אם. וזה יהיה? קהל: n שווה שווה 3. ZAMYLA צ'אן: מושלם. מדיום הדפסה. ולאחר מכן באחרון שלנו מקרה, מה יש לנו? אחר או אחר אם? קהל: Else. ZAMYLA צ'אן: האם אנו want-- אתה רוצה אחר אם כי יש לנו מקרים קונקרטיים. זה לא סוג של מלכוד כל. אם היה לך ברירת מחדל בswitch-- זוכר במתגים שאתה יכול להיות מקרה, ואז יש לך ברירת מחדל. אם היה לך ברירת מחדל, זה סוג של ההצהרה אחרת שלך יש. אבל אם יש לו רק מקרים, זה אומר שאתה צריך כדי לבדוק אם זה כל אחד מאלה. אז במקרה הזה, זה היה 5 4 או. אנחנו רוצים להדפיס את. זה גדול. והנה לך. וזה יהיה בתכנית שלך. אז במקרה הזה אם היה משהו ברירת מחדל, תהיה לנו עוד ב כל מה שרצה לעשות. כך שהבחנה טובה לדעת, להבין. האם זה יעזור עם מתגים בשבילך? מושלם. בְּסֵדֶר. יש לנו נותרו על שמונה דקות. האם אתם היו כל מושגים ברמה גבוהה אחרים? שאלות באופן כללי? כן? קהל: לא היה לי שאלה על אחד מהם כי על האקראי היה מחולל מספרים על חידון אפס. ZAMYLA צ'אן: אה, זה אחד. אחד שהוא עוד אחד שבו זה יותר מתמטיקה than-- כן. הפתרון לthat-- אפילו אני כש אני רואה את זה, אני אוהב את מה שזה. קהל: זה היה מספר 7. ZAMYLA צ'אן: זה מוזר בעיניי. אז בעצם אתה רוצה להשתמש drand48, ש אתן לך כמה מספר בין 0 ל -1. ואתה רוצה להשתמש בו כל כך שאתה איכשהו לקבל a-- וזה הרבה יותר של בעיה במתמטיקה לי ממה שחושב שאני בעיה CS. הדרך שאתה עושה it-- ו לפעמים זה פשוט יהיה כמו ש. שוב, אלה הם מקרים שבם זה סוג כמו לכתוב את מה שאתה יכול וזיכוי חלקי. אז אם אנחנו רוצים לחזור, אנחנו יודעים שאנחנו הולך להיות באמצעות drand48 בדרך כלשהי, נכון? אז למה אנחנו לא פשוט לרשום את זה. אנחנו משתמשים בו בדרך כלשהי. הדרך שיש להם אתם משתמשים בו הוא כמו זה, שאני אנסה להסביר. אז בעצם מה שקורה כאן בגלל זה בין 0 ל -1, מה שאתה עושה הוא שאתה הכפלה by-- זה מאוד שאלה במתמטיקה. רק ויתור מלא, זה הוא לגמרי שאלה במתמטיקה. מה שאתה עושה הוא בגלל של 0 ו -1, ואתה רוצה שזה יהיה בתוך טווח זה, אתה בעצם להבין איך גדול הטווח הוא, ולאחר מכן אתה בעצם בהיקף זה עד, וזה מה שזה עושה. מינוס ב נותן לך טווח ש, הבדל בין המספרים האלה. אתה יכול להכפיל בין 0 ו 1, ולאחר מכן הוספה רק משמעות הדבר היא כי דרוג את זה כך שזה בין A ו- B, שאני לא באמת אוהב את הבעיה הזו. כפי שאמרתי, זה חידון נועד להקיף אנשים שהם פחות נוחים, איפשהו באמצע, יותר ונוח יותר. אז אם הם עשו את זה כל כך שזה משהו שכולם בפחות מקום נוח היית מקבל, היינו צריכים הרבה יותר מדי אנשי הבקיע מושלמים ומושלמים, ונוח יותר יהיו משועמם. אז תמיד יש להם אלה סוג של שאלות טיזר המוח שאמור להיות קצת יותר קשה שתיקח קצת חשיבה יצירתית. כאשר אתה רואה אותם, לא מקבל מבולבל מדי. אני בהחלט הייתי אומר להעיף באמצעות החידון הראשון שלך. להתמודד עם הבעיות כי אתה יודע שאתה יכול, בגלל שאין שימוש להיתקע על בעיה כאשר יש שלושה או ארבעה או חמש בדף אחרי זה אתה יכול לעשות בקלות. קהל: אעשה לך למה בדיוק הכפל אותו ב הטווח? ZAMYLA צ'אן: אתה להכפיל את הטווח ש אתה יודע-- זה כמו כמה לאחר אתה רוצה? אז אתה יכול לחשוב על, משום שהיא מחזיר מספר בין 0 ל -1, אתה יכול לחשוב על זה כאחוז. אז זה בעצם אומר שאם יש לנו קו המספר שלנו כאן, הוא כאן, וb הוא כאן. אתה כמו כמה בעבר זה? האם כל מה שאנחנו עושים. אז אתה רק מבקש אחוזים בטווח, זה ש זה מה שזה נותן לך. ואז אתה בעצם רק בקנה מידה זה על ידי הוספה. זה טיזר מוח במתמטיקה. אם הייתה כל עצת רגע האחרונה, אני הייתי אומר להעיף את השאלות, להבין איזה מהם אתה יודע שכאילו, אה, יש לי את זה. כמעט בודאות שהם הולכים תהיה שאלות שאתה לא יודע או שאתה הולך לי זמן ל, כך פגע נקודות החוזק שלך, בסדר? אתם הולכים לגדולים. יש הרבה שאלות מסיבה, כך שיש לך זמן יש הזדמנות סוג של כדי להדגים את מה ש אתה באמת טוב בו. אז זה בסדר אם אתה לא טוב בכל דבר. שחק את נקודתי החוזק שלך. כן? קהל: אז זה הולך לחזור משהו שיקוצץ? כן, זה יהיה, כי drand חוזר בין 0 ל -1. זה יחזור int, כי זה יהיה לחתוך כאשר אנו מוסיפים או להכפיל אותו. מגניב. כל שאלות רגע האחרונות? אתם הולכים לעשות גדולים. אתה הולך להיות מדהים. וגם אם לא, יהיה להיות ממתק כאן בשבוע הבא. ואני אוהב אותך. אני אוהב אותך חבר 'ללא קשר. בסדר, כולם, המזל טוב. יש להם זמן רב. אתה הולך להיות בסדר. ואתם יודעים מה? ביומיים שזה הולך להיות מעל, ואילו אני יש שני מבחני אמצע סמסטר ביום חמישי, כך לפחות אתם יעשו. בסדר, אני אראה לכם בשבוע הבא.