[השמעת מוסיקה] 1 SPEAKER: בסדר, כולם. ברוכים הבאים לחלק האחרון שלך איתי. זה היה די הסמסטר. אני לא מאמין שזה הוא, כמו, שבוע 12 או 11, משהו כזה. אבל בגלל שזה אחרון שלנו סעיף, יש לנו המון ממתקים. ואני הולך לנסות ו מכין אותך כמוני יכול לחידון שלך ביום רביעי. אז כנראה לא הדרך הטובה ביותר, כמו, סעיף הסוף עם סקירת חידון. אבל אנחנו ננסה לעשות את זה וכיף. ותמיד יש ממתקים. אז אני מקווה, שאעשה את זה טוב יותר. החידון שלך הולך להיות די הרבה את אותו דבר כמו חידון אפס. זה הולך להיות אותו פורמט, אותו אורך. אתה תהיה בחדרים פזורים ברחבי קמפוס, משום שיש קרובים ל -900 מכם, ואנחנו לא יכולים כל להחזיק אותך בחדרים כמו זה. כדי להיות בטוח כדי להסתכל על כל תיעוד החידון אחת באינטרנט בcs50.harvard.edu הלילה הלילה או מחר. ודא יודע שאתה שם אתה הולך, מה שאתה צריך להביא. באמת, אתה רק צריך להביא את עצמך ועיפרון, ואתה אמור להיות בסדר. השאלות תהיה מאוד דומה. כנראה יהיה זוג בחירה מרובה, זוג תשובה קצרה, כמה קידוד, אולי כמה נכון / לא נכון, מיני דברים התאמה. אז אתה לא צריך להיות יותר מדי הופתע מהתבנית. מה יכול להיות מפתיע הוא אורך, אשר, בשנים קודמות, היה הרבה יותר זמן. בשנה שלי, אין לי חבר אחד כי אני זוכר שסיימתי את הבחינה. היו כמו מרובה דפים נשארים ריקים. אז האורך יכול להיות סוג של מבלבל רק בגלל בכמה שנים, יש לו היה הרבה יותר זמן מאשר חידון אחת. אין לי מושג מה זה הולך להיות כמו בשנה זו, אבל זה משהו כדי להיות מודע. בנוסף, אנשים נוטים difficulty-- למצוא חידון אחת הרבה יותר חידון קשה מאשר אפס. שוב, אתה יודע, אם אתה סוג של הליכה את מרגיש קצת לא בנוח בגלל אתה לא עושה, כמו גם אתה חשב היית או שאתה מרגיש שאתה לא לעשות גם כן כפי שעשית בחידון אחת, לזכור שיש כנראה הרבה אנשים אחרים מרגישים ככה. הייתי בהחלט אחד מאותם אנשים. אחד חידון, כמו, זרק אותי ללולאה. ויש לי זה נהדר החברים שלי תמונה שלהם במלקק JP סוג של עם עצום אלה גלידות, להיות כמו, חידון אחת, ונראה כמו שהם בדמעות. אז זה הרגשה כללית. זה מבחן קשה, זה חידון קשה. ברור, אם אתה יוצא ואתה מרגיש שאתה נדנדת אותו, נהדר בשבילך. אבל יודע שאתה כנראה not-- אתה כמעט בהחלט לא לבד אם אתה יוצא בהרגשה, אה, בטח היה יכול השתפר. זה קשה. ממ-הממ. קהל: כמה זה שווה ביחס ל[ לא ברור]? 1 SPEAKER: זה שווה אותו. כן. אבל שוב, זה גם הולך להיות מושפע מאופן ששאר הכיתה עושה, איך עושה את החלק שלך, איך אתה כבר השתפר עם זמן. דירוג הוא קצת קופסא שחורה. אז מה המספר האמיתי או אחוז שאתה מקבל לא בהכרח אוהב ישירות מתואם עם הכיתה אתה הולך לקבל. יש הרבה גורמים שנכנסו לזה. אז עם זה, אנחנו הולכים לעבור כמה ביקורת חידון. אני רק הולך כדי להפעיל את זה כמו בפעם קודמת בשבילכם. יש לי את כל התשובות לבחן את אחד משנה שעברה. אז אם אתם רוצים למשוך כי על המחשבים שלך, אם אתה כבר לקח את בחינה לפני ויש לך שאלות, חשבתי שיכולנו רק לעבור כמה של אלה קשים יותר על זה. אז אנחנו יכולים לדבר על זה, אולי לקבל תובנה יותר קטנה לאינטואיציה מאחורי כמה מ שאלות אלה, איך להתקרב אליהם. כמו גם, כמו בפעם קודמת, יש לי חפיסה של 100 שקופיות שיש לו בעצם את כל של השקופיות שאני הכנתי עבור קודם סעיפים מאז שquiz-- האחרון שלך יש בזה סיפון. אז אנחנו יכולים לעבור כמעט כל דבר שדברנו על מראש שאולי אתה רוצה קצת יותר הבהרה על. אנחנו יכולים לעשות את זה ראשון. אבל חוץ מזה, אני סופר מאושר רק לסוג של עבודה דרך בעיות אלה איתך. ואני באמת כאן ל להתמקד במה שאתם חושבים יהיה הכי חשוב להתמקד ב. כמו, כמובן, את כל החומר הזה הוא חשוב. במיוחד כאשר אנו עוברים חידון אחת, אני בהחלט להצביע על דברים כמו, הו, זה יכול להיות משהו אתה באמת רוצה לדעת או שאתה רוצה להיות על גיליון לרמות שלך. אני אספר לך דברים כפי שאנו סוג של לעבור. אז על פתק ש, האם יש דברים כי אתם רוצים לעבור על? כמו כן, אם אני לא צריך את זה במרפסת שלי, אנחנו יכולים למשוך את משהו באינטרנט, או שאנחנו יכולים לנסות ולעשות עד דוגמא על לטוס. אבל כל מושגים שאתה בחורים הם קצת מטושטשים ב. [? בריאן,?] עשה לך have-- קהל: הו, זה מצטבר? כמו, הוא החומר על חידון אפס הולך להיות כאן? 1 SPEAKER: זה מצטבר, אבל זה הרבה יותר של דגש על דברים מאז החידון האחרון שלך. אז ברור, יש לך חבר ' למד על משתנים, ולולאות, ותניות. וזה לא כמו אלה רק ללכת משם, כי הם ברור שגלום לכל דבר שאנחנו כבר למדנו עכשיו אחר. אולי יש שאלה על מיני, או שיש יכול להיות שאלה בחיפושים שונים. או שאולי יש כמה שאלות על משהו שאתה אולי שקשור לקומפילציה או טעויות שונות. אבל אם אתה כבר הבטת חידון אחת משנה שעברה, תוכל להבחין כי זה מאוד ממוקד בדברים שקרה מאז החידון האחרון שלך. מדוע דלת שתמיד נעולה? זה באמת מפריע לי. כי אני תמיד מנסה לעבור את זה. אז זה פחות או יותר איך החידון יהיה. אז האם יש מושגים ש אתם רוצים ללכת על? או שאנחנו יכולים לקפוץ ישר ל רק מסתכל על חידון אחת מהשנה שעברה וסוג של הולך באמצעות תרגול שאלות שם. אנחנו גם יכולים לעבור קדימה ואחורה. זה לא מסוג הדברים חד-פעמי. יש שאלות? כן. אני יכול לשאול: קהל שאלה על another-- 1 SPEAKER: עוד אחד? קהל: זו היא של שנה נוספת. 1 SPEAKER: כן. אנחנו יכולים לעשות גם בשנה נוספת. קהל: OK. אז בשנת 2011. 1 SPEAKER: 2011. או, זה היה השנה לפניי. תן לי למשוך את זה. קהל: אני חושב. SPEAKER 1: היבט זה יחס הוא לזרוק אותי. קהל: 11 ו -12. 1 SPEAKER: 11 ו -12. OK. ובכן, כאן, למה אנחנו לא עושים את זה? אתה guys-- כולם פשוט לקחת כמה דקות כדי להסתכל דרך חידונים. ואנחנו להרכיב רשימה. ואז לעבור אותם. בסדר? בזמן שאני מקבל חבורה של החומר הזה הוקם. OK. אני רק הולך לכתוב דברים על נייר. 2011, 11 ו -12? אני רק הולך לשנות תצוגה זו. OK. זה יותר טוב. על זה. בְּסֵדֶר. כל אחד אחר שיש לי כל ש הם היינו רוצים להתחיל עם? כמו כן, שכח לומר, אם אתה רוצה יותר של חבורה של אנשים שמדברת אליך ורק נותן לך סדק כמובן בששת השבועות האחרונים, אנחנו פועלים סקירה מושב משעה 7:00 8:30 הלילה בצפון המערב B103, אשר גם קרה הפעם האחרונה, שבו הוא הולך להיות אני, חנה, דייבן, עם גייב ורוב עוזרים סוג של מ שולים פשוט סוג של לזרוק את כל המידע שאתה אולי רוצה להיות על גיליון לרמות שלך, לחתוך, יודע באופן כללי יש. קהל: זה גם באינטרנט, נכון? 1 SPEAKER: זה גם באינטרנט. אז אתה גם יכול להישאר מחוץ לזה מזג אוויר מגעיל, ללכת למעונות שלך, וחי זרם זה, אם תרצה. אני בטוח שהרבה people-- אני יודע שהייתי להיות עושה את זה אם היינו בנעליים שלך. OK. אז למה שלא תתחילו with-- בזמן שאתה guys-- תקווה, אתה מחפש דרך. אם לא, אני יכול פשוט להתחיל לעבוד באמצעות דברים שונים בחידון אחת משנה שעברה, אלא אם כן יש לך שאלות ספציפיות. נתחיל עם זה שאלה כאן על ערימות. אז האם כולם זוכרים סוג של מה היא ערימה? איך אנו נוטים to-- מישהו יכול פשוט לתת לי לי תיאור כללי של מחסנית? סוג של מבנה נתונים. OK. אז זה אחד מ מבני נתונים ש מצפה ממך להיות מוכר with-- כמו ערימות, מערכים, תורים, וכו '. כן. קהל: כמו קודם ב, מתוך אחרון, משהו. 1 SPEAKER: זה ראשון ב, אחרון מתוך. בדיוק. אז ערימה היא בדיוק מה שאנחנו נוטים לחשוב כאשר אנו חושבים על ערימה של דברים. אז ערימה של צלחות. הצלחת הראשונה שהנחת את הוא הולך להיות בתחתית, וזה הולך להיות אחרון אחד שתסיר בסוף. כי הם המחסנית למעלה. ואתה לוקח את אחד מהתחתית, בדרך כלל, דברים לקרוס ולשבור. אז ערימות אתה יכול לחשוב על בדיוק כמו ערימה של צלחות. או הדוגמא שאנחנו תמיד אוהבים להשתמש הוא באולמות D, יש לך את המגשים, הם כולם נערמו, ואתה לוקח מהחלק העליון. אז את האחרון בהוא מתוך אחת הראשון. OK. אז במקרה כאן, אנחנו רואה אנו have-- אני תוהה אם אני באמת יכול להתמקד קצת. אז יש לנו זה struct כאן. נכון? אז יש לך כמה struct שיש כמה int מספרים של יכולת. אז מה אנחנו חושבים שמייצגים? זהו מערך עם קיבולת גודל. אז זה באמת מייצג הערימה שלנו באופן כללי. הערימה שלנו היא באמת רק מערך עם מספר קבוע מסוים זה המקסימום שלו, כלומר, את יכולתה. ולאחר מכן יש לנו כמה גודל int, ש יהיה לעקוב אחר הגודל של המחסנית שלנו במהלך הקורס כאשר אנו משתמשים בו. בסדר? במקרה זה ממש כאן, אנו אומרים כי גודל ערימה כבר אותחל ל -0. אז יש לנו ערימה ריקה עכשיו. ואז אנחנו רוצים להשלים יישום פופ כך שהיא מחזירה את int בחלק העליון. ואז אם הוא ריק, היא מחזירה 1 שלילית. בסדר? אז אני רוצה שבחורים פשוט לחשוב על מה שאנחנו יכולים לעשות שם. מה יכול להיות אחד הראשונים דברים שהיינו רוצה לבדוק? יש דבר גדול כאן. בכל פעם שsays-- אם יש אי פעם כמה אם הצהרה, כמו "אם המחסנית ריקה," או "אם זה מחזיר null," או "אם זה מה ש" - מצטער. קהל: כתוב הצהרה אם. 1 SPEAKER: נכון. אתה יכול לכתוב הצהרה אם. וזה כנראה אחד דברים הראשונים שאתה רוצה לבדוק. OK. בכל פעם שהם נותנים לך כמו סוג של מקרה פינה כמו זה, זה בדרך כלל אחד הדברים הראשונים אתה הולך לבדוק בקוד שלך. כמו כן, משהו ל להכיר לחידון הוא אם יש לך דרך יעילה לעשות משהו, לכתוב את זה. מכיוון שאנחנו לא לדירוג לך על עיצוב, אנחנו דירוגך על נכונות לחידונים. אז גם אם אתה יודע שזה סופר דרך רעה לעשות משהו אבל זה עובד, לכתוב את זה, בסדר? year-- האחרון ילדים, פשוטו כמשמעו, שראיתי אם אתה מסתכל על אחד בשנה שעברה, הם כמו, לעשות פירמידת מריו. והם ממש ממש עשו "הדפסה, חשיש, הדפסה, חשיש, חשיש, הדפסה, חשיש, חשיש, חשיש. " אבל זה נכון. זה מה שאמר לו ל, כך שאתה לא יכול לקחת נקודות מ. אם אתה יורד ל תיל, כמובן, אתה רוצה לקבל פתרון אלגנטי יותר, ו הפתרון אלגנטי יותר יהיה כנראה פחות קוד להיות, מה שאומר שסביר להניח שאתה יש סיכוי גבוה יותר להיות צודק. אבל אם אתם כמו, אתה יודע מה, לא, אין לי זמן, אני יודע שזה פתרון, זה לא הכי טוב, לכתוב את זה. ואתה יכול גם לכתוב על צד, אני יודע שזה נורא, אבל אני יודע שזה עובד. אז רק ראש בראש. OK. אז ברור, דבר ראשון היא הצהרה אם זה. אז מה אנחנו חושבים אם זה ההצהרה הולכת להיות? ובעצם, תן לי פתוח את עורך Sublime הגדול שלי. אני הולך לקוד זה ולאחר מכן להראות לך בחורים כאשר זה נעשה. אז int פופ. OK. אז אם יש לנו int זה פופ void-- כל כך ברור, זה כמה פונקציה שלוקחת ב שום דבר ומחזיר מספר שלם, נכון? אז זה רק הולך לדבר על ערימה זו שיצרנו. אז רק תרגום זה אחרון משפט, "אם המחסנית ריקה, פופ צריך לחזור שלילי 1, "איך ייתכן שאנחנו עושים את זה? אז אם מה? איך אנחנו יודעים שהערימה ריקה? זה פשוט גודל שווה 0. Stack.size שווה 0. כמו כן, אני סוג של כתיבה עיוור כאן. אז אם אני עושה את כל typos-- הו, גם שכח להזכיר את זה. בשבוע שעבר, אני לגמרי הבנתי מה הבעיה שלנו היה עם JavaScript. לא לנצל אני וד 'אתה רק צריך לנצל אני ולקבל אלמנט לפי תעודת זהות. וזה היה כל השגיאה. אז אם אתם חוזרים ו למעשה להסתכל דרך הקוד שלי, אם אתה רק עושה את הכל ד אותיות קטנות, "לשכוח אלמנט לפי תעודת זהות," זה יעבוד. אז כמו שהבטחתי, הייתי מאוד קרוב. אני רק הוון משהו אני לא היה אמור, ש אני בטוח שיש לך חבר 'בPSET האחרון שלך. אז אם הגודל שלנו שווה 0, מה אנחנו אמורים לעשות? קהל: 1 חזור שלילי. 1 SPEAKER: 1 חזור שלילי. מגניב. אז עכשיו מה אנחנו עושים? אנחנו רוצים פופ משהו מ. עכשיו זה המקרה שבו יש לנו משהו. הגודל שלנו הוא גדול מ 1 או גדול מ 0, נכון? למעשה יש לנו שם משהו. אז מה אנחנו רוצים לעשות הם רוצה לחזור כאן. אנחנו הולכים להגיד שאנחנו רוצים לחזור ראש הערימה. בסדר? אז איך אנחנו יכולים לעשות את זה? איך אנחנו חוזרים ראש הערימה? זכור, המחסנית שלנו היא רק מערך, נכון? יש לו כמה קיבולת שנתנו לו. כפי שכבר לשים את הדברים on-- או בעצם, אנחנו הולכים לכתוב "לדחוף" אחרי זה. אם דברים הם בthere-- אולי תמונה תעזור. הממ, אני אוהב את הגיר גדול יותר. אז if-- ורק אתה יכול לחשוב על זה כערימה שלנו. אז זה 0, 1, 2. אני לא יודע למה התיבות שלי נעשים קטן יותר. אבל יש. OK. אז זה קצת ערימה עם קיבולת של 5. ונניח שיש לנו משהו כאן וכאן יש לנו משהו. לכן בשלב זה, שלנו הגודל שווה מה? 2. ואם אנחנו רוצים לקפוץ משהו משלו, זה אומר שאנחנו רוצים להגיע להיפטר מזה ממש כאן. בסדר? אז איך היינו לחזור ערך זה? קהל: מינוס גודל 1. 1 SPEAKER: נכון. אז גודל מינוס 1, או שאתה יכולתי לעשות מינוס מינוס גודל. אבל אנחנו לא יכולים פשוט לעשות את הגודל. זה בתוך struct, נכון? אז stack.struct. או stack.size. זה המדד שלנו ממש שם. בסדר? ואז אם אנחנו מסתכלים בחזרה בstruct שלנו כאן, אנו מבחינים כי ל למעשה לגשת למערך, אנחנו צריכים לעשות stack.numbers למעשה לגשת מערך ש. כך שמחזיר את ראש הערימה. אבל משהו that-- אם אתם מסתכלים במקש המענה, זה כל מה שהם לתת לך. אז זהו זה. אבל אני יכול לטעון שהם miss-- אוו, לא מה שרציתי. אני יכול לטעון שהם חסר משהו, because-- כן. קהל: להקטין את הגודל. 1 SPEAKER: נכון. אנחנו צריכים להקטין את הגודל שלנו עכשיו. אז מה מסובך על זה רגע שאתה חוזר משהו, הפונקציה שלך של הולך יציאה, נכון? אז מה אנחנו יכולים לעשות הוא למעשה להקטין את הגודל שלנו ראשונה. ואז אנחנו יכולים פשוט stack.size. אנחנו רק יכולים להשתמש stack.size כאינדקס שלנו, לא יכולנו אנחנו? כי אם stack.size הוא 2, אנחנו פחתה. ואז זה 1, ש הוא indice בפועל שלנו. ברגע שאנו להיפטר מזה, אנחנו באמת יש רק דבר אחד במערך שלנו. אז זה עושה את שני דברים. קהל: [לא ברור]? 1 SPEAKER: ובכן, במקרה הזה, רק חזרנו האלמנט בחלקו העליון שהוא בבית שלנו גודל זה בראש. אבל אנחנו לא עשינו שום דבר ל גודל אחרי שהוסרו אלמנט ש. זה לא השתנה בגודל שלנו עדיין. זה עושה בעצם מטבע לשנות את הגודל שלנו. אבל כדי לעשות את זה קצת יותר ברור, אתה יכול לעשות מינוס מינוס stack.size. בשבילי, זה עושה את זה, אני לא יודע, קצת יותר ברור that-- אה, שאתה בעצם שינוי הגודל והחזיר אותו. הדרך אחרת הייתה בסדר, כי הייתם משתנה וחוזר באותו הזמן. אבל זה רק עוד דרך לכתוב זה שאני רוצה להראות לכם. האם זה הגיוני? ערימות, אני חושב, הם הרבה יותר קל מאשר תורים. [צוחק] OK. האם יש לך שאלות ספציפיות כ -11 ו -12, או פשוט- קהל: אני חושב שזה היה הערימה. 1 SPEAKER: גודל המחסנית? קהל: כן. 1 SPEAKER: תפסתי אותך. OK. כן, אתה יכול לעשות את זה ב אחת משתי הדרכים הללו. OK. אז עכשיו יש לנו את השני. זה ממש מוזר, כמו לא שיש זה על המסך שלי. אז אם אנחנו מסתכלים כאן, עכשיו אנחנו רוצים להשלים את היישום של דחיפה, אשר למעשה מכניס משהו, הולך ומוסיף משהו לתורנו, או למחסנית שלנו. בסדר? אז אם אנחנו שמים לב, אנחנו יש כמה דברים. יש לנו great-- אם כל השאר, בכל פעם שיש לנו אחד מאלה, אתם צריכים לפחות לקבל מחצית נקודה, משום שכל מה שאתה צריך לעשות הוא להמיר את זה לג ו הם נותנים לך חצי מזה. אז "אם מחסנית מלאה או שזה שלילי, אז לדחוף צריך לחזור שווא. " בסדר? אז אנחנו רוצים רק חיוביים מספרים שלמים להיות במחסנית שלנו. בסדר? וזה הולך גם לחזור אמת או שקר. אז אנחנו [לא ברורים] bool צריכים. OK. אז תרגום. קהל: [לא ברור]. 1 SPEAKER: הו, תודה. כן. זו הסיבה שיש לי אתם. n Int. מושלם. בגלל שאנחנו מכניסים משהו למחסנית שלנו. אנחנו בעצם צריכים קצת מספר. OK. אז פשוט לוקח את זה השורה האחרונה ש הם נתנו לנו, הסוג של מקרי פינה שלנו, מה אתה חושב שיש לנו כאן? ברור, אנחנו הולכים לקבל קצת אם. OK. אז אמר, אם המחסנית שלנו היא n מלא או אם הוא שלילי. אז כנראה הקל ביותר להתחיל עם, כך שאם n הוא פחות מ 0 or-- לזכור נחמד שלך AND ו- OR מפעילים שם. איך היינו לבדוק ל לראות אם המחסנית שלנו היא מלאה? מה קורה? קהל: קיבולת שווה גודל. 1 SPEAKER: בדיוק. מושלם. OK. ומה לעשות שאנחנו רוצים לעשות שם? קהל: חזור שווא. 1 SPEAKER: חזור שווא. מושלם. אז באמצע דרך, נכון? לכל הפחות, אתם תהיה מחצית מזה. אז בואו נחשוב על זה. אז זה הערימה אנחנו מתחילים עם. אנחנו מנסים לשים כמה אלמנט כאן. יש לנו גודל זה שווה ל 2 עכשיו. יש לנו יכולת ששווה 5. ונניח שיש לנו כמה n זה שווה ל 3. אז אנחנו צריכים קלט 3 למרחב הזה. ואנחנו צריכים אותו לקלט מדד 2. נכון? אז איך אנחנו יכולים לעשות את זה? מנסה assign-- רוצה לגשת למערך שלנו. אז stack.numbers. אבל באיזה indice היית אנחנו רוצים שזה יהיה? קהל: [לא ברור]. 1 SPEAKER: כן. Stack.size. ואנחנו רוצים שזה n שווה, נכון? קהל: [לא ברור]. 1 SPEAKER: הייתי למעשה רק מסתכל על זה. אני חושב שזה לא נכון. קהל: האם אתה לא רוצה החלל האחרון הגודל הנוכחי? 1 SPEAKER: ובכן, אם יסתכל כאן, הגודל שלנו בשלב זה הוא 2. אנחנו רוצים שהוא ייכנס למדד 2, בגלל זה הוא החלק העליון של המחסנית שלנו. אז הייתי אומר שזה צריך להיות stack.size, ואז היית להגדיל stack.size. האם כולם מסכימים? אני חושב שאני מסכים עם זה. אתם יכולים להתווכח איתי אם תרצה. או לא מתווכח, אבל אנחנו יכולים לדבר על זה. קהל: [לא ברור]. 1 SPEAKER: ממ-הממ, המקום שבו זה לפתוח בגלל אפס אינדקס. אז בעוד שבחלק הראשון, חשבתי שהם טועים, והם צדקו בפועל, זה חלק, אני דווקא חושב שהם טועים. הייתי אומר שאתה צריך בהחלט קלטה כאן. אני חושב שכולנו מסכימים יש לנו גודל של 2. זה בדיוק המקום שבי רוצה המספר החדש שלנו ללכת. אז stack.numbers ב stack.size צריך להיות שווה n. ואז היינו להגדיל את stack.size. ++. ואז מה שאנחנו רוצים לעשות? יש דבר אחד אחרון שיש לנו ל לעשות אם הוכנס בהצלחה זה? חזור אמיתי. ועכשיו אתה עשית. אז אני מרגיש כאילו זה היה כל מינוס מינוס stack.size וstack.size ++ ש את הדברים פישל. איכס. אני keep-- יש לי את זה אינסטינקטיבי נטייה להכות תמיד שליטה, S, כי אני אף פעם לא רוצה לאבד את כל העבודה שלי. אבל אני לא צריך לעשות את זה עכשיו. OK. אז זה היה ערימה. מגניב. האם יש משהו? האם אתם מוצאים את כל שאלות אחרות שהיית רוצה לעבור על מחידונים קודמים? אם לא, אנחנו יכולים סוג של להתחיל לדבר באמצעות חידון אחת משנה שעברה. כן. קהל: לראשון חלק, אני לא ממש מבין איך אתה מחקת את המספר. האם לא זה עדיין שם? 1 SPEAKER: המספר עדיין שם. אבל מה שקורה הוא שבגלל שיש לך אמר לו שהחלק העליון של הערימה שלך הוא כאן, כשאתה הולך להוסיף משהו על הערימה, זה יהיה פשוט להחליף אותו. קהל: אה, בסדר. 1 SPEAKER: כן. אז זה כמו שהוא שכח וזה שם סוג של דבר למרות שזה שם. קהל: [לא ברור] או משהו? SPEAKER 1: מס ' בגלל שאנחנו ב מערך, אין לך לדאוג על-- אתה פשוט לעקוף אותו בעת צורך. בְּסֵדֶר. יש עוד שאלות? אם לא, אנחנו פשוט הולכים להתחיל לעבוד דרך. כן. קהל: ובכן, זה אחד הוא בשנת 2013, אבל פשוט עובר את הדברים SQL. SPEAKER 1: SQL? OK. אז זה 26 עד 29. קהל: כן. 1 SPEAKER: OK. יפה. בואו למשוך את אלה. אה, תראה. האם אתם נהנים סטיב באלמר לדבר, דרך אגב? זה היה די מצחיק, לדעתי. אני אוהב את זה בכל פעם שאני מעלה את CS50 של אתר בסעיף, זה כמו, אה, לצפות סעיף. ואני כמו, מ"מ. קהל: האם אנחנו יכולים לעשות את זה? 1 SPEAKER: אנחנו נעשה את זה בסוף. איך זה? כי אני יודע שאתם תמיד רציתי. אז אנחנו נעשה את זה בסוף. אחת שאלות. קהל: [לא ברור]. 1 SPEAKER: זה יהיה סעיף meta. קהל: זה כמו 5 שניות. קהל: באמת? קהל: זה כמו 20 שניות. [חציצת קולות] [שחוק] 1 SPEAKER: אני אוהב את זה כבר עשו זה, וזה מה שעושה אותי מאושר. OK. 26. OK. למעשה, אנחנו פשוט הולכים ל לשקף את זה עכשיו, כי אני לא יכול. זה מעצבן. OK. עכשיו אני יכול לראות הכל. יפה. OK. אז ברור, זה צריך להחזיר זכרונות נהדרים מ[? CSG?] האוצר. מחצית מכם על ש מדורגת כעת. החצי השני אני אגיע ל מאוד, בקרוב מאוד, אני מבטיח. אז יש לנו כמה שולחן SQL זה חשבונות כאן. כנראה דומה ל שולחנות המשתמש 'חבר' שלך. ויש לנו כמה מספר זה היה מפתח ראשי ומייצג מספר חשבון בן 12 ספרות. ואיזון הוא כמה כסף יש להם. וערך ברירת המחדל הוא 100. והם נותנים להם 100 $ כל פעם שהם פותחים חשבון. אני מאחל הבנק שלי עשה את זה. OK. אז אנחנו רוצים להשלים את הסכמה על ידי מפרט ליד מספר במאזן סוג SQL המתאים. אז מה אתם חושבים שיהיו סוג של התגובה האוטומטית שלך כמו לסוגים לשני אלה? קהל: Int. 1 SPEAKER: int. OK. ולאחר מכן לאיזון? עשרוני. OK. אז זכותה של עשרוני. Int קרוב. סוג של הדבר הגדול הוא זה הדגיש מספר חשבון בן 12 ספרות. בכל פעם שיש לנו משהו זה גדול יותר משמונה ספרות, הם רוצים להשתמש גדולים int, שאני חושב שis-- קהל: האם זה רק SQL? 1 SPEAKER: זה הזמן היחיד ששמעתי שלו הוא SQL-- כמו שימוש int גדול. זה רק כדי לתת לך יותר דיוק קטן, כדי לוודא שאתה לא דבר סוג עולה על גדותיו. בכל הכנות, אני חושב שזה בהחלט אחד מאלה שבו זה כמו, אה, זה נועד לאנשים שיש להם קצת יותר ידע של SQL. מעולם לא דברנו על ints הגדול בPSET שלך. אז זה סוג של כמו אני די בטוח ש אם אתה שם את int, זה היה חצי אשראי. וכפי שאמרתי קודם, יש הולך להיות כמה שאלות, כי הם פשוט נועד להכשיל אותך, כל כך שלא כולם מקבלים 100. כי כמובן, יש כמה אנשים בCS50 שעושה את זה כבר כמו שמונה שנים, ואתה כמו, מה אתה עושה? אבל כן. עשרוני לאיזון היה המובן מאליו. וint גדול אז למספר רק בגלל ש כך, כמו, הדגיש 12 ספרות. בכל פעם שדבר הוא באותיות מודגשת או זה קו תחתון, כמו, לשים לב לזה. אנחנו לא עושים את זה רק בגלל ש. OK. אז "מניח שמטיל הבנק תשלום חודשי 20 דולרים על כל החשבונות. עם מה שאילתא יכול הבנק לנכות 20 $ מכל חשבון גם אם הוא נובע מ כמה יתרות שליליות? " אז בואו נתחיל פשוט. יש לנו ארבע פקודות עיקריות עבור SQL, שהם? האם אתם זוכרים את ארבעת גדולים אלה שאמר לך? UPDATE, DELETE, בחר, וINSERT. מושלם. קיבלתי את זה. אז מה אנחנו כן חושבים שאולי להיות שימושי ביותר עבור זה? אנו are-- UPDATE. בדיוק. אז לעדכן, כי אנחנו מחפשים בחשבונות שכבר קיימים. אז לזכור הכללי שלנו סוג הדברים הוא עדכון. ואז מה בא אחרי העדכון? יש לנו כמה שולחן שאנחנו מתייחסים. אז אם אני מושך את עדכון again-- Sublime. אז זה פורמט כללי. אז יש לנו שולחן UPDATE. ואז מה הדבר הבא שיש לנו? אתה יכול לעשות איפה. ולאחר מכן יש לנו כמה מוקדמות כאן. ואז מה יש לנו הבא? יש לנו כמה משהו SET-- שווה משהו. בלה בלה שווה. בלה המעודכן. נכון? אז זה כמו כללי רעיון לחלק העדכון. בסדר? אז בואו נתחיל מילוי זה במה שהוא צריך להיות. אז מה שולחן אנחנו מדברים? חשבונות. ואז במקרה זה, מה באמת מגניב הוא אנחנו מדברים ספציפיים משתמשים שבחשבון שלנו, או שאנחנו מדברים על כל המשתמשים? על כל המשתמשים שאנחנו מדברים. אז במקרה זה, אנחנו יכולים פשוט מחק את מוקדמות זה. איפה הוא רק מתי שאתה רוצה כדי להגביל את מה שאתה משתנה. אם אתה רוצה לשנות את כל שולחן, אתה יכול פשוט לזרוק את זה. OK. אז עכשיו אנחנו בחלק SET שלנו. מה אנחנו רוצים לשנות? קהל: מאזן. SPEAKER 1: מאזן. ואנחנו הולכים to-- איך הם אנחנו הולכים לשנות את האיזון? יש לנו בתשלום 20 $, נכון? מינוס 20. והם אמרו שזה בסדר אם יש לנו יתרות שליליות. אז במקרה הזה, אתה לא צריך לעשות כל בדיקת שגיאות נוספת. בסדר? זה ממש כל מה שאתה צריך לעשות. מגניב? OK. אז בואו נעבור לצד אחד. "עם מה שאילתא SQL יכול בנק לאחזר את מספרי החשבון הלקוחות העשירים שלה עם מאזן יותר מ -1,000 דולר? " אם הבנק שלך והלקוחות העשירים שלך רק את אלה עם מעל 1,000 דולר, אני מרגיש כאילו אתה עושה משהו לא בסדר. כמו, איך בנק לשרוד על זה? כמו, עניין ש, לא מספיק. OK. עם דברים מהסוג הזה, מה לעשות אתה חושב, של ארבע הפונקציות שלנו, אתה חושב שאנחנו הולכים להשתמש? SELECT. מושלם. SELECT. OK. אז אנחנו בחירה מסוימת מזהה משולחן. ואז איפה מצב. אז כמו שאנחנו עוברים אלה, אני פשוט הולך לתת לכם רענון כללי בפורמט הכללי של כל אלה. אז אנחנו בחירה כלשהי של [? דבר. ?] במקרה זה, זה הולך להיות בדרך כלל כמה עמודה. אז במקרה שלנו, יש לנו מספר, איזון. במקרה של החבר'ה שלך, אולי זה היה מזהה, שם, סיסמא. כל עמודים אלה, זה בדרך כלל מה שאנחנו בחירה. אז במקרה הזה כאן, ש סוג של טור, מה שמזהה אנחנו מושכים מהשולחן שלנו? מה זה לשאול אותנו? זה שואל אותנו למספרים שלנו, נכון? מספרי החשבון. אז לזכור, רק מספר במקרה זה. אם אתם אי פעם היו טעות, ש התיבה כתומה בהירה תעלה. וזה היה כמו, לא צפוי שורה ב, כמו, לא משנה מה. זה בגלל שאתה נקרא השולחן שלך לא בסדר, נכון? כדי להיות בטוח שאתה קורא את הטור בצורה נכונה. אז משולחן, השולחן שלנו הוא חשבונות שנקראו. שוב, לוודא שאתה התייחסות השולחן שלך בצורה נכונה. ואז מה המצב שלנו כאן? מה אנחנו מחפשים? אנחנו רוצים שהאנשים העשירים שלנו. כן. אז לאזן יותר מ -1,000. הנה לך. זה השאילתה שלך. לא רע, נכון? OK. אז עכשיו לאחד האחרון שלנו. עם זה, אנחנו breezing דרך. OK. אז עכשיו "עם מה שיכל שאילתא קרוב הבנק, דהיינו, למחוק "- אתה לא אוהב את איך שהם פשוט נתתי לך DELETE-- "כל חשבון שיש איזון של 0?" אני חושב שכולנו יכול להסכים שאנחנו כנראה הולך להיות באמצעות DELETE. אני מוזמן לקחת כל דיון סביב זה. אבל אני חושב שזה די בטוח ל אומר שאנחנו יכולים להשתמש DELETE. אז אנחנו הולכים למחוק חלק משתמשים משולחן, איפה מצב. אז אותו דבר כמו SELECT. אז בזה case-- הו, מצטער. אני צריך למחוק מ. בגלל ימחק למחוק את כל השורה. אז אנחנו לא צריכים לדבר עליו דברים ספציפיים על משתמש אנחנו מחיקה. אם אנו מוחקים את משתמש, אנחנו מחיקה כל מה שעליהם. אז במקרה הזה, אנחנו רק צריכים למלא איפה ומצבנו. אז השולחן שלנו הוא רק החשבונות שלנו שולחן, כפי שאנו כבר עושים. ואז מה המצב שלנו כאן? קהל: מאזן. 1 SPEAKER: מאזן שווה 0. נכון. כל טוב. כן. קהל: [לא ברור]. SPEAKER 1: אז DELETE מטבע מוחק הכל. אז אילו עם בחירה, בחר לוקח ב עמודות מסוימות שברצונך חזר. אם אתה רוצה על הכל משתמשים חזרו, אתה משתמש בכוכב. כוכבים אומר, יחזרו אליי הכל ממשתמש זה. או אם אתה שם איפה כוכב, ש רק אומר לי הכל. אבל DELETE מטבע יש ש. אז אם אתה אומר, למחוק מ חשבונות שבו איזון שווה 0, זה הולך לעבור. ובכל מקום שהאיזון הוא שווה ל- 0, זה מטבעו עושה את זה. זה יהיה למחוק הכל. הכוכב הוא for-- יותר עם SELECT או עדכון, זה מדבר יותר על הפרט שדות המתאימים למשתמש. לכן, כאשר אתם בוחרים כוכב מהשולחן שבו מזהה שווה 1, שמחזיר לך כל מה שעל המשתמש עם ID 1. אם היית עושה מספר SELECT או בחר בשם פסיק זיהוי ממשתמשים איפה ID שווה 1, ש רק מחזיר את המספר שלהם או הזהות שלהם ואת שמם. בסדר? כך אנו משתמשים כוכב במקרה של לתת לנו כל מה שעל משתמש. ולמחוק מטבע עושה את זה. זה לא פשוט למחוק את הזהות, או רק את השם, או משהו כזה. כן, לא. זה פשוט מוחק את כל המשתמשים. ולכן אנחנו לא צריכים לדאוג על הכוכב שיש. אם אתה רוצה למחוק הכל, אתה יכול לעשות את זה, וזה פשוט לעזוב הכל. אבל בדרך כלל, אתה לא רוצה לעשות את זה. אבל אם אי פעם אתה רוצה למחוק הכל, אתה יכול לעשות את זה. OK. יש לכם שאלות נוספות מצא? כן. קהל: האם אתה יכול לעשות 26? 1 SPEAKER: 26 אנחנו פשוט עשינו. קהל: הו, 25, מצטער. 1 SPEAKER: 25. OK. 25. אה. הם עושים את JavaScript. אה, אני לא יכול להאמין לזה. אני הולך לבלגן אותנו שוב, חבר'ה. OK. יש לנו את זה. אנחנו הולכים לעשות את העבודה הזאת. אה, jQuery. כיף. OK. אז אנחנו הולכים כדי להשלים את יישום של דף האינטרנט באופן כזה שאם הם מבקרים, קלט השם שלהם, ולשלוח את הטופס, יש להם ההתראה הגדולה הזה חלון שעומד להופיע. אז כל דבר עם התראות, אנחנו יודעים ש אנחנו הולכים צריכים להשתמש ב- JavaScript. Yay, JavaScript. ואם הם לא מצליחים קלט שם לפני הגשת הטופס, אין התראה אמורה להופיע. אז אתה יכול להשתמש jQuery, אבל אין לך. אז אני הולך לתת לכם לעבוד על זה רק לכמה דקות. תחשוב על זה. ואז תוכל לקודד אותו. סלאש אני הולך לנסות ולחשוב על הדרך הטובה ביותר להסביר את תשובה לך את זה. בְּסֵדֶר. אנחנו נקבל אותה הקמנו. OK. אז אנחנו פשוט הולכים ללכת דרך זה, כי אני יודע jQuery זה קצת מבלבל. JavaScript. זה קצת בחוץ. אז מה אנחנו הולכים לעשות הוא [לא ברור] פתר למעשה בעיה זו עם jQuery. אז אם אתה זוכר, jQuery היא רק ספרייה זה פשוט נבנה על גבי JavaScript. זה אמור להפוך אותך חיים קצת יותר קלים. הייתי בהחלט, אם יש לך זמן, להסתכל על קצת תיעוד לjQuery. אבל זה דומה מאוד ל- JavaScript. זה חייב פרדיגמות דומות, שבו אתה להשתמש מפעיל נקודה זו כדי לקרוא לפונקציות על אובייקטים שיש לך. אז מה יש לנו כאן הוא עבור jQuery, אתה צריך תמיד יש סוג זה של עטיפה, המהווה את $ .ready פונקציה (מסמך) (פונקציה) בסוגריים כאן. OK. אז זה יכול להיות משהו אתה רוצה על גיליון לרמות שלך. בגלל לכל הפחות, אתה יכול יש מעטפת עבור jQuery. וזה יהיה לפחות לקבל אתה להיפרד שם. אז באותה הדרך ש דיבר הרבה על JavaScript, ואנחנו היו מתחילים מלהסתכל על מה שאנחנו מנסים לערוך או מה שאנחנו מנסים לשנות. וזה יהיה בדרך כלל להיות הדבר הראשון שהיינו שם ב. אז במקרה הזה, אם אנחנו חוזרים לזה כאן ואנחנו מסתכלים על הטופס שלנו כאן, יש לנו זה תשומות, נכון, זה id תשומות. ואנחנו יודעים כי בהתבסס על השאלה שלנו, אנחנו הולכים או לזרוק שגיאה אם ​​זה ריק, או שאנחנו הולכים לשים זה לכוננות, נכון? אז כנראה בטוח לומר שאנחנו הולך להיות התמודדות עם תשומות כאן. jQuery הוא דומה מאוד שבאם חושב בחזרה ל- CSS, דבר עם זיהוי אנחנו מסתכלים עם חשיש. כל דבר עימנו בכיתה הסתכל בנקודה, נכון? אז באותה הדרך לכאן, מה אנחנו מדברים עליו הוא תשומות. ראינו תשומות שהן מזהה בתוך הטופס שלנו. אז אנחנו הולכים להתייחס אליו ככזה. תשומות. בסדר? לכן, כאשר, בספק אפילו אם יש לך לשום מקום, אם אתה באמת בטוח לגבי איך גישה זו, יש לי עטיפה זו. אז להתחיל שם עם המעטפת עבור jQuery. B, לוודא שאתה יודע מה אתה משנה. וכאשר יש ספק, לשים את זה במשהו, ולעשות נקודה, מה שאתה חושב אתה צריך לעשות עם זה. קהל: מהו את העטיפה? SPEAKER 1: העטיפה הוא קו ראשון זה. אז זה אומר, לחכות עד ש המסמך שלי מוכן. ואז מתחיל להתעסק עם דברים. בסדר? אז אנחנו יודעים שאנחנו מתעסקים עם תשומות. כן, אנחנו כ, OK, תשומות היא הטופס שלנו. זה הזהות שלנו. אז זה מה שאנחנו הולך להיות מחפש. ואנחנו רוצים לראות מה קורה כאשר טופס זה יוגש, נכון? אז כמו שאנחנו חושבים, יש לנו כמה .submit. אז .submit רק אומר, בסדר, טופס זה שאנחנו כבר הפניה בתשומות חשיש, כאשר הוא הגיש, לבצע משהו אחר. אז אנחנו הולכים לקבל קצת פונקציה. שים לב שיש לנו פונקציות אנונימי כאן. יש לנו פונקציה אנונימית כאן. כן. קהל: האם זה תמיד .submit, או שזה רק בגלל בHTML, עשינו סוג הכפתור Submit? SPEAKER 1: יש .submit זה, משום ש זה צורה כלשהי שאנו הגשה. בגלל .submit זה לא בהכרח מתאים למה הוא הכפתור כמו לקרוא. אבל העובדה שזה טופס שאנחנו הגשה. OK. אז שם לב בעילום שם פונקציה כאן שsays-- קהל: אני לא ממש להבין פונקציות בעילום שם. SPEAKER 1: אז בעילום שם פונקציות, הם רק פונקציות שאין להם שם. אז במקום שיש כמה פונקציה העיקרית שcalls-- נוכל לומר, אם מסמך מוכן, אז היינו קורא לתשומות. ולאחר מכן, כאשר הוגש, call-- כמו, אם כך-וכך הוגש, היינו קוראים לתפקיד אחר. פונקציה אנונימית פשוט אין לו שם, וזה פשוט יהיה לבצע בתוך דברים כאלה. אז במקרה הזה, מה שזה אומר הוא, כאשר המסמך שלנו מוכן, תפעיל פונקציה זו. פונקציה זו מורכבת של כל מה שבכאן. ולאחר מכן בשכבה הבאה היא, בסדר, כאשר תשומות הוגשו, לבצע את זה. זה פשוט דרך של המציין מה צריך להיות מוצא להורג כש. זה ממש פשוט פונקציה שאינה יש שם, ולכן הם נוטים להיות מקונן לתוך אחד את השני, בגלל שאתה לא יכול לקרוא להם בשמם. בסדר? פשוטו כמשמעו, פונקציה אנונימית הוא רק פונקציה ללא שם. זֶה הַכֹּל. רק דרך לתמצת דברים שונים כי אנחנו רוצים שבוצעו בזמנים מסוימים. קהל: [לא ברור]. 1 SPEAKER: פורקן? איפה? קהל: ב סוגריים לאחר פונקציה? 1 SPEAKER: לאחר פונקציות. איזה מהם? קהל: גם וגם. אם תשים, כמו, אירוע, או אם אתה שם את טיעון שביש, זה יהיה בסדר? 1 SPEAKER: במקרה זה, אני מניח ש אתה יכול לשים את ויכוח לשם. אבל בגלל שאנחנו לא צריכים טיעון, שלא צריך להיות. כמו, זה כולה, כמו, אתה רק צריך יש דברים שהם סוג הכרחי של דבר. באותו אופן שאם היו לנו כל פונקציה שיש void-- העיקרי int כמו, עם void main int, אתה יכולתי לעשות int v arg, לא משנה מה. אבל אם אתה לא צריך אותם, אתה לא צריך אותם שם. אותו דבר. אמה, שיש לך שאלה? OK. מגניב. OK. אז מה יש לנו עד כה הוא כאשר המסמך של מוכן, לבצע את זה. עכשיו אנחנו מסתכלים על כאשר הוא הגיש. אז עכשיו אנחנו למעשה יש סוג של הבשר של הדבר. אז אנחנו צריכים לקבל את הערך ש משתמשים שהוגשו, בין אם זה יהיה שם או ריק. ואז אנחנו צריכים גם לחזור התראה או זה לזרוק שגיאה. כך או כך. אז איך אנחנו מצהירים ב משתנה בJavaScript? Var. אז בואו נגיד ש, שם var equals-- או בעצם, אנחנו לעשות ערך מאז אני חושב ששם זה. OK. אז יש לנו כמה ערך כאן ש רוצה למשוך מצורת התשומות שלנו. אז באותה הדרך ש אנחנו סוג של עשו תשומות, מישהו יכול להגיד לי את מה שאנחנו יכול להיות שקרא בתוך כאן אם אנחנו רוצים להגיע שם מהטופס? אם אנחנו מסתכלים אחורה בצורה שלנו כאן ו, אנו מבחינים שיש לנו זיהוי של שם. קהל: [לא ברור]. 1 SPEAKER: אין לך לחשוב על זה כעל מערך. אתה לא צריך לדאוג בקשר לזה. אז פשוט יש לנו כמה שם. ולאחר מכן, כי JavaScript ודברים הם מוזרים, אנחנו לא יכולים פשוט לעשות "שם". אנחנו באמת צריכים לקרוא כמה פונקציה שנותנת לנו, כמו, את הערך של מזהה ש. בסדר? אז זה רק .val. קהל: [לא ברור]. 1 SPEAKER: OK. אז עם JavaScript, זה סוג של הדבר נכון כאן רק עובר. ואתה יכול לחשוב על זה as-- זה כמו כמעט getElementById, שבו למעשה getElementById היית להחזיר את הדבר המלא לך. $ ("# שם") הוא בדיוק כמו, OK, יש לי את זה, אני יכול לגשת אליו, אבל אם אתה באמת רוצה את זה כדי להחזיר את הערך לyou-- קהל: האם זה כמו מצביע? 1 SPEAKER: זה כמו סוג של מצביע. אתה יכול לחשוב על זה כ כמו סוג של מצביע. כאילו, זה אומר, בסדר, אני יודע איך להגיע לשם, אבל למעשה כדי לקבל את הערך מתוך זה, אתה צריך לשאול את מפורש לכך. ולרוע מזל, כמובן, אנחנו לא לעשות יותר מדי עם JavaScript וjQuery. אז זה הולך לרדת לכמה אתה guys-- מה שאתה יודע במקרה, מה יקרה לך שראה, ומה ש סוג של שאתם יכולים לנחש באופן הגיוני ב. כי חלק מהדברים האלה, אתה בטח היה יכול לקבל באמצע דרך. אבל לעשות את זה נכון לחלוטין, אני חושב שבעיה זו כנראה היה אחד מהציונים הנמוכים ביותר. קהל: כמו, למשל, ל[ לא ברור] תשומות, למה אתה לא צריך לשים את val שם? 1 SPEAKER: לזה? קהל: כן. 1 SPEAKER: כן. בגלל זה הוא סוג של רצון, כפי שאמרנו, כמה מצביע, וזה לי התייחסות זה ולמעשה מקבל אותנו את הערך. קהל: בעוד [לא ברור]? 1 SPEAKER: לתשומות, תשומות היא רק some-- זה כמו שאנחנו פשוט מסתכל על זה כמכלול, ו.submit זה אומר לי שלנו את מה שאנחנו צריכים לדעת. jQuery ו- JavaScript הוא מוזר. אני יודע. אני יודע, בחורים. אני יודע. יש סיבה שאני עושה לא לעשות תכנות אינטרנט. סתם צוחק. לא היה לי מספיק חשיפה אליו. קהל: [לא ברור] CSS. [שחוק] 1 SPEAKER: OK, זה CSS. CSS הוא פשוט, כמו, לעשות דברים יפים, זה לא כמו בואו להתמודד עם נתונים. יש הבדל שם. OK. אז עכשיו אני מקווה, זה part-- גם, ל בעיה כזאת, שבו אתה לא יכול יודע תחביר, אתה יכול להיות כמו, OK, יכול להיות לך ערך כלשהו var ולהיות כמו, תניח ש קיבל את הערך בצורה נכונה. ואז כנראה שאתה יכול לכתוב זה חלק הבא. זה חלק הבא יהיה כנראה נראה קלים הרבה יותר, או שזה יגרום הגיוני תחושה אתם. ואילו מה שכתבנו עד כה, אני יודע שאני כמו, אום, כן יהיה, אני לא יודע כי בחידון. לגמרי אתה יכול לכתוב psuedocode ולאחר מכן לפרוץ לקוד אמיתי כאשר you-- זה כמו סוג של מתמטיקה. אם אי פעם היה לך קצת בעיה רב חלק שבו אתה לא יודע איך לעבור את השלב הראשון, אבל כל השאר מסתמך על את הצעד הראשון, אתה פשוט אומר, כמו, תניח x שווה 4. ואז אתה לרוץ עם זה, נכון? אתה יכול לעשות את אותו דבר עם קוד. אז אפשר לומר, מניח יש לי את זכות הערך. ואז לעשות זה חלק הבא כאן. כי חלק זה למעשה צריך להיות די הגיוני. אז אנחנו צריכים לבדוק אם הערך שלנו הוא ריק. או אם זה קצת שם, למעשה לתת התראה. אז מה עלולים אנחנו רוצים לבדוק? אנחנו רוצים לקבל קצת אם. מה אתה חושב אם הולך להיות? אנחנו צריכים לבדוק אם ערך is-- אם זה לא מחרוזת ריקה. מושלם. בדיוק. OK. אז אם זה המצב, מה שאנחנו רוצים לעשות? אנחנו רוצים לזרוק כמה ערניים, נכון? אז זה רק התראה. ואז מה שאנחנו רוצים בפנים. אז מה אנחנו אמורים יש בתוך ההתראה שלנו? קהל: "הלו". 1 SPEAKER: פסיק. ואז לעשות לכם זוכר איך לשרשר? קהל: פלוס. 1 SPEAKER: פלוס. אז אנחנו רוצים להיות בתוספת. ואז אנחנו צריכים תוספת אחרת לסימן הקריאה שלנו. מגניב. OK. אחרת, מה שאולי אנחנו רוצים לעשות? אנחנו לא רוצים לעשות שום דבר, נכון? אז אנחנו פשוט לחזור שווא. לא מה שאני רוצה לעשות. OK. ולאחר מכן אלה, של course-- מה שחשוב הוא לזכור לסגור הפונקציות אנונימי שלך. אז אם אתה שם לב, יש לנו כמה פונקציה כאן שמסתיימת כאן. אז אנחנו צריכים לסגור את זה ראשון אחד ולהוסיף נקודה-פסיק. ואז זה אחד כאן יש ל לעשות עם פונקציה אנונימית זה, כך אנחנו סוגרים אותו שם. שהתגובה האוטומטית של חיסכון. כן. קהל: האם יש סיבה that-- רק בכל דוגמאות בJavaScript כי אני ראיתי, יש לנו הסוגריים המסולסלים הראשונים על אותו הקו כמו הפונקציה? 1 SPEAKER: זה סגנוני. כן. ולמעשה, אם אתה לוקח 61, אנחנו לעשות את כל הסוגריים המסולסלים שלנו בדרך ש. נגמר לך? קהל: אם הייתי עושה לעשות את זה ב PSET, הוא שרע בסגנון? SPEAKER 1: מס ' יש לנו אמרתי לי במפורש אתם לעשות את זה. אבל בעצם, זה סוג של האמנה שולטת בהרבה מסוגים ג ו JavaScript וjQuery. אז ברור, אני sure-- ובעצם, אם אני היו לעשות את הבעיה הזו לחלוטין עיוור בלי שהסתכל על זה, יש כנראה מעט מאוד דרכים שאני היה מקבל את זה. אני יכול להיות כמו, טוב, אולי אני צריך לתפוס משהו שהוא קלט. ואני חושב שיש ידיעה ש, כמו, OK, אם אני רוצה לקבל משהו מצורה שיש ID, אני מתייחס לזה בדרך זו, אני כנראה הייתי מקבל את זה. אני יכול לקבל את זה. אבל באמת, הדבר היחיד שאני חושב ש אני באמת מקבל הוא זה ממש כאן. אז זה סוג של חשוב יודע, כמו בכל מבחן קשה, אתה סוג של לבחור את הקרבות שלך, נכון? אם אתה יודע שאתה לא הולך לקבל שהחלק הראשון לjQuery, כמו שאמרתי, תניח שיש לך ערך זה ולעשות את מה שאתה יכול עם זה. ואם יש לך זמן, לחזור ולנסות ולמלא את החלקים. אבל אל תתנו לשאלה כמו זה באמת לשקוע אותך. כי מה? זה היה שאלה אחת ב jQuery מתוך כל הבחינה. אז כן, זה יהיה נהדר אם יש לך את זה. קהל: [לא ברור] מוזמן להשתמש jQuery. SPEAKER 1: אתה מוזמן להשתמש jQuery. קהל: OK. [לא ברור]. SPEAKER 1: איך היית לא להשתמש בו? הייתי צריך להסתכל את כל JavaScript שלי. זה בעצם הרבה יותר קל, אני חושב, לשימוש jQuery, כי jQuery מפחית למעשה סכום של JavaScript אתה כותב כנראה על ידי, כמו, חצי. אז הקוד שלנו כנראה יהיה זמן כפול בלי ש. אז אם אתה recognize-- הגדול ביותר דבר לקחת מבעיה זו שלהם הדפוסים. אם אתה ניגש משהו מצורה, אתה הולך להשתמש במרכאות, חשיש, כל מה שאתה מנסה לגשת. אם זה להיות שהוגש, אתה רוצה להשתמש במשהו כמו .submit. אתה בטח מתכוון להשתמש פונקציה אנונימית שם. אם אתה באמת צריך את הערך של משהו, שאתה הולך לעשות ציטוטים, חשיש, בכל תחום שהוא, .val. והכרה בדפוסים כמו שהולכים להיות הרבה יותר שימושי מ לדעת באמת גרגירי nitty. כן. קהל: אז אם משתמש שולח את שמם והיא פועלת באמצעות הצהרה ש, תהיה זה לרדת ולחזור שווא אחרי זה? 1 SPEAKER: לא, כי ההתראה, אתה יכול לחשוב על זה כמו לחזור. כן. אז זה יהיה לצאת. כן. קהל: הייתה לך [? מקום?] הסוגריים של תגיש, סוגריים, משהו? 1 SPEAKER: אני עשיתי, אני מאמין. זה אחד של נסגר ממש כאן. ואז זה אחד מקבל נסגר כאן. קהל: אה, יש. בְּסֵדֶר. 1 SPEAKER: ברור, קטן, דברים תחביריים קטנים כמו ש, כנראה ש רק מקיף אותו ולהיות כמו, אל תשכחו הסוגריים שלך. אבל כן. OK. האם יש לנו עוד אחד שהיינו רוצה לעשות? האם אתם מקבלים את אחד העץ בינארי? האם אנחנו רוצים ללכת על זה? אני מרגיש כמו עצים בינארי וDOMS צריך להיות נקודות כי אתם מקבלים די בקלות. לא הייתי רוצה אותך לאבד נקודות על זה. OK. בואו לעשות DOM זה כאן. הלוואי שהייתי לי Surface שלי ולכן אני יכול פשוט לצייר על המסך. זה מה שאני היה עושה בשנה שעברה. OK. אז כפי שציינתי, שדיברנו על DOM, מודל אובייקט מסמך. הם כנראה הולכים לתת לך כמה קצת קטע כזה ואבקש ממך ליצור עץ על זה. וזה הכל רק צריך לעשות עם הפעלה באמצעות התגים. אז בואו ננסה לעשות את זה. כמו כן, כרגיל, אם אתם לעשות החידונים האלה, כפי שאני מאוד ממליץ לך לעשות כמנהג, כל אחד מהם שאתה אוהב את, אני באמת לא מבין מה קורה כאן, רק, כמובן, לשלוח לי מייל עם שאלה, ואני אסביר כמיטב יכולתי. OK. יש לנו כמה מסמכים, ויש לנו HTML. OK. אז אנחנו רק ניתוח התגים כאן, נכון? אז מה אנחנו רואים comes-- מה הם שתי כותרות משנה תחת HTML? במיוחד משום ש הם יוכנסו כראוי? ראש וגוף. אה. ראש וגוף. יפה. אז בואו נתחיל כאן עם ראש. מה הראש מתחת? מה התג הבא שלנו? כותרת. ולאחר מכן בכותרת, חידון. OK. אז, פשוטו כמשמעו, זה פשוט הליכה בתגים, בסדר? אז אם יש לנו גוף, כפי שאנו עוברים, יש גוף שלושה דברים בתוכו, נכון? יש בו שלושה divs. כל div מקבל קופסא הקטנה משלה. ומה בdiv הראשון? [לא ברור] ולאחר מכן הבא הוא אמצע, שאני רק הולך לקצר. ואז האחרון הוא תחתון. אז באמת, זה פשוט עובר דרכם. ובגלל שאנחנו הולכים לתת לי אתה HTML שיוכנס כראוי, אתה יכול, פשוטו כמשמעו, רק לרוץ דרך ולהיות כמו, OK, כאן הוא HTML. אז זה החיצוני פינה, או שמאלה רחוקים, כך שצריך להיות הדבר שלו. אלה הם באותו indention. אז אנחנו יודעים שראש צריך להיות באותה הרמה כמו גוף, אבל מתחת HTML. זה מה שיש לנו כאן. ראש והגוף הם אחים, אבל הם תחת HTML. ואז אנחנו פשוט להיכנס לכל אחד מאלה. אז ראש יש כותרת, ש יש חידון, כפי שאנו רואים כאן. ואז במקרה זה, יש לנו גוף, שבו יש שלוש שורות אלה. אז כל אלה הם אחים כולם תחת גוף. בסדר? אז אני מקווה שכשאתה רואה משהו כזה, אתה כמו, כן, אני פשוט מקבל לצייר עץ. זה הולך להיות גדול. OK. אז רציתי לוודא אתם יודעים את זה. אז למה שלא נלך ל 32 עם העץ בינארי שלנו? כי ברגע שאתה מבין בינארי עץ חיפוש, זה באמת לא כל כך רע. אז אוורט, אני יכול erase-- אני כלומר, כל אלה הם באינטרנט, מדי. אז אם יש לך שאלות. איבדתי את החלל קטן שם, אבל זה בסדר. אז עץ חיפוש בינארי הוא רק דרך לארגן נתונים לא במערך, שבו השורש הוא תמיד גדול מילד השמאל והשורש הוא תמיד פחות מהילד תקין. OK. אז יש לנו עץ חיפוש הגדול הזה כאן. יש לנו את המספרים האלה, 34, 59, 20, 106, 36, ו -52. ואנחנו צריכים לארגן שלהם בצורה כזאת כך שהשורש הוא גדול יותר מכל מה שבצד השמאל וזה פחות מ הכל בצד ימין. ובדרך כלל, מה שאתה רוצה לעשות הוא לנסות ולמצוא משהו על באמצע. עם עצי חיפוש בינארי, אולי יש לך לשחק קצת עם זה. אבל במקרה הזה, בואו פשוט תניח שאנו יודעים זה ראשון. אז 36 הוא אחד הראשון שלנו כאן. בדרך כלל, הייתי מנסה ולבחור משהו בערך באמצע שימצא כנראה תניב את התוצאות הטובות ביותר. אז עכשיו אנחנו יודעים כל מה שעל הצד הזה צריך להיות פחות מ -36. אבל גם, מה שאתה יכול לראות הוא שיש לנו שתי נקודות כאן. אז אם אנחנו יודעים שאנחנו צריכים שני מספרים שהם פחות מהשורש, אז אתה יכול פשוט להזמין אלה ולבחור את המספר השלישי. OK. אז למה שלא תתחילו עם הצד הזה? אז אם אנחנו יודעים שכל מה שעל הצד הזה צריך להיות פחות מ 36-- אם אנחנו מסתכלים על זה אבל, אנחנו יודעים שהמספר הזה צריך להיות פחות ממספר זה, נכון? בגלל מספר זה כאן הוא בצד ימין. וזכור, בדיוק כמו בגדול שלנו עץ, הכל בצד הימין צריך להיות גדול יותר מהשורש. בדרך זו, אנו יודעים ש מה הוא בזה לצרכי להיות גדול יותר מכל מה שהוא כאן. בסדר? אז יש לנו שתי אפשרויות לשתי אלה בועות. יש לנו 32 ו34-- או מצטער. 20 ו -34. אז איך אתה חושב אנו עשויים לשים את אלה ב? אם זה אחד יש להיות יותר גדול מזה, זה אומר שאנחנו רוצים יש לי 20 כאן וכאן 34. OK. אז באותה הדרך, אנחנו מסתכלים בעץ משנה מסוג זה. ואנחנו אומרים, בסדר, יש לנו לא 36. יש לנו 106, 52, ו -59. נכון? במקרה זה כאן, אנחנו יודע שזה אחד הצרכים יש דבר אחד שגדול יותר מ זה ודבר אחד שהוא פחות ממה שהוא. נכון? אז אם אנחנו שמים אלה כדי, זה פשוט על מציאת שערך מרכזה שוב. אז הערך האמצעי שלנו הוא 59. אז אנחנו אומרים, בסדר, מה פחות מ 59? ובכן, זה 52. ומה יותר מ- 59? ובכן, זה 106. בסדר? אז זה רק קצת כמו פאזל. זה בדרך כלל עוזר, במיוחד בעצים קטנים כמו זה, אם אתה רק להזמין אותו, אם אתה יודע כמה הם בצד השמאל וכמה מהם ב נכון, זה רק יכול מאפשר לך לבחור מה צריך להיות בשורש שלך. ואז אתה יכול סוג של לעבוד משם. ממ-הממ. 33? בטח. OK. אז אנחנו רוצים ליצור צומת או עץ חיפוש. ובואו נסתכל על מה שעשוי להיות בו. ואני חושב שרצון זה למעשה להיות הבעיה האחרונה שלנו. אה. OK. OK. זה כמו מה שאנחנו יכולים חושב עליו כצומת, נכון? יש לנו כמה ערך, ואנחנו יודע שזה גם יהיה השאיר וילדים תקין. חיפוש בינארי tree-- אמצעים ש שיש לו, לכל היותר, שני ילדים. בסדר? בואו נחשוב על הדרך בה אנו הגדיר רשימה מקושרת, נכון? היו לנו כמה int ש ייצג את הערך. היו לנו כמה מצביע שייצג מה שזה הולך הבא. עץ חיפוש בינארי הוא דומה מאוד. עדיין יש לנו כמה ערך, n, שאנחנו נותנים לו, נכון? ולאחר מכן ציירתי מאוד אלה באופן מפורש עם חצים, כי הם יעיל מצביעים. בסדר? אז n הוא בדרך כלל מה? זה ערך כלשהו. מה שאנו בדרך כלל אין לייעד אותו כ? Int. אז יש לנו כמה n int, או ערך int, או מה שאתה רוצה לקרוא לזה. ולאחר מכן יש לנו את השמאל ילד והילד תקין. נכון? ואנחנו יודעים שמה שהם point-- מה הם מצביעים? הם מצביעים על צמתים אחרים, נכון? אז איך אנחנו אכריז מצביע צומת? קהל: [לא ברור]. 1 SPEAKER: ממ-הממ. ואנחנו הולכים לי שני אלה, נכון? ואז אנחנו ממש יכולים אל עזבו לילד השמאלי ונכון עבור הילד תקין. מצטער Actually--. כי אנחנו צריכים struct. אז struct הוא כי יש לנו לא סיים הכרזת צומת עדיין. אז צומת היא בתוך כאן. זה כמו סוג של הגדרה רקורסיבית, נכון? לכן, כאשר אנו נמצאים ב הגדרה זו, אנחנו לא סיים הכרזה צומת כמבנה, ולכן אנחנו צריכים לעשות struct צומת רק כדי להגיד, כן, אנו למעשה מתייחסים בחזרה לעצמנו להקליד דבר. כי כמו פעם זה נוצר, זה יהיה בסדר. אז עד כמה גדול אתם חושבים שזה? מה גודלו של מבנה זה? 12. למה? בדיוק. ואכן, אחד מ שאלות ראשון חידון אחת הוא על גדלים, וזו הסיבה ששאלתי. בְּסֵדֶר. אנחנו הולכים עד הסוף, כי DCE יהיה לצעוק עליי אם אנחנו לא. אבל אם יש לכם שאלות, כמובן, שלח לי, תן ​​לי לדעת. אתם הולכים לטלטל אותו. אני סופר מתרגש. אתם יעשו כ יום רביעי, ולאחר מכן תקבל לעבוד עליך סופי פרויקטים, וזה הולך להיות מדהים. אני אהיה כאן ליד שבוע 4:00-04:30 אם אתם רוצים לבוא להרים החידונים שלך. אם אתה רוצה למצוא אותי בפעם אחרת או פשוט לתאם זמן שונה, הרגש חופשי ליידע אותי. אחרת, זה החלק האחרון שלנו. אז זה היה נהדר לראות אתכם. אנא הקדש יותר סוכריות. ומזל טוב על החידון שלך.