ПРОФЕСОР: Дакле, агенда за ове недеље, не толико ствари. Али надамо се веома, веома корисно и релевантни за вас ове недеље. Али ми ћемо провести можда 15, 20 минута само брзо талкинг о линк листе. Линк листе ће бити покривени на квизу. Дакле, можда би било врло корисно да науче нешто о шта је то. Ми ћемо провести огромна Већина данашње секције иде преко квиз нула праксе проблема. А онда ћемо спасити можда 20, 30 минута на крају за сва питања задржавају свако има. А онда, последњи пет минута, ја идем дати пумпе до говор за квиз. Ви сви желимо да будемо овде због тога. Зато што ће бити добро време. У реду, нека материјал на линк листи. Како они обично се структурирани је имате оно што се зове чвор, зар не? Имате такве ствари се зову чворови, који су Структуре. Идем преко како створити чвор у следећем слајду. Међутим суштински сви повезани Листе је податак да је је заједно нанизани преко показивача. И тако је предност имамо користећи повезану листу преко, можда, као низа, је чињеница да у низу Потребан вам је један гранични блок меморија све на истом месту, један другом, да би могли да имају то. Док повезане листе, можеш има случајних мале делове меморије по целом рачунару нанизани заједно показивачима. И на овај начин могу да приступе информацијама који долази једна за други, после друге без потребе само огроман комад меморија на рачунару негде. И то је један од главних Разлози због којих користимо линк листе. Друго, то је врло лако да се динамички величину листу линк јер је у низу, када прогласи низ, имате неког скупа вредности. Рецимо да је желео да створи низ од 10 целих бројева. Ја створити низ од 10 целих, и то је то. То је 10. Ја не знам шта да радим после тога. Да сам хтео да га направи 11, не могу то да урадим. Ако желим да гласи 9, не могу то да урадим. Док у листу линкова, можете додати и брисање и убаците где год желите. Можете динамички величину своје структурирати овде, своју структуру података. И то нам даје много Више додао флексибилност да ми не обично има са низовима. Свако ко збуњен на основна структура како листа веза је или зашто морамо да користимо један преко низа? Да, ићи ћемо преко детаљно како заправо креирате. Али ово је само врста општем смислу сада. Кул. И тако низови нанизани заједно од овим дивним малим стварима који се називају чворови. Све што чвор је врста струцт. Запамтите, струцт је ако желиш да створи одређени тип променљиве у Ц који већ не постоји, ви, као програмер, заправо може створити сами. И тако овај тип података структура се назива чвор, је заправо створио нас, да не постоји у Ц сам по себи. И начин на који вас створи једна је имате заглавље на типедеф струцт, који говори о преводиоцу досадно започети креирање Струцт. Идемо име је "чвор". И унутар идемо да прогласи променљиву у, који ће за чување вредности. И онда ћемо такође да су показивач под називом "Нект" да указује на следећи чвор на листи линк. И онда сте завршили да скинес за само понављање чвор опет тако преводилац зна, у реду то је крај мог струцт. И тако на овај начин, ми смо некако стварања слатку малу низ Такве ствари са вредност и са показивачем. А можете их повезати све заједно са тим показивачима. Тако да сви они могу бити добар нанизани заједно у ланцу. Кул. Да ли сте чули да је мало боље? ПУБЛИКА: Да. ПРОФЕСОР: У реду. Дакле, начин на који, као ви можете видети, типичан листа веза је структуриран је имате главу. Имате вредност главу која није који је указао било којим другим показивачем. Али то ће да укажемо на, или референце, други чвор. Чвор после ће Референца чвор након тога, и тако даље и тако даље док се на крају погодио крај ваше листе линк. И ви једноставно не имати ту показивач. И тако, мислим као, на ланцу, или чак ако неко од вас момака је, не знам, као и са Фруит Лоопс кад си била мала. Ти би их заједно стринг и носе их око врата. Мислим да је иста ствар. Имате те мале ствари које сте могу заједно стринг који указују на један након тога, на један за то, и тако даље и тако даље док имате ланац оф а структури података да можете користити како год желите. Дакле, начин на који то бисмо обично убаците или брисање било чвор са линка Листа се веома разликује у зависности од тога где је чвор је. Тако, на пример, зато показивачи су увек указујући на специфичној вредности, када избришете или убаците чвор, желите да се уверите да је показивач је све указује на праве ствари. Дакле, ако сте желели да потенцијално убаците нови чвор са вредношћу од једног унутар сортираном линк Листа смо сви овде знамо од слици коју ће да го између главе и два, зар не? Јер, једна одговара тамо. Али начин на који бисмо то је прво дереференцинг показивач од главе и слање то један. Али, ми долазимо у проблем овде. Може ли ико види шта је проблем је да смо на првом Дереференце показивач од главе до једног? Оно што проблем може наиђемо на ако покушамо да додам на предњој страни нашег низа? ПУБЛИКА: [неразумљиво] ПРОФЕСОР: Тачно. Дакле, овде имамо показивач који је био Једном указујући од главе до два. Али ако се отарасимо да показивач, ти указују на један, сада имамо појма где да пронађу два. Јер, као што сам рекао, добио си гигант комад меморије на рачунару. Сви ови чворови могу произвољно да се интерсперсед на било ком месту у вашем рачунару. И не знам како да иде о проналажењу тога. И тако треба да имате савете указујући на свим чворовима на крају. Или ако сте случајно дереференце један без првог додељивања Први вредност, ви сте само ће изгубити Све после тога. Дакле, шта ћемо урадите је, прво би желимо да створимо показивач на чвор желите да убаците. Тренутку где сте Желим да га убаците у, и онда вам касније може указати главу на једну. Да ли то има смисла свима овде? Велики. Мислите о томе као баш као и ланца. Ако додате ланац, мало је интуитивна како бих о убацивању то. У реду, тако да је заправо много краће него што сам мислио да ће бити, пет минута игра на линк листама. Само да момци имају Основна идеја шта је то. Овде имамо план за квиз нула. Не дозволите да вас ово застраше. Знам да има пуно информација. Изгледа врло застрашујуће. То је такође доста, ја Мислим, КСЦ врста термина. Ствари као хексадецималних стрингс, показивачи, динамичке меморије издвајања су врло застрашујуће звуче услови. Али ћемо их разбити доле, до неких проблема праксе тако да ви сви су спремни за овај тест. Колико вас има већ почео да учи? У реду, момци вероватно желите за почетак почетак о томе, јер квиз је сутра. Или четвртак за неке од вас. Да, па ћемо ићи над неким проблемима праксе. Ако ви сви желе да од папиру, оловке. Ми ћемо само провести Огромна већина данашње секције иде преко неке од тако ви имате идеја шта да очекујете на квизу. ОК. Неколико логистичка детаљи као и, за кога који није био у тај линк тамо, ако одете цс50.иале.еду, на фронту Ова страница постоји веза да каже: "О квиз Зеро." Линк вас води тамо. Ако нисте прочитали, молимо вас да прочитате. Зато што вам говори заиста важно информације у вези квиза. Идем да се ово из само зато, физички, ако ви не знате где ићи ћемо имати проблема. И тако ако ваш последњи у односима са А до Н, идите на закон школске дворане. А ако твоје последње почиње са П до З, идите на Давиес Аудиториум. И ово важи само за људи у среду делу. Ако узимате квиз о Четвртак, идеш у ССС 114 где ти је предавање је обично. ПУБЛИКА: [неразумљиво] ПРОФЕСОР: О да З, идеш да иду у Давиес аудиторијуму. Идем да то промени, зар не? Ох, да, само не аутоматски. Ох да, то си ти Криста. Да, моја грешка. Да, о до З, идеш да иде у Давиес Аудиторим. Ја ћу да средим ово једном да поставим. Да. А онда и нешто важно на памет је да Сриједа, ако сте званично уписани у среду делу, морате однети квиз у среду. А ако сте уписани у четвртак, морате однети квиз четвртак. И то је за време класе. Где, мислим да је као 1:00 до 2:15 средом и 2:30 до 3:45 четвртком. Ако имате непомирљиве сукоба, Деан је изговори су једина ствар, на жалост, можемо узети. Зато што смо имали Огромна већина захтева да бисте се пребацили од среде до четвртка. Што ми не можемо поштовати, осим ако имамо захтев Деан је. ОК. Дакле, пре него што почнемо снажан пар проблема у пракси, Само ћу да одем Енди корисних савета за успех. Момци, када учите, ви стварно Желим да вежбају писање кода руком. Први пут сам икада узео ЦС квиз, нисам имао Писање пракса код руком раније и изузетно било шокантно колико је то било тешко. Када ви не уђу у навика куцањем све, је у питању сасвим природно што у стању да аутоцомплетед држачи и зарез тамо. Када га написати руком, понекад је врло, врло лако заборавити зарез, или заборавим да затворите носач, или заборавим да затворите дебело црево, или нешто слично. Дакле, када пишу код ручно, то је веома различит осећај. Дакле момци, када радите кроз неке од проблема у пракси, било би добро да се стварно практикују данас. Или сутра, претпостављам, ако сте узимајући квиз у четвртак. Друго, имамо последњи, слично, осма година вреди праксе квиз на мрежи. Овогодишњи квиз ће вероватно бити врло, врло слична за све њих. Они су веома слични. Некако уђу у стил типу питања да питамо, тип функције које ћемо писати у, и тако даље, и тако даље. Тако се у пракси квизове, посебно под временским ограничењима. 75 минута да ураде квиз је Није много времена. То је веома, веома дуго. И тако ви стварно желите да се уверите да сте ви момци у навику писања Код руком брзо. Зато што не желиш први Време је да видимо квиз тог дужине бити на квизу. Ви момци стварно желите да се уверите да унапред вежбате. Четврто, желите да преиспита предавања и секција слајдова. Не морате да памтите ствари. Заправо, сви дозволио један лист белог папира белешке, напред и назад. Ви можете уписати или пишу. Ако ћете бити у ситуацији да запамтим ништа, спусти га на том листу. Ја вам гарантујем, ви не желите да бити заглављен у средини тог квиза бити као, ох да, оно што је Рунтиме ове врсте у односу на те врсте. Само га спусти и да га копирате директно из вашег ноте листа. Онда стварно могу само користити свој мозак да мисли о проблемима уместо да се сетим чињенице. И тако заиста искористити било каквих детаља нише да ли мислите да треба да памтите, плоп га на разматрање стања. У реду, каквих питања логистички у вези квиз пре него што почнемо неки квиз проблеми вежба? Да? ПУБЛИКА: Нисам имао прилику да погледате квизу [неразумљиво] али ће то бити Апликација углавном, или је ту такође ће бити, као, питања знања? ПРОФЕСОР: То је много. Дакле, начин на који сам би описао квиз је-- сам саставио Неки проблеми из праксе да сам извукао из свих квизова. Али видећете да постоји два главна врсте питања ми ћемо вас. Једна је веома низак ниво детаља ствари. Ми ћемо вам дати мали комад кода и кажу, има ту грешка? Шта би се одштампа овде? Шта ће то произвести код, и тако даље. Дакле информација детаљи врло ниском нивоу. А на другој страни, ми ћемо имати веома Висок ниво питања заснованих на знању. Можете ли да објасните шта је Разлика између бинарне претраге и линеарна претрага је? Зашто би желимо да користити један преко другога? Можда, шта је ГДБ? Зашто желимо да користимо ГДБ? Виши ниво, више фундаментална разумевање питања. Тако ћете видети мешавину њих двојица на квизу. Још нешто пре него што смо ми равно у њега? ОК. ПУБЛИКА: Још један. ПРОФЕСОР: Ох, један више. Извините. ПУБЛИКА: Да, то је у реду. Дакле, ви кажете у 75. минуту се прекратка, као да је мало вероватно да ћемо завршити? Или, као, 75 минута Управо онолико времена као што би требало да смо адекватно припремљени? ПРОФЕСОР: У реду, тако да је Квиз је изазов. То је дефинитивно изазов. Ви ћете се кратко на време. Вероватно ћеш погодити, као и 10, 15 минута до краја, и бити као, срање. Ја сам много тога да уради. И то је потпуно у реду. Свако ће осетити исто. Само будите свесни колико времена имате. И то је разлог зашто сам ти рекао момци раде у пракси квизове. Зато што заиста даје велики осећај онога што је квиз ће бити слично. Дакле, ако се нађете бити у стању да завршили праксу квизови у добром износу од време, можете се добро смири, онда нећете имати проблема у среду или четвртак. Кул. Дакле, ако све вантс-- мислим већина људи имају листове папира од већ. Идем у суштини само да ти дам примере питања, да вам момци, као, Неколико минута да их урадимо. И ми ћемо прећи као класа оно што су одговори на њих. Дакле, ово је врло типичан рано питање ћемо да те питам, само претварање Бројеви између различитих база. Бинарни, као момци могу опозив, је база два. Децимални је база 10, или оно што смо као и људи обично тумаче. Хекадецимал је база 16, што је нула кроз девет као и кроз Ф. Тако да је четири броја сам тражећи да ви претворити овде. Даћу вам се свиђа, три до четири минута да размисле како смо ишли о решавању овог. ПУБЛИКА: Да ли дозвољено да калкулаторе? ПРОФЕСОР: Нећете треба калкулаторе, да. Мислим да је основни додатак, мислим, није сви ви ће бити затражено да уради. И тако сам некако имам осећај од када сви урађено, погледај, талас, ја не знам, осмех, изгледају срећни ако сте готови. Да. Можда још пар минута. ОК, хајде да га доведемо. Ја намерно ћу дај момци мање времена него вероватно треба да урадите неки од ових проблема, Једноставно зато што желите да се уверите да прођемо кроз гомилу проблема. Значи нема бриге ако нисте имати прилику да завршим. Потпуно у реду докле год имате идеја како да о овоме. Дакле, идемо напред и урадите први. Дакле, прво, да ли неко жели да ми каже у бинарном, шта свака од ових цифара представља у погледу њихових вредности? Да? ПУБЛИКА: Два до снага нула, два према један. ПРОФЕСОР: Тачно. Prema tome. Тако је, тако типично кад смо у основи 10 Све ово представља су, као, 10 на базе нуле, зар не? То је твој нечије место. Све ваше место 10 је је 10 снази један. Иоу 100 место је 10 снази два. Шта год база сте у иде везе са исту ствар, само са различитој основи. Тако бинарни, све што је је база два. Ти ћеш претворити све цифре у две до год снага те цифре. И тако у том смислу, ми могу да имају лакши начин да буде у могућности да саберете или сумирамо све бројеве како претворити у основи 10. Дакле, да ли неко жели да ми каже шта је Одговор на првој је у основи десет? ПУБЛИКА: Два, [неразумљиво] ПРОФЕСОР: Да. ПУБЛИКА: 42. ПРОФЕСОР: 42, изволи. Дакле, начин на који смо добили овај одговор био од раде два Први, који је два. Плус два трећа, која је осам. Плус два до пети, који је све што је преостало. Ти их сумира и то 42. Да ли је ико збуњени о томе како смо то? Дакле основни додатак, као и Рекао сам, требало би да буде у реду. Ако не, добро, можемо да вежбамо то. Али то је у реду. Кул. Да ли неко жели да ми дају одговор на другом, као? 50? Dobro. Свако збуњена како смо то било? Супер, ја ћу имати одговори на следећем слајду. Дакле без бриге, ако вас треба да га копирате доле. У реду, тако да хексадецимални је мало компликованије. али ја ћу да вам покажем пречица за како се то ради. Тако хексадецималном, вама као запамтите, све што је било 16. И зато што ми као људи не стварно има 16 бројева представљају да, идемо од нуле до девет, који наш први 10 вриједности, а онда радимо од А до Ф, који су наредних шест вредности. И тако је најлакши начин да иде из било бинарни број у хексадецимални је да их разбити на пола. И тако сваки бинарни број ћемо дати вероватно ћете имати осам цифара. Можете само да сломи их у средини. Дакле, први једног-- један један, оне оне, један, један, један један. Некако ми се да, знате, драв једна коса црта или зарез између њих. И можете једноставно претворити директно год ово је да прво Број хексадецималном, и све је да се друга од хексадецималном. Дакле, запамтите од заједничког нотацији, Шта хексадецималне вредности почињу са? ПУБЛИКА: Нула. ПРОФЕСОР: 0Кс. Дакле, ми знамо да је сваки пут кад вас претворити било који број да хексадецималном, или сваки пут када видите било број који почиње са 0Кс, ви знате да је то хексадецимална вредност. И онда ћеш бити затражено да утврдити шта су ови две цифре су. А како ти то, Бројање до да је половина и Бројање до тог пола. Дакле, у овом примеру, оно би један, један, један, један бити? Коју вредност би то било? То би било П, зар не? То би било 15. Дакле, ово ће бити један Ф, један, један, овдје такође Ф. Дакле један, један, један, један, један, један, један, један у хексадецималном, све је то је 0кфф. Јер ово пола представља Ф, вредност 15, и то пола представља Ф, вредност 15. Јер, запамтите, ми смо рачунајући од нуле до девет. А је попут 10., Б је као 11, Ф је 15. Да ли то има смисла свима како смо добили од бинарног у Хекадецимал? ПУБЛИКА: И тако како смо добили 15 од један, један, један, један? ПРОФЕСОР: Да, ово је бинарни, зар не? Замислите да је ово само бинарни број. Дакле, имате два до нулте, који је један. ПУБЛИКА: Ох, у реду. Дакле, само је укупно. ПРОФЕСОР: Да, и онда само тотал то. То је све што је. ПУБЛИКА: У реду. ПРОФЕСОР: У реду. ПУБЛИКА: Зато иди из бинарног у децималне у хексадецималном? ПРОФЕСОР: То је Најлакши начин да се то уради, да. Нећеш да децималне јер децимале има само нуле до девет. Ми смо само мало раздвајају ово на два дела. ПУБЛИКА: [неразумљиво] користећи децимала наћи оно што одговара до у хексадецималном. ПРОФЕСОР: Мислим, ти си Бројање се користећи основну математику. ПУБЛИКА: Да. ПРОФЕСОР: Да, прилично. То је мало збуњујуће. Али, само знам да теби да поделимо год Ова вредност је у само пола. Види, шта је ово у бинарном? Који је то број? То ће бити нешто од нуле до Ф. Овде ће такође бити нешто од нуле до Ф. А онда можете једноставно ставити њих двојица тамо. ПУБЛИКА: У реду. ПРОФЕСОР: Да. ОК. Дакле, ви желите да покушајте следећи онда? Нула, један, нула један, један, нула, један нула. Даћу вам момци као 30 секунди, јер вероватно нисте знали трик како да се уради раније. У реду, неко жели да ову једну ињекцију? 0Кс5А. ПРОФЕСОР: 0Кс5А. 5а. Dobro. Дакле, ово би бити-- желите да нам кажете како сте добили то? Прво, како сте добили пет? ПУБЛИКА: Зато нуле, један, нула, један је пет. ПРОФЕСОР: Да ли сви разумеју Зато нула, један, нула, један је пет? Имаш једну овде. Немате ништа за два до првог. У два на други, те имати један, што је четири. Дакле, додате четири плус онај, имате пет. Свако добро? ОК. И онда шта је ово било и зашто? Који број Да ли одговара? ПУБЛИКА: 10. ПРОФЕСОР: А шта је ово у основи два? ПУБЛИКА: [неразумљиво] ПРОФЕСОР: Тачно. Дакле, ово друго вредност овде ће бити 0Кс5А. Свако добро о томе како претворити? То је много једноставније него што мислите да јесте. Ја само желим да се уверите знате корисне савете и трикови за како да то урадим. ПУБЛИКА: Зашто само подијелити она у средини тако? Само буди као, у реду, ја ћу само да Стало ова прва [неразумљиво]? ПРОФЕСОР: Јер то је заправо начин хексадецималне вредности су представљени. 0Кс, то заправо значи ништа друго него вам говорим да је хексадекадни број. И то увек представља Прве четири цифре. И то увек представља последња четири цифре. Тако да су ова два броја само одговарају различитим бита. ПУБЛИКА: Тако ћемо ми увијек ПРОФЕСОР: Увек си ће добити осам битова вредности. ПУБЛИКА: Да ли је то баш као ствар овде или да ствар свуда? ПРОФЕСОР: То је само ствар у рачунарима, да. ПУБЛИКА: У реду. Страва. ПРОФЕСОР: Такође, тако да у овом примеру ми конвертује из бинарног у декадни, и од бинарног у хексадецимални. Ви желите да проверите да ли је вежбају иде обрнуто. Дакле, ако сам ти дао 0кфф, можеш драв који у бинарном, зар не? Ви претворити у бинарни Ф, који је један, један, један, један, претворити Ф у бинарни, који је један, један, један, један. Дакле, можемо вам затражити да урадите обрнуто. Тако децималне у бинарни, или хексадецимална да бинарни. Дакле, желите да се Сигурно знате оба правца. Вероватно ћемо вам поставим Комбинација ова два. Да, имате питање? Могу видим-- да си добро? ПУБЛИКА: Да. ПРОФЕСОР: У реду. Јесам ли добро избрисати ово? Велики. У реду, тако да су одговори овде ако ико Интересантно је касније и збунити. ОК. ПУБЛИКА: Да ли је битно ако ставимо наши слова у престоницу или мала слова? ПРОФЕСОР: Јесте, јер у хексадецималном, по обичају, сви ликови су велика слова. Дакле, од А до Ф су ће бити велика. Ако ставите мала слова а, ја не знам ако нужно би означио да је погрешно. Али теоретски, то није технички како сте требали да га имам. Дакле, они би сви требали бити велика. Да, добро питање. ОК. Друго питање. Размислите ову лепу програм овде. Ја ћу поставити питање, Вратићу ово. Дакле, прво, шта је унутра стандарда ио.х да је од интереса за програм? Друго, шта празнина означавају у складу три? И треће, шта враћа нула од Главни, као линија шест, углавном означавају? Ако хоћете да пишем онима доле, јер морам да вратите на слајду само да можете да видите код. Ово је пример, као, можда виши ниво питање где смо вас Које ствари значи у програму. Свако добро за мене да се вратимо на слајд? OK kul. Дакле, ја ћу вам дати момци као што можда три минута да погледате овај један врло брзо. У реду, па ово је као прилично једноставан, концептуално. Да ли неко жели да ми каже шта је Први унутра од хасх укључујући наш стандардни ио.х библиотека фајл? Зашто нам је потребан тај библиотеку укључени у овај програм? Оно што овде ми треба? Да? ПУБЛИКА: Да ли је тада сте ставили ту принтф? ПРОФЕСОР: Тачно. Тако иф, било вам време се улаз од корисника и штампање несто на екран, то је стандардни улаз, излаз библиотека. Размислите о томе да ваи-- улаз, излаз. Имам ли излаз? Да, знам. Дакле, ја знам да сам увек ћу треба Стандардизовати и.о библиотеку. Дакле, иф је функција којим морамо да приступе и хаштагот укључују стандардни и.о библиотека. ОК. Друго, шта значи празнина? Имамо инт маин (воид), шта воид овде значи овде на линији три? Да, у леђа. ПУБЛИКА: [неразумљиво] ПРОФЕСОР: Тачно. Запамтите, сазнали смо почевши са нашим псет да ли стварно могу навести командну линију аргументи да ваш програм, вас који Основна функција, узима као ти, корисник, pozovite ga. Ако имамо празнина, то значи да вас могао само покрените програм директно без аргументе командне линије. Свако јасно? ОК. И на крају зашто ми трудите се овај повратак нула ствар овде? Зашто чак имати маин? Зашто не можемо само воид маин празнину? Да? ПУБЛИКА: Само тако да можемо будите сигурни да је програм успешно изласка, ас разлику од ако је нумерисан. И ми би знао да је то друга врста грешке. ПРОФЕСОР: Да, управо тако. Ово је само веома конвенционални ствар коју радимо, се да само на крају ваш програм, само да се уверите да је ваш главни функцију правилно ради, увек желимо да урадимо повратак нула. Иако смо увек може Не видим да штампају нигде. Јер, као програмери, знаш, ако имате много различитих линија кода а ви не знате где они иду наопако, и ако је грешка деси желите да уверите се да сте добили ту грешку. И тако типично ако нешто крене погрешан ћемо имати повратак једног само да се уверите знамо да је то. Дакле, ако видите повратак нула, који обично значи да ваш програм је успешно извршена. Dobro? Кул. У реду, Други програм овде. Размислите да. И ако ви видите флоат, момци могу вероватно имају добру идеју о томе шта Ја сам хтео да те питам. Дакле, када је овај програм извршава, као што видите, Ја сам проглашењу флоат у мом основну функцију. Ја именовања да је "одговорити", а ја постављање који једнак јединици подељено са 10. Ја штампање, један децимално место, да пловак. И онда враћам нула. Дакле, када извршавања програма, Сетите се похлепни сада, Овај програм штампа 0.0. Као што сви знамо, надам се да ћемо сви Знате, једна подељено са 10 није 0.00, то је 0.1. Али објасни зашто овај програм мисли да 1 подељено са 10 прстију на 0,1 другу од 0,1? Ја ћу вам дати момци можда као 30 секунди се само брзо мисле о томе и ја ћу се вратити на програм. ОК. Свако ко жели да му дати шансу? У три реченице или мање, јер обично смо да ограничи све одговоре три реченице или мање тако да не само испљуну рандом ствари на вашој квизу. Да, да пробамо. ПУБЛИКА: Дакле, мислим да је ово ствар која се зове, као, [неразумљиво] Дакле, могу постојати, на примјер, могу постојати, као, 0.09, да тамо где сте одштампате први цифре, било би на 0.0? ПРОФЕСОР: Затвори, не сасвим. Цхристабелл? ПУБЛИКА: Ти поделе једну и 10, и они су оба цели бројеви. И тако је начин на који иде да сачувате је као цео број. И тако најближи цео број ће бити 0.0. И то је 0.1. ПРОФЕСОР: Да, то је стварно добро. То је прави одговор. Дакле, ово је веома збуњујуће концепт за много деце. И стварно желите да се уверите да ово је ојачана у свачијем глави. Дакле, оно што ми зовемо флоатинг Тачка непрецизност, где је разлог зашто доста ваших програма у похлепни није успело првобитно било зато заборавио си да баци своју променљиву. Дакле, оно што је рекао Цхристабелл је потпуно у праву. Пловак је себи непрецизан. Јер у рачунару, тако, имамо коначан износ бита меморије можемо користити за представљање бројева. Тако, на пример, ово ЦС50 ИД је-- Мислим да је 64-битни рачунар. Пловак може бити представљена једино од коначног износа тих битова. И тако 0.1 са безброј нула, То је био 0.1, зар не? Али не можемо заправо складиштити тај број у нашем рачунару. Ми једноставно немамо довољно меморије да то учини. И тако је најближа апроксимација шта се чувају у меморији заправо нешто као нешто 0.000, нешто, нешто, нешто. Који, када скратите да, заокружује до 0.0. И то је само један пример који показује пуно питања имамо кад год смо Покушавам да урадим математику погрешно без цастинг као други цео број. Дакле, само будите опрезни овај догађај. На квизовима, ако вам дати блок кода и то је као, шта исписује на крају? И ако је неко случајно вредност коју момци треба да знају зашто је то дешава. Да? ПУБЛИКА: Трунцате је се отараси све након одређене тачке? [Неразумљиво] ПРОФЕСОР: Да, тако ствари ово је стварно лош пример, јер шта год заиста 0.100 би скратити до 0,1. Али, ако сте били да то-- покретање не знам запамтите, јер су прошле године водио га на другог програма. Они су га водио у нешто што се зове ЦС50 апарата, који се разликује од ИД. То је био 32-битни систем, мислим. И тако је било различити бројеви. Али у суштини, само знам да цео концепт скраћивањем и како то само сече ствари се. И тако, ако њега роундс-- ПУБЛИКА: Без заокруживања. ПРОФЕСОР: Тачно. Да. Кул. Здраво, позади. Ми ћемо кроз неке Квиз преглед питања. У реду. Дакле, сматрам други програм овде. Ја ћу да вам дам пар минута да прочитате ово. То је нешто што је за веома Недавно мислим да је пукла доста од тебе умови Гуис екипе. Али ми ћемо да причамо кроз ово опет само да се уверим да потпуно разумем. ОК. ОК. Свако треба више времена за прочитајте овај код? ОК. Дакле, чини ми се да У овом програму сам стварајући две жице користећи ГетСтринг. Један тзв а и један позвао д. И ако су једнаки износи једни другима, треба принт "Иоу унесите исту ствар. " Али елсевисе, то ће исписати, "Иоу откуцана различите ствари ", зар не? Изгледа врло, врло једноставно. Али, ипак, ако И стварно покушати да напишем овај програм, изгледа да чак и када сам Унесите Потпуно исти жице, још увек исписује, "Иоу откуцана различите ствари! " Да ли неко жели да узмем пуцали на зашто овај програм увек одговара да се улази су различити, цак када су сами реци су исте? Дакле, ако бих инпут-- Давид љубав користити пример као мама, зар не? Ловерцасе М-О-М за с, т једнако малим словима М-О-м. Ако Трчао сам о овоме да код, зашто би одштампати "сте укуцали различите ствари?" Да ли неко треба више Време је да размислите о овоме? У реду, мислим да смо добри. Да? ПУБЛИКА: У реду, тако да је нешто у вези где је ускладиштен у меморији, зар не? ПРОФЕСОР: Да. ПУБЛИКА: Гдје је то, ако је ово Стринг с се чува у меморији спот-- Ја сам измишља ово-- је нула. ПРОФЕСОР: Наравно. ПУБЛИКА: и гудачки Т се складишти на меморије месту, као, 167, а затим нула није једнако 167. ПРОФЕСОР: Тачно. У реду, тако да запамтите ово невероватно откровење смо објаснили да вас прошле недеље, да жице стварно не постоје? Када смо створити нешто што се зове стринг смо, у стварности, стварајући нешто што се зове инт звездице. Које све што је је показивач на стринг или низ карактера. И тако у овом примеру, ако били су улазни М-О-м на начин да ће мој рачунар складишти је у меморијском обрнуте косе црте нула, зар не? Та четири лика, знакова, би се чувају негде. А онда су четири ликови, обрнута коса црта нула, се чувају негде другде, зар не? Немам појма где адресе су они негде у мом компјутеру. Али ја не знам где су. Када сам створити низ а, све то је стварно је показивач до почетак овог низа. И када креирате ову т вредности, све што је показивач овде. И тако, када покушавате изједначити и провери да видим да ли је ова једнаки износи т, рачунар је заправо само повратка у ти адреса овог м и адресу тог м. И зато су двоје одвојених комада података који се чувају у две различите адресе у вашем рачунару, рачунар се никад неће их тамо препознали као исто. Да ли неко жели да пробам на шта смо би морао да уради ако желимо да исправимо ово и имају исправан програм рада уместо тога? Размислите о томе за пар секунди. Шта треба да променити добити овај функционисање програма начин на који желимо да функционише? Да, желим да се убод у томе? ПУБЛИКА: Можемо покушати да дереференце показивач и проверите кроз низ? ПРОФЕСОР: То је један начин да се то уради. Дакле, шта је зовеш? Жао ми је, подсети ме. Зее: Зее. ПРОФЕСОР: Да, па шта Зи предложио бих апсолутно раде. Jel tako? Могли бисмо дереференце показивача и заправо иду и приступ физички подаци унутар одавде. И можемо да упореди цео екран. Можемо рећи, у реду, показивач, дај ми оно што је унутра. То би врати м. И ја бих рекао, показивач, дај ми оно што је унутра. Повратак ан м. Да ли оне утакмицу? Да. Онда идемо даље. Стално проверава цео два жице скроз до краја и видите да ли су то једнаки, ако су све вредности једнаке. А ако су све вредности су једнаке, онда знамо жице су истините. Апсолутно, тако да ми то радимо? Да ли неко збуњен на све ово? Читав концепт како стрингс су заиста само показивачи, и како они не стварно постоје? И зашто смо добили грешке као начин смо га добили? Зато што сам ти гарантујем момци, показиваче и алокација стринг и меморија ће се попети. Да? ПУБЛИКА: [неразумљиво] дереференце то, само стави звездицу [неразумљиво] ПРОФЕСОР: Добро. Тако да деререренце показивач средства да иде на ту адресу показивача и прибави податке, вредност тамо. И начин да се то уради је звезда показивач. Немојте мешати то. ПУБЛИКА: [неразумљиво]. ПРОФЕСОР: Да. ПУБЛИКА: Дакле, само да напишем Ако стар с једнаки једнаки Стар Т. ПРОФЕСОР: Па, не. Ne. ПУБЛИКА: То није довољно добро, зар не? ПРОФЕСОР: Није, зато што си само проверавала прво писмо. Вероватно ћеш треба неку петљу која Примењује кроз сваки лик у оба стрингс. Да. Дакле, ако сте хтели само да проверите да ли ако су почели са исте ствари, можете да урадите ако, звезда с је једнак Стар Т. Онда знаш да они бар почела са истим карактером. Да? ПУБЛИКА: Дакле, начин ти би то било као уграђени за петљу или поинтер? ПРОФЕСОР: Да. Прилично само за петљу. Запамтите, Давид у класи помиње слободно синтаксичко шећера? И имао је врло збуњује ствар стар т плус један, где ће се интегрисати кроз и померите показивач? Лакши начин да се то ово је само т и. Дакле, то је само низ. Начин на који ће имате за петље која је трајала од нула до и, где је и је дужина стринг бисте могли да пишу да уместо што ћете урадити Цео показивач, референтна ствар. Дакле, ове ствари су потпуно еквивалент на рачунару. Ви вероватно неће треба да знају да, али је добро да се некако има позади свој ум. Само знам да ли је рачунар препознаје различите блокове кода као исту ствар. Јер, ово је само далеко корисника пријатељски за нас да га представи као да је низ. То је само лакше. ПУБЛИКА: Зато користите стрлен да воле, добијам-- ПРОФЕСОР: Да. ПУБЛИКА: У реду. ПРОФЕСОР: Могао би користите стрлен или, ако није имао стрлен можете само да урадите горе док си ударио косу црту нула за обоје. Или ће радити. Да. ПУБЛИКА: Дакле, то је да сваки Дереференце Један знак да смо заиста били писања овог кода, можемо могао само до Т заграде И Свиђа са звездом испред ње? ПРОФЕСОР: Да, једнако једнако с носач и, и онда наставимо И доле до удариш крај. Да, то је оно што ће учинити. И ја ћу заправо имају следећа Пример када смо напиши стрлен тако момци ће некако од доћи до играте са њим мало. Тако је свима јасно на само сећање, стрингс, показивачи, квалитет адресе? Неки концепти виши ниво да ће засигурно потреба да се зна на квизу сутра. У реду. Dobro. Да. У реду, тако да једна ствар која ћемо такође тражити ви, као и ми сваке године на квизу, је, Претпостављам да сте заборавили (која изгледа да заборавимо да годишње уради) у којој је проглашен главом датотека стрлен. И зато морамо да га преправи сами. Ево списак смерница да можемо да вам представимо Момци где добијате претпоставити да с стринг неће бити нула. Можете претпоставити да ће ова бити престаје са бацксласх нула. Дакле, ви знате да је шта то ће завршити са. И, на пример, да дужина Хелло би било пет. Дакле, можете да претпоставите да хелло ће бити пет, Х-Е-Л-Л-О. Не морате претпоставити да је бацксиде нула рачуне за дужину. Ова последња ствар овде, зар не бринете о интегер преливом. Да ли неко сјетити оно што цео прекорачење? ПУБЛИКА: превазилази дужина [неразумљиво]. ПРОФЕСОР: Да, можете ли објаснити мало, шта то значи? ПУБЛИКА: Па, претпостављам да се врати до скраћивања пример раније. Али, ако имате само толико бројева које превазилазе броја битова које се могу доделити да ће некако одсечен. ПРОФЕСОР: Да, тако на типичан рачунар, колико бита имамо? ПУБЛИКА: 32? ПРОФЕСОР: Да, 32, зар не. И то је, оно, четири милијарди, две милијарде? Четири милијарде, до четири милијарде природни бројеви, зар не? Два милијарди негативан, две милијарде позитиван, зависи од тога како желите да то урадите. И тако у основи можемо да имамо довољно природних бројева који могу да иду горе на два на 31. минус 1, зар не? Јер кад смо ударили два до 32., ми не има толико меморије у нашем рачунару. И тако, теоретски, ја могао смислити бројем То је, као, два у 46.. То је огроман-дупе број, али теоретски би могао. И тако цео прекорачење ако покушате да створи цео број који превазилази оно што ваш рачунар је у стању складиштења. И тако момци за Овај пример немају да брине о нама вам даје гиганта стринг који је два до 32. карактера дуго. То би било заиста значи. У реду, тако да ћу да дам ви база структура овог. Идеш да се створи Функција се зове инт стрлен где Положени, цхар звезда, или стринг, показивач на низ назива с. У реду, сви копирају то. Кул. Оопс-- други начин. Дакле, ово је нешто као теже комад проблема, па ћу вам момци можда пет до шест минута до врсте Браинсторм и написати ову функцију напоље. ПУБЛИКА: Не знамо рачун за [неразумљиво], не морамо да користимо цео? ПРОФЕСОР: Не, не. Ја ћу вам дам наговештај. Неко време петља може бити веома корисно овде. Да. Ево Цанди. Цанди ће такође бити доступан за квиз, мислим. Дакле, момци ће бити све сугаред сутра. Можеш ли-- си га. ПУБЛИКА: У реду. ПРОФЕСОР: Да. Можда још 30 секунди или тако нешто. У реду, ако си није учињено, без бриге. Ми ћемо прећи кроз ово заједно. ОК. Зато ћу само изгледу Основна структура за ову функцију овде. Инт стрлен. Прво, да ли неко жели да кажем ми шта то значи Инт? Морамо да имамо у овој функцији. ПУБЛИКА: стрлен [неразумљиво]. ПРОФЕСОР: Тачно. Дакле, шта год се деси овде, морамо да се врате цео број. И као што је наведено у спец желимо да ретурн-- Ићи за то момци, само наставите. Све је добро. Једи све тако немам да га вратим, стварно. ИНТ само значи да сте ће се вратити цео број. Шта је ово Чар звездице а? Шта то значи? ПУБЛИКА: Као, оно што се улаз у. ПРОФЕСОР: Тачно. А шта је готово Исто као цхар звезда? ПУБЛИКА: стринг? ПРОФЕСОР: Тачно. Дакле, све што радимо је дајући ово показивач на низ. ОК. Кул. Такође, не заборавите, ако заборавимо да вам дам ове заграде, не заборавите да им се напише. Зато што теоретски, ваш код је нетачне ако сте заборавили да их пишем. Само увек обратите пажњу. Лике, мале ствари да не приметите кад програмирање на лаптоп, јер ваш лаптоп је ради за тебе? Не заборавити када пишеш руком. Да? ПУБЛИКА: Али како тачно? Као, да добијемо цео проблем није у реду? ПРОФЕСОР: Не, не. Не брини. Заправо је теоретски могуће да добијете пуну тачке на питање чак и ако ваш број ће Никада покренути у стварном животу. Предлажем вам не покушаш да се то догоди. На пример, као ако се све то је овде у праву, али заборавите дебело црево или држач, Ваш код не ће заправо покренути. Али можемо бити милостив. Да? ПУБЛИКА: Да ли треба да коментарисати на нашем рукопис? ПРОФЕСОР: Не, не, не бриге о томе. Не коментаришући. Стил би требало да буде добра. Као, не Смусх све на једној линији. Нећемо бити срећни са вама ако то урадите. Да ли неко жели да дај ми прву линију? Савет, то је веома лако. Да? ПУБЛИКА: Инт н једнако нула. Само подесите цоунтер. ПРОФЕСОР: Па хоћемо мало нека врста шалтеру, зар не? Само ћу да га наме "цоунт" због видљивости. Шта желимо да га подесите једнака? ПУБЛИКА: Нула. ПРОФЕСОР: Да. Зарез. Такође је врло чудно цртање зарезом. Само вежбам то ради. Дакле, желимо да прво бројач типа инт. Зато што желимо да изброји колико многи ликови или писма су у овом низу, зар не? Врло једноставан први корак. ОК, можда мало сложенија Сада, како ћемо да то уради? Да ли неко жели да дај ми линију кода који могу бити у стању да помогну лооп кроз све ово? Да, храбри душа у леђа? ПУБЛИКА: ОК, дакле док тачка Звездица је да, звезда с, није једнака нули, онда нешто? ПРОФЕСОР: То је стварно, стварно близу. Стварно близу. Зато ћу да се обрати две ствари са тим. Пре свега, није баш нула. Шта је то? То је нула Терминатор, који је обрнута коса црта нула. Дакле, они су различити у услови како они чувају. Дакле, ти си јако блиски. А друго, ми не желимо само да померите показивач. Желимо да стварно приступити вредности, зар не? И тако како ћемо то урадити? Веома лако. Не мисли о тројкама, не размишљам о успоменама. Вратите се у недељу две од овог курса. ПУБЛИКА: [неразумљиво]. ПРОФЕСОР: Од, сећаш се? Шта су жице? Како се чувају у меморији? ПУБЛИКА: Они подигли. ПРОФЕСОР: Они су подигли. Како да приступите сваки лик унутра? ПУБЛИКА: [неразумљиво]. ПРОФЕСОР: Тачно. Дакле, вхиле-- шта иде унутра? С од - ПУБЛИКА И. ПРОФЕСОР: Ох, ја не постоји, зар не? ПУБЛИКА: О, цоунт? ПРОФЕСОР: Можемо само користе рачунати, зар не? ПУБЛИКА: Извини, то се зове сам. ПРОФЕСОР: Да, све је добро. Имамо променљиву овде је то већ проглашена нашем шалтеру. Па зашто не бисмо користили да за кретање кроз вхиле петље? Да ли то има смисла? Дакле, док ови из цоунт-- не неко жели да ми шта се дешава после овде? ПУБЛИКА: Не ради једнако. ПРОФЕСОР: Зар не равноправни, зар не? То је прасак једнак, знак узвика једнако, год ви желите да позовите га не екуал-- ПУБЛИКА: [неразумљиво]. ПРОФЕСОР: Да. Не заборавите ниједан цитат је за цхар, Двоструки наводници су за низ. Будите опрезни када их користите. Дакле, када гледамо кроз Низ, последњи знак, знамо ми не желимо да буде обрнута коса црта нула. Дакле, док. Ми нисмо на крају низа. Шта желимо да урадимо унутра? ПУБЛИКА: Желимо да додате у бројач тако да броји плус плус? ПРОФЕСОР: Тачно. Дакле, овде ћемо да радимо цоунт, цоунт плус плус. Недостаје још једну линију. Скоро смо стигли. Шта ми заборављамо да радимо? ПУБЛИКА: Ретурнинг нула? ПРОФЕСОР: Ви желите да се вратите на нулу? ПУБЛИКА: Не, враћа у стрлен. Чекај. ПРОФЕСОР: Која се чува у? ПУБЛИКА: Тачка. Тачка. ПРОФЕСОР: Тачно. Дакле, овде ћемо да се врати бројање. Јер оно што смо радиш овде ултиматели-- имамо контра променљиву која је ће за повећање преко низа. Ми ћемо наставити, задржати иде, около и около у ову петљу. И док ми нисмо на крају овог стринг, који је нула Терминатор. И сваки пут идемо кроз да, ми смо додајући нашем шалтеру. А ми идемо даље заједно у овом низу. И на крају, када смо погодио нулл терминатор, знамо, Ох, можемо бреак, врати бројање. Ми имамо стрлен. Да ли сви схватам како ово је реализован? Док лоопс-- Знам да немам урађено превише са њима, али они обично су врло, врло корисно ако вас Не знам шта сте заустављање Услов нужно мора да буде. Питање? ПУБЛИКА: Можемо писати нула о вхиле стању? ПРОФЕСОР: Док? Да, тако да у овом проблему сам те имао момци претпоставити да ова неће бити нула. Јер, запамтите, теоретски, ако сам ти дао показивач који је био превелика меморије, то би вам нулл, зар не? То је оно што оперативни Систем ће учинити. Дакле, ако нисам ти рекао да преузму а ће бити нула, треба да проверите. Дакле овде, да би ти, ако ови једнако једнако нула, врати један. Нешто налик томе. ПУБЛИКА: [неразумљиво] нула. ПРОФЕСОР: У реду, рећи ћу ви зашто не могу то да урадим. Зато запамтите у меморији, у реду, овде. Идемо овде. Имате огромне блокове меморије све са решеткама који складиште различите вредности, зар не? И тако све низ је- за пример, ако желимо да унос здраво, било би Х-Е-Л-Л-О обрнута коса црта нула, зар не? И онда ко зна, као случајно ствари које су овде после ње. Ми заправо не знам шта је тамо. И тако, ако сте били да урадите уместо обрнуте косе црте нула, нула, то не може бити нула. Јер само може да значи неке друге ствари рандом који не припадају у вашем низу. И тако је начин на који смо увек знали да стринг завршава се са бацксласх нула. И то је увек како смо проверите да ли се крај низа. Нулл, све то значи је ако имате непостојеће показивач, пре свега, или ако ваше сећање је тако велики да не можете да га врати, онда би било нула. Зато будите врло опрезни када разликовање разлика између нулл и обрнуте косе црте нула. Да. Свако у реду са овим? ОК. Дакле, имао сам ви написати стрлен. Феасибли смо такође може питати сте написали од А до И, запамтите да "Атвоа" или шта год ви желите да га зовем? Та функција у Вигенере и Цезар, који конвертује АСЦИИ вредност интегер? То је такође да се појави на последњих квизови функција смо вас питали да напише. Прилично било која функција да ли сте користили и врло лако да се напише, сензори свиђа је мањи, је горња, да се смањи, да горњи. Функције које би претворити низ од мала слова у велика слова. Сви знамо како се то ради, зар не? То је прилично једноставан. Само желим да се уверите да сте Могу- то је исто мисаони процес. Само прелазили преко и окренете ствари. Или рачунати или када окренете ствари другачије. Ја бих суггест-- И Не знам да ли ћемо да вас замолим да запамтим шта капитала А или капитал З или мала слова А или мала слова з су у АСЦИИ, али ја бих предложио можда пишу да доле у ​​случају радимо. Само да момци имају референцу. Као велика А је, шта, 197? А онда је као мала слова 50 нешто. 65, да, изволи. Дакле, само прилично знати Разлика између њих је 32. То је прилично важно. Да. Јесам ли добро о овоме? ОК. ПУБЛИКА: Могли би теоретски пишу неки од њих доле, као и на нашем мали-- ПРОФЕСОР: Ви теоретски могао само копирате функцију доле. То је истина. ПУБЛИКА: Не [неразумљиво]. Професор: Ви имате лист. Ви имате ноте лист. Можете га откуцате. Можете га писати. То можете учинити све што желите са њом. Да. Дакле, теоретски, ако желите да, ићи. ПУБЛИКА: [неразумљиво] али ми не стварно нужно треба да запамтимо вредност, можемо само да користите за горњи или нижа функција, зар не? ПРОФЕСОР: Да. Али ако вам је дао једно питање који каже писати горњи, онда би требало да га напишем. Дакле, ви можете претпоставити да вас момци имају приступ свим функцијама, али ако желите да користите за горњи или нижи, шта можете да урадим? ПУБЛИКА: [неразумљиво] користити ЦС50 [неразумљиво] ПРОФЕСОР: Да ли је ЦС50.х? Будите опрезни тамо. Тако да горњи, да смањи, је горња, мања, функције које укључују манипулација низ аре све у било АСЦИИ или у библиотеци математике или у библиотеци стринг. Дакле, ако ви користите оне функције, пазите да се сетим да укључи то заглавље. Па, можда и нешто вас желите да укључите у вашем листу, шта су заглавље? Који су библиотеке сте користили? Које функције су унутар тих библиотека? Važno je. Да? ПУБЛИКА: Можемо ли само Цоп Оут и да хасхтаг кроз апсолутно свако слово које смо икада види као на сва питања? ПРОФЕСОР: Могао би. Не знам како сам сретан ћемо бити разред да квиз када је сваки део кода два пута док треба да буде. Не знам, можда скинути тачку за стилу. Али теоретски твој Код ће бити у реду. Ви могли полицајца напоље и Само укључују све. То је у реду, да. ПУБЛИКА: [неразумљиво]. ПРОФЕСОР: Да. Предложио бих да, иако не раде. Да. ПУБЛИКА: Кул. ПРОФЕСОР: Добро питање. ПУБЛИКА: Дакле, најгори сценарио. ПРОФЕСОР: Најгори случај. Ако сте потпуно заборавили, можете да урадите то. Да. Да, код тамо. Користио сам Н уместо оптужнице, али, хвала Знаш, шта год плута свој чамац. ПУБЛИКА: Чекај, па смо неће морати да хаштагот укључују јер смо са почетком у инт? ПРОФЕСОР: Да, само сам претпоставио да били смо замољени да напише функцију. Ако сте хтели да будемо сигурни, хвала могао вероватно га је ставио тамо. Али ја једноставно није сметало, да. Ја не знам ни да ли вас потребан никакав библиотеку за ово. Зато што не стварно штампање од свега или нешто, зар не? Да, ја не знам да ли треба библиотеку. ОК. Ово је такође мало више заједно линије манипулације меморије. Ова врста мало зезнуто. Размислите о томе. Имате функцију под називом фунц. Могао сам га по имену год, али бирам да га именовати фунц. Имам га изнад мој главни. Запамтите, желите да имате функција након ваш главни, желите да будете сигурни да укључују прототип врха. Али у овом случају то је тако кратка да сам осетио да сам могао укључују се на врху је главни. Ја не треба да имају прототип, јер је већ написано изнад. Тако да све што радим у својој основној функцији ствара цео број к једнако 10. Зовем свог фунц функцију, а затим штампање нешто. И онда то је заправо шта фунц ради. Хоћете да мислите кроз ово. Зато што је мало незгодно. То је веома, веома незгодно, заправо. Размислите кроз шта је ово Програм ће бити Оутпуттинг. Ја ћу вам дам два минута. Добри дискусије? ПУБЛИКА: Да. ПРОФЕСОР: Да. У реду, тако да је ово Трицки са разлогом. И то је разлог зашто сам хтео да скренем ово свачију пажњу. Да ли неко жели да ми даш предлог, покушај? Шта би ово одштампате? Потпуно у реду ако си у праву. Да? ПУБЛИКА: Мислим да је 100 и затим 10 на две одвојене линије. ПРОФЕСОР: И 10? Да ли неко има неке друге претпоставке? Да? ПУБЛИКА: Можда само зато што 10 фунц се не враћа ништа? ПРОФЕСОР: У реду, тако да смо имају погодити број један јесте да претпоставка број два је само да одштампате 10. Да ли неко има неке друге претпоставке? ОК. Дакле, хајде да хода кроз ово, зар не? Кад год сте добили део кода, немој само гледати и бити као, Ах, то је толико ствари! Тако сам збуњен! Као, смири се доле. Само знам да сте управо могли погледати кроз код ред по ред. То је све што је. То је као читање књиге. Тако је и са било које функције, увек се крећу од главног. Тако ћемо крећу маин празнине, Чак програм је већ ради доле, зар не? Старт ат у главном празнини. Инт к једнако 10. Зато ћу избрисати ово. Ја ћу да скренем меморију тако вас момци могу некако види шта се дешава. Запамтите овде имамо гомилу? Овде ми имамо наше хеап негде овде. Стек расте, зар не? И у стеку, имате мрежни функционишу као све Мрежни локалних променљивих. Па ево, инт једнака 10. У оквиру нашег главног функцију смо стварајући променљиву названу х. Селимо да једнака 10. Овде имате неке к, а ти си постављање који једнако 10, тако, у главни. Свако добро? Функција. Дакле, сада, у року од наших главних Функција, Зовемо функција смо написали горе. Дакле, сада смо ушли у другу функцију. Идемо да створимо други променљива инт једнако 100. Шта се дешава овде у стеку? Шта се дешава када назовем функција која ствара нове променљиве? Шта се дешава овде у стеку? ПУБЛИКА: [неразумљиво] гомиле на врху? ПРОФЕСОР: Да. Тако да заправо ствара копију. И некако гомиле на врху. Размислите о стацк-- стек књига, гомиле нечега. Гомиле на врху, прво у последња од, траје у, први напоље. Дакле, то ће створити к овде. То ће морати све фунцс променљиве. Велики. Тако да сада имамо два различита к је то представљају две врло различите ствари. Онда ћемо да одштампате од стране цео број к. Дакле, хајде да одштампате 100, зар не? Јер овде је 100. Дакле, то је прва ствар да иде да одштампате. Пошто је ова функција враћа ништа, Сада је функција, која линија у главни врши. Свако добро са мном до сада? Дакле, сада смо кроз две од три линије од наших главних функција. Сада ћемо у трећем реду. Идемо у принтф. Шта је ово х унутар главни? Шта то представља? Коју вредност је к сада? ПУБЛИКА: 100. ПРОФЕСОР: То је 100? ПУБЛИКА: Још 10. ПРОФЕСОР: Још 10. Да. Јер, запамтите, у оквиру наш фунц, к једнако 100. Али ако се врате да нашем главном функцију, та променљива се чува у друго место на нашем стек. Дакле, сада морамо да се вратимо до Маин Стацк, струјни локалне променљиве. И овде к једнако до 10. И тако ћемо да одштампате 10. Дакле, она је апсолутно у праву. Ми ћемо имати излаз 100 и 10. Да? ПУБЛИКА: Када маллоц, тај је гомила или стек који је [неразумљиво]? ПРОФЕСОР: Када маллоц, узимате меморију од гомиле и то додјеле. Тако да немате петљати са ништа од овога. Претпостављам да је већи понети овде је нешто што се зове опсег. За оне који су били у преглед седница синоћ, кратко смо причали о томе. Обим дефинише како и када постоји ваши варијабле. Или у шта фрамес ваши променљиве постоје. Прилично правило палца генерално је, ваш вариаблес-- ако сте их направили унутар коврџаву брацес-- они постоје само унутар тих заграда. Тако на пример у нашем функцији фунц, видиш та два протезу. Ако правите ништа унутар ње, велике су шансе да све што радите је стварање стек и складиштење да има. Иста ствар у главни. То је само складиште унутар главни. Такође, желите да будете врло, врло опрезан овде. Због обима и даје Сама на различите примере. Тако на пример за петља за инт износи 0. Ја је мања од, не знам, 10. Ја плус плус. И имаш код унутар ње, зар не? Где ли ова варијабла, Ја, заправо постоје само? Само унутар ваше фор петље. Дакле, кладим се многи од вас има Вероватно је наишао ову грешку када је радите програме у својим псетс. Колико вас су покушали да ја користим изван фор петљу и имао грешку? Лике Ан унреференцед целих или тако нешто? Разлог зашто се то деси је јер овде сте стварајући нешто што само постоји унутар ваше фор петље. А ако покушате да га користите, И не заправо постоји изван ње. Дакле, у основи компјутер каже, ја Не знам шта причаш. Све што знам је да је сам био овде, али сада више не. Дакле, ако сам био да се створи за петљу унутар, зар не? И ја ћу да створе другу, као инт ј, и да се уради било шта. И имате код унутар да петља, Ј постоји само овде. Али то такође постоји у и. И тако Ј постоји само у ово петље, а ја постоји у целој ствари. Свако јасно? Иста ствар са условним изјавама Ако желите да креирате ништа. Иста ствар и са петље, док уколико желите да креирате ништа. То је нешто од чега треба врло, врло пажљиви. Дакле, ово је заиста добро проблема у осећају да је показао две ствари. Прво показао, обим. И то је показао Такође алокација меморије. Зато што ви треба да знају да Функције расте према горе у стеку. И када зовете функције, правите у суштини нови стек меморије. То је веома разликује од шта је ваш мрежни меморија је. Да. Ух! Свако добро о томе? То је збуњујуће. Врло добра тема да иде преко, јер ти си вероватно ћете добити неки лукав такве ствари на квизу. Да. Кул. Ставићу ти 100 на једном линије и затим са 10 на другој. Да, врло добро. У реду, сада ви ћете добити прилика да буду тас. Можеш да одговоримо на сва дивна мејлови које сам понекад. Дакле, Драги Анди, видим ја мислим нешто није у иде у реду са мојим компајлер. Сигуран сам да је мој број је исправан, али стално добијам сегментације грешку сваки пут кад покренете. Шта се дешава? Плеасе хелп, пуно љубави. Ако сте добили нешто да како бисте одговорили? То су заправо врло честа Питања ћемо вас. Да ли је, ако ћемо вам дати Сценарио, ми ћемо нам најбоље претпоставка шта се дешава. Свако има убод шта се дешава? Да? ПУБЛИКА: Можда дереференцед нула, нешто као показивача се указује на нешто нулл. ПРОФЕСОР: Да, то би бити пример када би се то догодило. Али шта је већу слику шта се овде дешава? ПУБЛИКА: Да ли је покушаваш да приступи меморији да ниси треба да имају приступ? ПРОФЕСОР: Тачно. Дакле, мислим на сег грешке, што је офф Границе, ограничена област у меморији да не би требало да буде дирљиво. Дакле, прилично када покушавате то индек-- као нпр, сте прогласили низ од нула до девет. Али покушајте да додирнете ту 10тх вредност, немате приступ на то. Зато што нисте прогласили. И тако је рачунар иде да погледате да буде као, Ух Ох, покушавате да оде изван граница индекса. Ја ћу да ти дам Сегментатион фаулт. Мислите о као сегмента, зар не? Додатни сегмент је грешка када покушате да пробију нешто и не треба да буде тамо. Сегментатион фаулт је било кад покушате да додирнете ствари да не би требало да буде дирљиво. Дакле, уобичајени примери су индекс. Наравно, ако покушаваш на додир који је био нула, да би се радити као добро. Ако је ваш показивач је покушавао да тоуцх ствари које не треба дирати, која би могла истовремено функционише као добро. Најчешће ти ћеш видети у низу. Свако добро? ПУБЛИКА: Дакле, ако желите за приступ 10. тачка и постоји само лимит од девет или тако нешто. ПРОФЕСОР: Да, управо тако. Прилично. Кул. Драги Анди. Дакле, имамо те дивне ствари зове сорте. Ако Мерге сорт-- као и ми тестера у примеру када је Давид учини читав ствар у цласс-- зашто, ако је тако много брже од било које од других врста, Зашто смо труди знајући било која од других врста? Шта је ово питање стварно вас питам? Шта је три ворд-- ПУБЛИКА: Шта је компромис? ПРОФЕСОР: Тачно. То је оно што је питање пита. Шта је траде-офф између Мерге врста стихова било које друге врсте? ПУБЛИКА: Такес меморију, зар не? ПРОФЕСОР: Да ли ти објашњавају да мало више? Прво да објасним Мерге продавницу. Како врста Мерге ради? ПУБЛИКА: Тако то ради од делећи све на пола и онда састављао и реалоцира га како, као и сваки пут када спојите сетове. ПРОФЕСОР: Прилично. Тако да могу извући ово, али то би таке ме пет минута да се извуче. Осврните се на слајдовима рубрици где смо покривени Мерге врсту. Baš tako. Дакле, начин на који Мерге Сортирај дела да ли је дели ствари на пола, и онда само гледа прве вредности свих они и сортира само то. Континуирано ствара нове низова и ставља све више и више у реду. И тако док то је стварно брзо, јер је-- знаш, бинарна претрага је н лог н. Ви правите толико различити низови у којој си користећи велику количину меморије. И тако док је брже, компромис овде је да користите више меморије. И тако, наговештај, шорц и претраге су више ове године покривено доста него што су били у годинама претходних. Ви треба да виде да огледа у складу са тим на квизу. Ја бих дефинитивно провести вријеме иде о томе шта све различитих врста су, како бинарни претрага, како линеарна претрага рад. Како да можда Псеудокод Кодирамо они напоље. Који су руннинг пута? Нешто слично раде времена је веома лако да копирате доле на један ноте лист, jel tako? Заиста је тешко када си у средини тест и морате да схватим. Копирајте га. Ја вам гарантујем да си морати да знају да. Који су компромиси? У најгорем случају, најбољи сценарији за све њих, веома упознати. Да? ПУБЛИКА: Да ли треба да знате како да кодирају Мерге врсту? Као, ми треба да Сећам се рекурзивно? ПРОФЕСОР: Ја веома сумњам, само јер то је као прилично компликовано. Али то не може бити неизводљиво ако ми молим вас да га користите Псеудокод напоље. Да. Да, у реду, још један. Ово може да се појави у сте последњи комад у мало. Да? Јесу ли сви чули? ОК, дакле прилично прво сви, који тип програма ће бити дајући вам излаз овако? Не заборавите да вас је замолио да уче о овај нови тип отклањања грешака функције? Како се зове од тога? Валгринд, зар не То је програм на основу којег се то може назвати могао пратите све меморије си користећи у вашем програму и се дешава. Дакле, ако имаш нешто, као, дефинитивно изгубљено, 40 бајтова у једном блоку. Вероватно ниси запамтити да бисте га ослободили. Јер, ако користите бајтова меморије, то значи да сте приступити то сећање, али нисте били у стању да ослободи. Дакле, желите да се да ли и ти си користећи фрее-- то је фунцтион-- да ослободи све меморије прерасподјела од маллоц. Кул. Дакле, овом слајду, ја ћу га горе. То је свуда у великој предавања, у многим рубрици слајдова. Стварно желите да се уверите да знас све ово. Или у поруци стања или ако Желим да га запамтим, слободно. То је стварно, стварно, стварно важно. Такође, веома добар Питање које можемо питати. Зашто је поглед на Селецтион сорт-- Избор сорт-- све рунтимес се н на квадрат. Без обзира на то колико је листа питању ви као, па зашто је избор сорт-- Ја ћу вам дам 30 Други мисле о томе. Зато што је мало збуњујуће. То укључује и нешто концептуално мисао. Зашто би рун пута бити исти у и најгоре и најбоље сценарији? Да? ПУБЛИКА: Зато што свака врста Избор положај или простор у овој малој низу ствар или било шта друго. Дакле, чак иу најбољем случају, чак и ако је савршено поредани, то би и даље да буде као, у реду, један. У мом првом месту Имам једну. И проћи кроз све њих. ОК, један је најмањи. И онда опет и као, у реду, два је најмањи од свих ствари. Али то тек треба да проверите свако. ПРОФЕСОР: Да. Тако, на пример, рецимо имамо списак, већ поредани, низ један до пет. Начин на који одабира врсте је да пролази кроз, проверава ово двоје. Онда проверава оне две. И онда се проверава, и то проверава. То стално проверава све њих, без обзира да ли или не то је заправо поредани. Јер то је једноставно начин врста ради. И то питање је попут концептуални питање ћемо питати. Где прво, да Знаш шта Селецтион врста је, зар не, да би могли да одговори на питање. Морате бити у стању да разумеју концептуално шта се дешава. А онда можете применити и мислити, у реду хајде да замислимо најгори могући сценарио. Они су сви у опадајућем редоследу. Како би то утицати на то? Шта ако је узлазним редоследом? Ако је већ поредани? Како ће то утицати на рунтимес? А онда Избор врста, приметићете да није стварно битно. Зато што сте проверу све вредности без обзира на то шта се дешава. И тако добре ствари за памћење. Зашто неке врсте разликују од других и како најбоље и најгоре сценарији би да утиче на све њих. Ја ћу заиста ударио у разним јер ће то бити на квизу. Да. ОК. Постоји шест минута до краја. Могу да три минута питања. Такође да се муваш за као 20 минута после секције Ако желите да поставите питања као добро. Да ли неко има заиста кратак само Питања и идејних питања они су нејасне сада? Да? ПУБЛИКА: Можеш ли говорити мало мало о битовима оператера? ПРОФЕСОР: Да. Дакле, битовима оператери су нешто што вероватно Можда само желим да стави на листу. Тако куицкли-- не желим да иду превише у дубину јер Харварду, у свом прегледу сесија, то покрива прилично добро. Битовима оператер, ту је Пет од њих, зар не? Ту је ово, што је к или функција, ту је амперсанд, што је и. Цеви, који је или. И онда имате два различите врсте смене. Ако ти дам две вредности, ако Дајем ти, као, један и један. Шта би то проценимо? Ако дајете истинито и тачно, истина? Шта је тачно или нетачно? Ипак истина, зар не? Зато што је или. Ми ћемо највероватније вам дати бројеве. Запамтите, један једнако Истина, нула једнако лажна. И можемо вам дати ове ствари и молим вас да нам кажете шта се дешава. Харварда га покрива у прва 10 минута њиховог студијског сесије стварно, стварно добро. Дакле, ви желите да се да ли се осврне на то. ПУБЛИКА: Да ли писа5 ће бити на квизу? ПРОФЕСОР: Не Немој ни да погледате писа5 сада. Тешко је. Само немој уопште бавити писа5. Међутим, и неке савете и сугестије, ја Предложио бих почнете писа5 чим је квиз је готова. Ово ће бити најтеже недељно, али онда момци биће донет је на брдима од Роллинг Греен и штенце, и то је у реду. Ова класа добија значајна лакше после петог псет. ПУБЛИКА: Радно време су недеља, понедељак? ПРОФЕСОР: Да, тако радно време ће Сундаи до понедељка за псет. Радно време вечерас у суштини ће бити само преглед за квиз. Ако неко жели да дође и питати ТАС питање, ми ћемо бити тамо. Ја ћу можда још једно питање ако неко има питање? Да? ПУБЛИКА: Кад си дефинисање чворова, [неразумљиво] ако кажете чвора звезду и онда следећи, да ли је компјутер аутоматски Схватам да сте ви који се односи на другом показивачу? ПРОФЕСОР: Не ПУБЛИКА: Морате релинк је [неразумљиво]? ПРОФЕСОР: Па у основи струцт од чвора је, сећам се, то је као да направите чвор и онда имате показивач се зове следећи. Све што радите је да структура тамо. Морате да доделите да поинтер негде. Дакле, компјутери не знам шта ради још. Морате да заправо доделили када правите листу повезан. И то је оно што највише псет 5 ће бити на. Значи нема бриге око неки од то одмах. ПУБЛИКА: Дакле, не морамо да фокусирати превише на линк листи, само генерал концепција? ПРОФЕСОР: Само прилично много гомила, редови, линк листе, дрвеће, хасх табеле. Само моћи да знају шта су. Нећемо питати желите нешто конкретно јер нисмо стварно одрадио псет да покрива ништа од тога још. Дакле, у последња два минута пре Ја те ослободим да убије овај квиз. Прилично, као, размислите о томе како сада ви дошли у овој класи. Сећам се када је недељу дана два ове класе, неки од вас провести три сата писања воду. Колико дуго ће вас одвести момци да пишем воду сада? 30 секунди, можда? Размислите о томе колико момци су научили. ЦС је стварно, стварно тешко предмет. Нема сумње у то. Тешко је, зато нико не студира. То је само тешко. И то је потпуно у реду. И ја сам заиста поносан да свако је сада јасно ставио до овога. Псетс није лако. Они узимају доста времена. Момци, ја ћу вас замолити да напишу никада игра од 15 или Вигенере на псет. Нема потребе да поблесавио о томе. Све смо тестирање је да се процени Ваш концептуални знање, као и као што неки од ваших основних вештина кодирања. Тест је дизајниран да бити заиста изазов. Као, дизајниран је за вас да не добијају 100. Такође је дизајниран за вас да вјероватно неће моћи да завршимо за 75 минута. И то је потпуно у реду. Ја сам лично ученик. Знам, мрзим када ходам из квиз бити као говно. То је стварно тешко. Вероватно оно што ће се хаппен-- и то је потпуно у реду, Кажем вам момци сада. Средства на овим стварима нису високе уопште. А за оне који су се, као, тројки на Ваш проблем сетова, то не значи да си ће добити 60 одсто у овој класи. Ако добијете 60% на квиз, да не Мислим да ћеш добили Д у овој класи. Видимо, поготово ја, за оне од вас у свом делу, Видим колико је тешко су момци све раде. И пратити од тога. Момци ће бити у реду. Нема институционално сећање срећа на крају семестра. Зато што су све Харвард деца су говоре њихови пријатељи, ох, ти ћеш бити у реду. Нико вам говори момци овде. Дакле, морам да вам кажем да је овде. Момци ће бити у реду. Тако сам поносан на све вас. Тест ће бити тешко. Студија за њега, а потом Само га баци. Спремите се да науче нове ствари. И једу слаткише. Имамо имамо пуно слаткиша. Гет наспавати екипе. Не не спава, јер то би било стварно лоше. ЦС је много логике. Ако не спаваш, не може да функционише, и ваш мозак не може да функционише. А ја ћу бити ту за следећих 20 минута, ако неко жели да се дружим. Момци ће га убити. Срећно.