1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> פרופסור: אז סדר היום ל השבוע, לא כל כך הרבה דברים. 3 00:00:09,790 --> 00:00:12,801 אבל אני מקווה מאוד, מאוד מועיל ורלוונטי בשבילכם זה שבוע. 4 00:00:12,801 --> 00:00:15,550 אבל אנחנו הולכים לבלות אולי 15, 20 דקות רק מדברים במהירות 5 00:00:15,550 --> 00:00:17,370 על קישור רשימה. 6 00:00:17,370 --> 00:00:19,694 רשימות קישור הולכים להיות מכוסה על החידון. 7 00:00:19,694 --> 00:00:22,610 אז אולי זה יהיה מאוד מועיל כדי ללמוד קצת על מה זה. 8 00:00:22,610 --> 00:00:25,210 >> אנחנו הולכים לבלות את הרוב רוב הסעיף של היום 9 00:00:25,210 --> 00:00:27,640 הולך על חידון אפס בעיות בפועל. 10 00:00:27,640 --> 00:00:30,970 ואז אולי לחסוך 20, 30 דקות בסוף לכל שאלות משתהות 11 00:00:30,970 --> 00:00:32,850 למישהו יש. 12 00:00:32,850 --> 00:00:34,610 >> ולאחר מכן, עבר חמש דקות, אני הולך 13 00:00:34,610 --> 00:00:36,467 לתת נאום משאבה לחידון. 14 00:00:36,467 --> 00:00:38,050 אתם כל רוצים להיות כאן בשביל זה. 15 00:00:38,050 --> 00:00:39,591 כי זה הולך להיות זמן טוב. 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> בסדר, אז כמה מהותי על קישור רשימה. 18 00:00:49,230 --> 00:00:52,620 איך הם בנויים בדרך כלל הוא יש לך מה שנקרא צומת, נכון? 19 00:00:52,620 --> 00:00:54,870 יש לך את הדברים האלה בשם צמתים, שהם structs. 20 00:00:54,870 --> 00:00:57,360 אני אלך על איך ליצור צומת בשקופית הבאה. 21 00:00:57,360 --> 00:01:00,680 אבל בעצם כולם קשור רשימות היא הוא נתונים ש 22 00:01:00,680 --> 00:01:03,340 כבר מתוח יחד באמצעות מצביעים. 23 00:01:03,340 --> 00:01:09,110 >> וכך היתרון שיש לנו של שימוש ברשימה מקושרת מעל, 24 00:01:09,110 --> 00:01:11,280 אולי, כמו מערך, הוא העובדה שבמערך 25 00:01:11,280 --> 00:01:15,000 אתה צריך גוש רציף אחד זיכרון כל באותו המקום, אחד 26 00:01:15,000 --> 00:01:16,870 אחר, כדי להיות מסוגל לקבל את זה. 27 00:01:16,870 --> 00:01:20,200 ואילו רשימה מקושרת, אתה יכול יש חתיכות קטנות אקראיות של זיכרון 28 00:01:20,200 --> 00:01:23,020 בכל רחבי המחשב מתוח יחד על ידי מצביעים. 29 00:01:23,020 --> 00:01:26,270 >> ובדרך זו אתה יכול לגשת למידע 30 00:01:26,270 --> 00:01:28,610 שמגיע אחד אחרי אחר, בזה אחר זה 31 00:01:28,610 --> 00:01:32,720 ללא צורך רק נתח עצום של זיכרון במחשב שלך במקום כלשהו. 32 00:01:32,720 --> 00:01:35,910 וכך זה הוא אחד הגדול סיבות לכך שאנו משתמשים בקישור רשימה. 33 00:01:35,910 --> 00:01:40,300 >> שנית, זה קל מאוד לדינמי לשנות את גודל רשימת הקישור כי במערך, 34 00:01:40,300 --> 00:01:44,720 כאשר אתה מצהיר מערך, יש לך ערך מסוים שנקבע. 35 00:01:44,720 --> 00:01:47,340 נניח שאני רוצה ליצור מערך של 10 מספרים שלמים. 36 00:01:47,340 --> 00:01:49,970 אני יוצר מערך של 10 מספרים שלמים, וזהו. 37 00:01:49,970 --> 00:01:50,580 זה 10. 38 00:01:50,580 --> 00:01:52,038 אני לא יודע מה לעשות אחרי ש. 39 00:01:52,038 --> 00:01:53,680 אם אני רוצה לעשות את זה 11, לא יכול לעשות את זה. 40 00:01:53,680 --> 00:01:55,710 אם אני רוצה לעשות את זה 9, לא יכול לעשות את זה. 41 00:01:55,710 --> 00:01:59,910 >> ואילו ברשימת קשר, אתה יכול להוסיף ו למחוק ולהוסיף בכל מקום שאתה רוצה. 42 00:01:59,910 --> 00:02:04,940 דינמי אתה יכול לשנות את הגודל שלך מבנה כאן, מבנה הנתונים שלך. 43 00:02:04,940 --> 00:02:08,370 וזה נותן לנו הרבה גמישות הוסיפה עוד 44 00:02:08,370 --> 00:02:11,320 שאנחנו עושים בדרך כלל לא יש לי עם מערכים. 45 00:02:11,320 --> 00:02:15,210 >> כל אחד מבולבל בבסיסי מבנה של איך רשימת קישור היא 46 00:02:15,210 --> 00:02:17,930 או למה אנחנו צריכים להשתמש באחד על מערך? 47 00:02:17,930 --> 00:02:20,330 כן, אנחנו מתכוונים לעבור על בפירוט כיצד ליצור למעשה אחד. 48 00:02:20,330 --> 00:02:24,121 אבל זה פשוט סוג של התחושה הכללית עכשיו. 49 00:02:24,121 --> 00:02:24,620 לְהִתְקַרֵר. 50 00:02:24,620 --> 00:02:28,770 וכך מערכים שזורים יחד דברים הקטנים היפים אלה 51 00:02:28,770 --> 00:02:29,960 בלוטות נקראות. 52 00:02:29,960 --> 00:02:32,210 כל צומת היא סוג של struct. 53 00:02:32,210 --> 00:02:36,090 זכור, struct הוא אם אתה רוצה כדי ליצור סוג מסוים של משתנה 54 00:02:36,090 --> 00:02:39,850 בC שלא עושה כבר קיים, אתה, כמתכנת, 55 00:02:39,850 --> 00:02:42,030 למעשה יכול ליצור בעצמך. 56 00:02:42,030 --> 00:02:46,540 >> ואז זה סוג של נתונים מבנה נקרא צומת, 57 00:02:46,540 --> 00:02:50,770 למעשה נוצר על ידינו, ש לא קיימת בתוך C בכוחות עצמו. 58 00:02:50,770 --> 00:02:53,150 והאופן שבו אתה ליצור אחד הוא שיש לך 59 00:02:53,150 --> 00:02:57,170 הכותרת של struct typedef, שאומר למהדר אני 60 00:02:57,170 --> 00:02:59,640 על מנת ליצור struct. 61 00:02:59,640 --> 00:03:00,830 >> אנחנו הולכים שם "צומת". זה 62 00:03:00,830 --> 00:03:03,350 ובתוך אנחנו הולכים להכריז משתנה ב, 63 00:03:03,350 --> 00:03:05,060 שהוא הולך לאחסון ערך. 64 00:03:05,060 --> 00:03:09,320 ואז אנחנו גם הולכים יש מצביע בשם "הבא" 65 00:03:09,320 --> 00:03:12,090 שמצביע על הבא צומת ברשימת הקשר. 66 00:03:12,090 --> 00:03:14,730 ואז אתה מסיים את זה רק על ידי חזרה על צומת שוב כל כך 67 00:03:14,730 --> 00:03:17,490 מהדר יודע, בסדר זה הסוף של struct. 68 00:03:17,490 --> 00:03:22,540 >> וכך, בדרך זו, אנחנו סוג יצירת מערך קטן וחמוד 69 00:03:22,540 --> 00:03:25,450 סוג של דבר עם ערך ועם מצביע. 70 00:03:25,450 --> 00:03:27,757 ואתה יכול לקשר אותם כל יחד עם מצביעים אלה. 71 00:03:27,757 --> 00:03:30,090 כך שהם יכולים להיות כל סוג מתוח יחד בשרשרת. 72 00:03:30,090 --> 00:03:32,920 73 00:03:32,920 --> 00:03:34,162 >> לְהִתְקַרֵר. 74 00:03:34,162 --> 00:03:35,453 האם אתה יכול לשמוע את זה קצת יותר טוב? 75 00:03:35,453 --> 00:03:36,140 >> קהל: כן. 76 00:03:36,140 --> 00:03:38,540 >> פרופסור: בסדר. 77 00:03:38,540 --> 00:03:44,280 לכן הדרך ש, כפי שאתה יכול לראות בחורים, רשימת קישור טיפוסית בנויה 78 00:03:44,280 --> 00:03:45,500 הוא שיש לך בראש. 79 00:03:45,500 --> 00:03:49,460 יש לך את ערך הראש שאינו שהצביע על ידי כל מצביע אחר. 80 00:03:49,460 --> 00:03:53,177 אבל זה הולך להצביע ב, או התייחסות, צומת אחר. 81 00:03:53,177 --> 00:03:56,510 הצומת אחרי הולכת הפניה צומת לאחר ש, וכן הלאה וכן הלאה 82 00:03:56,510 --> 00:03:59,170 עד שסופו של הדבר פגע סוף רשימת הקישור שלך. 83 00:03:59,170 --> 00:04:00,980 ופשוט אין לך מצביע שם. 84 00:04:00,980 --> 00:04:04,659 >> וכך, חושב כמו, בשרשרת, או אפילו אם מישהו מכם הבחורים עשו, אני לא יודע, 85 00:04:04,659 --> 00:04:06,450 כמו עם לולאות פירות כאשר היית קטנים. 86 00:04:06,450 --> 00:04:08,590 שהיית להם מחרוזת יחד וללבוש אותם סביב צווארך. 87 00:04:08,590 --> 00:04:09,840 חושב שזה בדיוק אותו הדבר. 88 00:04:09,840 --> 00:04:12,964 יש לך דברים הקטנים האלה שאתה יכול מחרוזת יחד נקודה שלאחד 89 00:04:12,964 --> 00:04:15,291 אחרי זה, לאחד לאחר זה, וכן הלאה וכן הלאה 90 00:04:15,291 --> 00:04:17,040 עד שיש לך שרשרת של מבנה הנתונים 91 00:04:17,040 --> 00:04:21,190 שאתה יכול להשתמש בכל צורה שתרצה. 92 00:04:21,190 --> 00:04:27,370 >> לכן הדרך שזה הייתי בדרך כלל להוסיף או למחוק 93 00:04:27,370 --> 00:04:30,020 צומת כלשהו מקישור הרשימה שונה מאוד 94 00:04:30,020 --> 00:04:31,970 תלוי איפה צומת שהיא. 95 00:04:31,970 --> 00:04:34,880 כך, למשל, כי מצביעים תמיד 96 00:04:34,880 --> 00:04:38,645 מצביע על ערך מסוים, כאשר אתה מוחק או הכנס צומת, 97 00:04:38,645 --> 00:04:41,770 אתה רוצה לוודא שהמצביע הוא מצביע על כל הדברים הנכונים. 98 00:04:41,770 --> 00:04:46,200 >> אז אם אתה רוצה שעלול להכניס צומת חדשה עם הערך של אחד 99 00:04:46,200 --> 00:04:48,379 בתוך קישור ממוין רשימה, שכולנו יודעים כאן 100 00:04:48,379 --> 00:04:51,170 מהתמונה שהולכת ללכת בראש ובין שתיים, נכון? 101 00:04:51,170 --> 00:04:52,620 בגלל אחת מתאים לשם. 102 00:04:52,620 --> 00:04:59,060 אבל הדרך שבה אנחנו היינו עושים את זה הוא על ידי ביטול הפניה למבנה המצביע הראשון 103 00:04:59,060 --> 00:05:02,160 מהראש ושולח את זה לאחד. 104 00:05:02,160 --> 00:05:05,040 >> אבל אנחנו באים לשל בעיה כאן. 105 00:05:05,040 --> 00:05:08,280 כל אחד יכול לראות מה הבעיה הוא אם היינו dereference הראשון 106 00:05:08,280 --> 00:05:10,090 המצביע מהראש לאחד? 107 00:05:10,090 --> 00:05:14,202 מה בעיה אולי אנו נתקלים אם ננסה כדי להוסיף את זה לחלק הקדמי של המערך שלנו? 108 00:05:14,202 --> 00:05:15,409 >> קהל: [לא ברור] 109 00:05:15,409 --> 00:05:16,200 פרופסור: בדיוק. 110 00:05:16,200 --> 00:05:20,000 אז הנה יש לנו מצביע שהיה מצביע פעם אחת מהראש לשתיים. 111 00:05:20,000 --> 00:05:23,120 אבל אם אתה להיפטר שמ מצביע, אתה מכוון אותו לאחד, 112 00:05:23,120 --> 00:05:26,500 עכשיו אין לנו מושג לאן ללכת כדי למצוא שתי. 113 00:05:26,500 --> 00:05:29,850 כי כמו שאמרתי קודם, יש לך נתח ענק של זיכרון במחשב שלך. 114 00:05:29,850 --> 00:05:31,860 כל צמתים האלה יכולים להיות ביניהם באופן אקראי 115 00:05:31,860 --> 00:05:33,350 בכל מקום במחשב שלך. 116 00:05:33,350 --> 00:05:36,140 ואתה לא יודע איך ללכת על מציאת ש. 117 00:05:36,140 --> 00:05:40,420 >> ואז אתה צריך שתהיה לי מצביעים מצביע על כל צמתים בסוף. 118 00:05:40,420 --> 00:05:42,420 או אחר אם אתה בטעות dereference אחד 119 00:05:42,420 --> 00:05:44,485 מבלי להקצות ראשון ערך הראשון, אתה 120 00:05:44,485 --> 00:05:47,410 רק הולך להפסיד כל מה שלאחר מכן. 121 00:05:47,410 --> 00:05:49,720 >> אז מה אנחנו הולכים לעשות הוא, ראשון שהיית עושה 122 00:05:49,720 --> 00:05:53,270 רוצה ליצור מצביע על הצומת שרצונך להוסיף. 123 00:05:53,270 --> 00:05:55,270 לכוון אותו למקום שבך רוצה להכניס אותו ל, 124 00:05:55,270 --> 00:05:59,410 ואחר כך לך יכול להצביע ראש חזרה לאחד. 125 00:05:59,410 --> 00:06:02,800 >> האם זה הגיוני שכולם כאן? 126 00:06:02,800 --> 00:06:03,346 גדול. 127 00:06:03,346 --> 00:06:04,720 תחשוב על זה כבדיוק כמו שרשרת. 128 00:06:04,720 --> 00:06:07,420 אם תוסיף שרשרת, זה סוג של אינטואיטיבי 129 00:06:07,420 --> 00:06:10,742 איך אתה הייתי הולך על ההכנסה ש. 130 00:06:10,742 --> 00:06:15,274 >> אוקיי, אז זה בעצם הרבה קצר יותר ממה שחשבתי שזה יהיה, 131 00:06:15,274 --> 00:06:16,690 נאום של חמש דקות על קישור רשימות. 132 00:06:16,690 --> 00:06:19,960 רק אז יש לך חבר ' רעיון בסיסי של מה זה. 133 00:06:19,960 --> 00:06:23,580 >> כאן יש לנו את סדר היום לחידון אפס. 134 00:06:23,580 --> 00:06:24,895 אל תתנו לזה להפחיד אותך. 135 00:06:24,895 --> 00:06:26,270 אני יודע שזה הרבה מידע. 136 00:06:26,270 --> 00:06:27,580 זה נראה מאוד מפחיד. 137 00:06:27,580 --> 00:06:33,130 זה גם הרבה, אני חושב, סוג של מונחי CSC. 138 00:06:33,130 --> 00:06:37,440 דברים כמו מחרוזות הקסדצימליים, מצביעים, הקצאת זיכרון דינמי 139 00:06:37,440 --> 00:06:40,120 הם מונחים נשמע מאוד מפחידים. 140 00:06:40,120 --> 00:06:42,700 >> אבל אנחנו הולכים לשבור אותם למטה, לעשות קצת בעיות בפועל 141 00:06:42,700 --> 00:06:44,980 כך שאתם כל מוכנים לבדיקה זו. 142 00:06:44,980 --> 00:06:47,104 כמה מכם יש לי כבר התחיל ללמוד? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> אישור, אתם בטח רוצים כדי להתחיל התחלת העבודה 145 00:06:53,670 --> 00:06:56,480 על זה, כי החידון הוא מחר. 146 00:06:56,480 --> 00:06:58,739 או ביום חמישי לחלק מכם. 147 00:06:58,739 --> 00:07:01,030 כן, אז אנחנו הולכים ללכת על כמה בעיות בפועל. 148 00:07:01,030 --> 00:07:04,600 אם אתם רוצים לקחת את כל מתוך גיליון נייר, עיפרון. 149 00:07:04,600 --> 00:07:07,310 אנחנו הולכים רק כדי לבלות רוב מכריע של הסעיף של היום 150 00:07:07,310 --> 00:07:11,590 הולך על כמה שאז יש לך חבר ' רעיון של למה לצפות בחידון. 151 00:07:11,590 --> 00:07:14,957 152 00:07:14,957 --> 00:07:16,890 >> אוקיי. 153 00:07:16,890 --> 00:07:19,730 כמה לוגיסטי פרטים, כמו גם, לאף אחד 154 00:07:19,730 --> 00:07:25,120 שלא היה לקישור שיש, אם אתה הולך לcs50.yale.edu, בחזית 155 00:07:25,120 --> 00:07:28,566 דף זה יש קשר שאומר "אודות חידון אפס." 156 00:07:28,566 --> 00:07:29,440 הקישור לוקח אותך לשם. 157 00:07:29,440 --> 00:07:31,065 אם לא קראת אותו, בבקשה לקרוא אותו. 158 00:07:31,065 --> 00:07:34,470 כי זה אומר לך באמת חשוב מידע על החידון. 159 00:07:34,470 --> 00:07:37,410 >> אני הולך למשוך את זה מ זה רק בגלל ש, פיזי, 160 00:07:37,410 --> 00:07:40,200 אם אתם לא יודעים איפה ללכת, תהיה לנו בעיות. 161 00:07:40,200 --> 00:07:44,220 ולכן אם אחרון במונחים עם לN, ללכת לאולם בית הספר למשפטים. 162 00:07:44,220 --> 00:07:47,500 ואם מתחיל האחרון שלך עם P 'עד ת', ללכת לדייויס אודיטוריום. 163 00:07:47,500 --> 00:07:50,240 וזה חל רק ל אנשים בסעיף יום רביעי. 164 00:07:50,240 --> 00:07:53,420 >> אם אתה לוקח את החידון ב יום חמישי, אתה הולך לSSS 114 165 00:07:53,420 --> 00:07:55,078 שם ההרצאה שלך בדרך כלל היא. 166 00:07:55,078 --> 00:07:55,953 קהל: [לא ברור] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 פרופסור: O 'עד ת', אתה הולך ללכת לאולם דייויס. 169 00:08:01,940 --> 00:08:03,273 אני הולך לשנות את זה, נכון? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> אה, כן, אתה פשוט לא מצליח באופן אוטומטי. 172 00:08:09,698 --> 00:08:11,753 >> אה, כן, זה אתה כריסטה. 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 כן, שלי רע. 175 00:08:16,030 --> 00:08:17,610 כן, O 'עד ת', אתה הולך ללכת לדייויס Auditorim. 176 00:08:17,610 --> 00:08:19,140 אני הולך לתקן את זה ברגע שאני מעלה. 177 00:08:19,140 --> 00:08:20,320 כֵּן. 178 00:08:20,320 --> 00:08:22,160 >> ואז גם משהו חשוב לזכור 179 00:08:22,160 --> 00:08:25,290 הוא שיום רביעי, אם אתה באופן רשמי נרשם בסעיף יום רביעי, 180 00:08:25,290 --> 00:08:26,832 אתה חייב לקחת החידון שלך ביום רביעי. 181 00:08:26,832 --> 00:08:29,706 ואם אתה לומד ביום חמישי, אתה חייב לקחת החידון שלך ביום חמישי. 182 00:08:29,706 --> 00:08:31,000 וזה בזמן שיעור. 183 00:08:31,000 --> 00:08:35,970 איפה, אני חושב שזה כמו 1:00 עד 02:15 בימי רביעי ו2:30-03:45 184 00:08:35,970 --> 00:08:37,220 בימי חמישי. 185 00:08:37,220 --> 00:08:41,710 >> אם יש לך סכסוכים בלתי מתפשרים, התירוצים של דין הם הדבר היחיד, 186 00:08:41,710 --> 00:08:43,030 למרבה הצער, אנחנו יכולים לקחת. 187 00:08:43,030 --> 00:08:45,560 בגלל שהיינו לנו רוב מכריע של בקשות 188 00:08:45,560 --> 00:08:47,970 כדי לעבור מיום רביעי עד יום חמישי. 189 00:08:47,970 --> 00:08:51,265 שאנחנו לא יכולים לכבד, אלא אם כן יש לנו בקשתו של דיקן. 190 00:08:51,265 --> 00:08:52,650 >> אוקיי. 191 00:08:52,650 --> 00:08:57,000 אז לפני שנתחיל ב כמה בעיות בפועל, 192 00:08:57,000 --> 00:09:00,540 אני רק הולך לעבור על העצות מועילות של אנדי להצלחה. 193 00:09:00,540 --> 00:09:04,140 אתם, כשאתה לומד, אתה באמת רוצה לתרגל כתיבת קוד ביד. 194 00:09:04,140 --> 00:09:07,050 בפעם הראשונה שאי פעם לקחתי חידון CS, לא היה לי 195 00:09:07,050 --> 00:09:09,960 כתיבת קוד בפועל ביד לפני וזה היה מאוד 196 00:09:09,960 --> 00:09:11,890 מזעזע בכמה קשה זה היה. 197 00:09:11,890 --> 00:09:16,125 >> כאשר אתם לא להיכנס הרגל של הקלדה את כל מה ש, 198 00:09:16,125 --> 00:09:20,260 מדובר להיות מאוד באופן טבעי נוכל לי השלמה אוטומטית 199 00:09:20,260 --> 00:09:22,015 סוגריים ופסיק שם. 200 00:09:22,015 --> 00:09:23,890 כשאתה כותב את זה ביד, לפעמים זה 201 00:09:23,890 --> 00:09:27,100 מאוד, קל מאוד לשכוח פסיק, או תשכח לסגור הסוגר, 202 00:09:27,100 --> 00:09:30,970 או תשכח לסגור מעי גס, או משהו כזה. 203 00:09:30,970 --> 00:09:34,322 >> לכן, כאשר אתה כותב קוד ביד, זה תחושה שונה מאוד. 204 00:09:34,322 --> 00:09:37,280 אז אתם, כשאתה עובד באמצעות חלק מהבעיות בפועל, 205 00:09:37,280 --> 00:09:38,904 זה יהיה טוב באמת להתאמן היום. 206 00:09:38,904 --> 00:09:41,770 או מחר, אני מניח, אם אתה לוקח את החידון ביום חמישי. 207 00:09:41,770 --> 00:09:45,280 >> שנית, יש לנו האחרון, כמו, עיסוק בשווי של השנה ושמונה 208 00:09:45,280 --> 00:09:47,070 חידונים מקוונים. 209 00:09:47,070 --> 00:09:50,759 חידון השנה יהיה כנראה מאוד, מאוד דומה לכולם. 210 00:09:50,759 --> 00:09:51,800 הם כולם דומים מאוד. 211 00:09:51,800 --> 00:09:54,220 אתה סוג של להיכנס ל סגנון של הסוג של שאלות 212 00:09:54,220 --> 00:09:57,250 שאנו מבקשים, הסוג של פונקציות שנכתוב את זה ב, 213 00:09:57,250 --> 00:09:58,580 וכולי, וכולי. 214 00:09:58,580 --> 00:10:01,980 >> אז לקחת את החידונים בפועל, במיוחד תחת אילוצי זמן. 215 00:10:01,980 --> 00:10:05,390 75 דקות לעשות את החידון הוא לא הרבה כמות הזמן. 216 00:10:05,390 --> 00:10:07,254 זה מאוד, מאוד ארוך. 217 00:10:07,254 --> 00:10:09,670 וכך אתם באמת רוצים כדי לוודא שאתם נמצאים 218 00:10:09,670 --> 00:10:11,990 ברגל של כתיבה קוד ביד במהירות. 219 00:10:11,990 --> 00:10:15,070 מכיוון שאתה לא רוצה ראשון זמן כדי לראות חידון של אורך ש 220 00:10:15,070 --> 00:10:16,560 להיות בחידון שלך. 221 00:10:16,560 --> 00:10:20,540 אתם באמת רוצים לוודא שאתה נוהג מראש. 222 00:10:20,540 --> 00:10:24,550 >> רביעית, אתה רוצה לבדוק את שקופיות הרצאה וחתך. 223 00:10:24,550 --> 00:10:25,980 אתה לא צריך לשנן דברים. 224 00:10:25,980 --> 00:10:30,430 למעשה, כולם מותר גיליון הערות נייר לבן אחד, 225 00:10:30,430 --> 00:10:31,090 קדמי ואחורי. 226 00:10:31,090 --> 00:10:32,920 אתם יכולים להקליד או לכתוב. 227 00:10:32,920 --> 00:10:37,070 אם אתה מוצא את עצמך צורך לשנן שום דבר, הניח אותה על גיליון ש. 228 00:10:37,070 --> 00:10:40,810 >> אני מבטיח לך, שאתה לא רוצה להיות תקוע באמצע החידון ש 229 00:10:40,810 --> 00:10:43,890 להיות כמו, אה, כן, מה ש זמן ריצה מסוג לעומת סוג שזה. 230 00:10:43,890 --> 00:10:46,490 פשוט לשים אותו ולהעתיק אותו היישר מגיליון הפתק שלך. 231 00:10:46,490 --> 00:10:50,420 אז למעשה אתה יכול פשוט להשתמש שלך המוח לחשוב על הבעיות 232 00:10:50,420 --> 00:10:52,190 ולא שיש לזכור עובדות. 233 00:10:52,190 --> 00:10:55,250 וכך באמת לנצל פרטי נישה כל 234 00:10:55,250 --> 00:11:00,140 כי אתה חושב שאתה צריך לשנן, פלופ אותה על גיליון הסקירה. 235 00:11:00,140 --> 00:11:02,680 >> אישור, כל שאלות לוגיסטית לגבי החידון 236 00:11:02,680 --> 00:11:05,510 לפני שאנחנו מתחילים קצת בעיות חידון להתאמן? 237 00:11:05,510 --> 00:11:06,416 כֵּן? 238 00:11:06,416 --> 00:11:10,040 >> קהל: לא היה לי סיכוי להסתכל על החידון [לא ברור] 239 00:11:10,040 --> 00:11:11,757 אבל זה הולך להיות יישום בעיקר, 240 00:11:11,757 --> 00:11:14,090 או שיש גם הולך להיות, כמו, שאלות ידע? 241 00:11:14,090 --> 00:11:14,940 >> פרופסור: זה הרבה. 242 00:11:14,940 --> 00:11:16,731 אז, בדרך שאני היית תאר את החידון 243 00:11:16,731 --> 00:11:18,810 הוא-- אני להרכיב כמה בעיות בפועל 244 00:11:18,810 --> 00:11:20,960 שמשכתי מכל החידונים. 245 00:11:20,960 --> 00:11:25,210 אבל תראה שיש שני עיקרי סוגים של שאלות שנשאל אותך. 246 00:11:25,210 --> 00:11:28,750 >> אחד מהם הוא רמת פירוט נמוך מאוד של חומר. 247 00:11:28,750 --> 00:11:31,720 אנחנו ניתן לכם נתח קטן של קוד ואומר, יש שגיאה כאן? 248 00:11:31,720 --> 00:11:33,110 מה יהיה להדפיס את כאן? 249 00:11:33,110 --> 00:11:35,980 מה קוד זה יהיה לייצר, וכולי. 250 00:11:35,980 --> 00:11:38,710 פרטי מידע כך רמה נמוכה מאוד. 251 00:11:38,710 --> 00:11:42,700 >> ועל הצד השני של המטבע, שנצטרך מאוד רמה גבוהה שאלות מבוססות ידע. 252 00:11:42,700 --> 00:11:45,190 אתה יכול להסביר מה הבדל בין חיפוש בינארי 253 00:11:45,190 --> 00:11:46,148 וחיפוש ליניארי הוא? 254 00:11:46,148 --> 00:11:48,500 למה שנרצה ל להשתמש באחד על פני האחר? 255 00:11:48,500 --> 00:11:49,960 אולי, מה הוא GDB? 256 00:11:49,960 --> 00:11:51,560 למה אנחנו רוצים להשתמש GDB? 257 00:11:51,560 --> 00:11:54,590 רמה גבוהה יותר, יסודי יותר שאלות הבנה. 258 00:11:54,590 --> 00:11:58,240 אז תראה תערובת של שתיים מהם בחידון שלך. 259 00:11:58,240 --> 00:12:01,462 >> כל דבר אחר לפני ש ראש ישר לתוך זה? 260 00:12:01,462 --> 00:12:02,879 אוקיי. 261 00:12:02,879 --> 00:12:03,670 קהל: אחת יותר. 262 00:12:03,670 --> 00:12:04,030 פרופסור: אה, אחד יותר. 263 00:12:04,030 --> 00:12:04,340 מצטער. 264 00:12:04,340 --> 00:12:05,631 >> קהל: כן, זה בסדר. 265 00:12:05,631 --> 00:12:10,140 אז אתה אומר 75 דקות הוא קצר מדי, כמו זה סביר 266 00:12:10,140 --> 00:12:11,640 שנסיים? 267 00:12:11,640 --> 00:12:13,571 או, כמו, 75 דקות זה בדיוק כמה שיותר זמן 268 00:12:13,571 --> 00:12:15,700 כפי שהיינו צריך אם היינו הכין כראוי? 269 00:12:15,700 --> 00:12:17,450 פרופסור: אוקיי, אז החידון הוא מאתגר. 270 00:12:17,450 --> 00:12:19,550 זה בהחלט מאתגר. 271 00:12:19,550 --> 00:12:21,092 אתה תמצא את עצמך קצר בזמן. 272 00:12:21,092 --> 00:12:24,341 אתה בטח הולך להכות, כמו 10, 15 דקות לסיום, ולהיות כמו, חרא. 273 00:12:24,341 --> 00:12:25,520 שנשארתי לי כל כך הרבה מה לעשות. 274 00:12:25,520 --> 00:12:26,520 וזה לגמרי בסדר. 275 00:12:26,520 --> 00:12:28,740 כולם עומד מרגישים אותו הדבר. 276 00:12:28,740 --> 00:12:31,074 >> רק להיות מודע מאוד ל כמה זמן יש לך. 277 00:12:31,074 --> 00:12:33,490 ואז בגלל זה אני אומר לך בחורים לעשות חידונים בפועל. 278 00:12:33,490 --> 00:12:36,672 כי זה באמת נותן תחושה נהדרת של מה החידון הולך להיות כמו. 279 00:12:36,672 --> 00:12:39,130 אז אם אתה מוצא את עצמך תוכל סיים את האימון 280 00:12:39,130 --> 00:12:41,671 חידונים בכמות טובה של זמן, אתה יכול לצעוד את עצמך היטב, 281 00:12:41,671 --> 00:12:45,695 אז לא יהיה לך בעיה ביום רביעי או חמישי. 282 00:12:45,695 --> 00:12:46,575 >> לְהִתְקַרֵר. 283 00:12:46,575 --> 00:12:49,200 אז אם כולם אני חושב wants-- רוב האנשים גיליונות נייר 284 00:12:49,200 --> 00:12:49,810 את כבר. 285 00:12:49,810 --> 00:12:52,604 אני הולך בעצם רק אתן לך שאלות לדוגמא, 286 00:12:52,604 --> 00:12:54,520 לתת לכם, כמו, כמה דקות כדי לעשות אותם. 287 00:12:54,520 --> 00:12:59,610 ונלך על כתובענה מה התשובות להם. 288 00:12:59,610 --> 00:13:02,860 >> אז זה מאוד אופייני השאלה הראשונה שנציע ב 289 00:13:02,860 --> 00:13:06,720 לשאול אותך, רק המרה מספרים בין בסיסים שונים. 290 00:13:06,720 --> 00:13:09,070 בינארי, כמו שאתם יכולים כזכור, הוא בסיס שני. 291 00:13:09,070 --> 00:13:12,470 העשרוני הוא בסיס 10, או מה שאנו כמו בני אדם בדרך כלל לפרש. 292 00:13:12,470 --> 00:13:17,120 הקסדצימלי הוא בסיס 16, שהוא אפס דרך תשע, כמו גם דרך פ 293 00:13:17,120 --> 00:13:19,990 >> אז יש ארבעה מספרים אני שואל אתכם להמיר כאן. 294 00:13:19,990 --> 00:13:23,909 אני אתן לך אוהב, שלושה ל ארבע דקות לחשוב על איך 295 00:13:23,909 --> 00:13:25,200 היינו הולכים על פתרון זה. 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> קהל: האם מותר מחשבונים? 298 00:13:35,710 --> 00:13:37,630 >> פרופסור: אתה לא יהיה צריכים מחשבונים, כן. 299 00:13:37,630 --> 00:13:42,420 אני חושב שבנוסף בסיסי, אני חושב, הוא כל מה שאתם תתבקשו לעשות. 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> ורק אז אני סוג של יש לי תחושה כאשר כולם עשו, מסתכל למעלה, 302 00:14:45,070 --> 00:14:47,429 גל, אני לא יודע, לחייך, נראה מאושר אם תסיים. 303 00:14:47,429 --> 00:14:47,929 כֵּן. 304 00:14:47,929 --> 00:17:21,680 305 00:17:21,680 --> 00:17:23,945 יותר אולי כמה דקות. 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> אישור, בואו נביא אותו ב. 308 00:18:29,600 --> 00:18:31,580 אני בכוונה הולך לתת לכם פחות זמן 309 00:18:31,580 --> 00:18:33,760 ממה שאתה כנראה צריך לעשות קצת בעיות אלה, 310 00:18:33,760 --> 00:18:37,124 פשוט כי אני רוצה לוודא ש אנחנו מקבלים דרך חבורה של בעיות. 311 00:18:37,124 --> 00:18:39,290 אז אל דאגה, אם לא יש סיכוי לסיים. 312 00:18:39,290 --> 00:18:43,770 לגמרי בסדר כל עוד יש לך רעיון של איך ללכת על זה. 313 00:18:43,770 --> 00:18:45,850 אז בואו נלך קדימה ולעשות את הראשון. 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> אז קודם כל, האם מישהו רוצה לספר לי בינארי, מה לעשות כל אחד מאלה ספרות 316 00:18:57,870 --> 00:19:00,484 מייצג במונחים של הערכים שלהם? 317 00:19:00,484 --> 00:19:01,250 כֵּן? 318 00:19:01,250 --> 00:19:03,349 >> קהל: שני ל כוח אפס, שתיים לאחד. 319 00:19:03,349 --> 00:19:04,140 פרופסור: בדיוק. 320 00:19:04,140 --> 00:19:04,640 כָּך. 321 00:19:04,640 --> 00:19:13,430 322 00:19:13,430 --> 00:19:16,430 >> נכון, כל כך בדרך כלל כאשר אנחנו נמצאים בבסיס 10 323 00:19:16,430 --> 00:19:20,580 כל אלה מייצגים הם, כמו, 10 לבסיס אפס, נכון? 324 00:19:20,580 --> 00:19:21,810 זה המקום שלך אחד. 325 00:19:21,810 --> 00:19:24,520 כל המקום שלך הוא 10 10 לכוחו של אחד. 326 00:19:24,520 --> 00:19:26,600 שלך 100 מקום 10 לכח של שתיים. 327 00:19:26,600 --> 00:19:29,570 >> לא משנה מה בסיס שאתה הולך ב לעשות עם בדיוק את אותו הדבר, 328 00:19:29,570 --> 00:19:31,480 רק עם בסיס שונה. 329 00:19:31,480 --> 00:19:34,130 אז בינארי, כל מה שהוא בסיס שני. 330 00:19:34,130 --> 00:19:37,110 אתה הולך להמיר את כל ספרות לשני לכל כוח 331 00:19:37,110 --> 00:19:38,190 של ספרה ש. 332 00:19:38,190 --> 00:19:41,450 וכך, במובן זה, אנחנו יכול להיות דרך קלה יותר 333 00:19:41,450 --> 00:19:43,800 להיות מסוגל להוסיף או לסכם את כל המספרים כדי 334 00:19:43,800 --> 00:19:46,010 להמיר לבסיס 10. 335 00:19:46,010 --> 00:19:50,362 >> אז האם מישהו רוצה לספר לי מה תשובה לראשונה היא בבסיס עשר? 336 00:19:50,362 --> 00:19:51,674 >> קהל: שני, [לא ברור] 337 00:19:51,674 --> 00:19:52,340 פרופסור: כן. 338 00:19:52,340 --> 00:19:53,230 קהל: 42. 339 00:19:53,230 --> 00:19:56,560 פרופסור: 42, יש לך ללכת. 340 00:19:56,560 --> 00:20:00,660 אז יש לנו דרך תשובה זו הייתה על ידי עושה שתי הראשונים, שהוא שני. 341 00:20:00,660 --> 00:20:02,760 בתוספת שתי השלישי, שהוא שמונה. 342 00:20:02,760 --> 00:20:07,590 בתוספת שתי לחמישית, ש הוא כל מה שנשאר. 343 00:20:07,590 --> 00:20:09,390 אתה מסכם אותם וזה 42. 344 00:20:09,390 --> 00:20:12,000 >> האם מישהו מבולבל על איך הגיע לזה? 345 00:20:12,000 --> 00:20:15,630 בנוסף כל כך בסיסי, כמו אמרתי, אתה צריך להיות בסדר. 346 00:20:15,630 --> 00:20:17,410 אם לא, טוב, אנחנו יכולים לתרגל את זה גם. 347 00:20:17,410 --> 00:20:18,720 אבל זה בסדר. 348 00:20:18,720 --> 00:20:20,560 לְהִתְקַרֵר. 349 00:20:20,560 --> 00:20:25,570 >> האם מישהו רוצה לתת לי לענות לשנייה אחת, כמו גם? 350 00:20:25,570 --> 00:20:26,860 >> 50? 351 00:20:26,860 --> 00:20:27,600 טוֹב. 352 00:20:27,600 --> 00:20:30,044 כל אחד מבולבל על איך יש לנו כי גם? 353 00:20:30,044 --> 00:20:31,960 מגניב, יהיו לי תשובות בשקופית הבאה. 354 00:20:31,960 --> 00:20:34,440 אז אל דאגה, אם אתה צריך להעתיק אותו. 355 00:20:34,440 --> 00:20:38,860 >> אוקיי, אז הקסדצימלי הוא קצת יותר מסובך. 356 00:20:38,860 --> 00:20:41,840 אבל אני הולך להראות לכם קיצור עבור איך לעשות את זה. 357 00:20:41,840 --> 00:20:44,800 אז הקסדצימלי, כפי שאתה זוכר, את כל זה הוא להיות 16. 358 00:20:44,800 --> 00:20:48,920 ומכיוון שאנחנו כבני אדם לא ממש יש 16 מספרים לייצג ש, 359 00:20:48,920 --> 00:20:56,940 אנחנו הולכים מאפס לתשע, ש הראשונים 10 ערכים, ואז אנחנו עושים דרך F, 360 00:20:56,940 --> 00:20:58,630 שהם שישה הערכים הבאים. 361 00:20:58,630 --> 00:21:03,040 >> ולכן הדרך הקלה ביותר לצאת מ כל מספר בינארי הקסדצימלי 362 00:21:03,040 --> 00:21:05,350 הוא לשבור אותם לחצאים. 363 00:21:05,350 --> 00:21:10,042 וכך כל מספר בינארי שינתנו לי כנראה יהיה לך שמונה ספרות. 364 00:21:10,042 --> 00:21:11,750 אתה פשוט יכול לשבור אותם באמצע. 365 00:21:11,750 --> 00:21:17,460 >> אז הראשון one-- אחד אחד, אחד אחד, אחד, אחד, אחד אחד. 366 00:21:17,460 --> 00:21:21,340 סוג של לחשוב על זה, אתה יודע, לצייר קו נטוי או פסיק ביניהם. 367 00:21:21,340 --> 00:21:23,800 ואתה יכול פשוט להמיר ישירות מה 368 00:21:23,800 --> 00:21:26,670 זה הוא ראשון מספר הקסדצימלי, 369 00:21:26,670 --> 00:21:29,880 ומה כאן הוא השני של הקסדצימלי. 370 00:21:29,880 --> 00:21:37,584 >> אז זוכר מסימון נפוץ, מה ערכים הקסדצימליים מתחילים עם? 371 00:21:37,584 --> 00:21:38,460 >> קהל: אפס. 372 00:21:38,460 --> 00:21:39,270 >> פרופסור: 0x. 373 00:21:39,270 --> 00:21:45,210 אז אנחנו יודעים שכל פעם שאנחנו שואלים אותך להמיר כל מספר להקסדצימלי, 374 00:21:45,210 --> 00:21:48,230 או כל פעם שאתה רואה כל מספר שמתחיל עם 0x, 375 00:21:48,230 --> 00:21:50,230 אתה יודע שזה ערך הקסדצימלי. 376 00:21:50,230 --> 00:21:54,160 >> ואז אתה הולך לתתבקש לקבוע מה הן שתי ספרות אלה. 377 00:21:54,160 --> 00:21:59,690 והדרך בה אתה עושה את זה, הספירה עד שמחצית וספירה עד שמחצית. 378 00:21:59,690 --> 00:22:02,870 אז בדוגמא זו, מה ש היה אחד, אחד, אחד, אחד להיות? 379 00:22:02,870 --> 00:22:04,890 מה ערך שלא יהיה? 380 00:22:04,890 --> 00:22:06,040 זה יהיה F, נכון? 381 00:22:06,040 --> 00:22:08,050 זה יהיה 15. 382 00:22:08,050 --> 00:22:11,780 >> אז זה יהיה פ אחת, אחד, אחד, אחד כאן הוא גם 383 00:22:11,780 --> 00:22:21,270 פ אז אחד, אחד, אחד, אחד, אחד, אחד, אחד, אחד בהקסדצימלי, כל זה הוא 0XFF. 384 00:22:21,270 --> 00:22:25,350 בגלל המחצית מיוצגת F, הערך של 15, 385 00:22:25,350 --> 00:22:27,331 והמחצית מיוצגת F, הערך 15. 386 00:22:27,331 --> 00:22:29,456 כי תזכרו, אנחנו ספירה מאפס עד תשע. 387 00:22:29,456 --> 00:22:35,290 זה כמו 10, B הוא כמו 11, F הוא 15. 388 00:22:35,290 --> 00:22:41,690 >> האם זה הגיוני לכולם איך יש לנו מינארי הקסדצימלי? 389 00:22:41,690 --> 00:22:44,595 >> קהל: ואז איך אנחנו מקבלים 15 מאחד, אחד, אחד, אחד? 390 00:22:44,595 --> 00:22:46,220 פרופסור: כן, זה הוא בינארי, נכון? 391 00:22:46,220 --> 00:22:48,090 תארו לעצמכם שזה רק מספר בינארי. 392 00:22:48,090 --> 00:22:50,792 אז יש לך שני ל אפס, שהוא אחד. 393 00:22:50,792 --> 00:22:51,500 קהל: אה, בסדר. 394 00:22:51,500 --> 00:22:51,670 אז אתה פשוט תסתכם את זה. 395 00:22:51,670 --> 00:22:52,670 >> פרופסור: כן, ולאחר מכן אתה פשוט תסתכם ש. 396 00:22:52,670 --> 00:22:53,380 זה כל מה שזה. 397 00:22:53,380 --> 00:22:54,890 >> קהל: אישור. 398 00:22:54,890 --> 00:22:55,830 >> פרופסור: אישור. 399 00:22:55,830 --> 00:23:00,740 >> קהל: אז אתה הולך מינארי עשרוני הקסדצימלי ל? 400 00:23:00,740 --> 00:23:04,590 >> פרופסור: זה הדרך הקלה ביותר לעשות זאת, כן. 401 00:23:04,590 --> 00:23:11,390 אתה לא הולך לעשרוני כי עשרוני יש רק אפס לתשע. 402 00:23:11,390 --> 00:23:13,410 אנחנו רק סוג של פיצול זה עד לשתיים. 403 00:23:13,410 --> 00:23:15,201 >> קהל: [לא ברור] באמצעות עשרוני למצוא 404 00:23:15,201 --> 00:23:17,809 מה שהוא תואם בהקסדצימלי. 405 00:23:17,809 --> 00:23:20,100 פרופסור: אני מתכוון, אתה הספירה עד שימוש במתמטיקה בסיסית. 406 00:23:20,100 --> 00:23:20,725 קהל: כן. 407 00:23:20,725 --> 00:23:22,300 פרופסור: כן, פחות או יותר. 408 00:23:22,300 --> 00:23:23,630 זה קצת מבלבל. 409 00:23:23,630 --> 00:23:26,410 אבל פשוט יודע שאתה יכול לחלק את כל מה ש 410 00:23:26,410 --> 00:23:28,160 ערך זה הוא לרק חצאים. 411 00:23:28,160 --> 00:23:29,570 תראה, מה זה בינארי? 412 00:23:29,570 --> 00:23:30,610 מה מספר זה? 413 00:23:30,610 --> 00:23:33,270 זה הולך להיות משהו מאפס לפ 414 00:23:33,270 --> 00:23:35,722 >> כאן הוא גם הולך להיות משהו מאפס לפ 415 00:23:35,722 --> 00:23:37,722 ואז אתה יכול פשוט לשים אלה שני ממש שם. 416 00:23:37,722 --> 00:23:38,263 >> קהל: אישור. 417 00:23:38,263 --> 00:23:38,910 פרופסור: כן. 418 00:23:38,910 --> 00:23:39,410 אוקיי. 419 00:23:39,410 --> 00:23:42,320 אז אתם רוצים תנסה הבא לאחר מכן? 420 00:23:42,320 --> 00:23:49,601 אפס, אחד, אפס אחד, אחד, אפס, אחד אפס. 421 00:23:49,601 --> 00:23:52,350 אני אתן לך בחורים כמו 30 שניות, מאז שאתה כנראה לא יודע 422 00:23:52,350 --> 00:23:53,850 הטריק איך לעשות את זה קודם לכן. 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> אישור, מישהו רוצה לקבל את זה ירה? 425 00:24:27,381 --> 00:24:28,774 >> 0X5A. 426 00:24:28,774 --> 00:24:29,440 פרופסור: 0X5A. 427 00:24:29,440 --> 00:24:30,470 5a. 428 00:24:30,470 --> 00:24:31,340 טוֹב. 429 00:24:31,340 --> 00:24:37,050 אז זה כאן היה להיות-- אתה רוצה לספר לנו איך אתה הבנת את זה? 430 00:24:37,050 --> 00:24:38,920 ראשית, איך אתה מקבל את חמש? 431 00:24:38,920 --> 00:24:42,030 >> קהל: בגלל אפס, אחד, אפס, אחד הוא חמש. 432 00:24:42,030 --> 00:24:45,170 >> פרופסור: האם כולם מבינים מדוע אפס, אחד, אפס, אחד הוא חמש? 433 00:24:45,170 --> 00:24:46,260 יש לך כאן. 434 00:24:46,260 --> 00:24:48,010 יש לך שום דבר בשני לראשון. 435 00:24:48,010 --> 00:24:50,300 בשני לשני, אתה יש אחד, שהוא ארבעה. 436 00:24:50,300 --> 00:24:52,600 אז אתה מוסיף עוד ארבעה אחד, יש לך חמש. 437 00:24:52,600 --> 00:24:53,600 כולם טובים? 438 00:24:53,600 --> 00:24:54,100 אוקיי. 439 00:24:54,100 --> 00:24:56,570 ואז מה זה היה ולמה? 440 00:24:56,570 --> 00:24:58,350 מה מספר אינו מתאים ל? 441 00:24:58,350 --> 00:24:59,350 >> קהל: 10. 442 00:24:59,350 --> 00:25:00,976 >> פרופסור: ומה זה בבסיס שני? 443 00:25:00,976 --> 00:25:01,850 קהל: [לא ברור] 444 00:25:01,850 --> 00:25:03,010 פרופסור: בדיוק. 445 00:25:03,010 --> 00:25:06,370 אז ערך שני זה כאן יהיה 0X5A. 446 00:25:06,370 --> 00:25:08,410 >> כולם טוב על איך להמיר? 447 00:25:08,410 --> 00:25:10,770 זה הרבה יותר פשוט ממה שאתה חושב שזה. 448 00:25:10,770 --> 00:25:13,330 אני רק רוצה לוודא אתה יודע עצות מועילות 449 00:25:13,330 --> 00:25:14,950 וטריקים לאיך לעשות את זה. 450 00:25:14,950 --> 00:25:18,432 >> קהל: למה אתה יכול רק לפצל זה באמצע כזה? 451 00:25:18,432 --> 00:25:21,390 רק להיות כמו, אישור, אני רק הולך ל אכפת [לא ברור] ראשון אלה? 452 00:25:21,390 --> 00:25:24,240 >> פרופסור: כי זה בעצם דרך ערכים הקסדצימליים מיוצגים. 453 00:25:24,240 --> 00:25:26,890 0x, שפירושו למעשה שום דבר אחר מאשר אומר לך 454 00:25:26,890 --> 00:25:28,710 שזה מספר הקסדצימלי. 455 00:25:28,710 --> 00:25:31,580 וזה תמיד מייצג ארבע הספרות הראשונות. 456 00:25:31,580 --> 00:25:34,330 וזה תמיד מייצג ארבע הספרות האחרונה. 457 00:25:34,330 --> 00:25:37,835 וכך שתי ספרות אלה רק מתאים לביטים שונים. 458 00:25:37,835 --> 00:25:39,200 >> קהל: אז אנו תמיד-- 459 00:25:39,200 --> 00:25:41,830 >> פרופסור: אתה תמיד הולך לקבל שמונה סיביות ערך. 460 00:25:41,830 --> 00:25:44,580 >> קהל: האם זה בדיוק כמו דבר כאן או שדבר בכל רחבי? 461 00:25:44,580 --> 00:25:46,883 פרופסור: זה פשוט דבר במחשבים, כן. 462 00:25:46,883 --> 00:25:47,424 קהל: אישור. 463 00:25:47,424 --> 00:25:48,240 מדהים. 464 00:25:48,240 --> 00:25:51,290 >> פרופסור: כן, כך בדוגמא זו אנחנו יומרו בינארי עשרוני, 465 00:25:51,290 --> 00:25:53,290 ומינארי הקסדצימלי. 466 00:25:53,290 --> 00:25:56,610 אתם רוצים לוודא שאתה גם לתרגל הולך להיפך. 467 00:25:56,610 --> 00:26:03,370 אז אם נתתי לך 0XFF, אתה יכול לצייר את זה בינארי, נכון? 468 00:26:03,370 --> 00:26:06,820 >> אתה להמיר F לינארי, שהוא אחד, אחד, אחד, אחד, 469 00:26:06,820 --> 00:26:09,380 להמיר F לינארי, ש הוא אחד, אחד, אחד, אחד. 470 00:26:09,380 --> 00:26:11,310 >> אז אנו עשויים לבקש ממך לעשות להיפך. 471 00:26:11,310 --> 00:26:14,817 אז עשרוני בינארי, או הקסדצימלי לינארי. 472 00:26:14,817 --> 00:26:16,650 אז אתה רוצה לעשות בטוח שאתה יודע לשני כיוונים. 473 00:26:16,650 --> 00:26:19,371 אנחנו בטח שואלים אותך שילוב של שתיים. 474 00:26:19,371 --> 00:26:20,660 >> כן, יש לך שאלה? 475 00:26:20,660 --> 00:26:22,724 אני יכול see-- אתה טוב? 476 00:26:22,724 --> 00:26:23,348 קהל: כן. 477 00:26:23,348 --> 00:26:24,560 פרופסור: אישור. 478 00:26:24,560 --> 00:26:26,101 האם אני טוב למחוק זה? 479 00:26:26,101 --> 00:26:26,600 גדול. 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> בסדר, אז תשובות נמצאות כאן אם מישהו הוא סקרן מאוחר יותר ומתבלבל. 482 00:26:40,437 --> 00:26:41,844 אוקיי. 483 00:26:41,844 --> 00:26:46,070 >> קהל: האם זה משנה אם אנחנו שמים המכתבים שלנו בבירה או באותיות קטנות? 484 00:26:46,070 --> 00:26:50,360 >> פרופסור: הוא עושה, כי בהקסדצימלי, על ידי אמנה, 485 00:26:50,360 --> 00:26:52,840 כל הדמויות הן באותיות רישיות. 486 00:26:52,840 --> 00:26:54,650 אז דרך F הם הולך להיות באותיות גדולות. 487 00:26:54,650 --> 00:26:58,660 אם אתה שם את אותיות קטנות, אני לא יודע אם היינו בהכרח מסמן את זה לא נכון. 488 00:26:58,660 --> 00:27:00,679 אבל באופן תיאורטי, זה לא מבחינה טכנית 489 00:27:00,679 --> 00:27:01,970 איך אתה אמור לקבל את זה. 490 00:27:01,970 --> 00:27:03,303 אז כל מה שהם צריכים להיות באותיות גדולות. 491 00:27:03,303 --> 00:27:05,910 כן, שאלה טובה. 492 00:27:05,910 --> 00:27:07,780 >> אוקיי. 493 00:27:07,780 --> 00:27:08,790 שאלה שנייה. 494 00:27:08,790 --> 00:27:12,750 לשקול תכנית יפה זה כאן. 495 00:27:12,750 --> 00:27:15,180 אני אשאל את השאלה, אני אחזור זה. 496 00:27:15,180 --> 00:27:23,170 >> אז, קודם כל, מה שבפנים לסטנדרטים של io.h זה עניין לתכנית? 497 00:27:23,170 --> 00:27:26,640 שנית, מה שעושה חלל לסמן בקו שלוש? 498 00:27:26,640 --> 00:27:30,572 ושלישית, מה חוזר אפס מ עיקרי, כקו שש, בדרך כלל מסמן? 499 00:27:30,572 --> 00:27:33,280 אם אתם רוצים לכתוב אותם למטה, מאז שיש לי לחזור 500 00:27:33,280 --> 00:27:36,810 לשקופית רק כדי שתוכל לראות את הקוד. 501 00:27:36,810 --> 00:27:40,400 זוהי דוגמא של, כמו, אולי שאלה ברמה גבוהה יותר שבו אנו מבקשים מכם 502 00:27:40,400 --> 00:27:42,435 מה משמעות דברים בתכנית. 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> כולם טובים בשבילי לחזור לשקופית? 505 00:27:49,215 --> 00:27:53,400 506 00:27:53,400 --> 00:27:54,361 בסדר מגניב. 507 00:27:54,361 --> 00:27:57,610 אז אני אתן לך בחורים כמו אולי שלוש דקות להסתכל מהיר אמיתי זה אחד. 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> אוקיי, אז זה כמו אחד של קל למדי, מבחינה רעיונית. 510 00:28:44,140 --> 00:28:49,280 האם מישהו רוצה לספר לי מה ראשון בתוך ידי חשיש כולל 511 00:28:49,280 --> 00:28:52,630 קובץ ספריית io.h הסטנדרטי? 512 00:28:52,630 --> 00:28:55,510 למה אנחנו צריכים ספרייה ש כלול בתכנית זו? 513 00:28:55,510 --> 00:28:56,930 מה כאן אנחנו צריכים את זה? 514 00:28:56,930 --> 00:28:56,980 >> כֵּן? 515 00:28:56,980 --> 00:28:58,340 >> קהל: האם שכאשר אתה שם את printf ש? 516 00:28:58,340 --> 00:28:59,131 >> פרופסור: בדיוק. 517 00:28:59,131 --> 00:29:01,780 אז printf, בכל עת ש לקחת קלט מהמשתמש 518 00:29:01,780 --> 00:29:04,140 ומשהו הדפסה למסך, זה 519 00:29:04,140 --> 00:29:05,600 הקלט הסטנדרטי, ספריית פלט. 520 00:29:05,600 --> 00:29:07,170 תחשוב על זה שway-- קלט, פלט. 521 00:29:07,170 --> 00:29:08,430 >> האם יש לי פלט? 522 00:29:08,430 --> 00:29:09,207 כן אני כן. 523 00:29:09,207 --> 00:29:12,040 אז אני יודע שאני תמיד הולך ל צריך ספריית i.o תקנן. 524 00:29:12,040 --> 00:29:16,400 >> אז printf היא הפונקציה על ידי שאנחנו צריכים לגשת ל 525 00:29:16,400 --> 00:29:19,370 וhashtag כולל ספריית i.o סטנדרטית. 526 00:29:19,370 --> 00:29:20,280 אוקיי. 527 00:29:20,280 --> 00:29:22,660 >> שנית, זה מה החלל מסמן? 528 00:29:22,660 --> 00:29:26,970 יש לנו int הראשי (void), מה עושה לבטל כאן אומר כאן על קו שלוש? 529 00:29:26,970 --> 00:29:28,080 כן, בחלק האחורי. 530 00:29:28,080 --> 00:29:29,020 >> קהל: [לא ברור] 531 00:29:29,020 --> 00:29:29,920 >> פרופסור: בדיוק. 532 00:29:29,920 --> 00:29:33,320 אז לזכור, שלמדנו מתחיל עם pset 533 00:29:33,320 --> 00:29:35,360 כי למעשה אתה יכול לציין שורת הפקודה 534 00:29:35,360 --> 00:29:39,010 טיעונים שהתכנית שלך, כי אתה פונקציה העיקרית, כפי שאתה לוקח, למשתמש, 535 00:29:39,010 --> 00:29:39,650 קורא לזה. 536 00:29:39,650 --> 00:29:42,650 אם יש לנו חלל, זה אומר שאתה יכול פשוט להפעיל את התכנית באופן ישיר 537 00:29:42,650 --> 00:29:44,680 ללא כל טיעוני שורת הפקודה. 538 00:29:44,680 --> 00:29:46,160 כולם ברור שב? 539 00:29:46,160 --> 00:29:46,660 אוקיי. 540 00:29:46,660 --> 00:29:52,850 >> ולבסוף למה אנחנו עושים את דבר זה תשואת אפס כאן? 541 00:29:52,850 --> 00:29:54,740 למה יש לנו אפילו עיקרי int? 542 00:29:54,740 --> 00:29:57,330 למה לא יכול פשוט יש לנו חלל מרכזי חלל? 543 00:29:57,330 --> 00:29:59,216 כֵּן? 544 00:29:59,216 --> 00:30:01,590 קהל: רק כך שאנו יכולים להיות בטוח שהתכנית היא 545 00:30:01,590 --> 00:30:04,247 יציאה בהצלחה, כפי ש בניגוד לאם זה היה ממוספר. 546 00:30:04,247 --> 00:30:06,580 והיינו יודעים שזה סוג אחר של שגיאה. 547 00:30:06,580 --> 00:30:07,621 >> פרופסור: כן, בדיוק. 548 00:30:07,621 --> 00:30:10,670 זה רק מאוד דבר קונבנציונלי שאנחנו עושים, 549 00:30:10,670 --> 00:30:13,840 הוא שרק בסוף התכנית שלך, רק כדי לוודא ש 550 00:30:13,840 --> 00:30:15,830 שתפקידו העיקרי שלך פועל בצורה נכונה, 551 00:30:15,830 --> 00:30:17,940 אנחנו תמיד רוצים לעשות תשואה אפס. 552 00:30:17,940 --> 00:30:21,160 למרות שדווקא אנחנו רשאי לא רואה את זה בכל מקום מודפס. 553 00:30:21,160 --> 00:30:25,092 >> כי כמו מתכנתים, אתה יודע, אם יש לך קווים רבים ושונים של קוד 554 00:30:25,092 --> 00:30:27,050 ואתה לא יודע איפה אלה הולכים בסדר, 555 00:30:27,050 --> 00:30:30,240 ואם שגיאה קורה אתה רוצה לוודא שאתה מקבל שגיאה ש. 556 00:30:30,240 --> 00:30:33,240 וכך בדרך כלל אם משהו בסדר תהיה לנו תשואה של אחד פשוט 557 00:30:33,240 --> 00:30:34,669 כדי לוודא שאנחנו יודעים שזה. 558 00:30:34,669 --> 00:30:36,460 אז אם אתה רואה תמורה אפס, כי בדרך כלל, 559 00:30:36,460 --> 00:30:38,293 משמעות התכנית שלך היא להורג בהצלחה. 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 טוֹב? 562 00:30:40,990 --> 00:30:45,180 563 00:30:45,180 --> 00:30:45,680 לְהִתְקַרֵר. 564 00:30:45,680 --> 00:30:48,710 565 00:30:48,710 --> 00:30:52,680 >> אישור, תכנית שנייה כאן. 566 00:30:52,680 --> 00:30:54,827 תחשוב על זה. 567 00:30:54,827 --> 00:30:56,910 ואם אתם רואים לצוף, אתם כנראה יכולים 568 00:30:56,910 --> 00:31:00,810 יש לי רעיון טוב של מה ש אני עומד לשאול אותך. 569 00:31:00,810 --> 00:31:05,200 >> לכן, כאשר תכנית זו מבצע, כמו שאתה יכול לראות, 570 00:31:05,200 --> 00:31:09,330 אני מכריז על מצוף בתוך הפונקציה העיקרית שלי. 571 00:31:09,330 --> 00:31:13,470 אני שיום זה "ענה," ואני הגדרה ששווה לאחד חלקי 10. 572 00:31:13,470 --> 00:31:17,860 אני מדפיס את, לאחד מקום עשרוני, לצוף ש. 573 00:31:17,860 --> 00:31:19,880 ואז אני חוזר לאפס. 574 00:31:19,880 --> 00:31:24,470 >> לכן, כאשר ביצוע התכנית, חושב לחזור לחמדנים עכשיו, 575 00:31:24,470 --> 00:31:26,550 תכנית זו מדפיסה 0.0. 576 00:31:26,550 --> 00:31:29,993 כפי שכולנו יודעים, אני מקווה שכולנו יודע, אחד מחולק 10 הוא לא 0.00, 577 00:31:29,993 --> 00:31:32,350 זה 0.1. 578 00:31:32,350 --> 00:31:37,810 אבל להסביר מדוע תכנית זו חושבת כי 1 מחולק 10 הדפסים 0.1 אחרים 579 00:31:37,810 --> 00:31:39,504 מ -0.1? 580 00:31:39,504 --> 00:31:42,545 אני אתן לכם אולי כמו 30 שניות לחשוב רק על מהירות ש 581 00:31:42,545 --> 00:31:43,878 ואני אחזור לתכנית. 582 00:31:43,878 --> 00:32:17,800 583 00:32:17,800 --> 00:32:20,290 >> אוקיי. 584 00:32:20,290 --> 00:32:22,205 כל אחד רוצה לתת לזה סיכוי? 585 00:32:22,205 --> 00:32:24,330 בשלושה משפטים או פחות, כי בדרך כלל אנחנו 586 00:32:24,330 --> 00:32:27,650 הולך להגביל את כל התשובות לשלושה משפטים או פחות 587 00:32:27,650 --> 00:32:31,130 כך שאתה לא רק להקיא דברים אקראיים על החידון שלך. 588 00:32:31,130 --> 00:32:32,740 >> כן, לקחת זריקה. 589 00:32:32,740 --> 00:32:36,390 >> קהל: אז אני חושב שיש את זה דבר שנקרא, כמו, [לא ברור] 590 00:32:36,390 --> 00:32:42,320 אז אולי יש, למשל, ייתכן שיש, כמו, 0.09, 591 00:32:42,320 --> 00:32:47,250 שבו אתה מדפיס ראשון ספרה, זה יהיה ל 0.0? 592 00:32:47,250 --> 00:32:49,100 >> פרופסור: לסגור, לא ממש. 593 00:32:49,100 --> 00:32:49,810 Christabell? 594 00:32:49,810 --> 00:32:51,770 >> קהל: אתה החלוקה אחד ו 10, ושניהם מספרים שלמים. 595 00:32:51,770 --> 00:32:54,610 ולכן הדרך שזה הולך לאחסן אותו הוא כמספר שלם. 596 00:32:54,610 --> 00:32:56,480 וכך השלם הקרוב יהיו 0.0. 597 00:32:56,480 --> 00:32:57,471 ואז זה 0.1. 598 00:32:57,471 --> 00:32:58,970 פרופסור: כן, זה ממש טוב. 599 00:32:58,970 --> 00:33:00,040 זו התשובה הנכונה. 600 00:33:00,040 --> 00:33:03,597 אז זה מאוד מבלבל מושג להרבה ילדים. 601 00:33:03,597 --> 00:33:06,680 ואני באמת רוצה לוודא ש זה חיזק בראש של כולם. 602 00:33:06,680 --> 00:33:10,090 >> אז מה שאנו מכנים צפים חוסר דיוק נקודה, 603 00:33:10,090 --> 00:33:12,800 שבו הסיבה מדוע הרבה התוכניות שלך בחמדנים 604 00:33:12,800 --> 00:33:17,010 לא עבדו בהתחלה היה כי שכחת להטיל משתנה. 605 00:33:17,010 --> 00:33:19,370 אז מה Christabell אמר היה נכון לחלוטין. 606 00:33:19,370 --> 00:33:21,990 >> לצוף הוא מטבעו לא מדויק. 607 00:33:21,990 --> 00:33:26,400 כי במחשב, נכון, יש לנו כמות סופית של ביטים של זיכרון 608 00:33:26,400 --> 00:33:28,480 אנחנו יכולים להשתמש בו כדי לייצג מספרים. 609 00:33:28,480 --> 00:33:33,480 כך, למשל, מזהה CS50 זה הוא-- אני חושב שזה מחשב של 64 סיביות. 610 00:33:33,480 --> 00:33:37,520 >> לצוף יכול להיות מיוצג רק על ידי כמות סופית של ביטים אלה. 611 00:33:37,520 --> 00:33:42,260 וכך 0.1 עם אפסים אינסופיים, שהיה של 0.1 הוא, נכון? 612 00:33:42,260 --> 00:33:45,450 אבל אנחנו לא ממש יכולים לאחסן מספר שבמחשב שלנו. 613 00:33:45,450 --> 00:33:47,810 פשוט אין לנו מספיק זיכרון כדי לעשות זאת. 614 00:33:47,810 --> 00:33:52,340 >> וכך הקירוב הקרוב ביותר מה ששמור בזיכרון הוא למעשה 615 00:33:52,340 --> 00:33:55,390 משהו כמו 0.000 משהו, משהו, משהו, משהו. 616 00:33:55,390 --> 00:34:01,240 אשר, ברגע שאתה לחתוך זה, סיבובים עד 0.0. 617 00:34:01,240 --> 00:34:05,640 >> וכך דוגמא זו היא רק אחד שמדגים המון בעיות 618 00:34:05,640 --> 00:34:08,469 יש לנו בכל פעם שאנחנו מנסה לעשות מתמטיקה באופן שגוי 619 00:34:08,469 --> 00:34:11,000 ללא ליהוק כמספר שלם שונה. 620 00:34:11,000 --> 00:34:14,870 אז רק להיזהר שזה יקרה. 621 00:34:14,870 --> 00:34:18,239 >> על חידונים, אם אנחנו נותנים לך בלוק של קוד וזה כמו, 622 00:34:18,239 --> 00:34:19,510 מה מדפיס בסוף? 623 00:34:19,510 --> 00:34:24,096 ואם זה כמה ערך האקראי אתם צריכים לדעת למה שקורה. 624 00:34:24,096 --> 00:34:24,909 כֵּן? 625 00:34:24,909 --> 00:34:27,926 >> קהל: לחתוך הוא להיפטר מ כל מה שאחרי נקודה מסוימת? 626 00:34:27,926 --> 00:34:28,513 [לא ברור] 627 00:34:28,513 --> 00:34:30,929 פרופסור: כן, אז בעצם זו דוגמא ממש רעה, 628 00:34:30,929 --> 00:34:37,870 משום מה דווקא 0.100 היה לחתוך עד 0.1. 629 00:34:37,870 --> 00:34:41,389 אבל אם היית לרוץ it-- אני לא זוכר, כי בשנה שעברה הם 630 00:34:41,389 --> 00:34:42,830 ניהל אותו בתכנית אחרת. 631 00:34:42,830 --> 00:34:45,300 הם ניהלו אותו במשהו שנקראים CS50 Appliance, ש 632 00:34:45,300 --> 00:34:46,389 הוא שונה מזיהוי. 633 00:34:46,389 --> 00:34:48,520 זה היה מערכת של 32 סיביות, אני חושב. 634 00:34:48,520 --> 00:34:50,290 וכך היו מספרים שונים. 635 00:34:50,290 --> 00:34:53,330 >> אבל בעצם, רק יודע ש כל הרעיון של חיתוך 636 00:34:53,330 --> 00:34:54,815 ואיך זה בדיוק חותך את דברים. 637 00:34:54,815 --> 00:34:55,690 ואז אם זה rounds-- 638 00:34:55,690 --> 00:34:56,300 >> קהל: ללא עיגול. 639 00:34:56,300 --> 00:34:57,370 >> פרופסור: בדיוק. 640 00:34:57,370 --> 00:34:57,870 כֵּן. 641 00:34:57,870 --> 00:35:02,330 642 00:35:02,330 --> 00:35:04,380 לְהִתְקַרֵר. 643 00:35:04,380 --> 00:35:05,250 >> היי, בחלק האחורי. 644 00:35:05,250 --> 00:35:07,634 אנחנו רק הולכים על כמה שאלות סקירת חידון. 645 00:35:07,634 --> 00:35:08,430 >> בסדר. 646 00:35:08,430 --> 00:35:10,150 אז לשקול תכנית אחרת כאן. 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 אני הולך לתת לכם כמה דקות כדי לקרוא על זה. 649 00:35:15,380 --> 00:35:18,588 זה משהו שהיה למאוד לאחרונה שאני חושב שפוצצתי הרבה 650 00:35:18,588 --> 00:35:19,142 מוחם של הבחורים. 651 00:35:19,142 --> 00:35:21,100 אבל אנחנו הולכים לדבר באמצעות זה שוב רק 652 00:35:21,100 --> 00:35:24,152 כדי לוודא שאתה מבין את זה לחלוטין. 653 00:35:24,152 --> 00:35:24,652 אוקיי. 654 00:35:24,652 --> 00:35:41,280 655 00:35:41,280 --> 00:35:41,780 אוקיי. 656 00:35:41,780 --> 00:35:44,342 כל אחד זקוק ליותר זמן כדי לקרוא את הקוד הזה? 657 00:35:44,342 --> 00:35:45,650 אוקיי. 658 00:35:45,650 --> 00:35:50,630 >> לכן נראה לי ש בתכנית זו אני 659 00:35:50,630 --> 00:35:53,460 יצירת שתי מחרוזות באמצעות GetString. 660 00:35:53,460 --> 00:35:55,180 אחד של בשם ואחד נקרא T. 661 00:35:55,180 --> 00:35:58,680 ואם הם שווים שווה זה לזה, 662 00:35:58,680 --> 00:36:00,880 זה צריך להדפיס "אתה הקלד את אותו הדבר. " 663 00:36:00,880 --> 00:36:04,170 >> אבל elsewise, זה יהיה להדפיס, "אתה הקליד דברים שונים ", נכון? 664 00:36:04,170 --> 00:36:05,990 נראה מאוד, מאוד פשוט. 665 00:36:05,990 --> 00:36:08,720 אבל, עם זאת, אם אני באמת מנסה לכתוב תכנית זו, 666 00:36:08,720 --> 00:36:12,230 נראה כי גם כאשר אני הקלט המדויק אותו מחרוזות, 667 00:36:12,230 --> 00:36:15,490 זה עדיין מדפיס, "אתה הקליד דברים שונים! " 668 00:36:15,490 --> 00:36:18,020 האם מישהו רוצה לקחת ירה לעבר מדוע תכנית זו תמיד 669 00:36:18,020 --> 00:36:20,370 מגיב כי התשומות שונים, אפילו 670 00:36:20,370 --> 00:36:22,090 כאשר המילים עצמן הן אותו הדבר? 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> אז אם הייתי input-- אהבת דוד להשתמש דוגמא כמו אמא, נכון? 673 00:36:29,170 --> 00:36:37,890 האותיות הקטנות M-O-M עבור S, T שווה M-O-M קטנה. 674 00:36:37,890 --> 00:36:40,340 אם רצתי זה דרך קוד ש, למה שזה 675 00:36:40,340 --> 00:36:44,180 להדפיס את "שהקלדת דברים שונים?" 676 00:36:44,180 --> 00:36:46,336 >> האם מישהו צריך יותר זמן לחשוב על זה? 677 00:36:46,336 --> 00:36:47,294 בסדר, אני חושב שאנחנו טובים. 678 00:36:47,294 --> 00:36:48,716 כֵּן? 679 00:36:48,716 --> 00:36:53,930 >> קהל: בסדר, אז זה משהו על שבו הוא מאוחסן בזיכרון, נכון? 680 00:36:53,930 --> 00:36:54,890 >> פרופסור: כן. 681 00:36:54,890 --> 00:37:00,400 >> קהל: איפה זה כמו, אם זה מחרוזת של מאוחסן בזיכרון spot-- 682 00:37:00,400 --> 00:37:01,689 אני ממציא זה-- הוא אפס. 683 00:37:01,689 --> 00:37:02,355 פרופסור: בטח. 684 00:37:02,355 --> 00:37:05,290 קהל: ולא מחרוזת מאוחסן במקום זיכרון, 685 00:37:05,290 --> 00:37:11,000 כמו, 167, ולאחר מכן אפס לא שווה 167. 686 00:37:11,000 --> 00:37:12,610 >> פרופסור: בדיוק. 687 00:37:12,610 --> 00:37:18,350 אוקיי, אז זוכר את זה מדהים התגלות שהסברנו לך חבר ' 688 00:37:18,350 --> 00:37:21,530 בשבוע שעבר, ש מחרוזות לא באמת קיימות? 689 00:37:21,530 --> 00:37:25,380 כאשר אנו יוצרים משהו שנקרא מחרוזת אנחנו, במציאות, 690 00:37:25,380 --> 00:37:29,330 יצירת משהו שנקרא כוכב char. 691 00:37:29,330 --> 00:37:34,470 שכל זה הוא הוא מצביע ל מחרוזת או למערך של תווים. 692 00:37:34,470 --> 00:37:39,480 >> וכך, בדוגמא זו, אם אני היו לקלט M-O-M הדרך 693 00:37:39,480 --> 00:37:49,350 כי המחשב שלי היה לאחסן אותו הוא בתוך קו נטוי זיכרון אפס, נכון? 694 00:37:49,350 --> 00:37:53,180 אלה ארבעה דמויות, תווים, יהיה מאוחסן במקום כלשהו. 695 00:37:53,180 --> 00:37:59,290 >> ואז אלה ארבעה דמויות, קו נטוי אפס, 696 00:37:59,290 --> 00:38:01,275 מאוחסנים במקום אחר, נכון? 697 00:38:01,275 --> 00:38:04,685 אין לי מושג איפה את הכתובות הם, שהם אי שם במחשב שלי. 698 00:38:04,685 --> 00:38:07,080 אבל אני לא יודע בדיוק היכן הם נמצאים. 699 00:38:07,080 --> 00:38:10,170 >> כאשר אני יוצר מחרוזת ים, כל מה שבאמת 700 00:38:10,170 --> 00:38:15,550 הוא מצביע ל להתחיל של מחרוזת זו. 701 00:38:15,550 --> 00:38:21,130 וכאשר אני יוצר ערך לא זה, כל מה שהוא מצביע לכאן. 702 00:38:21,130 --> 00:38:23,980 וכך, כאשר אתה מנסה להשוות ולבדוק 703 00:38:23,980 --> 00:38:27,710 כדי לראות אם זה הוא שווים שווה לt, המחשב 704 00:38:27,710 --> 00:38:31,635 הוא באמת רק חוזר ל שלך את הכתובת של מטר זה 705 00:38:31,635 --> 00:38:33,390 ואת הכתובת של מטר ש. 706 00:38:33,390 --> 00:38:36,230 ובגלל שהם שני פיסות מידע נפרדות 707 00:38:36,230 --> 00:38:38,750 המאוחסנים בשני שונה כתובות במחשב שלך, 708 00:38:38,750 --> 00:38:41,750 המחשב מעולם לא הולך מזהה אותם כזהה. 709 00:38:41,750 --> 00:38:43,500 האם מישהו רוצה לתת זריקה במה שאנחנו 710 00:38:43,500 --> 00:38:46,900 היית צריך לעשות אם אנחנו רוצים לתקן זה ויש לי תכנית ריצה נכונה 711 00:38:46,900 --> 00:38:49,360 במקום? 712 00:38:49,360 --> 00:38:52,070 תחשוב על זה לכמה שניות. 713 00:38:52,070 --> 00:38:54,929 מה אנחנו צריכים לשנות ל לקבל תפקוד תכנית זו 714 00:38:54,929 --> 00:38:56,220 כפי שאנחנו רוצים אותו לתפקד? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> כן, רוצה לקחת דקירה על זה? 717 00:39:18,918 --> 00:39:24,082 >> קהל: האם אנחנו יכולים לנסות dereference מצביע ולבדוק באמצעות המערך? 718 00:39:24,082 --> 00:39:25,540 פרופסור: זאת דרך אחת לעשות את זה. 719 00:39:25,540 --> 00:39:27,880 אז, מה השם שלך שוב? 720 00:39:27,880 --> 00:39:29,010 אני מצטער, מזכיר לי. 721 00:39:29,010 --> 00:39:29,589 >> זי: זי. 722 00:39:29,589 --> 00:39:32,130 פרופסור: כן, אז מה זי הציע היה בהחלט לעבוד. 723 00:39:32,130 --> 00:39:32,629 יָמִינָה? 724 00:39:32,629 --> 00:39:35,730 אנחנו יכולים dereference המצביע ובעצם ללכת וגישה 725 00:39:35,730 --> 00:39:38,460 נתונים הפיזיים בתוך כאן. 726 00:39:38,460 --> 00:39:40,300 ואנחנו יכולים רק להשוות כל המסך. 727 00:39:40,300 --> 00:39:43,670 >> אנחנו יכולים לומר, בסדר, מצביע, תן לי את מה שבפנים כאן. 728 00:39:43,670 --> 00:39:44,960 זה יחזור מ '. 729 00:39:44,960 --> 00:39:47,168 והייתי אומר, מצביע, תן לי את מה שבפנים כאן. 730 00:39:47,168 --> 00:39:47,750 חזור מ '. 731 00:39:47,750 --> 00:39:48,410 האם המשחק האלה? 732 00:39:48,410 --> 00:39:49,410 כֵּן. 733 00:39:49,410 --> 00:39:50,340 אז אנחנו עוברים. 734 00:39:50,340 --> 00:39:54,240 >> אנחנו ממשיכים לבדוק את כל שני מחרוזות כל הדרך עד הסוף 735 00:39:54,240 --> 00:39:56,635 ולראות אם אלה הם שווים, אם כל הערכים שווים. 736 00:39:56,635 --> 00:39:59,680 ואם כל הערכים שווים, אז אנחנו יודעים בחוטים נכונים. 737 00:39:59,680 --> 00:40:01,600 בהחלט, זה איך היינו עושה את זה? 738 00:40:01,600 --> 00:40:03,930 >> האם מישהו מבולבל על כל זה? 739 00:40:03,930 --> 00:40:06,970 מושג איך מחרוזות השלמה הם באמת רק מצביעים, 740 00:40:06,970 --> 00:40:08,440 ואיך הם לא באמת קיימים? 741 00:40:08,440 --> 00:40:10,480 ולמה אנחנו מקבלים שגיאות כמו הדרך בה אנו מבינים את זה? 742 00:40:10,480 --> 00:40:15,070 כי אני מבטיח לכם, מצביעים והקצאת מחרוזת וזיכרון 743 00:40:15,070 --> 00:40:16,470 הולכים לבוא. 744 00:40:16,470 --> 00:40:17,410 >> כֵּן? 745 00:40:17,410 --> 00:40:21,072 >> קהל: [לא ברור] dereference זה, אתה פשוט לשים כוכב [לא ברור] 746 00:40:21,072 --> 00:40:21,780 פרופסור: מימין. 747 00:40:21,780 --> 00:40:28,430 אז לderererence אמצעי מצביע ללכת לכתובת זו של המצביע 748 00:40:28,430 --> 00:40:30,390 ולקבל את הנתונים, הערך שם. 749 00:40:30,390 --> 00:40:32,700 והדרך לעשות זאת היא מצביע כוכב. 750 00:40:32,700 --> 00:40:34,262 אל תבלבל את זה. 751 00:40:34,262 --> 00:40:35,186 >> קהל: [לא ברור]. 752 00:40:35,186 --> 00:40:35,852 >> פרופסור: כן. 753 00:40:35,852 --> 00:40:39,750 קהל: אז אתה יכול פשוט לכתוב אם לא הכוכב השווה שווה של הכוכב. 754 00:40:39,750 --> 00:40:40,630 >> פרופסור: ובכן, לא. 755 00:40:40,630 --> 00:40:40,960 לֹא. 756 00:40:40,960 --> 00:40:41,640 >> קהל: זה לא מספיק טוב, נכון? 757 00:40:41,640 --> 00:40:43,760 >> פרופסור: זה לא, כי אתה רק בדיקת המכתב הראשון. 758 00:40:43,760 --> 00:40:46,010 אתה כנראה הולך ל צריך סוג של לולאה ש 759 00:40:46,010 --> 00:40:49,055 סובב בין כל דמות בשתי המחרוזות. 760 00:40:49,055 --> 00:40:49,837 כֵּן. 761 00:40:49,837 --> 00:40:52,920 אז אם אתה רוצה רק כדי לבדוק אם הם התחילו עם אותו הדבר, 762 00:40:52,920 --> 00:40:58,220 אתה יכול לעשות אם, כוכב ים הוא שווה לא כוכב. 763 00:40:58,220 --> 00:41:01,300 אז אתה יודע שלפחות הם התחיל עם אותה הדמות. 764 00:41:01,300 --> 00:41:01,952 >> כֵּן? 765 00:41:01,952 --> 00:41:04,056 >> קהל: אז הדרך היית שיהיה 766 00:41:04,056 --> 00:41:06,064 כמו משובץ ללולאה או מצביע? 767 00:41:06,064 --> 00:41:06,730 פרופסור: כן. 768 00:41:06,730 --> 00:41:08,170 פחות או יותר רק ללולאה. 769 00:41:08,170 --> 00:41:12,430 זכור, דוד בכיתה ציינו הסוכר התחבירי בחינם? 770 00:41:12,430 --> 00:41:17,690 והיה לו את זה מאוד דבר מבלבל של T הכוכב 771 00:41:17,690 --> 00:41:22,030 ועוד אחד, שבו היה לשלב דרך וזה להזיז את המצביע? 772 00:41:22,030 --> 00:41:29,910 הדרך קלה יותר לעשות זה רק לא שלי. 773 00:41:29,910 --> 00:41:31,090 >> אז זה רק מערך. 774 00:41:31,090 --> 00:41:34,630 הדרך שהיית צריך ל לולאה שרצה מאפס עד, שבו 775 00:41:34,630 --> 00:41:36,580 הוא אני האורך של מחרוזת, אתה יכול פשוט 776 00:41:36,580 --> 00:41:39,510 לכתוב שבמקום לעשות מצביע שלם, דבר התייחסות. 777 00:41:39,510 --> 00:41:43,510 אז הדברים האלה הם בדיוק מקביל במחשב שלך. 778 00:41:43,510 --> 00:41:45,905 >> אתם יהיו כנראה לא צריך לדעת ש, 779 00:41:45,905 --> 00:41:48,280 אבל זה טוב רק סוג של יש בגב את דעתך. 780 00:41:48,280 --> 00:41:52,630 רק יודע שהמחשב מכיר בלוקים שונים של קוד 781 00:41:52,630 --> 00:41:53,890 כאותו דבר. 782 00:41:53,890 --> 00:41:57,510 בגלל זה הוא פשוט הרבה יותר למשתמש ידידותי לנו להציג את זה כמו שזה 783 00:41:57,510 --> 00:41:58,150 מערך. 784 00:41:58,150 --> 00:42:00,990 זה פשוט קל יותר. 785 00:42:00,990 --> 00:42:02,719 >> קהל: אז להשתמש strlen לאהוב, get-- 786 00:42:02,719 --> 00:42:03,385 פרופסור: כן. 787 00:42:03,385 --> 00:42:03,926 קהל: אישור. 788 00:42:03,926 --> 00:42:05,940 פרופסור: אתה יכול להשתמש strlen או, אם אתה 789 00:42:05,940 --> 00:42:10,420 לא היה לי strlen אתה יכול פשוט לעשות את עד שתגיע קו נטוי אפס עבור שניהם. 790 00:42:10,420 --> 00:42:11,568 כך או יעבדו. 791 00:42:11,568 --> 00:42:12,068 כֵּן. 792 00:42:12,068 --> 00:42:14,871 793 00:42:14,871 --> 00:42:17,996 קהל: אז זה לכל dereference תו בודד אם היינו למעשה 794 00:42:17,996 --> 00:42:21,044 כתיבת קוד זה, אנחנו רק יכול לעשות סוגריים t i 795 00:42:21,044 --> 00:42:22,460 אוהב עם הכוכבים מולו? 796 00:42:22,460 --> 00:42:27,700 >> פרופסור: כן, שווה השווה של הסוגר אני, ולאחר מכן להמשיך לנוע אני 797 00:42:27,700 --> 00:42:29,790 מטה עד שתגיע לסוף. 798 00:42:29,790 --> 00:42:31,286 כן, זה מה שהיית עושה. 799 00:42:31,286 --> 00:42:33,660 ואני באמת אצטרך הבא דוגמא כאשר אנו למעשה 800 00:42:33,660 --> 00:42:36,740 לכתוב strlen כך אתם יהיו סוג של מקבל לשחק עם זה קצת. 801 00:42:36,740 --> 00:42:43,567 >> אז כולם ברור רק על זיכרון, מחרוזות, מצביעים, כתובות איכות? 802 00:42:43,567 --> 00:42:46,650 כמה מושגים ברמה גבוהים יותר, כי אתה רצון לצורך בטוח לדעת על החידון 803 00:42:46,650 --> 00:42:48,928 מָחָר. 804 00:42:48,928 --> 00:42:49,904 >> בסדר. 805 00:42:49,904 --> 00:42:50,404 טוֹב. 806 00:42:50,404 --> 00:42:54,824 807 00:42:54,824 --> 00:42:55,324 כֵּן. 808 00:42:55,324 --> 00:42:58,770 809 00:42:58,770 --> 00:43:04,180 אוקיי, אז דבר אחד שאנחנו גם שואלים אתה, כפי שאנו עושים בכל שנה בחידון, הוא, 810 00:43:04,180 --> 00:43:08,340 נניח שאתה שכחת (ש נראים שאנחנו שוכחים לעשות בשנה) 811 00:43:08,340 --> 00:43:10,810 בי strlen קובץ הכותרת מוצהר. 812 00:43:10,810 --> 00:43:13,860 ולכן אנחנו צריכים לשכתב אותו בעצמנו. 813 00:43:13,860 --> 00:43:16,350 >> הנה רשימה של הנחיות שאנחנו יכולים להציג בפניכם 814 00:43:16,350 --> 00:43:20,660 בחורים בו אתה מקבל להניח ש שעות המחרוזת לא תהיה ריקה. 815 00:43:20,660 --> 00:43:23,830 אתה יכול להניח שזה יהיה הופסק עם קו נטוי אפס. 816 00:43:23,830 --> 00:43:26,670 אז אתה יודע שזה מה ש זה הולך להסתיים ב. 817 00:43:26,670 --> 00:43:29,500 >> ו, למשל, ש אורכו של שלום יהיה חמש. 818 00:43:29,500 --> 00:43:32,890 אז אתה יכול להניח ששלום יהיה חמש, H-E-L-L-O. 819 00:43:32,890 --> 00:43:35,890 אתה לא צריך להניח ש ישבנה אפס חשבונות לאורך. 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> דבר זה אחרון כאן, לא לדאוג גלישת מספר שלם. 822 00:43:42,300 --> 00:43:45,270 האם מישהו זוכר הצפה מה היא מספר שלם? 823 00:43:45,270 --> 00:43:48,041 >> קהל: מעבר ל אורכו של [לא ברור]. 824 00:43:48,041 --> 00:43:50,740 >> פרופסור: כן, אתה יכול להסביר קצת, מה זה אומר? 825 00:43:50,740 --> 00:43:55,330 >> קהל: אז, אני מניח שזה חוזר לדוגמא המקצץ קודם לכן. 826 00:43:55,330 --> 00:43:58,380 אבל אם יש לך רק מספרים כל כך הרבה כי מעבר למספר הביטים 827 00:43:58,380 --> 00:44:01,409 כי אתה באמת יכול להקצות אותו שזה יהיה פשוט סוג של מנותק. 828 00:44:01,409 --> 00:44:04,242 פרופסור: כן, כן הלאה טיפוסי מחשב, כמה ביטים יש לנו? 829 00:44:04,242 --> 00:44:05,306 קהל: 32? 830 00:44:05,306 --> 00:44:06,430 פרופסור: כן, 32, תקין. 831 00:44:06,430 --> 00:44:10,030 ואז זה, מה, ארבעה מיליארדים, שני מיליארדים? 832 00:44:10,030 --> 00:44:13,579 ארבעה מיליארדים, עד ארבעה מיליארדים מספרים שלמים וחיוביים, נכון? 833 00:44:13,579 --> 00:44:15,370 שני מיליארדים שלילי, שני מיליארדים חיובי, 834 00:44:15,370 --> 00:44:16,900 תלוי איך אתה רוצה לעשות את זה. 835 00:44:16,900 --> 00:44:21,470 >> ואז בעצם אנחנו יכולים להיות מספיק מספרים שלמים שיכול לעלות 836 00:44:21,470 --> 00:44:25,800 לשתיים עד 31 מינוס 1, נכון? 837 00:44:25,800 --> 00:44:27,980 כי ברגע שפגענו שני לה -32, אנחנו לא 838 00:44:27,980 --> 00:44:30,040 יש כל כך הרבה זיכרון במחשב שלנו. 839 00:44:30,040 --> 00:44:32,310 >> וכך, באופן תיאורטי, אני יכול לבוא עם מספר 840 00:44:32,310 --> 00:44:34,560 כלומר, כמו, שתי לה -46. 841 00:44:34,560 --> 00:44:38,040 זה מספר עצום-התחת, אבל תיאורטית אתה יכול. 842 00:44:38,040 --> 00:44:42,730 והצפה כך שלם היא אם אתה מנסה ליצור מספר שלם שהולך מעבר למה ש 843 00:44:42,730 --> 00:44:44,790 המחשב שלך הוא מסוגל לאחסן. 844 00:44:44,790 --> 00:44:46,590 >> וכך אתם ל דוגמא זו אין לי 845 00:44:46,590 --> 00:44:51,330 לדאוג לנו לתת לך ענק מחרוזת שהיא שני לתווי ה -32 846 00:44:51,330 --> 00:44:51,830 אָרוֹך. 847 00:44:51,830 --> 00:44:54,010 זה יהיה באמת מתכוון. 848 00:44:54,010 --> 00:44:59,430 >> בסדר, אז אני פשוט הולך לתת לי אתם מבנה הבסיס של זה. 849 00:44:59,430 --> 00:45:02,020 אתה הולך ליצור פונקציה שנקראת int strlen בי 850 00:45:02,020 --> 00:45:08,436 לעבור ב, כוכב char, או מחרוזת, מצביע למחרוזת בשם של. 851 00:45:08,436 --> 00:45:10,820 >> בסדר, כולם להעתיק את זה. 852 00:45:10,820 --> 00:45:13,550 853 00:45:13,550 --> 00:45:14,850 לְהִתְקַרֵר. 854 00:45:14,850 --> 00:45:17,020 Oops-- דרך אחרת. 855 00:45:17,020 --> 00:45:21,360 >> אז זה כמו סוג של חתיכה קשה של בעיה, 856 00:45:21,360 --> 00:45:25,320 כך אני אתן לכם אולי חמישה ל שש דקות לסוג של סיעור מוחות 857 00:45:25,320 --> 00:45:27,478 ולכתוב את הפונקציה הזאת. 858 00:45:27,478 --> 00:45:29,710 >> קהל: אנחנו לא חשבון ל[ לא ברור], 859 00:45:29,710 --> 00:45:30,200 אנחנו לא צריכים להשתמש במספר שלם? 860 00:45:30,200 --> 00:45:31,241 >> פרופסור: לא, אתה לא. 861 00:45:31,241 --> 00:48:05,847 862 00:48:05,847 --> 00:48:06,930 אני אתן לכם רמז. 863 00:48:06,930 --> 00:48:12,325 לולאה בזמן עשויה להיות שימושית מאוד כאן. 864 00:48:12,325 --> 00:48:12,825 כֵּן. 865 00:48:12,825 --> 00:48:44,995 866 00:48:44,995 --> 00:48:45,495 הנה 867 00:48:45,495 --> 00:48:45,995 סוּכַּרִיוֹת. 868 00:48:45,995 --> 00:48:49,980 869 00:48:49,980 --> 00:48:53,410 סוכריות תהיה זמינות גם לחידון, אני חושב. 870 00:48:53,410 --> 00:48:55,315 אז אתם יהיו כל מסוכרים עד מחר. 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 יכול אני- לך את זה. 873 00:49:02,962 --> 00:49:03,718 >> קהל: אישור. 874 00:49:03,718 --> 00:49:04,384 פרופסור: כן. 875 00:49:04,384 --> 00:49:10,550 876 00:49:10,550 --> 00:49:11,870 >> אולי 30 שניות או יותר כך. 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> בסדר, אם אתה לא עשה, אין דאגות. 879 00:50:07,340 --> 00:50:08,810 אנחנו נעבור את זה ביחד דרך. 880 00:50:08,810 --> 00:50:09,310 אוקיי. 881 00:50:09,310 --> 00:50:13,800 אז אני הולך רק הפריסה מבנה בסיסי לפונקציה זו כאן. 882 00:50:13,800 --> 00:50:17,255 Int strlen. 883 00:50:17,255 --> 00:50:20,040 884 00:50:20,040 --> 00:50:23,460 ראשית, האם מישהו רוצה לספר לי שלי מה מסמל int ש? 885 00:50:23,460 --> 00:50:25,160 אנחנו צריכים בפונקציה זו. 886 00:50:25,160 --> 00:50:26,709 >> קהל: strlen [לא ברור]. 887 00:50:26,709 --> 00:50:27,500 פרופסור: בדיוק. 888 00:50:27,500 --> 00:50:31,140 אז כל מה שקורה כאן, אנחנו צריכים לחזור שלמים. 889 00:50:31,140 --> 00:50:36,367 וכפי שצוין ב מפרט, אנחנו רוצים return-- 890 00:50:36,367 --> 00:50:37,700 לכו על זה, חבר'ה, רק להמשיך. 891 00:50:37,700 --> 00:50:40,480 הכל טוב. 892 00:50:40,480 --> 00:50:42,960 לאכול אותו כל כך שאין לי לקחת אותו בחזרה, בעצם. 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 Int פשוט מסמן שאתה הולך להיות חוזר שלם. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> מה הוא כוכב של char זה? 897 00:50:57,106 --> 00:50:58,640 מה הכוונה? 898 00:50:58,640 --> 00:51:00,879 >> קהל: כמו, מה שקלט ב. 899 00:51:00,879 --> 00:51:01,670 פרופסור: בדיוק. 900 00:51:01,670 --> 00:51:04,142 ומה הוא כמעט אותו דבר כמו כוכב char? 901 00:51:04,142 --> 00:51:04,850 קהל: מחרוזת? 902 00:51:04,850 --> 00:51:05,641 פרופסור: בדיוק. 903 00:51:05,641 --> 00:51:09,080 אז כל מה שאנחנו עושים הוא נותנים זה מצביע למחרוזת. 904 00:51:09,080 --> 00:51:09,580 אוקיי. 905 00:51:09,580 --> 00:51:12,860 906 00:51:12,860 --> 00:51:13,360 לְהִתְקַרֵר. 907 00:51:13,360 --> 00:51:16,650 >> כמו כן, אל תשכחו, אם אנו שוכחים כדי לתת לך סוגריים אלה, 908 00:51:16,650 --> 00:51:18,330 אל תשכחו לכתוב אותם בעצמך. 909 00:51:18,330 --> 00:51:20,720 בגלל אופן תיאורטי, את הקוד שלך הוא שגוי אם אתה שוכח לכתוב אותם. 910 00:51:20,720 --> 00:51:21,803 פשוט תמיד לשים לב. 911 00:51:21,803 --> 00:51:23,750 כמו, דברים קטנים שאתה לא שם לב 912 00:51:23,750 --> 00:51:26,917 כאשר אתה מתכנת במחשב הנייד שלך, כי המחשב הנייד שלך עושה את זה בשבילך? 913 00:51:26,917 --> 00:51:28,624 אל תשכחו כש אתה כותב ביד. 914 00:51:28,624 --> 00:51:29,170 כֵּן? 915 00:51:29,170 --> 00:51:30,954 >> קהל: אבל איך שגוי? 916 00:51:30,954 --> 00:51:33,190 כמו, אנחנו מקבלים את כל הבעיה הלא נכונה? 917 00:51:33,190 --> 00:51:34,190 >> פרופסור: לא, לא. 918 00:51:34,190 --> 00:51:34,860 אל תדאג. 919 00:51:34,860 --> 00:51:39,270 זה בעצם אפשרי תיאורטית כדי שתוכל לקבל את מלוא נקודות על שאלה 920 00:51:39,270 --> 00:51:41,980 גם אם הקוד שלך לא לרוץ בחיים אמיתיים. 921 00:51:41,980 --> 00:51:46,052 אני מציע שלא אנסה כדי שזה יקרה. 922 00:51:46,052 --> 00:51:48,260 לדוגמא, כמו אם הכל זה כאן נכון, 923 00:51:48,260 --> 00:51:51,850 אבל אתה שוכח מעי גס או הסוגר, הקוד שלך לא יפעל למעשה. 924 00:51:51,850 --> 00:51:53,740 אבל אנחנו יכולים להיות רחומים. 925 00:51:53,740 --> 00:51:54,394 >> כֵּן? 926 00:51:54,394 --> 00:51:56,050 >> קהל: האם יש לך להגיב על כתב היד שלנו? 927 00:51:56,050 --> 00:51:57,758 >> פרופסור: לא, לא, לא דאגות על זה. 928 00:51:57,758 --> 00:51:58,440 לא להעיר. 929 00:51:58,440 --> 00:51:59,400 סגנון צריך להיות טוב. 930 00:51:59,400 --> 00:52:01,470 כמו, לא ללכלך הכל בשורה אחת. 931 00:52:01,470 --> 00:52:04,580 אנחנו לא תהיינה מאושרים איתך אם אתה עושה את זה. 932 00:52:04,580 --> 00:52:07,250 >> האם מישהו רוצה תן לי את השורה הראשונה? 933 00:52:07,250 --> 00:52:08,633 רמז, זה קל מאוד. 934 00:52:08,633 --> 00:52:09,320 >> כֵּן? 935 00:52:09,320 --> 00:52:11,920 >> קהל: Int, n שווה אפס. 936 00:52:11,920 --> 00:52:13,734 רק להגדיר את דלפק. 937 00:52:13,734 --> 00:52:15,900 פרופסור: אז אנחנו רוצים קצת סוג של דלפק, נכון? 938 00:52:15,900 --> 00:52:19,780 אני רק הולך לשם זה "לספור" למען נוחות הקריאה. 939 00:52:19,780 --> 00:52:21,265 מה אנחנו רוצים להגדיר את זה שווה ל? 940 00:52:21,265 --> 00:52:21,890 >> קהל: אפס. 941 00:52:21,890 --> 00:52:23,840 פרופסור: כן. 942 00:52:23,840 --> 00:52:24,340 נְקוּדָה וּפְסִיק. 943 00:52:24,340 --> 00:52:26,250 זה גם נקודה-פסיק ציור מאוד מוזר. 944 00:52:26,250 --> 00:52:28,870 רק לתרגל עושה את זה. 945 00:52:28,870 --> 00:52:31,990 >> אז אנחנו רוצים ראשון יש לי דלפק של int הסוג. 946 00:52:31,990 --> 00:52:35,360 מכיוון שאנחנו רוצים לספור עד כמה תווים או מכתבים רבים 947 00:52:35,360 --> 00:52:36,780 במחרוזת זו, נכון? 948 00:52:36,780 --> 00:52:38,330 צעד ראשון מאוד קל. 949 00:52:38,330 --> 00:52:42,140 >> אישור, מורכב אולי קצת יותר עכשיו, איך אנחנו הולכים לעשות זאת? 950 00:52:42,140 --> 00:52:45,400 האם מישהו רוצה תן לי את שורת קוד 951 00:52:45,400 --> 00:52:48,450 שייתכן שתוכל לעזור לולאה דרך מה זה? 952 00:52:48,450 --> 00:52:54,540 953 00:52:54,540 --> 00:52:56,900 >> כן, נשמה אמיצה בגב? 954 00:52:56,900 --> 00:53:06,832 >> קהל: אוקיי, אז בזמן שנקודה כוכביות, כן, הכוכב של ים, 955 00:53:06,832 --> 00:53:09,465 אינו שווה לאפס, ואז לעשות משהו? 956 00:53:09,465 --> 00:53:11,090 פרופסור: זה באמת, באמת קרוב. 957 00:53:11,090 --> 00:53:11,835 ממש קרוב. 958 00:53:11,835 --> 00:53:13,710 אז אני הולך לטפל ב שני דברים עם זה. 959 00:53:13,710 --> 00:53:18,240 קודם כל, זה לא בדיוק אפס. 960 00:53:18,240 --> 00:53:20,110 מה זה? 961 00:53:20,110 --> 00:53:22,550 זה שליחות קטלנית null, שהוא קו נטוי אפס. 962 00:53:22,550 --> 00:53:24,960 אז הם שונים ב מבחינת איך הם מאוחסנים. 963 00:53:24,960 --> 00:53:26,270 אז אתה ממש קרוב. 964 00:53:26,270 --> 00:53:30,330 >> ושנית, אנחנו לא רוצים רק כדי להזיז את המצביע. 965 00:53:30,330 --> 00:53:32,320 אנחנו רוצים בעצם לגשת לערכים, נכון? 966 00:53:32,320 --> 00:53:34,050 ואז איך אנחנו עושים את זה? 967 00:53:34,050 --> 00:53:34,550 קל מאוד. 968 00:53:34,550 --> 00:53:36,841 אל תחשבו על מצביעים, לא חושב על זכרונות. 969 00:53:36,841 --> 00:53:38,525 לחזור לשבוע של קורס זה שני. 970 00:53:38,525 --> 00:53:39,555 >> קהל: [לא ברור]. 971 00:53:39,555 --> 00:53:40,680 פרופסור: נכון, זוכר? 972 00:53:40,680 --> 00:53:41,400 מה הן מחרוזות? 973 00:53:41,400 --> 00:53:42,650 איך הם מאוחסנים בזיכרון? 974 00:53:42,650 --> 00:53:43,300 >> קהל: הם העלו. 975 00:53:43,300 --> 00:53:43,810 >> פרופסור: הם העלו. 976 00:53:43,810 --> 00:53:45,550 אז איך אנחנו לגשת כל תו בפנים? 977 00:53:45,550 --> 00:53:46,466 >> קהל: [לא ברור]. 978 00:53:46,466 --> 00:53:47,530 פרופסור: בדיוק. 979 00:53:47,530 --> 00:53:53,195 אז while-- מה הולך בפנים כאן? 980 00:53:53,195 --> 00:53:54,940 S של - 981 00:53:54,940 --> 00:53:55,920 >> קהל: I. 982 00:53:55,920 --> 00:53:58,216 >> פרופסור: הו, אני לא קיים, עושה את זה? 983 00:53:58,216 --> 00:53:59,620 >> קהל: הו, נחשב? 984 00:53:59,620 --> 00:54:01,640 >> פרופסור: אנחנו רק יכולים להשתמש ספירה, אנחנו לא יכול? 985 00:54:01,640 --> 00:54:03,050 >> קהל: מצטער, אני קראתי לזה אני. 986 00:54:03,050 --> 00:54:04,341 >> פרופסור: כן, זה הכל טוב. 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 יש לנו משתנים כאן זה כבר הוכרז כדלפק שלנו. 989 00:54:10,760 --> 00:54:13,650 אז למה אנחנו לא רק להשתמש בזה כדי לעבור תוך הלולאה? 990 00:54:13,650 --> 00:54:15,230 האם זה הגיוני? 991 00:54:15,230 --> 00:54:20,864 >> אז בזמן של של count-- מישהו רוצה לתת לי את מה שקורה אחרי כאן? 992 00:54:20,864 --> 00:54:22,030 קהל: זה לא שווה. 993 00:54:22,030 --> 00:54:23,405 פרופסור: האם לא שווה, נכון? 994 00:54:23,405 --> 00:54:26,200 זה המפץ שווה, סימן קריאה שווה, 995 00:54:26,200 --> 00:54:28,500 כל מה שאתם רוצים קורא לזה לא equal-- 996 00:54:28,500 --> 00:54:29,496 >> קהל: [לא ברור]. 997 00:54:29,496 --> 00:54:30,990 >> פרופסור: כן. 998 00:54:30,990 --> 00:54:37,110 זכור ציטוט אחד הוא עבור char, מרכאות כפולות הן למחרוזת. 999 00:54:37,110 --> 00:54:38,630 היזהר בעת השימוש בהם. 1000 00:54:38,630 --> 00:54:42,430 לכן, כאשר אנחנו מחפשים דרך המערך, התו האחרון, 1001 00:54:42,430 --> 00:54:46,420 אנחנו יודעים שאנחנו לא רוצים שזה יהיה קו נטוי אפס. 1002 00:54:46,420 --> 00:54:47,340 >> אז בזמן. 1003 00:54:47,340 --> 00:54:48,840 אנחנו לא בסוף של המחרוזת. 1004 00:54:48,840 --> 00:54:52,335 מה שאנחנו רוצים לעשות בפנים? 1005 00:54:52,335 --> 00:54:55,269 >> קהל: אנחנו רוצים להוסיף ל דלפק אז זה נחשב בתוספת בתוספת? 1006 00:54:55,269 --> 00:54:56,060 פרופסור: בדיוק. 1007 00:54:56,060 --> 00:55:03,064 אז הנה אנחנו הולכים לעשות לספור, לספור בתוספת בתוספת. 1008 00:55:03,064 --> 00:55:03,980 חסר שורה אחת יותר. 1009 00:55:03,980 --> 00:55:05,090 אנחנו כמעט שם. 1010 00:55:05,090 --> 00:55:07,398 מה שאנו שוכחים לעשות? 1011 00:55:07,398 --> 00:55:08,770 >> קהל: חוזר אפס? 1012 00:55:08,770 --> 00:55:10,820 >> פרופסור: אתה רוצה לחזור אפס? 1013 00:55:10,820 --> 00:55:12,962 >> קהל: לא, חוזר לstrlen. 1014 00:55:12,962 --> 00:55:13,511 לַחֲכוֹת. 1015 00:55:13,511 --> 00:55:14,760 פרופסור: אשר מאוחסן ב? 1016 00:55:14,760 --> 00:55:15,090 קהל: ספירה. 1017 00:55:15,090 --> 00:55:15,589 לִסְפּוֹר. 1018 00:55:15,589 --> 00:55:17,150 פרופסור: בדיוק. 1019 00:55:17,150 --> 00:55:20,760 אז הנה אנחנו הולכים לחזור ספירה. 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> כי מה שאנחנו עושה כאן ultimately-- 1022 00:55:25,380 --> 00:55:29,780 יש לנו משתנים נגד זה הולך להגדיל באמצעות המחרוזת שלנו. 1023 00:55:29,780 --> 00:55:33,050 אנחנו הולכים להמשיך, לשמור הולך, סביב סביב בלולאה זה. 1024 00:55:33,050 --> 00:55:37,700 ואם אנחנו כבר לא בסוף מחרוזת, המהווה את שליחות קטלנית null. 1025 00:55:37,700 --> 00:55:40,410 >> ובכל פעם שאנחנו עוברים זה, אנחנו מוסיפים לדלפק שלנו. 1026 00:55:40,410 --> 00:55:42,640 ואנחנו הולכים נוספים לאורך במערך זה. 1027 00:55:42,640 --> 00:55:44,880 ובסופו של הדבר, ברגע שאנחנו פגע בשליחות קטלנית null, 1028 00:55:44,880 --> 00:55:48,469 אנחנו יודעים, הו, אנחנו יכולים לשבור, להחזיר את הספירה. 1029 00:55:48,469 --> 00:55:49,260 יש לנו strlen שלנו. 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> האם כולם מקבלים כמה זו יושמה? 1032 00:55:56,400 --> 00:55:58,830 בעוד loops-- אני יודע שיש לנו לא עשה יותר מדי איתם, 1033 00:55:58,830 --> 00:56:01,240 אבל הם בדרך כלל מאוד, מאוד שימושי אם אתה 1034 00:56:01,240 --> 00:56:05,390 לא יודע מה שאתה עוצר מצב בהכרח צריך להיות. 1035 00:56:05,390 --> 00:56:06,220 >> שְׁאֵלָה? 1036 00:56:06,220 --> 00:56:10,080 >> קהל: האם אנחנו יכולים לכתוב null על המצב בזמן? 1037 00:56:10,080 --> 00:56:10,940 >> פרופסור: בעוד? 1038 00:56:10,940 --> 00:56:15,304 כן, כל כך בבעיה זו שהייתה לי אותך בחורים להניח שזה לא יהיה ריק. 1039 00:56:15,304 --> 00:56:17,220 כי תזכור, באופן תיאורטי, אם נתתי לך 1040 00:56:17,220 --> 00:56:21,180 מצביע שהיה גדול מדי של זיכרון, זה ייתן לך את null, נכון? 1041 00:56:21,180 --> 00:56:23,770 זה מה שההפעלה המערכת תעשה. 1042 00:56:23,770 --> 00:56:26,960 >> אז אם לא אמרתי לכם להניח ים יהיה ריק, אתה צריך לבדוק. 1043 00:56:26,960 --> 00:56:32,050 אז עד כאן, היית עושה, אם זה שווה שווה null, לחזור אחד. 1044 00:56:32,050 --> 00:56:33,028 משהו כזה. 1045 00:56:33,028 --> 00:56:34,153 קהל: [לא ברור] אפס. 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 פרופסור: בסדר, אני אגיד לי לך למה אנחנו לא יכולים לעשות את זה. 1048 00:56:39,370 --> 00:56:43,357 כי יזכור בזיכרון, נכון, כאן. 1049 00:56:43,357 --> 00:56:43,940 אנחנו נלך כאן. 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> יש לך בלוקים ענקיים זיכרון כל עם רשתות 1052 00:56:54,090 --> 00:56:56,680 שערכים שונים החנות, נכון? 1053 00:56:56,680 --> 00:57:00,110 וכך כל מחרוזת הוא-- ל למשל, אם אנחנו רוצים קלט שלום, 1054 00:57:00,110 --> 00:57:05,490 זה יהיה H-E-L-L-O קו נטוי אפס, נכון? 1055 00:57:05,490 --> 00:57:09,570 ואז מי יודע, כמו אקראי דברים שהם בכאן אחריו. 1056 00:57:09,570 --> 00:57:11,220 >> אנחנו לא באמת יודעים מה יש שם. 1057 00:57:11,220 --> 00:57:13,350 ולכן אם היה לך לעשות במקום קו נטוי אפס, 1058 00:57:13,350 --> 00:57:15,590 null, זה לא יכול להיות null. 1059 00:57:15,590 --> 00:57:17,680 כי זה אולי רק אומר כמה דברים אחרים אקראיים 1060 00:57:17,680 --> 00:57:19,270 שאינו שייך במחרוזת שלך. 1061 00:57:19,270 --> 00:57:23,219 ולכן הדרך שאנחנו תמיד יודעים ש מחרוזת מסתיימת היא עם קו נטוי אפס. 1062 00:57:23,219 --> 00:57:25,760 ואז זה תמיד איך ש בדוק קצה חוט. 1063 00:57:25,760 --> 00:57:30,820 >> Null, בכל האמצעים שהם אם יש לך מצביע אינו קיים, קודם כל, 1064 00:57:30,820 --> 00:57:36,160 או אם הזיכרון שלך הוא פשוט כל כך גדול ש אתה לא יכול להחזיר אותו, אז שזה יהיה ריק. 1065 00:57:36,160 --> 00:57:40,150 אז להיות זהיר מאוד בעת ההבחנה ההבדל בין null 1066 00:57:40,150 --> 00:57:42,130 והקו הנטוי אפס. 1067 00:57:42,130 --> 00:57:43,670 כֵּן. 1068 00:57:43,670 --> 00:57:46,886 >> כולם בסדר עם זה? 1069 00:57:46,886 --> 00:57:48,150 אוקיי. 1070 00:57:48,150 --> 00:57:50,440 >> אז היה לי אתם לכתוב את strlen. 1071 00:57:50,440 --> 00:57:53,790 יתכן אנחנו גם יכולים לשאול אותך לכתוב מתוך לי, זכור כי "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 או מה שאתם רוצים לקרוא לזה? 1073 00:57:55,400 --> 00:57:58,010 פונקציה שב Vigenere וקיסר, ש 1074 00:57:58,010 --> 00:58:00,900 ממיר ערך ASCII למספר שלם? 1075 00:58:00,900 --> 00:58:04,360 כי יש גם לבוא בחידונים האחרונים פונקציות שכבר ביקשו ממך לכתוב. 1076 00:58:04,360 --> 00:58:08,280 >> פחות או יותר כל תפקיד כי אתה כבר בשימוש, והוא 1077 00:58:08,280 --> 00:58:11,660 קל מאוד לכתוב לעצמך, חיישנים רוצים הוא נמוך, 1078 00:58:11,660 --> 00:58:14,620 הוא עליון, להוריד, לעליון. 1079 00:58:14,620 --> 00:58:17,964 פונקציות שתמרנה מחרוזת מאותיות קטנה לאותיות גדולות. 1080 00:58:17,964 --> 00:58:19,380 כולנו יודעים איך לעשות את זה, נכון? 1081 00:58:19,380 --> 00:58:21,100 זה די קל. 1082 00:58:21,100 --> 00:58:24,770 רק רוצה לוודא שאתה can-- זה אותו תהליך המחשבה. 1083 00:58:24,770 --> 00:58:26,940 אתה פשוט לחזר דרך ואתה פונה דברים. 1084 00:58:26,940 --> 00:58:30,190 אתה גם לספור או כאשר אתה פונה דברים בצורה שונה. 1085 00:58:30,190 --> 00:58:32,280 >> הייתי suggest-- אני לא יודע אם אנחנו הולכים 1086 00:58:32,280 --> 00:58:39,080 לשאול אותך לשנן מה הון או Z הון, או אותיות קטנות או אותיות קטנות 1087 00:58:39,080 --> 00:58:42,640 z נמצא בASCII, אבל אני הייתי מציע אולי כותב את זה במקרה 1088 00:58:42,640 --> 00:58:44,124 אנחנו עושים. 1089 00:58:44,124 --> 00:58:45,540 רק כך יש לכם התייחסות. 1090 00:58:45,540 --> 00:58:47,180 כמו אותיות גדולות הוא, מה, 197? 1091 00:58:47,180 --> 00:58:51,320 ולאחר מכן באותיות קטנות היא כמו 50 משהו. 1092 00:58:51,320 --> 00:58:52,492 65, כן, יש לך ללכת. 1093 00:58:52,492 --> 00:58:54,950 אז פשוט פחות או יותר יודע הבדל ביניהם הוא 32. 1094 00:58:54,950 --> 00:58:57,670 זה די חשוב. 1095 00:58:57,670 --> 00:58:58,170 כֵּן. 1096 00:58:58,170 --> 00:59:01,445 אני טוב בזה? 1097 00:59:01,445 --> 00:59:01,945 אוקיי. 1098 00:59:01,945 --> 00:59:03,109 >> קהל: אנחנו יכולים תיאורטית לכתוב כמה 1099 00:59:03,109 --> 00:59:04,410 אלה למטה, כמו גם על little-- 1100 00:59:04,410 --> 00:59:07,035 >> פרופסור: אתה באופן תיאורטי יכול פשוט להעתיק את הפונקציה למטה. 1101 00:59:07,035 --> 00:59:08,482 זה נכון. 1102 00:59:08,482 --> 00:59:11,080 >> קהל: לא [לא ברור]. 1103 00:59:11,080 --> 00:59:12,720 >> יש לך חבר 'גיליון: פרופסור. 1104 00:59:12,720 --> 00:59:14,194 יש לכם גיליון פתק. 1105 00:59:14,194 --> 00:59:14,860 אתה יכול להקליד אותה. 1106 00:59:14,860 --> 00:59:15,490 אתה יכול לכתוב את זה. 1107 00:59:15,490 --> 00:59:17,031 אתה יכול לעשות מה שאתה רוצה עם זה. 1108 00:59:17,031 --> 00:59:18,530 כֵּן. 1109 00:59:18,530 --> 00:59:21,406 אז באופן תיאורטי, אם אתה רוצה, ללכת ל. 1110 00:59:21,406 --> 00:59:23,338 >> קהל: [לא ברור] אבל אנחנו לא באמת 1111 00:59:23,338 --> 00:59:25,994 בהכרח צריך לזכור הערך, אנחנו רק יכולים 1112 00:59:25,994 --> 00:59:28,914 להשתמש לעליון או ל פונקציה נמוכה יותר, נכון? 1113 00:59:28,914 --> 00:59:29,580 פרופסור: כן. 1114 00:59:29,580 --> 00:59:32,740 אבל אם אנחנו נתנו לך שאלה שאומר לכתוב לעליון, 1115 00:59:32,740 --> 00:59:34,350 אז היית צריך לכתוב את זה. 1116 00:59:34,350 --> 00:59:38,150 אז אתם יכולים להניח שאתה יש בחורים גישה לכל הפונקציות, 1117 00:59:38,150 --> 00:59:41,523 אבל אם אתה רוצה להשתמש בו כדי עליון או ל נמוך, מה אתה גם צריך לעשות? 1118 00:59:41,523 --> 00:59:43,840 >> קהל: [לא ברור] להשתמש CS50 [לא ברור] 1119 00:59:43,840 --> 00:59:44,840 >> פרופסור: האם זה CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 היזהר שם. 1122 00:59:48,310 --> 00:59:50,640 >> אז לעליון, להוריד, הוא עליון, הוא נמוך יותר, 1123 00:59:50,640 --> 00:59:52,990 פונקציות שכרוכות מניפולציה מחרוזת היא 1124 00:59:52,990 --> 00:59:55,490 כל זאת במסגרת שני Ascii או בספריית המתמטיקה 1125 00:59:55,490 --> 00:59:57,350 או בספריית המחרוזת. 1126 00:59:57,350 --> 01:00:00,290 אז אם אתם משתמשים באלה פונקציות, להיות זהירות כדי לזכור 1127 01:00:00,290 --> 01:00:01,451 לכלול כותרת ש. 1128 01:00:01,451 --> 01:00:03,950 אז אולי גם משהו שאתה רוצה לכלול בגיליון שלך, 1129 01:00:03,950 --> 01:00:04,892 מה הן הכותרת? 1130 01:00:04,892 --> 01:00:06,600 מה הן הספריות אתה כבר משתמש? 1131 01:00:06,600 --> 01:00:08,550 מה פונקציות בתוך ספריות אלה? 1132 01:00:08,550 --> 01:00:09,230 זה חשוב. 1133 01:00:09,230 --> 01:00:10,420 >> כֵּן? 1134 01:00:10,420 --> 01:00:12,570 >> קהל: היה לנו רק שוטר ולעשות hashtag 1135 01:00:12,570 --> 01:00:14,955 באמצעות לחלוטין כל אות יש לנו אי פעם 1136 01:00:14,955 --> 01:00:17,340 ראה כמו על כל השאלות? 1137 01:00:17,340 --> 01:00:18,320 >> פרופסור: אתה יכול. 1138 01:00:18,320 --> 01:00:20,361 אני לא יודע כמה מאושר אנחנו הולכים להיות לכיתה 1139 01:00:20,361 --> 01:00:25,090 חידון שכאשר כל פיסת הקוד הוא פעמיים כל עוד זה צריך להיות. 1140 01:00:25,090 --> 01:00:27,200 אני לא יודע, אנחנו עלולים להמריא נקודה לסגנון. 1141 01:00:27,200 --> 01:00:28,790 אבל באופן תיאורטי שלך קוד יהיה תקין. 1142 01:00:28,790 --> 01:00:30,915 אתם יכולים לצאת שוטר ו רק כולל הכל. 1143 01:00:30,915 --> 01:00:32,044 זה בסדר גם כן. 1144 01:00:32,044 --> 01:00:32,960 קהל: [לא ברור]. 1145 01:00:32,960 --> 01:00:33,270 פרופסור: כן. 1146 01:00:33,270 --> 01:00:34,900 הייתי מציע לא עושה את זה בכל זאת. 1147 01:00:34,900 --> 01:00:35,505 כֵּן. 1148 01:00:35,505 --> 01:00:36,130 קהל: מגניב. 1149 01:00:36,130 --> 01:00:36,620 פרופסור: שאלה טובה. 1150 01:00:36,620 --> 01:00:37,480 קהל: אז, במקרה הגרוע ביותר. 1151 01:00:37,480 --> 01:00:38,563 פרופסור: במקרה הגרוע ביותר. 1152 01:00:38,563 --> 01:00:40,350 אם אתה לגמרי לשכוח, אתה יכול לעשות את זה. 1153 01:00:40,350 --> 01:00:40,850 כֵּן. 1154 01:00:40,850 --> 01:00:43,870 1155 01:00:43,870 --> 01:00:45,400 >> כן, קוד הוא ממש שם. 1156 01:00:45,400 --> 01:00:49,176 אני משמש n במקום לספור אבל, אתה יודע, מה שצף בסירה שלך. 1157 01:00:49,176 --> 01:00:51,092 קהל: המתן, כדי ש לא אצטרך hashtag 1158 01:00:51,092 --> 01:00:53,460 כולל בגלל שאנחנו החל מ int? 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> פרופסור: כן, אני פשוט הנחתי ש התבקשנו לכתוב הפונקציה. 1161 01:00:59,924 --> 01:01:02,340 אם אתה רוצה להיות בטוח, אתה כנראה יכול לשים אותו שם. 1162 01:01:02,340 --> 01:01:05,650 אבל אני פשוט לא טרחתי, כן. 1163 01:01:05,650 --> 01:01:09,919 >> אני אפילו לא יודע אם אתה צריך ספרייה כל לזה. 1164 01:01:09,919 --> 01:01:12,710 כי אתה לא באמת מדפיס שום דבר או שום דבר, נכון? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 כן, אני לא יודע אם אתה צריך ספרייה. 1167 01:01:19,568 --> 01:01:22,400 >> אוקיי. 1168 01:01:22,400 --> 01:01:26,020 זה גם קצת יותר לאורך הקווים של מניפולציה זיכרון. 1169 01:01:26,020 --> 01:01:27,400 סוג זה של קצת מסובך. 1170 01:01:27,400 --> 01:01:28,960 תחשוב על זה. 1171 01:01:28,960 --> 01:01:30,580 יש לך פונקציה שנקראת func. 1172 01:01:30,580 --> 01:01:33,570 אני יכול בשם זה מה ש, אבל אני בוחר שם את זה func. 1173 01:01:33,570 --> 01:01:36,000 יש לי אותו מעליי עיקרי. 1174 01:01:36,000 --> 01:01:39,790 זכור, אתה רוצה להיות פונקציה העיקרית שלך לאחר, 1175 01:01:39,790 --> 01:01:42,370 אתה רוצה לוודא שאתה כולל אב הטיפוס של הראש. 1176 01:01:42,370 --> 01:01:45,750 >> אבל במקרה הזה זה היה כל כך קצר כי הרגשתי שאני רק יכול 1177 01:01:45,750 --> 01:01:47,260 לכלול אותו על גבי העיקרי. 1178 01:01:47,260 --> 01:01:51,170 אני לא צריך את האב-טיפוס, כי זה כבר כתב לעיל. 1179 01:01:51,170 --> 01:01:55,430 אז כל מה שאני עושה בפונקציה העיקרית שלי יוצר x המספר השלם שווה 10. 1180 01:01:55,430 --> 01:02:00,490 אני מתקשר פונקצית func, ואז להדפיס משהו. 1181 01:02:00,490 --> 01:02:02,840 >> ואז זה בעצם מה func עושה. 1182 01:02:02,840 --> 01:02:04,340 אתם רוצים לחשוב על זה. 1183 01:02:04,340 --> 01:02:05,423 כי זה קצת מסובך. 1184 01:02:05,423 --> 01:02:07,220 זה מאוד, מאוד מסובך, למעשה. 1185 01:02:07,220 --> 01:02:09,549 חושב דרך מה זה תכנית תהיה פלט. 1186 01:02:09,549 --> 01:02:10,840 אני אתן לכם שתי דקות. 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> דיונים טובים? 1189 01:03:37,891 --> 01:03:38,853 >> קהל: כן. 1190 01:03:38,853 --> 01:03:39,815 >> פרופסור: כן. 1191 01:03:39,815 --> 01:03:42,220 בסדר, אז זה מסובך לסיבה. 1192 01:03:42,220 --> 01:03:44,845 וזו הסיבה שרציתי להביא זה לתשומת לבם של כולם. 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 האם מישהו רוצה לתת לי הצעה, ניסיון? 1195 01:03:51,147 --> 01:03:52,230 מה היית זה להדפיס? 1196 01:03:52,230 --> 01:03:53,930 לגמרי בסדר אם אתה טועה. 1197 01:03:53,930 --> 01:03:55,619 כֵּן? 1198 01:03:55,619 --> 01:03:59,483 >> קהל: אני חושב שזה 100 ו אז 10 בשתי שורות נפרדות. 1199 01:03:59,483 --> 01:04:00,940 >> פרופסור: ו- 10? 1200 01:04:00,940 --> 01:04:03,154 האם מישהו יש לי ניחושים אחרים? 1201 01:04:03,154 --> 01:04:04,150 כֵּן? 1202 01:04:04,150 --> 01:04:09,040 >> קהל: אולי רק 10 כי func לא חוזר שום דבר? 1203 01:04:09,040 --> 01:04:11,610 >> פרופסור: אוקיי, אז אנחנו יש מספר ניחוש אחד 1204 01:04:11,610 --> 01:04:14,990 הוא שמספר הניחוש שני הוא רק הולך להדפיס 10 החוצה. 1205 01:04:14,990 --> 01:04:17,623 האם מישהו יש לי ניחושים אחרים? 1206 01:04:17,623 --> 01:04:19,654 אוקיי. 1207 01:04:19,654 --> 01:04:21,070 אז בואו לטייל בזה, נכון? 1208 01:04:21,070 --> 01:04:23,903 בכל פעם שאתה מקבל פיסת הקוד, לא רק להסתכל על זה ולהיות כמו, 1209 01:04:23,903 --> 01:04:25,060 אה, זה כל כך הרבה דברים! 1210 01:04:25,060 --> 01:04:26,460 אני כל כך מבולבל! 1211 01:04:26,460 --> 01:04:28,220 כמו, להרגיע את עצמך. 1212 01:04:28,220 --> 01:04:31,602 רק יודע שאתה יכול פשוט להסתכל דרך קו קוד על ידי קו. 1213 01:04:31,602 --> 01:04:32,310 זה כל מה שזה. 1214 01:04:32,310 --> 01:04:33,840 זה כמו לקרוא ספר. 1215 01:04:33,840 --> 01:04:38,000 >> אז עם כל פונקציה, אנחנו תמיד מתחילים ב ראשיים. 1216 01:04:38,000 --> 01:04:40,860 אז אנחנו הולכים ל תתחיל בחלל המרכזי int, 1217 01:04:40,860 --> 01:04:43,010 אפילו התכנית של כבר לרוץ למטה, נכון? 1218 01:04:43,010 --> 01:04:45,070 התחל בחלל מרכזי. 1219 01:04:45,070 --> 01:04:48,030 Int x שווה 10. 1220 01:04:48,030 --> 01:04:50,400 >> אז אני הולך למחוק זה. 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 אני הולך לצייר את הזיכרון רק כדי ש בחורים סוג של יכולים לראות מה קורה. 1223 01:04:58,470 --> 01:05:02,190 >> זכור כאן יש לנו הערימה שלנו? 1224 01:05:02,190 --> 01:05:05,810 עד כאן יש לנו שלנו ערימה איפשהו כאן. 1225 01:05:05,810 --> 01:05:07,470 הערימה גדלה, נכון? 1226 01:05:07,470 --> 01:05:10,150 ובתוך הערימה, יש לך החשמל לתפקד כמו גם 1227 01:05:10,150 --> 01:05:12,230 כל המשתנים המקומיים החשמל. 1228 01:05:12,230 --> 01:05:14,310 >> אז הנה, int x שווה 10. 1229 01:05:14,310 --> 01:05:17,670 בתוך הפונקציה העיקרית שלנו שאנחנו יצירת משתנה בשם x. 1230 01:05:17,670 --> 01:05:20,590 אנחנו קביעת ששווה 10. 1231 01:05:20,590 --> 01:05:24,200 כאן יש לך כמה X, ואתה הגדרה ששווה 10, תקין, 1232 01:05:24,200 --> 01:05:25,400 בתוך עיקרי. 1233 01:05:25,400 --> 01:05:27,430 כולם טובים? 1234 01:05:27,430 --> 01:05:28,070 >> פוּנקצִיָה. 1235 01:05:28,070 --> 01:05:30,330 אז עכשיו, בתוך העיקרי שלנו פונקציה, אנחנו קוראים 1236 01:05:30,330 --> 01:05:31,810 הפונקציה שכתבנו לעיל. 1237 01:05:31,810 --> 01:05:34,550 אז אנחנו עכשיו להיכנס לפונקציה השנייה. 1238 01:05:34,550 --> 01:05:40,120 אנחנו הולכים ליצור עוד int משתנה x שווה 100. 1239 01:05:40,120 --> 01:05:42,410 מה שקורה כאן בערימה? 1240 01:05:42,410 --> 01:05:46,980 מה קורה כאשר אתה קורא פונקציה שיוצרת משתנים חדשים? 1241 01:05:46,980 --> 01:05:50,038 מה קורה כאן בערימה? 1242 01:05:50,038 --> 01:05:52,134 >> קהל: [לא ברור] ערימות על גבי? 1243 01:05:52,134 --> 01:05:52,800 פרופסור: כן. 1244 01:05:52,800 --> 01:05:54,050 אז זה בעצם יוצר עותק. 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 וזה סוג של ערימות על גבי. 1247 01:05:57,740 --> 01:06:00,700 תחשוב על stack-- ערימה ספרים, ערימה של כלום. 1248 01:06:00,700 --> 01:06:06,520 ערימות על גבי, ראשונה שבעברה החוצה, תימשך ב, ראשון החוצה. 1249 01:06:06,520 --> 01:06:08,471 >> אז זה הולך ליצור x כאן. 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> זה הולך להיות כל משתני funcs. 1252 01:06:14,450 --> 01:06:14,950 גדול. 1253 01:06:14,950 --> 01:06:20,980 אז עכשיו יש לנו שני X של שונה ש מייצג שני דברים שונים מאוד. 1254 01:06:20,980 --> 01:06:24,470 אז אנחנו הולכים להדפיס את המספר השלם של x. 1255 01:06:24,470 --> 01:06:26,430 אז בואו להדפיס 100, נכון? 1256 01:06:26,430 --> 01:06:29,389 כי כאן זה 100. 1257 01:06:29,389 --> 01:06:31,680 אז זה הדבר הראשון שזה הולך להדפיס. 1258 01:06:31,680 --> 01:06:35,710 כדבר חוזר בפונקציה זו, עכשיו פונקציה ש, קו שבעיקרי 1259 01:06:35,710 --> 01:06:37,070 נעשה. 1260 01:06:37,070 --> 01:06:39,160 כולם טובים איתי עד כה? 1261 01:06:39,160 --> 01:06:43,034 >> אז אנחנו עכשיו בשתיים מתוך שלושה קווים של הפונקציה העיקרית שלנו. 1262 01:06:43,034 --> 01:06:44,450 עכשיו אנחנו הולכים לשורה השלישית. 1263 01:06:44,450 --> 01:06:46,350 אנחנו הולכים printf. 1264 01:06:46,350 --> 01:06:48,222 מהו x זה בתוך עיקרי? 1265 01:06:48,222 --> 01:06:49,263 מה זה מייצג? 1266 01:06:49,263 --> 01:06:52,720 1267 01:06:52,720 --> 01:06:54,280 >> איזה ערך הוא x עכשיו? 1268 01:06:54,280 --> 01:06:55,220 >> קהל: 100. 1269 01:06:55,220 --> 01:06:56,799 >> פרופסור: זה 100? 1270 01:06:56,799 --> 01:06:57,590 קהל: עדיין 10. 1271 01:06:57,590 --> 01:06:58,878 פרופסור: ובכל זאת 10. 1272 01:06:58,878 --> 01:07:00,870 כֵּן. 1273 01:07:00,870 --> 01:07:06,810 כי תזכור, ב func, x שווה 100. 1274 01:07:06,810 --> 01:07:09,690 אבל אם אנחנו חוזרים בחזרה לפונקציה העיקרית שלנו, 1275 01:07:09,690 --> 01:07:12,440 משתנה שמאוחסן ב מקום אחר על הערימה שלנו. 1276 01:07:12,440 --> 01:07:16,250 >> אז עכשיו אנחנו צריכים לחזור ל ערימה העיקרית, רשת חשמל משתנים מקומיים. 1277 01:07:16,250 --> 01:07:18,460 וכאן x שווה ל 10. 1278 01:07:18,460 --> 01:07:20,300 וכך אנחנו הולכים להדפיס 10 החוצה. 1279 01:07:20,300 --> 01:07:22,530 >> אז היא הייתה תקין לחלוטין. 1280 01:07:22,530 --> 01:07:25,053 אנחנו הולכים לי תפוקה של 100 ו -10. 1281 01:07:25,053 --> 01:07:25,553 כֵּן? 1282 01:07:25,553 --> 01:07:28,700 קהל: כאשר אתה malloc, זה ערימה או המחסנית שהיא [לא ברור]? 1283 01:07:28,700 --> 01:07:31,950 פרופסור: כאשר אתה malloc, אתה לוקח זיכרון מהערימה 1284 01:07:31,950 --> 01:07:32,830 והקצאתו. 1285 01:07:32,830 --> 01:07:34,950 כך שאין לך להתעסק עם כל זה. 1286 01:07:34,950 --> 01:07:38,100 אז אני מניח שממסעדה הגדולה כאן הוא משהו שנקרא היקף. 1287 01:07:38,100 --> 01:07:39,650 >> לאלו מכם שהיו ב פגישת הסקירה אתמול בלילה, 1288 01:07:39,650 --> 01:07:41,080 דיברנו בקצרה על זה. 1289 01:07:41,080 --> 01:07:45,380 היקף מגדיר כיצד ו כאשר המשתנים שלך קיימים. 1290 01:07:45,380 --> 01:07:48,050 או בתוך מה מסגרות לעשות המשתנים שלך קיימים. 1291 01:07:48,050 --> 01:07:51,690 >> פחות או יותר את הכלל בדרך כלל אצבע הוא, variables-- שלך אם אתה יוצר אותם 1292 01:07:51,690 --> 01:07:56,660 בתוך braces-- המתולתל הם קיימים רק בתוך סוגריים מסולסלים אלה. 1293 01:07:56,660 --> 01:08:00,312 >> כך למשל בפונקציה שלנו func, אתה רואה שתי פלטות אלה. 1294 01:08:00,312 --> 01:08:02,020 אם אתה יוצר שום דבר בתוכו, 1295 01:08:02,020 --> 01:08:06,500 רוב הסיכויים שכל מה שאתה עושה הוא יצירת ערימה ואחסון שיש. 1296 01:08:06,500 --> 01:08:07,430 אותו דבר בעיקרי. 1297 01:08:07,430 --> 01:08:09,950 זה רק מאוחסן בתוך עיקרי. 1298 01:08:09,950 --> 01:08:13,560 >> גם אתה רוצה להיות מאוד, מאוד זהיר. 1299 01:08:13,560 --> 01:08:18,310 בגלל היקף גם משאיל עצמו לדוגמאות שונות. 1300 01:08:18,310 --> 01:08:25,950 אז לדוגמה ל לולאה, לint i שווה 0. 1301 01:08:25,950 --> 01:08:28,460 אני הוא פחות מ, אני לא יודע, 10. 1302 01:08:28,460 --> 01:08:32,111 אני פלוס פלוס. 1303 01:08:32,111 --> 01:08:34,560 ויש לך את קוד הפנימי שלו, נכון? 1304 01:08:34,560 --> 01:08:38,830 >> איפה עושה משתנים זה, אני, למעשה קיים רק? 1305 01:08:38,830 --> 01:08:40,510 רק בתוכך ללולאה. 1306 01:08:40,510 --> 01:08:43,640 אז אני בטוח שרבים מכם הבחורים יש לי כנראה נתקל שגיאה בעת זו 1307 01:08:43,640 --> 01:08:45,930 אתה עושה תוכניות בpsets. 1308 01:08:45,930 --> 01:08:49,990 כמה מכם ניסו להשתמש i מחוץ ללולאה והייתה שגיאה? 1309 01:08:49,990 --> 01:08:53,310 כמו מספרים שלמים unreferenced או משהו כזה? 1310 01:08:53,310 --> 01:08:56,069 >> הסיבה שזה קורה הוא כי כאן אתה 1311 01:08:56,069 --> 01:08:59,109 יצירת משהו שרק קיים בתוכך ללולאה. 1312 01:08:59,109 --> 01:09:01,972 ואם אתה מנסה להשתמש בו, אני לא למעשה קיימות מחוצה לו. 1313 01:09:01,972 --> 01:09:04,930 אז בעצם מחשב אומר, אני לא יודע על מה אתה מדבר. 1314 01:09:04,930 --> 01:09:08,689 כל מה שאני יודע הוא שאני היה כאן, אבל עכשיו כבר לא. 1315 01:09:08,689 --> 01:09:12,580 >> אז אם אני היה ליצור ללולאה בתוך, נכון? 1316 01:09:12,580 --> 01:09:19,080 ואני הולך ליצור עוד, כמו j int, ויש לו לעשות מה ש. 1317 01:09:19,080 --> 01:09:23,689 ויש לך את קוד פנימי של לולאה ש, j קיים רק כאן. 1318 01:09:23,689 --> 01:09:26,029 אבל זה קיים גם בתוכי. 1319 01:09:26,029 --> 01:09:29,310 וכך j קיים רק בתוך זה ללולאה, 1320 01:09:29,310 --> 01:09:33,850 ואילו אני קיים בכל הדבר. 1321 01:09:33,850 --> 01:09:34,500 >> כולם ברורים? 1322 01:09:34,500 --> 01:09:37,416 אותו דבר עם הצהרות מותנות אם אתה רוצה ליצור משהו. 1323 01:09:37,416 --> 01:09:40,390 אותו דבר עם לולאות בעוד שאם אתה רוצה ליצור משהו. 1324 01:09:40,390 --> 01:09:42,390 זה משהו שיש מאוד, מאוד זהיר לגבי. 1325 01:09:42,390 --> 01:09:45,681 אז זה היה בעיה ממש טובה ב לחוש שהפגין שני דברים. 1326 01:09:45,681 --> 01:09:47,160 זה הודגם לראשונה, היקף. 1327 01:09:47,160 --> 01:09:49,550 וזה הוכיח גם הקצאת זיכרון. 1328 01:09:49,550 --> 01:09:54,130 מכיוון שאתם צריכים לדעת ש פונקציות לגדול כלפי מעלה בערימה. 1329 01:09:54,130 --> 01:09:56,710 וכי כאשר אתה קורא פונקציות, אתה יוצר 1330 01:09:56,710 --> 01:09:59,060 בעצם ערימה חדשה של זיכרון. 1331 01:09:59,060 --> 01:10:02,100 זה שונה מאוד מ מה הוא זיכרון החשמל שלך. 1332 01:10:02,100 --> 01:10:03,300 כֵּן. 1333 01:10:03,300 --> 01:10:03,800 וואו! 1334 01:10:03,800 --> 01:10:05,470 כולם אישור על זה? 1335 01:10:05,470 --> 01:10:06,750 זה היה מבלבל. 1336 01:10:06,750 --> 01:10:09,380 נושאים טובים מאוד לעבור על, בגלל שאתה כנראה 1337 01:10:09,380 --> 01:10:12,255 הולך לקבל קצת מסובך דברים כאלה על החידון. 1338 01:10:12,255 --> 01:10:13,350 כֵּן. 1339 01:10:13,350 --> 01:10:13,850 לְהִתְקַרֵר. 1340 01:10:13,850 --> 01:10:16,014 1341 01:10:16,014 --> 01:10:18,430 אני אשים לך לקבל 100 על אחד קו ולאחר מכן 10 בצד השני. 1342 01:10:18,430 --> 01:10:21,468 כן, טוב מאוד. 1343 01:10:21,468 --> 01:10:26,350 >> אוקיי, עכשיו אתם תקבלו ההזדמנות להיות TAS. 1344 01:10:26,350 --> 01:10:30,600 אתה מקבל לענות על כל יפה מיילים שאני מקבל לפעמים. 1345 01:10:30,600 --> 01:10:34,290 >> אז, אנדי היקר, אני רואה אני חושב שמשהו לא השתבש עם מהדר שלי. 1346 01:10:34,290 --> 01:10:37,910 אני בטוח שהקוד שלי הוא נכון, אבל אני כל הזמן מקבל שגיאת סגמנטציה 1347 01:10:37,910 --> 01:10:39,074 בכל פעם שאני מפעיל. 1348 01:10:39,074 --> 01:10:39,740 מה הולך? 1349 01:10:39,740 --> 01:10:42,844 אנא עזור, המון אהבה. 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> אם אתם קיבלו משהו כמו כי איך היית מגיב? 1352 01:10:49,410 --> 01:10:51,860 אלה הם למעשה נפוצים מאוד שאלות שנשאל אותך. 1353 01:10:51,860 --> 01:10:54,090 האם אם, אנו נספק לך תרחיש, ניתן לנו 1354 01:10:54,090 --> 01:10:56,350 הניחוש הטוב ביותר שלך על מה שקורה. 1355 01:10:56,350 --> 01:11:00,710 למישהו יש דקירה במה קורה? 1356 01:11:00,710 --> 01:11:02,654 כֵּן? 1357 01:11:02,654 --> 01:11:06,056 >> קהל: dereferenced אולי null, משהו כמו המצביע 1358 01:11:06,056 --> 01:11:08,924 הוא מצביע על משהו null. 1359 01:11:08,924 --> 01:11:11,590 פרופסור: כן, זה יהיה דוגמא כאשר שיקרה. 1360 01:11:11,590 --> 01:11:14,467 אבל מה התמונה הגדולה יותר ממה שקורה כאן? 1361 01:11:14,467 --> 01:11:17,050 קהל: האם זה שאתה מנסה לגשת לזיכרון שאתה לא 1362 01:11:17,050 --> 01:11:18,175 אמורה להם גישה ל? 1363 01:11:18,175 --> 01:11:19,200 פרופסור: בדיוק. 1364 01:11:19,200 --> 01:11:24,800 אז לחשוב על אשמת SEG, את גבולות, שטח מוגבל בזיכרון 1365 01:11:24,800 --> 01:11:27,780 כי אתה לא צריך להיות נוגע ללב. 1366 01:11:27,780 --> 01:11:31,670 >> אז די הרבה כאשר אתה מנסה לindex-- כמו למשל, 1367 01:11:31,670 --> 01:11:34,110 שהכרזת מערך מאפס עד תשע. 1368 01:11:34,110 --> 01:11:37,360 אבל אתה מנסה לגעת -10 ש ערך, אין לך גישה לזה. 1369 01:11:37,360 --> 01:11:38,694 מכיוון שאתה לא הכריז עליה. 1370 01:11:38,694 --> 01:11:40,943 וכך המחשב שלך הולך להסתכל על זה כמו להיות, 1371 01:11:40,943 --> 01:11:43,440 אה אה, אתה מנסה ללכת מחוץ לגבולות מדד. 1372 01:11:43,440 --> 01:11:45,270 אני הולך לתת לך אשמת פילוח. 1373 01:11:45,270 --> 01:11:46,590 >> תחשוב על כמגזר, נכון? 1374 01:11:46,590 --> 01:11:49,665 קטע נוסף, האשמה היא כאשר אתה מנסה לפרוץ משהו 1375 01:11:49,665 --> 01:11:50,790 ואתה לא צריך להיות שם. 1376 01:11:50,790 --> 01:11:53,660 אשמה היא בכל עת פילוח אתה מנסה לגעת בדברים 1377 01:11:53,660 --> 01:11:54,970 כי אתה לא צריך להיות נוגע ללב. 1378 01:11:54,970 --> 01:11:56,815 >> דוגמאות נפוצות כל כך הן מדד. 1379 01:11:56,815 --> 01:11:58,940 כמובן, אם אתה מנסה לגעת שהיה ריק, 1380 01:11:58,940 --> 01:12:00,220 שגם יעבוד גם כן. 1381 01:12:00,220 --> 01:12:02,300 אם המצביע שלך מנסה לגעת בדברים שלא צריך לגעת, 1382 01:12:02,300 --> 01:12:03,730 שגם יכול לעבוד גם כן. 1383 01:12:03,730 --> 01:12:07,120 רוב בדרך כלל תמצאו רואה את זה במערך. 1384 01:12:07,120 --> 01:12:07,740 כולם טובים? 1385 01:12:07,740 --> 01:12:10,374 >> קהל: אז אם אתה רוצה כדי לגשת לנקודת ה -10 1386 01:12:10,374 --> 01:12:12,290 ויש רק גבול של תשע או משהו. 1387 01:12:12,290 --> 01:12:13,160 >> פרופסור: כן, בדיוק. 1388 01:12:13,160 --> 01:12:13,660 פחות או יותר. 1389 01:12:13,660 --> 01:12:15,930 1390 01:12:15,930 --> 01:12:16,430 לְהִתְקַרֵר. 1391 01:12:16,430 --> 01:12:19,070 1392 01:12:19,070 --> 01:12:19,920 >> אנדי היקר. 1393 01:12:19,920 --> 01:12:23,440 אז יש לנו נפלא אלה דברים בשם מיני. 1394 01:12:23,440 --> 01:12:25,472 אם מיזוג sort-- כפי ש ראה בדוגמא כאשר 1395 01:12:25,472 --> 01:12:27,180 דוד עשה את כל דבר בclass-- מדוע, 1396 01:12:27,180 --> 01:12:29,760 אם זה כל כך הרבה יותר מהר מאשר כל אחד מהמינים האחרים, 1397 01:12:29,760 --> 01:12:33,310 למה אנחנו אפילו טרחתי לדעת כל אחד מהסוגים האחרים? 1398 01:12:33,310 --> 01:12:35,100 >> מה היא שאלה זו באמת שואלת אותך? 1399 01:12:35,100 --> 01:12:36,659 מה word-- שלוש 1400 01:12:36,659 --> 01:12:37,950 קהל: מה trade-off? 1401 01:12:37,950 --> 01:12:38,530 פרופסור: בדיוק. 1402 01:12:38,530 --> 01:12:39,946 זה מה ששואל את השאלה. 1403 01:12:39,946 --> 01:12:43,682 מה התחלופה בין מיזוג סוג פסוקים כל מיני אחרים? 1404 01:12:43,682 --> 01:12:45,850 >> קהל: לוקח זיכרון, נכון? 1405 01:12:45,850 --> 01:12:47,720 >> פרופסור: האם אתה להסביר שקצת יותר? 1406 01:12:47,720 --> 01:12:49,490 ראשית בואו להסביר חנות מיזוג. 1407 01:12:49,490 --> 01:12:50,970 איך מיזוג הסוג עובד? 1408 01:12:50,970 --> 01:12:55,220 >> קהל: אז זה עובד על ידי חלוקת הכל למחצית 1409 01:12:55,220 --> 01:13:00,660 ואז לשים אותו ביחד והקצאה מחדש זה כדי, 1410 01:13:00,660 --> 01:13:02,862 כמו בכל פעם שלמזג את הסטים. 1411 01:13:02,862 --> 01:13:03,820 פרופסור: די הרבה. 1412 01:13:03,820 --> 01:13:06,861 אז אני יכול לצייר את זה, אבל זה היית לקחת לי חמש דקות כדי למשוך אותו החוצה. 1413 01:13:06,861 --> 01:13:10,220 מסתכל אחורה על שקופיות הסעיף שבו אנחנו מכוסים סוג מיזוג. 1414 01:13:10,220 --> 01:13:10,790 בְּדִיוּק. 1415 01:13:10,790 --> 01:13:13,406 >> לכן דרך מיזוג יצירות מסוג זה מחלק דברים במחצית, 1416 01:13:13,406 --> 01:13:15,780 ואז זה פשוט נראה ב ערכים הראשונים של כולם 1417 01:13:15,780 --> 01:13:17,000 וממיין רק ש. 1418 01:13:17,000 --> 01:13:20,364 ברציפות יוצר מערכים חדשים ו מכניס. דברים יותר ויותר על מנת 1419 01:13:20,364 --> 01:13:23,030 וכך בעוד שבאמת, באמת מהר כי הוא-- אתה יודע, 1420 01:13:23,030 --> 01:13:25,380 חיפוש בינארי הוא יומן n של n. 1421 01:13:25,380 --> 01:13:27,880 אתה יוצר כל כך הרבה מערכים שונים שאתה 1422 01:13:27,880 --> 01:13:29,700 באמצעות כמות עצומה של זיכרון. 1423 01:13:29,700 --> 01:13:33,080 וכך בזמן שהוא, המסחר מחוץ מהר יותר כאן הוא שאתה משתמש יותר בזיכרון. 1424 01:13:33,080 --> 01:13:38,490 >> וכך, רמז, מיני וחיפושים היו מכוסים הרבה יותר השנה 1425 01:13:38,490 --> 01:13:41,610 ממה שהם היו בשנים קודמות. 1426 01:13:41,610 --> 01:13:45,100 אתם צריכים לראות את זה בא לידי ביטוי בהתאם על החידון. 1427 01:13:45,100 --> 01:13:49,160 הייתי בהחלט הולכים לבלות את הזמן על מה כל מיני השונים 1428 01:13:49,160 --> 01:13:52,320 הם, איך חיפוש בינארי, איך יניארי עבודת חיפוש. 1429 01:13:52,320 --> 01:13:54,750 איך אולי פסאודו קוד קוד אותם החוצה. 1430 01:13:54,750 --> 01:13:55,950 מה הם זמני הריצה? 1431 01:13:55,950 --> 01:13:59,210 משהו כמו פעמים ריצה הוא מאוד קל להעתיק למטה על גיליון פתק, 1432 01:13:59,210 --> 01:13:59,710 יָמִינָה? 1433 01:13:59,710 --> 01:14:01,420 >> זה ממש קשה כשאתה באמצע המבחן 1434 01:14:01,420 --> 01:14:02,390 ואתה צריך להבין את זה. 1435 01:14:02,390 --> 01:14:03,160 העתק אותו. 1436 01:14:03,160 --> 01:14:05,550 אני מבטיח לך שאתה הולך צריך לדעת את זה. 1437 01:14:05,550 --> 01:14:06,860 מה הן הפשרות? 1438 01:14:06,860 --> 01:14:10,064 במקרה הגרוע ביותר, תרחישי מקרה הטובים ביותר לכולם, מאוד להכיר. 1439 01:14:10,064 --> 01:14:10,564 כֵּן? 1440 01:14:10,564 --> 01:14:12,730 >> קהל: האם אנחנו צריכים יודע איך קוד מיון מיזוג? 1441 01:14:12,730 --> 01:14:15,470 כמו, אנחנו צריכים זוכר את רקורסיבית? 1442 01:14:15,470 --> 01:14:18,950 >> פרופסור: אני מאוד בספק, פשוט כי זה כמו מסובך למדי. 1443 01:14:18,950 --> 01:14:22,282 אבל זה לא יכול להיות infeasible אם אבקש ממך להשתמש בפסאודו קוד אותו. 1444 01:14:22,282 --> 01:14:22,781 כֵּן. 1445 01:14:22,781 --> 01:14:25,470 1446 01:14:25,470 --> 01:14:29,170 >> כן, בסדר, עוד אחד. 1447 01:14:29,170 --> 01:14:31,387 זה אולי לבוא ב החתיכה האחרונה שאתה בקצת. 1448 01:14:31,387 --> 01:14:42,101 1449 01:14:42,101 --> 01:14:43,090 כֵּן? 1450 01:14:43,090 --> 01:14:44,930 האם כולם שמעו את זה? 1451 01:14:44,930 --> 01:14:48,360 >> אוקיי, אז די הרבה ראשון של כל מה הסוג, של תכנית 1452 01:14:48,360 --> 01:14:51,000 יהיה נותנת לך פלט כמו זה? 1453 01:14:51,000 --> 01:14:54,350 זוכר ששאלנו אותך ללמוד על זה סוג חדש של באגים כלי? 1454 01:14:54,350 --> 01:14:57,340 מה היה שמו של אותו? 1455 01:14:57,340 --> 01:14:59,460 Valgrind, תקין 1456 01:14:59,460 --> 01:15:02,600 >> זו הייתה תכנית שבי אתה יכול לקרוא לזה יכול 1457 01:15:02,600 --> 01:15:05,940 לעקוב אחר כל הזיכרון שאתה באמצעות בתכנית שלך וקורה. 1458 01:15:05,940 --> 01:15:11,090 אז אם יש לך משהו, כמו, בהחלט איבד, 40 בתים בבלוק אחד. 1459 01:15:11,090 --> 01:15:14,870 כנראה שאתה לא לזכור כדי לשחרר אותו. 1460 01:15:14,870 --> 01:15:18,710 כי אם אתה משתמש בבתים של זיכרון, זה אומר שאתה כבר נצפה שזיכרון, 1461 01:15:18,710 --> 01:15:20,240 אבל לא היית מסוגל לשחרר. 1462 01:15:20,240 --> 01:15:21,948 אז אתה רוצה לעשות בטוח שאתה גם 1463 01:15:21,948 --> 01:15:31,420 באמצעות free-- זה function-- לשחרר את כל 1464 01:15:31,420 --> 01:15:34,930 של הזיכרון מוקם מחדש על ידי malloc. 1465 01:15:34,930 --> 01:15:35,500 >> לְהִתְקַרֵר. 1466 01:15:35,500 --> 01:15:37,140 אז שקופית זו, תהיה לי את זה. 1467 01:15:37,140 --> 01:15:41,050 זה בכל מקום בהרבה הרצאות, בהרבה שקופיות סעיף. 1468 01:15:41,050 --> 01:15:44,254 אתה באמת רוצה לוודא אתה פשוט יודע את כל זה. 1469 01:15:44,254 --> 01:15:47,170 או בגיליון הפתק שלך או אם אתה רוצה לזכור אותה, אל תהסס. 1470 01:15:47,170 --> 01:15:48,836 זה באמת, באמת, באמת חשוב. 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> גם טוב מאוד שאלה שאפשר לשאול. 1473 01:15:56,890 --> 01:16:00,320 למה הוא מבט sort-- הבחירה ב בחירת sort-- כל זמני הריצה 1474 01:16:00,320 --> 01:16:02,060 הם n בריבוע. 1475 01:16:02,060 --> 01:16:06,714 לא משנה כמה הרשימה מגיעה ל אתה כ, אז למה הוא sort-- בחירה 1476 01:16:06,714 --> 01:16:08,630 אני אתן לכם 30 שני לחשוב על זה. 1477 01:16:08,630 --> 01:16:10,700 כי זה סוג של מבלבל. 1478 01:16:10,700 --> 01:16:12,710 זה כרוך קצת מחשבה רעיונית. 1479 01:16:12,710 --> 01:16:16,470 למה לרוץ הפעמים להיות זהות ב שני תרחישי המקרה הגרועים ביותר והטובים ביותר? 1480 01:16:16,470 --> 01:16:28,850 1481 01:16:28,850 --> 01:16:30,000 >> כֵּן? 1482 01:16:30,000 --> 01:16:38,084 >> קהל: בגלל בחירת סוג כל עמדה או חלל במערך הקטן הזה 1483 01:16:38,084 --> 01:16:40,350 דבר או משהו כזה. 1484 01:16:40,350 --> 01:16:44,430 אז גם במקרה הטוב, גם אם הוא מסודרים בצורה מושלמת, 1485 01:16:44,430 --> 01:16:47,380 זה עדיין היה צריך להיות כמו, אישור, אחד. 1486 01:16:47,380 --> 01:16:49,000 במקום הראשון שלי יש לי אחד. 1487 01:16:49,000 --> 01:16:50,250 ולעבור את כולם. 1488 01:16:50,250 --> 01:16:51,249 אישור, אחד הוא הקטן ביותר. 1489 01:16:51,249 --> 01:16:53,053 ואז זה הולך שוב וכמו, אישור, שני 1490 01:16:53,053 --> 01:16:54,594 הוא הקטן ביותר של כל הדברים. 1491 01:16:54,594 --> 01:16:56,804 אבל זה עדיין יש ל לבדוק כל אחד ואחד. 1492 01:16:56,804 --> 01:16:57,470 פרופסור: כן. 1493 01:16:57,470 --> 01:17:00,490 כך למשל, בואו נגיד יש לנו רשימה, כבר מסודרים, 1494 01:17:00,490 --> 01:17:03,390 מערך אחד לחמש. 1495 01:17:03,390 --> 01:17:07,100 הדרך שמיני בחירה הוא ש הוא עובר, הוא בודק את שני אלה. 1496 01:17:07,100 --> 01:17:08,234 אז הוא בודק את שני אלה. 1497 01:17:08,234 --> 01:17:09,650 ואז הוא בודק, והוא בודק. 1498 01:17:09,650 --> 01:17:13,285 זה ממשיך לבדוק את כולם, ללא קשר לשאלה אם 1499 01:17:13,285 --> 01:17:14,160 זה מסודרים למעשה. 1500 01:17:14,160 --> 01:17:16,450 כי זה פשוט הדרך מהסוג עובד. 1501 01:17:16,450 --> 01:17:19,530 >> וכך שאלה זו היא כמו סוג של שאלה רעיונית נבקש. 1502 01:17:19,530 --> 01:17:21,430 איפה ראשון, לך יודע מה סוג הבחירה 1503 01:17:21,430 --> 01:17:23,304 הוא, נכון, כדי להיות מסוגל כדי לענות על השאלה. 1504 01:17:23,304 --> 01:17:26,200 אתה צריך להיות מסוגל להבין מושגית מה קורה. 1505 01:17:26,200 --> 01:17:30,760 ואז אתה יכול ליישם את זה וחושב, על אישור בואו רק לדמיין תרחיש מקרה הגרוע ביותר. 1506 01:17:30,760 --> 01:17:32,230 הם כולם בסדר יורד. 1507 01:17:32,230 --> 01:17:33,290 איך זה ישפיע עליו? 1508 01:17:33,290 --> 01:17:34,650 >> מה אם זה עולה כדי? 1509 01:17:34,650 --> 01:17:35,640 אם זה כבר מסודרים? 1510 01:17:35,640 --> 01:17:37,240 איך זה ישפיע על זמני הריצה? 1511 01:17:37,240 --> 01:17:40,270 ולאחר מכן בחירת סוג, תוכל להבחין כי זה לא משנה בעצם. 1512 01:17:40,270 --> 01:17:43,500 בגלל שאתה בודק את כל ערכים בלי קשר למה שקורה. 1513 01:17:43,500 --> 01:17:45,810 >> וכך דברים טובים לזכור. 1514 01:17:45,810 --> 01:17:50,290 מדוע חלק מהמינים שונים מהאחרים ואיך הכי טוב ותרחישי מקרה הגרועים ביותר 1515 01:17:50,290 --> 01:17:52,740 היה משפיע על כולם. 1516 01:17:52,740 --> 01:17:56,700 >> אני הולך באמת לפגוע במינים משום שיהיה בחידון. 1517 01:17:56,700 --> 01:17:57,199 כֵּן. 1518 01:17:57,199 --> 01:18:00,820 1519 01:18:00,820 --> 01:18:01,320 אוקיי. 1520 01:18:01,320 --> 01:18:05,590 יש שש דקות לסיום. 1521 01:18:05,590 --> 01:18:09,880 אני יכול לקחת את שלוש דקות של שאלות. 1522 01:18:09,880 --> 01:18:12,290 אני יכול גם להסתובב ל כמו 20 דקות אחרי הסעיף 1523 01:18:12,290 --> 01:18:13,850 אם אתה רוצה לשאול שאלות גם כן. 1524 01:18:13,850 --> 01:18:16,330 האם מישהו רק צריך באמת קצר שאלות או בעיות רעיוניות 1525 01:18:16,330 --> 01:18:17,360 הם לא ברורים עכשיו? 1526 01:18:17,360 --> 01:18:17,832 כֵּן? 1527 01:18:17,832 --> 01:18:19,720 >> קהל: האם אתה יכול לדבר קצת קצת על מפעילים סיביים האופרטור? 1528 01:18:19,720 --> 01:18:20,280 >> פרופסור: כן. 1529 01:18:20,280 --> 01:18:22,446 מפעילים אז סיביים האופרטור הם משהו שאתה כנראה 1530 01:18:22,446 --> 01:18:24,170 אולי פשוט רוצה לשים על גיליון שלך. 1531 01:18:24,170 --> 01:18:27,540 אז quickly-- אני לא רוצה ללכת יותר מדי לעומק 1532 01:18:27,540 --> 01:18:31,164 משום הרווארד, בסקירה שלהם פגישה, כיסתה אותו די טובה. 1533 01:18:31,164 --> 01:18:33,080 מפעיל סיבי האופרטור, יש חמש מהם, נכון? 1534 01:18:33,080 --> 01:18:41,370 >> יש הזה, שהוא x או פונקציה, יש אמפרסנד, אשר הוא ו. 1535 01:18:41,370 --> 01:18:44,050 צינור, שהוא או. 1536 01:18:44,050 --> 01:18:46,790 ואז יש לך שני סוגים שונים של משמרות. 1537 01:18:46,790 --> 01:18:50,610 >> אם אני נותן לך שני ערכים, אם אני נותן לך, כמו, אחד ואחד. 1538 01:18:50,610 --> 01:18:52,390 מה זה להעריך ל? 1539 01:18:52,390 --> 01:18:55,490 אם אני נותן לך נכון ואמיתי, נכון? 1540 01:18:55,490 --> 01:18:56,930 מה לגבי אמת או שקר? 1541 01:18:56,930 --> 01:18:57,830 עדיין נכון, נכון? 1542 01:18:57,830 --> 01:18:59,762 כי יש או. 1543 01:18:59,762 --> 01:19:01,220 אנחנו ככל הנראה אתן לך מספרים. 1544 01:19:01,220 --> 01:19:03,780 אז לזכור, אחד שווה נכון, אפס שווה שווא. 1545 01:19:03,780 --> 01:19:07,407 ואנחנו יכולים לתת לך את הדברים האלה ומבקש מכם לספר לנו מה קורה. 1546 01:19:07,407 --> 01:19:10,240 הרווארד מכסה אותו בראשון 10 דקות של פגישת המחקר שלהם 1547 01:19:10,240 --> 01:19:11,230 באמת, ממש טוב. 1548 01:19:11,230 --> 01:19:14,260 אז אתם רוצים לעשות בטוח שאתה מסתכל אחורה על זה. 1549 01:19:14,260 --> 01:19:16,387 >> קהל: האם pisa5 הולך להיות בחידון? 1550 01:19:16,387 --> 01:19:16,970 פרופסור: מס ' 1551 01:19:16,970 --> 01:19:18,240 אפילו לא מסתכל על pisa5 עכשיו. 1552 01:19:18,240 --> 01:19:18,810 זה קשה. 1553 01:19:18,810 --> 01:19:22,830 רק אפילו לא טורח להסתכל על pisa5. 1554 01:19:22,830 --> 01:19:25,665 >> עם זאת, כפי שכמה רמזים והצעות, אני 1555 01:19:25,665 --> 01:19:28,320 הייתי מציע לך להתחיל pisa5 ברגע שהחידון הוא מעל. 1556 01:19:28,320 --> 01:19:30,319 זה יהיה הכי קשה שבוע, אבל אז אתם 1557 01:19:30,319 --> 01:19:34,590 יועבר אותו על הגבעות של גלגול ירוק וגורים, 1558 01:19:34,590 --> 01:19:36,115 וזה בסדר גמור. 1559 01:19:36,115 --> 01:19:39,810 >> מחלקה זו מקבלת משמעותית קל יותר לאחר pset החמישי. 1560 01:19:39,810 --> 01:19:41,560 שעתי עבודה: קהל הוא יום ראשון, יום שני? 1561 01:19:41,560 --> 01:19:44,260 פרופסור: כן, אז שעתי עבודה תהיה ביום ראשון ליום השני לpset. 1562 01:19:44,260 --> 01:19:47,009 שעתי עבודת ערב במהות פשוט יהיה סקירה לחידון. 1563 01:19:47,009 --> 01:19:50,350 אם מישהו רוצה לבוא ולשאול TAS שאלה, אנחנו נהיה שם. 1564 01:19:50,350 --> 01:19:53,220 >> אני אקח את שאלה אולי אחד יותר אם למישהו יש שאלה? 1565 01:19:53,220 --> 01:19:53,809 כֵּן? 1566 01:19:53,809 --> 01:19:55,850 קהל: כאשר אתה בלוטות הגדרה, [לא ברור] 1567 01:19:55,850 --> 01:20:00,700 אם אתה אומר כוכב צומת ולאחר מכן הבא, עושה במחשב באופן אוטומטי 1568 01:20:00,700 --> 01:20:03,610 מבין שאתה בהתייחסו למצביע אחר? 1569 01:20:03,610 --> 01:20:04,580 >> פרופסור: מס ' 1570 01:20:04,580 --> 01:20:06,710 >> קהל: יש לך ל לקשר מחדש [לא ברור] זה? 1571 01:20:06,710 --> 01:20:09,270 >> פרופסור: אז בעצם struct של צומת, לזכור, 1572 01:20:09,270 --> 01:20:12,620 זה כמו שאתה יוצר את הצומת ו אז יש לך מצביע בשם הבא. 1573 01:20:12,620 --> 01:20:14,630 כל מה שאתה עושה הוא שיש המבנה שם. 1574 01:20:14,630 --> 01:20:16,387 אתה צריך להקצות שהמצביע במקום כלשהו. 1575 01:20:16,387 --> 01:20:18,470 אז המחשבים לא יודע מה הוא עושה עדיין. 1576 01:20:18,470 --> 01:20:20,250 אתה צריך בעצם להקצות אותו כש אתה יוצר רשימה המקושרת שלך. 1577 01:20:20,250 --> 01:20:22,170 וזה מה שבעיקר pset 5 יהיה ב. 1578 01:20:22,170 --> 01:20:24,106 אז אינו דואג כל זה עכשיו. 1579 01:20:24,106 --> 01:20:26,380 >> קהל: אז אנחנו לא צריכים להתמקד יותר מדי על קישור רשימה, רק 1580 01:20:26,380 --> 01:20:27,440 התפיסה הכללית? 1581 01:20:27,440 --> 01:20:30,980 >> פרופסור: רק די הרבה ערימות, תורים, רשימות קישור, עצים, שולחנות חשיש. 1582 01:20:30,980 --> 01:20:33,639 רק להיות מסוגל לדעת מה הם. 1583 01:20:33,639 --> 01:20:35,680 אנחנו לא הולכים לשאול אתה רוצה משהו ספציפי 1584 01:20:35,680 --> 01:20:39,300 כי אנחנו לא באמת עשינו pset שמכסה את כל זה עדיין. 1585 01:20:39,300 --> 01:20:45,540 >> אז בשתי דקות האחרונות שלפני אני מגדיר אותך חופשי להרוג את הבוחן הזה. 1586 01:20:45,540 --> 01:20:49,370 פחות או יותר, כמו, חושב על איך הרבה אתם הגעתם בכיתה זו. 1587 01:20:49,370 --> 01:20:52,820 >> אני זוכר ששבוע שני ממעמד זה, חלק מכם 1588 01:20:52,820 --> 01:20:55,720 לבלות שלוש שעות בכתיבת מים. 1589 01:20:55,720 --> 01:20:57,970 כמה זמן זה ייקח לך בחורים לכתוב מים עכשיו? 1590 01:20:57,970 --> 01:20:59,670 30 שניות, אולי? 1591 01:20:59,670 --> 01:21:01,810 תחשוב על כמה אתם למדו. 1592 01:21:01,810 --> 01:21:04,320 CS הוא נושא ממש, ממש קשה. 1593 01:21:04,320 --> 01:21:06,190 אין ספק בזה. 1594 01:21:06,190 --> 01:21:09,160 זה קשה, זה למה אף אחד לא חוקר אותו. 1595 01:21:09,160 --> 01:21:10,730 זה פשוט קשה. 1596 01:21:10,730 --> 01:21:11,650 וזה לגמרי בסדר. 1597 01:21:11,650 --> 01:21:14,150 >> ואני באמת גאה ש כולם עשה את זה רחוק זה. 1598 01:21:14,150 --> 01:21:16,380 Psets לא קל. 1599 01:21:16,380 --> 01:21:17,790 הם לוקחים הרבה זמן. 1600 01:21:17,790 --> 01:21:22,580 אתם, אני לעולם לא אבקש ממך לכתוב המשחק של 15 או Vigenere על pset. 1601 01:21:22,580 --> 01:21:24,160 אין צורך רק כדי להתחרפן על זה. 1602 01:21:24,160 --> 01:21:28,080 כל מה שאנחנו בודקים כאן הוא להעריך הידע הרעיוני שלך, כמו גם 1603 01:21:28,080 --> 01:21:31,524 כחלק מהמיומנויות הבסיסיות שלך של קידוד. 1604 01:21:31,524 --> 01:21:33,440 הבדיקה נועדה ל להיות ממש מאתגר. 1605 01:21:33,440 --> 01:21:36,180 כמו, הוא נועד לך לא לקבל 100. 1606 01:21:36,180 --> 01:21:39,880 זה גם נועד לך כנראה לא תוכל לסיים בדקת ה -75. 1607 01:21:39,880 --> 01:21:41,995 וזה לגמרי בסדר. 1608 01:21:41,995 --> 01:21:42,870 אני סטודנט בעצמי. 1609 01:21:42,870 --> 01:21:45,960 אני יודע, אני שונא את זה כשאני הולך מתוך חידון להיות כמו, חרא. 1610 01:21:45,960 --> 01:21:47,044 זה היה ממש קשה. 1611 01:21:47,044 --> 01:21:49,460 כנראה מה שקורה ל happen-- וזה בסדר לגמרי, 1612 01:21:49,460 --> 01:21:50,751 אני אומר לכם עכשיו. 1613 01:21:50,751 --> 01:21:53,190 האמצעים על הדברים האלה אינם גבוהים כלל וכלל. 1614 01:21:53,190 --> 01:21:55,360 >> ולאלה מכם ש כבר מקבל, כמו, 1615 01:21:55,360 --> 01:21:57,870 שלשות בסטי הבעיה שלך, זה לא אומר שאתה 1616 01:21:57,870 --> 01:21:59,536 הולך לקבל 60 אחוזים בכיתה זו. 1617 01:21:59,536 --> 01:22:01,440 אם אתה מקבל 60% על חידון, שלא 1618 01:22:01,440 --> 01:22:03,330 אומר שאתה הולך תקבל D בכיתה זו. 1619 01:22:03,330 --> 01:22:05,740 אנו רואים, במיוחד אני, ל אלו מכם בסעיף שלי, 1620 01:22:05,740 --> 01:22:07,406 אני רואה כמה קשה לכם כל עובד. 1621 01:22:07,406 --> 01:22:09,190 ואני לעקוב אחר ש. 1622 01:22:09,190 --> 01:22:11,420 >> אתם יהיו בסדר. 1623 01:22:11,420 --> 01:22:14,580 אין זיכרון מוסדי של אושר בסוף הסמסטר. 1624 01:22:14,580 --> 01:22:16,840 כי כל ילדי הרווארד אומרים לי החברים שלהם, אה, אתה תהיה בסדר. 1625 01:22:16,840 --> 01:22:18,381 אף אחד לא אומר לכם את זה כאן. 1626 01:22:18,381 --> 01:22:20,950 אז אני חייב לומר לכם שכאן. 1627 01:22:20,950 --> 01:22:22,280 >> אתם יהיו בסדר. 1628 01:22:22,280 --> 01:22:24,080 אני כל כך גאה בכולכם. 1629 01:22:24,080 --> 01:22:25,680 המבחן יהיה קשה. 1630 01:22:25,680 --> 01:22:28,140 ללמוד על זה, ולאחר מכן רק לזרוק אותו. 1631 01:22:28,140 --> 01:22:31,280 תתכונן ללמוד דברים חדשים. 1632 01:22:31,280 --> 01:22:33,990 ולאכול ממתקים. 1633 01:22:33,990 --> 01:22:35,940 יש לנו יש לי המון ממתקים. 1634 01:22:35,940 --> 01:22:37,760 >> לישון טוב בלילה. 1635 01:22:37,760 --> 01:22:40,420 לא לא לישון, כי זה יהיה ממש רע. 1636 01:22:40,420 --> 01:22:41,490 CS הוא הרבה היגיון. 1637 01:22:41,490 --> 01:22:44,960 אם אתה לא ישן, אתה לא יכול לתפקד, והמוח שלך לא יכול לתפקד. 1638 01:22:44,960 --> 01:22:48,780 ואני אהיה כאן לצד 20 דקות אם מישהו רוצה להסתובב. 1639 01:22:48,780 --> 01:22:51,150 אתם הולכים להרוג אותו. 1640 01:22:51,150 --> 01:22:53,000 בהצלחה. 1641 01:22:53,000 --> 01:22:55,663