Выступоўца 1: Добра. З вяртаннем. Гэта тыдзень Два CS50, і ў нас ёсць да гэтага часу выкарыстоўваюць функцыі, але значнай меры ўзяў іх як належнае. Мы выкарыстоўвалі Е, які мае Пабочны эфект друку рэчы на ​​экране. Мы выкарыстоўвалі атрымаць-INT, атрымаць плаваць. Але што, калі вы на самой справе хочаце стварыць свае ўласныя функцыі, а некаторыя з Вы, магчыма, ужо пачалі зрабіць для Праблема Усталюйце адзін, хоць не з'яўляецца абавязковым? Ну, давайце ісці наперад і вярнуцца да гэтага Праблема толькі запытаць у карыстальніка іх імёны і друку нешта на экране, але паспрабуйце для выключэння некаторых супольнасці, што мы бачылі ў нашым кодзе да гэтага часу. Такім чынам, што я маю на ўвазе наступнае. Я збіраюся пайсці далей і стварыць Новая праграма, проста патэлефануеце гэта hello.c як звычайна. Я збіраюся ісці наперад і даць сабе ўключаюць у сябе стандартныя io.h на самым версе. Я збіраюся таксама даць сабе прэвентыўна CS50 бібліятэку так, каб Я не атрымліваю крычаў на кампілятар. І цяпер я збіраюся ісці наперад і аб'явіць Інтэрнэшнл, асноўным, несапраўднымі. А потым тут, гэта тое, дзе я хачу пачаць аўтсорсінг функцыянальнасць некаторыя іншыя функцыі, што я сам збіраюся напісаць, але гэта не У цяперашні час існуюць. Напрыклад, выкажам здагадку, што я хацеў напісаць функцыю, якая дазваляе мне раздрукаваць Прывітанне, коска, і Затым некаторы імя карыстальніка. Замест таго, каб працягваць рабіць Е Добры дзень,% S, не было б нядрэнна, калі б было проста функцыя называецца Е не для друку, але імя? Такім чынам, іншымі словамі, я хачу, каб мець магчымасць напісаць праграму, якая робіць трохі нешта накшталт гэтага. Па-першае, я хачу сказаць Е вашай імя, тым самым прапаноўваючы карыстачу дайце мне яго ці яе імя, а затым я збіраецца выкарыстоўваць знаёмыя з радок абвясціць радок. Дайце мне зменную тыпу радок, называем гэта з, і захоўваць у тым, што Вынік выкліку атрымаць радок. Але цяпер у мінулыя тыдні, я б Некалькі стомна зроблена прывітанне,% S / N. А гэта значыць, мы бачылі ў гэтым Напрыклад кучу раз, і гэта трывіяльны прыклад, таму што ёсць толькі адна радок кода так што гэта сапраўды не вялікая справа для працягвайце ўводзіць зноў. Але выкажам здагадку, што гэты радок кода на самай справе становяцца ў цяжар, ​​і гэта не адзін радок кода, але гэта 10 радкоў кода пару тыдняў з гэтага моманту, А ты проста стаміўся капіявання і ўстаўкі або перадрук той жа код. Не было б нядрэнна, а не рабіць Е прывітанне,% S і г. д., не было б добра, калі б былі проста Функцыя называецца друкаванымі літарамі, што прымае аргумент - іншымі словамі, ён прымае ўваход - а затым з коскі. Так, што функцыі, ці не так б добра, калі, якія існавалі? Тады б мне не прыйдзецца турбавацца аб што Е ёсць, якой% з і ўсё гэтыя складанасці, якія Не ўсё, што цікава. Яны карысныя. Так надпісам назвы, на жаль, не было вынайшаў каля 40 з лішнім гадоў таму. Ніхто не думаў, каб напісаць яе. Але ў гэтым уся хараство наяўнасці Мова праграмавання, як і ў Драпіны можна вызначыць прыстасаваныя блокі, так што У З і найбольш любой мове, ці не так вызначыць сваю ўласную функцыянальнасць, можа Вы можаце вызначыць ўласныя функцыі. Таму, нават калі мы атрымліваем па асноўных аўтаматычна бясплатна, мы можам аб'явіць нашы ўласныя функцыі. Так што я збіраюся зрабіць некалькі нумароў тут наверсе, і я збіраюся абвясціць маё ўласныя функцыі, якая будзе выглядаць трохі дзіўным спачатку, але мы прыедзем вярнуцца да гэтага ў бліжэйшы час. Я збіраюся сказаць, пустэчу, тым самым Паказвае, што функцыя робіць нешта, мае пабочны эфект, але не вяртае мне нешта ў гэтак жа, як атрымаць або дзесятковага атрымаць радок сама па сабе. І я збіраюся даць гэтую функцыю імя друкаванымі літарамі, і я збіраюся паказаць, што гэты хлопец збіраецца ўзяць радок, а я буду называць, што Радок імя. Я мог бы назваць гэта ўсё, што я хачу, але я хачу, каб мой код быў самодокументируемыми. Іншымі словамі, калі адзін з вас былі адкрыць гэты файл і прачытаць яго, вы можаце роду заключыць з назвы, што уваходнага якую ролю ён павінен гуляць. А цяпер ніжэй, што, я збіраюся адкрыць фігурнай дужкай і закрытых фігурнай дужкі, і так заўважаю я ішоў той жа ўзор на лініях з чацвёртага па сёмы, як Я сачыў за добрую тыдзень плюс Цяпер, скажам, паміж дзевяццю і ліній 14, якія складаюць асноўны. Іншымі словамі, надрукаваць імя Іншы функцыяй. Зараз, кампілятар не будзе ведаць, паварочваецца назваць гэта аўтаматычна таму што я літаральна толькі што прыдумаў, але ён будзе ведаць яшчэ называюць асноўным аўтаматычна, а затым, вядома, у радок 13, я заклікаю маіх уласных функцый. І таму, што я заявіў, што функцыі на чацвёртай радку перад асноўным, гэта будзе вучыць кампілятар тое, што цытата, канец цытаты ", расшыфроўка подпісы" азначае і тое, што ён павінен рабіць. Так я накшталт надаўшы яму новы карыстацкі блакаваць ў кантэксце, скажам, драпіны. Так што тут, я магу паставіць, што вельмі часта або паўтаральныя структуры кода я трымаю пісаць у класе, Е % S прывітанне,% S / N ", - Што я хачу паставіць тут? S? Так я хачу паставіць імя ў гэтым кантэксце. Так заўважыць трохі дыхатаміі тут. Таму што я абвяшчаю маю ўласную функцыю і я некалькі ўмоўна называецца раздрукаваць імя, а таму, што я названыя ў дужках, што гэта Функцыя прымае адзін аргумент тыпу які з'яўляецца радком - так гэта слова або сказам, ці нешта накшталт гэтага - і Я тэлефаную, што імя аргументу, што азначае, адзіная зменная, якая знаходзіцца ў сферы, так бы мовіць, гэтае імя. S існуе толькі паміж тым, што два фігурныя дужкі, вядома? Ну сапраўды, як праз лінію 10 14, гэтак жа, як у панядзелак не можа выкарыстоўваць S, але што я магу зрабіць, гэта прайсьці S да друку імя. Надрукаваць імя менавіта так адбываецца, каб даць яму псеўданім, сінонім, мянушка, назваўшы яго імя, і цяпер выкарыстоўваць яго ў гэтай лініі. Так што цяпер дазвольце мне захаваць гэта, змяншэння. Дазвольце мне пайсці далей і зрабіць прывітанне. Выглядае добра. Ці не выплёўваць любыя памылкі. . / Прывітанне Enter. Як мяне завуць? Давіда. І прывітанне Давіду. Так што не ўсё, што цікава, Але падумайце цяпер. Зараз у вас ёсць, што ж інгрэдыенты як мы рабілі ў пустым месцы, каб зрабіць нашы ўласныя функцыі. Але ёсць трохі Гоча. Выкажам здагадку, што я сапраўды не думаў, гэта праз і я фактычна без сапраўды думаў пра гэта пісаў гэтая функцыя тут. Адчуваецца цалкам разумным. У драпін няма паняцця знаходжання ў вашых сцэнарах. Вы можаце падняць адзін тут, адзін тут, адзін тут, і ён можа пачаць , Каб выглядаць трохі брудным, калі вы не пакладзеце яго акуратна, але гэта не так мае значэння, дзе фізічна скрыпты былі на экране. На жаль, у C - і гэта ў адрозненне ад мовы, як Java і Python і іншыя, якія вы можаце быць знаёмыя с - на жаль, у C, парадак не мае значэння, таму што гадзіны зараз адбудзецца. Функцыя па змаўчанні, што адбываецца запусціць, з'яўляецца, вядома, асноўным. Галоўнае збіраецца патэлефанаваць друку імя на лініі восем, але, на жаль, кампілятар нават не будуць ведаць, што друкаваныя назву існуе, пакуль не дабярэцца да лініі 11, якая, на жаль, будзе занадта позна. Так што давайце робяць прывітанне. А цяпер, чорт пабяры, дзве памылкі генеруецца. Так што цяпер дазвольце мне пракруціць да самага Па-першае, як мы заўсёды павінны рабіць, і заўважыце, што ён крычыць на мяне, "Няяўных дэкларацыя функцыі надрукаваць імя. " Такім чынам, мы разгледзелі гэта паведамленне раней, няяўная дэкларацыя функцыі. Калі мы бачылі такую ​​памылку? Калі я не ўключаў бібліятэку. Калі я забыўся cs50.h і я хацеў бы атрымаць крычаў на для атрымліваю радок або атрымаць Int. Але ў дадзеным выпадку, гэтая функцыя друку імя не ў бібліятэцы, ці не так? Гэта літаральна ў гэтым файле, так што што на самой справе праблема? Ну на жаль, у C, гэта зойме ў вас літаральна так неверагодна, што калі вы хочуць функцыя называецца друку імя існуе, вы павінны альбо ажыццяўленне , Якія функцыянуюць на самым версе код так, каб яна была даступная для зніжэння функцыі, але шчыра кажучы, гэта становіцца неакуратна вельмі хутка. Асабіста я, як пакласці першы асноўны таму што тады гэта вельмі ясна, што гэта Праграма робіць на першы погляд. І плюс, вы можаце патрапіць у дзіўны кут выпадках, калі, калі X хоча назваць у, але маглі б назваць Y X, вы проста фізічна не можа на самай справе паклаў адну над іншым. Але аказваецца, у C, мы можам вырашыць гэта вельмі проста. Я збіраюся пакласці трохі прасторы тут, і я проста хачу, каб прэвентыўна, хоць і некалькі залішне, навучу кампілятар, які існуе функцыя называецца друкаванымі літарамі, ён прымае радок, і я буду называць яго называюць кропкай з коскі. Так што гэты час у чарзе чатыры, якія мы раней не бачылі, гэта дэкларацыя імя функцыі друку, але гэта толькі абяцанне, што гэтая функцыя будзе у канчатковым рахунку быць вызначаны, у канчатковым рахунку рэалізаваныя. Гэта цяпер я магу пакінуць у спакоі, таму што Цяпер гэта вызначэнне, рэалізацыі, накшталт апошняй мілі рэалізацыі гэтага пэўнай функцыі. Так шчыра, што гэта глупства, гэта раздражняе, але гэта шлях С, і гэта таму што ён прымае вас вельмі літаральна і, як кампутар прама вынікае, таго, што менавіта тое, што вы скажаце ёй рабіць, і так, што парадак важны. Так што майце гэта на ўвазе, і зноў, пачынаюць заўважыце паўтарэння ўзораў. Цалкам верагодна, вы будзеце, калі вы яшчэ не Ужо цяпер пачынаюць сутыкацца з паведамленнямі як гэта, якія на першы погляд здаюцца зусім загадкавым, але калі вы пачынаеце глядзець на гэтыя ключавыя словы, як "Няяўных дэкларацыя", згадка пра функцыя ў дадзеным выпадку - і, шчыра кажучы, вы часам нават атрымаць трошкі зялёных моркву сімвал, які кажа вам, дзе Верагодна, праблема ёсць - Вы можаце пачаць працаваць ваш шлях праз яшчэ ня было бачна паведамленні пра памылкі. Ёсць пытанні па напісанні ўласную функцыю такім чынам? Давайце рабіць тое, што гэта трохі больш пераканаўчым. Замест таго, каб проста рабіць тое, што мае Пабочны эфект друку, адпусьці мяне наперад і захаваць новы файл, і мы называем гэта positive.c, нават калі гэта будзе крыху па-іншаму у параўнанні з мінулым часам. І на гэты раз, я хачу паўторна рэалізаваць Напрыклад positive.C апошні раз, якое як прымусіць карыстальніка, каб даць мне станоўчае цэлае лік. Але я павінен быў выкарыстоўваць дзесятковага атрымаць апошні раз. Хіба не было б добра, калі было Функцыя называецца атрымаць Пазітыўны Між што я мог проста перадаць гэтую кавалак функцыянальнасці? Такім чынам, розніца тут мы будзем рэалізацыі атрымаць станоўчыя Інтэлект, але ў адрозненне ад друк імя, якое мае пабочны эфект - ён не вярнуў мне нешта накшталт лік або радок - Пазітыўны Між атрымаць, вядома, збіраюся вярнуцца, мы спадзяемся, станоўча Int. Так давайце зробім гэта. Уключыце cs50.h, ўключаюць у сябе стандартныя io.h. Тап_п несапраўднымі. І цяпер тут, я збіраюся ісці наперад і скажам, Інтэлект, называюць яго N, роўная атрымаць станоўчыя Int. І гэтак жа, як атрымаць дзесятковага ўжо існуе таму што супрацоўнікі яе напісаў, я збіраюся выкажам здагадку на хвіліну, што атрымаць Пазітыўны Між існуе, і цяпер я збіраюся ісці наперад і сказаў Е, дзякуй за% I / N ", N. Так што цяпер, калі я кампіляцыі гэтай праграмы, што будзе адбывацца ў маім тэрмінале акно ў ніжняй частцы экрана? Я збіраюся атрымаць, што, верагодна, такая ж самая памылка, як раней. Так давайце паспрабуем гэта. Зрабіць станоўчым. І зноў жа, невідавочнае аб'яву функцыі, атрымаць станоўчыя Int. Таму мы можам дазволіць гэта ў некалькімі спосабамі. Я збіраюся захаваць яго простым і проста паклаў маю заяву тут і атрымаць станоўчыя Int. Мне патрэбна так званая подпіс. Подпіс ставіцца толькі да эстэтыкі Першы радок праграмы. Такім чынам, што трэба атрымаць станоўчыя дзесятковага наўзамен? Так Int. Я маю на ўвазе ў ідэале, ён вернецца нешта накшталт Пазітыўны Між, але гэта не існуе. Мы не бачылі, што сярод нашых дадзеных тыпы, так што мы маем справу з Тое, што ў нас вельмі мала Тыпы дадзеных для працы з. Але мы можам вярнуцца цэлалікавых і проста давяраць, што яна будзе станоўчай. Гэта будзе называцца атрымаць станоўчыя Int. І зараз, як пра яго аргументы? Яно прымае любы ўваход? Ці трэба любы ўваход? Таму не трэба ведаць Загадзя нічога. Атрымаць радок не, атрымаць дзесятковага няма. Printf робіць - для гэтага трэба мець некаторыя ўваходных дадзеных, якія перадаюцца ў яе - і раздрукаваць імя неабходныя некаторыя матэрыялы, але атрымаць Пазітыўны Між няма. Так што я буду відавочным сказалі кампілятара несапраўднымі. Пустата з'яўляецца адсутнасць што-небудзь яшчэ. Так што нічога не азначае пустотных адбываецца ўнутры тых дужкі, кропка з коскі. І зараз у ніжняй часткі майго файла - і зноў жа, я проста выгляд анальных Тут паставіўшы асноўнай у верхняй частцы, які добрая практыка, таму што такім чынам, у любы час вы ці нехта іншы адкрывае файл, функцыянальнасці тут жа. Вы можаце акунуцца ў з нуля. Так што цяпер я збіраюся дубляваць гэты, атрымаць Пазітыўны Між пустата, але я не стукну коскі цяпер. Я збіраюся адкрыць фігурныя дужкі, і цяпер мне трэба пазычаць некаторыя ідэі з панядзелка. Такім чынам, як вы памятаеце, мы зрабілі нешта Падабаецца наступнае час нешта было праўдай. І што ж мне рабіць? Я зрабіў нешта накшталт даюць мяне станоўчае цэлае лік, Трохі радку. Я мог бы выкарыстаць любыя словы, якія я хачу. І тады я выкарыстаў тое, што? Int N роўна атрымаць Інтэлект, Ніякія довады на яго. І заўважыце розніцы. Калі вы выклікаеце функцыю, калі вы карыстаецеся функцыі, вы не ставіце ў пустэчу. Вы рабіць гэта толькі пры аб'яўленні функцыі, выкладанне, што кампілятар ён павінен быць гатовы. Так што вам не трэба пакласці анулявання туды самі. А зараз тое, што было маё стан? Добра, п ня роўна станоўчым, але гэта толькі псеўда-кода. Так як я магу выказаць гэта больш акуратна? Такім чынам, меншае або роўнае нулю. Такім чынам, яшчэ раз звярніце ўвагу, што вы можаце зрабіць менш або роўна. Нават калі гэта два асобных сімвалы, вы можаце зрабіць гэта на клавіятуры як такой. Але ёсць яшчэ памылка, Я аблажаўся мінулы раз таксама. Я павінен абвясціць - дакладна. Я павінен аб'явіць па-за N цыклу. Так што мне трэба паставіць п да тут, і я не хочаце паўторна абвесьціць яго тут каб я атрымаць новую зменную. Я проста хачу, каб прысвоіць значэнне тут. І цяпер я не зусім скончылі. Дазвольце мне забягаць наперад і рабіць выгляд, я зрабіў. Прымаць пазітыўныя, і цяпер ёсць новая памылку. Упраўленне дасягае канца непустога функцыі. Так новае паведамленне пра памылку, але калі вы выгляд дражніць адзін ад аднаго кожнае са слоў, ён , Верагодна, намякае на тое, што гэта няправільна. Кіравання. Упраўленне азначае толькі парадку аперацый у праграме. Кампутара ў кантролі і што-то пайшло не так. Такім чынам, да канца непустога функцыі. Якую функцыю ён, відавочна, на ўвазе? Якая функцыя не з'яўляецца несапраўдным? Так што станоўчыя Інтэлект, і трохі блытаніну, ну, гэта накшталт несапраўднымі. Яна мае спецыфікацыю пустэчу сваімі аргументы, але яго выхад будзе мець тып N. Такім чынам, слова на левай баку так званы тып якое вяртаецца значэння. Слова на ўнутранай тут нуль або больш аргументаў што функцыя прымае. Дык што ж мне трэба зрабіць? На дадзены момант у маім кодзе, радок 21, дзе хуткае мігценне цяпер, я ёсць Пазітыўны Між ўнутры зменнай называецца N. Як мне вярнуць яе асноўным? У літаральным сэнсе. Вярнуцца N коскі. Гэтак жа, як Колтон вярнуўся кавалак паперы з адказам на мяне, паніжаючы гэтую паперку ​​ў маленькім чорным скрынку на стол, зрабіць гэта ў Код, вы ў літаральным сэнсе проста напісаць, вярнуць N, і гэта, як быццам былі Колтон працягваючы мне нешта фізічнае таму. У гэтым выпадку тое, што адбываецца, гэта атрымаць Пазітыўны Між збіраецца ўручыць назад што меркавана станоўчым цэлае для каго? Дзе, што значэнне ў канчатковым выніку? , Які заканчваецца ў гэтай зменнай, N, і Затым мы працягнем лінію дзевяць. Такім чынам, іншымі словамі, у парадку аперацый, гэтая праграма пачынае выканання і кампілятар разумее, Ах, вы хочаце ў бібліятэку? Адпусці мяне захапіць усё, што знаходзіцца ўнутры. Ах, вы хочаце стандартнай бібліятэкі IO? Адпусці мяне захапіць усё, што знаходзіцца ўнутры. Што ж кампілятар сказаць сабе , Калі яна трапляе чатыры лініі? О, вы абяцалі рэалізаваць Функцыя называецца атрымаць станоўчыя, але мы вернемся да гэтага пазней, нешта ў гэтым кірунку. Int асноўных пустэчу проста азначае вось вантробы маёй праграме. Лінія сямі проста фігурнай дужкай. Лінія восем кажа на левым, даць мне 32 біта для цэлага, назавем яго п. З правага боку, гэта кажучы атрымаць станоўчыя Int. Зараз давайце спынімся гэтую гісторыю, таму што цяпер Я не трымаю перамяшчэнні майго курсора ўніз. Мой курсор цяпер ідзе сюды, таму што зараз атрымаць Пазітыўны Між выконвае. Int N абвешчаны. Выканайце наступныя дзеянні. Printf дае мне станоўчае цэлае лік. Атрымаць цэлалікавай ад карыстальніка, захоўваеце яго ў N, і, магчыма, зрабіць гэта зноў і зноў. Гэты цыкл азначае, што гэты код можа выканаць уверх і ўніз як гэта зноў і зноў, але калі карыстальнік канчаткова супрацоўнічае і дае мне станоўчыя Інтэлект, я ўдарыў лініі 21, і ў гэты момант нумар вярнуў, а які я павінен вылучыць зараз? Дзевяць. Кіравання, так бы мовіць, вяртаецца у лінію дзевяць. Гэта лінія, якая зараз ва ўладзе. Дык вось тое, што адбывалася ўсё на гэты раз пад капотам, але калі мы выкарыстоўвалі функцыі, такія як Е або нават атрымаць радок, што хтосьці іншы напісаў вам, кантроль таго, як перадаў прэч да чужой код лініі Па лініі Па лініі. Гэта проста мы не маглі бачыць яго, і мы не мог уявіць яе ў гэтым праграму, таму што гэта ў некаторых іншых файлаў на цвёрдым дыску без ведама нам. Так што давайце кампіляваць і запусціць гэта цяпер. Зрабіць станоўчым. Кампіляцыя, гэта прагрэс. . / Станоўчым. Дайце мне станоўчае цэлае лік. Давайце быць цяжкім. Адмоўныя 1. Нуль. Давайце дамо яму 50. Дзякуй за 50, так і кіравання зараз вярнулася. Любыя пытанні, то, з гэтай нагоды? Да? [Неразборліва]. Скажы яшчэ раз. О, добры пытанне. Такім чынам, вы можаце заўважыць, што тут паралель Я накшталт рэзкі куце. У радку 12, я кажу, атрымаць Пазітыўны Між вяртае цэлае, але да таго ж логіцы, зараз зразумела, што ў лініі шэсць, я кажу, што асноўная вяртаецца Інтэлект, але тое, што мы ніколі раней не было ні ў адной з нашых праграм? У нас ніколі не было згадкі пра гэта клавішы вяртання слова. Вось і атрымліваецца, што ў C, па меншай меры версія, што мы выкарыстоўваем зроблена ў 1999 годзе, тэхнічна, гэта адбываецца аўтаматычна. У любы час вы рэалізуеце праграму, і вы рэалізаваць функцыю, называецца асноўным, што функцыя верне нуль змаўчанні, калі вы не кажаце, у адваротным выпадку, і нулявой ўсяго толькі пагадненне. Свет тым самым вяртае нуль аб тым, што ўсё добра, эфектыўна пакідаючы нас з чатырох мільярдаў магчымыя рэчы, якія маглі б пайсці няправільна, такім чынам, што, калі мы вернемся адной, што можа азначаць код, які азначае, што гэты рэч пайшло не так. Мы маглі б вярнуць два, што азначае, гэта іншая рэч пайшло не так. Мы маглі б вярнуцца чатырох мільярдаў, якія азначае, што гэта іншая рэч пайшло не так. І калі вы зараз думаеце аб сваім уласным ПК ці Mac, вы можаце ўспомніць, што часам вы атрымліваеце паведамленні пра памылкі, ад праграмнага забеспячэння, якое вы выкарыстанні, а часам ён мае чалавечае зразумелае апісаньне, але ёсць Часта код або нумар на экране? Калі гэта не прыходзіць у галаву, проста сочыце за гэта. Гэта звычайна, што гэтыя Коды на ўвазе. Яны ўключаны ў Microsoft Word і іншых праграм, так што, калі вы падасце справаздачу пра памылку з кампаніяй, вы можаце скажыце ім, ой, я атрымаў нумар памылкі 45. А некаторыя праграміст таму ў кампаніі можаце паглядзець, што ў сваю код і сказаць: о, гэта таму што я зрабіў гэта памылка, і менавіта таму карыстальнік атрымаў гэта паведамленне. Але, шчыра кажучы, гэта проста трохі адцягвае і трохі стомна заключыць, што, па меншай меры, на наш Першыя некалькі праграм, дык вось, мы былі апускаючы яго. Але ўвесь гэты час кожны з вашых Асноўнымі функцыямі таемна была гэтая лініі аўтаматычна дадаецца для Вас кампілятара, проста канвенцыі зэканоміць ваш час. [Неразборліва]. Вам не трэба ўключаць яго ў асноўны. Гэта выдатна. Вы павінны ўключыць яго, калі вы былі рэалізацыі функцыі, як гэта. У адваротным выпадку функцыя плоскага з не будзе працаваць. Але ў галоўным, у гэтым няма неабходнасці. Праз тыдзень ці два, мы пачнем атрымліваць у гэтую звычку, як толькі мы хочам пачаць якое азначае памылак. Вельмі добрае пытанне. Так хутка славесныя перапынак, каб адзначыць, што ў гэтую пятніцу, мы не будзем абедаць як такой, але мы будзем абедаць з некаторыя з студэнтаў і выкладчыкаў. Калі вы хочаце далучыцца да нас, адчуваюць сябе свабодна хадзіць у cs50.net/rsvp. 6:00 вечара ў гэтую пятніцу. Прастора, як заўсёды, абмежавана, але мы працягваць рабіць гэта на амаль штотыднёвай аснове, калі прастора скончыцца на гэтым тыдні. Так захапляльным, што мы спыніліся на Панядзелак было тое, што радкі могуць на самай справе быць праіндэксаваныя на, які проста азначае, што вы можа атрымаць з першага знака, Другі персанаж, трэці сімвал і гэтак далей, таму што вы можаце эфектыўна думаць радком, напрыклад прывітанне, як у дадзеным выпадку пяць Лісты ўнутры скрынкі. І вы можаце атрымаць на кожным з гэтых скрынкі з тым, што мы зрабілі сінтаксісу ўвесці ў панядзелак? Тыя квадратныя дужкі на клавіятуры. Гэта проста азначала пайсці ў размяшчэнне нуля. Мы пачынаем адлік з нуля, так што кранштэйны нуля азначае, ч, кранштэйны адной азначае, е, і так далей. І так увесь час, калі мы былі выкарыстоўваючы радкі і друкаваць на машынцы "прывітанне" і "Мір" і іншыя рэчы на экране, гэта было захавана у скрынках, як гэта. І зрабіць здагадку. Што азначае кожная скрынка ўяўляюць фізічна ўнутры кампутара? [Неразборліва]. Прабачце? Персанажаў. Такім характарам, вядома, у выпадку радкоў, і характар ​​проста восем бітаў або адзін байт. Такім чынам, вы, верагодна, па меншай меры цьмяна знаёмыя з тым фактам, што ваш Кампутар мае памяць. Яна складаецца з двух тыпаў памяці па меншай меры. Адным з іх з'яўляецца жорсткі дыск, дзе Вы захавалі рэчы пастаянна, і гэта звычайна вялікія, таму вы можаце ёсць фільмы і музыкі і гэтак далей. Тады ў вас ёсць іншы тып памяці называецца RAM, R-A-M, адвольны доступ Памяці, і гэта тып памяці , Які выкарыстоўваецца, калі кампутар працуе, але, калі вы страцілі ўлада ці ваш акумулятар памірае, усё, што захоўваецца ў аператыўнай памяці знікае, калі вы страцілі ўлада у цэлым, таму што гэта не стойкім. Як правіла, ёсць, у гэтыя дні, канцэрт гэтага, два канцэрты, можа больш. І ўверх аператыўнай памяці, што нашмат значна, значна хутчэй, чым жорсткія дыскі ці нават цвёрдацельных назапашвальнікаў ў гэтыя дні, але гэтае правіла, даражэй, так ў вас ёсць менш. Таму сённяшняя размова сапраўды ставіцца ў АЗП, што тып памяці, які існуе толькі пакуль ёсць ўлада падаецца ў кампутар. Такім чынам, калі вы ўводзіце ў Н-Е-Л-Л-О, Enter на клавіятуры, H адбываецца ў адным байт аператыўнай памяці, E збіраецца ў іншы байт аператыўнай памяці, як гэта астатнія словы. Так ўспомнім, што мы змаглі зрабіць апошні раз было так. Дазвольце мне ісці наперад і адкрываць файл , Які мы назвалі string.c, і ўспомніць што гэта выглядала трохі нешта накшталт гэтага. Дазвольце мне на самай справе адкат і зменіце гэта менавіта тое, што гэта было падобна, даўжыня радка с. Так што глядзіце на праграму тут. Мы ўключаем бібліятэку, так CS50 што мы можам выкарыстоўваць атрымаць радок. Мы ўключылі ў стандартную io.h таму мы можам выкарыстоўваць Е. Чаму мы ўключаем string.h? Гэта было новым у панядзелак. Такім чынам, мы хацелі даўжыню радка. Ленг вул. Людзі вырашылі гадоў таму, давайце проста быць кароткімі. Замест таго, назваўшы яго "даўжыня радка" назавем яе "вул Ленг", і хай свет зразумець гэта, і такім чынам, гэта тое, што мы атрымліваем доступ да string.h с. Гэта знаёма. Гэта знаёма. Гэта знаёма. Гэта крыху новых. У лініі 22 - і мы вернемся да гэтага, але цяпер ведаю - і вы б толькі ведаю, што гэта ад таго, чытаць дакументацыю або калі Вы ведалі, З, ужо - атрымаць радок часам можа сапсаваць. Калі карыстальнік сапраўды спаборнасць або якія адмаўляюцца ад супрацоўніцтва, і ён ці яна проста ня ўводзьце нічога з клавіятуры або Тыпы столькі на клавіятуры, якая перапаўняе памяць кампутара, У тэорыі, ўзяць вяроўку можа вярнуцца нешта іншае, чым радок знакаў. Ён можа вярнуцца адмысловае значэнне, званае NULL загалоўнымі літарамі, N-U-L-L, а гэта толькі так званыя дазорцы значэння. Гэта спецыяльнае значэнне, якое азначае что-то дрэннае адбылося ў дадзеным выпадку. Гэта адсутнасць радка. Так нуль я правяраю для проста так, што, Карацей кажучы, вул Ленг і іншыя функцыі, якія прыходзяць з C, калі яны чакаюць радок, але іх можна перадаваць адсутнасць радок, калі вы перадаеце іх нікчэмнымі, кампутар ці праграма будзе проста пацярпець крах адразу. Яна будзе вісець. Гэта будзе кінуць некаторы паведамленне пра памылку. Могуць адбыцца непрыемныя рэчы. Так што, хоць гэта па-ранейшаму не выразна - гэта будзе мець больш сэнсу ў тыдзень ці два - у лініі 22, гэта ўсяго толькі Прыкладам самастойнага абарончага праверкі памылак на ўсялякі выпадак адзін раз з млн. нешта пойдзе не так, па крайняй Прынамсі, мая праграма не абрынецца. Так што, калі з не роўна нешта дрэннае, У мяне ёсць цыкл, і гэта было дзе ў нас было, што іншыя новая частка сінтаксісу. У мяне ёсць цыкл ітэрацыі ад нуля да даўжыні з. А потым вось, я была раздрукоўка з Кранштэйн я, але чаму я выкарыстоўваю C% усіх Раптам замест% нават з хоць ёй гэта радок? Гэта сімвал, ці не так? S з'яўляецца радком, але што-то з кранштэйнам, з кранштэйнам я, дзе я роўная нуля або адзін ці два, гэта асобныя знака ў радку, і таму для што Е павінен быць праінфармаваны, што гэта сапраўды сімвал чакаць. А потым ўспомніць, што зрабіў гэта Праграма на самай справе? Распячатаў яго ў слупках. Так, менавіта. Гэта проста надрукаваў слова, якое я друкую ў калонка, адзін знак у радку. Такім чынам, давайце паглядзім гэта зноў. Так што радок. Складальнік OK. . / Радок. Дазвольце мне ўвесці Н-Е-Л-Л-О, ўводу і больш за тое, я разумею, па адным на радок. Такім чынам, дазвольце мне зрабіць адно аптымізацыі тут. Калі вы думаеце пра гэта, асабліва калі вы праграмавалі раней, ёсць магчыма неэфектыўнасці лініі 24. Іншымі словамі, гэта не абавязкова лепшы дызайн. Просты, па меншай меры, як толькі вы памятаеце, што Ленг вул ёсць, але гэта рабіць нешта патэнцыйна нямы. Што гэта можа быць? [Неразборліва]. Менавіта так. Гэта праверка на даўжыню з кожны раз, нават пры тым, H-E-L-L-O заўсёды будзе у пяць знакаў. Кожны раз, калі праз гэты цыкл пяць не мяняецца. Я мог бы павялічваючы я, але тое, што гэта даўжыня з на кожны ітэрацыі гэтага цыклу? Гэта пяць, гэта пяць, гэта пяць, а ўсё ж я задаю гэтае, тым не менш пытанне зноў і зноў і зноў. Цяпер, шчыра кажучы, кампутар так па-чартоўску хутка, ніхто не заўважыць Розніца ў гэтым выпадку, аднак гэтыя віды бедных дызайнерскіх рашэнняў можа пачнуць расці, калі сам кампілятар не спрабуе выправіць гэта для вас, якія ён звычайна не будзе, па меншай меры, у прыладзе. Так што я збіраюся зрабіць гэта. Я збіраюся дадаць коску пасля мая першая зменная, я. Я збіраюся даць сабе яшчэ зменную, назваўшы яго N, проста Канвенцыя для лікаў, а затым я збіраецца прызначыць п значэнне радкі даўжыня з. А потым я збіраюся змяніць мой стан тое, што? Я збіраюся змяніць свой стан у той час як я менш N. Так што цяпер, колькі разоў я праверка даўжыні з? Адзін раз, але гэта нармальна, каб праверыць, што я супраць N зноў і зноў, таму што цяпер гэтыя значэнні фактычна не мяняецца. Зараз на дадзены момант, проста ведаю, што ў любы час вы выклікаць функцыю, ёсць трохі над галавой, не дастаткова, каб адгаварыць вас ад сапраўды ніколі не выкарыстоўваючы функцыі, але вядома, калі ёсць радок кода падабаецца, што - і межы атрымаеце больш цікавым неўзабаве - дзе ёсць магчымасць падумаць, калі я увядзіце гэты код, колькі раз ён будзе выконваць? Вы пачнеце бачыць на працягу доўгага часу выкананне сваіх праграм сапраўды зменіцца. На самай справе, адным з хатніх заданняў мы ў зроблена ў мінулыя гады ўключае ў сябе рэалізацыі, як вы памятаеце з нулявы тыдні, праверка арфаграфіі, але праверкі арфаграфіі, якая была распрацавана для падтрымкі слоўнік 150000 плюс Словы, якія мы даем вам, хлопцы. Вы павінны былі б напісаць код, які загружае гэтыя словы ў памяці, так што ў скрынкі, як мы бачылі на экране момант назад, а затым так хутка, як вы можа, вы павінны быць у стане адказаць пытанне аб форме, гэтае слова арфаграфічнымі памылкамі? Гэта слова з памылкай? Гэта слова з памылкай? І нешта ў гэтым родзе, што мы зроблена ў мінулыя гады ўключэнні яго ў, хоць і на адмову ў факультатыўнай аснове Конкурс родаў, у выніку чаго студэнтаў, якія выкарыстоўваюць менш памяці і менш час, памяншаецца загрузка працэсара, у канчатковым выніку бурбалак ўверх да верхняй частцы трохі дошкі лідэра або рэйтынг, які мы ставім на Вядома хатнюю старонку, як мы зроблена ў мінулыя гады. Такім чынам, яшчэ раз, зусім неабавязкова, але гэта кажа аб магчымасці дызайну якія наперадзе як толькі мы пачынаем пабудова-над некаторых з гэтых асноўныя будаўнічыя блокі. Такім чынам, дазвольце мне вярнуцца да гэтай схеме На імгненне і раскрыць трохі нешта большае. Зразумела, гэты радок, і мы ўзялі Перавага некалькі бібліятэк стандартныя io.h якая мае - Printf. Printf, між іншым. cs50.h, які атрымліваюць дзесятковага і атрымаць радок і гэтак далей, string.h, які Ленг быў вул. Але, аказваецца, ёсць яшчэ адзін. Шчыра кажучы, ёсць шмат-шмат загалоўкаў файлы, якія аб'яўляць функцыі для бібліятэк, але гэта з'яўляецца ctype.h на самай справе адбываецца, каб быць некалькі выгадна, таму што я збіраюся ісці наперад і рэалізаваць адзін іншыя праграмы тут. Дазвольце мне ісці наперад і адкрываць нешта Я напісаў загадзя называюць capitalize.c, і давайце Паглядзіце, як гэта працуе. Звярніце ўвагу, што я выкарыстоўваю, у гэтай версіі яго, тры знаёмыя файлаў. Звярніце ўвагу, што ў радку 18, я атрыманне радкі тэксту. Апавяшчэнне ў радку 21, я, сцвярджаючы, што Наступны код будзе выгаду з, што ўведзены карыстальнікам ў, і як я гэта раблю? Ну, я бяру - Урок, выняты з апошняга часу - Я абвяшчаю я і н і ітэрацыі больш знакаў у радку. І тады тое, што гэты блок код у адпаведнасці з 24 па 27 рабіць з пункту гледжання непрафесіяналы? Малой літары назад. Менавіта так. Калі я з кранштэйнам - так што калі г-й Характар ​​с, што канкрэтны знакаў у радку, больш або роўная ніжняга рэгістра і - Нагадаем, што двайны Ампэрсанд і азначае - і той жа характар, з кранштэйнам I, з'яўляецца менш або роўна ў ніжні рэгістр Z, , Што азначае, што ён ці B або C або кропка, кропка, кропка, або Z, што азначае, гэта малымі літарамі. Што я хачу зрабіць у такім выпадку? Ну, што я магу зрабіць гэта некалькі загадкава, але давай дражніць гэтага адзін ад аднаго. Я буду называць Е, друкуе% C таму што я хачу, каб перадрукаваць гэтую сімвала на экране. Я тады збіраюся ўзяць з кранштэйнам I, I-ы знак у сек, то чаму б і я раблю гэта маленькая хітрасць, ніжні рэгістр мінус капіталу? І што гэта дасць Мне, наогул кажучы? [Неразборліва]. Менавіта так. Я сапраўды не памятаю - гэта было 65 на капітальны А. Мне не вельмі памятаеце, што ніжні рэгістр ёсць, Але незалежна ад таго. Кампутар ведае. Так, кажучы, ніжні рэгістр мінус капіталу, гэта дзіўна, каб быць аднімання адзін знак ад іншага, але якія сімвалы пад капотам? Яны проста лічбы. Таму, што б гэтыя лічбы, хай кампутар памятаю а не мне чалавека. Так ніжні рэгістр вылікам капітальных з'яўляецца збіраецца даць мне розніцу. Гэта, аказваецца, 32, і гэта было б у выпадку малымі B і B капіталу і гэтак далей. Ён застаецца паслядоўнай, да шчасця. Так што я па сутнасці, кажа, вазьмі малой літары, што вылічаная стандарт адрозненне, і эфектыўна змен з кранштэйнам я ад ніжні рэгістр, каб, вядома, вялікія, без майго сапраўды таго, каб думаць аб ці ўспомніць, што гэта былі за нумары мы казалі пра тое, калі восем добраахвотнікі прыйшлі на сцэну? Цяпер Між тым, у іншай, калі гэта не малой літары, як гэта вызначана па лініі 24, яго можна проста вывесці. Я толькі хачу, каб дакрануцца да знакаў, якія былі на самай справе першапачаткова ніжні рэгістр. Такім чынам, давайце паглядзім гэта. Зрабіць выгаду. Укладальнік, OK. . / Выгаду. І дазвольце мне ўвесці Н-Е-Л-Л-О у ніжнім рэгістры, Enter. І заўважце, што ён пераўтворыцца у верхнім рэгістры. Дазволь мне зрабіць гэта зноў іншае слова. Як наконт D - V-I-D з першым D капитализируются як правіла, гэтае імя? Enter. Звярніце ўвагу, яна па-ранейшаму дакладная. Гэта толькі першая выснова, што D нязменным праз што яшчэ пабудаваць. Таму майце на ўвазе, то, Пару рэчаў. Адзін з іх, калі вы хочаце праверыць два ўмовы адразу, вы можаце і іх разам, як мы і прадказвалі. Вы можаце параўнаць сімвалы такім чынам і эфектыўна лячыць як сімвалы лічбы, але, шчыра кажучы, гэта так па-чартоўску загадкавыя Я ніколі не буду памятаць Як прыдумаў гэта з нуля без тлумачэння прычын праз яго на працягу досыць трохі часу. Хіба не было б добра, калі хто-то там напісаў выкліканая функцыя ніжэй, чым мог адказаць для мяне сапраўдным або ілжывымі, гэты знак у ніжнім рэгістры? Ну, на шчасце, той, хто пісаў ctype.h зрабіў менавіта гэта. Хацеў бы я пайсці тут і дадайце CType для C тыпу, а цяпер адпусьціў мяне сюды і перапісаць гэты радок наступным чынам. Так што калі гэта называецца ніжэй, я сцвярджаю, з Кранштэйн я, то я збіраюся выдаліць гэтыя дзве лініі ў цэлым. Так што цяпер каго-небудзь яшчэ, я спадзяюся, напісаў Функцыя называецца ніжэй, і гэта Аказваецца, што яны зрабілі і яны абвешчаныя яго ўнутры ctype.h. А цяпер я збіраюся пакінуць лінію 27 адзін, я збіраюся пакінуць лініі 31 адзін, не заўважыць, як моцна я зацягнуў мне кода. Гэта цяпер чысцей. Гэта менш, цяжка глядзець праз таму што цяпер функцыі, акрамя таго, так цудоўна назваў яго проста робіць тое, што ён кажа. Так што цяпер я іду, каб выратаваць гэтага. Я іду, каб паменшыць маштаб. І гэтак жа, як і ў нуля, вы маглі б Лагічныя, лагічныя значэння ісціна або ілжывымі, гэта менавіта тое, што эфектыўна знізіць аддачу. Дазвольце мне перакампіляваць. Дазвольце мне зноў запусціць. А цяпер давайце паспрабуем гэта зноў, H-E-L-L-О, Enter. Гэта вельмі добра. І паспрабуйце яшчэ раз, пераканацца, што я не што-небудзь сапсуеце. Гэта значыць капитализируются, а таксама. Але гэтага не дастаткова добры, таму што Іншая рэч, якую я ніколі не збіраюся памятаеце, калі я не працаваць праз яго сапраўды старанна, скажам, папера гэтую праклятую лінію. Не было б нядрэнна, калі б Функцыя называецца ў верхні? Ну аказваецца, ёсць знаходзіцца ў ctype.h таксама. Я збіраюся ісці наперад і тып - лепей я выведу гэтую лінію спіны. Замест гэтага тут, дазвольце мне ісці наперад і сказаць, замяніць C% выніку выкліку гэтай функцыі верхняя на I-ы сімвал с. А цяпер заўважаю гэта становіцца трохі збалансаваныя. Я павінен сачыць за колькі дужках я адчыняцца і зачыняцца. Так што цяпер гэта нават чысцей. Зараз гэтая праграма становіцца ўсё лепш і лепш распрацаваны, магчыма, таму што гэта многае, многае іншае для чытання, але Бо не давайце выправім. Зрабіць выгаду. . / Выгаду. H-E-L-L-высновы. Давайце запусцім яго зноў, D-A-V-I-D. Такім чынам, мы ўсё яшчэ ў даволі добрай форме. Але цяпер да верхняга. Я мяркую, што ёсць яшчэ адна Ўдакладненне мы маглі б зрабіць, што б сапраўды добры, якія маглі б сапраўды зацягнуць гэты код і сапраўды, дайце нам пяць з пяці дызайн, напрыклад. Што нядрэнна б пазбавіцца? Ну, паглядзіце, як па-чартоўску доўга гэты блок код толькі, каб зрабіць што-то простае. Зараз, як у баку, як вы маглі бачылі ў гэтым раздзеле супер мінулым выходныя, вам не трэба строга фігурныя дужкі, калі ў Вас толькі адна радок кода, хоць мы прапанавалі трымаць іх так, што ён робіць шмат больш ясным, як для Scratch ў П-вобразнай блокі, што ўнутры галіны. Але хіба не было б нядрэнна, калі б у верхні, калі дадзена яго ўваход, ператварыў яго ў верхні рэгістр, калі гэта не так, і што будзе быць выдатнымі у адваротным выпадку, калі гэта ўжо верхні рэгістр? Проста перадайце яго праз і пакінуць яго ў спакоі. Таму, магчыма, ён робіць гэта. Я мог бы паспрабаваць і проста спадзяюся, што яна робіць, але дазвольце мне ўвесці яшчэ адну рэч. Замест выкарыстання гэтага убудаваны тэрмінал вокны тут, нагадаем, што гэта квадратны значок чорнага дае вялікія вокны тэрмінала, што я можа поўны экран, калі я хачу? Вось і атрымліваецца, што яны накшталт дзіўна імя, але ёсць такія рэчы называюцца Чалавек старонак, старонак кіраўніцтва, чалавек для сцісласці, і я магу атрымаць доступ да іх чалавек, набраўшы - Што я хачу набраць? Чалавек у верхні. А цяпер звярніце ўвагу, калі існуе функцыянаваць ўнутры кампутара, у гэтым выпадку прылада, якое як раз аперацыйная сістэма Linux, яна збіраецца даць мне некалькі загадкавым наборам выхад, але вы ўбачыце, што з цягам часу яна заўсёды фарматуецца ў значнай ступені гэтак жа вы пачынаеце прывыкаць да яго. Звярніце ўвагу, у верхняй частцы да верхняй і мабыць, тыя ж самыя дакументы для паніжэння. Хто б ні напісаў ён рэзаў некаторых куты і паклаў усё гэта на адной старонцы. Гэтыя рэчы "ў мэтах жыцця заключаецца ў пераўтварэнні Ліст верхні або ніжні рэгістр. Звярніце ўвагу, што пад Synopsis, даведачную старонку вучыць мяне, што ў мяне ёсць файл уключыць, каб выкарыстоўваць гэтую рэч. Гэта дае мне подпісаў для гэтых Функцыі, абодва з іх, нават хоць мы цяпер толькі клапаціцца аб адным. Вось цяпер апісанні. Для верхняй пераўтворыць сімвал C у верхні рэгістр, калі магчыма. Яшчэ не так павучальна, але дазвольце мне Цяпер глядзіце пад вяртаецца значэння, рэч які вярнуў. Такім чынам, значэнне, вернутае ў тым, што з пераўтворыцца літара або З, калі пераўтварэнне не ўдалося. Што такое C? Арыгінальны характар. Арыгінальны характар ​​і мы ведаем, што, зноў жа, падышоўшы да сінопсіс, і той, хто напісаў гэта Функцыя проста вырашыў, што ўваходны каб на верхні і ніжні проста адвольна будзе называцца C. Яны маглі б назваў гэта практычна ўсё, яны хочуць, але яны пакінулі яго проста, як у. Так што я кансультаваўся з чалавекам старонцы. Гэтая фраза мяне супакойвае, што калі гэта не малой літары, гэта збіраецца проста аддай мне с, што дасканалай, якая азначае, што я магу пазбавіцца ад маё іншы стан. Такім чынам, дазвольце мне вярнуцца да Gedit і Цяпер дазвольце мне зрабіць гэта. Я збіраюся скапіяваць мой Е заяве. Я збіраюся ісці наперад і проста ў цыкл, што з друку, і атрымаць Цяпер пазбавіцца ад усяго гэтага, калі канструкцыяй. Быў не дрэнная ідэя, і гэта было вельмі шмат правільна і адпавядаюць з усё, што мы прапаведавалі, але толькі не трэба. Як толькі вы разумееце, некаторыя бібліятэкі функцыя існуе, што нехта іншы напісаў, або можа быць, вы пісалі ў іншым месцы файла, вы можаце выкарыстоўваць яго і на самай справе пачаць падцягнуць кода. І калі я кажу такія рэчы, як добры стыль, на тое, што гэты чалавек завецца функцыянаваць у верхні або раней з'яўляецца ніжняя дзіўна карысна, таму што яны вельмі апісальны характар. Вы не хацелі б звярнуць вашу функцый X і Y і Z, якія маюць значна, значна менш сэнсу. Любыя пытанні па гэтай серыі паляпшэнняў? Такім чынам, дастаткова сказаць, адзін з вынас яшчэ як свае ўласныя праблемы Набор - можа быць, праблема набору, але вядома P ўсталяваць два і далей, нават калі яны маюць рацыю, не абавязкова азначае, што яны проста ідэальна ці ўсё ж прадуманым дызайнам. Вось іншы восі пачаць думаць аб. Так што гэта было радок ўнутры вашага памяці кампутара, але калі ў вас ёсць цэлая куча персанажаў накшталт H-E-L-L-O ўнутры аператыўнай памяці, і выкажам здагадку, што вам у вашай праграме называем атрымаць радок некалькі раз так, што вы патэлефануеце атрымаць радок адзін раз, то вы патэлефануеце атрымаць радок зноў. Ну, тое, што збіраецца адбыцца з цягам часу? Іншымі словамі, калі ў вас ёсць лінія кода, хоць з кантэксту, як Радок з дабіраецца - давайце зробім гэта. Імя радкі роўна атрымаць радок. Таму выкажам здагадку, што радок кода прызначаны спытаць у карыстальніка яго ці яе імя. У наступным радку кода хацела спытаць карыстачу для яго ці яе школе, і гэтая наступная радок, і гэтак далей. Выкажам здагадку, што мы ўвесь час пытаюцца Карыстальнік яшчэ і яшчэ і яшчэ радок. Яны збіраюцца заставацца ў памяці у той жа час. Адзін з іх не збіраецца замяшчаць іншыя. Школе не перакрываць адзін аднаго. Але там, дзе яны ўсе ў канчатковым выніку ў памяці? Ну, калі мы пачнем маляваць на экране, якія мы можам выкарыстоўваць гэтую рэч тут, як дошка, калі гэта чорны прастакутнік ўяўляе майго кампутара памяці, я збіраюся пачаць адвольна падзяліўшы яго на невялікія квадраты, кожны з якіх уяўляе адзін байт памяці. Шчыра кажучы, калі ў вас ёсць гігабайт аператыўнай памяці у гэтыя дні, у вас ёсць мільярд байт памяці ў вашым кампутары, так мільярдаў з гэтых квадратаў. Так што дастаткова сказаць, гэта на самай справе не ў маштабе. Але мы маглі б захаваць малюнак ўсе гэтыя ясна не ў маштабе квадратаў, і гэтая калектыўна ўяўляе маёй памяці кампутара. Цяпер мы проста зробім кропка, кропка, кропка. Такім чынам, іншымі словамі, калі я цяпер заахвоціць карыстачу ўзяць вяроўку, каб даць мне Радок, што адбываецца? Калі карыстальнік ўвядзе ў "прывітанне", які заканчваецца у H-E-L-L-высновы. Але выкажам здагадку, што Затым карыстальнік тыпаў - На самай справе, я не павінен быў рабіць прывітанне, таму што мы просім іх за іх імёны. Такім чынам, давайце вернемся, калі я магу зрабіць гэта. Так што калі я тыпу ў D - V-I-D імя Майго, але нагадаць, што ў другой радку Код быў атрымаць радок зноў каб атрымаць іх школе. Дзе гэтае слова, якое карыстальнік тыпы збіраецца ісці далей? Ну, можа, гэта будзе ісці ў H-A-R-V-A-R-D. Так што, хоць я намаляваў яго ў выглядзе двух радкоў, гэта будзе проста цэлая куча байтаў ў вашым аператыўнай памяці кампутара. Там праблема зараз, таму што цяпер, калі я выкарыстанне аператыўнай памяці ў гэтым вельмі разумна а як бы наіўна, што вы можаце мабыць, не адрозніць? Дзе пачынаецца адно і дзе заканчваецца адзін, праўда? Яны накшталт размыцця разам. Вось і атрымліваецца, кампутар не робіць гэтага. Дазвольце мне на самай справе пракруціць назад у часе некалькі знакаў, а замест Гарварда збіраецца адразу пасля імя карыстальніка, карыстальнік атрымлівае на самай справе, за кулісамі, адмысловыя знакі ўстаўляецца Кампутар для яго ці яе. / 0, інакш вядомай як нулявы сімвал раздражняльна званы N-U-L, ня N-U-L-L, але вы пішаце яго як / 0. Гэта проста ўсё нулі з'яўляецца маркерам у паміж першае слова, якое карыстальнік надрукаваны і другога. Так што на самой справе цяпер Гарвардскага заканчваецца як гэта паслядоўнасць сімвалаў І яшчэ адзін / 0. Такім чынам, іншымі словамі, пры наяўнасці гэтых дазорцы значэння, васьмі паслядоўных нуля біт, зараз вы можаце пачаць адрозніваць адзін знак ад іншага. Так што ўвесь гэты час, што быў "прывітанне" з'яўляецца на самай справе "прывітанне" с / 0, а Між тым, цалкам можа будзе крыху больш аператыўнай памяці ўнутр кампутара. Дазвольце мне зрабіць яшчэ адну рэч цяпер. Аказваецца, што ўсе гэтыя квадраты мы малюю, яны, так, радкі, але ў больш агульным гэтыя рэчы з'яўляюцца масівы. Масіў гэта проста кавалак памяці вось спіна да спіны, каб спіна да спіны, і як правіла, выкарыстоўваецца масіў шляхам гэтай плошчы абазначэння кранштэйна. Такім чынам, мы збіраемся, каб убачыць гэтыя зусім няшмат з цягам часу, але дазвольце мне ісці наперад і адкрываюцца, назавем яго ўзросту. І звярніце ўвагу, што мы можам зрабіць з гэтыя ж трукі, трохі трохі больш сінтаксісам. Такім чынам, у радку 17 гэтай праграмы - на самай справе, дазвольце мне запусціць праграму першым таму мы можам бачыць, што гэтая рэч робіць. Дазвольце мне звярнуць узростаў, каб зрабіць кампіляцыі гэтай праграмы. . / Ўзросту. Колькі чалавек у пакоі? Назавіце гэта тры. Узрост першай асобы? 18, 19 і 20. А зараз некалькі смешна, я проста зрабілі праграму, якая узростаў тых, трох чалавек. Такім чынам, ёсць відавочная магчымасць для некаторай забавы вось арыфметыка. На шчасце, матэматыка з'яўляецца правільным. 18 пайшоў у 19, 19 пайшоў 20 і гэтак далей. Але што на самай справе значыць быць ілюстрацыйныя вось як мы захоўваем гэтых трох людзей узростаў. Дазвольце мне павелічэння на тое, што тут адбываецца. Такім чынам, спачатку, гэтыя першыя некалькі радкоў павінна атрымліваць даволі добра знаёмыя. Я проста з дапамогай якога карыстальнік Колькасць чалавек у пакоі. Тады я выкарыстоўваю атрымаць дзесятковага і час, каб зрабіць рабіць гэта зноў і зноў і зноў. Мы бачылі, што мадэль і раней, але радок 27 з'яўляецца новым і на самай справе даволі карыснымі, і стане больш карыснымі. Звярніце ўвагу, што што па-іншаму ў лініі 27 тое, што я, здаецца, абвясціўшы Int называецца узростаў, але чакаць. Гэта не проста дзесятковага узростаў. Там у гэтыя квадратныя дужкі, усярэдзіне якога п. Такім чынам, кранштэйны н у дадзеным кантэксце ня Усярэдзіне Е заяву тут, але У гэтай адзінай лініі 27, гэтая лінія кажучы: дайце і мне цэлых N, кожны з якіх мае тып Int. Так што гэта вядро, так бы мовіць, з, У гэтым выпадку, тры цэлых Вярнуцца да спіна да спіны так, што я эфектыўна ёсць тры зменных. У якасці альтэрнатывы, быць Ясна, гэта было б. Калі б я хацеў першым студэнта ўзросту, я мог бы гэта зрабіць. Калі б я хацела другога студэнта ўзросту я мог бы зрабіць гэта. Калі б я хацеў трэцяга студэнта ўзросту, я мог бы гэта зрабіць. І не дай Бог нам трэба кожнаму ўзросту ў гэтым пакоі - Я маю на ўвазе, гэта па-чартоўску шмат копій, ўстаўце зноў і зноў і зноў. І плюс, як толькі я кампіляцыі гэтай праграмы Калі іншы студэнт ходзіць у больш чым з гэтых дзвярэй, цяпер мой нумар зменных з'яўляецца няправільным. Так што прыемна пра масіў як толькі вы пачынаеце адчуваць сябе капіяванне і ўстаўка, цалкам верагодна, што гэта не самы лепшы падыход. Дынамічны масіў патэнцыйна. Я не ведаю загадзя, колькі людзей збіраюцца быць у пакоі, але я ведаю, што трэба п з іх, а я высветліць, N, калі прыйдзе час. Гэты радок кода ў цяперашні час азначае, дай мне ўчастак памяці, які выглядае наступным дзе колькасць вокнаў на экране цалкам залежыць ад N, што Карыстальнік ўвялі цалі Так што цяпер на астатняй частцы гэтай праграмы на самай справе вельмі падобна на тое, што мы толькі што зрабілі з знакамі. Заўважце, што я для завесы пачынаючы з лініі 30. Так што адразу пасля я атрымліваю масіў, я ітэрацыі ад Y роўна нулю на да н. Я проста гэтую павучальную Е паведамленне проста кажу, дайце мне ўзросце чалавек #% я, так што нумар адзін, нумар два, нумар тры. І чаму я гэта раблю? Шчыра кажучы, людзі аддаюць перавагу лічыць ад аднаго у той час як на кампутары да навукоўцаў, нуля і вышэй. Кампутар навукоўцы не збіраюцца выкарыстоўваць гэты від праграмы, так што мы збіраецца проста пачаць адлік ў адно, як нармальныя людзі. І цяпер у радку 33, звярніце ўвагу на некалькі іншы кавалак сінтаксіс. I-га ўзросту, што ў зменнай тыпу Масіў збіраецца атрымаць Int. І цяпер, нарэшце, гэта проста арыфметычныя тут. Я вырашыў у асобнай пятлі патрабаваць праходзіць некаторы час, і цяпер у гэтым асобны цыкл, гэтыя радкі выканаць. Праз год, чалавек, якога я буду я гадоў, не заўважыць, што гэта не Я зменную. Гэта цяпер я% для Int. І звярніце ўвагу, як першы запаўняльнік, я падключыце я плюс 1, так што мы разлічваем як нармальны чалавек. І тады для значэння іх узрост, для Я гадоў, я бяру узростаў кранштэйны Я - і навошта я гэта раблю плюс адзін тут? Яны толькі ва ўзросце. Гэта мой дурны выбар праграм. Яны проста ва ўзросце аднаго года. Я магу ўвесці любы лік, якое Я сапраўды хачу там. Так што на самай справе ўсё стаўленне да вышэйсказанага? Ну, дазвольце мне на самай справе пракруціць назад сюды і намаляваць карціну , Што чакае наперадзе. Што мы будзем рабіць з нашым наступным Праблема будзе ўсталяваць два ўмешваюцца ў Свет крыптаграфіі. Так што гэта радок знакаў, так што Паслядоўнасць з некалькіх сімвалаў, і што гэта кажа? Гэта не ў онлайн-версіі з слайдаў. Таму я сцвярджаю, што гэта роўна гэта, дурная рэклама на працягу многіх гадоў таму, што можа на самай справе ўспомніць адна з яго паходжанні. Так што гэта прыклад шыфравання або крыптаграфіі. Атрымліваецца, што, калі вы хочаце на самай справе адправіць інфармацыю або падзяліцца Інфармацыя з кімсьці надзейна, як такое паведамленне, вы можаце караскацца літар. Але, як правіла, словы Не выпадкова яечню. Яны перастаўляюцца ў той ці зменены у пэўным сэнсе, так што - ой. Гэта весела спойлер ў наступны раз. Такім чынам, вы можаце адлюстраваць, што з'яўляецца відавочна O заўважыць, што Б. выбудоўвае Капіталізацыя-мудрым. Мабыць R становіцца электроннай. Мабыць F-H-E-R становіцца S-U-R-E. Так аказваецца, ёсць адлюстраванне, а ў гэтым выпадку ёсць даволі дурное адлюстраванне, калі хто зразумеў гэта? Гэта тое, што называецца Rot 13, паварот 13. Гэта самая дурная шыфравання механізмы, таму што літаральна толькі што дадае 13 да кожнага з лістоў, па-дурному ў тым сэнсе, што калі вы проста ёсць трохі вольнага часу на вашых руках і аловак, ці вы проста думаю, што гэта праз ў вашай галаве, вы можаце паспрабаваць ўсіх магчымых дапаўненняў - адзін, два, тры, кропка, кропка, кропка, ад 25 да ўсяго круціць ўвесь алфавіт, і у рэшце рэшт, вы зразумееце, тое, што гэтае паведамленне. Так што калі вы зрабілі нешта накшталт гэтага ў пачатковай школе перадачы паведамленняў вашага лепшы сябар, калі ваш пачатковай школе Настаўнік проста прачытаць паведамленне і грубай вымушаныя рашэнне, Вы, магчыма, атрымалі Адказу на гэта. Цяпер, вядома, у рэальным свеце, крыптаграфіі з'яўляецца больш складаным. Гэта фрагмент тэксту з Кампутарная сістэма, якая мае імя карыстальніка і пароляў, так як амаль усе нашы робяць, і гэта тое, што пароль можа выглядаць, калі якія захоўваюцца на цвёрдым дыск, але ў зашыфраваным выглядзе. Гэта не толькі кручэнне літары А У і В С. Гэта значна больш складанай, але выкарыстоўвае тое, што звычайна называюць сакрэтным ключом крыптаграфіі. Гэтая карціна распавядае наступную сюжэт з некалькімі абразамі. На левым, мы маем тое, мы будзем называць просты тэкст. У свеце крыптаграфіі, просты тэкст толькі зыходнае паведамленне напісана на англійскай або французскай або любы мова наогул. Калі вы жадаеце зашыфраваць яго, мы перадамо гэта наглядна праз замак, так што некаторыя віды алгарытмаў, некаторыя функцыі або праграмы, якія нехта напісаў што караскаецца літары, спадзяюся больш складана, чым проста даданне 13 для кожнага з іх. Што вы атрымліваеце з гэтага працэсу ў сярэдняга там называецца cyphertext. Так выгляд сэксуальнага слова. Гэта проста азначае, што гэта зашыфраваны версія просты тэкст. І толькі калі ў вас ёсць, што ж таямніца, 13 ці мінус 13, вы ў стане расшыфраваць падобнае паведамленне. Такім чынам, у праблеме ўсталяваць два, сярод рэчаў вы будзеце рабіць, калі ў хакерскай Выданне, вам прыйдзецца пісаць код для ўзламаць гэтыя паролі, высвятляючы тое, што яны былі і як яны былі зашыфраванае, хоць мы і даць вам крыху кіраўніцтва па шляху. У Standard Edition, ўвядзем пару шыфраў, шыфраванне Механізмы, адна называецца Цэзар, адзін называецца Vigenere, якія ўсё яшчэ кручэння шыфры, дзе становіцца нешта, B становіцца чымсьці, але Вы павінны зрабіць гэта праграмна таму што там сапраўды будзе тайным ключ ўдзельнічае які звычайна ўяўляе сабой лік або ключавое слова, што толькі адпраўніком і атрымальнікам гэтых паведамленні павінны зразумець. Цяпер, гэта на самай справе мае увасабленняў у рэальным свеце. Гэта, да прыкладу, сіротка Таемныя дэкодэр Эні кальцо, і вы можа на самай справе рэалізацыі гэтых кручэння шыфры - Нешта становіцца, B становіцца нешта - з парай колаў, адзін на вонкавым боку, адзін на ўнутранай такое, што калі павярнуць кола або кольцы, вы можаце выбудаваць лісты з розных літар, атрымання сакрэтнага кода. І так як на сённяшні дзень захапляльным, тое, што я думаў, што я раблю гэта крыху вяртанне, што калі вы ўключыце тэлевізар 24 снежня, вы можаце глядзець фільм да млоснасці для 24 гадзін запар. Але на сённяшні дзень, я адкрыю яго тут і даць нам толькі дзве хвіліны педагагічна адпаведных Калядная гісторыя з маленькім чалавекам па імені Ральф. [Прайграванне відэа] -Так будзе вядома ўсім і кожнаму, што Ральф Паркер Сапраўдным прызначаны Член сіротка Эні таямніцу круга і мае права на ўсе ўшанаванні і перавагі адбываюцца ёй. -Подпіс, сіротка Эні. Контрассигнуют, П'ер-Андрэ, ў чарніла. Ўшанаванні і перавагі ўжо ва ўзросце дзевяці гадоў. [Крычыць па радыё] Давай, давай скончым з гэтым. Мне не патрэбныя ўсё такое іншае аб кантрабандыстаў і піратаў. -Слухай заўтра ноч для заключныя прыгоды чорнага пірацкі карабель. Цяпер прыйшоў час таемных Эні Паведамленне для Вас членамі тайнага круга. Памятаеце, дзеці. Толькі сябры Таемнага круга Эні можа расшыфраваць сакрэтнае паведамленне Эні. Памятаеце, што Эні ў залежнасці ад вас. Усталюйце кантакты да B2. Вось пасланьне. 12, 11, 2 - -Я ў маёй першай сустрэчы таямніцай. -25, 14, 11, 18, 16 - -П'ер быў у выдатнай сёння голас. Я магу сказаць, што паведамленне сённяшняга было сапраўды важна. -3, 25. Вось паведамленне з сябе Эні. Памятаеце, не кажы нікому. -90 Секунд праз, я ў адзіным нумары У доме, дзе дзевяцігадовы хлопчык магла сядзець у адзіноце і дэкадавання. Ага, Б. Я пайшоў да іншага. E. Першае слова "быць". С. Ён даносіўся прасцей. U. 25. Гэта R. -Давай, Ральф. Я павінен ісці. -Я зараз спушчуся, Ма. Вось выдатна. -T. О. Абавязкова. Будзьце ўпэўненыя, да чаго? Што было сіротка Эні спрабуе сказаць? Будзьце ўпэўненыя, да чаго? -Ральф, Рэндзі павінен сысці. Не маглі б вы выйсці? -Усё ў парадку, мама. Я зараз выйду. -Я ўсё бліжэй да зараз. Напружанне было жудасна. Што гэта было? Лёс планеты можа вісяць на валаску. -Ральф, павінен ісці Рэндзі. -Я зараз выйду на з розуму сысці. -Амаль. Мае пальцы паляцелі. Мой розум быў сталёвы пастку. Кожную пару вібрацыі. Гэта было амаль ясна. Так, так, так, так, так. -Абавязкова піце вашай Ovaltine. Ovaltine? Вашывай камерцыйнай? Сын сука. [КАНЕЦ ВИДЕОВОСПРОИЗВЕДЕНИЕ] АС 1: Гэта CS50, і Праблема будзе ўсталяваць два. Убачымся на наступным тыдні. Дакладчык 2: На наступным CS50, гэта адбываецца. Выступоўца 1: Так адна тэма ў нас няма паглядзеў на да гэтага часу з'яўляецца , Што паказальнікаў на функцыі. Цяпер, паказальнік на функцыю толькі адрас грамадскіх функцыі, але так жа, як - Сын -