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 Списки Link збираєтеся бути покриті на вікторині. 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 Ви ці речі, звані вузли, які є структурами. 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 Всі вузол є тип структури. 53 00:02:32,210 --> 00:02:36,090 Пам'ятайте, структура, якщо ви хотіли щоб створити певний тип змінної 54 00:02:36,090 --> 00:02:39,850 в С, не вже існує, ви, як програміст, 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 заголовок ЬурейеЕ структури, який говорить компілятору Я 60 00:02:57,170 --> 00:02:59,640 о, щоб створити структури. 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 компілятор знає, ОК що це кінець моєї структури. 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 як з фруктовими Loops коли ви були маленьким. 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 Може хто-небудь побачити, що проблема якщо ми повинні були першою разименованія 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 Або, якщо ви випадково разименовать одного 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 Ця сторінка існує зв'язок що говорить "Про Вікторина Zero." 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 в Z, перейдіть до Девіс аудиторії. 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 ПРОФЕСОР: виведення Z, ви збираєтеся йти в зал Девіс. 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 Так, виведення Z, ви збираєтеся щоб перейти до Девіс 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 до 2:15 по середах і 2:30, щоб 3: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 вона дуже природно бути стані, що autocompleted 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 is-- я зібрав деякі проблеми практики 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, яка дорівнює нулю через дев'ять, а також через F. 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 >> Таким чином, перший одно-- одна один, одна одну, один, один, один один. 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 F. Таким чином, один, один, один, один, один, один, один, одним в шістнадцятковій все це є 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 Це буде то від нуля до F. 414 00:23:33,270 --> 00:23:35,722 >> Тут також буде то від нуля до F. 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 5а. 428 00:24:30,470 --> 00:24:31,340 Добре. 429 00:24:31,340 --> 00:24:37,050 Таким чином, це тут було be-- ви хочете щоб сказати нам, як ви отримали це? 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 >> АУДИТОРІЯ: Так що ми будемо always-- 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 і включають в себе хештегом Стандартна бібліотека 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 основний (порожнечу), що робить анулюванню тут маю на увазі тут, на третій лінії? 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 ID is-- Я думаю, що це 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 побутової, який 632 00:34:45,300 --> 00:34:46,389 відрізняється від ID. 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 Один називається с і один називається т. 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 він як і раніше друкує, "You набрали різні речі! " 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 Рядкові М-О-М для 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 Я винаходячи this-- дорівнює нулю. 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 створювати щось під назвою символ зірки. 691 00:37:29,330 --> 00:37:34,470 Які все це є покажчиком на рядок або масив символів. 692 00:37:34,470 --> 00:37:39,480 >> І тому в даному прикладі, якщо я були вхідного M-O-м шляху 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 >> АУДИТОРІЯ: Чи можемо ми спробувати разименовать покажчик і перевірити через масив? 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 Ми могли разименованія покажчика і насправді йти і доступ 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 >> АУДИТОРІЯ: [нерозбірливо] разименовать це, ви просто покласти зірку [нерозбірливо] 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 І він був дуже це заплутаною справою зірка типу Т 771 00:41:17,690 --> 00:41:22,030 плюс один, де він буде інтегрувати через і перемістити покажчик? 772 00:41:22,030 --> 00:41:29,910 Чим простіше спосіб зробити це просто т I. 773 00:41:29,910 --> 00:41:31,090 >> Так що це просто масив. 774 00:41:31,090 --> 00:41:34,630 Таким чином, що б ви мати для цикл, який біг від нуля до I, де 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 АУДИТОРІЯ: Так що це для разименованія кожен один символ, якщо ми були фактично 794 00:42:17,996 --> 00:42:21,044 писати цей код, ми може просто зробити т дужки I 795 00:42:21,044 --> 00:42:22,460 подобається із зіркою перед ним? 796 00:42:22,460 --> 00:42:27,700 >> ПРОФЕСОР: Так, дорівнює дорівнює S Кронштейн я, а потім рухатися I 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 Таким чином, ви можете припустити, що привіт буде п'ять, Н-Е-Л-Л-О. 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 пропуск в, напівкоксу зірка, або рядок, покажчик на рядок називають с. 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 Може i-- ви його отримали. 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 ІНТ просто означає, що ви буде повернення ціле. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> Що це символ зірки з? 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 І те, що майже Те ж саме, як напівкоксу зірки? 901 00:51:04,142 --> 00:51:04,850 АУДИТОРІЯ: String? 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 Мовляв, не smush все на одній лінії. 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, п дорівнює нулю. 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 Це нульова термінатора, що зворотна похила риска нулю. 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 >> АУДИТОРІЯ: І. 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 Пам'ятайте одну цитату для напівкоксу, подвійні лапки для рядка. 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 І в той час як ми не в кінці цього Рядок, яка є нульовим термінатором. 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 І врешті-решт, колись ми вдарив нульовий термінатор, 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 покажчик, що було занадто великий пам'яті, це дасть вам нуль, вірно? 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 Так тут, ви могли б зробити, якщо їй дорівнює нулю дорівнює, повертати одне. 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 А так все це рядок is-- для Наприклад, якщо ми хочемо введення привіт, 1054 00:57:00,110 --> 00:57:05,490 було б Н-Е-Л-Л-О Обернена коса риска нулю, вірно? 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, воно не може бути нульовим. 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 Так будьте дуже обережні при диференціюванні різниця між нулем 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-- I не знаю, якщо ми збираємося 1086 00:58:32,280 --> 00:58:39,080 попросити вас запам'ятати, який капіталі або Столиця Z, або нижній регістр або нижній регістр 1087 00:58:39,080 --> 00:58:42,640 г в 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 >> АУДИТОРІЯ: Може, ми просто Поліцейський і зробити хештегом 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 Я н а рахунки, але, вам знаєте, все, що пливе човен. 1157 01:00:49,176 --> 01:00:51,092 АУДИТОРІЯ: Зачекайте, так що ми не доведеться хештегом 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 Я міг би назвав його все, але я хочу, щоб назвати його функ. 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 Таким чином, все, що я роблю в моїй основної функції створює ціле х дорівнює 10. 1180 01:01:55,430 --> 01:02:00,490 Я дзвоню своєму функцію Func, а потім щось друкувати. 1181 01:02:00,490 --> 01:02:02,840 >> І тоді це насправді те, що функ робить. 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 х дорівнює 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 х дорівнювати 10. 1229 01:05:14,310 --> 01:05:17,670 У нашій основної функції ми створення змінну х. 1230 01:05:17,670 --> 01:05:20,590 Ми встановлюємо, що дорівнює 10. 1231 01:05:20,590 --> 01:05:24,200 Тут у вас є кілька х, і ви установка, що дорівнює 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 х дорівнює 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 >> Так це буде створювати х тут. 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 Так що тепер у нас є два різних х, що являють собою два зовсім різні речі. 1254 01:06:20,980 --> 01:06:24,470 Тоді ми йдемо до друку з цілого х. 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 Що це х в основний? 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 >> Який сенс х зараз? 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, х дорівнює 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 А ось х дорівнює 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 АУДИТОРІЯ: Коли ви Танос, є його купа або стек, який [нерозбірливо]? 1283 01:07:28,700 --> 01:07:31,950 ПРОФЕСОР: Коли ви Танос, ви приймаєте пам'ять з купи 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 я дорівнює 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 Як недозволених посиланнях чисел або щось подібне? 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 І я збираюся створити інший, як INT J, і він зробити що-небудь. 1317 01:09:19,080 --> 01:09:23,689 І у вас є код всередині що цикл, тільки J існує тут. 1318 01:09:23,689 --> 01:09:26,029 Але також існує в I. 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 >> Добре, тепер ви, хлопці, отримаєте шанс бути ТП. 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 >> АУДИТОРІЯ: Може бути разименовиваются NULL, то, як покажчик 1358 01:11:06,056 --> 01:11:08,924 вказує на те нуль. 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 АУДИТОРІЯ: Що компроміс? 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 Перш за все, давайте пояснити Merge магазин. 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 І так, що в той час як насправді, насправді швидко, тому що ви знаєте, it's--, 1420 01:13:23,030 --> 01:13:25,380 двійковий пошук н лог н. 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 Але воно не може бути неможливим, якщо ми просимо Вас використовувати псевдокод його. 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 пам'яті перерозподіляються по Танос. 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 Чому погляд Selection sort-- на Вибір sort-- весь час автономної роботи 1474 01:16:00,320 --> 01:16:02,060 які п в квадраті. 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 Чому б часи Run бути те ж саме в і гірші і кращі сценарії тематичних? 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 Де-перше, вам знаю, щось Selection 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 >> Там ця, яка х або функція, є амперсанд, який є і. 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 Якщо хтось хоче прийти і запитати Тас питання, ми будемо там. 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 >> ПРОФЕСОР: Тому в основному структура з вузла, пам'ятайте, 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 провести 3:00 писати води. 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