ПРОФЕСОР: Так порядок денний на цьому тижні, не те, що багато речей. Але ми сподіваємося, дуже, дуже корисно і ставлення до вас, хлопці на цьому тижні. Але ми збираємося провести, може бути 15, 20 хвилин просто швидко говорити про список посилань. Списки Link збираєтеся бути покриті на вікторині. Так що, можливо, було б дуже корисно щоб дізнатися трохи про те, що є. Ми збираємося провести переважна Більшість сьогоднішніх розділі переходячи вікторини нуль проблем практики. І тоді ми, можливо, будете економити 20, 30 хвилин в кінці для будь-яких зберігаються питань хто має. А потім, в останній п'ять хвилин, я збираюся виступити з промовою насоса для вікторини. Ви, хлопці, всі хочемо бути тут для цього. Тому що це буде гарний час. Гаразд, так що деякі Матеріал на список посилань. Як правило, вони структуровані є у вас є те, що називається вузол, вірно? Ви ці речі, звані вузли, які є структурами. Я піду над тим, як створити вузол на наступному слайді. Але по суті всі пов'язані списків це дані, була нанизані за допомогою покажчиків. І тому у нас є перевага використання пов'язаного списку протягом, можливо, як масив, це той факт, що в масиві вам потрібна одна безперервний блок пам'яті все в тому ж місці, один за одною, щоб мати можливість цього. У той час як зв'язаний список, ви могли б мають випадкові шматочки пам'яті по всьому комп'ютеру нанизані покажчиками. І в цьому, як ви може отримати доступ до інформації що приходить один за одному, за іншим без необхідності просто величезний шматок пам'яті в комп'ютері десь. І так це один з найважливіших причин, чому ми використовуємо список посилань. По-друге, це дуже легко динамічно розмір список посилань, тому що в масиві, коли ви оголошуєте масив, у вас є певний набір значення. Скажімо, я хотів, щоб створити масив з 10 цілих чисел. Я створюю масив 10 цілі числа, і це все. Це 10. Я не знаю, що робити після цього. Якби я хотів, щоб зробити його 11, не може це зробити. Якщо я хочу, щоб зробити його 9, не може це зробити. У той час як у списку посилань, ви можете додавати і видаляти і вставляти скрізь, де ви хочете. Ви можете динамічно змінити розмір структурувати тут, структуру даних. І це дає нам багато більш додаткову гнучкість що ми зазвичай не є з масивами. Будь плутати на основний Структура, як список посилання або чому ми повинні використовувати один над масивом? Так, ми підемо по детально як насправді створити. Але це тільки частково загальний зміст прямо зараз. Прохолодний. І так масиви нанизані цих милих дрібниць звані вузли. Всі вузол є тип структури. Пам'ятайте, структура, якщо ви хотіли щоб створити певний тип змінної в С, не вже існує, ви, як програміст, може дійсно створити самі. І так цей тип даних Структура називається вузлом, фактично було створено нами, що не існує в C по собі. І так, що ви створити один у вас є заголовок ЬурейеЕ структури, який говорить компілятору Я о, щоб створити структури. Ми збираємося це ім'я "вузол". А всередині ми збираємося оголосити змінну в, який зберігати значення. І тоді ми також збираємося є вказівник називається "поруч" що вказує на наступний вузол в список посилань. І тоді ви закінчите, що від , Просто повторюючи вузол знову так компілятор знає, ОК що це кінець моєї структури. І тому в цьому випадку, ми начебто створення милий маленький масив Такі речі з Значення і з покажчиком. І ви можете зв'язати їх всі разом з цим вказівниками. Так що всі вони можуть бути свого роду нанизані в ланцюзі. Прохолодний. Ви можете почути, що трохи краще? АУДИТОРІЯ: Так. ПРОФЕСОР: Все правильно. Таким чином, шлях, який, як ви, хлопці, можете побачити, типовий список посилань структурована це у вас є голова. Ви маєте значення головного яка не час відзначив будь-яким іншим покажчиком. Але це буде вказувати на, або посилання, інший вузол. Вузол після буде посилатися на Вузол після цього, і так далі і тому подібне поки ви в кінцевому підсумку не потрапив кінець вашого списку посилань. І ви просто не будете мати покажчик є. І так, думаю, як, по ланцюжку, або навіть якщо кожен з вас, хлопці, зроблених, я не знаю як з фруктовими Loops коли ви були маленьким. Ви б рядок їх разом і носити їх на шиї. Думаєте, що це той же самий річ. Ви повинні ці маленькі речі, які ви може з'єднати разом, що точка до одного Після цього, в одному після це і так далі і тому подібне поки у вас є ланцюг структури даних що ви можете використовувати, як вам подобається. Таким чином, шлях, який ми б це як правило, вставити або видалити будь-який вузол за посиланням Список дуже відрізняється Залежно від місця, що вузол. Так, наприклад, через покажчики завжди вказуючи при певному значенні, при видаленні або вставити вузол, Ви хочете, щоб переконатися, що покажчик це все вказуючи на правильних речах. Так що, якщо ви хочете, щоб вставити потенційно новий вузол зі значенням одного всередині відсортованого посилання Список, всі ми знаємо, тут від картини, що відбувається в перейти в між головою і два, правильно? Тому що підходить прямо там. Але шлях, в якому ми б, що це спочатку разименованія покажчика з голови й відправлення, що до одного. Але ми прийдемо в завдання тут. Може хто-небудь побачити, що проблема якщо ми повинні були першою разименованія покажчик з голови до одного? Що проблема може біжимо в, якщо ми спробуємо щоб додати це до фронту нашого масиву? АУДИТОРІЯ: [нерозбірливо] ПРОФЕСОР: Точно. Так от у нас є вказівник, який був коли вказуючи від головки до двох. Але якщо ви позбутися цього покажчик, ви вказуєте його в один, ми тепер не мають ні найменшого поняття куди йти, щоб знайти два. Тому що, як я вже говорив, ви отримали гігант шматок пам'яті у вашому комп'ютері. Всі ці вузли міг випадково перемежовуються в будь-якому місці на вашому комп'ютері. І ви не знаєте, як щоб йти про пошук, що. І тому ви повинні мати покажчики вказуючи на всі вузли на кінці. Або, якщо ви випадково разименовать одного без першого присвоєння значення перше, ви просто хочу, щоб втратити все потім. Так що ми збираємося зробити, ви повинні спочатку хочете створити покажчик на вузол ви хочете вставити. Направте його туди, де ви хочу, щоб вставити його в, а потім після ви може вказувати голову до одного. Чи має це сенс для всіх тут? Відмінно. Думайте про це як раз як ланцюг. Якщо ви додаєте ланцюжок, це свого роду інтуїтивне як би ви йти про вставці, що. ОК, так що це насправді набагато коротше я думав, що це буде, в п'яти хвилинах поневіряння в списках зв'язку. Точно так само ви, хлопці, є Основна ідея, що це таке. Тут ми маємо порядку денного вікторини нульовий. Не дозволяйте цього залякати вас. Я знаю, що це багато інформації. Це виглядає дуже страшно. Це також багато, я думаю, CSC роду умовах. Такі речі, як шістнадцятиричних рядків, покажчики, виділення динамічної пам'яті дуже страшно звучать терміни. Але ми збираємося, щоб розірвати їх вниз, зробити деякі проблеми практики так що ви, хлопці, все готові для цього тесту. Як багато з вас, хлопці, є вже почав вивчати? ОК, ви, хлопці, ймовірно, хочете, щоб почати отримувати почав на що, бо вікторина завтра. Або четвер для деяких з вас. Так, таким чином ми збираємося йти над деякими проблемами практики. Якщо ви, хлопці, всі хочемо, щоб прийняти з аркуша паперу, олівець. Ми збираємося, щоб просто провести Переважна більшість сьогоднішніх розділі переходячи деякі, що так ви, хлопці, ідея про те, що очікує вікторини. ДОБРЕ. Пару матеріально Детальніше, а також, для кого хто не був у цьому зв'язку там, якщо Ви йдете в cs50.yale.edu, на передній Ця сторінка існує зв'язок що говорить "Про Вікторина Zero." Посилання приведе вас туди. Якщо ви не читали його, будь ласка, прочитайте його. Тому що він говорить вам дійсно важливо інформація про вікторині. Я збираюся здійснити це з що тільки тому, що фізично, якщо ви, хлопці, не знаю, де йти, у нас будуть проблеми. І тому, якщо ваш останній у відносинах з А в N, перейдіть до юридичної школи залу. І якщо ваші останні починається з P в Z, перейдіть до Девіс аудиторії. І це відноситься тільки до люди в розділі середу. Якщо ви приймаєте вікторину на Четвер, ви йдете в SSS 114 де ваш лекція, як правило, є. АУДИТОРІЯ: [нерозбірливо] ПРОФЕСОР: виведення Z, ви збираєтеся йти в зал Девіс. Я збираюся змінити це, вірно? Ах, так, ви просто не в змозі автоматично. Ах так, от ви Кріста. Так, мій поганий. Так, виведення Z, ви збираєтеся щоб перейти до Девіс Auditorim. Я збираюся виправити це, як тільки я завантажити. Так. І тоді теж щось Важливо увазі є те, що середа, якщо ви офіційно поступив в розділі середу, Ви повинні прийняти вашу вікторину в середу. І якщо ви зараховані в четвер, Ви повинні прийняти вашу вікторину четвер. І це в часи класу. Де, я думаю, це як 1:00 до 2:15 по середах і 2:30, щоб 3:45 по четвергах. Якщо у вас є нерозв'язні конфлікти, Виправдань Діна є Єдине, На жаль, ми можемо прийняти. Тому що у нас було Переважна більшість запитів для перемикання з середи на четвер. Які ми не можемо вшанувати якщо у нас є запит на Діна. ДОБРЕ. Тому, перш ніж почати на пара проблем практики, Я просто збираюся перейти на Корисні поради Енді успіху. Хлопці, коли ви вивчаєте, ви дійсно хочете практикуватися в написанні коду вручну. У перший раз я коли-небудь взяв вікторину CS, я не мав практика написання коду вручну до і це було надзвичайно шокує, як важко це було. Коли ви, хлопці, не потрапити в Звичка набравши зі всього, вона дуже природно бути стані, що autocompleted Кронштейни та коми там. Коли ви пишете його вручну, іноді це дуже, дуже легко забути коми, або забути, щоб закрити дужку, або забули закрити двокрапка, або щось подібне. Отже, коли ви пишете код вручну, це дуже різні почуття. Таким чином, ви хлопці, коли ви працюєте через деякі з проблем практики, було б добре, щоб дійсно практикувати сьогодні. Або завтра, я думаю, якщо ви приймаючи вікторини в четвер. По-друге, у нас є останній, як, вісім років стоїть практики вікторини онлайн. Тест цьому році, ймовірно, буде дуже, дуже схожі на всі з них. Вони всі дуже схожі. Ви начебто потрапити в стиль типу питань що ми просимо, тип Функції, які ми напишемо його в, і так далі, і так далі. Так що тренувальні тести, особливо при обмеженнях часу. 75 хвилин, щоб зробити вікторини не так багато часу. Це дуже, дуже довго. І так ви, хлопці, дійсно хочете щоб переконатися, що ви, хлопці, в звичку написання Код рукою швидко. Тому що ви не хочете, перший час, щоб побачити вікторину, довжина якого на вашому вікторини. Ви, хлопці, дійсно хочете, щоб переконатися, що ви дотримуєтеся заздалегідь. По-четверте, ви хочете, щоб розглянути лекційні та розділ гірки. Ви не повинні запам'ятовувати речі. Насправді, кожен дозволив один лист білого паперу нот, спереду і ззаду. Ви, хлопці, можете ввести або писати. Якщо ви опинитеся необхідності запам'ятовувати що-небудь, поклав її на цьому аркуші. Я гарантую вам, ви не хочете, щоб застряг в середині цього вікторини будучи, як, ах так, то, що це виконання такого роду проти такого роду. Просто покладіть його вниз і скопіюйте його прямо з вашого ноті листа. Тоді ви можете просто використовувати ваш мозок думати про проблеми замість того, щоб згадати факти. І так насправді скористатися з будь-яких деталей ніші що ви думаєте, вам потрібно запам'ятати, грюкнути його на розгляду листа. ОК, які-небудь питання матеріально-технічного забезпечення про вікторину перш ніж ми почнемо деякі проблеми вікторини дотримуєтеся? Так? АУДИТОРІЯ: у мене не було шансу подивитися на вікторині [нерозбірливо] але це буде Додаток в основному, або там теж буде, як питання знання? ПРОФЕСОР: Це багато. Так, так, що я буде описано вікторини is-- я зібрав деякі проблеми практики що я витягнув з усіх вікторин. Але ви побачите, що є два основних типи питань, які ми будемо просити вас. Одним з них є деталь дуже низький рівень речі. Ми дамо вам невеликий фрагмент коду і сказати, чи є помилка тут? Що б друк тут? Що цей код виробляти, і так далі. Так дуже низький рівень додаткові відомості. І, з іншого боку, ми будемо мати дуже Високий рівень питань, заснованих на знаннях. Чи можете ви пояснити, що Різниця між двійковий пошук і лінійний пошук? Чому ми хотіли б використовувати один над іншим? Можливо, те, що GDB? Чому ми хочемо, щоб використовувати GDB? Більш високий рівень, більш фундаментальний розуміння питання. Таким чином, ви побачите суміш два з них на вашому вікторини. Що-небудь ще, перш ніж ми прямо в неї? ДОБРЕ. АУДИТОРІЯ: Ще один. ПРОФЕСОР: О, ще один. Вибачте. АУДИТОРІЯ: Так, все в порядку. Так ви кажете, 75 хвилин занадто короткий, як це навряд чи що ми закінчимо? Або, як, 75 хвилин Саме стільки часу як ми повинні були б, якби ми були відповідно підготовлені? ПРОФЕСОР: ОК, так що Тест є складним завданням. Це, безумовно, цікаво. Ви опинитеся на короткий час. Ви, напевно, збирається вдарити, як 10, 15 хвилин, щоб йти, і, будучи, як, лайно. Я так багато залишилося зробити. І це абсолютно нормально. Все буде відчувати себе так само. Просто дуже добре обізнані про скільки часу у вас є. І ось чому я кажу вам, Хлопці роблять практики вікторини. Тому що це дійсно дає велике почуття чого вікторина збирається бути. Так що якщо ви опинитеся можливість закінчив практику вікторини в хорошому розмірі Час, ви можете виснажувати себе добре, то ви не будете мати проблеми в середу або в четвер. Прохолодний. Так що, якщо все wants-- Я думаю, у більшості людей є аркуші паперу вже. Я збираюся по суті тільки дати вам зразки питань, дати вам, хлопці, начебто, Кілька хвилин, щоб зробити їх. І ми будемо йти по як клас те, що відповіді на них. Так що це дуже типово ранній питання ми будемо прошу вас, просто перетворення число між різними базами. Бінарні, як ви, хлопці, можете Нагадаємо, це база два. Десяткова підставою 10, або те, що ми як люди, як правило, інтерпретувати. Шістнадцяткове підставу 16, яка дорівнює нулю через дев'ять, а також через F. Так що чотири числа я в прошу вас, хлопці, щоб перетворити тут. Я дам вам подобається, три чотири хвилини, щоб продумати, як ми б йти про вирішення цього. АУДИТОРІЯ: Ми дозволили калькулятори? ПРОФЕСОР: Ви не будете потрібно калькулятори, так. Я думаю, що основна Крім того, я думаю, всі ви, хлопці, буде запропоновано зробити. І тільки так я начебто є почуття , Коли кожен буде зроблено, подивіться вгору, хвиля, я не знаю ,, посмішка, виглядають щасливими, якщо ви зробили. Так. Можливо, ще пару хвилин. ОК, давайте привести його в. Я навмисно збирається дати вам хлопці менше часу ніж ви, ймовірно, потрібно зробити деякі з цих проблем, просто тому, що я хочу, щоб переконатися, що ми отримуємо через купу проблем. Так що не турбуйтеся, якщо ви не зробили є шанс, щоб закінчити. Всього в порядку, поки у вас є ідея про те, як йти про це. Так що давайте йти вперед і робити першу. Отже, спочатку, хто-небудь хоче сказати мені, в двійковому, що роблять кожен з цих цифр представляють з точки зору їх значення? Так? АУДИТОРІЯ: Два в Потужність нулю, два до одного. ПРОФЕСОР: Точно. Так. Право, так, як правило, коли ми перебуваємо в базі 10 Всі вони представляють, подібно, 10 до основи нулю, так? Це твоя своє місце. Все ваше місце 10 є є 10 в ступені одного. Місце вам 100 становить 10 до влади в два рази. Незалежно база ти в збирається робити з тієї ж самої речі, тільки з іншою підставою. Так двійковий, все, що є базою двох. Ви збираєтеся конвертувати всі цифри в два незалежно потужності з цієї цифри. І тому в цьому сенсі, ми може мати більш легкий шлях бути в змозі додати вгору або підсумувати всі номери в порядку перетворити в базу 10. Так само хтось хоче сказати мені, що Відповідь на перше з них знаходиться в базі десять? АУДИТОРІЯ: Два, [нерозбірливо] ПРОФЕСОР: Так. АУДИТОРІЯ: 42. ПРОФЕСОР: 42, там ви йдете. Так як ми отримали ця відповідь була по робити два перших, що в два. Плюс два третій, який вісім років. Плюс два п'ята особа, яка це все, що залишилося. Ви підвести їх, і це 42. Хто-небудь плутають про те, як ми отримали це? Так основна Крім того, як Я сказав, ви повинні бути в порядку. Якщо ні, ну, ми можемо практикувати це. Але це все в порядку. Прохолодний. Хто-небудь хоче, щоб дати мені відповісти на другий, а? 50? Добре. Будь плутають про те, як ми отримали, що або? Круто, я є відповіді на наступному слайді. Так що не турбуйся, якщо тобі потрібно скопіювати його. Отже, шістнадцяткове трохи складніше. але я збираюся показати вам, хлопці, ярлик про те, як це зробити. Так шістнадцятковій, а вас Пам'ятайте, що все це буде 16. І тому, що ми, як люди насправді не є 16 число, для представлення, що ми йдемо від нуля до дев'яти, які наша перша 10 значень, а потім ми робимо через F, які є наступні шість значень. І так найпростіший спосіб перейти від будь двійковий номер в шістнадцяткове є розбити їх на дві половинки. І тому будь-яке двійкове число ми дамо ви, ймовірно, є вісім цифр. Ви можете просто розірвати їх в середині. Таким чином, перший одно-- одна один, одна одну, один, один, один один. Вид думаю, що це, ви знаєте, залучити коса риска або кома між ними. І ви можете просто конвертувати безпосередньо всі Це на перший Кількість шістнадцятковій і все, що тут є другий з шістнадцятковому вигляді. Так що пам'ятайте із загального позначення, що ж шістнадцяткові значення почати? АУДИТОРІЯ: Нуль. ПРОФЕСОР: 0x. Отже, ми знаємо, що в будь-який час, ми просимо вас конвертувати будь-яку кількість в шістнадцятковій або в будь-який час ви бачите який-небудь номер, який починається з 0x, Ви знаєте, що це шістнадцяткове значення. І тоді ви будете попросили визначити, що ці дві цифри. І те, як ви це зробите, відповідаючи до що половина і рахунки до, що половина. Таким чином, у цьому прикладі, те, що буде один, один, один, один буде? Яке значення це буде? Це було б F, вірно? Це було б 15. Таким чином, це буде один Ф., один, одна, один тут також F. Таким чином, один, один, один, один, один, один, один, одним в шістнадцятковій все це є 0xFF. Тому що ця половина представлена F, значення 15, і ця половина представлена F, значення 15. Тому що пам'ятаєте, ми рахуючи від нуля до дев'яти. А як 10, B, як 11, F 15. Чи має це сенс для всіх хау ми отримали з двійковій в шістнадцяткові? АУДИТОРІЯ: І так, як же ми отримуємо 15 з одного, один, один, один? ПРОФЕСОР: Так, це двійковий, вірно? Уявіть собі, що це просто двійкове число. У вас є два в нульовий, який є одним. АУДИТОРІЯ: О, добре. Таким чином, ви просто скласти його. ПРОФЕСОР: Так, а потім Ви тільки що з усього. Це все, що є. АУДИТОРІЯ: ОК. ПРОФЕСОР: ОК. АУДИТОРІЯ: Так ви йдете з двійкового щоб в шістнадцяткове? ПРОФЕСОР: Це Найпростіший спосіб зробити це, так. Ви не збираєтеся в десяткову, бо десяткової має тільки нуля до дев'яти. Ми просто вид розділивши це до надвоє. АУДИТОРІЯ: [нерозбірливо] за допомогою десяткової знайти що це збігається в шістнадцятковому вигляді. ПРОФЕСОР: Я маю на увазі, ви Підводячи підсумки, використовуючи основи математики. АУДИТОРІЯ: Так. ПРОФЕСОР: Так, досить багато. Це трохи збиває з пантелику. Але точно знаю, що ви можна розділити на те, що це значення в тільки половини. Подивіться, що це в двійковій? Яке число є те, що? Це буде то від нуля до F. Тут також буде то від нуля до F. І тоді ви можете просто покласти ці два прямо там. АУДИТОРІЯ: ОК. ПРОФЕСОР: Так. ДОБРЕ. Таким чином, ви, хлопці, хочете, щоб спробуйте наступний тоді? Нуль, один, нуль одним, одним, нуль, один нуль. Я дам вам, хлопці, як 30 секунд, так як ви, ймовірно, не знаєте, трюк, щоб, як це зробити раніше. ОК, хтось хоче отримати цей постріл? 0x5A. ПРОФЕСОР: 0x5A. 5а. Добре. Таким чином, це тут було be-- ви хочете щоб сказати нам, як ви отримали це? По-перше, як ви отримаєте п`ять? АУДИТОРІЯ: Тому що нуль, Один з них, нуль, один п'ять. ПРОФЕСОР: Чи розуміє кожен Тому нуль, один, нуль, один п`ять? Ви отримали один тут. Ви не маєте нічого двох на перший. У двох до другої, вам є один, який чотири. Таким чином, ви додати чотири плюс один, у вас є п'ять. Все добре? ДОБРЕ. А потім, що це було і чому? Яка кількість робить відповідати? АУДИТОРІЯ: 10. ПРОФЕСОР: А що це в базі двох? АУДИТОРІЯ: [нерозбірливо] ПРОФЕСОР: Точно. Таким чином, це друге значення тут буде 0x5A. Все добре про те, як перетворити? Це набагато простіше, ніж ви думаєте. Я просто хочу, щоб переконатися, що Ви знаєте, корисні поради і трюки про те, як це зробити. АУДИТОРІЯ: Чому ви можете просто розділити він у середині, як, що? Просто, як, добре, я збираюся тільки піклуватися про них в першу чергу [нерозбірливо]? ПРОФЕСОР: Тому що це насправді спосіб представлені шістнадцяткові значення. 0X, що насправді означає, нічого, крім кажу вам що це шістнадцяткове число. І це завжди являє перші чотири цифри. І це завжди являє Останні чотири цифри. І тому ці дві цифри просто відповідають різним бітів. АУДИТОРІЯ: Так що ми будемо always-- ПРОФЕСОР: Ви завжди збирається отримати восьмій значення біта. АУДИТОРІЯ: Це просто як річ тут або що речі все скінчено? ПРОФЕСОР: Це просто що в комп'ютерах, так. АУДИТОРІЯ: ОК. Високий. ПРОФЕСОР: Крім того, так що в цьому прикладі ми перетворили з двійкової системи в десяткову, і з двійкової в шістнадцяткову. Ви, хлопці, хочете, щоб переконатися, що ви також практикувати в інший бік навколо. Так що, якщо я дав вам 0xFF, ви могли б залучити, що з в двійковій, вірно? Ви перетворити F в двійковій, який є одним, один, один, один, перетворити F в двійковий, який один, один, один, один. Таким чином, ми можемо попросити вас зробити навпаки. Так десяткову в двійковий або шістнадцяткове двійковий. Отже, ви хочете, щоб зробити що ви знаєте, в обох напрямках. Ми, ймовірно, запитаєте Ви Поєднання цих двох. Так, у вас є питання? Я можу see-- ви добре? АУДИТОРІЯ: Так. ПРОФЕСОР: ОК. У мене добре, щоб стерти це? Відмінно. Гаразд, так відповіді тут, якщо хто- Цікаво, пізніше і заплутатися. ДОБРЕ. АУДИТОРІЯ: Чи має значення, якщо покласти наші листи в столиці чи нижньому регістрі? ПРОФЕСОР: Це так, тому в шістнадцятковому, за угодою, всі символи у верхній регістр. Таким чином, через F є буде у верхньому регістрі. Якщо поставити в нижньому регістрі а, я не знаю, якби ми обов'язково зазначити це неправильно. Але теоретично, що технічно не як ви повинні мати його. Таким чином, вони всі повинні бути в верхньому регістрі. Так, гарне питання. ДОБРЕ. Друге питання. Розглянемо цей прекрасний програму тут. Я ставлю запитання, Я повернуся в цьому. Так, по-перше, те, що всередині стандарту io.h, що становить інтерес для програми? По-друге, те, що робить недійсними означає в третьому рядку? І по-третє, те, що робить повернення до нуля через Основний, як лінія шість, як правило, означає? Якщо ви, хлопці, хочете, щоб написати ті вниз, оскільки в мене є, щоб повернутися до слайда, тільки так можна побачити код. Це є прикладом, як, можливо, високий рівень питання, де ми просимо вас які речі на увазі в програмі. Все добре для мене, щоб повернутися до слайда? ОК здорово. Тому я дам вам, хлопці, як, може бути, три хвилин, щоб подивитися на цього одного дуже швидко. ОК, так що це одне як досить легко, концептуально. Хто-небудь хоче сказати мені, що в першу чергу зсередини хеш в тому числі наша стандартна бібліотека io.h файл? Чому ми повинні цю бібліотеку включені для цієї програми? Що тут нам потрібно це? Так? АУДИТОРІЯ: Це коли Ви ставите що Printf? ПРОФЕСОР: Точно. Так Printf, в будь-який час вам прийняти введення від користувача і друк щось на екран, це стандартний ввід, вивід бібліотека. Думайте про нього, що way-- вхід, вихід. Чи є у мене вихід? Так. Так що я знаю, що я завжди буду потрібна бібліотека гостірован i.o. Так Printf функція за допомогою яких ми повинні отримати доступ і включають в себе хештегом Стандартна бібліотека i.o. ДОБРЕ. По-друге, це що ж порожнеча означає? У нас є Int основний (порожнечу), що робить анулюванню тут маю на увазі тут, на третій лінії? Так, в спину. АУДИТОРІЯ: [нерозбірливо] ПРОФЕСОР: Точно. Так що пам'ятайте, ми дізналися, починаючи з нашого PSET що ви можете насправді вказати командний рядок Аргументи, що ваша програма, що ви Основна функція, приймає, як ви, користувач, назви це. Якщо у нас є порожнеча, це означає, що вам може просто запустити програму безпосередньо без будь-яких аргументів командного рядка. Все ясно, на що? ДОБРЕ. І, нарешті, чому ми так робити це повернення нульовий річ тут? Чому ми навіть мати INT головний? Чому ми не можемо просто пустот основний порожнечу? Так? АУДИТОРІЯ: Просто так, що ми можемо бути впевнені, що програма вихід успішно, а протилежність, якщо він був пронумерований. І ми знали, що це різного роду помилки. ПРОФЕСОР: Так, саме так. Це просто дуже звичайний, що ми робимо, є те, що тільки в кінці ваша програма, просто щоб переконатися, що основною функцією працює правильно, ми завжди хочемо, щоб зробити повернення нульовий. Навіть якщо ми обов'язково не бачите, що друкується в будь-якому місці. Тому що, як програмістів, ви знаєте, якщо у вас є багато різних рядків коду і ви не знаєте, де це йде не так, і якщо відбувається помилка ви хочете переконайтеся, що ви отримаєте цю помилку. І так, як правило, якщо щось не так, ми будемо мати повернення одного тільки щоб переконатися, що ми знаємо, що це таке. Так що, якщо ви бачите повернення нулю, що, як правило, означає, що ваша програма успішно виконана. Добре? Прохолодний. ОК, друга програма тут. Розглянемо, що. І якщо ви, хлопці, бачите плавати, ви, хлопці, ймовірно, може є хороша ідея про те, що Я збирався запитати вас. Тому, коли ця програма виконує, як ви можете бачити, Я заявляю, поплавок в моїй основної функції. Я назвавши його "відповісти", і я встановлюю що ділиться рівними один на 10. Я друкую, до одного десяткового знака, що поплавок. А потім я повертаюся до нуля. Так при виконанні програми, згадайте жадібні зараз, ця програма друкує 0.0. Як ми всі знаємо, ми всі сподіваємося, знаєте, розділеного на 10 Нехай не 0,00, це 0,1. Але поясніть, чому ця програма думає, що 1 ділиться на 10 відбитків 0,1 інший ніж 0,1? Я дам вам, хлопці, може бути, як 30 секунд, щоб просто швидко думати про те, що і я піду назад в програму. ДОБРЕ. Хто-небудь хоче, щоб дати йому шанс? У трьох реченнях або менше, тому що, як правило, ми збирається обмежувати всі відповіді в трьох реченнях або менш так що ви не просто переказують випадкові речі на вашому вікторини. Так, зробити знімок. АУДИТОРІЯ: Так що я думаю, що є це що називається, як, [нерозбірливо] Так може бути, наприклад, може бути, як, 0,09, що коли ви друкуєте перший значний, було б на 0,0? ПРОФЕСОР: закрити, не зовсім. Christabell? АУДИТОРІЯ: Ви розділення одного і 10, і вони обидва цілі числа. І тому спосіб, яким це відбувається зберігати це у вигляді цілого числа. І так ближче число буде 0.0. І так ось 0.1. ПРОФЕСОР: Так, це дійсно добре. Це правильна відповідь. Так що це дуже заплутаною Концепція для багатьох дітей. І я дійсно хочу, щоб переконатися, що Це підкріплюється в голові кожного. Так, що ми називаємо плаваючою Точка неточність, де причина, чому багато з ваших програм в жадібні не працює, тому що спочатку було Ви забули віддати свій змінну. Так що сказав Christabell був зовсім правильно. Поплавок спочатку неточними. Тому що в комп'ютері, праворуч, у нас є кінцеве кількість бітів пам'яті ми можемо використовувати для представлення чисел. Так, наприклад, це CS50 ID is-- Я думаю, що це 64-розрядний комп'ютер. Поплавок може бути представлена ​​тільки на кінцеву величину цих бітів. І так 0,1 з нескінченними нулями, що було 0.1, вірно? Але ми не можемо насправді зберігати що номер на нашому комп'ютері. Ми просто не мають Недостатньо пам'яті, щоб зробити так. І тому найближчий наближення те, що зберігається в пам'яті насправді щось начебто щось 0.000, то, щось, щось. Який, як тільки ви усікти це, округлює 0.0. І так цей приклад є лише одним який демонструє багато питань у нас є всякий раз, коли ми намагаючись зробити математику неправильно без лиття під іншим цілим числом. Так що будьте обережні, що це відбудеться. На вікторини, якщо ми дамо вам блок коду, і це, як, те, що виводить в кінці? А якщо це якась випадкова величина ви Хлопці повинні знати, чому це відбувається. Так? АУДИТОРІЯ: Обрізати це позбутися все після певного моменту? [Нерозбірливо] ПРОФЕСОР: Так, насправді так це дійсно поганий приклад, бо насправді все, що 0,100 буде обрізати до 0,1. Але якщо ви запустите it-- я не пам'ятаю, бо торік вони провів її на іншу програму. Вони побігли його в те, що називається CS50 побутової, який відрізняється від ID. Це був 32-розрядна система, я думаю. І так були різні номери. Але по суті, просто знаю, що вся концепція усічення і як він просто ріже роздягатися. І так, якщо це rounds-- АУДИТОРІЯ: Без округлення. ПРОФЕСОР: Точно. Так. Прохолодний. Привіт, в спину. Ми просто збираємося на себе деякі Тест огляд питань. Добре. Так вважають іншу програму тут. Я збираюся дати вам хлопцям пару хвилин, щоб прочитати над цим. Це те, що було для дуже Нещодавно, коли я думаю підірвали багато з вас уми хлопців років. Але ми будемо говорити через це знову тільки щоб переконатися, що вам зрозуміти його повністю. ДОБРЕ. ДОБРЕ. Будь потрібно більше часу для прочитати цей код? ДОБРЕ. Так що мені здається, що У цій програмі я створення двох рядків, використовуючи GetString. Один називається с і один називається т. І якщо вони рівні одно один до одного, він повинен надрукувати "Тебе введіть те ж саме ". Але Elsewise, було б надрукувати ", Ви набрали різні речі ", чи не так? Здається, дуже, дуже просто. Але, тим не менше, якщо я насправді спробуйте написати цю програму, здається, що навіть коли я Вхідні ті ж самі рядки, він як і раніше друкує, "You набрали різні речі! " Хто-небудь хоче взяти постріл у, чому ця програма завжди відповідає, що входи різні, навіть коли самі слова те ж саме? Так, якби я input-- Девід любов використовувати приклад як мама, вірно? Рядкові М-О-М для S, T дорівнює рядкової M-O-M. Якщо я побіг це через що код, з чого б це роздрукувати "ви набрали різні речі?" Хто потрібен більш час, щоб подумати про це? ОК, я думаю, що ми добре. Так? АУДИТОРІЯ: ОК, так це те, про де він зберігається в пам'яті, чи не так? ПРОФЕСОР: Так. АУДИТОРІЯ: Де це як, якщо це Рядок з зберігається в пам'яті spot-- Я винаходячи this-- дорівнює нулю. ПРОФЕСОР: Звичайно. АУДИТОРІЯ: І рядок т зберігається при місці пам'яті, як, 167, а потім нулю НЕ дорівнює 167. ПРОФЕСОР: Точно. Отже, пам'ятайте, що це неймовірно Одкровення ми пояснили вам, хлопці минулого тижня, що Рядки насправді не існує? Коли ми створюємо те, що називається Рядок ми, насправді, створювати щось під назвою символ зірки. Які все це є покажчиком на рядок або масив символів. І тому в даному прикладі, якщо я були вхідного M-O-м шляху що мій комп'ютер буде зберігати це в пам'яті зворотної косої межі нульовий, вірно? Ці чотири символи, символи, буде десь зберігати. А потім ці чотири символи, зворотний слеш нуль, зберігаються десь ще, чи не так? Я поняття не маю, де адреси є, вони десь в моєму комп'ютері. Але я точно не знаю, де вони знаходяться. Коли я створюю рядок с, все, що насправді це покажчик на початок цього рядка. І коли я створюю цю т значення, все, що є покажчиком на тут. І тому, коли ви намагаєтеся прирівняти і перевірити щоб побачити, якщо їй це одно дорівнює T, комп'ютер насправді просто повертаючись до Ви адресу цього м а також адресу цієї м. І тому, що вони дві окремих частин даних , Які зберігаються у двох різних адреси в комп'ютері, Ваш комп'ютер ніколи не буде визнати їх як те ж саме. Хто-небудь хоче дати постріл на те, що ми доведеться робити, якщо ми хотіли, щоб виправити це і є правильний запущену програму замість цього? Подумайте про те, що протягом кількох секунд. Що нам потрібно, щоб змінити отримати цю роботу програми як ми хочемо, щоб він діяв? Так, хочу, щоб прийняти удар на нього? АУДИТОРІЯ: Чи можемо ми спробувати разименовать покажчик і перевірити через масив? ПРОФЕСОР: Це один із способів зробити це. Отже, що ваше ім'я знову? Я перепрошую, нагадують мені. Зеє: Зеє. ПРОФЕСОР: Так, так, що-Зеє запропонував би абсолютно працювати. Вірно? Ми могли разименованія покажчика і насправді йти і доступ фізичні дані всередині тут. І ми можемо просто порівняти весь екран. Ми можемо говорити, ОК, покажчик, дати мені те, що всередині тут. Це повернеться в м. І я б сказала, покажчик, дати мені те, що всередині тут. Повернутися до м. У тих матч? Так. Потім ми перейдемо. Ми продовжуємо перевірки всього два струни аж до кінця і подивитися, якщо ті, рівні, якщо все значення рівні. І якщо все значення рівні, то ми знаємо, струни вірні. Безумовно, це, як би ми це зробити? Хто-небудь плутати на все це? Вся концепція про те, як струни дійсно тільки покажчики, і як вони насправді не існує? І чому ми отримуємо помилки як, як ми отримати його? Тому що я гарантую вам, хлопці, покажчики і розподіл рядок і пам'ять збираються придумати. Так? АУДИТОРІЯ: [нерозбірливо] разименовать це, ви просто покласти зірку [нерозбірливо] ПРОФЕСОР: Вірно. Таким чином, щоб derererence покажчик кошти йти за цією адресою покажчика і отримати дані, значення є. І те, як зробити це зірка покажчик. Не бентежить, що. АУДИТОРІЯ: [нерозбірливо]. ПРОФЕСОР: Так. АУДИТОРІЯ: Так що ви можете просто написати якщо зірки сек одно одно зірка т. ПРОФЕСОР: Ну, немає. Немає. АУДИТОРІЯ: Це не досить добре, вірно? ПРОФЕСОР: Це не так, тому що ви тільки перевірки першого букву. Ви, ймовірно, буде потрібен якийсь цикл, який перебирає кожен символ в обох рядках. Так. Так що, якщо ви хочете, щоб просто перевірити, щоб побачити якщо вони почали з того ж, Ви можете зробити, якщо, зірки з дорівнює зірок тонн. Тоді ви знаєте, що принаймні вони почав з того ж характеру. Так? АУДИТОРІЯ: Так як Ви що б як вбудований цикл або покажчик? ПРОФЕСОР: Так. Досить багато якраз для петлі. Пам'ятайте, Давид згадується класу вільний синтаксичний цукор? І він був дуже це заплутаною справою зірка типу Т плюс один, де він буде інтегрувати через і перемістити покажчик? Чим простіше спосіб зробити це просто т I. Так що це просто масив. Таким чином, що б ви мати для цикл, який біг від нуля до I, де я довжина з Рядок, можна просто пишуть, що замість того, щоб робити те Вся покажчик, посилання річ. Таким чином, ці речі в точності еквівалент в комп'ютері. Ви, хлопці, напевно, не буде потрібно знати, що, але це добре, тільки вид є в спину свій розум. Просто знаю, що комп'ютер визнає різні блоки коду як те ж саме. Оскільки це так набагато користувач дружніх нам представити його, як масив. Це просто легше. АУДИТОРІЯ: Так що використовуйте STRLEN подобається, get-- ПРОФЕСОР: Так. АУДИТОРІЯ: ОК. ПРОФЕСОР: Ви могли б використовувати StrLen або, якщо ви не мають StrLen ви можете просто зробити до доки натиснете зворотний слеш нуль для обох. Або буде працювати. Так. АУДИТОРІЯ: Так що це для разименованія кожен один символ, якщо ми були фактично писати цей код, ми може просто зробити т дужки I подобається із зіркою перед ним? ПРОФЕСОР: Так, дорівнює дорівнює S Кронштейн я, а потім рухатися I вниз, поки ви не потрапили в кінець. Так, це те, що ви могли б зробити. І я насправді мають наступний приклад, коли ми насправді написати StrLen так що ви, хлопці, буде свого роду з отримаєте, щоб пограти з ним небагато. Так все ясно тільки на пам'ять, рядки, покажчики, якість адреси? Деякі поняття більш високого рівня, що ви воля напевно необхідності знати про вікторину завтра. Добре. Добре. Так. Отже, одна річ, що ми будемо також запитати Ви, як ми робимо щороку на вікторині, це, Припустимо, що ви забули (який ми, здається, забули зробити на рік) в якому заявив, файл заголовка StrLen. І тому ми повинні переписати це самі. Ось список рекомендацій що ми можемо уявити вам Хлопці, де ви отримаєте припустити, що и рядок не буде нульовим. Ви можете вважати, що їй буде обернена коса риска нульовий. Таким чином, ви знаєте, що це те, що він збирається закінчуватися. І, наприклад, що Довжина привіт буде п'ять. Таким чином, ви можете припустити, що привіт буде п'ять, Н-Е-Л-Л-О. Ви не повинні вважати, що Зворотний бік нульові рахунки для довжини. Це останнє, що тут, чи не турбуватися про переповнення цілого. Чи пам'ятає хтось те, що число переповнення? АУДИТОРІЯ: виходить за рамки Довжина [нерозбірливо]. ПРОФЕСОР: Так, ви можете пояснити небагато, що це означає? АУДИТОРІЯ: Отже, я думаю, це сходить до усічення приклад раніше. Але якщо у вас є тільки так багато чисел які виходять за рамки числа бітів що ви можете призначити його що це буде просто вид відрізані. ПРОФЕСОР: Так, так і на типовий комп'ютер, скільки біт у нас? АУДИТОРІЯ: 32? ПРОФЕСОР: Так, 32, правий. І так от, те, що чотири млрд, два мільярди? Чотири мільярди до чотирьох мільярдів цілі позитивні числа, чи не так? Два мільярди негативним, два мільярди позитивним, залежить від того, як ви хочете, щоб зробити це. І тому в основному ми можемо мати достатньо цілі, які можуть піти вгору від двох до 31 мінус 1, вірно? Тому що як тільки ми потрапили два в 32-му, ми не є так багато пам'яті в нашому комп'ютері. І так, в принципі, я міг придумати ряд що, начебто, два 46-. Це число величезний дупа, але Теоретично ви могли б. І так Целочисленное переповнення, якщо ви спробуєте створити ціле число, яке виходить за рамки комп'ютер здатний зберігати. І так ви, хлопці, для Цей приклад не повинні турбуватися про нас, даючи вам гігант Рядок, два 32-й символів довго. Це було б насправді означає. Гаразд, так що я просто хочу, щоб дати ви, хлопці, базової структури цього. Ви збираєтеся створити Функція називається INT StrLen де пропуск в, напівкоксу зірка, або рядок, покажчик на рядок називають с. Гаразд, все, що копіювати вниз. Прохолодний. Oops-- інший спосіб. Так що це ніби як важче шматок проблеми, так що я дам вам, хлопці, можливо, п'ять, щоб шість хвилин до виду мозкового штурму і написати цю функцію з. АУДИТОРІЯ: Ми не рахунок для [нерозбірливо], ми не повинні використовувати число? ПРОФЕСОР: Ні, ви не знаєте. Я дам вам підказку хлопцям. Деякий час циклу може бути дуже корисним тут. Так. Ось цукерки. Цукерки також буде доступна для вікторини, я думаю. Так ви, хлопці, все буде зацукровані завтра. Може i-- ви його отримали. АУДИТОРІЯ: ОК. ПРОФЕСОР: Так. Можливо, ще 30 секунд або близько того. Гаразд, якщо ви не зроблено, не хвилюйтеся. Ми будемо рухатися через це разом. ДОБРЕ. Так що я збираюся просто макет Базова структура для цієї функції тут. Int StrLen. По-перше, хто-небудь хочете сказати мені, що це означає INT? Ми повинні мати в цій функції. АУДИТОРІЯ: STRLEN [нерозбірливо]. ПРОФЕСОР: Точно. Так все, що відбувається тут, ми повинні повертати ціле число. І, як зазначено в специфікації, ми хочемо, щоб return-- Перейти на нього, хлопці, просто продовжувати йти. Це все добре. Їжте все це, так що я не прийняти його назад, насправді. ІНТ просто означає, що ви буде повернення ціле. Що це символ зірки з? Що це означає? АУДИТОРІЯ: Як, що на вхід в. ПРОФЕСОР: Точно. І те, що майже Те ж саме, як напівкоксу зірки? АУДИТОРІЯ: String? ПРОФЕСОР: Точно. Таким чином, все, що ми робимо це дає це покажчик на рядок. ДОБРЕ. Прохолодний. Крім того, не забувайте, якщо забути щоб дати вам ці дужки, не забудьте написати їх самостійно. Тому що теоретично, ваш код неправильно, якщо ви забули записати їх. Просто завжди звертають увагу. Мовляв, дрібниці що ви не помічаєте, коли ви програмуєте на вашому ноутбуці, тому що ваш ноутбук зробить це за вас? Не забувайте, коли Ви пишете від руки. Так? АУДИТОРІЯ: Але як неправильно? Мовляв, ми отримуємо всю проблему поганого? ПРОФЕСОР: Ні, ні. Не хвилюйтеся. Це насправді теоретично можливо для Вас, щоб отримати повну точок на питання навіть якщо ваш код буде ніколи не працювати в реальному житті. Я пропоную вам не намагайтеся щоб це відбулося. Наприклад, як, якщо всі що тут правильно, але ви забули двокрапка або дужки, ваш код не буде реально працювати. Але ми можемо бути милосердними. Так? АУДИТОРІЯ: Ви повинні коментувати на нашому почерком? ПРОФЕСОР: Ні, ні, ні турбується про те, що. Немає коментарів. Стиль повинен бути хорошим. Мовляв, не smush все на одній лінії. Ми не будемо щасливі з вами, якщо ви зробите це. Хто-небудь хоче дати мені першу лінію? Підказка, це дуже просто. Так? АУДИТОРІЯ: Int, п дорівнює нулю. Просто встановіть лічильник. ПРОФЕСОР: Отже, ми хочемо деякі Сортувати лічильника, вірно? Я просто хочу, щоб назвати це "розраховувати" заради зручності читання. Що ми хочемо, щоб встановити його рівним? АУДИТОРІЯ: Нуль. ПРОФЕСОР: Так. Крапка з комою. Це також дуже дивні коми малювання. Тільки практика робить. Тому ми хочемо, щоб спочатку лічильник типу Int. Тому що ми хочемо, щоб підрахувати, як багато персонажів або букви в цьому рядку, вірно? Дуже легко перший крок. ОК, може бути, трохи більш складним, Тепер, як ми збираємося це зробити? Хто-небудь хоче дати мені рядки коду які можуть бути в змозі допомогти цикл через те, що це? Так, сміливець в спину? АУДИТОРІЯ: ОК, так що поки точка зірочки, то так, зірка с, не дорівнює нулю, то зробити щось? ПРОФЕСОР: Це дуже, дуже близько. Насправді близько. Так що я збираюся звернутися дві речі з цим. Перш за все, це не в точності дорівнює нулю. Що це? Це нульова термінатора, що зворотна похила риска нулю. Так вони відрізняються в Умови, як вони зберігаються. Таким чином, ви насправді близько. А по-друге, ми не хочемо, просто перемістити покажчик. Ми хочемо, щоб насправді доступ до значень, вірно? І так, як ми робимо це? Дуже легко. Не думаю, що про покажчики, Не думаю, що про спогади. Повернутися до другому тижні цього курсу. АУДИТОРІЯ: [нерозбірливо]. ПРОФЕСОР: По, пам'ятаєте? Які струни? Як вони зберігаються в пам'яті? АУДИТОРІЯ: Вони підняли. ПРОФЕСОР: Вони піднімаються. Так як ми доступ кожен символ всередині? АУДИТОРІЯ: [нерозбірливо]. ПРОФЕСОР: Точно. Так що while-- йде всередині тут? S з - АУДИТОРІЯ: І. ПРОФЕСОР: О, я не існує, чи не так? АУДИТОРІЯ: Так, розраховувати? ПРОФЕСОР: Ми можемо тільки використовувати рахунок, ми не можемо? АУДИТОРІЯ: На жаль, я назвав це я. ПРОФЕСОР: Так, це все добре. Ми маємо змінну тут це вже був оголошений в нашій лічильника. Так чому б нам просто не використовувати, що для переміщення по час циклу? Чи має це сенс? Таким чином, хоча їй з count-- хто-небудь хоче щоб дати мені те, що відбувається після того, тут? АУДИТОРІЯ: Це не рівні. ПРОФЕСОР: Не дорівнює, вірно? Це чубчик одно, Знак оклику одно, все, що ви, хлопці, хочете, щоб називати його НЕ equal-- АУДИТОРІЯ: [нерозбірливо]. ПРОФЕСОР: Так. Пам'ятайте одну цитату для напівкоксу, подвійні лапки для рядка. Будьте обережні при їх використанні. Тому, коли ми дивимося через масив, останній символ, ми знаємо, що ми не хочемо це буде зворотний слеш нулю. Таким чином, хоча. Ми не в кінці рядка. Що ми хочемо зробити всередині? АУДИТОРІЯ: Ми хочемо, щоб додати до Лічильник тому розраховує плюс плюс? ПРОФЕСОР: Точно. Так от, ми збираємося зробити розраховувати, розраховувати плюс плюс. Зниклих безвісти більше одного рядка. Ми майже там. Що ми забуваючи робити? АУДИТОРІЯ: Повертаючись до нуля? ПРОФЕСОР: Ви хочете, щоб повернутися до нуля? АУДИТОРІЯ: Ні, повертаючись до STRLEN. Зачекайте. ПРОФЕСОР: Яке зберігається в? АУДИТОРІЯ: граф. Рахувати. ПРОФЕСОР: Точно. Так от ми йдемо, щоб повернутися кол. Тому що те, що ми тут робите ultimately-- у нас є змінну лічильник, що це відбувається прирощення через нашу рядок. Ми збираємося продовжувати, продовжувати відбувається, навколо і навколо в цьому циклі. І в той час як ми не в кінці цього Рядок, яка є нульовим термінатором. І кожен раз ми йдемо через це, ми додаємо в наш лічильник. І ми збираємося далі поряд в цьому масиві. І врешті-решт, колись ми вдарив нульовий термінатор, ми знаємо, про, ми можемо перерву, поверніться кол. У нас є STRLEN. Чи отримує кожен, як це було реалізовано? У той час як loops-- Я знаю, ми не зробити занадто багато з ними, але вони, як правило дуже, дуже корисно, якщо вам не знаю, що ви зупиняєте стан обов'язково повинен бути. Питання? АУДИТОРІЯ: Чи можемо ми написати NULL за умови, час? ПРОФЕСОР: У той час як? Так, так що в цьому проблеми я вам хлопці припустити, що їй не буде нульовим. Тому що пам'ятаю, Теоретично, якщо я дав вам покажчик, що було занадто великий пам'яті, це дасть вам нуль, вірно? Це те, що операційна Система буде робити. Так що, якщо я не скажу вам припустити, з нульовим б, ви повинні перевірити. Так тут, ви могли б зробити, якщо їй дорівнює нулю дорівнює, повертати одне. Щось схоже. АУДИТОРІЯ: [нерозбірливо] нулю. ПРОФЕСОР: ОК, я скажу Ви чому ми не можемо цього зробити. Тому що пам'ятаю, в пам'яті, правильно, тут. Ми підемо сюди. Ви отримали гігантські блоки пам'яті всі з сітками що зберігати різні значення, вірно? А так все це рядок is-- для Наприклад, якщо ми хочемо введення привіт, було б Н-Е-Л-Л-О Обернена коса риска нулю, вірно? І тоді хто знає, як випадкова речі, які тут після нього. Ми не знаємо, насправді, що там. І так, якщо ви повинні були зробити замість зворотної косої межі нульовий, NULL, воно не може бути нульовим. Тому що це просто може означати, деякі випадкові інші речі які не належать в рядку. І так як, що ми завжди знаємо, що рядок закінчується це з зворотної косої межі нульовий. І так, що завжди, як ми перевірити, щоб бачити кінець рядка. Null, все, що кошти, якщо у вас є неіснуючої покажчик, насамперед, або якщо ваша пам'ять просто так велике, що Ви не можете повернути його, то це було б порожнім. Так будьте дуже обережні при диференціюванні різниця між нулем і зворотний слеш нулю. Так. Все в порядку з цим? ДОБРЕ. Так що мені довелося ви, хлопці, напишіть StrLen. Техніко-економічне ми могли б також попросити вас написати з А до Я, пам'ятайте, що "Atwoa" або все, що ви, хлопці, хочете назвати це? Ця функція в Vigenere і Цезар, що перетворює значення Ascii в ціле? Це також прийшов на останні опитування функцій ми попросили вас написати. Практично будь-якої функції що ви використовували і дуже легко написати самостійно, Датчики подобається менше, зверху, щоб знизити, щоб верхній. Функції, які б перетворити рядок з рядкових в прописні. Ми всі знаємо, як це зробити, чи не так? Це досить легко. Просто хочу, щоб переконатися, що ви can-- це ж розумовий процес. Ви просто перебору і ви включаєте речі. Ви або розраховувати, або коли Ви включаєте по-іншому. Я б suggest-- I не знаю, якщо ми збираємося попросити вас запам'ятати, який капіталі або Столиця Z, або нижній регістр або нижній регістр г в ASCII, але я хотів би запропонувати можливо, написавши, що вниз у разі ми робимо. Точно так само ви, хлопці, є посилання. Як у верхньому регістрі А, те, що, 197? А потім в нижньому регістрі, як 50 щось. 65, так, там ви йдете. Так що в значній мірі знаємо, Різниця між ними становить 32. Це дуже важливо. Так. У мене добре на цьому? ДОБРЕ. АУДИТОРІЯ: Ми могли б Теоретично написати деякі з них вниз, а на нашому little-- ПРОФЕСОР: Ви теоретично може просто скопіювати функцію вниз. Це правда. АУДИТОРІЯ: Чи не [нерозбірливо]. Професор: Ви, хлопці, є лист. Ви, хлопці, є примітка лист. Ви можете ввести його. Ви можете написати його. Ви можете робити все, що ви хочете з ним. Так. Так, теоретично, якщо Ви хочете, щоб, йти. АУДИТОРІЯ: [нерозбірливо] але ми дійсно не обов'язково потрібно пам'ятати, значення, ми можемо тільки використовувати у верхній або нижня функція, вірно? ПРОФЕСОР: Так. Але якщо ми дали вам питання що говорить написати верхня, Потім вам потрібно буде написати його. Так ви, хлопці, можете вважати, що вам хлопці мають доступ до всіх функцій, але якщо ви хочете використовувати для верхньої або нижче, що ви також повинні робити? АУДИТОРІЯ: [нерозбірливо] використовувати CS50 [нерозбірливо] ПРОФЕСОР: Це CS50.h? Будьте обережні там. Таким чином, щоб верхня, знизити, зверху, нижче, Функції, які включають рядками є все в межах або у форматі ASCII або в математичній бібліотеки або в рядку бібліотеки. Так що, якщо ви, хлопці, використовувати ті Функції, будьте обережні, щоб пам'ятати включити цей заголовок. Так що, можливо, також те, що ви хочете включити в лист, які заголовок? Які бібліотеки ви використовуєте? Які функції всередині цих бібліотек? Це важливо. Так? АУДИТОРІЯ: Може, ми просто Поліцейський і зробити хештегом через абсолютно кожна буква ми коли-небудь бачив, як на всі питання? ПРОФЕСОР: Ви могли. Я не знаю, як щаслива ми збираємося бути в перший клас що вікторина, коли кожен шматок коду це вдвічі більше, ніж вона повинна бути. Я не знаю, ми могли б зняти точку для стилю. Але теоретично СВІЙ код буде правильно. Ви, хлопці, може, і поліцейський просто включити все. Це теж добре, так. АУДИТОРІЯ: [нерозбірливо]. ПРОФЕСОР: Так. Я хотів би запропонувати не робити, що, хоча. Так. АУДИТОРІЯ: Прохолодний. ПРОФЕСОР: Хороший вопрос. АУДИТОРІЯ: Таким чином, в гіршому випадку. ПРОФЕСОР: У гіршому випадку. Якщо ви повністю забути, ви могли б зробити це. Так. Так, код прямо там. Я н а рахунки, але, вам знаєте, все, що пливе човен. АУДИТОРІЯ: Зачекайте, так що ми не доведеться хештегом включають в себе, тому що ми починаючи з Int? ПРОФЕСОР: Так, я просто припустив, що нас попросили написати функцію. Якщо ви хочете бути в безпеці, вам може, ймовірно, поклав його там. Але я просто не турбувати, так. Я навіть не знаю, якщо ви потрібна бібліотека для цього. Тому що ви насправді не друкувати що-небудь або що-небудь, чи не так? Так, я не знаю, якщо Ви повинні бібліотека. ДОБРЕ. Це також трохи більше уздовж лінії маніпуляції пам'яті. Цей вид трохи складніше. Подумайте про це. У вас є функція під назвою FUNC. Я міг би назвав його все, але я хочу, щоб назвати його функ. Я його вище моєю основною. Пам'ятайте, що ви хочете, щоб функція після ваш головний, Ви хочете, щоб переконатися, що ви включають в себе прототип зверху. Але в даному випадку це було так коротко що я відчував, що я міг би просто включити його на вершині основною. Мені не потрібно, щоб мати прототип, бо це вже написано вище. Таким чином, все, що я роблю в моїй основної функції створює ціле х дорівнює 10. Я дзвоню своєму функцію Func, а потім щось друкувати. І тоді це насправді те, що функ робить. Ви, хлопці, хочете, щоб продумати це. Тому що це трохи складніше. Це дуже, дуже складно, насправді. Продумайте, що це Програма буде Висновок. Я дам вам хлопці за дві хвилини. Хороші дискусії? АУДИТОРІЯ: Так. ПРОФЕСОР: Так. Гаразд, так що це складно по причині. І саме тому я хотів принести на це увагу кожного. Хто-небудь хоче, щоб дати мені пропозицію, спроба? Що б це надрукувати? Абсолютно нормально, якщо ви не праві. Так? АУДИТОРІЯ: Я думаю, що це 100 і потім 10 на дві окремі лінії. ПРОФЕСОР: А 10? Хто-небудь є які-небудь інші припущення? Так? АУДИТОРІЯ: Може бути, просто тому, що 10 FUNC НЕ ПОВЕРТАЄТЬСЯ що-небудь? ПРОФЕСОР: ОК, так що ми є припущення номер один є те, що думаю номер два просто хочу, щоб роздрукувати 10. Хто-небудь є які-небудь інші припущення? ДОБРЕ. Так що давайте йти через це, вірно? Всякий раз, коли ви отримуєте шматок коду, не просто дивитися на нього і сказати: ах, це так багато речей! Я так розгубився! Мовляв, заспокоїтися. Просто знаю, що ви могли б просто переглядати код порядково. Це все, що є. Це як читати книгу. Так що з будь-якої функції, ми завжди починаємо в основний. Отже, ми збираємося, щоб почати в INT основний порожнечі, навіть програми вже бігти вниз, чи не так? Початок о в головному порожнечу. Int х дорівнює 10. Так що я збираюся стерти це. Я збираюся зробити пам'ять просто так вас хлопці, можете роду подивитися, що відбувається. Запам'ятати тут у нас є стек? До тут у нас є наші купи десь тут. Стек росте вгору, вправо? І в стеку, у вас є мережевий функції, а також всі мережевого локальних змінних. Так от, INT х дорівнювати 10. У нашій основної функції ми створення змінну х. Ми встановлюємо, що дорівнює 10. Тут у вас є кілька х, і ви установка, що дорівнює 10, праворуч, в основному. Все добре? Функція. Так що тепер, в наші основні Функція, ми називаємо функція ми написали вище. Таким чином, ми в даний час ввести другу функцію. Ми збираємося створити ще Мінлива INT х дорівнює 100. Те, що відбувається тут, в стеку? Що відбувається, коли ви називаєте функція, яка створює нові змінні? Що тут відбувається на стеку? АУДИТОРІЯ: [нерозбірливо] палі на вершині? ПРОФЕСОР: Так. Так що насправді створює копію. І це свого роду паль на вершині. Подумайте про stack-- стек книг, стопки що-небудь. Палі зверху, перші в минулому з, останнім прийшов, першим з. Так це буде створювати х тут. Це матиме всі funcs змінні. Відмінно. Так що тепер у нас є два різних х, що являють собою два зовсім різні речі. Тоді ми йдемо до друку з цілого х. Отже, давайте друкувати 100, вірно? Бо тут це 100. Так от, перше, що що він збирається надрукувати. Як ця функція повертає нічого, Тепер ця функція, ця лінія в основний зроблено. Все добре зі мною досі? Так що ми тепер через два з три лінії нашої основної функції. Тепер ми їдемо в третьому рядку. Ми збираємося PRINTF. Що це х в основний? Що це уявляєте? Який сенс х зараз? АУДИТОРІЯ: 100. ПРОФЕСОР: Це 100? АУДИТОРІЯ: Ще 10. ПРОФЕСОР: Ще 10. Так. Тому що пам'ятаєте, в наш FUNC, х дорівнює 100. Але якщо ми повернутися до нашої основної функції, змінна зберігається в інше місце на нашому стеку. Так що тепер ми повинні повернутися до Основний стек, мережевий локальні змінні. А ось х дорівнює 10. І тому ми збираємося, щоб роздрукувати 10. Таким чином, вона була абсолютно права. Ми збираємося, щоб мати Вихід 100 і 10. Так? АУДИТОРІЯ: Коли ви Танос, є його купа або стек, який [нерозбірливо]? ПРОФЕСОР: Коли ви Танос, ви приймаєте пам'ять з купи і виділення його. Так що вам не доведеться возитися з будь-який з цього. Так що я думаю більше винос ось те, що називається областю. Для тих з вас, хто був на огляд сесія минулої ночі, ми говорили коротко про це. Сфера визначає, як і коли існує ваші змінні. Або в те, що кадри існують ваші змінні. Значною мірою правило зазвичай Тобто, ваш variables-- якщо ви створюєте їх всередині фігурної braces-- вони існують тільки всередині цих фігурних дужках. Так, наприклад, в залежності від нашого FUNC, ви бачите ці дві дужки. Якщо ви створюєте нічого всередині нього, Шанси все, що ви робите це створення стека і зберігання, що там. Те ж саме в основний. Ось тільки зберігається всередині основною. Також ви хочете бути дуже, дуже обережні. Тому що сфера також надає себе різні приклади. Так, наприклад, для петля для Int я дорівнює 0. Я менше, ніж, я не знаю, 10. Я плюс плюс. І у вас є код всередині нього, вірно? Де ця змінна, я, насправді існують тільки? Тільки всередині ваш цикл. Так що я думаю багато хто з вас, хлопці мають ймовірно, зіткнулися цю помилку, коли ви робите у ваших програм psets. Як багато з вас, хлопці намагалися використовувати I поза для циклу і були помилки? Як недозволених посиланнях чисел або щось подібне? Причина, чому це відбувається тому, що тут ви створювати щось, що тільки існує у вашій цикл. І якщо ви намагаєтеся використовувати його, я не насправді існує поза нею. Так в основному комп'ютер кажучи, я не знаю, що ви говорите. Все, що я знаю, це що я був тут, але тепер вже немає. Так що, якщо б я був, щоб створити цикл всередині, чи не так? І я збираюся створити інший, як INT J, і він зробити що-небудь. І у вас є код всередині що цикл, тільки J існує тут. Але також існує в I. І так J існує тільки в цьому цикл, в той час як я існує в цілому річ. Все ясно? Те ж саме з умовних операторів якщо ви хочете створити що-небудь. Те ж саме з в той час як цикли, якщо Ви хочете, щоб створити що-небудь. Це те, що буде дуже, дуже обережні. Таким чином, це був дійсно хороший проблема в відчуваю, що він показав дві речі. Він показав, по-перше, обсяг. І він показав Також виділення пам'яті. Тому що ви, хлопці, повинні знати, що Функції рости вгору в стеку. І, що, коли ви телефонуєте Функції, ви створюєте по суті, новий стек пам'яті. Це дуже відрізняється від що ваш мережевий пам'яті. Так. Ось так! Все ОК, що? Це було оману. Дуже хороші теми перейти, тому що ви, ймовірно, збирається отримати деякі складно такі речі, як, що на вікторині. Так. Прохолодний. Я покладу ви отримаєте 100 на одному лінії, а потім 10 з іншого боку. Так, дуже добре. Добре, тепер ви, хлопці, отримаєте шанс бути ТП. Ви відповісти на всі милі електронні листи, які я іноді отримую. Так що, дорогі Енді, я бачу, я думаю, що щось відбувається не так з моїм компілятором. Я впевнений, що мій код є правильним, але я продовжую отримувати помилки сегментації кожен раз, коли я біжу. Що відбувається? Будь ласка, допоможіть, багато любові. Якщо ви, хлопці, є щось на зразок що, як би ви відповіли? Це насправді дуже поширені питання ми просимо вас. Хіба, якщо ми дамо вам сценарій, ми дамо нам Ваш найкращий здогадуватися, що відбувається. Хто-небудь є удар на те, що відбувається? Так? АУДИТОРІЯ: Може бути разименовиваются NULL, то, як покажчик вказує на те нуль. ПРОФЕСОР: Так, це було б бути приклад, коли це станеться. Але те, що більше картина що тут відбувається? АУДИТОРІЯ: Це ви намагаєтеся для доступу до пам'яті, що ви не повинні мати доступ до? ПРОФЕСОР: Точно. Так думати про вино SEG, в офф межі, заборонена зона в пам'яті що ви не повинні стосуватися. Так досить багато, коли ви намагаєтеся щоб index-- як наприклад, Ви оголошений Масив від нуля до дев'яти. Але ви спробуйте доторкнутися до 10-й Значення, ви не маєте доступу до цього. Тому що ви не заявили його. І тому ваш комп'ютер буде дивитися на це, як би, Ой-ой, ви намагаєтеся йти за межі індексу. Я збираюся дати вам помилки сегментації. Подумайте як сегменту, вірно? Додатковий сегмент, несправність при спробі порушити щось і ви не повинні бути там. Сегментація винен у будь-який час Ви намагаєтеся торкнутися речей що ви не повинні стосуватися. Так загальні приклади індекс. Звичайно, якщо ви намагаєтеся доторкнутися, що було порожнім, що також буде працювати, як добре. Якщо покажчик намагався торкнутися речей, які не повинні торкнутися, які могли б також працювати, як добре. Найбільш типово ви будете побачити це в масиві. Все добре? АУДИТОРІЯ: Так що, якщо ви хочете щоб отримати доступ до 10-точка і є тільки обмеження дев'ять чи щось. ПРОФЕСОР: Так, саме так. Доволі багато. Прохолодний. Дорогий Енді. Отже, ми отримали ці чудові речі називаються всякі. Якщо злиття sort-- як ми бачив у приклад, коли Девід зробив усе річ в class-- чому, якщо це так набагато швидше, ніж будь-який з інших видів, чому ми навіть потрудилися знаючи будь-який з інших видів? Що це насправді питання прошу тебе? Що три word-- АУДИТОРІЯ: Що компроміс? ПРОФЕСОР: Точно. Це те, що просять питання. Що компроміс між Злиття роду вірші інших видів? АУДИТОРІЯ: займають пам'яті, вірно? ПРОФЕСОР: У вас пояснити, що трохи більше? Перш за все, давайте пояснити Merge магазин. Як сортування злиттям працює? АУДИТОРІЯ: Так це працює, ділення навпіл все а потім покласти його разом і перерозподіл його в порядку, що кожен раз, ви поєднуєте набори. ПРОФЕСОР: Досить багато. Так що я можу зробити це, але це було б взяти мене п'ять хвилин, щоб зробити це. Озирніться на розділі слайдів де ми розглянули сортування злиттям. Точно. Таким чином, спосіб сортування злиттям робіт це ділить речі в половині, а потім він просто дивиться на Перші значення всіх з них і сортує тільки. Постійно створюються нові масиви і ставить речі більш і більш в порядку. І так, що в той час як насправді, насправді швидко, тому що ви знаєте, it's--, двійковий пошук н лог н. Ви створюєте так багато різні масиви, що ви використовуючи величезний обсяг пам'яті. І тому, хоча це швидше, компроміс є те, що ви використовуєте більше пам'яті. І так, натяк, види і пошук були покриті багато більше цього року ніж вони були в роки попередніх. Ви, хлопці, повинні бачити, що відповідним чином відображено на вікторині. Я безумовно провести час збирається б за те, що всі різних сортів є, як бінарний пошук, як лінійний пошук роботи. Як, можливо, псевдокод код таких проблем. Які працює раз? Щось на зразок, що працюють раз дуже легко скопіювати вниз на ноту листа, вірно? Це дійсно важко, коли ти в середині перевірка за і ви повинні зрозуміти це. Скопіюйте його вниз. Я гарантую вам, ви знадобиться знати. Які компроміси? У гіршому випадку, кращі сценарії тематичних для всіх з них, дуже впізнати. Так? АУДИТОРІЯ: Не потрібно знаєте, як кодувати сортування злиттям? Мовляв, ми повинні пам'ятаю рекурсивної? ПРОФЕСОР: Я дуже сумніваюся, це просто тому що це, як досить складна. Але воно не може бути неможливим, якщо ми просимо Вас використовувати псевдокод його. Так. Так, добре, ще один. Це може прийти в Ви останній шматок у небагато. Так? Чи всі почути, що? ОК, так що досить багато перш Все, що тип програми буде давати вам вихід, як це? Пам'ятаєте, ми просили вас, щоб дізнатися про це новий тип налагодження інструмент? Як звали його? Valgrind, право Це була програма, де Ви могли б назвати, які могли б відстежувати всі пам'яті ви знаходитесь використовуючи у вашій програмі і відбувається. Так що, якщо у вас є щось, як, безумовно, втратив, 40 байт в одному блоці. Можливо ви не пам'ятаючи, щоб звільнити її. Тому що, якщо ви використовуєте байт пам'яті, це означає, що ви зверталися, що пам'ять, але ви не змогли звільнити. Отже, ви хочете, щоб зробити Переконайтеся, що ви також використовуючи free--, що це function-- звільнити всі пам'яті перерозподіляються по Танос. Прохолодний. Так даному слайді, я буду мати його. Це всюди у великій кількості лекції, в багато слайдів. розділ Ви дійсно хочете, щоб переконатися, ви просто знаєте, все це. Або в записну листа або якщо ви хочу запам'ятати його, не соромтеся. Це дійсно, дійсно, дійсно важливо. Також дуже добре Питання, яке ми можемо попросити. Чому погляд Selection sort-- на Вибір sort-- весь час автономної роботи які п в квадраті. Незалежно від того, список йде Ви, як, так чому sort-- Вибір Я дам вам хлопці 30 друге думати про це. Тому що це свого роду оману. Вона включає в себе деяку концептуальну думку. Чому б часи Run бути те ж саме в і гірші і кращі сценарії тематичних? Так? АУДИТОРІЯ: Тому що вибір начебто друг положення або місце в цій невеликій масив річ або щось. Таким чином, навіть у кращому випадку, навіть якщо це абсолютно відсортовані, він все одно повинен бути, як, добре, один. У моєму першому місці у мене є один. І пройти через всі з них. ОК, один є найменшим. А потім знову йде і як, в порядку, два є найменшим з усіх речей. Але він як і раніше повинен перевірити кожен, і кожен. ПРОФЕСОР: Так. Так, наприклад, давайте просто скажемо, У нас є список, вже відсортований, масив одного до п'яти. Таким чином, що види відбору є те, що він проходить через, він перевіряє ці два. Потім він перевіряє ці двоє. І тоді він перевіряє і перевіряє. Він продовжує перевірки всіх з них, незалежно від того, чи є це насправді відсортовані. Тому що це просто то, якось працює. І так це питання ніби як концептуальне питання ми просимо. Де-перше, вам знаю, щось Selection це, право, щоб бути в змозі відповісти на питання. Ви повинні бути в змозі зрозуміти концептуально те, що відбувається. І тоді ви можете застосувати його і думати, ОК давайте просто уявити найгірший сценарій. Вони всі в порядку убування. Як це вплине це? Що робити, якщо це порядок за зростанням? Якщо це вже відсортовані? Як це вплине на час автономної роботи? А потім начебто Вибір, ви помітите, що насправді не має значення. Тому що ви перевіряєте всі значення, незалежно від того, що відбувається. І так хороші речі, щоб пам'ятати. Чому деякі види відрізняються від інших і як краще і гірші сценарії вплине всі з них. Я збираюся дійсно вдарив в пологах тому що це буде на вікторині. Так. ДОБРЕ. Там шести хвилин залишилося. Я можу взяти три хвилини питання. Я також можу стирчати як 20 хвилин після розділу якщо ви хочете, щоб ставити питання, а також. Хто-небудь просто дійсно короткий питання або концептуальні питання вони незрозуміло про прямо зараз? Так? АУДИТОРІЯ: Чи можете ви розповісти трохи Трохи про Поразрядно операторів? ПРОФЕСОР: Так. Так бітові оператори те, що ви, ймовірно, може просто хочу, щоб покласти на аркуші. Так quickly-- я не хочу йти занадто багато в глибині бо Гарвард, у своєму огляді сесія, покрили його дуже добре. Оператор Побітове, є п'ять із них, вірно? Там ця, яка х або функція, є амперсанд, який є і. Труба, яка є або. І тоді у вас є два різні типи зрушень. Якщо я дам вам два значення, у разі Я даю вам, як, один і один. Що б це оцінити ,? Якщо я даю вам вірно і справедливо, вірно? Що про істинним чи хибним? Тим не менш вірно, вірно? Тому що є або. Ми, швидше за все, дасть вам число. Так що пам'ятайте, один дорівнює правда, нуль дорівнює брехня. І ми могли б дати вам ці речі і прошу вас розповісти нам, що відбувається. Гарвардський покриває її протягом перших 10 хвилин їх навчальній сесії, дійсно, дійсно добре. Таким чином, ви, хлопці, хочете, щоб що ви озирнутися на що. Залу: pisa5 буде на вікторині? ПРОФЕСОР: Ні Навіть не дивіться на pisa5 прямо зараз. Це важко. Просто навіть не потрудилися дивлячись на pisa5. Однак, так як деякі натяки та пропозиції, я хотів би запропонувати вам почати pisa5 як тільки вікторина закінчилася. Це буде найважча тиждень, але тоді ви, хлопці, буде прийнятий його на пагорбах прокатки зелений і цуценят, і це прекрасно. Цей клас отримує значне легше після п'ятого PSET. АУДИТОРІЯ: Годинники є неділя, понеділок? ПРОФЕСОР: Так, так в робочий час буде Неділя на понеділок для PSET. Годинники сьогодні ввечері по суті буде просто огляд для вікторини. Якщо хтось хоче прийти і запитати Тас питання, ми будемо там. Я візьму, може бути, ще одне питання якщо у кого є питання? Так? АУДИТОРІЯ: Коли ви визначають вузли, [нерозбірливо] якщо ви говорите, вузол зірок, а потім у наступному, робить комп'ютер автоматично розумію, що ти з посиланням на інше покажчик? ПРОФЕСОР: Ні АУДИТОРІЯ: Ви повинні слінкуем [нерозбірливо]? ПРОФЕСОР: Тому в основному структура з вузла, пам'ятайте, це, як ви створити вузол і то у вас є вказівник, званий поруч. Все, що ви робите, що мають структура є. Ви повинні призначити що десь покажчик. Таким чином, комп'ютери не знаю, що він ще робить. Ви є насправді, коли призначити Ви створюєте свій зв'язаний список. І це те, що в основному PSET 5 буде далі. Так що не турбуйтеся про нічого з цього прямо зараз. АУДИТОРІЯ: Таким чином, ми не повинні занадто великий акцент на список посилань, просто загальна концепція? ПРОФЕСОР: просто дуже багато стеків, Черги, посилання списки, дерева, хеш-таблиці. Просто бути в змозі знати, що вони є. Ми не збираємося просити Вам подобається щось конкретне бо ми дійсно не зробили PSET, що охоплює будь-який з що ще. Таким чином, в останні дві хвилини до Я звільню тебе вбити цю вікторину. Досить багато, як, думаю, про те, як далеко ви, хлопці, прийшли в цьому класі. Я пам'ятаю, коли другий тиждень цього класу, деякі з вас провести 3:00 писати води. Як довго це займе вас Хлопці написати воду зараз? 30 секунд, може бути? Подумайте про те, скільки ви, хлопці, дізналися. CS дійсно, дійсно важко тема. Там немає сумнівів. Це важко, ось чому ніхто не вивчає його. Це просто важко. І це абсолютно нормально. І я пишаюся, що все зробив це настільки далеко. Psets не легко. Вони приймають багато часу. Ви, хлопці, я ніколи не буде просити вас, щоб написати гра 15 або Vigenere на PSET. Немає необхідності, щоб просто урод про це. Всі ми тестуємо тут, щоб оцінити Ваш концептуальних знань, а також як деякі з ваших основних навичок кодування. Тест призначений для дійсно складним завданням. Мовляв, він призначений для вас, щоб не отримати 100. Він також призначений для вас, ймовірно, же не бути в змозі закінчити в 75 хвилин. І це абсолютно нормально. Я студент сам. Я знаю, я ненавиджу його, коли я йду з вікторини бути, як лайно. Це було дійсно важко. Можливо, що буде happen-- і це абсолютно нормально, Я говорю вам, хлопці, просто зараз. Кошти на ці речі невисокі взагалі. А для тих, хто були одержувати, як, трійки на проблемних наборів, це не означає, що ти збирається отримати 60 відсотків у цьому класі. Якщо ви отримуєте 60% на Тест, що не означає, що ви збираєтеся отримати D в цьому класі. Ми бачимо, особливо я, тих з вас, в моїй секції, Я бачу, як сильно ви, хлопці, все працює. І я відстежувати, що. Ви, хлопці, все буде в порядку. Там немає інституційної пам'яті щастя в кінці семестру. Тому що всі діти з Гарварду говорять їхні друзі, ох, ти будеш в порядку. Ніхто не говорить вам, що тут хлопці. Так що я повинен сказати вам, хлопці, що тут. Ви, хлопці, все буде в порядку. Я так пишаюся усіма вами, хлопці. Тест буде важко. Вивчіть для нього, а потім його просто викинути. Будьте готові, щоб дізнатися нові речі. І з'їсти цукерку. У нас є багато цукерок. Отримати хороший сон вночі. Чи не не сплять, бо що б дійсно погано. CS багато логіки. Якщо ви не спите, ви не можете працювати, і ваш мозок не може функціонувати. І я буду тут протягом наступних 20 хвилин, якщо хтось хоче, щоб бродити навколо. Ви, хлопці, збираєтеся вбити його. Удачі.