Професор: Значи, на дневниот ред за оваа недела, не дека многу нешта. Но се надевам дека многу, многу корисни и релевантни за вас момци оваа недела. Но, ние ќе треба да поминат можеби 15, 20 минути само брзо се зборува за листа линк. Листи врската се случува да бидат опфатени на квизот. Па можеби тоа ќе биде многу корисна за да дознаете нешто повеќе за тоа што е тоа. Ние ќе треба да се трошат огромни Поголемиот дел од денешната секција одење во текот квиз нулта проблеми пракса. А потоа ние ќе го спаси можеби 20, 30 минути на крајот за било бавни прашања некој има. А потоа, во последните пет минути, јас ќе одам да се даде пумпа до говор за квиз. Вие момци сите сакаат да бидат тука за тоа. Затоа што тоа се случува да биде добро време. Добро, па некои материјал на листата линк. Како тие се обично е структурирана имате она што се нарекува јазол, нели? Имате овие работи вика јазли, кои се structs. Јас ќе одам за тоа како да се создаде јазол во следниот слајд. Но, во суштина сите поврзани листи се податоци кои се нанижани заедно преку покажувачи. И така предност имаме на користење на поврзани листа завршена, можеби, како низа, е фактот дека во низа ви треба еден соседни блок меморијата на сите на истото место, еден по друг, за да може да го имаат тоа. Со оглед на поврзани листа, може да ги има случајни малку делови од меморијата сите над вашиот компјутер нанижани заедно со совети. И на овој начин ќе се може да имате пристап до информации кој доаѓа еден по други, по друг без потреба само огромен дел од меморија во вашиот компјутер некаде. Па така ова е една од главните причините зошто ние ги користиме листа линк. Второ, тоа е многу лесно да се динамички големината на листата на врската, бидејќи во низа, кога ќе се изјаснат за низа, имате одредена поставена вредност. Да речеме, сакав да се создаде низа од 10 цели броеви. Јас создаде низа од 10 цели броеви, и тоа е тоа. Тоа е 10. Не знам што да правам после тоа. Ако сакав да се направи тоа 11, не може да го направи тоа. Ако сакам да го направи тоа 9, не може да го направи тоа. Додека во листа на линк, можете да додадете и избришете и да внесете каде сакате. Можете да ја промените големината на вашиот динамички структурираат тука, вашите податоци структура. И тоа ни дава многу повеќе дополнителна флексибилност дека ние обично не имаат со низи. Секој збунети за основните структурата на тоа како листа на линк е или зошто ние мора да користи една над низа? Да, ние ќе одиме во текот во детали како да се, всушност, се создаде една. Но, ова е само вид на општа смисла, токму сега. Кул. И така низи се нанижани заедно на овие убави мали работи наречени јазли. Сите еден јазол е еден вид на struct. Запомнете, struct е ако си сакал да се создаде одреден тип на променлива во C дека веќе не постои, вас, како програмер, всушност, може да се создаде тој себе. И така овој тип на податоци структура се нарекува еден јазол, всушност, е создадена од нас, дека не постои во рамките на Ц на своја сопствена. И начинот на кој што се создаде една е што треба заглавието на typedef struct, кој му кажува на компајлерот сум за да се создаде struct. Ние си оди за име "јазол". И во внатрешноста ние си оди да декларирате променлива во, која се случува да се складира вредност. А потоа ние сме, исто така, ќе се имаат покажувач наречен "Next" што укажува на следниот јазол во листата на линкот. А потоа ќе заврши тоа надвор од само повторување јазол повторно, па компајлерот знае, во ред тоа е крајот на мојот struct. И така на овој начин, ние сме вид на создавање на една симпатична малку низа вид на работа со вредност и со покажувач. И можете да ги водат сите заедно со оние покажувачи. Така што сите тие да се вид нанижани заедно во еден синџир. Кул. Може да ви се слушне дека малку подобро? ПУБЛИКАТА: Да. ПРОФЕСОРОТ: Во ред. Па начинот на кој, како што вие момци можат да се види, типичен листа на линк е структурирана е имате главата. Имате вредноста на главата, што не е вперени со кој било друг покажувачот. Но, тоа се случува да се укаже на, или референца, друг јазол. Јазол откако ќе референца јазол после тоа, и така натаму и така натаму додека не го погоди на крајот На крајот на вашата листа со линкови. А вие едноставно не ќе имаат покажувач таму. И така, се размислува како, на еден синџир, па дури и ако некој од вас момци направи, јас не знам, како и со овошје Loops кога сте биле малку. Што би ги стринг заедно и да ги носат околу вратот. Мислам дека тоа е иста работа. Имате овие мали нешта што можете може да стринг заедно таа точка на еден после тоа, на еден по тоа, и така натаму и така натаму додека имаш синџир на податоци структура дека можете да го користите сепак ви се допаѓа. Па начинот на кој тоа би обично вметнете или бришење било кој јазол од врската Листата е многу различно зависност од тоа каде тој јазол е. Така, на пример, бидејќи покажувачи се секогаш посочувајќи на одредена вредност, кога ќе ги избришете или вметнете јазол, вие сакате да бидете сигурни дека на покажувачот се сите посочувајќи на правото работи. Значи, ако си сакал да го внесете потенцијално нов јазол со вредноста на еден во внатрешноста на подредени врската листа, сите знаеме тука од сликата што се случува да одат во меѓу главата и два, нели? Бидејќи еден вклопува во право таму. Но, начинот на кој ние би го сторил тоа е од прва dereferencing покажувачот од глава и испраќање дека на еден. Но ние стапи на проблем тука. Може ли некој да видиме што е проблемот е ако ние требаше прво да dereference покажувачот од глава до еден? Што проблем може да трчаме во ако се обидеме да го додадете ова на предниот дел на нашата низа? ПУБЛИКАТА: [Беззвучен] Професор: Токму така. Значи тука имаме покажувач кој беше еднаш посочувајќи од глава до два. Но, ако ви се ослободи од таа покажувач, ќе ја истакне на една, ние сега немаат идеја каде да одат да се најдат два. Бидејќи, како што реков претходно, имаш гигант парче меморија во вашиот компјутер. Сите овие јазли би можеле биде случајно прошарани во било кое место во вашиот компјутер. А вие не знаете како да се обратите за наоѓање на тоа. И така треба да се има покажувачи што укажува на сите јазли на крајот. Или на друго место ако случајно dereference еден без прво да се назначи односно вредноста не прв, ти си Едноставно ќе се изгуби сè што после тоа. Значи она што ние ќе треба да направите е, што би направиле првиот сакате да создадете покажувачот на јазол сакате да ја внесете. Точка до каде што сакате да го вметнете ја, а потоа и потоа ќе се би можеле да посочат главата назад кон еден. Дали тоа има смисла да се сите тука? Одлично. Сфатете го тоа како само како еден синџир. Ако додадете еден синџир, тоа е вид на интуитивен како би се обратите за вметнување на тоа. Добро, па тоа е, всушност, многу пократок отколку што мислев дека ќе биде, петминутен зборувам сладкодумно на линкот листи. Само така вие момци имаат Основната идеја на што е тоа. Тука имаме на дневен ред за квиз нула. Не дозволувајте ова да ве заплашат. Знам дека е многу информации. Тоа изгледа многу страшно. Тоа е исто така многу, јас мислам, ГСЦ вид на термини. Работи како хексадецимално стрингови, покажувачи, алокации динамичка меморија се многу страшно термини труба. Но, ние ќе треба да ги скинеш долу, дали некои проблеми пракса така што вие момци сите се подготвени за овој тест. Колкумина од вас момци имаат веќе почна да студираат? Добро, вие момци веројатно сакате за да почне да започнете за тоа, бидејќи на квиз е утре. Или четврток за некои од вас. Да, па ние ќе треба да се оди во текот на некои проблеми пракса. Ако вие момци сите сакаат да ги преземат од еден лист хартија, молив. Ние ќе треба да поминат само Огромното мнозинство на денешната секција одење во текот на некои од што толку вие момци имаат идеја за тоа што да се очекува на квизот. ВО РЕД. Неколку логистичка Детали, како и, за никого кој не е со врски што водат до таму, ако одите на cs50.yale.edu, на предната страна оваа страница има линк кој вели: "За Квиз нула." Линк ќе ве однесе таму. Ако не го прочитал, прочитајте го. Затоа што тоа ви кажува навистина важно информации во врска со квиз. Одам да се повлече оваа надвор од дека само поради тоа, физички, ако вие момци не знам каде да одат, ќе имаме проблеми. И така, ако вашиот последен во однос со A во N, одете на аудиториумот законот училиште. И ако вашата последна започнува со P до Ш, одете на Дејвис аудиториум. И ова се однесува само за луѓе во делот средата. Ако сте преземање на квизот на Четврток, одите на ССН 114 каде што вашиот предавање обично е. ПУБЛИКАТА: [Беззвучен] Професор: О до Ш, си оди да одат на аудиториумот Дејвис. Одам да го промени тоа, нели? О, да, вие само да не успее автоматски. Oh yeah, тоа е вас Криста. Да, мојата лоша. Да, О до Ш, си оди да одат на Дејвис Auditorim. Одам да го надминете овој, кога еднаш ја испратите. Је. А потоа, исто така, нешто важно да се ум е во тоа што во средата, ако сте официјално запишани во делот Среда, мора да го однесете вашиот квиз во средата. И ако сте запишани во четвртокот, мора да го однесете вашиот квиз четвртокот. И тоа е време на класа. Каде што, мислам дека тоа е како 1:00 до 02:15 во среда и во 2:30-03:45 во четврток. Ако имате непомирлив конфликти, Оправдувања Дин се единственото нешто, За жал, ние може да потрае. Затоа што имавме Огромното мнозинство на барања за да се префрлите од среда до четврток. Кои не можеме да ги почитува, освен ако имаме барање на деканот. ВО РЕД. Па пред да започнете на неколку проблеми од практиката, Јас сум само ќе да се премине Енди корисни совети за успех. Вие момци, кога ќе ги учат, што навистина сакаат да ја практикуваат пишување код со рака. Првиот што некогаш сум време зеде квиз CS, не бев пишување пракса код со рака пред и тоа беше исклучително шокантни на тоа колку е тешко. Кога ќе момци не се влезе во навика на пишување од сè, тоа доаѓа многу природно да се биде во можност да ги autocompleted држачи и запирки таму. Кога ќе го напише од страна, понекогаш тоа е многу, многу лесно да се заборави и запирка, или да заборавите да се затвори една заграда, или да заборавите да се затвори една дебелото црево, или нешто слично. Па кога ќе се напише кодот од рака, тоа е многу поинакво чувство. Па вие момци, кога си работат преку некои од проблемите во практиката, би било упатно да навистина го практикува денес. Или утре, претпоставувам, ако сте преземање на квизот во четвртокот. Второ, ние го има последниот, како, осумгодишната вреди на пракса квизови онлајн. Оваа година веројатно ќе биде квиз многу, многу слични на сите од нив. Сите тие се многу слични. Можете вид на се влезе во Стилот на тип на прашања и да бараме, од типот на функции што ние ќе го пишуваат, и така натаму, и така натаму. Затоа потрудете се квизови практиката, особено во време ограничувања. 75 минути да се направи на квизот е не е многу на износот на време. Тоа е многу, многу долго. И така вие момци навистина сакаат да бидете сигурни дека вие момци се во навика на пишување код со рака брзо. Бидејќи вие не сакате првиот време за да ја видите на квизот на таа должина бидете на вашиот квиз. Вие момци навистина сакате да бидете сигурни дека кои ви се практикуваат пред тоа. Четврто, сакаш да ги видиш предавање и делот слајдови. Вие не треба да се запаметат работи. Всушност, секој е дозволено еден лист бела хартија белешки, напред и назад. Вие момци можат да напишеш или пишуваат. Ако се наоѓате себеси има потреба да се запаметат ништо, го спуштија на листот. Јас ви гарантирам, вие не сакате да се се заглавени во средината на тој квиз да се биде како, о да, она што е траење од овој вид против тој вид. Само го спуштија и ископирајте директно од вашата забелешка на состојба. Тогаш може да се, всушност, само го користите вашиот мозокот да размислува за проблемите наместо да се потсетиме на фактите. И така навистина ги искористат предностите на кои било детали лажат што мислите дека треба да се запаметат, таа паднала долу на лист преглед. ОК, било какви прашања логистички во однос на квизот пред да започне некои квиз проблеми вежбате? Да? ПУБЛИКАТА: Не сум имал шанса да се погледне на квиз [Беззвучен] но е тоа нема да биде Апликациите најчесто, Или има, исто така, ќе биде, како, прашања знаење? ПРОФЕСОРОТ: Тоа е многу. Значи, на начин на кој јас би го опишал квиз is-- ставив заедно некои проблеми пракса дека јас се повлече од сите квизови. Но ќе видите дека има две главни видови на прашања ќе ви поставиме. Една од нив е на многу ниско ниво на деталност на работи. Ние ќе ви дадеме мал дел од кодот и да каже, дали има грешка во оваа ситуација? Она што ќе се печати од тука? Што овој код се произведуваат, и така натаму. Па детали информации многу ниско ниво. А од друга страна, ќе имаме многу високо ниво прашања базирано на знаење. Може да ви го објасни она што Разликата помеѓу бинарни пребарување и линеарно пребарување е? Зошто ние би сакале да користи еден во однос на другите? Можеби, она што е GDB? Зошто сакаме да го користиме GDB? Повисоко ниво, повеќе основни разбирање на прашања. Па ќе видиме мешавина од две од нив на вашиот квиз. Нешто друго пред да главата директно во неа? ВО РЕД. ПУБЛИКАТА: Уште една. ПРОФЕСОРОТ: Ах, уште еден. Жал ми е. ПУБЛИКАТА: Да, тоа е во ред. Па ти си велејќи дека 75 минути е премногу краток, како што е малку веројатно дека ние ќе заврши? Или, како, 75 минути е токму онолку време како што ние ќе треба да бевме соодветно подготвени? ПРОФЕСОРОТ: Добро, па на квиз е предизвик. Тоа е дефинитивно предизвик. Ќе најдете се кратки на време. Ти си веројатно се случува да се погоди, како и 10, 15 минути да одам, и да се биде како, срања. Имам толку многу што да се прави. И тоа е сосема во ред. Секој се случува да се чувствуваат на ист начин. Само да бидат многу свесни за колку време имаш. И така тоа е зошто јас да ви кажам момци прават квизови практиката. Поради тоа што навистина дава големо чувство на она што на квизот ќе биде како. Значи, ако се наоѓате себеси се во можност да ја заврши пракса квизови во добра сума на време, можете да се темпо добро, тогаш нема да имаме проблем во среда или четврток. Кул. Значи, ако сите wants-- мислам повеќето луѓе имаат листови хартија од веќе. Одам да се во суштина само ви даде примерок прашања, ви даде момци, како, неколку минути да ги прават. И ние ќе одиме во текот како класа што одговорите на нив се. Значи ова е многу типичен рано прашање ние ќе да побара од вас, само конвертирање броеви помеѓу различни бази. Бинарни, како вие момци можат да да се потсетиме, е основата на две. Децималниот е база на 10, или она што го како луѓе обично се интерпретира. Хексадецимални е база на 16, кој е нула преку девет, како и A до F. Значи има четири бројки сум ќе побара од вас момци да конвертирате тука. Јас ќе им даде ви се допаѓа, три до четири минути да се мисли преку тоа како ние ќе одиме за решавање на ова. ПУБЛИКАТА: Дали смееме калкулатори? ПРОФЕСОРОТ: нема треба калкулатори, да. Мислам дека основна Покрај тоа, според мене, е сите вие ​​момци ќе биде побарано да се направи. И само така јас вид на имаат чувство од кога сите се направи, гледам нагоре, бран, јас не знам, насмевка, изгледаат среќни ако ќе завршиш. Је. Можеби уште неколку минути. Добро, ајде да го донесе во. Јас намерно ќе ви даде момци помалку време од веројатно ќе треба да се дали некои од овие проблеми, едноставно затоа што ќе сакате да бидете сигурни дека добиеме низ еден куп на проблеми. Па не се грижи ако не сте имаат шанса да го заврши. Сосема во ред се додека имаш идеја за тоа како да се обратите за ова. Значи, да се оди напред и да го направи првиот. Значи прво, Сака ли некој да ми каже во бинарна, што прават секој од овие бројки претставуваат во однос на нивните вредности? Да? ПУБЛИКАТА: Два до моќ нула, два на еден. Професор: Токму така. So. Добро, па обично кога сме во основа 10 сите овие претставуваат се, како и, 10 на база на нула, така? Тоа е вашиот сопственото место. Сите вашето место 10 е е 10 на моќта на една. Вие 100 место е 10 на моќта на две. Што и ти си во основа се случува да се направи со иста работа, само со различна основа. Па бинарни, сето она што е е база на две. Ви се случува да го конвертирате сите бројки на два до она што моќта од таа цифра. И така, во таа смисла, ние може да има полесен начин да биде во можност да се додаде или сумира сите броеви со цел да се претворат во основа 10. Па Сака ли некој да ми каже што на Одговорот на првиот е во основата десет? ПУБЛИКАТА: Две, [Беззвучен] Професор: Да. ПУБЛИКАТА: 42. Професор: 42, таму да одите. Па начинот на кој го добив овој одговор е со прави две првата, што е за два. Плус две третиот, кој е осум. Плус две до петтата, која е она што ќе остане. Можете да ги сумира и тоа е 42. Дали некој е збунет за тоа како направивме тоа? Толку основни Дополнително, како и Јас реков, треба да биде во ред. Ако не е, добро, ние може да се практикуваат тоа. Но, тоа е во ред. Кул. Сака ли некој да ми даде Одговорот на второто една, исто така? 50? Добро. Некој збунет за тоа како добивме ни тоа? Кул, јас ќе имаат одговорите на следниот слајд. Па не се грижи ако треба да го копирате надолу. Добро, па хексадецимален е малку сложени да ја формира. но јас ќе одам да ви покаже момци кратенка за тоа како да го направи тоа. Па хексадецимален, како што се сеќавам, се тоа е да биде 16. И бидејќи ние како луѓе не се всушност 16 броеви се претставуваат дека, одиме од нула до девет, која нашиот прв 10 вредности, а потоа тоа го правиме преку F, кои се на следните шест вредности. И така на најлесен начин да се оди од било бинарен број да хексадецимален е да ги растури во половини. И така било бинарен број даваме најверојатно ќе има осум бројки. Вие само може да се скрши нив во средината. Така, првиот one-- еден еден, еден еден, еден, еден, еден еден. Видот на тоа мислам, знаеш, да привлече коса црта или запирка меѓу нив. И вие само може да се конвертира директно она што ова е на првата број на хексадецимален, и што и да е тука за да втора од хексадецимални. Па се сеќавам од заеднички нотација, она што хексадецимален вредности започне со? ПУБЛИКАТА: нула. ПРОФЕСОРОТ: 0x. Па знаеме дека секое време бараме од вас да конвертирате било кој број да хексадецимален, или било кое време ќе видите било број кој започнува со 0x, знаете ли дека тоа е хексадецимална вредност. А потоа ви се случува да се бара да утврди она што овие две цифри се. И начинот на кој ќе го направите тоа, tallying до дека половина и tallying до таа половина. Така што во овој пример, што би еден, еден, еден, еден да биде? Која вредност ќе биде тоа? Тоа би било F, нели? Тоа би било 15. Па ова ќе биде Ф. Еден, еден, еден, еден тука е, исто така, F. Па еден, еден, еден, еден, еден, еден, еден, еден во хексадецимален, сè тоа е е 0XFF. Бидејќи ова полувреме застапени F, вредноста на 15, Ова полувреме и застапени F, вредноста 15. Бидејќи се сеќавам, ние сме сметајќи од нула до девет. A е како 10, B е како 11, F е 15. Дали тоа има смисла за сите колку добивме од бинарни да хексадецимален? ПУБЛИКАТА: И така како сме стигнале 15 од еден, еден, еден, еден? Професор: Да, ова е бинарна, нели? Замислете ова е само бинарен број. Па имате два до 0., кој е еден. ПУБЛИКАТА: Ох, ОК. За да можете само да го изнесуваат надвор. ПРОФЕСОРОТ: Да, и потоа можете само да вкупно тоа. Тоа е се што и да е. ПУБЛИКАТА: Во ред. Професор: Во ред. ПУБЛИКАТА: А ти оди од бинарни да децимални да хексадецимален? Професор: Тоа е Најлесниот начин да го стори тоа, да. Вие нема да децимални бидејќи децималниот има само нула до девет. Ние сме само вид на оваа поделба во две. ПУБЛИКАТА: [Беззвучен] користење децимални да се најде што тоа се совпаѓа во хексадецимални. ПРОФЕСОРОТ: Мислам, ти си tallying користејќи основна математика. ПУБЛИКАТА: Да. ПРОФЕСОРОТ: Да, доста. Тоа е малку збунувачки. Но, само знам дека вие може да се подели до она што оваа вредност е во само половини. Гледај, што е ова на бинарни? Што број е ова? Тоа се случува да биде нешто од нула до Ф. Тука е и ќе биде нешто од нула до Ф. И тогаш само може да се стави тие две право таму. ПУБЛИКАТА: Во ред. Професор: Да. ВО РЕД. Па вие момци сакате да пробајте следниот еден тогаш? Нула, еден, еден нула, еден, нула, еден нула. Јас ќе ви даде момци како 30 секунди, бидејќи вие веројатно не го знаете трик за тоа како да го направите тоа порано. Добро, некој сакаат да добијат уште еден шут? 0X5A. Професор: 0X5A. 5а. Добро. Па ова тука ќе be-- сакате да ни кажете како ли тоа? Прво, како дојдовте до пет? ПУБЛИКАТА: Поради нула, еден, нула, еден е пет. Професор: Дали сите се разбере зошто нула, еден, нула, еден е пет? Имаш еден тука. Немаш ништо во два до првите. За две до вториот, вие имаат еден, што е за четири. За да можете да додадете четири плус Од една, имаш пет. Секој добар? ВО РЕД. И тогаш што е ова и зошто? Она што го прави број соодветствуваат? ПУБЛИКАТА: 10. Професор: А што е ова во основа два? ПУБЛИКАТА: [Беззвучен] Професор: Токму така. Па оваа втората вредност тука ќе биде 0X5A. Секој добар за тоа како да го конвертирате? Тоа е многу поедноставно отколку што мислите дека е. Јас само сакам да бидете сигурни дека Ви благодариме за корисни совети и трикови за тоа како да го направите тоа. ПУБЛИКАТА: Зошто вие само може да се подели тоа во средината на теренот, како тоа? Да бидеш како, добро, јас сум само ќе да се грижат за овие први [Беззвучен]? Професор: Затоа што тоа е, всушност, начин хексадецимален вредности се претставени. 0x, кои, всушност, значи ништо друго освен да ви кажувам дека тоа е голем број хексадецимални. А тоа секогаш го претставува првите четири цифри. А тоа секогаш го претставува последните четири цифри. И така овие две бројки само соодветствуваат на различни битови. ПУБЛИКАТА: Значи, ние ќе always-- ПРОФЕСОРОТ: Ти си секогаш ќе добие осум бита вредност. ПУБЛИКАТА: Дали е тоа само како нешто тука или дека нешто во целиот? Професор: Тоа е само нешто во компјутери, Да. ПУБЛИКАТА: Во ред. Страшни. Професор: Исто, така што во овој пример ние конвертира од бинарни да децимални, и од бинарни да хексадецимални. Вие момци сакате да бидете сигурни дека, исто така, практикуваат случува обратно. Значи, ако ви дадов 0XFF, може да ги подготви дека во бинарен, нели? Ќе се конвертира во бинарен F, кој е еден, еден, еден, еден, конвертирате F до бинарни, која е еден, еден, еден, еден. Па ние може да ви побара да се направи обратно. Па децимални бинарни, или хексадецимален на бинарни. Значи сакате да направите Дали сте сигурни дека знаат и начини. Веројатно ќе ви поставам едно комбинација од двете. Да, имате некое прашање? Можам да see-- ти си добро? ПУБЛИКАТА: Да. Професор: Во ред. Дали сум добар за да ги избрише ова? Одлично. Добро, па одговорите се тука, ако некој е љубопитен подоцна и се збунети. ВО РЕД. ПУБЛИКАТА: Дали е важно ако се стави нашите букви во главниот град или мали? Професор: Тоа е така, бидејќи во хексадецимален, по конвенција, сите ликови се големи. Па A до 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 is-- Мислам дека тоа е 64-битен компјутер. Плови може да се претстави само со ограничен износ на тие делови. И така 0.1 со бескрајна нули, што беше 0.1 е, нели? Но, ние не, всушност може да се сместат тој број во нашиот компјутер. Ние едноставно немаат доволно меморија за да го стори тоа. И така во најблиската приближување она што се чуваат во меморијата е, всушност, нешто како 0.000 нешто, нешто, нешто, нешто. Кои, штом ќе ја намалите тоа, круга до 0.0. И така овој пример е само еден што покажува многу прашања имаме кога сме обидувајќи се да неправилно се направи математика без кастинг како друг број. Па само да бидеме претпазливи на ова случување. На квизови, ако ние ви даде блок од код и тоа е како, што отпечатоци на крајот? И ако тоа е некој случаен вредноста што Момците треба да знаат зошто тоа се случува. Да? ПУБЛИКАТА: намалит е да се ослободи од сè што по една одредена точка? [Беззвучен] Професор: Да, па, всушност, ова е навистина лош пример, затоа што и всушност 0.100 ќе ја намалите сведува на 0,1. Но, ако сте во ситуација да се кандидира it-- јас не се сеќавам, бидејќи минатата година тие што се одржа на една различна програма. Што го имаше во нешто што се нарекува на CS50 апаратот, која е различен од ID. Тоа беше 32-битен систем, мислам. И така имаше различни броеви. Но, во суштина, само знам дека целиот концепт на кратење и како тоа само го сече работите на пола. И така, ако тоа rounds-- ПУБЛИКАТА: Без заокружување. Професор: Токму така. Је. Кул. Здраво, во задниот дел. Ние сме само ќе преземе некои преглед квиз прашања. Во ред. Така сметаат различна програма тука. Одам да ви даде момци неколку минути да го прочитате во текот на овој. Ова е нешто што е за многу неодамна, кои мислам дека засвири многу од вас умови момци е. Но, ние ќе треба да се зборува преку ова повторно само за да бидете сигурни дека ќе да го разбере целосно. ВО РЕД. ВО РЕД. Секој треба повеќе време да читаат преку овој код? ВО РЕД. Така ми се чини дека во оваа програма Јас сум создавање на две жици со користење GetString. Еден вика s и еден вика т. И ако тие се еднакви е еднаква на едни со други, тоа треба да се печати "Ти напишете истото. " Но elsewise, тоа ќе печати, "Ти внеле различни работи ", нели? Чини многу, многу едноставна. Но, сепак, ако јас всушност се обиде да ја напишам оваа програма, се чини дека дури и кога јас внесување на иста стрингови, сепак отпечатоци од "Ти внеле различни работи! " Сака ли некој да се земе зошто пукал во оваа програма секогаш одговара дека влезови се различни, па дури и кога и самите зборови се исти? Значи, ако јас се да input-- Дејвид љубов за да го користите пример како мајка, нели? Мали М-О-М за С, Т еднакво мали М-О-М. Ако налетав ова преку тој код, зошто би го печати "сте ја внеле различни работи?" Дали некој треба повеќе време да се размислува за тоа? Добро, јас мислам дека ние сме добри. Да? ПУБЛИКАТА: Добро, па тоа е нешто во врска со каде што се чуваат во меморијата, така? Професор: Да. ПУБЛИКАТА: Таму каде што тоа е како, ако овој Стринг а се чува во меморија spot-- Јас сум измислување this-- е нула. ПРОФЕСОРОТ: Секако. ПУБЛИКАТА: А низа т се чуваат во меморијата на самото место, како, 167, а потоа нула не го прави еднаков 167. Професор: Токму така. Добро, па се сеќавам овој неверојатен откровение што објасни за вас момци минатата недела, дека стрингови навистина не постои? Кога ќе се создаде нешто што се нарекува стринг сме, во реалноста, создавање на нешто што се нарекува знак ѕвезда. Што сите тоа е е покажувач кон стринг или во низа на карактери. И така во овој пример, ако јас беа да го внесете М-О-М на патот дека мојот компјутер ќе ги чувате тоа е рок меморија обратна коса црта нула, нели? Оние четири знаци, знаци, ќе се чуваат некаде. И тогаш овие четворица карактери, обратна коса црта нула, се чуваат некаде на друго место, нели? Јас немам идеја каде адреси се, тие се некаде во мојот компјутер. Но, јас не знам точно каде се тие. Кога ќе се создаде низа ОК, сето она што навистина е е покажувач кон започне на овој стринг. И кога ќе се создаде овој т вредност, сето она што е покажувачот го тоа овде. И така, кога ќе се обидуваш да се изедначуваат и проверете да се види дали и е еднаква на еднаква на т, компјутерот е навистина само се враќаат во ви адреса на овој м и адресата на која м. И затоа што тие се две одделни делови на податоци кои се чуваат во две различни адреси на вашиот компјутер, вашиот компјутер никогаш не се случува да се ги препознаеме, како да бидат исти. Сака ли некој да даде шут во она што ние ќе треба да направите ако сакавме да го поправите ова и имаат правилното трчање програма наместо неа? Размисли за тоа за неколку секунди. Што треба да се промени за да се добивате ова функционирање програма како што ние сакаме тоа да функционира? Да, сакаат да се земе прободе во тоа? ПУБЛИКАТА: Можеме ли да се обиде да го дереференцира покажувач и да се провери преку низа? Професор: Тоа е еден начин да го направи тоа. Значи, она што е вашето име повторно? Жал ми е, ме потсети. Зи: Зи. ПРОФЕСОРОТ: Да, па што Зи посочи дека ќе работат апсолутно. Нели? Можевме dereference покажувачот а, всушност, оди и пристап физичките податоци внатрешноста тука. И само можеме да ги споредиме целиот екран. Може да се каже, во ред, покажувач, дај ми она што е внатре тука. Тоа ќе се врати м. И јас би рекол, покажувач, дај ми она што е внатре тука. Врати м. Дали оние натпревар? Да. Тогаш поминуваме. Ние го задржи проверка на целиот две жици на целиот пат до самиот крај и види дали тие се еднакви, ако сите вредности се еднакви. И ако сите вредности се еднакви, тогаш знаеме конците се вистинити. Апсолутно, тоа е како ние ќе го стори тоа? Дали некој се збуни кога било од ова? Целиот концепт за тоа како стрингови се навистина само покажувачи, и како тие навистина не постои? И зошто ние се грешки како и начинот на кој ние го добие? Бидејќи јас ви гарантирам момци, показалки и распределба низа и меморија се случува да се дојде до. Да? ПУБЛИКАТА: [Беззвучен] dereference тоа, можете само да ги ставите ѕвезда [Беззвучен] Професор: Токму така. Така да се derererence покажувач средства да одат на таа адреса на покажувачот и добивање на податоци, вредноста таму. И начинот на кој се прави тоа е ѕвезда покажувачот. Не се збуни тоа. ПУБЛИКАТА: [Беззвучен]. Професор: Да. ПУБЛИКАТА: Така да само да се напише ако ѕвезда ОК еднакви рамноправни ѕвезда т. Професор: Добро, не. Бр ПУБЛИКАТА: Тоа не е доволно добро, нели? Професор: Тоа не е, затоа што ти си само проверка на првата буква. Вие ќе бидете најверојатно ќе треба некој вид на циклус кој iterates преку секој карактер во двете жици. Је. Значи, ако си сакал да се провери да се види само ако тие започнаа со истото, можете да направите ако, ѕвезда s е еднаква на ѕвезда t. Тогаш треба да знаете дека барем тие започна со ист карактер. Да? ПУБЛИКАТА: Па начинот на кој го правите тоа би било како вграден за телефонска линија или покажувачот? Професор: Да. Доста само за телефонска линија. Се сеќавам, Дејвид во класата спомената слободното синтаксички шеќер? И тој имаше овој многу збунувачки нешто од ѕвезда т плус еден, каде што ќе се интегрираат преку и поместете го покажувачот? На полесен начин да се направи ова е само т з. Па тоа е само низа. Начинот на кој ќе има за циклус кој траеше од нула до јас, каде i е должината на стринг, може само да пишува дека наместо за правење на Целата покажувач, референтна работа. Па овие нешта се сосема еквивалент на вашиот компјутер. Вие момци веројатно нема треба да се знае дека, но тоа е добро да се само вид на имаат во задниот дел на вашиот ум. Само знам дека на компјутерот препознава различни блокови на код како истото. Бидејќи ова е само многу повеќе корисник пријателски за нас да го претстави како тоа е низа. Тоа е само полесно. ПУБЛИКАТА: Значи употребата strlen да ја сакам, get-- Професор: Да. ПУБЛИКАТА: Во ред. ПРОФЕСОРОТ: Можеше користете strlen или, ако немаа strlen вие само може да се направи до додека не го погоди обратна коса црта нула и за двајцата. Или ќе работат. Је. ПУБЛИКАТА: Значи тоа е да дереференцира секој единствен карактер и ако ние всушност биле пишувањето на овој код, може само да го направите Т загради з сакал со ѕвезда пред тоа? ПРОФЕСОРОТ: Да, еднакво на еднаквите ОК заградата јас, а потоа и да се движат з долу нагоре додека не го погоди на крајот. Да, тоа е она што го правиме. И јас всушност ќе имаме следната пример за тоа кога ние всушност пишуваат strlen па вие момци ќе вид за да се позанимавам со тоа малку. Така е со секој јасно само на меморијата, жици, стрелки, квалитет адреси? Некои повисоко ниво концепти кои ви сигурно ќе треба да се знае на квизот утре. Во ред. Добро. Да. ОК, значи едно нешто што ние, исто така, ќе се побара вас, како што го правиме секоја година на квиз, што е, Претпоставувам дека си заборавил (што ние се чини дека да се заборави да се направи секоја година) во кои хедер датотека strlen е декларирана. И така што мораме да го преработи себе. Еве листа на упатства дека можеме да ви презентираме момци каде што можеш да се претпостави дека s низа нема да биде нула. Може да се претпостави дека ќе им бидат престанува со обратна коса црта нула. Па да знаете што е она што тоа се случува да завршува со. И, на пример, дека Должината на здраво ќе биде пет. За да може да се претпостави дека здраво ќе биде пет, H-E-L-L-O. Вие не треба да се претпостави дека задната нула сметките за должина. Ова последното нешто тука, не се грижите за цел број претекување. Дали некој се сеќавам она што цел број overflow е? ПУБЛИКАТА: оди подалеку од Должината на [Беззвучен]. ПРОФЕСОРОТ: Да, може да се објасни малку, што значи тоа? ПУБЛИКАТА: Па, претпоставувам дека тоа се навраќа до truncating пример порано. Но, ако имате толку многу броеви кои одат надвор од бројот на битови дека всушност можете да го доделите дека тоа само ќе вид на отсечени. Професор: Да, па на еден типичен компјутер, колку битови имаме? ПУБЛИКАТА: 32? ПРОФЕСОРОТ: Да, 32, во право. И така тоа е, она што, четири милијарди долари, две милијарди? Четири милијарди, до четири милијарди позитивни цели броеви, нели? Две милијарди негативни, две милијарди позитивни, зависи од тоа колку сакате да го направи тоа. И значи, во основа може да имаме доволно цели броеви кои можат да одат нагоре од два до 31 минус 1, нели? Затоа што еднаш ќе притиснеме на две до 32-та, ние не има толку многу меморија во нашиот компјутер. И така, теоретски, јас може да излезе со голем број што е, како, од две до 46-та. Тоа е огромен број газ, но теоретски може. И така цел број overflow е ако се обидувате да создаде цел број што оди подалеку од она што Вашиот компјутер е способен за чување. И така вие момци за овој пример не треба да се грижи за нас ви даваат гигант стринг кој е два до 32-та карактери долго. Кои ќе бидат навистина значи. Добро, па јас сум само се случува да се даде вие момци база структура на оваа. Си оди за да се создаде функција наречена int strlen каде подава во, знак ѕвезда, или стринг, покажувачот на низа наречен s. Добро, сите копија дека надолу. Кул. Oops-- друг начин. Значи ова е вид на како потешко парче на проблемот, па јас ќе ви даде момци можеби пет до шест минути да се вид на бура на идеи и да пишувам на оваа функција надвор. ПУБЛИКАТА: Ние не сметка за [Беззвучен], ние не треба да се користи цел број? ПРОФЕСОРОТ: Не, ти не. Јас ќе ви даде момци навестување. Додека јамка може да биде многу корисен. Је. Еве бонбони. Бонбони, исто така, ќе бидат достапни за квизот, си мислам. Па вие момци ќе бидат сите засладен утре. Може I-- ќе ја добив. ПУБЛИКАТА: Во ред. Професор: Да. Можеби и повеќе од 30 секунди или така. Добро, ако сте не се направи, не се грижи. Ние ќе се движат низ ова заедно. ВО РЕД. Па јас ќе одам да се само на изгледот на Основната структура за оваа функција овде. Int strlen. Прво, дали некој сакаат да ја кажат ми што значи дека int? Треба да имаме во оваа функција. ПУБЛИКАТА: strlen [Беззвучен]. Професор: Токму така. Значи она што се случува овде, ние треба да се врати цел број. И како што е наведено во спецификации, ние сакаме да return-- Одат за тоа момци, само продолжувам да одам. Сето тоа е добро. Го јадат сите, па јас немам да го земе назад, всушност. На int само значи дека сте нема да се врати цел број. Што е ова знак ѕвезда е? Што значи тоа? ПУБЛИКАТА: Како, што е да се биде влез во. Професор: Токму така. И она што е речиси истото како знак ѕвезда? ПУБЛИКАТА: Стринг? Професор: Токму така. Така што сите што го правиме е давање овој покажувач на стрингот. ВО РЕД. Кул. Исто така, не заборавајте, ако ние се забораваме да ви даде овие загради, не заборавајте да ги пишуваат сами. Бидејќи теоретски, вашиот код е неточни ако сте заборавиле да ги напишете. Само секогаш се обрне внимание. Како, мали нешта дека вие не ја забележуваме кога сте програмирање на вашиот лаптоп, бидејќи вашиот лаптоп го прави тоа за вас? Не заборавајте кога си пишува со рака. Да? ПУБЛИКАТА: Но, како точни? Слично, можеме да станеме целиот проблем е во ред? Професор: Не, не. Не грижете се. Тоа е всушност теоретски можно за да се добие целосна поени на прашање дури и ако вашиот код ќе никогаш не се кандидира во реалниот живот. Јас Ви препорачуваме да не се обидуваме да се направи што се случуваат. На пример, како и ако се тоа е тука е во право, но сте заборавиле на дебелото црево или држач, Вашиот код всушност нема да се кандидира. Но можеме да бидеме милостиви. Да? ПУБЛИКАТА: Дали имате да коментира за нашите ракопис? Професор: Не, не, не се грижи за тоа. Нема коментари. Стил треба да биде добро. Како, не smush се што е во една линија. Ние нема да биде среќен со тебе, ако го направите тоа. Сака ли некој да дај ми на првата линија? Навестување, тоа е многу лесно. Да? ПУБЛИКАТА: Int, n е еднаква на нула. Само се постави контра. Професор: Значи, ние сакаме некои вид на еден шалтер, нели? Јас сум само ќе го наречат "брои" за доброто на читливост. Што сакаме да го поставите еднаква? ПУБЛИКАТА: нула. Професор: Да. Запирка. Тоа е исто така многу чудно цртеж точка-запирка. Само пракса тоа го прават. Затоа сакаме да се има прв контранапад од тип int. Затоа што сакаме да брои до колку многу карактери или букви се во оваа низа, нели? Многу лесен првиот чекор. Добро, можеби малку посложени сега, како ќе се дојде да го стори тоа? Сака ли некој да дај ми линија на кодот кои можат да бидат во можност да им помогне на јамка преку она што е ова? Да, храбра душа во грбот? ПУБЛИКАТА: Добро, па додека точка звезди, за да, ѕвездата на с, не е еднаква на нула, тогаш направи нешто? ПРОФЕСОРОТ: Тоа е многу, многу блиску. Навистина блиски. Па јас ќе одам да се обрати две работи со тоа. Прво на сите, тоа не е точно нула. Што е тоа? Тоа е нултата терминатор, што е обратна коса црта нула. Така што тие се различни во смисла на тоа како тие се чуваат. Па ти си навистина блиски. И второ, ние не сакаме само да го поместите покажувачот. Ние сакаме да се, всушност, пристапите на вредности, нели? И така како ние да го направите тоа? Многу лесно. Не размислувам за покажувачи, не мислам за спомени. Вратете се во две недела на овој курс. ПУБЛИКАТА: [Беззвучен]. ПРОФЕСОРОТ: Почнувајќи од, се сеќаваш? Кои се жици? Како се чуваат во меморијата? ПУБЛИКАТА: Тие се подигнат. Професор: Тие се подигнат. Така како ние да пристапите секој карактер внатре? ПУБЛИКАТА: [Беззвучен]. Професор: Токму така. Значи она што се случува во внатрешноста while-- тука? S на - ПУБЛИКАТА: И. ПРОФЕСОРОТ: О, не постои, го прави тоа? ПУБЛИКАТА: Ох, брои? ПРОФЕСОРОТ: Можеме само да користете брои, не и ние? ПУБЛИКАТА: Жал ми е, јас го нарече i. Професор: Да, тоа е добро. Имаме променлива до тука тоа е веќе е прогласена како нашиот шалтер. Па зошто да не ние само ги користат тие да се движат низ јамката време? Дали тоа има смисла? Значи, додека е на count-- Сака ли некој да ми даде она што се случува после тука? ПУБЛИКАТА: тоа не се еднакви. Професор: не се еднакви, нели? Тоа е еднакво на тресне, извичник рамноправни што и да момци сакаат да го нарекуваат не equal-- ПУБЛИКАТА: [Беззвучен]. Професор: Да. Се сеќавам една понуда е за еден знак, двојни наводници се за низа. Бидете внимателни кога користите нив. Значи, кога ние сме во потрага преку низа, последниот карактер, ние знаеме што не сакаме тоа да биде обратна коса црта нула. Толку време. Ние не сме на крајот од стрингот. Што сакаме да се направи внатре? ПУБЛИКАТА: Сакаме да го додадете во контра па тоа се брои плус плус? Професор: Токму така. Па еве ние ќе треба да се направи брои, смета плус плус. Недостасува уште една линија. Ние сме речиси таму. Што сме ние заборавајќи да направам? ПУБЛИКАТА: Враќање нула? Професор: сакате да се вратите на нула? ПУБЛИКАТА: Не, се враќа во strlen. Чекаат. Професор: кој е зачуван во? ПУБЛИКАТА: брои. Брои. Професор: Токму така. Па еве ние ќе треба да се вратат брои. Затоа што она што ние сме прави тука ultimately-- имаме контра променлива која е ќе прираст преку нашата низа. Ние ќе треба да се насочи, да ги задржи случува, околу и наоколу во овој циклус. И додека ние не сме на крајот на оваа низа, што е ништовен терминатор. И секој пат кога ние одиме преку тоа, ние сме додавање на нашите шанкот. И, ќе поминеме понатаму заедно во оваа низа. И на крајот, откако ќе хит на нула терминатор, ние знаеме, ох, можеме се скрши, се врати на пребројувањето на гласовите. Ние имаме strlen. Дали сите се како ова беше имплементирана? Додека loops-- Знам дека нема да има направи премногу со нив, но тие се обично многу, многу корисни ако не знам што си запирање состојба задолжително треба да биде. Прашање? ПУБЛИКАТА: Можеме ли да пишувам за ништовни за состојбата на време? ПРОФЕСОРОТ: Додека? Да, така што во овој проблем јас сте имале момци се претпостави дека и нема да биде нула. Затоа што се сеќавам, Теоретски, ако ви дадов показател дека е премногу голема меморија, тоа ќе ви даде нула, нели? Тоа е она што на оперативниот системот ќе ја направи. Значи, ако јас не ти рече да се претпостави ОК ќе биде ништовен, ќе треба да се провери. Значи до тука, ќе направиш, ако е еднаква еднаква нула, се врати еден. Така нешто. ПУБЛИКАТА: [Беззвучен] нула. Професор: Добро, јас ќе кажам вие зошто не можеме да го направите тоа. Затоа што се сеќавам во меморијата, десно, тука. Ние ќе одиме тука. Имаш гигант блокови меморија со сите мрежи таа продавница различни вредности, нели? И така сите стринг is-- за На пример, ако сакаме да го внесете здраво, тоа ќе биде H-E-L-L-O обратна коса црта нула, нели? А потоа, кој знае, како и случајни работи кои се тука и по него. Ние всушност не знаат што е таму. И така, ако сте во ситуација да се направи наместо на обратна коса црта нула, нула, тоа не може да биде нула. Бидејќи тоа само може да значи некои случајни други работи кои не припаѓаат во вашиот стринг. Така и на начинот на кој ние секогаш се знае дека низа завршува со обратна коса црта е нула. И така тоа е секогаш како ние провери да се види на крајот од стрингот. Ништовни, сето она што значи е ако имаш непостоечки покажувач, прв од сите, или ако вашата меморија е исто толку голем што не можете да го вратите, тогаш тоа ќе биде нула. Па бидете внимателни при разликување разликата помеѓу нула и коса црта на нула. Је. Секој ред со ова? ВО РЕД. Па морав вие момци се напише strlen. Feasibly ние исто така може да ви побара да се напише од А до I, се сеќавам дека "Atwoa" или што и вие момци сакаат да го нарекуваат? Таа функција во Vigenere и Цезар, дека вредноста на ascii претвора во цел број? Кој исто така има излезе на минатото квизови на функции што сум те праша да се напише. Доста било функција што сте ги користи и е многу лесно да се пишува, сензори се допаѓа е пониска, е високо, да ги намали, на горниот дел. Функции кои ќе се претвориш низа од мали букви во големи букви. Ние сите знаеме како се прави тоа, нели? Тоа е прилично лесно. Само сакате да бидете сигурни дека ќе can-- тоа е истата мисла процес. Можете само да iterate преку и можете да се сменат работите. Можете или да се брои или кога ќе се сврти работите поинаку. Би suggest-- јас не знам дали ние си оди да ве прашам да запаметат што капиталот А или капитал Зи, или мали А или мали букви z се во ASCII, но јас би навестиле можеби пишува дека надолу во случај ние правиме. Само така вие момци имаат референца. Како голема буква А е, она што, 197? А потоа и мали букви е како 50 нешто. 65, да, таму да одите. Па само доста знаат Разликата меѓу нив е 32. Тоа е доста важно. Је. Дали сум добар за ова? ВО РЕД. ПУБЛИКАТА: Можевме теоретски пишуваат некои на овие долу, како и на нашата little-- ПРОФЕСОРОТ: Вие теоретски може само да го копирате функција надолу. Тоа е точно. ПУБЛИКАТА: Не е [Беззвучен]. Професор: Вие момци имаат состојба. Вие момци имаат забелешка на состојба. Можете да ја напишете. Можете да го напише. Можете да го направите она што сакате со него. Је. Па теоретски, ако што сакате да, се обратите за. ПУБЛИКАТА: [Беззвучен] но ние навистина не мора да значи треба да се запамети вредноста, ние само можеме да користат на горниот дел или на пониска функција, нели? Професор: Да. Но, ако ви даде прашање во која се вели пишете на горниот, тогаш ќе треба да го пишувам. Па вие момци можат да се претпостави дека ќе момци имаат пристап до сите функции, но ако сакате да го користите за да го горниот или да пониска, што, исто така, треба да се направи? ПУБЛИКАТА: [Беззвучен] користете CS50 [Беззвучен] Професор: Дали е cs50.h? Да се ​​биде внимателен таму. Така да се горните, да ги намали, е горниот, е пониска, функции кои вклучуваат манипулација стринг се сите во рамките или на ASCII или во рок од математика библиотека или во низата библиотека. Значи, ако сте момци го користите оние функции, да се биде внимателен да се запамети да се вклучат што заглавието. Па можеби, исто така, можете нешто сакаат да се вклучат во вашата состојба, Кои се заглавие? Кои се библиотеките сте биле со? Она што функции се во оние библиотеки? Тоа е важно. Да? ПУБЛИКАТА: Да можеме само полицаец надвор и направи хаштагот преку апсолутно секое писмо што некогаш сте гледа како на сите овие прашања? ПРОФЕСОРОТ: Вие би можеле да. Не знам колку е радосен ние ќе треба да биде да се градус тој квиз кога секој дел од кодот е два пати подолго од што треба да биде. Не знам, можеби ќе полетување точка за стил. Но теоретски вашиот кодот ќе биде во право. Вие момци можеше полицаец надвор и само вклучуваат сè. Тоа е во ред, да. ПУБЛИКАТА: [Беззвучен]. Професор: Да. Јас би предложиле да не го прават тоа, секако. Је. ПУБЛИКАТА: Кул. Професор: Добро прашање. ПУБЛИКАТА: Значи, најлошото сценарио. Професор: Во најлош случај. Ако сте сосема сигурни, можете да го направите тоа. Је. Да, код е во право таму. Јас се користи n наместо броење но, вие знаат, без разлика на плови вашиот брод. ПУБЛИКАТА: Чекај, па ние не би требало да хаштагот вклучуваат, бидејќи ние сме со почеток во int? Професор: Да, јас само се претпоставува дека ние требаше да се напише функција. Ако си сакал да биде безбеден, да ви веројатно може да го стави таму. Но јас едноставно не се мачи, да. Јас дури и не знам дали сте потребна библиотека за ова. Затоа што не си навистина печатење дознаете нешто или нешто, нели? Да, јас не знам дали ви треба библиотека. ВО РЕД. Ова е, исто така, малку повеќе заедно линиите на манипулација меморија. Овој вид на малку слабо. Размисли за тоа. Имаш функција наречена функционална. Можев да ја нарекоа што, но да изберат да го наречат функционална. Јас го имам над мојата главна. Запомнете, вие сакате да имате функција по вашиот главен, вие сакате да бидете сигурни дека ќе вклучуваат прототип на врвот. Но, во овој случај тоа беше толку кратка што ми се чинеше дека едноставно можев се вклучи на врвот на главната. Јас не треба да се има на прототип, затоа што тоа е веќе напишано погоре. Така што сите што го правам во мојата главна функција е создавање на цел број x е еднаква на 10. Јас го повикувам моите функцио функција, а потоа печати нешто. И тогаш тоа е, всушност, што функцио прави. Вие момци сакате да се размислува преку ова. Затоа што тоа е малку незгодно. Тоа е многу, многу слабо, всушност. Мислам преку она што овој Програмата ќе биде Ставање. Јас ќе ви даде момци две минути. Добра дискусија? ПУБЛИКАТА: Да. Професор: Да. Добро, така што ова е слабо со причина. И тоа е причината зошто јас сакав да се донесе ова на вниманието на сите. Сака ли некој да ми даде предлог, обид? Што ова ќе испечатите? Сосема во ред, ако не си во право. Да? ПУБЛИКАТА: Мислам дека тоа е 100 и потоа 10 во две одделни линии. Професор: И на 10? Дали некој има било други претпоставки? Да? ПУБЛИКАТА: Можеби затоа што само 10 функцио не се враќа ништо? ПРОФЕСОРОТ: Добро, така што имаат претпоставка број еден е во тоа што се погоди број два е само ќе се печати од 10. Дали некој има било други претпоставки? ВО РЕД. Па ајде да одиме низ ова, нели? Секогаш кога ќе добие дел од кодот, не само да се погледне во него и да биде како, Ах, тоа е толку многу нешта! Јас сум толку збунети! Како, смири се долу. Само знам дека вие може само да погледне преку кодот линија по линија. Тоа е се што и да е. Тоа е како да читате книга. Така е и со било која функција, ние секогаш со почеток во главниот. Па ние ќе треба да со почеток во int главната празнина, дури и на програмата веќе стигам, нели? Со почеток во во главниот неважечки. Int x еднакво на 10. Па јас ќе одам да се избрише овој. Одам да се подготви на меморија само за да може момци можат да вид на се види што се случува. Се сеќавам овде ние имаме оџакот? До тука ние си имаме грамада некаде до тука. Магацинот порасне, нели? И во рамките на магацинот, имаш електричната мрежа функционира исто како и сите мрежа локални променливи. Па еве, int x 10 еднакви. Во рок од нашата главна функција сме создавањето променлива наречена х. Ние сме поставување дека еднаква на 10. Тука имаш некои х, а ти си поставување дека еднаква на 10, десно, во рок од главните. Секој добар? Функција. Па сега, во рамките на нашите главни функција, ние повикуваме функцијата ние го напишав погоре. Па ние сега да влезе во втор функција. Ние ќе треба да се создаде уште еден int променлива x е еднаква на 100. Што се случува тука во оџакот? Што се случува кога ќе се јавите на функција која создава нови променливи? Што се случува тука во оџакот? ПУБЛИКАТА: [Беззвучен] купови на врвот? Професор: Да. Па тоа всушност креира копија. И тој вид на купови на врвот. Мислам на stack-- оџак на книги, магацинот на ништо. Купови на врвот, прв во последните надвор, да трае, а прв. Па затоа се случува да се создаде х тука. Што се случува да имаат сите funcs променливи. Одлично. Така, сега имаме две различни х дека претставуваат две многу различни нешта. Тогаш ние ќе треба да се печати од целиот број на x. Значи, да се печати 100, нели? Затоа што тука е 100. Значи тоа е првото нешто дека тоа се случува да се печати. Како оваа функција враќа ништо, сега таа функција, таа линија во главниот е направено. Секој добар со мене досега? Па ние сега сме преку две од три линии на нашата главна функција. Сега ние ќе треба да третата линија. Ние ќе треба да printf. Што е ова x во главната? Што значи дека претставуваат? Она што вредност е x сега? ПУБЛИКАТА: 100. ПРОФЕСОРОТ: Тоа е 100? ПУБЛИКАТА: Уште 10. ПРОФЕСОРОТ: Се уште 10. Је. Затоа што се сеќавам, во рок од нашите функцио, x е еднаква на 100. Но, ако се вратиме назад на нашата главна функција, таа променлива се чуваат во различни места на нашата оџак. Па сега ние треба да се вратиме на Главната магацинот, од мрежа локални променливи. И тука x е еднаква на 10. И така ние се случува да се печати од 10. Па таа беше апсолутно во право. Ние ќе треба да имаат производство од 100 и 10. Да? ПУБЛИКАТА: Кога ќе Примерок, е тоа грамада или магацинот тоа е [Беззвучен]? ПРОФЕСОРОТ: Кога ќе Примерок, сте преземање меморија од грамада и распределба. Така што вие не мора да да се плеткаме со ништо од ова. Па претпоставувам дека поголемите готова брза тука е нешто што се нарекува домен. За оние од вас кои биле во сесија за ревизија на минатата ноќ, ние разговаравме накусо нешто за тоа. Опфатот и се дефинира како кога постојат вашиот променливи. Или во рамките на она што го врамува не постојат вашиот променливи. Доста општо правило на палецот е, вашите variables-- ако ги создаде внатре кадрава braces-- тие постојат само во оние големите загради. Така на пример во нашата функција на функционална, ќе видите овие две загради. Ако сте создавање ништо во него, шансите се се што правиш е создавање на магацинот и зачувување на таа таму. Истото во главниот. Тоа е само складира во внатрешноста на главниот. Исто така сакате да биде многу, многу внимателни. Бидејќи обемот исто така, помага себе на различни примери. Така на пример за телефонска линија, за int i изнесува 0. Јас е помала од, јас не знам, 10. Јас плус плус. И имаш код во него, нели? Каде што го прави оваа променлива, Јас, всушност, само што постои? Само во внатрешноста на вашиот за телефонска линија. Па се обложувам дека многумина од вас момци имаат најверојатно се сретнал оваа грешка, кога правиш програми во вашиот psets. Колкумина од вас момци се обидоа да користат з надвор за телефонска линија и имаше грешка? Како unreferenced цели броеви или нешто слично? Причината зошто тоа се случи е затоа што ти си тука создавање на нешто што само постои во рамките на вашиот за телефонска линија. И ако се обидете да го користите, јас не го прави тоа всушност постојат надвор од него. Значи, во основа компјутер велејќи: Јас не знам што зборуваш. Се што знам е дека јас бев тука, но сега веќе не. Значи, ако јас се да се создаде за телефонска линија во внатрешноста, така? А јас ќе одам да се создаде уште, како int j, и да го направите она. А ти имаш код во внатрешноста на дека јамка, ѕ постои само тука. Но, тоа, исто така, постои во рамките на з. И така ѕ постои само во рамките на оваа за телефонска линија, а јас постои во целата работа. Секој јасно? Истото со условно извештаи ако сакате да се создаде ништо. Истото се однесува и додека петелки ако сакате да се создаде ништо. Тоа е нешто да биде многу, многу внимателен во врска. Така што ова е навистина добра проблем во почувствуваме тоа покажа две работи. Ја покажа првата, опсегот. И ни го демонстрирал исто така, распределбата на меморија. Бидејќи вие момци треба да знаат дека функции расте нагоре во магацинот. И дека кога ќе се јавите функции, сте создавање суштина нов магацинот на меморија. Дека е многу различен од она што е вашата мрежа меморија. Је. Whew! Секој ред за тоа? Тоа беше збунувачки. Многу добри теми за да поминат, затоа што ти си веројатно случува да добиете некои слабо такви работи на квизот. Је. Кул. Јас ќе ја ставам, добивате 100 на еден линија, а потоа 10, од ​​друга. Да, многу добар. Добро, сега вие момци ќе добијат можност да биде TAS. Можеш да се одговори на сите убави пораки што јас понекогаш се. Значи, драги Анди, гледам мислам дека нешто не е во ќе е во ред со мојот компајлерот. Сигурен сум дека мојот код е точен, но Продолжувам да добивам не вина на сегментација секој пат кога ќе ја стартувате. Што се случува? Ве молиме помогнете, многу љубов. Ако вие момци имам нешто како кој како ќе се одговори? Ова се всушност многу честа прашања ќе ви поставиме. Ако е, ние ќе ви даде сценарио, ќе ни даде вашиот најдобар погоди во тоа што се случува. Некој има прободе во она што се случува? Да? ПУБЛИКАТА: Можеби dereferenced на нула, нешто како на покажувачот е да се покажува кон нешто ништовни. ПРОФЕСОРОТ: Да, тоа ќе биде пример кога тоа ќе се случи. Но она што е поголема слика на она што се случува овде? ПУБЛИКАТА: Е тоа што се обидуваш за пристап до меморијата дека не сте би требало да имаат пристап до? Професор: Токму така. Значи мислам на дефект на секунда, на натпреварот граници, ограничен простор во меморијата дека не треба да се допираат. Така доста кога ќе се обидуваш да index-- како на пример, сте прогласена за низа од нула до девет. Но ќе се обидат да го допрам дека 10-ти вредност, немате пристап до тоа. Затоа што не сте го прогласи. И така се случува на вашиот компјутер да се погледне во која било како, Ух ох, сте се обидува да се оди надвор од границите на индекс. Одам да ви даде сегментација вина. Сметаме како сегмент, нели? Екстра сегментен, грешката е кога ќе се обидат да го прекрши нешто и не треба да биде таму. Сегментација на вина е во секое време ќе се обидат да го допрам работи дека не треба да се допираат. Толку вообичаени примери се на индекс. Се разбира, ако се обидуваш да се допре тоа беше нула, кој исто така ќе работат како добро. Ако вашиот покажувач се обидувал да допре работи кои не треба да се допре, кои би можеле да работат како добро. Најчесто испишан видите ова во низа. Секој добар? ПУБЛИКАТА: Значи, ако сакате за пристап на 10-точка и таму е само ограничување од девет или нешто. ПРОФЕСОРОТ: Да, точно. Прилично многу. Кул. Почитувани Анди. Значи имаме овие прекрасни нешта наречени видови. Ако Спојување sort-- како што ние пила пример кога Давид целата нешто во class-- зошто, ако тоа е толку многу побрзо отколку било која од други видови, зошто ние дури и се мачат да се знае било која од други видови? Што е ова прашање навистина те прашам? Што е три word-- ПУБЛИКАТА: Што е трампа? Професор: Токму така. Тоа е она што на прашањето е барање. Што е трампа помеѓу Спојат вид стихови кои било други видови? ПУБЛИКАТА: требаат меморијата, нели? Професор: Дали ви се објасни дека малку повеќе? Прво нека објасни продавница Merge. Како се спојат вид работа? ПУБЛИКАТА: Така тоа функционира со поделба сè во половина а потоа тоа ставање заедно и распределување со цел, како и секој пат кога ќе се логирате на сета. Професор: Доста. За да можам да се подготви ова, но за тоа ќе земи ме пет минути да се извлече. Да се ​​погледне назад на слајдови делот каде што се опфатени Спој вид. Токму така. Па начинот на кој се спојуваат вид дела е го дели работите на половина, и потоа тоа само изгледа на Првиот вредности на сите од нив и сорти само тоа. Постојано создава нови низи и става работите се повеќе и повеќе во ред. И така, бидејќи е навистина, навистина брзо, бидејќи it's-- знаете, бинарна пребарување е n најавите на n. Сте создавање толку многу различни низи што сте користење на огромно количество на меморија. И така, додека е побрз, пласирам тука е дека сте со користење на повеќе меморија. И така, навестување, сорти и пребарувања беа опфатени многу повеќе на оваа година отколку што биле во претходните години. Вие момци треба да се види дека одразува соодветно на квизот. Јас дефинитивно ќе се трошат време и оди околу тоа што сите на различни видови се, како бинарни пребарување, како линеарно пребарување работа. Како да можеби pseudocode кодот оние надвор. Кои се работи времиња? Нешто како трчање пати е многу лесно да се копира надолу врз белешка на состојба, нели? Навистина е тешко кога сте во средината на тест и што треба да дознаам дека надвор. Го копирате надолу. Јас ви гарантирам дека сте случува да треба да го знае тоа. Кои се размени? Најлош случај, најдобро сценарија случај За сите нив, многу да се запознаат. Да? ПУБЛИКАТА: Дали треба да знаат како да код Спој вид? Како, не ни треба да се сеќавам на рекурзивен? Професор: Силно се сомневам во тоа, само затоа што тоа е како прилично комплицирани. Но, тоа не може да биде неизводливо ако ние да побара од вас да го користите pseudocode него надвор. Је. Да, во ред, уште еден. Ова може да се излезе во ви последното парче во малку. Да? Дали сите слушаме ова? Добро, па доста прв од сите, каков вид на програма ќе биде ви даваат излез, како тоа? Се сеќавам, ние ќе ви побара да се запознаат со овој нов вид на дебагирање алатка? Што беше името на тоа? Valgrind, право Тоа беше една програма, каде што може да се нарече тоа можеше ги пратите на сите меморија сте користите во вашата програма и да се случува. Значи, ако имаш нешто, како, дефинитивно изгубени, 40 бајти во еден блок. Најверојатно не сте сеќавајќи се за да го ослободи. Затоа што ако сте со користење бајти меморија, тоа значи дека сте пристапиле дека меморијата, но не биле во можност да се ослободи. Значи сакате да направите сигурни дека сте исто така, користење free-- тоа е function-- да ги ослободи сите на меморија прераспределени од Примерок. Кул. Па овој слајд, Јас ќе го имаат до. Тоа е насекаде во многу предавања, во многу секција слајдови. Дали навистина сакате да бидете сигурни дека можете само да се знае сето ова. Или во вашата забелешка на состојба, или ако сакате да го запаметат, слободно. Тоа е навистина, навистина, навистина важно. Исто така многу добар Прашањето што може да побара. Зошто е изгледот Селекција на sort-- Изборот sort-- сите runtimes се n квадрат. Без оглед на тоа на листата збор за вас, како, па зошто е Селекција sort-- Јас ќе ти дадам 30 момци Вториот се размислува за ова. Затоа што тоа е вид на збунувачки. Тоа вклучува некои концептуални мисла. Зошто времињата рок ќе биде ист во двете најлошите и најдобрите можни сценарија? Да? ПУБЛИКАТА: Поради Селекција вид секоја позиција или простор во оваа мала низа работа или whatever. Па дури и во најдобар случај, дури и ако тоа е совршено подредени, тоа, сепак, ќе мора да биде така, во ред, еден. Во мојот прв место имам еден. И да одат низ сите нив. Во ред, еден е од најмалите. А потоа оди повторно и е како, добро, две е најмал од сите од работите. Но се уште има да се проверете секој еден. Професор: Да. Така на пример, да речеме Ние имаме листа, веќе подредување низа 04:59. Начинот на кој Селекција видови е дека тоа оди преку, се проверува дали овие две. Потоа се проверува дали тие две. И тогаш тоа проверки, и се проверува. Се држи проверка на сите од нив, без оглед на тоа дали или не тоа е всушност подредени. Затоа што тоа е едноставно начинот на кој вид работи. И така ова прашање е нешто како концептуално прашање ќе прашам. Каде што, прво, мора да знам што Селекција вид е, нели, за да може да одговори на прашањето. Ќе мора да бидат во можност да се разбере концептуално се она што се случува. А потоа можете да го применуваат и да размислуваат, OK ајде да се замисли најлошото сценарио. Сите тие се во обратен редослед. Како тоа ќе се одразува тоа? Што ако тоа е растечки редослед? Ако тоа е веќе сортирана? Како тоа ќе влијае на runtimes? А потоа селекција вид, ќе забележите дека тоа всушност не е важно. Затоа што ти си ги проверите сите вредности, без оглед на она што се случува. И толку добри работи да се запамети. Зошто некои видови се разликуваат од другите и како најдобар и најлош случај сценарија ќе влијае на сите од нив. Одам да се навистина хит во видови затоа што тоа ќе биде на квиз. Је. ВО РЕД. Има шест минути до крајот. Јас може да потрае три минути на прашања. Јас, исто така може да висат околу за како и 20 минути по секција ако сакате да се поставуваат прашања, како и. Дали некој едноставно мора навистина кратко прашања или концептуални прашања тие се нејасни за во моментов? Да? ПУБЛИКАТА: Можете ли да се зборува малку малку за bitwise оператори? Професор: Да. Па bitwise оператори се нешто што веројатно само можеби ќе сакате да се стави на вашата состојба. Па quickly-- не сакам да се оди премногу во длабочина бидејќи Харвард, во својата препорака седницата, се опфатени тоа многу добро. Bitwise оператори, има пет од нив, нели? Тука е тоа, што е x или функција, има симболот, која е и. Цевка, која е или. А потоа ќе имаат двете различни видови на смени. Ако јас ви даде две вредности, ако Јас ви даде, како, и една. Она што ќе се оцени дека во моментов? Ако сум ви даваат вистинска и вистина, вистина? Она што за вистински или лажни? Уште е вистина, нели? Затоа што има една или. Ние најверојатно, ќе ви даде броеви. Па се сеќавам, еден е еднакво на точно, е еднаква на нула лажни. И ние може да ви даде овие работи и побара од вас да ни каже што се случува. Харвард, таа ги опфаќа во рамките на првиот 10 минути од нивната студија сесија навистина, навистина добро. Па вие момци сакате да се направи Дали сте сигурни дека да се погледне назад на тоа. ПУБЛИКАТА: Дали pisa5 ќе биде на квизот? ПРОФЕСОРОТ: Не Дури и не се погледне во pisa5 моментов. Тоа е тешко. Само дури и не пречи да гледа во pisa5. Сепак, како и некои совети и предлози, јас би Ви препорачуваме да започнете pisa5 штом квизот е завршена. Ова ќе биде една од најтешките недела, но тогаш вие момци ќе го донесе на ридовите на тркалање зелени и кученца, и тоа е во ред. Оваа класа добива значителна полесно по петтиот pset. ПУБЛИКАТА: Работно време се недела, понеделник? Професор: Да, па на работното време ќе Сандеј до понеделник за pset. Работното време вечерва во суштина само ќе биде препорака за квиз. Ако некој сака да оди и да побара Тас прашање, ние ќе бидеме таму. Ќе го земам можеби еден повеќе прашање ако некој има прашање? Да? ПУБЛИКАТА: Кога ќе бидете дефинирање јазли, [Беззвучен] ако ви кажам јазол ѕвезда, а потоа следната, прави на компјутерот автоматски разбирам дека сте мислејќи на друг покажувачот? ПРОФЕСОРОТ: Не ПУБЛИКАТА: Мора да се relink тоа [Беззвучен]? Професор: Значи, во основа struct на еден јазол е, се сеќавам, тоа е како да се создаде јазол и тогаш имате покажувач кој се нарекува следната. Се што правиш е да се има структурата таму. Треба да одберете дека покажувачот некаде. Така што компјутерите не знаеме што тоа го прави уште. Мора да всушност ја доделите кога сте создавање на вашиот поврзани листа. И тоа е она што, главно, pset 5 ќе биде. Па не се грижи за ништо од тоа во моментов. ПУБЛИКАТА: Значи, ние не треба да се се фокусираат премногу на листата линк, само општата концепција? ПРОФЕСОРОТ: Само доста Купишта, редици, линк листи, стебла, хаш маси. Само да биде во можност да се знае она што се. Ние нема да побара ви се допаѓа нешто специфично бидејќи не сме навистина направено pset дека ги опфаќа сите на кои се уште. Така што во последните две минути пред Јас ве ослободи да се убие овој квиз. Доста, како, да размислуваат за тоа како сега вие момци се дојдени во оваа класа. Се сеќавам кога две недела на оваа класа, некои од вас поминуваат три часа пишување вода. Колку долго тоа ќе ве однесе момци да се напише на водата сега? 30 секунди, можеби? Размислете за тоа колку вие момци го научиле. CS е навистина, навистина тешко тема. Нема сомнеж за тоа. Тешко е да, тоа е зошто никој не го истражува. Тоа е само тешко. И тоа е сосема во ред. И јас сум навистина горд што сите го направија тоа досега. Psets не се лесни. Тие се земе многу време. Вие момци, јас никогаш не ќе побара од вас да се напише игра на 15 или Vigenere на pset. Нема потреба да се само да навивач надвор за тоа. Сите кои ги тестираме е да се оцени Вашиот концептуални знаење, како и како некои од вашите основни вештини за кодирање. Тестот е дизајниран за да да биде доста предизвикувачки. Како, тоа е дизајниран за да не се добие 100. Тоа е исто така дизајниран за да веројатно да не биде во можност да го заврши во 75 минута. И тоа е сосема во ред. Јас сум студент себе. Знам, јас го мразам кога чекорам од квиз биде како, срања. Тоа беше навистина тешко. Веројатно она што се случува да се happen-- и тоа е сосема во ред, Ти велам, момци, токму сега. Средствата на овие работи не се високи на сите. Како и за оние од вас кои се добива, како, тројки на вашиот проблем сетови, тоа не значи дека сте ќе добие 60 отсто од оваа класа. Ако добиете 60% во однос на квиз, со што не се значи си оди за да добие D во оваа класа. Можеме да видиме, особено јас, за оние од вас во делот ми, Гледам колку е тешко да момци сите работиме. И јас да ги пратите на тоа. Вие момци ќе биде добро. Нема институционална меморија за среќа на крајот на семестарот. Затоа што сите деца на Харвард се кажува нивните пријатели, ох, се ќе биде во ред. Никој не ти го кажувам момци дека тука. Па морам да ви кажам момци тоа овде. Вие момци ќе биде добро. Јас сум толку горд на сите вас момци. Тестот ќе биде тешко. Учат за тоа, а потоа само да го фрлите. Се подготвени да научат нови работи. И јаде бонбони. Ние сме се има многу слатки. Да спијам добра ноќ. Не не спие, бидејќи Тоа би било навистина лошо. CS е многу логика. Ако не ви се спие, не може да функционира, и вашиот мозок не може да функционира. А јас ќе бидам тука за следните 20 минути, ако некој сака да се висат наоколу. Вие момци се случува да го убие. Со среќа.