>> Давид Ј Малан: Ово је ЦС50 и ово је почетак недеље четири.
И, дечак је Волксваген у Невоља све због софтвера.
Хајде да погледамо.
[ВИДЕО РЕПРОДУКЦИЈА]
-ЦАРС, Најпаметнији цхарацтерс на Фаст анд Фуриоус филмова.
Ове недеље немачки произвођач аутомобила Ауди нашла
у сред скандала потенцијално кривична пропорције.
>> -Волксваген Се спрема за милијардама у новчаним казнама, могуће кривичне пријаве
за своје директоре, као Компанија се извињава
за намештање 11 милиона аутомобила у јој помогне да савлада тестове емисије.
>> -Цертаин Дизел модели су били дизајниран са софистицираним софтвером
То је некада информације укључујући положај управљања возилом и
убрзати да се утврди да је ауто био пролази тестирање емисија.
Под тим околностима, мотор смањило би токсичне емисије.
Али ауто је намештена на обилазници да када се она возити.
Емисије повећана 10 до 40 пута изнад прихватљивог нивоа ЕПА.
>> [Крај репродукције]
>> Давид Ј Малан: Па хајде погледајте ово
и видим како ово може бити имплементиран
и како то може утицати толико аутомобили лике тхис.
Дакле, у руци ево штампа релеасе који је издат од стране ЕПА--
о животној средини Агенција за заштиту који
је америчка регулаторна агенција која ручке еколошких проблема,
а затим стварни правно обавештење да је
послати Волксваген пре само неколико дана.
>> Тако ЕПА пише и објављује сада јавно, софистицирани софтвер
алгоритам на одређени Волксваген возила открива
када је аутомобил пролази Тестирање званични емисије
и претвара пуна емисије контролише само приликом теста.
Ефикасност ово загађење возила
контролу емисије уређаја је у великој мери смањена током целог нормалне вожње
ситуацијама.
Ово резултира у аутомобилима који испуњавају стандарди у лабораторији или тестирања
станица, али током нормалног рада емитују азота окидес-- или НОк--
на до 40 пута стандарда.
Софтвер продуцед би Волксваген је под знацима навода, пораз уређај,
као што је дефинисано Цлеан Закон ваздуха у САД.
>> Они иду даље рекао да ЕПА и друга агенција
открили пораза уређај софтвер након независне анализе
истраживачи са Запада Вирџинија Универзитет.
НОк, загађење доприноси азот-диоксид, приземног озона,
и фино честица.
Излагање овима загађивачи је повезан
са широким спектром озбиљни ефекти по здравље,
укључујући повећање астме напада и других респираторних
болести које могу бити довољно озбиљна да пошаље људе у болницу.
Излагање озона и честица има и
је повезан са преурањено смрт због респираторних везани
или кардиоваскуларне релатед ефекте.
Деца, старије особе, особе са већ установљених респираторних болести
су посебно под ризиком од ефекти по здравље тих загађивача.
>> Довољно је рећи, да је то сасвим озбиљно.
И идемо на читати само још један извод
и онда ћемо да погледамо основни импликације
ово у контексту аутомобила.
Конкретно, Форд произведен и инсталиран
софтвер у тзв електронска контрола
модуле-- или ЕЦМ-- од та возила која осетио
када је возило тестира за усаглашеност са стандардима ЕПА емисије.
На основу разних инпута укључујући Положај волана, возила
брзина, трајање мотор је рад, и атмосферски притисак,
Ови улази прецизно Багер параметре
савезног поступка испитивања која се користи за Испитивање емисије за ЕПА сертификацију
сврхе.
>> Током тестирања емисије ЕПА, да возила ЕЦМ софтвер
ран софтвер који је производио цомплиант емисије резултата.
У свим другим временима, ЕЦМ возила софтвер
водио посебан пут калибрација која смањује
ефективност Општи систем контроле емисија,
конкретно селективна каталитичка смањење Леан НОк трап--
што ћемо видети у тренутку.
Као резултат тога, емисија НОк повећава за фактор од 10 до 40 пута
изнад нивоа ЕПА цомплиант у зависности од врсте погонске циклуса.
>> Дакле, шта то заиста значи, и изворни код за програме који раде
на Волксвагенов нема ипак стављен на увид јавности,
је да ефективно, ово еквивалент је негде унутра
Волксваген-коду.
Ако сте у фази тестирања, а ако аутомобилу детектује одређене факторе животне средине
као волана положаја или покрет
или недостатак истог аута или било који број других фактора
које су тренутно Претпоставља да буду део ове формуле,
они једноставно укључите потпуну контролу емисије.
Другим речима, они почињу емитују мање од загађивача.
>> Иначе, у свакој другој ситуацији када није детектован као
у лабораторији, они једноставно не.
И тако, можете једноставно ово у више бетон Псеудокод са нечим
овако.
Ако се точкови окрећу али волан није, сугестивни
да је ауто на некој врста ваљке
али у некој врсти складиште се тестира,
онда се понашају као ЕПА би вам се допасти.
У супротном не.
Дакле, хајде да погледамо на кратком видеу који
узима Погледајте шта импликације су то заправо механички.
>> [ВИДЕО РЕПРОДУКЦИЈА]
>> Прошлу петак ЕПА саопштила да су неки Волксваген Ауди аутомобили разлика између 2009
а ове године су користили такозвани пораз уређај
да се око закона о емисији дизајниран да задржи ваздух чист.
Али шта то тачно значи?
>> Па, модерни аутомобили имају десетине рачунара унутар њих.
А неки од тих рачунара помогну координира функције
мотора за оптимално перформансе, док пазећи
да нема превише смећа излази из ауспуха.
Они су заправо радили На тај начин за неколико деценија.
У суштини, сваки део мотора а модерног аутомобила
има сензор или контролер на њему, и ових рачунара
чита у подацима хиљадама пута у секунди прављења прилагођавања
попут односа горива у ваздух да иде у цилиндре.
>> Ово варање Волксваген и Ауди модели су дизели,
и дизела још једно заиста важно рачунар
контролисани параметри, који је износ несагорело гориво иде
у издувних гасова.
Сада то звучи лоше.
Не звучи као да би хтео несагорело гориво иде у издувним гасовима.
Али у случају склапања дизел, имате нешто
назива НОКС замка који је уређај који апсорбује и замке за азотних оксида
да су загађивачи који би или пређите у атмосферу.
А ефекат тог НОк замку је побољшана са несагорело гориво.
Дакле, пораз уређај је специјални програм унутар ових рачунара који може успети
изгледа као аутомобил испуњава емисија стандарде чак и када се то не догоди.
Форд је имао проблема на својим рукама.
Њени дизел мотори су били познати за добијање велику економичност,
али НОк замка ради само добро када се користи више горива.
Дакле, ауто би открити, Коришћењем овог пораз уређај,
када је Добијам емисије Тест, то би користити више горива,
оздравити на НОк трап рад, Емисија ће бити у реду.
Али онда ти на путу, уређај искључује, ти си гори мање горива
али ви износите чак 40 пута више загађивача у атмосферу.
Али како дођавола урадио ауто зна да је
се тестирају за усклађеност емисија?
ЕПА каже да је софистициран систем који проверава ствари
као управљачу позицију, брзина, колико је мотор био укључен,
па чак и атмосферски притисак.
Другим речима, било је Нема шансе да је ово случајно
јер је софтвер био дизајниран врло пажљиво да детектују
званичник емисија теста.
То је неки прилично озбиљна превара и то је
Зато Волксваген је у што је озбиљан проблем.
У ствари, њихов директор Мартин Винтеркорн, само одступио.
>> Дакле, шта се даље дешава?
Па, ако сте један од пола милиона дизел Јеттас, Беатлес, голфови, Пассатс,
или Ауди А3С извршити, добра вест је је
да је ваш аутомобил је још увек безбедно возити.
Не морате да га склоним док Ауди изда опозив.
Али у једном тренутку су Вероватно ће имати
за ажурирање софтвера унутар вашег аутомобила.
Када се то догоди можда добити мање миља на резервоару.
Адвокати су већ спремају се за Цласс Ацтион тужбе
тако да власници могу добити надокнадити у неком тренутку у будућности.
Али то неће десити у скорије време.
>> [Крај репродукције]
Давид Ј Малан: Дакле, ово заправо подиже занимљиво питање већа слика
као да верујем.
Jel tako?
Свако од нас има иПхонеа или андроиди или нешто у нашим џеповима највероватније
Ових дана, или лаптопови на крилу који су
руннинг софтвер направљен Аппле и Мицрософт
и гомиле других компанија.
Али како да знамо да оно што ови софтверски производи раде
је заправо шта је ово компаније кажу да раде?
>> На пример, ко је на кажу да сваки пут сте
да телефонирам на вашем иПхоне или Андроид телефон или слично,
да је број телефона и није послатих на сервер неке компаније
због неког програма си написано, да ли је оперативни
Сам систем као иОС или Андроид, или зато што сте преузели
нека апликација треће стране некако се слуша
свему куцате или све ви заправо рекао.
Како знате да, када ви користите Цланг
или Направите компајлирати сопствени софтвер у ЦС50, како
Да ли властито особље које ЦС50 је, путем стране ЦС50 библиотеке,
није се пријавити сваки стринг сте икада стечен
или сваки инцх сте икада добили?
Па, сигурно да погледате у изворног кода за нешто
као ЦС50 библиотеци, ви да погледате изворни код
за Линук оперативни систем ради на ЦС50 ИДЕ.
Али невероватно презентација је враћена 1984. године
у пријему Туринг награде Би А веома познати компјутерски стручњак познат
као- по имену Кен Тхомпсон који добио је награду која Туринг
је врста компјутерских наука је Нобелова награда, ако хоћете,
за свој рад на оперативни систем назван
Уник који је веома сличан дух шта користимо што је Линук.
А питање је питао у свом говору, у суштини
којим се утврђује оквир за године и године дискусије
о поверењу и сигурности, био је то.
У којој мери треба један веруј изјаву да програм-- комад
од софтваре-- је слободан тројанаца?
Можда је важније да верујем људи који су писали софтвер.
>> И у ствари, ми смо повезани у говору који је
дао приликом прихватања ову награду у '80 -им на сајту ЦС50 је
под странице предавања за данас.
Јер оно што ћете видети јесте да он заправо даје
прилично једноставан пример како ни преводилац као Цланг или било шта
компајлери други су коришћени у прошлости, шта ако уграђен у компајлер смо ми
сами користе је мало ако Услов који у суштини каже,
ако приметите да је овај код користи ГетСтринг функција или Тоноване
функција, само напред и убаците задња врата или тројански коњ
тако тај програм сада има око нуле
и они који раде нешто злонамерни.
Пријављивање све своје типке, уплоадинг те податке
у некој сервер, или стварно било.
>> А шта Кен Тхомпсон наставља да ради у свом говору
је да покаже да чак и ако имате приступ извору
код компајлера који злонамерно можда ово радим,
није битно, јер ту је тај пилетина и јаје
реалност прошлости многих година, при чему компајлери
се користе да се саставе.
Другим речима, још док неко је да су написали први компајлер.
И после тога, сваки пут су они ажуриран преводилац променом њен изворни код,
додајући карактеристике и то рекомпајлирање за људе попут нас да користи, добро,
они користе стари верзија компајлера
саставити нови верзија компајлера.
А ако погледамо у говору који је дао,
видећете да због те циркуларности,
заправо можете имати грешке или Тројански коњи уграђен у софтверу
користимо.
А чак и ако погледамо изворни код за те програме,
то не би ни било евидентно јер је лукавством је заправо
у некој старијој верзији компајлер да од је
убризгавањем претњу у нашем софтверу.
>> Што је само да кажем, ми Стварно не могу и не треба
Поверење софтвер који ради на нашим лаптоповима или било који број телефона или места.
И у ствари, касније у овом семестру када поцнемо да прицамо о веб програмирања
и заправо почетак изградње веб апликације себе,
причаћемо о овоме пријетње и други.
Сада, можда сте приметили запитали и да је постојао мали мало Дарт
Вејдер у снимака које Тхе Верге је ту показује
о Волксвагена. Ako никада нисте видели, ја
Мислили смо да би требало да олакша расположење јер ово је све
веома депресивно и застрашујуће.
Ја ћу се осврнути у Супер Бовл 2011
када је комерцијални стране Волксваген-- и ово
Скоро их чини допадљив Поново: емитован први пут на ТВ-у.
То је други снимак 60 мислим да ћете уживати.
[ВИДЕО РЕПРОДУКЦИЈА]
[МУЗИКА - Тхеме Фром "Стар Варс"]
[Пас лаје]
[Аутомобила почиње]
[Крај репродукције]
Давид Ј Малан: Да.
Само сам проверавао.
Тај ауто је на листи прекршаја.
У реду.
Тако смо погледамо неке псеудокоду малопре.
И овде је већа фрагмент кода Псеудокод
да смо до сада видели неколико пута.
И хајде да користимо ово је прилика Сада да се уведе нови програм
техника која смо види алгоритмички
прошле недеље, када смо погледали стапања врсте.
Али хајде да га формализује и видети како можемо га користити у стварном код,
а онда ћемо користити техника низ пут највише
вероватно да реше одређене друге проблеме.
>> Дакле, ово је био један од првих програма које смо икада написао, иако у Псеудокод кода.
А шта овај програм омогућило нам је да урадимо курс
је да пронађе Мајк Смит у телефонском именику.
А приметити у појединим линијама осам и 11 који су имали ту Иди на изјаву.
И у ствари, извесна језици Ц међу њима,
стварно имамо изјава да је буквално
идите на који вам омогућава да јумп на одређеној линији.
То је углавном пожељан, јер може се врло лако злостављани
и можете почети скакање твој Програм свуда насупрот
да користи врсту логика и контрола протока
да смо користили до сада са само петље и услови и слично.
>> Али можемо поједноставити овај алгоритам у псеудокоду код на следећи начин.
Уместо тога понавља или петље приступ
где смо стално враћамо и назад и назад да се построје три,
зашто не бисмо некако пунт и више углавном кажу у складу седам и 10,
Само замените та два пари линија са,
иф Смитх је раније у књизи ћемо
сеарцх фор Мике у лева половина књиге.
Иф Смит је касније у Књига, потражите Мике у праву
пола књиге.
И приметити већ на кружни.
Jel tako?
Ја сам у потрази за Мике у телефонски именик и онда
На крају сам ударио можда линија седам или можда линија 10
и моја упутство за себе је претрага за Мике у половини телефонском именику.
Па, како да тражите Мике?
Ја сам у сред потрази за Мике, зашто
ме некако слања у круг?
Али то је у реду, јер оно што је догађа на величину проблема,
како је написано у складу 7 и 10?
Ми нисмо само кажем претрагу за Мике, тражи Мике.
Ми конкретно кажеш шта?
Претрага за њега у левој половини десна половина која је ефективно
упола мањи од проблема.
Дакле, то је у реду да смо некако бављење овом циркуларности,
ово кружни аргумент јер барем смо
што је проблем мањи и мањи.
И на крају ћемо доћи до да такозвани основни случај гдје
имамо само једну страницу лефт-- као наш волонтер прошле недеље
дид-- смо имали једну страницу лево и онда не
треба да задржи у потрази за Мике Смитх зато што је било на тој страници
или није.
>> Дакле, како можемо имплементирати ову идеју, овај врста циркуларности у стварном код?
Па, можемо искористити технику да је опште познато као рекурзије.
А видели смо ово у Псеудокод за стапања врсту прошле недеље.
Подсетимо се да је ово Псеудокод за стапања врсте.
То вероватно је још једноставније него балон или избор или уметање врста
само у смислу једноставности са којима можете изразити.
>> Али то је зато што некако смо кружно си
каже, тражити нешто поновним потрази за њега.
Али ми трагамо или на лева половина или десна половина
и онда на крају смо спајања у овом случају.
Али овде, такође, са те две линије, сорт
смо поново имати ово Идеја рекурзије.
А конкретно шта то значи, у контексту алгоритма,
је да је алгоритам је рекурзивна ако користи или себе назива.
>> Или у смислу Ц, функција је рецурсиве-- функцију која се зове
Фоо је рекурзивни ако фоо, негде у свом изворном коду,
позива функцију самог фоо.
И то је лоше ако сви Фоо икада ради је себе опет и опет звати.
У реду је ако Фоо на крају стане, као што то чини спајање врста, говорећи, чекај мало,
Ако овај проблем је супер мали, на пример,
или Нашао сам га кога сам лоокинг фор, само се врати.
Не рекурсивно, не циклично се звати.
>> И тако, хајде да погледамо како се то заправо ради.
Зато ћу ићи напред и отворен до два изворног кода примера овде.
Од којих се зове сигма 0.
И то није уопште рекурзиван, али узмимо
Погледајте шта овај програм ради.
Ја сам извлачити све коментари из ње, али сви
изворног кода на ЦС50 је сајт има коментаре ако
Желим да прочитате кроз њу касније.
И хајде да урадимо пар разума проверава овде.
>> Дакле, на врху овог кодекса, имамо укључују ЦС50.х.
Шта то радимо?
Зашто је овде?
У погледу оправдане лаика.
Шта он ради?
Да.
>> ПУБЛИКА: Тако да функција Тоноване ради.
>> Давид Ј Малан: Тако да функција Тоноване ради.
Због унутар овог Филе, ЦС50.х, која
видећемо убрзо у Услови његовог изворног кода,
има гомилу функција децларед-- Тоноване, ГетСтринг,
и гомила Остали-- и ако ми имамо да Укључи линију,
преводилац Цланг није ће знати да она постоји.
И Исто важи и за линије два где је утврђен Инт
принтф, која је функција чувамо користећи доста.
Сада, линија четири изгледа мало Функи јер је то само један Линер.
Има зарез, не коврџава протезе, нема код унутар ње.
Али, шта је зовемо ово недељама раније?
Да.
Тако је прототип.
А зашто ми имамо прототип који изгледа
да будеш мало сувишни обично јер ми обично
видети функцију касније у досијеу, зар не?
Па зашто смо бих-- ти си само гребање главу, али ја ћу га узети.
Да.
>> ПУБЛИКА: [неразумљиво] Функција након што је главни.
Давид Ј Малан: Управо тако.
Тако да вас преводилац зна на крају ће дефинисати или спроведе
да функција након главни, вероватно.
Дакле, кланг и већина компајлери су врста глупи
а они само ће знати ста реци им.
А ако желите да користите функција се зове сигма,
боље научити компајлер да постоји унапред.
>> Сада, главни сама, чак и иако је гомила линија,
је прилично упознат надамо се до сада.
Има радити док петља чија је сврха у животу
Овде је очигледно да добијем поситиве интегер од корисника.
И само наставите да га гњавим или она док не сарађују.
Затим, у складу 16 Имам занимљив позив.
ИнтАнсвер.
Који на левој руци страни ми даје Инт
који могу сторе-- зове Ансвер-- који ће за складиштење, очигледно,
повратак вредност сигма.
Дакле, Сигма је само произвољно, али смислено име
да сам дао на функцији чија је сврха у животу
је да се један аргумент-- ми ћемо га звати Н у овом цасе--
и само да се износ од тог броја Плус сваки позитиван број који је
мањи од њега.
>> Дакле, ако прођем у броју 2 до Сигма, желим да додам 2, плус 1
Плус 0-- не 0-- тако да ми даје 3.
Ако прође у 3 до сигма, желим да Имам 3 плус 2 плус 1, што ми даје 6.
И тако даље.
Тако да само додаје се сви Бројеви мање или једнако на њу.
>> Сада, овде доле ја ћу да одштампате одговор.
Дакле, као брз проверу исправности, хајдемо да сигма 0-- тачка коса црта сигма 0--
и пусти ме укуцајте 2.
И заиста добити 3.
Пусти ме укуцајте 3.
Ја заиста добити 6.
А ако неко може да уради математику брзо, ако урадим 50 шта ћу добити?
>> ПУБЛИКА: [неразумљиво].
Давид Ј Малан: Па, не.
Али, 1.275 што је прилично близу.
Дакле, ово је резултат раде 50 плус 49 плус 48 плус 47 плус 46
скроз доле до 1.
Дакле, то је све Сигма ради.
Али да видимо како смо реализује сада.
Дакле, овде је сама функција.
И чини то изгледа нема било какве везе са рекурзије још.
У ствари, ми коришћењем стара школа техника.
Ја сам инитиализинг променљиву зове суму на нулу, онда имам форелооп овде,
и ја проглашење Инт под називом Ја, постављање је једнака 1--
мада сам могао поставити да једнако нула, али пошто радим додатак,
кога брига ако је нула или један.
То ће имати никаквог ефекта.
>> Тако сам итератинг толико дуго као што сам је мање од или једнака м, што
је аргумент који је усвојен у.
И онда сам само наставите инцрементинг И. и увид
петље све што радим чини збир Плус једнако И. И то је намерна.
Ја не желим да радим, у овом случај, као и суму плус плус.
Желим да заиста додати тренутна вредност И
која постаје све већа и већа и већи у текућој ТАЛЛИ.
>> А онда се вратим суму.
И тако одговор добија вредност суму.
А онда сам га одштампате.
Дакле, постоји могућност овде, Ипак, да се некако поједностави
овај код концептуално и врста ударца један је
смета во однос на једноставности иако
треба времена да средим од ценим зашто је ово
је моћан у овим малим примерима.
Овде је Сигма једног-- тако да је Друга верзија овог законика.
Све до врха је идентично тако да иста прича важи као пре.
Али сада хајде да погледамо имплементација сигма који
Ја сам сведено на само ово линес-- четири линије кода, заправо,
плус неки цурли протезе и бела простор.
>> Али шта ја то радим?
Ако је м мања од или једнака нула, морам да некако руковање
то супер једноставан случај.
И ако ми даш нула или ништа негативан што је само чудно,
Идем само да произвољно али доследно врати на нулу.
Не желим ово да ући у неки чудан Инфините
лооп због негативна вредност.
Дакле, ја само кажем, ако ми даш нула или мање, ја враћам нула.
>> Али то је добро, јер је то да једна страна именика
што је остало.
Ја сам гризе са врло специфичан проблем и не зове нешто рекурзивно.
Али, у складу 31, што да изгледа да радиш?
Заграде су само вођење ствари, надам се, мало јасније.
Али све што радим је сам м-- враћа год
ви ми-- плус предати вредност м-- је,
плус вредност од сигма м минус 1.
Дакле, шта то значи?
Ако ми даш број 3 као улаз, одговор желим да на крају
је 6 јер 3, плус 2 плус 1 ме 6 даје.
Али како ја мислим о како се то ради код?
Први пут ја зовем Сигма и ја проћи у вредности 3,
То је као да кажете на комад папира, овде је вредност 3
и ја сам прошао ово као сигма.
3 очигледно не мање од 0 до услов ако не важе.
Елсе доес.
Па шта да радим?
Желим да се вратим м, што је 3 плус сигма од м минус 1.
Тако да ме пратите ово.
Ја ћу ставити ово комад папира довн.
А шта вредност, бити јасно, да ли сам ће проћи
у сигма у овом тренутку у причи?
Који број?
2, зар не?
3 минус 1 је 2.
Дакле, само треба мало отпаци од папира овде.
Тако да сада Сигма је опет звао.
И намерно сам ставио ово доле јер је
нешто као паузирање та верзија приче
јер сада сам фокусиран сам на сигнал метара минус 1.
Дакле, м је 3, М минус 1 је 2.
Дакле, овде је 2 које сам прошао.
2 очигледно није мањи од 0, тако да предмет не важе.
Друго вратим м, која је ово ствар, као Сигма онога вредности?
Дакле, ако сигма од 1--, јер је м сада 2 до 2 минус 1 је 1.
Тако да сада имам само вредност 1.
Ја дајем само број 1 до функције сигма--
или ја овдје-- тако 1 очигледно није мање од нуле, још увек не примењује.
>> Ретурн 1, плус сигма чега?
0.
Дакле, дозволите ми да се сетим тога.
Ја ћу се вратити на то касније.
Сада ћу да наставим и јота доле броја 0, јер је то
мој аргумент или параметар.
Ја сам положио број 0 и на крају овај процес
да само себи понављао оглас наусеум не престаје, јер шта
да одмах урадити кад видим ово 0?
Враћам нула.
Сада имате да премотате причу.
>> Ако сада уназад кроз време, шта је најновија ствар
Ја сам да си буквално премотавање видео?
Идем да покупим најновији 1 и то ми даје 1 плус 0 је 1.
Ако наставим премотавање Прича да ће ми дати
2 плус ово трчање вредност, која је 1.
Дакле, то је 3.
И онда ћу задржати Премотавам.
Када сам први пут спустио број 3-- тако да је 3 плус 3 ми даје 6.
>> И сада, ако сте премотани видео до ове тачке,
ово је био веома Прво питање сам.
Када прошло 3, што је сигма 3?
Заиста је 6, збир Сви ови комади папира.
Дакле, ако је потребно мало времена да замотати ваш ум около, то је у реду.
Али сматрам да је мало-- њега био врло намерно да наслагане
ови бројеви на врху сваке друге.
То је нека врста који има мемори-- рекорд у времену,
као скрубером у видео, да заиста могу уназад у.
И ми ћемо се вратити на да метафора у само мало.
>> Али прво, испоставило се да постоји много штребера и Фунни Пеопле,
Претпостављам, на Гоогле-у.
Да ли би неко ко је веома добар у виду гооглинг
Долази само на тренутак и ми помогне да тражи нешто?
Веома, веома ниско кључ.
Неко ко никада није дошао раније, можда.
ОК.
Да?
Хајде.
Хајде доле.
Како се зовеш?
>> Сам Сам.
>> Давид Ј Малан: Сем, хајде доле.
Ово је исти.
Драго ми је да смо се упознали.
Хеј.
Дођи овамо.
Дакле, све што треба да урадите, ако можете, Сем, овде је Гоогле.
Да ли можете да потражите термин рекурзије?
Не квари.
>> И сада хајде-- да.
ОК Кликните да.
Боље кликните тога.
Ах, узми га.
Ne?
ОК.
Па хајде да урадимо неколико других.
Не толико везани академски овде, али да ли сте
икада тражили Гоогле за анаграм?
>> Сам: Не
>> Давид Ј Малан: У реду.
Сеарцх фор анаграм уместо рекурзије.
Како накриво.
Да ли си икад тражили накриво?
Дакле, ово је мало тешко види али надамо се еверитхинг'с-- реду.
То је само ти и ја ово уживање.
ОК.
>> Дакле, на крају, ово оне'с-- то је мало накриво.
Сада уради барела ролл.
Дивно.
У реду.
Велико хвала Сам.
Изволи.
Хвала.
>> Дакле, шта се дешава у свим од тих глупавих примера?
Па стварно, испод хаубе Гоогле милиони линија кода
очигледно је неколико глупо АКО услови који су у суштини
провјере да ли корисник има откуцан у овом фразом,
уради нешто што вероватно узео нетривијална количину времена
да спроведе само да бити забавно на овај начин.
Али то је све што проври до испод хаубе.
Али, наравно, рекурзије је више од геекиер
Пример међу оним посебним трикова.
И сигурно има други тамо као и да можда нису ни
открио још.
>> Дакле, погледајте, или размотрите сада Пратећи програм,
и свакако узмите било од ових на изласку.
Ја идем напред и отвори програм који је
ће покушати да замени две вредности.
Али, пре него одемо, хајде да урадимо ово.
Можемо ли да добијемо још једну волонтер, ја мислим?
Желите ли да се пријавим?
Ne?
Хајде горе.
У реду.
Дакле, твоје име је шта?
>> Лаурен: Лорен.
>> Давид Ј Малан: Лорен.
Хајде горе, Лаурен.
Дакле, Лорен је бити оспорава овде као следећи начин.
Драго ми је да смо се упознали.
Дакле, Лорен овде има пред њених две празне чаше.
И ми имамо неке оранге сок и мало млека
а ми ћемо ићи напред и урадите следеће.
Ми ћемо испунити ово.
Неколико грама млека овамо и хајде попуните мало сок од наранџе овде.
>> А испред свих ови чланови публике,
мењате две вредности ових пехара.
Ставите сок од наранџе у шољи млека и млеко у шољу сока од наранџе.
Како бисте ви урадили ако сте били у кући и имао приступ другим залихе?
Лаурен: Стави у другој шољи.
Давид Ј Малан: У реду.
Дакле, хајде да привремено променљива, ако хоћемо.
И хајде сад и имплементирати тај исти премештају поступак.
Тако добро.
Ставили смо ОЈ у привремена променљива, млеко у ОВ променљиве,
а сада привремена променљива у млеко променљиве.
ОК.
Дакле, врло добро урађено до сада.
Тако испада оут-- сматрају да Мислио само на тренутак.
Ево, само да га геек се мало, ово би био одговарајући Ц шифра
да смо спроводи.
Имали смо два улаза, А и Б, обоје из који ћемо само рећи за једноставност су
Инт је.
И приметио овде, ако желим да замене вредности две променљиве, А и Б,
ми заиста треба посредника, А привремена променљива, привремена чаша,
у који сипати једна од вредности тако да имамо чувар места за њега.
Али онда је код тачно као Лорен овде спроводи.
>> Сада, само да добијем мало луђи, испада
да можете урадити без привремени променљива.
Да бисте то урадили правилно, међутим, ми идемо морати да превари са неком хемијом.
Ми имамо неке додатне шоље овде.
Тако најближи ствар која изгледа као млеко и воду перхапс--
или млеко и ОЈ-- је да имамо неки вода, тако да ћемо напунити ово горе
са неколико унци чистом водом.
То је вероватно превише.
Да.
То је дефинитивно превише.
Сачекај секунду.
>> И сада имамо уље, које, колико се сећам из школског часа средњег хемије,
надамо не мешати са водом.
Али некако некако Изгледа као млеко и ОЈ.
Дакле, сада, без употребе привремена променљива,
можете да мењате те две вредности?
Дакле, уља иде у чашу воде, вода иде у нафтној шољу.
Лаурен: Нема друге чаше?
Давид Ј Малан: Нема друге чаше.
И нисам стварно тестирали раније ове године
тако да не знам да ли ће то заправо раде хемијски.
То није требало да се деси.
Да ли ради?
У реду.
Дакле, одвајање?
Dobro.
Сада морамо добити воде у другу чашу.
Паметнији Концентратори хемија то Вероватно ово боље од мене.
>> Лаурен: Вода је на дну.
>> ДАВИД Ј. Малан Тхе ватер-- који је био шта је кључ последњи пут смо ово урадили.
Мораш то учинити у правом редоследу.
Да.
То је ок.
Тако да сада имамо две шоље уља.
ОК.
То је ок.
Али, хемијски ако је ово радио од и--
>> Лаурен: Ово је вода.
>> Давид Ј Малан: То је углавном вода.
У реду.
Али то је и даље исти пехар као и раније.
Дакле, за то-- пробај тамо.
ОК.
Ово је добра употреба времена класе данас.
ОК.
Тако сада бисмо-- лепо.
Као врста.
У реду.
Дакле, врло добро.
Хвала на Лаурен.
Врло добро урађено.
>> Дакле, само да дува своје умове, и то је можда нешто
да се играју са, ако желите у ЦС50 ИД, можете, у ствари, замените две варијабле
без коришћења привремени цијели број.
А ово је одговарајући Ц кода.
А ако се сећате из прошле Среда, увели смо, ако на кратко,
неки нови оператери у Ц. и не ко сећате шта је мало шаргарепе
Симбол је, тај мали троугласти Симбол са тастатуре представља?
Шта битовима оператер?
>> ПУБЛИКА: ЕКСОР.
>> Давид Ј Малан: ЕКСОР.
Ексклузивни Или.
Дакле, ако желите, само за забаву на кући, дајући и б два произвољна
Вредности попут било еигхт-- и И би изабрати осам битну вредност.
Ако ово урадите са 32 бита, ћете врло брзо бити досадно.
Али само дати осам мало вредност која је свеједно, један или два,
и да б а сличан вредности.
А онда користите дефиницију од КСОР из прошле сриједе,
примењују тај мало по мало, сваки од те осам битова у свакој од А и Б,
и онда то баш на том коду.
И то није нетачно оно видите овде на екрану.
Заиста се своди три операције КСОР
и некако магично а и Б позиције ће разменити
без губитка информација.
>> Дакле, трик уље и вода је најближи стварни свет инкарнација
Могао бих да мислим на то да имитирају.
Али, то је сигурно лакше користите привремену променљиву,
као у овом случају овде.
И ово је још једна прилика кажу, такође, ова врста микро оптимизације,
као компјутерски научник бих, док је врста забаве
да се хвалим о томе како сте то урадили без као замене са додатним променљиве,
није све то убедљиво.
Зато да бисте сачували 32 бита, као у случају стварне инт,
није све то убедљив на систему где
можда користите десетине мегабајта или чак и више што су меморијске ових дана.
И у ствари, кад се за касније проблема сет
и имплементирати спелл Цхецкер па ћеш
може оспоравати да то урадите са ово као мало РАМ-а као мало
Време је то могуће на цомпутер-- вас и даље
има недељу дана да спроведе то-- ћете бих-- бићеш
изазов за смањење тих средстава.
И то је заиста једина Поводом овог семестра
где ћете бити охрабрени да се обрије са чак и најбољег учинка
Трошкови другачије.
>> Дакле, шта-- како можемо види ово у стварном код?
Пусти ме само напред сада и отвори пример
да намерно се зове Не свап јер не
у ствари мењате променљиве као што стварно може очекивати.
Дакле, хајде да погледамо.
Ево програм који нема ЦС50 библиотека дешава, само Стандардни И / О.
Сада имамо прототип за свап до врха који је управо
значи да мора да се касније дефинисати.
И овде је главни.
>> И арбитрарно означени Кс и И, односно, једна вредности и два
само зато што си мали и лако размишљати о томе.
А онда сам само гомилу принтфс где имам проверу исправности. к је 1
и и је 2 је вероватно шта ће ти рећи принтфс.
Дакле, нема магије до сада.
>> Онда ћу да тврдим принт Деф, замене Дот Дот Дот.
Ја ћу да позовем свап функција, пролази к и и.
И претпоставимо да је за сада Пребаци се тачно спроводи
као што је био малопре са привременим променљиве.
И тако сам смело тврдим, заменили.
к је сада ово, а и је сада то.
Али филе, наравно, се зове Но Свап.
Дакле, хајде да ствари видимо шта се дешава.
Ако саставити ни свап и онда чинити ./носвап, к је 1, и је 2.
Замене заменили.
к је 1, и је 2.
Дакле, то је заправо изгледа да буде погрешна, чак иако свап-- хајде да спустимо сада--
је управо реализује по Код Предложио сам малопре.
Дакле, нећемо добити фенси са КСОР ствари за сада.
То, такође, треба да ради само као са млеком и ОЈ,
али не изгледа да ради.
>> Дакле, хајде да поновимо.
Можда сам није га води у праву.
Дакле, хајде да се поново кандидовати Но Свап.
Можда Ја не.
Дакле, то једноставно не ради.
Дакле, хајде да мало исправности чек.
Пусти ме само напред овде у Свап и да додам, чекај мало,
а је% И / н и хајдемо плуг-ин за вредност.
Јер заиста желим да видим шта се дешава.
И заиста, ово је отклањање грешака техника
да би сте се користи у Радно време или код куће већ,
слично првој половини Дан Армендариз је видео у ПСЕТ3
где смо увели принт Деф као препоручљиво техника, барем
једноставне случајеве.
Пусти ме само напред и покрените да опет нема свап ./носвап.
>> Занимљиво.
Дакле, обратите пажњу шта чини да је истина. икс је 1, и једнако 2, али је 2 када је Б је 1.
Дакле, њих двојица некако је замењен али кии не добијају заменили.
Дакле, да буде јасно, шта се дешава се, овде имам к и и
а то су променљиве локалне у Обим главни, ја пролазу у кии
zameniti.
Сада, Свап, као посебна функција, је слободан да позове своје аргументе
или његов параметри нешто што жели.
Некој или бар или Кс или И или А или Б.
Само да буде јасно да су они није идентичан Кс и И пер се,
Ја сам рекао а и б.
Али можемо их назвати шта желимо.
>> И тако то изгледа Свап се пролази
к-- ТХЕ је-- и то је се прошли и-- ака Б.
Некако ове три линије су замене те вредности тачно
као и Лорен урадили са млеком и ОЈ.
Али када смо исписати вредности, А и Б
су заиста свап али ки година немају промене на њих.
Подсетимо се да су Кс и И су овде.
>> Дакле, можемо видјети преко Друга техника такође.
А и ово је техника уграђен у проблему сет три.
Идемо напред и урадите то у ЦС50 ИД ако већ нисте.
На десној страни смо ми имам ову картицу Дебуггер.
А ако отворите ово, постоји нека волшебни информације
која је бачена на вас на почетку.
Али хајде да задиркују ово поред веома брзо.
>> Дакле, један, видиш локалне променљиве.
Испада да изгради у ЦС50 ИДЕ, и много програмских окружења више
генерално, је дебуггер.
Алатка која вам омогућава да визуелно види шта се дешава унутар вашег програма
без прибегавања додајући принтфс и састављање и трчање
и додавање иф је и састављање и трчање, која је већ у радног времена
или куће, вероватно постаје прилично досадан.
>> Па ево, за тренутак, ми смо да да видим у реалном времену
вредности наших локалних променљивих.
Ми такође ћемо моћи да подесите оно што се зове Бреакпоинтс који
су могућности у свом програму да пауза извршење на одређеном линију кода
да сам радознао.
Jel tako?
Ови програми покренути у делићу секунде.
То је лепо за нас споријим људи да би могли да направите паузу, одвојите мало времена, види
шта се дешава око одређена линија кода
без програма орање кроз њега и дораде у потпуности.
Дакле, а Бреакпоинтс ће да нам дозволи да бреак и паузирање у одређеном тренутку.
>> Цалл Стацк је фенси начин рекавши које функције су тренутно
зову у овом тренутку.
Главни се увек прво зове.
Али ако Главни назива функција названа Свап,
ћемо заправо видети ово кула функција које су
позвао у обрнутом хронолошком реду.
Па да видимо то.
>> Идем да бисте умањили.
Идем да се вратим у моју кода.
И само зато што желим да буде педантан овде,
Ја ћу да наставим и кликните само са леве стране линије пет.
А то ствара црвену тачку.
И приметите на десној страни да дебагер зна, хеј,
Само сам рекао је тачка прекида у посебно носвап.ц линија пет,
на овој линији кода.
Дакле, дебагер зна да сам затражили су да се следећи пут
Ја водим програма паузирати извршење постоји него само
ради целу ствар супер брзо.
>> Дакле, сада ћу да кликнете на Дебуг дугме на самом врху ИДЕ
и да ће урадити следеће.
То ће отворити прво нешто Сцари лоокинг друга терминала виндов--
даљински отклањање грешака из домаћин што су и суцх--
па ћемо се вратити на оно што све то значи пре времена.
Али оно што је важно за сада је да је црвена тачка је погођен,
за отклањање грешака има намерно Застао екецутион--
не на тој линији по себи, али на први линија стварног кода на тој функцији.
И то је разлог зашто линија седам је Сада је наглашено у жуто.
>> А сада да бацимо поглед на десној страни.
Изгледа да, по дефаулту, лепо довољно, к има какву вредност?
0.
И година има какву вредност?
Нула.
И то је за очекивати у смислу да је к и и-- да жута лине-- има
још није извршена.
Дакле, к не би требало да има вредност 1.
То можда има неку другу вредност, тзв смеће вредност.
И имамо среће да је у зеро у овом тренутку, у суштини.
>> Дакле, сада постоји само неколико дугмад морамо да бринемо
о томе када дебуггинг на овај начин.
Обратите пажњу овде, имамо дугме Плаи.
И ако будемо играли или притисните наставити, то је само
ће трајати до остатак програма
или док не удари друго тачку прекида.
Али ја нисам било који други сет Бреакпоинтс тако да је само
ће трајати до краја.
Та врста пораза у Сврха гурају около.
>> Умјесто тога, ми је стало Ове иконе десно.
И ако лебде над их, као и ти треба,
видећете мале типс-- савете алата.
Ово је корак више.
Сада то не значи Скип следећи линија кода.
То само значи да га изврше и прећи на следећи, прећи на следећи,
прешли на следећи.
Другим речима, виа то дугме, могу да ходам
кроз мој број један корак у исто време.
Ред по ред, буквално.
Сада, са десне стране да, има још један
да ћемо видети за који тренутак.
Ово је такозвани Степ Инто икону која је
ће ми дозволити диве у неку другу функцију.
Али хајде да видимо у само тренутак.
Зато ћу да кликнете на корак преко.
И сада приметио, као што сам кликните ово дугме у горњем десном углу,
држите очи отприлике у локалној Променљиве и види шта се дешава са к.
к је сада 1, јер је жута линија је сада извршено
и ми смо прешли на линији 8.
И у само тренутак и би било пожељно да постане 2.
>> Сада, ништа што занимљиво дешава мало.
Све ово је је иф.
И приметио, по мом секундарном терминала прозор, видим излаз за штампање деф.
А сада морам да се направи Одлука као програмер.
Могу корак преко ове линије код, извршавајући али не
се занима шта је унутра.
Или ја заправо могу да уђу у њу и унутра саме Свап.
Дакле, хајде да урадимо ово друго.
>> Пусти ме само напред и кликните Не Степ Овер, али корак у.
Обавештење, одједном прозорске промене
да нагласим први линија кода у Свап.
То је линија 21.
И сад, шта је врста Функи је то, ако погледате овде, као што је очекивано,
зарез б је 1 и 2, респективно.
Зашто је темп 32,767?
Подсјећајући да је темп, попут празан чаша малопре,
Овде се проглашава он лине 21.
Зашто 32,000- Мислим, зашто је само нека чудна вредност?
Да?
>> ПУБЛИКА: Није покренут.
>> Давид Ј Малан: То је није покренут.
Дакле, наш рачунар увек има физичке меморије.
Увек има физички РАМ.
И увек постоји Зеро и један је тамо, зар не?
Зато што смо користећи наш компјутер по цео дан,
да ли користите ЦС50 ИДЕ или сервери цео дан.
Тако да памет или има неке нуле или неко је или неке нуле и јединице.
Без обзира да ли је или Не си их користите.
Не можете само празно простори где желите бита.
Они су или нула и јединица.
>> Тако испада да је темп, јер ми нисмо га инитиализед ипак,
имамо те 32 бита али нисам је иницијализују на све познате вредности.
Дакле, шта год они били највише Недавно користи за-- тих 32 битс--
Ми само видимо артефаката неких претходна употреба тих посебног 32
бита.
Чим сам кликните Степ Овер ипак, Фуј, Температура ће добити вредност 1.
И ако то урадим поново, а је ће бити дат вредност 2
а онда ће б добити вредност 1.
>> И шта је лепо сада на Ова тачка у причи
је да је дебагер показујући ми супер полако
у мојој темпом, што стање Свап је.
Али приметите на врху овде, огласној да је позив стек ствари
има два слоја на њега.
Сада онај који је истакнут као Размена, ако кликнете на Главни уместо тога,
Обратите пажњу како локалне променљиве мењају јер је програмер само да хоп
се и иди у било коју различитог обима.
Дакле, иако радимо све ово раде и исправно замене А и Б,
ако сам и назад иде између Свап где је 2 и б је 1, а Маин,
Главни је погођена уопште?
Ne.
Дакле, шта је овде понети?
Па, испада да свако доба зовете функцију као Свап,
и прођете ИТ аргументе, шта ви пролази у Свап функцију
у овом случају је копија од тих аргумената.
Дакле, ако Кс и И су сваки респективно 32 бита, што Пребаци се добија
је два нова локална варијабле, или аргументи,
назива и б-- али они су произвољно намес-- али образац нула
и оне унутар А и Б су постројили бити исти као кии
али они не и су иста ствар као и к и и.
>> То је као да Главни је на свом парчету папир број 1 и 2 за Кс и И,
и онда када се руке које комад папира на Свап,
Пребаци врло брзо добија своју оловку, записује
1 и 2 на свом папиру, руке назад оригинални ки на почетак
и онда ради сопствене Ствар са а и б.
И ово је сада важно, јер Супер то има импликације нетривијална
за стварно писање исправног кода јер се чини да не могу заменити
две варијабле.
>> Написао сам исправан Свап функцију.
Ми смо га реализује уз Лаурен као тачан замена функција у стварности,
али изгледа ништа од тога ствари ако не можеш стварно
свап две вредности трајно.
Зато морамо други пут да заиста добити на ово,
и морамо бити у стању да у ствари реше овај проблем.
И испоставило оут--, па ћемо доћи назад на овом сликом
пре лонг-- ово је један од начина да можда извући меморију рачунара.
То је само правоугаоник.
Могао би да га извући било број начина, али је
погодан да га извући као Правоугаоник из следећег разлога.
>> Идемо да почне данас и даље говоримо о тзв стек.
И стек је само комад од РАМ-- комад мемори--
који функционише имају приступ када се зову.
И тако испада да у на дну ове стека
је место где сви главних локалних променљивих је и орг Ц и цом В и све те ствари
ће ићи по дефаулту. А ако Маин позива неку другу функцију као Свап,
добро, Замени ће добити другу слој меморијске изнад њега.
>> И тако само да вам дам брз летимичан слика ово, ако одем преко овде--
и дозволите ми да одражавају ово на изнад као па-- оно што стварно јесам,
Ако нам је стало само о дно ову слику за сада,
је да када сам покренути програм Главни и бива зове,
Главни даје комад РАМ-у мом компјутеру који је
на дну ове тзв стек.
И ја ћу да га нацртати намерно као квадрат.
Дакле, то је као 32 бита или четири бајта.
А ако ова основна функција има променљива зове к са вредношћу 1
а има и променљиву названу година са вредношћу од 2, која је
као узимање овог делић меморије која Главни је дат од стране оперативног
Систем и подели је тако да прва локална променљива иде овде,
друга иде овде, и то је то.
>> Када Главни зове Свап, Замени добија своју кришку меморије
да ћемо извући овако из оперативног система,
и да ће имати своје сопствене локалне променљиве на бази
на нашем имплементацији раније са локалним варијабли
и б да на почетку гет вредности 1 и 2.
Али онда, чим свап код извршава,
и Лаурен заправо измењује ОВ и млеко, шта се дешава?
Па, ово је 2 постане 1, ове 1 постаје 2, и, успут,
постоји Температура променљива која је као користио ту цело време да на крају
одлази.
Али то није битно колико посао који обављате
у овој линији од-- у овом меморијски простор, Кс и И су потпуно нетакнуте.
>> Зато морамо неки начин давања Свап и функције као што су њега
тајна приступ, ако хоћете, да Функције као-- у меморију као к и и.
Дакле, хајде да погледамо пример који помаже
да видимо тачно шта је било дешава цело време.
Ја ћу ићи напред и отвори упоредите Зеро.
И ја ћу затворити наш отклањање грешака, идем
да затворите овај Сцари лоокинг поруку праведне каже, чекај мало,
ви сте у средњем отклањање грешака.
Идем да сакрије ову картицу овде само да се вратимо на једноставности.
Зато не брините ако ГДБ је убијен.
То само значи да програм има је отказ, намерно у овом случају,
од мене.
>> И сада упоредите Нула то ради.
Ја користим ЦС50 библиотека у Стандардни И / О.
Имам главну функцију која први каже, да кажем нешто, и добија низ.
Онда га опет и каже добија још једну жицу.
И приметите да су ове две жице се зове С и Т, респективно.
И сада овај програм, упоредите Нула, његова сврха у животу,
то би требало да ми кажеш, сам унесите исту ствар?
И тако Враћам се Веек Оне.
Ја користим једнак једнак оператор који је оператор квалитет.
Није оператор задатак, Оператор једнакости.
Ја сам само у односу С и Т.
>> Па хајде да ствари иду напред и урадите то.
И ја ћу ићи напред и да упоредите Зеро.
Ја ћу да урадим ./цомпарезеро.
И ја ћу да одем напред и да кажем нешто
као, хајде да урадимо маму малим словима и како о мами у великим словима.
И наравно, ја типкам различите ствари.
У реду.
То је за очекивати.
>> Хајде да пробамо поново.
Оба пута учинити мала слова, мала слова.
То изгледа супер идентично са мном.
Ентер.
ОК.
Можда је то само чудно, јер то се не свиђају моје граматике.
Па хајде да урадимо капитални МОМ, капитал МАМА, идентични.
Различите ствари.
>> Зашто је то тако?
Па, шта се заправо догађа на испод хаубе овде?
Дакле, хајде да се вратимо преко овде на тренутак
и размотрити шта ГетСтринг заправо ради.
Када позовете ГетСтринг, то је функција да
сами написали и некако постаје низ знакова од корисника.
И претпоставимо да је прва Време ја зовем ГетСтринг, који ми даје
комад меморије која изгледа овако.
И ако сам откуцао у свим малим словима М-О-м-- и шта се после тога?
Само брзо проверу исправности.
>> Бацксласх нула.
Знамо да.
И сећам се да смо играли около са именом Замила је
и гомила других имена када Роб је овде у потрази
шта се дешава унутар меморије.
Дакле, та прича је потпуно исти.
Ово је шта ГетСтринг се враћа у мени.
Сада, мој код малочас складиште повратак вредност ГетСтринг
у променљивој се зове ова.
А онда други пут сам га назвао, Ит чувају у променљивом зове т.
>> Дакле, ако одем тамо, морам да скрене ову локалну вариабле--
и ја ћу генерално драв стринг као само-- ћемо
позовите га успела-- као мали квадрат овде.
А сада, сомехов-- како се мама уђемо ове променљиве с?
Па, морамо да се вратимо на прву принципима овде.
Шта се заправо ГетСтринг враћа?
>> Тако испада да је М-О-м обрнута коса црта нула, и било који број
других стрингс у меморији као Замила и Роб или Енди или неко други,
су наравно у нашим РАМ или меморија рачунара.
А твоја памет је као-- имате свирка РАМ-а, две свирке РАМ,
или милијарду или две милијарде бајтова, или можда чак и више ових дана.
Дакле, претпоставимо, за данашње потребе, да није битно како смо бројати
их, али можемо број Сваки оних милијарди или две милијарде
или четири милијарде бајтова.
>> И рецимо само произвољно рећи да ово је први угриз, други ујед,
трећи, четврти.
Ја намерно не користи нула за данас, али ћемо се вратити на то.
Другим речима, ако је ово Први пут сам помоћу програма,
Само се посрећило и први залогај је на локацију један онда два
затим три од четири.
И ако је цртао, број бокса две милијарде ће бити скроз овамо.
>> Па шта мислиш, онда, ГетСтринг заправо враћа?
То не враћају П-О-м косу црту нула по себи, јер је очигледно
не може да стане у кутију коју сам нацртао.
Дакле, шта друго може да ГетСтринг ствари се вратити сви ови недеља?
Одговор је на Одбор овде негде.
Не може да стане П-О-м косу црту нула, па шта би уместо смисла?
Ако сте имали да будемо супер паметни, стављајући на тзв инжењеринга шеширом,
шта би могло да се вратите?
Шта је најмање количина информација можете да се вратите да би још
пустити да пронађете М-О-м у меморији?
Да?
>> ПУБЛИКА: Један.
>> Давид Ј Малан: Један.
А зашто једно?
ПУБЛИКА: Зато што ће рећи ти где да идете [неразумљиво].
Давид Ј Малан: Управо тако.
Ја само да се врати адресу од низа који сам добио.
Адреса у овом Случај је локација један.
Дакле, оно што је заиста се складишти у успела-- и сваки низ променљива тако фар--
је управо био адреса тог низа.
>> У међувремену, ако ја зовем ГетСтринг други пут и И
укуцајте буквално исти ствар-- М-О-М са ловерцасе-- М-О-м
и још једна обрнута коса црта нула, а сада можда мој програм је
се кандидује за неко време па можда ово је 10, ово је локација 11, ово је 12,
ово је 13.
Рачунари који користе неки други меморија из било ког разлога.
Шта сада иде у мом секунди променљива у свом програму т?
10.
Baš tako.
>> И тако, када погледамо изворни код овог програма
где Ја само покушавам за поређење две вредности,
је с једнака једнак т, што је очигледно људски одговор?
Само не зато што 1 није једнако 10.
И тако овде лежи прилика за нас стварно
да се вратимо, опет, први принципи и размислите, добро,
шта се дешава испод хаубе?
Причали смо о битови и бајтови и меморија,
али је заправо корисно да схватимо јер када зовете ГетСтринг,
иако мислимо на то враћа М-О-м или стринг маму
или Енди или Замила или слично, технички
то је само враћа адресу те меморију.
>> Али то је у реду.
Зато како да знам где је стринг завршава?
Кад бих само ја дао почетак?
Па, косих нула, зар не?
Само у линеарном времену И цан одштампати са штампање деф М-О-м.
И чим видим косу црту нула, не занима ме где сам почео,
Ја већ знам имплицитно где треба да се заврши.
>> И тако данас обележава бегиннинг-- и пусти ме да ово драматично јер ми
је прошао кроз многе невоље у набавила овде обуку вхеелс--
тако да данас точкови почну обуку да га скинем и да открије на леаст--
>> [АППЛАУСЕ]
>> То је добро вреди путовање да Таргет јутрос, зар не?
Дакле, сада-- постоји, испоставило напоље, постоји таква ствар као стринг.
Стринг не постоји.
То је синоним које смо имали унутар ЦС50 библиотеке.
Од сада ћемо да почну да позивају С и Т не жице него цхар звезде.
И Чар звезда ћемо задиркивати осим пре времена.
Али ово је рећи, да чак и ако наставимо
користећи ГетСтринг за сада, технички Требало би
бити рекавши Чар звезду и цхар звезда.
>> И испоставило се шта је звезду ће да означи нешто
назива показивач или адреса.
А у ствари, теасер за шта је пред нама
ово 20 друго снимак из наше пријатељ Ник Парланте на Стенфорду
који је, пре доста времена, провести смешан количину времена,
најбоље што могу рећи у свом кухиња или његов подрум,
што Цлаиматион увођење у свет
карактер по имену Бинки са којима ћемо
да се уведе следећи пут да показивачима.
Дакле, овде је преглед онога што долази.
>> [ВИДЕО РЕПРОДУКЦИЈА]
>> Хеј, Бинки.
Пробудити.
Време је за показивач забаве.
>> -Шта је ово?
Сазнајте више о тројкама?
Ох, добро.
>> [Крај репродукције]
Давид Ј Малан: И у том смислу, видимо се у среду.
У реду.
Ко је плес?
Хајде.
Ко је плес?
Желиш да се то почело?
Ја ћу гет ит стартед.
Воооо!
>> Лаурен: Слатка фенси Мојсије.