[Музыка Прайграванне] DAVID малая: Добра. З вяртаннем. Гэта CS50, а гэта Адзін тыдзень, працягваліся. Так што адна з прычын, мы перадавалі вакол тэхналогій, такіх як Google шкла з'яўляецца тое, што яны прыходзяць з нешта вядома, як API, Інтэрфейс праграмавання прыкладанняў. А што гэта азначае, што з патрэбныя файлы і з правам дакументацыю, вы можаце напісаць праграмнае забеспячэнне для прылад нават, як гэтыя. І так, што мы маем на ўвазе, да канцы семестра ёсць, калі праект з удзелам, скажам, Google шкла можа апеляцыі, мы ўбачым, што мы можам зрабіць у Умовы падлучэння вас з некаторымі пазычальніка абсталявання, а таксама агульнадаступны API, так што вы можаце фактычна пачаць стварэнне праграмнага забеспячэння , Які працуе на тым жа шкло Google. Іншай прыладай, якое мы гулялі з позняй, што мы думалі, што можа быць весела ў канцы семестра з'яўляецца гэтая маленькая рэч тут. Яна называецца Leap руху, і што вы паглядзець тэхнічна Рэклама для прылады, але гэта сапраўды гаворыцца да таго, што дадзены Прылада здольна. І ён таксама ідзе з дапамогай API якія вы можаце напісаць праграмнае забеспячэнне для кантраляваць свой кампутар такім чынам, цалкам як гэты-хвілінны фільм тут. [Прайграванне відэа] [КАНЕЦ ВИДЕОВОСПРОИЗВЕДЕНИЕ] Таму ў дадзены момант, гэта прылада будзе мець быць рэалізаваны ў выглядзе маленькай USB злучальнік, які можна падключыць да кампутары, але я не здзіўлюся, Калі ў хуткім часе ў нас ёсць гэтыя віды тэхналогій у наступнай партыі ПК Макі і так, што вы на самай справе можа ўзаемадзейнічаць з ім у чынам, як гэты. На самай справе, тое, што я думаў, што я раблю, таксама Я пад'ехала невялікая дэманстрацыя праграма, якая пастаўляецца з гэтым праграмным забеспячэннем. Так што я паставіў маленькі датчык перад маім ноўтбукам. І, як вы бачыце, ён ужо разумее, што мая рука ёсць кіраваць ёю. І ўсё гэта прыкладной праграмы будзе алею невялікія рэчы як гэта. Але вы можаце бачыць, што, сапраўды, У мяне ёсць пяць пальцаў. Калі мы можам прымусіць яго зрабіць усё 10, вы можаце сабе ўявіць акуратны фартэпіяна дадаткам ці таму падобнае. Так што калі вы хочаце, каб прыдумаць пасля заняткаў сёння і гуляць з гэтым, як Што ж, сардэчна запрашаем у. Так пра гэта бліжэй да канца семестра. Такім чынам, пара адміністрацыйных Аб'явы. Адзін з іх, зрабіць раздзел, у гэтую пятніцу апоўдні cs60.net/section. Гэта гіперспасылка на курсы Хатняя старонка, а таксама. У той жа час, аднак, supersections дэбютуе ў гэтую нядзелю. Supersections з'яўляюцца аднаразовая рэч, таму што гэта займае некаторы час, каб працаваць , Хто ёсць у якім з падзелаў і дзе. Так што ў бліжэйшую нядзелю, там будзе адна падзел для тых, менш знаёмыя, адзін падзел для тых, больш зручнай. І тыя з вас дзесьці ў паміж могуць адправіцца да адзін ці абодва ці ніводнага. Абодва гэтых будзе зняты. Яны будуць у большай аўдыторыі, чым раздзел звычайна будзе цалі Але мэта тут, каб узброіць вас з некаторыя праблемы з камфортам ўсталяваць адзін, з С, CS50 прылады, гэта выходныя, нават перш чым вы даведаецеся вашу фармальнае прызначэнне падзелу. Такім чынам, вы сустрэнеце вашага TF і вашых меншых Група sectionmates прыкладна тыдня часу. Гадзіны працы, тым часам, Былі адбываецца. Ці скарыстацца імі або сёння ўвечары Заўтра ўвечары, калі вы хацелі б. Праблема набору 0 вырабляецца па пятніцу. Гэта дзень пазней, чым планавага чацвер. Але праблема з наборам 1, вы ўбачыце што яна ўключае ў сябе некаторыя размінкі практыкаванні, з якімі вы сябе можа пашырыць Чацвер тэрмін па пятніцу. Архіў задач 1, між тым, будзе дэбютаваць на вэб-сайце курсу маючы адбыцца Пятніца, калі вы хочаце, каб згарнуцца абаранкам з ён, як і я калісьці позна У пятніцу вечарам у вашай пакоі. Так cs50.net/appliance гэта месца, дзе Вы можаце атрымаць CS50 прыбора што мы пачалі выкарыстоўваць у панядзелак. Мы будзем выкарыстоўваць яго крыху больш сёння. Але будзьце ўпэўненыя, што праблема набор 1 спецыфікацыі, вы пройдзеце праз Менавіта дзеянні, якія неабходна каб атрымаць гэта і працуе. Так што не турбуйцеся аб выкананні, што да Pset 1, калі вы не хочаце. Добра. Такім чынам, мы глядзелі ў панядзелак на зыходны код, але ў кантэксце новага Мова праграмавання, а менавіта С. і С, У адрозненне ад нуля, не графічны. Гэта не галаваломкі. Гэта больш, англійская-падобны сінтаксіс. І ёсць пару крокаў На самай справе напісання і выканання Праграма на Сі, таму што акрамя крыніцы код, падобны гэтаму, трэба нешта называецца кампілятарам. І з пункту гледжання непрафесіяналы, што робіць кампілятар зрабіць для нас? Да. Студэнт: Ён пераўтворыць код што вы пішыце ў 0 і 1. DAVID малая: Добра. Такім чынам, ён пераўтворыць код, які пішам 0 і 1. Ён пераўтворыць так званага зыходнага кода для аб'ектны код, апошні з якіх выглядае трохі нешта накшталт гэтага. І гэта ваш працэсар, мазгі ўнутры кампутары, што з-за Людзі, якія стварылі гэтыя кампутары, ведаць, што гэтыя паслядоўнасці 0 і 1 сярэдняя. Можа быць, гэта азначае, друку. Можа быць, гэта азначае дадатак. Можа быць, гэта азначае адніманне. Можа быць, гэта азначае, паказваць карцінку. Ёсць наканаваныя шаблоны бітаў што свет вырашыў азначае пэўныя рэчы. Але па большай частцы ў гэтым курсе, мы будзем працаваць на больш высокім узроўні, і мы лічым само сабой якія разумеюцца, што існуюць рэчы, як кампілятары, якія могуць зрабіць наш зыходны код функцыі ў тым, як мы маем намер. І праграма, якую напісаў першы мінулым тыдні а потым стаў портам, так сказаць, у мінулым C Панядзелак, было гэта. Калі зялёны сцяг націску павітацца. Гэта, вядома, напісана на пустым месцы. І я сцвярджаў, што эквівалентна праграму ў C выглядаў трохі нешта накшталт гэтага. Так што я думаю, што мы зробім гэта на першы, давай дражніць адзін ад аднаго тое, што выглядае, на першы погляд, па агульным прызнанні, як справядліва таямніцай сінтаксісу, але вы пачнеце заўважаць, мадэлі даволі хутка. Тое, што мы таксама зробім сёння забяспечваюць Вы з псіхічнымі мадэлі для некаторых Canonical, некаторыя стандартныя канструкцыі у праграмаванні. І тады мы сапраўды атрымаем у свае рукі брудныя з некаторымі прыкладамі, а таксама. Так што для тых з вас, больш камфортным, разумею, што на гэтым тыдні, а затым наступны тыдні цалкам можа быць нешта накшталт агляду. Але асабліва, калі хакер выданне праблема набору 1 выходзіць на Вядома сайце ў пятніцу, я думаю, Вы знойдзеце, што, нават калі вы запоўніце некаторыя прабелы ў працягу наступнага тыдня або двух, Вы пачнеце атрымліваць ўсё больш выклік і сутыкаюцца новыя і новыя рэчы. Так што давайце дражніць гэтую праграму, акрамя некалькі радкоў за адзін раз. На самым версе, у нас ёсць тое, што тэхнічна называецца Дырэктыва препроцессора. Гэта проста радок кода, якая кажа ўключыць змесціва файла называецца стандартным I / N, стандартны ўвод - або, прабачце, стандартнага ўводу / высновы, стандартная ўвод / выснова,. г, усярэдзіне маёй ўласнай праграме. Такім чынам, іншымі словамі, калі я напісаў гэта праграма з простым тэкставым рэдактарам, як Gedit, тым прасцей эквівалент нешта накшталт Microsoft Word,, што Інструкцыя, # ўключыць stdio.h, проста скажу кампілятар, захопіце Змесціва гэтага іншага файла, stdio.h, і ўстаўляць іх прама тут. Зараз, навошта мне гэта трэба? Што ж мы сцвярджаць, што ўнутры гэтага файла названы stdio.h, якая захоўваецца дзесьці на маім цвёрдым дыску, або ў дадзеным выпадку, дзесьці ў CS50 прыбора? Хто-то паклаў яго туды для мяне. Але што гэта значыць? Так, так што гэта дэкларацыя Функцыя называецца Е. Так успамінае Е функцыя, якая дысплеяў слоў і знакаў і нумары на экране ў мае распараджэнні. Але я не пісаў. CS50 не пісаў гэтага. Хтосьці гадоў таму напісаў, і яны па сутнасці дала нам рэцэпт для яго у файле stdio.h. Так што першы радок проста дае мне доступ да функцый, што хтосьці іншы піша гадоў таму, сярод якія Е. Зараз, наступны радок я збіраюся махнуць рукой, па меншай меры да наступнага тыдня. Але цяпер, ведаю, што тап_п (несапраўднымі) з'яўляецца па сутнасці эквівалент гэтай жоўты кавалак галаваломкі, калі зялёны сцяг націснуў. Свету, шмат гадоў таму, вырашыў, што калі Вы пішаце праграму ў мову, званы C, вы пачынаеце Ваша праграма з лініяй , Які выглядае так. У амаль праз тыдзень, то гэта зробіць сэнсе, што дзесятковы, што такое пустата. Але на дадзены момант, проста думаць пра гэта як гэты жоўты кавалачак пазла. Цяпер наступнае, у нас ёсць фігурнай дужкі наступным на блізкую фігурнай дужкі, так бы мовіць. І мы ўбачым на працягу гэтых праграм на С, а таксама JavaScript і PHP. І гэта толькі інкапсуляцыі звязаных радкоў кода. Адкрытая фігурная дужка сутнасці кажа, вось ідзе некаторы код. А закрытыя фігурнай дужкі, якая з'яўляецца нахілены ў процілеглым кірунку, як раз сродкамі, вось менавіта для адпаведны код. Так сакавітыя лініі ў гэтай першай Праграма з'яўляецца апошнім, Е, катыровак канец цытаты, прывітанне свет. І я назваў рэчы паміж каціроўкі, што ў мінулы раз? Так што гэта радок. І радок проста тэхнар Тэрмін для паслядоўнасці сімвалы, словы, фразы. Нават адзін ліст магло быць у падвойных двукоссях. Але гэта паслядоўнасць з нуля ці больш знакаў. Зваротная касая рыса-N, тым не менш, выглядае крыху дзіўна. Але гэта проста азначае нешта просты ў кампутар. Што зваротны слэш-н? Новая лінія. Так што гэта проста спецыяльная паслядоўнасць знакаў, якія свет вырашыў сродкаў, якія ўкладаюцца радкі тут жа, таму што кампілятар на самой справе атрымаць блытаюць, як правіла, калі вы, вельмі зразумела, але няправільна, проста пачаць Націск Enter паставіць новых ліній у кодзе. Вы павінны быць трохі больш відавочныя, з касым-н. І мы ўбачым, ёсць некалькі іншых падобных шаблоны для адмысловых знакаў. Напрыклад, калі вы хочаце, каб вашы розум блукаць у кут выпадку, Выкажам здагадку, што я хацеў, каб надрукаваць падвойныя двукоссі на экране якой прычыне, што, здавалася б, быць трохі праблематычна, ці не так? Таму што, калі я паклаў у падвойныя двукоссі сярэдзіна "Hello, World", па тых ці іншых Прычына, чаму здаецца, што патэнцыйна праблемныя? Гэта разбівае радок. Кампілятар проста праграма. Такая праграма, як кампілятар проста будзе чытаць ваш код зверху ўніз, злева направа. І калі бачыць тры падвойныя двукоссі замест з двух, што ён не будзе ведаць, Калі вы маеце на ўвазе, што рэч у левую павінна быць радок, або рэч права, або ўсё гэта. Гэта неадназначна, і так, што тыповы кампілятар будзе зрабіць, гэта проста вырадак, і даць вам некаторы паведамленне пра памылку і зрабіць вас мець справу з праблемай. Таму, улічваючы, што зваротны слэш-н азначае новае лініі, што б вашыя інстынкты зараз пачатак быць, калі вы хацелі ўключыць нешта анамальнае, як двайны двукоссі ўнутры гэтага інакш двукоссях радкі? Зваротная касая рыса-падвойныя двукоссі. І так што мы ўбачым гэтую выгляд пра шаблон таксама. Калі вы хочаце зрабіць што-то трохі Дзіўна, вы выявіце, што Рашэнні часта ідуць ўзоры, і зваротную касую рысу пазначае кіруючай паслядоўнасці. І гэта проста азначае нешта асаблівае што мы павінны прадставіць у іншаму. А як вы ўяўляеце зваротную касую рысу, добра, мы будзем вернемся да гэтага. Але адказ, таксама, фактычна трохі відавочная. Такім чынам, давайце ўвядзем некаторыя іншыя праграмныя канструкцыі якія вы бачылі ў добрым стане. Вы, напэўна, само сабой якія разумеюцца ўжо калі вы ўжо нырнуў у Праблема усталяваны 0. Але давайце ўвядзем сінтаксіс ў C у адваротным выпадку для гэтых интуитивен ідэі, па меншай меры некаторых з іх. Так што гэта паняцце стану або Філіял, тады як раней мы ўяўляў яго з кодам, які выглядаў так у левай Scratch - Калі X менш Y, то так і скажыце - а ў цяперашні час у C - дазвольце мне адтачыць на у найпростым выпадку - мы проста збіраемся казаць, калі, адкрыйце дужкі, нешта дакладна - Лагічнае выраз будзе ісці дзе я сказаў стане - зачыняе дужкі, то рабіць тое, што Усярэдзіне гэтыя фігурныя дужкі. Так і тут, у фігурных дужках накшталт як для Scratch П-вобразныя часткі галаваломкі. Рабіце тое, што ўнутры гэтых фігурных дужках. У гэтым выпадку, слэш слэш. І заўважце, гэта наперад слэш, а ня зваротнай касой рысай. Касая рыса, касая рыса, для тых, хто ўжо запраграмаваны раней, проста азначае - гэта проста каментар. Каментар не з'яўляецца прамой кода, як такой. Гэта лінія англійскай, што вы, чалавека, напісалі дзеля сябе, каб магчыма, нагадаць вам, каб нешта рабіць, растлумачыць сабе, каб растлумачыць каго-небудзь яшчэ, што ваш код робіць. Гэта проста апісальны каментар. Цяпер, вядома, мы можам мець двухбаковы скрыжаванні дарог проста рабіць гэта, трохбаковы скрыжаванні дарог, робячы гэта, і калі вы будзеце працягваць гэтую шаблон, вы можаце мець чатырох кірунках, пятипозиционный, шэсць спосабам скрыжаваньняў, калі вам трэба працаваць, сапраўды, што многія ўмовы. І звярніце ўвагу на тое паралелізм тут - Калі (ўмова), астатняе, калі (ўмова), і адзінае, што крыху дзіўным з'яўляецца апошняй, якая гэта ўсяго толькі яшчэ. Але зноў жа, гэта ідэнтычна, Канцэптуальна, да таго, што мы зрабілі ўжо, хоць сінтаксіс ўзяць крыху прывыкнуць. Зараз, у гэтым прыкладзе ёсць некаторыя іншыя дзіўныя сінтаксіс. Мы бачым, Е зноў, якая адкрывае дужка, і якая зачыняе дужку. І ўнутры ёсць радкі ў двукоссях. Дужкі, у кантэксце з Е, перайдзіце на левай і справа ад чаго? Што мы апісвае, што цытуемы Радок ў больш агульным? Так што гэта аргумент. Кожны раз, калі ў вас ёсць функцыя, як і Е, а затым адкрытым і круглых Зачыніць хлопец і нешта ўнутры гэта, няхай гэта будзе радок, або цэлае, або што-небудзь яшчэ, справа ў паміж гэтымі дужкамі называецца аргумент. І аргумент проста ўплывае функцыі паводзін. У гэтым выпадку, гэта даволі ясна, як гэта зрабіць. х <у гэта тое, што перадаецца ў, так бы мовіць, у якасці аргументу. І Е збіраецца раздрукаваць менавіта гэта. Таму што, вядома, чалавек гадоў таму якія не рэалізаваныя Е меў ні найменшага падання тое, што мы, чалавечыя пераемнікі былі збіраецца выкарыстоўваць для Е. Дык вось чаму аргументы існуюць, ўплываць на паводзіны пасля функцыі было напісана. Цяпер, лагічны выраз. Мы бачылі раней у гэтых нуля. Аказваецца, у C вы таксама можаце "ці" іх разам, так бы мовіць. Дзве вертыкальныя палоскі азначае, што гэты блок кода, гэта зрабіць гэта, будзе выконвацца, калі першае ўмова праўдзіва або другое ўмова. І нават калі вы не маглі б зрабіць У гэтай нуля, вы сапраўды можа зрабіць гэта ў нуля, і вы таксама можаце выказаць сябе па-рознаму - калі першая ўмова і другое ўмовы дакладныя, то рабіць тое, што Усярэдзіне фігурных дужак. І гэтак жа, як у бок, прычына, гэта двайны Ампэрсанд і двайны Вертыкальная рыса, мы ўбачым, у канчатковым рахунку што адна вертыкальная рыса і адзін Ампэрсанд мець розныя сэнс у C. Так што на дадзены што дубляванне сімвалаў не выпадкова. Такім чынам, давайце ўявім, коратка, гэта крыху іншы сінтаксіс. Гэта не зусім пераносяцца на Нуля, але я сцвярджаю, што я магу рэалізацыі паняцце, калі яшчэ, калі інакш, калі яшчэ, калі яшчэ і стратах з выкарыстаннем тое, што называецца перамыкач заяве. І адзіная прычына, гэта сапраўды існуе , Каб проста даць вам, праграміст, крыху іншы спосаб вырашэння некаторых праблема, хоць па логіцы ён не дае вам ніякіх новых магчымасцяў. Пад гэтым я маю на ўвазе гэта. Калі вы кажаце, перамыкач, а затым прабел, а затым пара круглых дужак, усярэдзіне якіх ідзе выраз - і гэта магло б быць крыху невідавочным на першы, але гэта не аргумент, тэхнічна, таму што перамыкач не зьяўляецца функцыяй. Так што цяпер, проста выкажам здагадку, што мы выкарыстоўваем дужках у розных месцах па розных прычынах. Так перамыкач на выраз значыць, я магу пакласці зменную ўнутры гэтых дужках, дзе ён кажа выразы. І потым, калі гэтая пераменная - Выкажам здагадку, што гэта завецца х, і гэта проста цэлы лік - Затым я магу пералічыць на мой слайд Тут нешта накшталт гэтага. Калі X мой зменнай, і я хочуць нешта рабіць, калі X роўная 1, я магу зрабіць гэта. Калі я замест гэтага хочуць зрабіць што-то Калі X = 2, я магу зрабіць гэта. У адваротным выпадку, калі я хачу зрабіць што-то яшчэ цалкам, у мяне можа быць па змаўчанні ў выпадку гэтым выпадку я раблю гэта іншая рэч. Так што ў гэтым сэнсе гэта эквівалентна Калі X роўная роўная 1, інакш, калі яшчэ, але я кажу пра гэта толькі таму, што зараз мы ўбачым яго зноў. Але на дадзены момант, проста ведаю, што ён існуе. Добра. Такім чынам, гэтыя апошнія пару трохі больш складаныя, на першы погляд, але яны робяць нешта даволі проста. Цыкл у З з'яўляецца кавалак кода, які проста робіць што-то зноў і зноў і зноў. І адзіная раздражняльная рэч пра яго, , Што ў тым, што гэта крыху загадкавае , Каб выказаць сябе ў гэтым цыклічным карціна, але свет на стандартызаваныя наступным чынам. Пры выкарыстанні цыклу, у вас ёсць пару круглых дужак зноў. І звярніце ўвагу на дзве кропкі з коскай у там. Гэтыя дзве кропкі з коскі тры асобных розных выразаў ўнутры дужках. Адным з іх з'яўляецца так званая ініцыялізацыі. Адным з іх з'яўляецца так званае ўмова. І гэта так званы абнаўленняў. Паглядзеў у абстрактнай, гэта зусім не відавочныя, так што давайце паглядзім на канкрэтным прыкладзе. У драпін у нас быў паўтор блока. І гэта Блок сказаў паўтарыць 10 разоў, скажам "Hello, World". Дазвольце мне прэтэндаваць на цяпер, і мы вернемся да гэтага, і Гэта таксама будзе атрымліваць больш знаёмыя Вамі ў бліжэйшы час, што эквівалентна C код можа быць названа гэта - для пастаноўкі і прабел, пара дужках, звярніце ўвагу на кропку з коскі ў там, якія аддзяляюць тры розных рэчы, ініцыялізацыі стане, і абнаўлення. І зрабіць здагадку, што першы робіць. INT I = 0. З пункту гледжання грубай непрафесіянала, што , Што робіць для нас, напэўна? Так што так. Гэта аб'ява зменнай называецца I, і гэта дае яго, якое значэнне? 0. Так ён стварае зменную з імем Я, захоўванне значэнне 0 у ім. Гэта так званы ініцыялізацыі. Добра, зараз я сцвярджаў да што сярэдняя рэч, я <10, гэты стан. Так што ж рабіць? Ну, што цыкл робіць, калі праграма з пятлёй для запуску, з'яўляецца кожны раз, калі кампутар праходзіць праз гэтая пятля, зверху ўніз, зверху дно, гэтак жа, як вы, хлопцы, зрабілі, калі лічачы сябе і седзячы, зноў і зноў і зноў, кампутар будзе праверыць, што ўмова. І калі б я менш за 10, ён будзе рабіць гэта зноў. Калі я менш за 10, ён будзе рабіць гэта зноў. Калі я менш дзесяці, ён будзе рабіць гэта зноў. Так што, здаецца, мяркуе, што Спадзяюся, у мяне мяняецца. У адваротным выпадку мы павінны былі б у бясконцы цыкл. І сапраўды, я змяняецца, таму што Апошняе, што пасля кропкі з коскай там з'яўляецца некалькі загадкавым сінтаксісам я + +. Але тыя з вас, хто ўжо зрабіў гэта раней, гэта проста азначае, Усё вельмі проста, што? СТУДЭНТЫ: [прамежкавае VOICES]. DAVID малая: Дадаць 1 да я. Павялічваем я. Такім чынам, мы ўбачылі драпін галаваломкі П'еса для, што, на самай справе. Гэта не было падобна, я + +, але гэта проста сродкі, папросту кажучы, павялічваем каштоўнасць, якую я на 1 кожны раз, калі вы робіце гэта. Так літаральна, можна пачаць з Я ініцыялізацыі ў 0. Затым праверыць стан. Будзе 0 менш за 10? Да. Мы ідзем праз пятлю. Наступнае, што я прэтэндаваць на кампутары збіраемся зрабіць, гэта ён збіраецца Я, каб павялічыць. Так што я цяпер 1. Ён правярае стан. На 1 менш чым 10? Вядома. Так робіць гэта зноў. Тады ён павялічвае I + + 2. На 2 менш 10? Да. І зноў і зноў і зноў. І ў рэшце рэшт, з-за плюс-plussing, мы дабіраемся да Я = 10. З'яўляецца 10 менш, чым 10? Ну, відавочна, няма. І гэта кропка, у якой цыкл проста спыняецца. І калі ў вас ёсць больш кода на унізе экрана, кампутар даходаў, што для запуску кода замест. Такім чынам, яшчэ раз, нават калі гэта будзе выглядаць і адчуваць сябе крыху дзіўна Па-першае, вядома, для тых з вас, хто ніколі не запраграмаваны раней, літаральна памяншае канцэптуальна да таго, што ў адваротным выпадку вельмі просты галаваломкі частку ў добрым стане. Добра, я абяцаў, што б быць і іншыя аналагі ў добрым стане. Там у гэты раз таксама. І мы ўбачылі гэта ў двух словах апошні раз. Але памятайце назаўжды блакаваць ў пустым месцы? Ён проста робіць нешта вечна? Я сцвярджаў, што вы маглі б рэалізаваць гэта такім чынам. І вы можаце рэалізаваць гэта ў кучу-рознаму. Але ў той час як контур проста іншы шлях у C выказаць сябе. У рэшце рэшт, вы не можаце зрабіць нічога з у той час як цыкл, які вы не можаце з цыклу. Такім чынам, яны ў канцы дзень функцыянальна ідэнтычныя. Але ён дазваляе вам выказаць сябе крыху па-іншаму ў наступным чынам. З той час як цыкл, гэта тое, што ў дужках, што гэта яшчэ раз праверана і зноў і зноў. І як толькі гэта выраз ілжыва, то цыкл спыняе выкананне, і кампутар працягвае запускаць любыя іншыя коды ёсць у вашым файле. Але што цікава тут што я літаральна набраныя праўда. І сапраўды з'яўляецца адным з відаў лагічнае значэнне, сапраўднае або ілжывае значэнне. Так можа калі-небудзь стаць сапраўдным ілжывымі, калі я літаральна жорстка яго ў маёй праграме? Так што не. Гэта крыху дзіўна, што я гэта зрабіў. Але дакладна, то дакладна. Там няма плюс plussing. Там няма выкарыстанне зменных тут. Так, таму што я жорстка ў той час як гэта праўда, гэта завесы заўсёды будзе ацаніць зноў і зноў і зноў. Дык колькі раз прывітанне свет збіраецеся друкаваць на экране? Назаўжды. Бясконцую колькасць раз, пакуль не акумулятар памірае ці іншыя знешнія падзеі. Так што гэта, верагодна, не лепшая праграма пісаць, таму што, калі карыстачу ніколі не можа кінуць сваю праграму, гэта верагодна, не тое, што вы хацелі. Але часам, праграмы павінны ёсць бясконцы цыкл. Напрыклад, калі ваш кампутар мае Гадзіннік на ім, гэта, вядома, было б добры, калі вашыя гадзіны яна пастаянна абнаўляць Сам назаўжды, хоць раз у Другая або раз у хвіліну ці нешта накшталт гэтага. Такім чынам, нават бясконцыя цыклы маюць сваё месца. Добра. Нарэшце, гэта адно. І на гэты раз крыху па-іншаму функцыянальна, і мы вернемся да Гэта, верагодна, у Pset 1. Але ёсць і іншы тып цыкла называецца рабіць падчас цыклу. І адзіная розніца паміж рабіць падчас цыкла і, скажам, у той час як пятля, у тым, што правяраецца стан не Перад выкананнем кода, але пасля выкананні кода. Так у верхняй часткі для у той час як завесы, у той час як рабіць падчас правярае яго на дно. І гэта проста азначае, што ў той час як пятля , Як правіла, працуюць больш разоў ці меншая колькасць разоў, чым у той час як цыкл? Патэнцыйна больш разоў, таму што рабіць у той час як цыкл выразна казаць гэтага толькі пасля чаго вы праверыць калі ўмова ўнутры дужках дакладна. Такім чынам, мы ўбачым гэта зноў верагодна, у Pset 1. Калі вы заўсёды хочаце зрабіць што-небудзь у меры адзін раз, а затым, можа быць, яшчэ некалькі разы, гэта добра пабудаваць у выкарыстанні. Але ў той час як контур, наадварот, будзе правяраць яе стан у першую чаргу. І вось менавіта для завес ў С, але у той час, у той час, так і для завес. І зноў жа, яны адлюстроўваюць вельмі прыгожа назад падрапаць, акрамя гэтага не досыць мець той жа аналаг ў добрым стане. Ну, як, у цяперашні час, зменныя? Дык вось як я абвясціў зменную сінтаксічна на днях. У мяне была Інтэлект, які я сцвярджаў, з'яўляецца цэлым лікам. У мяне тады была зменную лічыльнік, а затым з коскі. Так што ж такое гэты радок кода робіць? Гэта, папросту кажучы, абвясціўшы зменнай - гэта значыць, задаючы кампутара, дай мне некаторы аб'ём памяці, даць мне некалькі бітаў - у які я магу захоўваць што? Int. І кропкай з коскі проста азначае, канцы радка кода. Цяпер, у другім радку, верагодна, даволі здагадацца. Што такое лічыльнік = 0; робіш? Гэта прысваенне 0 да лічыльніка. І вось гэта і ёсць іншая рэч , Гэта крыху раздражняе у параўнанні, скажам, алгебры. У той час як у алгебры, знак роўнасці азначае, роўных, тут, у C, роўную знак азначае прызначэнне. Дык гэта значыць пакласці тое, што знаходзіцца на правільным у тое, што злева. І мы ўбачым яшчэ адзін знак, роўна роўных, калі мы хочам на самай справе праверыць па якасці, некалькі прыкра. Але гэта крыху неэфектыўна. Гэта свайго роду раздражняе, што ў мяне ёсць абвясціць зменную і затым даць яму значэнне. Так што на самай справе C дазваляе нам спрасціць гэты і проста зрабіць гэта ўсё адразу. Вы можаце абвясціць зменную на левай баку. Вы ўсё яшчэ можаце выканаць заданне на права, паставіўшы знак роўнасці, што ў сярэдзіне. Такім чынам, у рэшце рэшт, гэтыя два эквівалентныя, але гэта, шчыра кажучы, Верагодна, лепш звычка толькі таму, што крыху менш кодзе, гэта крыху лягчэй чытаць, і ён проста падкручвае кодзе, так бы мовіць. Любыя пытанні, да гэтага часу на завесах, на зменныя, ад умоў, у Лагічныя, альбо тэхнічна або канцэптуальна? Добра. Так што зараз гэта наступны атрымлівае крыху больш цікавым. І гэта прыклад, які я паклаў у мінулым час, калі гэта адлюстроўвае драпін прыклад да C. Такім чынам, функцыю. З пункту гледжання непрафесіяналы, што такое функцыя? Мусіць, трэба смялей з Вашым адказам. Што такое функцыя? СТУДЭНЦКАЯ: Ці ёсць што-то. DAVID малая: Што гэта? СТУДЭНЦКАЯ: Ці ёсць што-то. DAVID малая: Ці ёсць што-то. ОК. Мы пачнем там. Так функцыя павінна што-небудзь зрабіць. Так што гэта кавалак кода, які па сутнасці рэалізаваны ў іншым месцы, што сапраўды нешта робіць. Цяпер, што цікава аб функцыі з'яўляецца тое, што ён можа прыняць ўвод, і яна можа вырабіць выхад. І давайце на самай справе ўзяць Паглядзі на гэта. Так Чалавек за шырмай было наўмысным хвіліну таму. Тут у нас ёсць табліца. Але выкажам здагадку, што гэта на самай справе ўяўляе сабой вялікі скрыню. Такім чынам, гэта так званы чорны скрыню. І наогул, у канструкцыі, у кампутар навукі, чорныя скрыні проста спаслацца на функцыянальныя часткі, што нехта рэалізаваў, а вы няма абавязкова ведаць, ці ўсё роўна, як гэта рэалізаваны пад капотам. Вы проста ўсё роўна, што гэта чорны скрыню, які мы зараз пачаць называць функцыі, робіць што-то. Так, напрыклад, калі гэта чорная скрыня на этапе тут прадстаўляе Е, функцыі, я ведаю з папярэдніх прыкладаў Е, што прымае адзін або некалькі аргументаў, прычым першы з іх Аргументы павінны быць радком, як і "Hello, World". Ну, калі я чалавек напісання праграмы, і я хачу выкарыстоўваць Е, Я, напрыклад, можа ўзяць кавалак чыстай паперы тут і чорны маркер і напішы на ім - Я няправільна "Мір" - H-E-L-L-высновы. Так што я вазьму мой чорны маркер і я буду пісаць, як вялікі і разборліва, як я магу на гэтая паперка, "Hello, World", і Цяпер я сцвярджаю, гэта мой аргумент. Гэта радок прадстаўлена ліст белай паперы. І мой ўклад цяпер да функцыі Е будзе гэтага. Так я называю Е, праходзячы Аргумент, што ў якасці ўнёску ў яго. І зараз, я не ведаю, як чалавек, які напісаў Е зрабіў гэта гадоў таму, але Я ведаю ад свайго дакументацыі, яго мэта ў жыцці, каб надрукаваць тое, што я падае яго ў якасці ўваходных дадзеных. І таму, хоць гэтая рэалізацыя гэта без майго ведама пад капотам, у цяперашні час Я бачу, о, гэта робіцца. Ён нешта на экране. І ў цяперашні час кантралююць праграмы, калі ёсць былі некалькі радкоў кода, будзе ўжо вярнуліся да мяне. І таму той факт, што Колтон - дабраславіць яго сэрца, хаваецца тут пад стол перад усімі вамі - з'яўляецца наўмысным ў гэтым я не ведаю, і я не хвалюе, як Е з'яўляецца рэалізаваныя. Я проста ведаю, зноў жа, ад яго дакументацыі, што ён робіць і як я я павінна яго выкарыстоўваць. Зараз, нагадаем, што Е можа атрымаць трохі больш складаным. Зноў жа, мы проста гаворым пра эквівалент Say Агульная для Scratch. Але я таксама зрабіў гэта ў мінулы раз. Я хацеў, каб мой прывітанне праграме трохі больш дынамічным, а не проста цяжка код нешта накшталт "свет", і дакладна не цяжка нешта код адвольнае, як D - V-I-D ў праграму. Я хацеў спытаць у карыстальніка яго ці яе імя, а затым зрабіць што-то з гэтага радка, якія яны падаюць. Такім чынам, ёсць нешта не зусім тут. Е, хвіліну назад, сапраўды, на самай справе, нешта зрабіць, але гэта не вярнуў мне нічога. Дакладна? Колтон ня перадаць мне нічога назад, не ліст паперы. Быў проста пабочны эфект. Мой прадастаўлення "Hello, World", як Аргумент Колтон прывяло да Пабочны эфект слова, некалькі слоў, якія з'яўляюцца на экране. GetString, хоць, крыху розныя. GetString таксама функцыю, але яна вяртае некаторы значэнне. Гэта не проста эстэтычны эфект боку. Гэта фактычна дае мне, чалавеку выклікам або з дапамогай функцыі, нешта наўзамен. Таму ў дадзеным выпадку, з'яўляецца GetString выклікаецца з адкрытым GetString Хлопец, побач хлопец. GetString Ці, такім чынам, прыняць любыя аргументы ці ўваход? Не, здаецца, няма. Яго мэта ў жыцці толькі, каб атрымаць радка. Ён не мае патрэбу ў больш падрабязна, чым гэта. Такім чынам, дазвольце мне ісці наперад і рабіць выгляд, што, Зноў жа, гэта чорны скрыня не Е, але GetString, і дазвольце мне, чалавеку напісання гэтай праграмы, патэлефанаваць ці выкарыстоўваць GetString, проста напісанне G-E-T-S-T-R-I-N-G, адкрытая дужка, побач Хлопец, GetString. Зараз, я паняцця не маю, як CS50 персаналу рэалізаваны GetString, але я ведаю, што калі я досыць доўга чакаць, ён будзе рабіць сваю рэч пад капотам, магчыма з выкарыстаннем некаторыя зменныя, можа быць, з дапамогай некаторых умовах, можа быць, выкарыстоўваючы некаторыя завесы, магчыма з выкарыстаннем некаторых функцый, магчыма з выкарыстаннем - проста спрабуючы затармазіць - магчыма з выкарыстаннем некаторыя іншыя функцыі праграмавання. Але калі я досыць доўга чакаць, - на самай справе, ў кампутары, гэта адбываецца супер хутка - калі я досыць доўга чакаць, гэтая функцыя GetString збіраецца атрымаць радок ад карыстальніка, які меркавана ўводу яго на сваёй клавіятуры, і Затым, калі вы GetString робіцца атрыманні гэтыя сімвалы ад карыстальніка і захоўванне іх у радок, што Функцыя, GetString, будзе мець гатовыя для мяне некалькі выходных якой я збіраецца атрымаць шляхам аператар прысвойвання. І калі я пайду, сапраўды, у выхадныя Тут Obosi шчодра ўдзел, не ведаючы пра гэта прасоўвання, напісаўшы сваё імя на гэтай зменную, якая ўяўляе радка. Цяпер аператар прысвойвання азначае, што нават хоць гэта можа адчуваць сябе крыху залішнім, я на самой справе трэба зрабіць маю ўласную копію гэтага. Паколькі на левай руцэ боку - воклічы! - Я заўважыў, што па сутнасці ёсць радок назваць на левай баку. Так што я таксама збіраюся зрабіць мая ўласная копія гэтага. І гэта крыху хлусня, таму, што мы ўбачым на працягу тыдня або двух ў Час, што радкі, на самай справе не тое, што яны здаюцца. Але на сённяшні дзень, вось вяртаецца значэння. Вось мая ўласная копія яго пасля з дапамогай аператара прысвойвання. А цяпер, што я хачу рабіць далей? Цяпер у нас ёсць другі двух радкоў кода. Так што я цяпер хачу называць Е. Давайце ўявім, што цяпер, калі чорная скрынкі зноў вярнуўся да таго, Е, а ня GetString. Printf на гэты раз збіраецца ўзяць, колькі аргументаў? Так што глядзіце, гэта як два. Там дзве коскі там, але адзін з тых, коскі, гэта ўнутры двукоссяў. Такім чынам, першы аргумент літаральна будзе гэтага. Н-Е-Л-Л-О, коска, працэнтаў з, зваротны слэш-н. І цяпер я, якія забяспечваюць не адзін аргумент, але два аргументу Е. І тое, што Е павінен рабіць з гэтыя два ўваходу пасля таго, як перадаць іх у ў якасці аргументаў? Гэта, як мяркуецца прыняць другі з іх, які я назваў імя, так Другая частка артыкула я напісаў Хвіліну таму называецца імем. Гэта збіраецца штэкер значэнне ўнутры гэтай зменнай у запаўняльнік, % S, так што, зноў жа, усяго за імгненне час, мы ўбачым пабочны эфект патэлефанаваўшы Е, дзякуючы чаму зараз мы бачыць не "Hello, World", а "Добры дзень, Obosi ". Так вялікія апладысменты на абодва нашых валанцёраў, з якіх толькі адзін ведаў, гэта будзе адбывацца. Добра. Так, можа быць, проста, як гэта было, Вядома, калі вы ўжо знаёмыя з такімі, мы спадзяемся, вы ніколі не будзеце забываць, што візуальнае прыватнасці аб тым, як функцыі працуюць. Такім чынам, ёсць больш, чым проста GetString. Усярэдзіне CS50 бібліятэкі, ёсць цэлая куча функцый, кожная з якіх капитализируются толькі, каб зрабіць ясным , Якую мы напісалі гэтыя функцыі. Як правіла, у C, амаль кожны другі функцыі вы будзеце выкарыстоўваць у ніжнім рэгістры. Але мы свядома выкарыстоўваць загалоўныя літары проста даць зразумець, што гэтыя рыхтуем колы роду, што мы будзем выкарыстоўваць на працягу ўсяго некалькіх тыдняў, што спрасціць працэс атрымання ўвод ад карыстальніка. Бібліятэка CS50 нічога не робіць што вы самі не маглі зрабіць па толькі з дапамогай кода з C Oldschool падручніка. Але, зноў жа, мы выкарыстоўваем іх у якасці навучання Колы роду для ўсяго пару тыдняў, так што мы можам пазбавіцца ад складанасці, што вы хутка зразумееце сябе рабіць нешта, як адносна простыя, як атрыманне ўвод ад карыстальніка. Так што ведаю, што вы будзеце мець доступ да GetChar, GetDouble - падвоіцца. Як там - і тады GetFloat. Што такое плавае? Давайце пачнем там. Студэнт: [неразборліва]. DAVID малая: Да. Гэта лік з дзесятковай кропкай. Так што хоць цэлалікавай з'яўляецца цэлым лікам, якое проста нумар з 0 да 9, некаторага колькасці паўтораў гэтага, Паплавок нешта з коскі. І двайны, тым часам, таксама лік з дзесятковай кропкай, але больш лічбы пасля дзесятковай кропкі, патэнцыйна. Такім чынам, мы вернемся да гэтага ў бліжэйшы час. Але, як правіла, кожны з гэтых тыпаў Дадзеныя, кожны з гэтых тыпаў зменных што бібліятэка, як наша можа вярнуцца да Вы, выкарыстанне рознага колькасці бітаў захоўвання інфармацыі. Як правіла, Чары, якая проста азначае, адзін знак, выкарыстоўвае 8 біт. І што на самой справе ў адпаведнасці з нашымі Байт добраахвотнікаў мінулым тыдні хто падышоў і ўяўляе сабой адну Знакаў ASCII адначасова. Так Char роўны 8 бітам. Паплавок, здараецца, 32 біт, звычайна. І двайны, як няцяжка здагадацца, з'яўляецца на самай справе 64 біт, што проста больш, якая азначае, што вы можаце мець больш нумара або большай дакладнасці. Але зноў жа, пра гэта ў іншы раз. GetLongLong, тым часам, хоць глупствам называецца, на самай справе проста цэлы лік, якое ў два разы большыя, у два разы доўга, магчыма, як звычайны цэлае, 64 біта замест 32. І GetString мы выкарыстоўвалі. Але, аказваецца, у бібліятэцы CS50, якая рэалізуецца, як мы ўбачым, у выглядзе двух файлаў, адзін з якіх называецца cs50.h, ёсць два іншых Тыпы дадзеных у ім. Булевы не існуюць у C. Вы можаце мадэляваць іх толькі з дапамогай 0 і 1 ўсёй вашай праграмы. Але мы ў CS50 стварылі бібліятэку Сімвалы "праўдзівай" і "ілжывай" для прадстаўлення 1 і 0, таму вам не ёсць што-то на жорсткі код літаральна як 1 і 0. Але мы ўбачым тыя зноў. String, таксама не існуе. І менавіта таму я згадаў гэта трохі хлусня на дадзены момант. Але мы будзем адхіліце, што пласта ў хуткім часе. Але цяпер, радок паслядоўнасць знакаў. Між тым, у C, вы сапраўды маюць розныя тыпы дадзеных. Звярніце ўвагу на гэтыя пішуцца малымі літарамі. Такім чынам, функцыі, якія вы бачылі хвіліну назад -Функцыі, напісаныя CS50, што вернецца да вас значэнне, якое падае ў адну з гэтых катэгорый. Пару лістоў чыць проста пасадзіць насення тут. Е не проста прыняць% S ў якасці запаўняльнікаў. Ён прымае% D для дзесятковых лікаў, або% Я б працаваць таксама. % F з'яўляецца якая плавае кропкай. % З для сімвал, калі вы хочаце проста падлучыць адзін знакаў у радку адфарматаваны як мы рабілі, вы можаце выкарыстоўваць% С. А потым, трохі прыкра,% LLD з'яўляецца на працягу доўгага, доўгія цэлыя дзесятковыя, які проста азначае, што калі вам патрэбен сапраўды вялікая колькасць і вы выкарыстоўваеце нешта называецца вельмі доўга, што мы прыедзем таму ў PSET, вы можаце выкарыстоўваць% LLD да скажыце Е, падключыць сапраўды вялікі цэлае тут у якасці свайго другога або некаторыя іншыя аргументы. І, нарэшце, я абяцаў, што ёсць некалькі іншых ўцёкі паслядоўнасцяў, Е падтрымлівае. Мы бачылі зваротны слэш-н. Зваротная касая рыса-R вы можаце ўбачыць. Гэта накшталт старой школы рэч. Калі вы калі-небудзь выкарыстоўвалі рэальныя гадоў пішучая машынка назад, і вы выцягнулі на дзяржальні якія не толькі круціла кола перамесціце лінейку, ён таксама пераехаў Усё гэта ўвесь шлях назад да левай, ну, зваротны слеш-R проста істотна перамяшчае курсор назад ў пачатку лініі ня рухаючы яго ўніз. Але зноў жа, пра гэта, Можа быць, у будучыні. Зваротная касая рыса двукоссі, зваротны слэш-падвойныя двукоссі, зваротны слеш-слеш Рашэнне маленькія загадкі Я згадваў раней. І зваротны слеш-0 на самай справе даволі цікава. Але мы вернемся да што ў хуткім часе. Такім чынам, дазвольце мне ўвайсці, зараз, CS50 прылады, і давай на самай справе Хуткі падагрэў з адным з прыкладаў мы ўжо і затым перайсці да нешта крыху больш складаным. Так што калі я адкрываю маю праграму называецца Gedit - гэта мой графічны рэдактар. І я магу зрабіць гэта - Дазвольце мне зачыніць гэта акно там - шляхам гэтага абраза тут, унізе, Gedit, у левым ніжнім куце побач з меню. Я збіраюся ісці наперад і наперад, і захаваць у гэтым прыкладзе, скажам, Джона Гарвард тэчку. Тэчка Джон Гарвард, усяго дома яго каталог, у якім усё яго файлы жыць па змаўчанні. І я іду, каб выратаваць гэта як файл з імем Hello-0.c. І я выбраў гэта імя проста так, лініі з узорам кода на Вядома аўтара і ў YouTube відэа ў Інтэрнэце. Так што цяпер я збіраюся пачаць напісаць сваю першую праграму. Дазвольце мне для павелічэння пераборлівасці. І я збіраюся ісці наперад і сказаць дзесятковага Асноўны пустата, якую проста так жоўты кавалак галаваломкі, якія запускае праграму. Я атрымаў у звычку за гадоў адкрыцця майго фігурнай дужкі, то Таксама яго закрыцця, а затым вяртаючыся да дзе я хачу паставіць мой код, проста , Таму што гэта дапамагае мне трымаць усё збалансаваным, тым больш, што мая Праграма атрымлівае доўгае. І цяпер, тут, я збіраюся ісці наперад і сказаць, Е, у двукоссі, прывітанне свет, зваротны слэш-н, недалёка цытаты, якая зачыняе дужку, кропка з коскі. Так што я проста паўтараў усё, што мы прымаюць як належнае да гэтага часу. Цяпер я збіраюся, каб паменшыць маштаб. І гэта акно тэрмінала тут, што ці магу я зрабіць у гэтай чорнай і белае акно? Што я магу яго выкарыстоўваць? Дык вось дзе я бягу каманды і дзе я магу скампіляваць некаторыя рэчы. І я збіраюся зрабіць яго простым. Я збіраюся выкарыстоўваць праграму называецца марка, якая ня Тэхнічна кампілятара. Называецца кампілятара Clang, але мы вернемся да гэтага праз тыдзень ці два час. На дадзены момант, я проста хачу, каб тып Марка прывітанне-0, але тыя з вас, хто параўнання ў вашых розумах, што я толькі набралі да таго, што я павінен быў набраны можа ўжо ведаеце, што я зрабіў нешта тут не так. Зараз, ёсць выразна некаторыя памылкі. Перш, чым я нават глядзець на тое, што яны, у любы думкі пра тое, што я зрабіў не так? СТУДЭНТЫ: [прамежкавае VOICES]. DAVID малая: Да. Мне не хапае загалоўка файла бібліятэкі. Любы з іх. Файлаў г называюць загаловак файлы, а яны ўсе разам належаць рэчы называюцца бібліятэкамі. Бібліятэкі проста кавалкі кода што іншыя людзі напісалі. Такім чынам, стандартны [? Я?] Бібліятэка калекцыю файлаў, якія змяшчаюць код што іншыя людзі напісалі. Так што мне не хапае гэтага. Такім чынам, чаму я атрымліваю паведамленне пра памылку? Ну, дазвольце мне пракруціць таму ў маё акно тэрмінала тут. І, на жаль, у C, а ў вялікай колькасці Мовы праграмавання, асабліва Калі ўсё гэта для вас у навінку, памылка паведамленні дакладныя, але яны таксама даволі загадкавым. І памылкі тут, у чырвоным, з'яўляецца "Няяўных аб'яўленні бібліятэчнай функцыі Е з тыпам ", а затым яна пракручваецца на наступны радок, «INT будаўніцтва сімвал *, ... "Гэта проста становіцца сапраўды Пераважная хутка. Але тое, што вы павінны пачаць рабіць, калі, зноў жа, новыя на ўсё гэта, гэта проста пачынаюць шукаць па ключавых словах. Відавочна, што я не мог зразумець палову слоў я бачу толькі пакуль. Вы будзеце, тым не менш, у тыднёвы тэрмін. Але я бачу, Е. І гэта павінна пачацца, у хуткім часе, каб бегаць памяці, усё ў парадку, Е. Нешта не так з Я. Хіба я запісаць гэта так? Не, гэта не падобна - а. Я не магу выкарыстоўваць яго, калі я не навучыць кампілятара, што ён існуе. І так, зноў жа, ісці з вашым інстынктам, нават калі вы на самой справе не разумеюць фактычныя паведамленні пра памылкі. І сапраўды, рашэннем тут з'яўляецца проста ўключыць яго ў верхняй частцы файла так, Пересохранение мой файл з Control-S або ў меню Файл. І калі я зараз вярнуся сюды, Я збіраюся ачысціць гэта. Control-L з'яўляецца проста добры спосаб Для ачысткі экрана. А потым я збіраюся набраць "зрабіць прывітанне 0 "Enter, і цяпер я ўсё яшчэ бачу загадкавыя паслядоўнасць знакаў, але мы вернемся да гэтага. Гэта тое, што робіць робіць для вас. Гэта аўтаматызацыя працэсу прыняцця даволі раздражняльным удзелам каманд Clang, фактычнае кампілятара. Але тое, што ў мяне няма памылкі азначае, што гэтая рэч павінна працаваць. Так што я зараз збіраюся зрабіць - Дазвольце мне яшчэ раз павялічыць - ./hello-0 Enter, ды і наогул, я бачу, "Hello, World". Такім чынам, давайце павышэння гэта вельмі няшмат проста паўтарыць крокі, якія мы прызначаныя. Я збіраюся перайменаваць гэты з Захаваць як, каб hello1.c. А цяпер я збіраюся абвясціць зменную называецца імя, так што імя радкі, і я збіраюся пакласці ў яго Значэнне катыровак канец цытаты D - V-I-D буйным цытатай коскі. І цяпер я збіраюся замяніць "Мір" з тым, што запаўняльнік для радкі? % S. А цяпер, колькі аргументы павінны Е ўзяць на гэты раз? Так два. Так што я выходжу на вуліцу з цытат. Я тыпу "імя" пасля коскі. Але я зрабіў што-то яшчэ так на гэты раз. Але давайце выкажам здагадку, што я не зрабіў разумею, што яшчэ. Адпусці мяне тут. І заўважце, таксама, я атрымліваю трохі сумна набраўшы "0 прывітанне зрабіць" усё час, "рабіць" і ўсё гэта. Такім чынам, аказваецца, у Лінус вы можаце часта біла стрэлку уверх на вашым клавіятура, і вы можаце фактычна пракруткі праз усе каманды, якія я выкананы папярэднія цяпер і зоймемся. Так што, калі я гэта зраблю, уверх, уверх, ёсць зрабіць прывітанне 0. Я не хачу гэтага. Я проста хачу, каб змяніць гэта, каб прывітанне 1 на гэты раз, Enter. У рэшце рэшт, што будзе зэканоміць ваш час. Добра. На жаль, ёсць памылка. Такім чынам, дазвольце мне пракруткі ўверх. Гэта выглядае як я сапраўды выразалі гэтай праграмы. Я маю на ўвазе, мой бог, гэта два радкі кода, і 10 радкоў памылак. Але паглядзіце на верхні першы. Выкарыстанне неаб'яўленай радкі ідэнтыфікатара. Я меў на ўвазе стандартныя I N? Не, я гэтага не зрабіў. Я меў на ўвазе радка. Але дзе ж радковым зменнай тып, абвешчаны, дд мы можам сказаць? Так што гэта ў CS50 бібліятэкі. Так што не хапае, у гэтых першых пару тыдняў проста выкарыстоўваць C, што дае нам. Я таксама збіраюся падняцца тут, і я мог бы паставіць яго вышэй або ніжэй, але я буду проста трымаць яго алфавітным каб трымаць рэчы упорядоченно. Я збіраюся ўключыць cs50.h, які папярэдне ўсталяванай для Вы на CS50 прыбора. І гэта з адкрытым зыходным кодам, так што нават людзі ў Інтэрнэце, можа выкарыстоўваць яго на сваіх ўласных кампутараў. Але гэта прыходзіць з CS50 прыбора. Так што цяпер дазвольце мне вярнуцца і перакампіляваць зрабіць гэта з 1 прывітанне. Чорт вазьмі. Яшчэ адной памылкай. Дазвольце мне прагортку да першага, усё ж. Гэта адно гэта крыху складаным. Многосимвольные знакавая канстанта. Гэта не дапамагае мне. Але звярніце ўвагу, Clang, па меншай меры трохі трохі прыстойны, прычым з невялікім зялёныя ўстаўкі сімвала, ён кажа: вось дзе я аблажаўся. Чаму гэта паказвае, з гэтай маленькай зялёная стрэлка, на наступны адзінарныя двукоссі на маё імя? Так што гэта адна з рэчаў, якія вы проста прывыкнуць, асабліва калі вы былі праграмаванне на Python ці JavaScript, або іншых мовах, дзе гэтая дэталь не мае значэння. У C, гэта мае значэнне. Калі вы аб'яўляеце радок, якая з'яўляецца паслядоўнасцю 0 або больш сімвалаў вы на самой справе павінны выкарыстоўваць падвойныя двукоссі. Так што я на самой справе трэба, каб змяніць гэта таму , Каб адкрыць цытаты, цытаты блізка, з падвойныя двукоссі. Адзінкавыя двукоссі, маюць сваё месца, але толькі тады, калі вы выкарыстоўваеце асобныя сімвалы, але пра гэта ў іншы раз. У цяперашні час, двайныя двукоссі неабходныя. Так што цяпер, дазвольце мне вярнуцца да маёй тэрмінала вокны, пераканайцеся, прывітанне 1. А хто ўпэўнены? Гэтая праграма цяпер збіраюся правільнай кампіляцыі? ОК. Так ўтрох думаю, што гэта. Добра. Enter. І гэта на самай справе. Так што няма ніякай памылкі ў цяперашнім часе, нават хоць гэтай праграмы атрымалі трохі больш складаным. Калі я зараз кропка слэш прывітанне 1, Enter, ён збіраецца сказаць "прывітанне, Дэвід". Але давайце зробім трэцяй ітэрацыі Па гэтай якім праграма па сапраўднаму дынамічным. Дазвольце мне пайсці далей і змяніць файл імя, толькі для ўзгодненасці з файлы, якія вы будзеце мець у сваім распараджэнні Вам потым у Інтэрнэце. Enter. А цяпер я пайду, а не ў Крама "David" жорстка тут. Што я мог зрабіць, каб вельмі проста палепшыць гэтую праграму? Я магу патэлефанаваць GetString. Гэта можа быць трохі невідавочны што павінна адбыцца, так што я збіраюся на самай справе дадаць яшчэ адну лінію, Е, і сказаць назва, тоўстай кішкі, блізка цытату, проста даць карыстачу падказку на экране. І цяпер я збіраюся пайсці сюды, і я збіраюся выкарыстоўваць мае клавіш. Я збіраюся пайсці ўверх, уверх, а таксама змяніць прывітанне прывітанне ад 1 да 2, Enter. І на шчасце, я раблю прагрэс. А цяпер я збіраюся пайсці ўверх расставіць усе кропкі і слэш прывітанне змяніць яго на 2, Enter. І цяпер мая праграма - Я Павелічэнне - становіцца Крыху прыгажэй. Імя будзе, скажам, Роб У гэты раз увядзіце, прывітанне, Роб. Мы можам зрабіць гэта зноў. Імя, Ларэн, Enter. Імя, Іосіф, Enter. Імя, давайце імкнуцца быць цяжка, Enter. Эх. Гэта не зусім памылка. Так што гэта проста трохі непрыгожа. Таму, магчыма, мы маглі б вырашыць гэтую ў будучыні, не цяпер. Але як бы вы інстынктыўна ісці аб рашэнні , Што асаблівую праблему? Усё гэта выглядае недарэчна. Як пазбегнуць рэчаў выглядаць дурное? Такім чынам, мы маглі б зрабіць, добра, я пачуў пару рэчаў, стан і завесы. Мы маглі б выкарыстоўваць, адзін, умовай, каб праверыць якая даўжыня радка Карыстальнік даў нам? І калі ён роўны 0, то гэта проста у двукоссі, яны проста націсніце Enter, затым магчыма, я павінен крычаць на іх і прапануе іх зноў. Але як заахвоціць іх зноў? Ну, я таксама чуў пятлю, і я не мог рабіць гэта зноў і зноў і зноў з дапамогай якога карыстальнік тое ж самае. Ну, давайце зробім адзін прыклад з выкарыстаннем іншага функцыі ў CS50 бібліятэкі. Дазвольце мне ў гэты файл. Дазвольце мне стварыць новы. І я буду называць яго adder.c, толькі таму, што гэта лёгка зрабіць простую арыфметыку, нават калі гэта будзе цалкам захапленне з тым, што вы маглі б зрабіць з любым сучасным кампутарам. Але дазвольце мне ісці наперад і цяпер - Я засвоіў свой ўрок апошняга часу - уключае cs50.h, уключыце stdio.h, унутр Асноўны пустэчу, якая, на дадзены момант, я проста ўзяць на сляпой веры, але мы мяркуем, што той зразумее, што гэта азначае, што ў хуткім часе. І я збіраюся нешта сказаць , Як "дайце мне Int." А цяпер, як я магу атрымаць цэлалікавай? Я хачу, каб у канчатковым рахунку, аб'явіць зменную называецца Х Тып Унутраныя і захоўваць у ім цэлы лік ад карыстальніка. Так, каб быў поўны рот. Але калі хто-небудзь хоча прапанаваць, як Я абвяшчу цэлы лік, званае X? Int х. Такім чынам, гэта сапраўды так проста. Дайце мне Int. Назавіце гэта х. Цяпер я выкарыстоўваю аператар прысвойвання. І як я магу захоўваць ад пакінулі значэнне карыстальнік? Я не хачу называць GetString, Відавочна, а GetInt. Любыя аргументы? Няма. Так што гэта адкрытая дужка, побач хлопец неадкладна, а затым кропка з коскі завяршае лінію. Цяпер дазвольце мне зрабіць гэта зноў. Дай мне яшчэ адзін Int. На гэты раз я зраблю Інтэлект, давайце называюць яго у, роўная GetInt. А цяпер зробім нешта супер-простыя як некаторыя матэматыкі. Такім чынам, Е, то сума% D з'яўляецца Месца для Int. І% D, перыяд, зваротны слэш-н. Добра. Так што гэта не на самай справе матэматыку. Але калі я хачу сказаць, што гэтая сума кошту плюс гэта значэнне роўна гэта іншае значэнне, колькі аргументаў на За ўсё я павінен даваць Е, у канчатковым рахунку? Так чатыры, праўда? Гэты радок, а затым тры значэння. Так X з'яўляецца першым я хачу быць падлучаныя першымі% D. Y будзе наступны. І цяпер я як бы хачу сказаць, г, але г не існуе. Але гэта не мае вялікага значэння. Таму што што б вы рабілі інстынктыўна, Асабліва, калі ў вас графічны калькулятар, што вы ўводзіце? Як наконт X плюс Y? Так што гэта не фактычнае зменнай. Гэта проста сума двух іншых зменных. І гэта цалкам законна. C вядома, разумее простыя арыфметычныя як гэта. Кропка з коскі, захавайце. Цяпер дазвольце мне перайсці сюды і тып Марка гадзюка, Enter. Няма памылкі, так што гэта таксама прагрэс. Калі ласка, увядзіце суматара. І яшчэ адно спалучэнне клавіш, калі вы пачынаеце сумаваць з усіх каманд - Калі вы пачынаеце набіраць каманду, як і кропка слэш аб'явы, а вось дзе вашыя нуды памірае, як правіла, можна ўдарыць Рахунак, каб мець кампутар скончыць адпачынку фразы для вас, калі гэта не неадназначнае, што павінна ісці пасля аб'явы. Такім чынам, дазвольце мне цяпер ісці наперад і націснуць кнопку Enter. Дайце мне Інтэлект, 1, 2, і На шчасце, гэта 3. Але, як заўсёды, тэставанне праграм не павінна зводзіцца да проста спрабую яго адзін раз. Дазвольце мне паспрабаваць куце выпадку, як і адмоўныя 1, дай мне 1, а адна правярае, як добра. І я, верагодна, хочуць зрабіць яшчэ некалькі дбайнае тэставанне, але я ўпэўнены, зручная з тым, дзе што знаходзіцца. Ну, а цяпер давайце паспрабуем іншай праграме што на гэты раз выкарыстоўвае трохі іншы сінтаксіс. Дазвольце мне стварыць новы файл. Я буду называць гэтую conditions0.c на лінію з некаторых інтэрнэт-кода. І дазвольце мне ісці наперад і рабіць ўключаюць cs50.h, ўключаюць stdio.h, у галоўным пустэчу - ОК. Там мы ідзем. У нас ёсць стандартныя шаблонныя. І на гэты раз я збіраюся сказаць, Е, "Я хацеў бы Інтэрнэшнл, калі ласка", проста каб зрабіць запрашэння трохі больш добразычлівымі. А цяпер я хачу, каб атрымаць Int ад карыстальніка. Я буду называць яго N на гэты раз, проста таму N гучыць як колькасці. GetInt, а цяпер, што ж Я хачу з ім рабіць? Ну, калі п - і я буду павелічэння - калі п больш 0, хачу зрабіць наступнае - Е "Вы выбралі станоўчае лік." У адваротным выпадку, я збіраюся ўвесці Е "Вы вызначаная адмоўная нумар ". Добра. Так што гэта праграма, хоць я зрабіў гэта хутка, выглядае правільна сінтаксічна. Дазвольце мне паспрабаваць гэта. Зрабіць стан 0. , Здаецца, працуе. Ўмова 0, увядзіце. Давайце дамо яму ИНТ 50. Я абраў станоўчае лік. Давайце паспрабуем яшчэ раз. Ўмова 0. Адмоўна 50. Я абраў адмоўны лік. Але цяпер, дазвольце мне выбраць тое, што мы будзем трымаць выклікам кут выпадак, якая з'яўляецца больш Цікавы выпадак, што вы думаеце можа даць вам некаторыя непрыемнасці, 0. Зараз, я ўпэўнены, што гэта адзін з тых выпадках, калі кут нуля ні станоўчай, ні адмоўнай, так што мая Праграма, хоць і ў сінтаксічна Правільна - ён збірае, ён працуе - ня з'яўляецца лагічна правільным. Так у чым жа тут проста выправіць, калі я хачу выявіць, калі я хачу апрацоўваць N роўная 0 паасобку? Такім чынам, калі N роўна 0, то я хачу сказаць, нешта накшталт Е "Вы выбралі 0". Дазвольце мне паспрабаваць гэта цяпер. Дазвольце мне вярнуцца тут, зніміце маё акно, і перакампіляваць. Гектометр Адна памылка генераваць. Але я вы хочаце праверыць Калі N роўна 0. Такім чынам, яшчэ раз, яшчэ адзін дурны каб прывыкнуць да, знак роўнасці аператара прысвойвання. Так гэта на самай справе памылка ў тым, тэхнічна, хоць кампілятар абараняў мяне ад сябе, мы б тэхнічна капіяванні 0 у N, якія не тое, што я хачу. Я хачу для праверкі роўнасці з роўных роўных. І так, што зараз можа быць маё лепшае рашэнне. Дазвольце мне захаваць гэта на самай справе, як, скажам, условиях1, быць новымі і палепшанымі. Так што цяпер, калі я перакампіляваць, гэта зробіць ўмовы - воклічы - зрабіць условиях1 кропка слэш условиях1, Enter, "Я хацеў бы Інтэлект, калі ласка. "Я збіраюся пайсці наперад і тыпу 50. Ён па-ранейшаму добра. Адмоўна 50, па-ранейшаму добра. 0, і, сапраўды, выявіў што я абраў 0. Так што яшчэ я магу цяпер з гэтым рабіць? Ну, мы можам, вядома, зрабіць больш складаныя рэчы. Але тое, што я хацеў бы прапанаваць гэта што мы ў рэшце рэшт на гэтай ноце тут. Калі мы цягнем гэта, вы ўбачыце, мабыць, любімы мультфільм ваш да сённяшняга дня вы маглі б ніколі не разумеў. А вось аб якасці смеху Вы павінны атрымаць з жартамі CS. Дык вось аб праве. Але яшчэ больш пераканаўча, я думаў, што дайце нам крыху тізер панядзелак. Такім чынам, мы пачалі выкарыстоўваць цэлыя лікі. Мы называюць паплаўкоў. Мы нават называюць двухмесных, якія, зноў жа, даць вам нумары пасля дзесятковай кропкі. Але аказваецца, што і паплаўкі двухмесныя, і, на самай справе, кампутары, Па сутнасці, не можа выказаць некаторыя значэння дакладна. Мы ведаем з матэматыкі класаў, якія можна мець любую колькасць лікаў пасля дзесятковай кропкі. І вы можаце нават паставіць вертыкальную рысу сказаць, што гэтыя працягвацца вечна. На жаль, вы не можаце сапраўды зрабіць гэта ў кампутар. І такім вуглом выпадкі ўзнікаюць. Напрыклад, выкажам здагадку, вы рабіць нешта фінансавых. Вы робіце матэматыку з працэнты і з далярамі і цэнтамі. А тыя, ня цэнтаў абавязкова складзе. Ну, атрымліваецца, што фракцыя пені можа пачаць складаюцца, калі мадэлюецца з кампутарнай сістэмай такім чынам, што разумныя людзі могуць скарыстацца. І тыя з вас, хто не бачыў, я б б даць вам 30-секундны тізер выдатны фільм вядомага як офісныя памяшканні, якія малююць карціну задачы будзем вырашаць Першае, што ў панядзелак. Калі б мы маглі павялічыць гучнасць трохі, я даю вам 30 секунд офісных плошчаў. [Прайграванне відэа] -Я маю на ўвазе, ты, ты не паказваць і вы атрымаеце захаваць вашу працу. -Наогул-то, я прасоўваецца. -Я магу запраграмаваць вірус, які б Рып, што месца ад вялікага часу. -Ну, як гэта працуе? -Кожны раз, калі ёсць банк здзелкі дзе працэнтныя вылічаецца, і ёсць тысячы ў дзень, кампутар заканчваецца з гэтымі долямі адсотка. -Але я не збіраюся нічога супрацьзаконнага. -Незаконным? Самір, гэта Амерыка. -Мы павінны праўда, прабач. -Калі ніхто не ведае пра гэта акрамя нас, усё ў парадку? няма членаў сям'і, якія не сябровак, ніхто. -Вядома. -Згодзен. -Не хвалюйся, хлопец. Я нікому не скажу, альбо. [КАНЕЦ ВИДЕОВОСПРОИЗВЕДЕНИЕ] DAVID малая: Дык гэта, тады, CS50, , Якая была офісныя памяшканні, і яна будзе ўсё сэнс у панядзелак. Ўбачымся. Апавядальнік: На наступным CS50, Роб падладжваецца быць ад Гарвардскі харчавання.