Воведничар: Добро, па, нема да го верувам, Но, минатата недела, во понеделникот, во Пирс, јас беше долу во подрумот. Јас никогаш не одат на Пирс. И јас никогаш не сум да се вратам повторно, затоа што Го оставив работи сам за, како, пет минути и некој украде мојот компјутер и мојот телефон од мојот ранец. Што значи јас го зедов тоа назад, и потоа за помалку од една недела подоцна тоа доби украдени повторно. А потоа го доби уклучен - Најди мојот iPhone продолжува да биде од помош. Па јас продолжи да се поттикне да не го користите. Се покажа на еднаш, и таа беше во МИТ, како 15 минути подоцна, а лицето наречен овој телефонски број кои покажаа во мојот AT & T повик се најавите. Па отидов онлајн, наречен тој телефон број, и отиде директно на овој телефонска секретарка на шпански. И не сум слушнал за тоа, бидејќи. Па морав да добие нов компјутер и телефон. Знам. Да. Но, ако вие момци сакате да чип во мојата компјутерски фонд по ова, тоа е причината зошто Сум те праша тука. Само се шегувам. Но тоа беше навистина тажна и трауматично. Но, сето тоа назад сега, и затоа p-собата 8 зеде толку долго, бидејќи Немав компјутер. И некој го украл. И јас преку е-маил, прашуваат дали тие би градус вашиот P-сет 8. Но тие рекоа бр. А јас бев како, можам да имам мојот компјутер назад? И тие се како, бр. Само се шегувам. OK. Ова е нашата последна секција, и имам неколку - имаме само три работи на агендата. Ние ќе зборуваме малку за П водич. Тогаш ние ќе треба да поминат 15 минути на ладно демо. Тогаш ние ќе треба да сите велат збогум еден на друг. Вие навистина не треба вашите компјутери или пенкало или хартија за да снимите белешки, или следат заедно. Па претпоставувам ако имате на вашиот компјутер нагоре, тогаш сте на Facebook. Само велејќи. Освен ако не сте пополнување на П водич, кој е во прв план. На П водич е отворен. Сте имале е-маил за тоа. Откако сите прашања нешта се доставува на крајот на годината, јас ги добиете сите од П коментари во резултати од сите кој избира да ми даде фидбек. И така кога ќе одат во П - Не знам дали може да се направи ова, Џеф, затоа што ти си и проширување студент. Но кога ќе одат во П, ако не сте направи тоа пред, можете да го изберете вашиот наставник, кој е Дејвид Malan. Што треба да го направи тоа. А потоа можете да ги собереш TFS. И можете да изберете како многу TFS, како сакате. Но, постојат 60 од нас. Вие не треба да ги собереш сите. Вие само може да ме земе, или само изберете неколку други луѓе, ако сакате, да се им даде повратни информации, како и. И тогаш ќе го добиете резултати на сите овие различни оски, а потоа можете да го напуштите ги фидбек. И тогаш, како еден месец подоцна, Ќе добиете сето она што фидбек. И исто како и повратни информации во кој сте биле да ми дава во текот на семестарот, јас читаат сето тоа. И тоа е навистина од голема помош, и тоа им помага мене расте како учител и како индивидуа. Значи, ве молам, да потрае некое време да го направи тоа. Ние сме само ќе биде тука за, како, 30 минути. Значи, ако сакате, на крајот на ова, да земе пет минути, и само да ги пополните на П, бидејќи тоа не презема повеќе време од тоа. Дека ќе биде прекрасен, а исто така ја добиете вашата оценки назад побрзо, ако ќе ги пополните П Па повеќето од вас го направиле тоа порано - или не, околу половина од вас го направиле тоа порано. Но, ако сте бруцош, тоа е што е тоа. Тоа ќе биде иста за сите класи. Направете го тоа. Таа ги зема пет минути. Но, исто така, ако го направи тоа малку сериозно, тоа не е најлошото нешто во светот, затоа што сигурно земаат сериозно. Значи, ако ме оставиш лице смешковци, Јас ќе го цениме тоа. Но јас, исто така, ќе го цениме ако ме остави повеќе од лице со смешковци. Но, тоа е до вас. Не можам да ви кажам - или како голем смешко се соочи со капитал Д Тоа би да биде дури и подобро. ОК, тоа е се што имам за П Ако имате било какви прашања, можете да побарате мене, но прилично очигледен. Само, те молам, да го пополнат надвор. Јас навистина би го ценат, и тоа значи многу за мене. Добро, тоа е она што ние ќе треба да поминат 15 минути поминува. Одам да ви покаже некои код. Мислам дека ова е навистина кул, и ова ми доби повеќе возбудени по компјутерски науки. Па се надевам дека тоа ќе го стори иста за сите вас. Ние ќе се обидеме да се отвори - и сето тоа код ќе го испратам до тебе подоцна. Но, ние сме само ќе се отвори - Јас сум во мојата терминал - ние ќе се отвори оваа програма наречен [? MySum. ?] Може да се прочита дека сите, или треба да се направи тоа поголема? Некој може да ми каже што овој код ќе правам кога ќе се стартува, или она што овој Програмата ќе направам кога ќе го извршите? [? AVI,?] Што мислите тоа се случува да направам? Финиш џвакање. Вие не треба да се зборува со отворена уста. Публика: Дали е потребно еден куп на аргументи, се најде сумата од нив се враќаат сума, а потоа го испечатите? Или е потребно во два аргументи, и тогаш тоа го прави [нечујни]. А потоа тоа отпечатоци од она што резултатите се. Воведничар: Затвори, навистина блиску. Секој сакате да го додадете [? што Ави?] рече? Дали треба да се даде на оваа програма било командната линија аргументи? ПУБЛИКАТА: Не ЗВУЧНИК: Не Што се случува ако не го даде било командната линија аргументи? Јас само ги запишувам точка црта MySum. Публика: 1 плус 2 еднаква 3. Воведничар: 1 плус 2 еднаква 3. И тоа ќе се печати тоа. Тоа е точно. Ќе видите дека печати ѓ линија на дното. Тоа ќе испечатите, b и тогаш збирот на a и b. И претпоставувам дека се претпостави дека Збирот работи правилно. Добра претпоставка. Добро, а што ќе се случи ако јас даде она аргумент? [? Manu? ?] Публика: Ќе додадете она што првиот аргумент е да b. Или да 2, жалам. Воведничар: Право, на 2. Дали некој знае што strtol прави тоа? Тоа е во основа atoi. Atoi е всушност фенси верзија на - или поедноставно верзија на strtol. Но тоа всушност го користи strtol. И јас дознав тоа затоа што сакав нешто како atoi, а потоа кога ќе се atoi, јас ги прочитав овде долу. И го најдов "Ова однесување е иста како и "strtol. Така, тоа е во основа atoi за сите намерите и целите. И ќе видите јас дури и се користи за ништовни и 10. Ова всушност ви овозможува да стринг, и тоа се претвори во голем број, и одберете што база сакате да го направи тоа внатре Значи ова е база 10, токму тука. Јас би можеле да имаат направено база два за децимална запирка, база 16 за хексадецимален. Тоа е прилично кул. Но скратам приказната, ова се две броеви и додава нив заедно. Па ајде да се кандидира. И ти исто така ќе забележите, постои некои работи - па имам makefile токму тука, и ако отворите дека до, некои работи ќе забележите се различни. Особено, овој аргумент токму тука, веројатно не сум ја видел тоа порано. Општо земено, ние ги собира нешта со цртичка нула, нула. Цртичка нула, нула, значи не го правам било оптимизации, компајлерот. Не се обиде да направи ништо фенси, или направи ништо кандидира побрзо, или да добијат ослободи од варијабли кои се неопходни. Не се оптимизира овој код на сите, Прашувам за трето ниво оптимизација. Па јас барам компајлерот да се направи многу оптимизации. Можете да го промени тоа во makefile кога имате овој код, ако сакате за да го видиш различни нешта. Кои ние ќе ви покаже во секунда. Па ние се кандидира ми Збирот 1 плус 2 плус 3. Некој да ми даде два аргументи. Публика: 4 и 5. Воведничар: 4 и 5. Ви благодарам. Голема, таа работи. Кои се некои други добри аргументи да се обиде, да бидете сигурни дека тоа функционира? Некој? ПУБЛИКАТА: 0. Воведничар: 0 и? ПУБЛИКАТА: Негативни 3. Воведничар: Таа работи. Но тие беа добри избори. Добро, па да се вратиме тука. Ова е mysum.c. Ќе забележите таму е исто така нешто наречен sumfunction.c. И ова вели, ох, има нешто што е дефинирано во sumfunction.c. Јас не се вклучи оваа датотека тука бидејќи јас не треба да се. Но јас го водат во кога ќе ги собере, кои го забележале тоа. Ајде да дојдете до. Видовме кога ќе состави mysum, право таму, ние се поврзани во бинарното од sumfunction.o. И јас не треба хедер датотека бидејќи, се разбира, тука е и функција декларација. Толку остри вклучуваат нормално само става во функција декларација. Тука сум само да го стави директно во кодот. И така јас треба да направите е линк во бинарното, која го правам. Секое нагаѓања за тоа што е во sumfunction.c? Што код што сум напишал во sumfunction.c? ПУБЛИКАТА: [нечујни]. Воведничар: Секое нагаѓања? Да? ПУБЛИКАТА: Мислам, го дефинира некои [нечујни]. Воведничар: Да. Па јас го пишувам int Збирот int a. Јас пишувам оваа линија, а потоа имам отворен кадрава голема заграда, затворен кадрава голема заграда. Што мислите јас пишувам во оние тркалезните загради, внатре таа функција? Да? ПУБЛИКАТА: Враќање еднаква на. Процесор: Тоа е навистина добар се погоди. Кој мисли [? Manu?] Е во право? Таа вели дека се врати плус б. Добро, не сите. [? Akshar,?] ќе го направите, исто така? Сигурен си? OK. Што? ПУБЛИКАТА: Вие напишани погрешно. Воведничар: Не, јас не. Да, само се шегувам. Во право си. Тоа е токму она што го кажува. Тоа е се вратат плус б. Што го прави многу смисла. Добро, ајде да се вратиме тука. Можеме да видиме колку насловот - тоа е вид на враќање. Се сеќавам, видовме дека ден еден, врати видот на функцијата, но оди пред името на int функција. Еве, јас сум напишал Инт. Што мислите ќе се случи ако во овој функција, јас не го пишувам int, но Јас пишувам непотпишана? Разликата, се разбира, е во тоа што непотпишана претставува само позитивни броеви, и int може да биде позитивни или негативни. Па јас сум смени враќање видот на оваа функција. Овој код не се совпаѓаат ова враќање тип тука. Што мислите ќе се случи кога ќе ги собере? Треба да се развикам мене. Не викање. Она што за кога ќе ја стартувате програмата? Ајде да го направите пред 0 негативен 3, или негативни 1. Таа се уште работи, иако јас велам тоа е враќање една непотпишана цел број. Јасно е дека тоа не е враќање една непотпишана цел број. Тоа е враќање потпишан број. Тоа е враќање негативна 1. Добро, тоа е чудно. Што ако одам во тука и го правам тоа? Па јас изменета сè од int да непотпишана. Тоа може само да се земе непотпишана цели броеви. Но ние сепак мислам дека ќе се кандидира? Публика: Да. Воведничар: Ќе помогне. Тоа е лудо. И ние помине во јасно доделен цел број, ние може да помине два потпишани цел број, таа се уште работи. Добро, сите идеи зошто тоа сепак работи, или она што се случува? Да, Џеф. ПУБЛИКАТА: Таа има нешто да се направи со вашиот оптимизација дека истакнат. ЗВУЧНИК: Не Ние може да се промени оптимизација, се уште ќе работи. Можам да го направи тоа за вас, но - Публика: Ќе го земам вашиот збор за тоа. Воведничар: Да. Ако отворите makefile токму тука, Ја променив оптимизација. Па можете да направите цртичка нула, нула. Тоа сепак ќе работат. Други мисли? Вие момци сите очекува да работат, па Зошто очекувате тоа да работат? Не? Тишина. OK. Морам да чекам седум секунди, затоа прашав едно прашање. Па кул работа за C, и сте веројатно искусни пред - ќе не може да има, ова може да биде прв пат. Но, како што сите знаете, кога ќе се напише нешто во C, тоа не спаси како ова на компјутерот. Таа е зачувана како оние и нули. Тоа оди од C код за асемблерски код. Дали некој видел асемблерски код пред, машина собранието код? Ние ќе се погледне во секунда. Тоа оди од C код за асемблерски код. А вие момци знаат фази на компилација. Ти мораше да се запаметат дека за квиз еден, и тогаш тоа напише на квиз нула. Повеќето луѓе се тоа во ред. Мислам дека вие момци го заковав. Но, вие момци се најдобри секција за квизови, патем. Што е неверојатна. Тоа нема да ви наштети. Не се загрижени. Но, тоа е навистина кул. Добра работа. Така тоа оди на асемблер јазикот, и тогаш тоа оди на оние кои и нули. И оние кои и нули се зачувуваат на компјутер, и тоа е она што се зачувуваат во на a.out, или во овој случај, извршна датотека. И компјутерот работи оние кои и нули. Нели? Ние научивме тоа порано. Па кул работа е, ова непотпишана идеја, идејата на видови ints непотпишана, и така натаму, и така натаму, тоа е тука во C јазикот. Оние постои. Но видови не постојат на на оние кои и нули. Видови дури и не навистина постојат на нивото асемблер јазикот. Па тоа е нешто што постои во C светот, но не постои во компјутер свет или процесор светот. Тоа е некоја апстракција дека C јазик вклучени, да ја направиме нашата живее полесно. Па на крајот на денот, можам да пишувам многу различни работи тука, и тоа не прават разлика. Затоа што постои само во светот на С. Тоа не постои во оние кои и нули светот. И нашата програма е извршување во на оние кои и нули светот. Значи уште не е јасно разнесени вашиот ум. Но мислам дека е кул. Да, Џеф. ПУБЛИКАТА: Значи, ако наместо да прави int, ќе се направи знак. И вие бевте - Воведничар: Да го сториме тоа во секунди. Публика: Затоа што тогаш ќе добиете непотпишана одат од негативни 128 до 127 или 0 до 255. Воведничар: Значи знак е проблематична. Дали некој знае зошто знак ќе биде проблематична и всушност ќе се променат работите во оние и нули светот? Публика: Поради големината на знак. Воведничар: Големина на знак е 1. Па непотпишана е исто така 4 бајти. Значи знак ќе завртка работите. Но она што е 4 бајти кои е поврзани со знак? Или на кој додава една дополнителна - може да се стави уште еден карактер по знак. Публика: Char ѕвезда. Воведничар: Char ѕвезда има 4 бајти. Па ајде да направиме нешто тоа е знак ѕвезда. Така што ова веројатно ќе работат, но ние сме случува да се направи нешто, дури и полуда од тоа. Во моето мислење, полуда. Сум сега напишано функција која враќа покажувач, и е потребно покажувач и една непотпишана вредност - ќе промените ова назад кон int па ние не сме правење премногу промени одеднаш. И тоа има низа наречен, индекси во низа, и се враќа на адресата на. Видовме овие оператори порано. Ова, што мислите дека ова ќе да се направи, за возврат, кога ќе го извршите? Што мислите што се случува да се направи? Секое нагаѓања? Публика: Segfault. Воведничар: Што? Segfault? Тоа е добар се погоди. Tom вели истото. Било која друга нагаѓања? Кој мисли дека тоа ќе го прават истото? Кој мисли дека тоа ќе segfault? Тоа го прави истото. Жал. Но, се разбира, ние се стави во 1 и 2. И оние кои се двете валидна, нели? Ајде да видиме, ние може да оди на второто место на низа. Но што ако ние направивме б негативен број? Тоа е веројатно подобра погоди за нешто segfaulting. Се уште работи. Добро, ова е сега луд. Ова е еднакво вредни Збирот функција. Ова го прави истото точната нешто за враќање a и b. Некој може да се објасни зошто ова е добра ЕЕЗ функција, или зошто тоа функционира? Што се случува овде? Зошто ова го стори истото нешто како нашите стари Збирот функција? [? Akshar,?] што се случува? Публика: Затоа што кога ќе имаат А тоа е обраќањето до локацијата меморија - и кога ќе го направите симболот, таа оди на таа мемориска адреса. И кога ќе одат до Б, ти си вид на се движат чекори од таа меморија адреса, ти си го врати. Па ти си, всушност, всушност, додавање на и b [нечујни]. Каде се стандардни операции на тој за возврат? Како, каде заградите падне? Е враќање на адреса на еден пред или по [нечујни]? Воведничар: Тоа се случува да индекс во б - или индекс во - и потоа врати адреса. Добро, така што не сите разбираат што [? Akshar?] рече, и објасни, зошто тоа функционира? Јас не, прв пат некој објасни ова за мене. Некој би сакал слика да се објасни ова? Ние ќе се нацрта слика, со нема маркери, тоа е одлично. Најде некои. Па ние имаме низа што е серија на кутии. Првиот е индекс 0, индексот 1, 2, 3, 4, точка, точка, точка. Еден типичен низа. И покрај ја да ја индекси, сите тие имаат мемориски адреси. Па ајде даде оваа меморија адреса 13, 14, 15, 16, 17, итн. Сите ли се тука досега. Па е адреса. Името на низа, покажувач е зачувана таму. Тоа е покажувач, тоа е мемориска локација, на почетокот на низата. Значи, ако ова беа низа, е ќе биде вредноста на 13. И, се разбира, може да се даде на било која вредност сакаме. Char ѕвезда на, ние може да даде било меморија адреса сакаме. Ние може да го даде 0, ние може да го даде негативни 1 - негативни 1 не постои, така што е веројатно проблематично, но те видов дека се 'уште работел. Па ние може да даде било кој број што сакате, мемориската адреса сакаме. Потоа, int b вели, во ред, одат овој број на чекори во низа. Па ако b изнесува 2, и изнесува 13, ние сме на мемориската адреса 13. И одиме два чекори во, и така ние сме тука. И симболот значи враќање на адреса на оваа локација. И адресата е, се разбира, 15. Па да добиеме 13 плус 2, или плус b, кое е 15. Прашањето е, иако - Жал ми е. Дали тоа се разјаснат работите зошто тоа функционира? ПУБЛИКАТА: Зошто тоа ќе работи ќе - па можете да имате низа и оди на негативни индекс? Воведничар: Токму така. Па ние го сторивме негативни броеви, па тоа е - Дали ова има смисла, иако, Прво, [? AVI,?] за вас? Публика: Да јас сум само [Нечујни], но - Воведничар: Да, ова ќе се врати 15. Ако беше 13, и б е 2, ова ќе се врати 15. ПУБЛИКАТА: Значи нула индексирање не стане прашање, нели? Затоа што се движат од 0. Воведничар: Токму така. Така да се движат - па ако б беше 0, вие не би се движат насекаде. А вие само ќе си се врати на адреса - Ако Б е 0, тоа е во суштина враќање на таа адреса на. Поминува во знак ѕвезда на и враќање на адреса на е само враќање на, суштина. Добро, прашањето е зошто негативни броеви работа? И тоа е навистина кул работа во врска со ова, бидејќи ова треба segfault. И тоа ќе segfault ако ние направи нешто како ова. Да речеме, int. Па овој код изгледа идентично и треба да се однесуваат идентично. Во суштина, x е ѓубре променлива, па така ова треба да се однесуваат идентично. Да се ​​направи ова - Упс - во ѕвезда. Добро, ние сме веќе добива грешки овде, затоа што тоа е веќе се случува да се лути во мене, затоа што веќе знае она што доаѓа. Особено, на вториот. Адреса на рангирани меморија, поврзан со локална променлива. Во суштина, јас не одам да ги собере ова, а потоа јас ќе одам да го вратите направи она што го направија. Но, бидејќи ние никогаш не сме всушност пристап до она што е во меморијата локација, тоа не се случува да segfault. Ние никогаш не сме всушност гледа во она што е во втората кутија или она што е во било кутија на оваа низа. Ние сме само велејќи, тука е адреса на нешто што го барате и се врати таа адреса. Ние никогаш не сме всушност навлегуваме во низа да се погледне во таа локација. И бидејќи ние никогаш не го допре меморија, ние не се во неволја. Ние не добие segfault. Ако ние се обидовме да, повторно, се допре дека меморија, допир кој бил a или b - или заградата б, и под претпоставка е е 0 и - ако е 0, дури, дека ќе биде прилично лошо, бидејќи не можеме да одиме одредување на целиот пат таму. Ако a и b се и двете 0, и се обидовме да допир она што беше таму, тогаш ние би добие во неволја. Но, ако ние не ги допирајте она што е таму, ние само се вратат на адреса, тоа е всушност нема да segfault бидејќи што ви овозможува да ги извршуваат своите операции. Тоа само добива луд во тебе, и добива супер лути, кога ќе се обидат и да допрете вистински меморија и да се врати она што е во тоа мемориска локација. Дали тоа има смисла? Тоа е само луд дел од C. Значи, имаме уште едно од овие. Кој мисли дека ова е кул? Повеќе луѓе. Тоа е добро. Добро, ова е нашата последна еден. И јас би сакал да ми каже дали или не мислите дека ова се случува да го стори истото точната нешто. Имам овие запишано некаде. Јас не сум ги учев. Ајде да видиме, 8, б 4, 4, 2, 4, 0, 8, 0, 3, 4, 4, 2, 4, 0, 4. Значи ова е низа, сега, не е функција. И тоа е низа, бидејќи имаме квадратни загради, не кадрава загради. И тоа е низа на тоа каков тип? Секој, хм? Публика: Нивната хексадецимални броеви? Воведничар: Но, она што е вид на C? Сите тие имаат хексадецимални броеви. Што е тип Ц? Тоа ти го кажува. ПУБЛИКАТА: Тоа е непотпишана карактери. Воведничар: Право, непотпишана карактери. И два хексадецимални броеви е еден бајт. Така што овие се 1, 2, 3, 4, 5, 6, 7, 8, 9 бајти. Тоа е низа од 9 бајти. Добро, што веројатно веќе знаете одговорот на ова прашање. Но, она што мислите дека ќе се случи кога јас ја извршите оваа? Велам, пак, во mysum.c, Јас сум очекуваме функција кој ги зема два цели броја. И јас сум велејќи наместо тоа дека таа сума е низа од карактери. Што ќе се случи кога Трчам. / Mysum и направи? Па, прво, повеќето од вас веројатно ќе се согласуваат дека направи - О, не, само се шегувам. Што добив направив погрешно? Ух ох. Кои треба да бидат големи загради. Тоа е како да се иницијализира низа. Мојата лоша. Па ние веќе видовме пред тоа видови се C-ниво на апстракција, не е компјутерски ниво апстракција. Па повеќето од вас веројатно го очекува да направи, или се претпостави дека тоа ќе го направи. Но, она што, кога јас се кандидира. / Mysum? Што ќе се случи? Секое нагаѓања? Публика: Тоа се случува да испечатите збор. Воведничар: Тоа се случува да испечатите збор. Што збор? ПУБЛИКАТА: [нечујни]. Воведничар: Сите други нагаѓања? Добро, печати од една фраза. Можете да имате било какви фраза. Која ќе биде вашата страна. Секој кој има различен погоди? Ана, која е твојата претпоставка? Публика: Тоа ќе испечатите - две букви, или [нечујни] една буква. Воведничар: Една буква. ПУБЛИКАТА: Може ли да се смета како многу [нечујни]? Воведничар: Девет. Па, јас ќе одам да го работи. Тоа го прави истото точната нешто. Таа додава два броја заедно. Добро, ајде да помине два аргументи. Тоа не презема аргументи. Па јас не знам од каде тоа би можело да можеби се добијат овие аргументи. Но, ајде да помине на 100 и 0. И се додава 100 и 0. Тоа е лудо. Јас мислам така. Негативни 4, кој работи премногу. Можете да го направите нешто што сакате. Ова е подеднакво валидни Збирот функција. Ова е збир функција. Но не, не сте велејќи дека тоа е низа од бајти. Значи она што се случува овде? Значи, повторно, да се вратиме на оваа идеја дека ние рече на самиот почеток. Одите од C-ниво на код, до собранието јазик, да оние кои и нули. Ова е хексадецимален. Но, ова е навистина само многу од оние кои и нули. Ова е 72 единици и нули, нели? 72 оние и нули. 9 бајти. Секој бајт има 8 бита. Секој малку е една или нула. Па 72 од нив или нули. Тукушто ги напишал вака - наместо пишување на тоа како многу оние кои и нули. Но, ова ќе одат од C-ниво на јазик, до собранието јазик, да се код. И тоа ќе се печати во кодот, некаде, овие 72 единици и нули дека јас сум напишал овде. Значи некаде во тоа - ајде да одиме тука - некаде во mysum, програмата, се овие 72 единици и нули што сум напишани и кажа дека да се пишува. Сега, секој нагаѓања за тоа што тие 72 оние и нули значи? ПУБЛИКАТА: Веројатно исто нешто како враќање плус б. Воведничар: Веројатно исто нешто како враќање плус б. Ајде да се провери тоа. Ајде да дознаам како го направив тоа. Значи, ако се вратиме тука, ќе ти кажам да ја извршите оваа команда, objdump-S sumfunction.o. Ајде да одиме да ја стартувате. objdump - OBJ, шутнат. Во основа тоа може да ми даде она што сакам да го видам. Тоа може да ми даде на асемблер јазикот. Тоа може да ми даде на оние и нули. Тоа има еден тон на знамињата. Ова е еден ние ќе да се користи за сега. Точка - како што гледате во слајдови - цртичка капитал S вели, едитирате, Извор законик - оваа линија е од C - со собранието код и со оние кои и нули. И ние ќе да се кандидира тоа на sumfunction.o. Бидејќи тоа ќе биде полесно да се види. Повторно - хм? ПУБЛИКАТА: Вие напишани погрешно. Воведничар: Но, јас сум всушност ќе да го расчисти за една секунда. Јас сум прв ќе се отвори само sumfuntion.o. ПУБЛИКАТА: Ти го спелува погрешно прв пат. Воведничар: Classic. Збирот - тоа е тешко зборот, иако. Сакате бидете изненадени. Добро, така што ова е sumfunction.o. Јас дури и не би можеле да ти кажам. Има многу нули, јасно многу на нули и има некои други работи тоа не е нули. Но најмногу нули. Изгледа има некои од нив. Па јасно, ова е тешко да се прочита. Тоа е бинарен јазик. Ајде сега отворете го - што? Што правам погрешно? Никако не можев да го опишат правилно? Добро, ова е непријатно. Ми треба една секунда за да дознаам од она што јас го правам погрешно. Тоа е една грешка. Тоа е чудно. О, тоа е зошто. Одам да се вратиме на нашата почетна еден, за да можеме да се погледне на објектниот код на оваа. Бидејќи таму не е навистина се случува да се да биде ништо, кога ние само стави оние кои и нули внатре Таму ќе одиме. Добро, така што секој може да го видите ова. Оваа функција, како што реков, стави надвор на C линии - изворниот код линии - со некои монтаж инструкции. Тука е нашата изворниот код линија. Тука е една, тука е друг. Тука е Собранието настава. Тоа е она што тие изгледаат. Собранието инструкции - можете да дознаете повеќе за овие, ако се други CS класи, но тие се генерално упатство. А потоа извор и дестинација. А потоа во текот тука е бинарен код кој одговара дека собранието настава. Па како што можете да видите, оваа сума функција, на крајот на ден, три монтаж инструкции. Само три. Еден МОВ - оваа m-o-v стои за движење. Додадете залага за Add. И r-е-т се залага за враќање. Значи една MOV, еден додаток, една пријава. И овие, овде, се нули и оние кои одговараат на овој код. Па оние нули и оние, ако знаете оние, вие само може да се стави оние директно внатре А потоа тоа ќе го стори исто точно нешто. Бидејќи, на крајот на денот, сите сте извршување е долга серија на нули и оние. И тоа е она што вашиот код навистина е. А причината - ајде да погледнеме една работа. Дали имам makefile отворен? Значи, ако се вративме да цртичка нула, нула до тука - Жал ми е, капитал о, капитал o нула, не е нула, нула. И ние го направи, тоа би уште работат на истиот. Но сега ќе забележите дека постојат многу повеќе монтаж инструкции. Тоа е затоа што, повторно, го прашав компајлерот не да се направи било оптимизација. Па јас уште може да ги преземе сите на овие нули и оние, и ги фрлаат во, и дека ќе работи. Јас само го направи оптимизации, бидејќи тоа е малку полесно, тогаш, да се напише дека низа. Но, ова ќе работи само како добро. Добро, ние ќе треба да направите една конечна нешто, бидејќи мислам дека е најкул дел. Иако сите е јасно веќе разнесени и без зборови. Нашите умови се разнесени. [Нечујни] Значи, овие се од различни CS класа, што е супер интересно, дека сум зел - CS61. Силно ве охрабруваме да ја земе. Но кул дел за овој факт, дека работи се само нули и оние, се дека сè е нули и оние. Па може да се земе датотека која има точно нули и оние што сакате некаде во него, и го користат тој дел од нули и оние како збир функција. Што мислам кога го велам тоа? Мислам може да се земе слика датотека што има добра серија од нули и оние, што се печати нешто до слика. И една програма може да се протолкува е слика, но можете да го протолкува, ако сакате, како збир функција. Значи, ако сакаме да се отвори, за На пример, оваа слика. Ајде да одиме, Hello Kitty. Прекрасни малку сликата. Тука постои стрингот на нули и оние. Оние 72 нули и оние постојат во оваа слика. Значи она што може да направи, тогаш, е да се пишуваат - Морам да се сети каде и да се. Ќе најдете дека во една секунда. Но, ние не - дозволете ми да дознаете каде се тие. Еден сек. Ајде да се направи - ПУБЛИКАТА: [нечујни]. Воведничар: Благодарам. Значи, ако ние се изврши оваа програма, која наместо чита во датотека, тогаш тоа оди на овој индекс во датотека. А потоа, повторно, исто како mysum, зема два броја. Ние можеме да додадете броеви иста како што го правевте и претходно, кој оди да се ви покаже како фактот дека, на крајот на ден, сите овие нешта се нули и оние. И тоа е само како ке го одберете да ги интерпретира. И ако навистина изгледа во оваа слика - ајде да зумирате малку. Секој може да го видите? Ќе забележите токму тука, има некои чудни флеки. Ајде да одиме - ова е на оригиналната слика. Ќе забележите овде нема флеки. Тоа е код за сума функција, е дека малку дупка право таму. А всушност, повторно, ако научат повеќе за тоа, ќе сфатите дека ова Hello Kitty, која има дури и поголем зацапвам, има код кој може да преземе компјутер, ако тоа не е заштитена соодветно. Така што всушност може да работи тоа. Јас не одам за да го стартувате сега. Но можете да ја извршите оваа Здраво Писе на сликата, и тоа може да преземе вашиот компјутер. Па тоа е сите за демонстрација. Дали некој има било какви прашања, коментари, проблеми? Мислам дека овој материјал е фасцинантен. Тоа ме инспирираше да дознаете повеќе. Силно препорачувам, ако сте заинтересирани на сите на CS, да разговара со мене. Иако јас сум социјални студии Концентратор, јас сум CS, средно, па Јас сеуште знаат малку. Но јас сигурно знаете што класи треба да земе. Мислам дека сето тоа е навистина интересно, и јас ве охрабруваме, секако, да се научат повеќе, ако сте заинтересирани. Добро, имам една конечна нешто. Жал. Било какви прашања? Јас не се откажеш да почека ако некој имаше било какви прашања во врска со тоа. Дали некој ќе биде на CS концентратор? Или размислување за тоа? Еден, два, три, четири. Еден - само еден. Ана е единствениот рака тоа е покрена авторитативно. Добро, тоа е кул. Асам, што ви се случува да се направи? ПУБЛИКАТА: [нечујни]. Воведничар: Константин? Публика: физика. Воведничар: Леле, тоа беше брзо. Сте имале лошо искуство во CS50? [Нечујни], што ви се случува да се направи? Публика: Јас немам идеја. Воведничар: Курт? ПУБЛИКАТА: ECON или CS. Воведничар: ик.на или CS. Том? Публика: Јас го правам Стат. Воведничар: Стат? OK. Што си ти? Публика: ме? Воведничар: Да. Публика: Стат. Воведничар: Стат. Ох, таму да одите. Том, разговарајте со Alden. Емили, што си ти? Публика: биомедицински - Воведничар: Дали сте во овој дел? ПУБЛИКАТА: Не ЗВУЧНИК: Добро, тоа е Емили. Таа ми е пријател. Јасно е дека не дека е добар на пријател затоа што таа ми дава тешко време. Може да биде поубаво за мене пред на сите, моето студент - Публика: Јас го правам вашиот Q водич. Воведничар: Навистина? Ух ох. Добро, ти си неверојатен. Те сакам толку многу. О момче. Како и да е, јас, минатата ноќ, како и сè - Сигурен сум дека сите се чини дека навистина истакна во моментов. Не знам, се бруцош - се вие момци чувствувате под стрес? Јас сум чувство стрес. Тоа беше како, си одам дома за Денот на благодарноста. Ти си како, јас ќе одам да направите сите овие работи. ПУБЛИКАТА: Тоа е толку различни. Воведничар: Да, и ќе се врати. Џеф, што не се чувствуваат на овој начин? Публика: Јас само мислев Јас би го сторила малку. ЗВУЧНИК: Добро, одлично. Па ќе се вратам, и јас не треба направи ништо. И сето тоа е супер стресни. И јас сум загрижен, искрено загрижени, за тоа дали или не сум ќе ја заврши сè што треба. Но, минатата ноќ, јас не сум бил под стрес, Јас бев само малку тажен. Па напишав во мојот дневник за она што јас бев тажен за. И јас бев тажен за овој дел во оваа класа доаѓа до крајот. Па јас бев само ќе прочитате за вас момци малку програмка на мојот весник, од минатата ноќ. Може ли да добијам некои салфетки, некои ткива од Том? Не, јас ќе одам да плаче. Јас не плачат. Не дека не можете да плаче, Јас само не плачат. Јас дури и не знам дали мојот солза жлезди работел - солза канали. Не сум плачел во долго време. ПУБЛИКАТА: [нечујни]. ЗВУЧНИК: Добро, благодарам. Добро, тука е малку предговорот - има некои други делови на мојот весник влез, бидејќи јас се обидувам да весник секој ноќта пред добив во кревет. Силно препорачувам journaling. Тоа ви помага да се процесира нешта, и, исто така, да биде многу пофалници од твојот ден. И тоа го прави многу полесно да се погледне назад на вашиот ден и да сфати дека имаше многу добри работи што се случило. Дури и ако сметаш дека навистина истакна ноќе или навистина вознемирени или навистина тажно или замор. Ох, Боже. Јас дури и не знам дали тоа е напишано дека добро, бидејќи јас не го лекторирани. Но ние ќе го прочита. Јас обично не читаат мојот списание, очигледно. "Утре, јас ќе научам моите конечна CS50 дел од годината. Тоа е лудо колку брзо времето лета. Сепак, јас бев вчудоневиден од тоа колку различни моето искуство настава оваа година беше од кога бев сафомор. За почеток, јас дефинитивно знаат материјалот подобро. Но, не ви ја кажав мојата првата група на студенти кои. Уште поважно, сепак, сфатив дека радоста што доаѓа од стоење до пред една соба на она што започнува како странци, но завршува како, на и најмалку важно, пријатели на Фејсбук, е не е прва година среќа. Напротив, тоа е од знаејќи дека во некои мали начин, ти си помагаат талентирани, внимателен, прекрасен, и страсни луѓе да научат малку повеќе за компјутерски науки. Ти си префрлаат дека сијалицата само малку во своите сокет, така што тоа е во можност да блесне посветла од вас, или тие, може да се замисли на семестар на проектот. Ти си помагаат претворат оние стемнето наопаку надолу и поставување на прашања кои обезбеди поддршка, но сепак овозможи студентите да застане на сопствените. Тоа сигурно не е претерано да се велат дека овој дел е мојата омилена дел од седмицата. Или дури дека се одлучувам да кажам, тоа е сите, во 05:30 секоја недела, знаејќи дека тоа ќе биде премногу долго додека не се сретнеме повторно. Сепак, јас сум неверојатно благодарни на сите што ми даде овој можност да му ја врати на другите. Дејвид, за неговото трпение и доверба. На филмот и производство екипажот, за што ме погледне малку почит. И што е најважно, до моите ученици, без кои немам никаква причина да се поминуваат 10 часа пронајдат најдобрите начин да се привлече покажувачи, или нокаутирам табела на делфини, преку JavaScript. Како и секогаш, тоа е благослов. " Така да со тоа, ви благодарам момци. Јас ќе те видат сите на саемот CS50, и на Hackathon, ако сте таму. И ако имате прашања, јас ќе се држи околу додека не постојат повеќе. Но јас ви се заблагодарам момци за прекрасен година. [Аплауз] Воведничар: Јас би можеле да плаче.