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