[Powered by Google Translate] David J. малая: Усё правільна, гэта CS50 і гэта
канца тыдня 1, так картамі даследаванні знаходзяцца, і агульная колькасць
аднакласнікам, што ў вас у гэтым годзе 745.
І мы так рады мець гэтак многія з вас у ходзе
у гэтым семестры, але нават калі гэта вядома так вялікая,
разумею, што гэта такія рэчы, як абед пятніцы, як
працоўны час, 15-асобе раздзелаў, і гэтак далей, што
на самай справе прызначаныя для стварэння гэтага больш інтымным
навакольнага асяроддзя.
Так што, хоць мы можам збіраць адзін ці два разы на тыдзень, тут, у
Сандэрс, ведаю, што ў вас шмат вопыту ў гэтым курсе
будзе вельмі моцна быць практычным разам на вашых аднакласнікаў
і выкладчыцкага складу.
>> Таму тут мы ідзем, восень 2012 года.
Так Нагадаем, што ў мінулы раз мы скончылі на ноце
недакладнасць, кажучы аб прадстаўленні лікаў.
І мы паглядзелі на адным з няўдач, якія адбыліся ў
рэальны свет, калі ён прыйшоў да непаразуменні
як працуюць кампутары.
Што ж, сёння мы зноў адна з тых ідэй,
а таксама працягнуць наша абмеркаванне CS50 кліента
і З і што гэта азначае на самай справе ў праграме.
Але, па-першае, толькі некалькі аб'яў віхура.
>> Раздзелы пачынаюцца ў гэтую нядзелю, і першы тыдзень заўсёды
Трохі хуткі старт, таму што мы проста патрапілі ў
Вашы формы перасеку.
Мы робім тое ж, цяпер, з вучэннем хлопцы, цяпер
што яны ведаюць свой расклад, таму мы імкнемся, па
У суботу раніцай, каб сачыць за вас з вашым раздзеле
прызначэнне і TF.
Зразумейце, што яны пачнуць наступны дзень, у нядзелю
ці ў панядзелак або ў аўторак.
І тады мы будзем размясціць раздзеле змены па меры іх узнікнення
У дні.
Гадзіннік, тым часам, зноў сёння, 8 гадзін вечара да 11, у
Annenberg, а таксама заўтра ўвечары.
Нават нягледзячы на ​​праблемы наборы, як правіла, з-за, па чацвяргах
апоўдні, разумею, у вас ёсць да пяці канца дзён, каб выдаткаваць,
такім чынам, наяўнасць працоўных гадзін, па чацвяргах, калі
Вам наяўныя грошы ў адным з гэтых позніх дзён, і, такім чынам, уяўляе
нешта на пятніцу.
Дазвольце мне выказаць здагадку, што да драпін з'яўляецца адным з найбольш весела, сярод
больш нізкі ключ мноства праблем.
І я б павесіць на тых, хто позна дзён, стратэгічна, проста
для пазней у семестр, калі жыццё пачынае замінаць
з прамежкавых выбарах і іншых класаў.
Праблема Set 1, тым часам, будуць размешчаны на курсы
сайт у гэтую пятніцу, як будзе на прагулцы курсу
з дапамогай відэа, якое будзе знята у 2:30 вечара ў пятніцу
, А затым размешчаны ў Інтэрнэце на наступны дзень.
>> Такім чынам, мы скончылі ў панядзелак.
Я хачу - на самай справе, адзін Адзначым тут.
Паколькі класы - таму што Сандэрс дакладна не надаюць
сябе выпадковыя Q & ўзад і наперад страшэнна добра, мы
збіраюся паспрабаваць нешта новае ў гэтым годзе, у выніку чаго
калі вас не задавальняе падымаючы руку, ці вы проста
не хацеў бы падняць руку ў пакой, як гэта,
мы будзем мець некаторыя вучэнні стыпендыятаў і сертыфікацыі
камплектаванню cs50.net/discuss падчас лекцыі.
Так што калі ў вас ёсць пытанне, таму што я быў цалкам
няясныя пра што-то ці вам цікава, некаторыя
Тэма, паспрабуйце адправіць яго туды.
Адзначыць гэта з пазнакай лекцыя, і мы зробім усё магчымае,
сёння і на наступным тыдні - МЫ паспрабаваць гэта - у полі,
ў электронным выглядзе, праз Інтэрнэт або, калі ён адчувае, што мы павінны
на самай справе яе рашэнні ў масавым парадку, адзін з хлопцаў навучання або
ЦС будзе падняць руку і спытаць
ананімна ад вашага імя.
Такім чынам, мы дамо гэтаму спробу і паглядзець, як гэта працуе.
Але, у любым выпадку, працягваць падымаць рукі, як бы вам хацелася.
>> Такім чынам, у мінулы раз мы паказалі, што 10% ці адну дзясятую не з'яўляецца,
Фактычна, 0,1, як вас вучылі шмат гадоў таму.
Гэта на самай справе значэнне, як гэта.
Але гэта не зусім дакладна, дакладна?
Мы проста павінны гэта абмежаванне на кампутарах якіх, калі Вы
ёсць толькі канчатковае колькасць памяці, RAM, або больш
спецыяльна біт, а ёсць толькі канечны лік
рэчаў, якія вы можаце прадстаўляць.
Напрыклад, калі ў нас ёсць нуль, і мы хочам, каб
прадстаўляюць у двайковай, з дапамогай васьмі біт, дзе няшмат,
Зноў жа, гэта нуль або адзін, мы маглі б
Уявім яго ў выглядзе 00000000.
І гэта крыху залішне шматслоўным.
Гэтак жа, як у дзесятковай сістэме ў рэальным свеце,
Наогул, калі вы хочаце напісаць нумар 123, мы
людзі, верагодна, не пішыце 00000123 нягледзячы на ​​тое,
функцыянальна, гэта сапраўды такі жа нумар.
Мы толькі што падзенне вядучых нулёў, так бы мовіць.
>> У двайковай, што мы можам зрабіць тое ж самае.
Падвойныя і нуль, нуль і бінарныя проста нуль.
Вам трэба ўсяго толькі адзін біт.
Але, зноў жа, найбольш распаўсюджанай адзінкай вымярэння ў свеце
вылічальныя з'яўляецца байт, восем біт.
Проста таму, што адзін біт, даволі бескарысна.
Восем біт, не вельмі карысна, але па крайняй меры гэта больш
карысней, чым адна адзінка вымярэння.
Такім чынам, з васьмю бітамі, мы звычайна ўяўляюць сабой бінарныя.
Такім чынам, тут мы маем лічбы нуль, адзін, два, а потым, як
Нейт зрабіў у нашым відэа ў мінулую сераду, мы можам працягваць
лічыць да сямі, да васьмі.
І потым, калі мы выкарыстоўваем усе больш і больш бітаў, мы
можа лічыць да бясконцасці.
Але калі ў вас ёсць толькі канечны лік гэтых бітаў, як
справа ў любой кампутарнай сістэме, ці нават ракеты
Сістэма, ну, сапраўды, у вас ёсць толькі
канчатковае колькасць дакладнасці.
Таму калі вы хочаце, каб прадставіць лік як 0,1, так,
Кампутар павінен выбіраць.
І калі ён мае толькі канечны лік лікаў яно можа
ўяўляеце, ён можа наблізіцца да 0,1 для вас, але яно не можа
абавязкова дасць вам менавіта тое, значэнне, якое вы хочаце.
І гэта толькі адна з праблем, кампутары,
пад капотам, да шчасця.
>> Паколькі мы рухаемся далей у семестр, гэтыя нізкім узроўні
Больш падрабязна сталі значна менш цікава, але, вядома,
Ужыванне гэтых ідэй можа быць вельмі рэальным светам
наступстваў.
Адным з іх з'яўляецца трохі весялосці.
Як многія з вас бачылі дзіўныя Офісная плошчу фільм?
Калі ў вас няма, гэта ваша неафіцыйных
хатняе заданне на тыдзень.
Але ў офісныя памяшканні, хлопцы ў гэтым фільме бяруць
Перавага менавіта гэтай ідэяй, але яны на самай справе скралі
з іншага фільма, які вы маглі б мець
відаць, нават папярэдніх гадоў.
Такім чынам, дазвольце мне даць вам некалькі секунд гэты трэйлер з
гэты дзіўны фільм, і гэта вельмі шмат
акадэмічна актуальная.
>> [ГУЛЯЕ ВІДЭА]
На самай справе я заахвочваецца.
Я магу запраграмаваць вірус, які будзе рип, што
месца ў вялікага часу.
Ну, і як гэта працуе?
Кожны раз, калі ёсць здзелка, пры якой банк цікавасць
кампутарнай, ёсць тысячы ў дзень, кампутар заканчваецца
з гэтымі долямі адсотка.
Але я не збіраюся рабіць нічога супрацьзаконнага.
Незаконныя? Самір, гэта Амерыка.
Вы павінны паклясціся перад Богам.
Калі ніхто не ведае пра гэта, але нас усё ў парадку? Няма сям'і, няма
сябровак, ніхто.
[Неразборліва].
Не хвалюйся, стары, я нікому не скажу таксама.
[Фільм заканчваецца]
>> Добра, можа быць, я знайшоў гэты фільм лепш, чым большасць
Людзі тут, але ў любым выпадку, вірус, што яны былі
спрабуюць стварыць -
і ў кіно, у любы час яны назвалі б нешта вірус,
гэта наогул на самай справе не вірус.
Гэта проста праграма, хтосьці напісаў нешта рабіць.
І ў гэтым выпадку, хлопцы спрабавалі напісаць праграму
, Якія скарысталіся іх кампанію пад назвай Innotech ў
вылічальнай сістэмы, у якой кампутары таксама, нават калі яна
Што тычыцца грошай, можа не абавязкова
ўяўляюць грошай дакладна.
Таму, нават калі вам давядзецца $ 0,10 на ваш банкаўскі рахунак,
0.10, а, кампутар можа на самай справе думаеце, што ў вас ёсць
гэта шмат цэнтаў на ваш банкаўскі рахунак.
І тое, што гэтыя хлопцы імкнуцца рабіць - і яны
скралі ідэю, аказваецца, ад Superman III, дзе
Рычард Прайор зрабіў тое ж самае - яны былі па сутнасці
напісанне праграм, якія імкнуцца ўзяць усё задняга
нумары, усе маленькія, малюсенькія, малюсенькія долі
пені, і сифонирования тых, у так, што людзі проста
Думка, о, гэта ўсяго толькі $ 0,10 ёсць, але ўсе гэтыя
задні нумар у канчатковым выніку складаюцца.
Такім чынам, выдатная ідэя, і яна мела непрыемныя наступствы весела ў тым, што
канкрэтнага фільма.
>> Але ў рэальным свеце таксама ёсць нашмат больш, якія тычацца
Наступствы такога роду рэчы.
І адна з прычын, каб паглыбіцца ў вобласці кампутарнай
навука, зноў жа, яе дастасавальнасці ня
інжынерныя навукі ў адзіночку, але толькі
іншых галінах.
Так што гэта менш за бесклапотны погляд на тое, што можа пайсці не так, але
Гэта таксама даволі вачэй адкрыццё, я думаю, калі справа даходзіць да
разумення, як менавіта усюдыісная тэхналогій, такіх як
кампутарах і праграмаванні або ў гэтыя дні,
ў выглядзе праграмнага забеспячэння.
Так што наступны кліп ўсяго толькі каля шасці хвілін, працягваецца
, Дзе мы спыніліся ў мінулы раз, але дазваляе нам выглядаць трохі
больш падрабязна на адной з такіх гэтыя пытанні.
Дазвольце мне перайсці да дзе мы спыніліся,
які быў прама тут.
І ў нас ёсць другая частка два, на працягу прыкладна шасці хвілін тут.
>> [Глядзець ВІДЭА]
Чумной сучаснай ракетнай тэхнікі.
У 1991 годзе, з пачаткам першай вайны ў Персідскім заліве, Patriot
выпрабаваў ракету падобнага роду
Праблема нумар пераўтварэнні.
І ў выніку, 20 чалавек, 20 амерыканскіх салдат, былі забітыя
і каля 100 параненыя, калі Patriot, якая павінна была
для абароны ад якія ўваходзяць Скад,
не змаглі страляць ракетамі.
>> Калі Ірак уварваўся ў Кувейт і Амерыкі пачалі пустыні
Бура ў пачатку 1991 года, батарэі Patriot ракеты былі
разгорнута для абароны Саудаўскай Аравіі і Ізраіля ад ірацкіх
Нападу Скад ракеты.
Patriot з'яўляецца амерыканскай сярэдняй далёкасці зямля-паветра сістэмы,
вытворчасці кампаніі Raytheon.
Памер перахопнікаў Patriot сябе, а пра
прыкладна 20 метраў у даўжыню і важыць каля 2000 фунтаў.
І яна нясе боегалоўку прыкладна - Я думаю, што гэта груба
150 фунтаў.
І боегалоўкі самай высокай выбуховае рэчыва, якое мае
Фрагменты вакол яго.
Корпус боегалоўкі прызначаны дзейнічаць, як карцеч.
Ракет праводзяцца чатыры разы ў кантэйнер і
транспартуецца паўпрычэпам.
>> Patriot сістэмы ПРА падымаецца па крайняй меры да
20 гадоў.
Ён быў першапачаткова распрацаваны як ракеты СПА
збіваць варожыя самалёты, у першай вайне ў Персідскім заліве.
Пры тым, што вайна прыйшлі разам, армія хацела выкарыстоўваць яго, каб страляць
Скад ўніз, а не самалёты.
Air іракскіх сіл было не так шмат праблем, але армія
турбаваўся пра Скад.
І такім чынам яны спрабавалі абнавіць Patriot.
Перахоп ракеты ворага падарожжа на MACH 5 збіраюся
быць досыць складанай задачай.
Але калі Patriot была дастаўлена ў эксплуатацыю, армія
не было вядома аб іракскім мадыфікацыі, якія зрабілі іх
Бокоплавы амаль немагчыма патрапіць.
>> Справа ў тым, Скад, якія былі
У бліжэйшыя была няўстойлівым.
Яны былі біцця.
Прычынай гэтага было іракцаў, для таго каб атрымаць 600
кіламетраў з 300 км далёкасць палёту ракеты, узяў
Вага з пярэдняй баявой часткай і
зрабіў боегалоўкі лягчэй.
Так што цяпер Patriot спрабуе прыйсці ў Scud, і большасць з
Час, у пераважнай большасці выпадкаў, гэта было б
проста лётаюць па ветры.
Пасля таго, аператары Patriot Сістэма рэалізавана Patriot
прапусціў сваю мэту, яны ўзарвалі Patriot боегалоўкі.
Каб пазбегнуць магчымых ахвяраў, было дазволена
падаць на зямлю.
Гэта было тое, што большасць людзей бачылі, як вялікія вогненныя шары ў небе,
і не зразумеў, як перахоп боегаловак Scud.
>> Хоць, у начным небе, патрыёты, здавалася,
паспяхова знішчыла Скад, у Dhahran, не можа быць
памылка аб сваёй дзейнасці.
Там, радыёлакацыйная сістэма Патрыёт страціў
якія ўваходзяць Scud і ніколі не запушчана з-за
з праграмным забеспячэннем недахоп.
Гэта былі ізраільцяне, якія ўпершыню выявілі, што чым даўжэй
Сістэма была, тым больш часу разыходжанні сталі,
у сувязі з тактавай убудаваны ў кампутар сістэмы.
Каля двух тыдняў да трагедыі ў Dhahran,
Ізраільцяне паведамілі ў міністэрстве абароны, што
Сістэма губляў часу.
Пасля таго, каля васьмі гадзін працы, яны заўважылі, што
Сістэма становіцца прыкметна менш дакладным.
Міністэрства абароны адказаў, сказаўшы ўсё
Patriot батарэі, каб не пакінуць сістэм
на працягу доўгага часу.
Яны ніколі не казалі, што доўгі час было - 8 гадзін, 10
гадзін, 1000 гадзін.
Ніхто не ведаў.
>> Patriot батарэй, размешчаных у казармах ў Dhahran
і яе недахопы ўнутраныя гадзіны былі на больш чым 100 гадзін
У ноч на 25 лютага.
Гэта гусенічныя час з дакладнасцю каля адной дзесятай долі секунды.
Цяпер дзесятым часткi другой цікавая лік, таму што
яна не можа быць выяўлена ў двайковым, сапраўды, гэта азначае,
яно не можа быць выяўленае менавіта ў любых
сучасны лічбавы камп'ютэр.
Цяжка ў гэта паверыць.
Але выкарыстоўваць гэта ў якасці прыкладу.
>> Давайце колькасць адну траціну.
Адна траціна не могуць быць выяўленыя ў дзесятковым, дакладна.
Траціна 0,333 працягваецца бясконца.
Там няма спосабу зрабіць гэта з абсалютнай дакладнасцю ў дзесятковай сістэме.
Вось сапраўды такія ж задачы, што адбылося ў
Patriot.
Чым даўжэй сістэма працавала, тым горш памылку часу сталі.
Пасля 100 гадзін працы, памылкі ў часе толькі
каля адной траціны секунды.
Але з пункту гледжання арыентацыі ракеты падарожжа на MACH 5,
гэта прывяло памылкі сачэння больш за 600 метраў.
Было б фатальнай памылкай для салдат на Dhahran.
>> Справа ў тым, запуск Scud быў знойдзены ранняга папярэджання
спадарожнікаў, і яны ведалі, што Скад ішоў у іх
агульны кірунак.
Яны не ведалі, дзе ён ішоў.
Гэта было цяпер да радара кампанент Patriot
Сістэма, абараняючы Dhahran, каб знайсці і адсочваць
надыходзячай ракеты праціўніка.
Радар быў вельмі разумным.
Вы б на самай справе адсочваць становішча Scud, а затым
прадказаць, дзе ён, верагодна, будзе ў наступны раз
радар накіраваў імпульсны выхад.
Гэта называецца дыяпазон брамы.
Затым, калі Patriot вырашае, прайшло ўжо дастаткова часу, каб пайсці
назад і праверыць наступную лакацыі для гэтага выяўленых
Аб'ект, ўстае.
Таму, калі ён вярнуўся ў няправільным месцы, то не бачыць
пярэчыць, і ён вырашыць, што не было ніякага аб'екта.
Гэта было ілжывае выяўленне і падае трасе.
>> Уваходны Скад знікла з экрана радара.
І секунды праз, ён урэзаўся ў казармы. Scud
загінулі 28 і быў апошнім, хто звольнены на працягу
Падчас першай вайны ў Персідскім заліве.
Да няшчасця, абноўленае праграмнае забеспячэнне прыбыў у Dhahran
на наступны дзень.
А недахоп праграмнага забеспячэння былі ўсталяваныя, зачыняючы адну галаву ў
неспакойнай гісторыі Patriot ракеты.
PATRIOT на самай справе абрэвіятура ад "Паэтапнае адсочванне масіва
Перахоп мэты. "
>> Добра, значна больш сумны вынік не зусім
разумення гэтага свету.
І ежа на дом, сапраўды, з фільма ў тым, што рашэнне
было перазагрузіць сістэму супрацьракетнай абароны
кожны раз у той час.
І так зноў, адна з мэтаў гэтага курса, вядома,
на больш сціплых маштабах, чым гэтыя прыкладання, з'яўляецца
сапраўды адкрыты ўсе вочы, як менавіта вы ідзяце па нагоды
Машыны рабіць тое, што вы ад іх хочаце і як вы ідзяце
Аб робіце, што правільна, а па шляху робяць гэта
добра, элегантна, і гэтак далей.
І таму сёння, давайце пагрузіцца ў яшчэ трохі пра гэта, але
так што мы не занадта хутка, асабліва для тых, хто менш
зручна, але і так, што мы можам захаваць цікавасць
тым больш зручна, давайце проста хутка пачаць з невялікай
з рэзюмэ некаторых з гэтых ідэй.
І зноў жа, спытаеце ж, як у твар або ў Інтэрнэце, калі ў вас ёсць
пытанні, каб мы маглі трымаць усё на той жа старонцы.
>> Так CS50 Appliance, хуткі крок назад, з'яўляецца
што, у вашых уласных слоў?
Гэта нармальна, калі вы паняцця не маеце, што гэтыя словы могуць быць яшчэ.
[Неразборліва]
Такім чынам, універсальны інтэрфейс для -
што ўсе мы можам падзяліцца.
Цалкам дакладна.
Такім чынам, мы маглі б, напрыклад, сказаць вам, каб пайсці на некаторыя
вэб-сайт, спампаваць праграмнае забеспячэнне для Mac OS.
Загрузіць гэта праграмнае забеспячэнне для Windows, наладзіць ў
і так і гэтак.
Але рэальнасць такая, то мы сутыкаемся з незлічонымі тэхнічнымі
падтрымлівае пытанняў.
А таксама ў гэтыя дні, многае з таго, што робіцца на боку сервера,
У свеце кампутараў, асабліва калі справа даходзіць да
распрацоўка сайтаў і вэб-прыкладанняў, на самай справе
даволі часта робіцца на Unix або Linux кампутарамі, у адрозненне ад
Кепскага, бадай, або ПК з Windows.
>> Так сярод расквітацца, то, з дапамогай гэтай рэчы, званай
CS50 прыбор нам усім давядзецца той жа асяроддзі.
Так што ўсё на той жа старонцы незалежна ад таго, якое абсталяванне
прыехалі ў кампус с, але і будзе ўмешваюцца ў дакладнасці
тых жа ўмовах, што вы будзеце выкарыстоўваць на
семестра канца, а таксама для вэб-распрацоўкі, а таксама ў
будучыню для рэальных прыкладанняў іх.
Такім чынам, больш канкрэтна, CS50 Appliance ўяўляе сабой бясплатны кавалак
праграмнае забеспячэнне, якое дазваляе запускаць іншай аперацыйнай сістэмы,
Linux, у дадзеным выпадку, на вашым уласным кампутары, у акне.
Цяпер вы можаце не толькі спампаваць прыбора.
Вам патрэбна праграма, з якой гуляць або працаваць прыбор.
І гэта частка праграмнага забеспячэння, як правіла, вядомыя як
гіпервізара.
Гіпервізара прыходзяць у выглядзе прадуктаў, такіх як VMware,
Virtual Box, Parallels.
Усе віды кампаній робяць праграмнае забеспячэнне, як бясплатныя, так і
камерцыйных, так.
Тое, што вы ўбачыце ў праблеме Set 1 прыведзены інструкцыі аб тым, як
атрымаць бясплатнае праграмнае забеспячэнне, з якім
запусціць CS50 Appliance.
І як толькі вы гэта зробіце, вы будзеце мець, у акне на вашым Mac або ПК,
асяроддзе працоўнага стала, якая выглядае зусім як гэтая, дзе
яна мае меню Пуск-як рэч у
левым ніжнім куце.
Ён мае галоўную тэчку або хатняга каталога, у левым верхнім
там, смеццевае вядро, і гэтак далей.
Такім чынам, мы будзем дражніць адзін ад аднаго неабходныя дэталі, як мы ідзем.
>> А цяпер давайце пачнем апускацца ў C.
Такім чынам, C гэта мова праграмавання, блізкага па духу
Scratch, але значна менш, графічны, але па іроніі лёсу, далёка
больш магутны, як толькі вы атрымаеце здаровага сэнсу з ім.
Такім чынам, у C, мы пішам праграмы, напісанне зыходнага кода, які з'яўляецца
гэта ангельскае-падобны сінтаксіс, падобны на шкарпэткі
дэманстрацыя таго, што мы зрабілі ў мінулы раз, што дазваляе
выказаць сябе даволі дакладна, калі
arcanely, да кампутара.
>> Дык які праграмны прадукт вы на самой справе трэба
пісаць праграмы на мове, як C, на аснове нашых
Размова ў панядзелак?
[Неразборліва]
OK, трэба проста тэкставы рэдактар.
Вам не трэба ніякага спецыяльнага праграмнага забеспячэння
само па сабе для напісання праграм.
Вам проста трэба тэкставы рэдактар, напрыклад Нататнік, на Windows,
TextEdit на Mac, або тое, што называецца Gedit, у свеце
Linux, які мы будзем выкарыстоўваць тут.
І гэта ўсё, пісаць праграмы.
>> Але пісьмова гэта толькі палова ўраўненні.
Затым трэба запусціць іх.
Але для запуску праграм -
вы не можаце запусціць зыходны код.
Вы, а не рабіць тое, што яму ў першую чаргу?
Так.
David J. малая: Вы павінны
скампіляваць яго.
І нехта яшчэ, кампіляцыя зыходнага кода азначае -
[Неразборліва]
David J. малая: Цалкам дакладна.
Пераводзячы яго нулёў і адзінак.
Таму што ўсе мы, у гэтыя дні, ёсць кампутары, якія маюць працэсары,
амаль усе з якіх зробленыя кампаніяй пад назвай Intel, і
Intel Inside, азначае, што ёсць гэты мозг ўнутры вашага
кампутар, вядомы як цэнтральны працэсар.
І адна з рэчаў, што мозг робіць, ён ведае,
як зразумець мадэляў з нулёў і адзінак.
Ён ведае, што карціна ўяўляе біты таго, што
шаблон ўяўляе аднімання, што структура
біты ўяўляюць друку, а таксама стварэнне чутны гук.
>> Карацей кажучы, працэсар, у спалучэнні з аперацыйнай сістэмай,
, Якая з'яўляецца часткай праграмнага забеспячэння, які працуе на верхняй часткі працэсара,
так бы мовіць.
Разам, гэтыя дзве часткі ведаюць, як кіраваць праграмамі, якія
мы, людзі пішуць.
>> Так што, калі я іду ў CS50 Appliance тут, мне трэба, каб адкрыць
да тэкставы рэдактар, і я магу атрымаць доступ да гэтай
Праз пару спосабаў.
Я магу або пайсці ў меню праграмавання,
і тады я магу абраць -
Не, не тое, што меню.
Я магу пайсці ў Аксэсуары / Gedit тут, каб адкрыць
мой маленькі тэкставы рэдактар.
Ці, прасцей кажучы, я магу націснуць гэтую маленькую абразок ў ніжнім
левым куце.
І цяпер я атрымліваю гэтую сераду тут.
Гэта вельмі нагадвае просты тэкставы рэдактар, толькі з
адзін ці два адрозненні.
У верхняй частцы, дзе міргае курсор зараз, гэта дзе
Я магу пачаць пісаць свой код.
У ніжняй частцы знаходзіцца тое, што называецца акне тэрмінала.
І якія рэчы я магу зрабіць у гэтай
так званыя вокны тэрмінала?
[Неразборліва]
>> Добра, так што я буду выконваць каманды.
І некаторыя з каманд, мы пабеглі ў панядзелак былі трохі
загадкавыя на першы, але Ls за спіс, кампакт-дыск для змены каталога,
RM, для выдалення.
Так гэта накшталт старой школы спосаб навігацыі па
кампутар, выкарыстоўваючы толькі клавіятуру і тэкставых каманд,
і, наогул, з дапамогай мышы.
Але мы ўбачым, што ў хуткім часе, гэта на самай справе дае нам
трохі больш магутнасці і крыху больш дакладнасці, з якой у
выказаць сябе.
І тады тут, на левым, мы проста ўбачым,
як пачаць пісаць праграмнае забеспячэнне, трохі рэзюмэ
Праграма, якую мы напісалі ў левым верхнім куце.
Але мы ўбачым, што зноў хутка.
>> Такім чынам, давайце штосьці рабіць даволі проста.
Дазвольце мне спачатку ісці наперад і перайдзіце ў меню Файл, Захаваць, і я проста
збіраюся націснуць на jharvard тут, на злева, і
jharvard, зноў жа, назву для маёй хатняй тэчцы, мая
асабістыя справы, я, у цяперашні час Джон Гарвард, як усе вы
Хутка Джон Гарвард ў гэтым асяроддзі.
Ён атрымаў гэта хатні каталог, Мае дакументы і гэтак далей,
што я хачу захаваць, зараз, у гэты файл цалі
Так што я буду называць яго hello.c. Тады я пайду
наперад і націсніце кнопку Захаваць, а зараз тое, што я тут ўкладцы
называецца hello.c, так як іншы тып рэдактара.
>> Так што цяпер дазвольце мне ісці наперад і пачаць пісаць праграму.
Int асноўных (несапраўднымі).
А потым я проста ў мінулы раз, Printf, адфарматаваны для друку,
("Hello, World!"
).
Амаль завершана.
Але мне не хапае пару дэталяў.
Што адсутнічае ў гэтай праграме, што мне сапраўды трэба для
гэта для кампіляцыі?
Так.
[Неразборліва]?
>> David J. малая: Так, так што мне трэба ўключаць у стандартную
Бібліятэка ўводу / высновы.
Такім чынам, гэта павінна пайсці вышэй асноўнага, так што я толькі збіраюся
зрабіць некаторыя магчымасці для гэтага ёсць.
І я збіраюся зрабіць # ўключыць .
І звярніце ўвагу, вуглавыя дужкі там.
І як у бок, Gedit трохі дружалюбным да карыстача, калі
Часам трохі заблытаным, у тым, што яна спрабуе дапамагчы свайму
вока заўважыў, што на адной лініі з чым.
Таму той факт, што мой курсор знаходзіцца ў непасрэднай блізкасці ад гэтай кутняй
кранштэйны, звярніце ўвагу, як ён падкрэслівае іншыя вуглавыя
Кранштэйны плюс гэтага.
І гэта толькі звярнуць маю ўвагу на тое, што я
ёсць сіметрыя.
І сіметрыі ў праграмаванні, як правіла, добра.
Аналагічна, калі я перанесці курсор у канец, звярніце ўвагу, як
фігурныя дужкі лінію, каб паказаць, што, так, у мяне ёсць адкрытая
і закрытым, так бы мовіць.
>> Усё ў парадку, і я магу зрабіць яшчэ адну рэч.
Гэта не абавязкова, але добрая практыка, калі не сказаць
вяртаць 0.
І вяртанне 0 робіць тое, што для нас тут?
Ці азначае, што?
[Неразборліва]
David J. малая: Але нічога не здарылася.
І, шчыра кажучы, гэта цяжка многае пайсці не так у
запраграмаваць гэтую кароткую.
Так што я проста супер быць выразна паказана, што ўсё будзе добра.
Я, чалавек, калі я запускаю гэтую праграму, верагодна, ніколі не
бачыць, што 0.
Як правіла, гэтыя нумары, якія вяртаюцца з асноўных
толькі падымуць галовы да людзей, калі
нешта ідзе не так.
І вы атрымаеце трохі усплываючых кажучы сістэмная памылка, адзін,
два, тры, або незалежна ад колькасці было тое, што
была фактычна вернутая.
Так што нічога дрэннага ў гэтым?
[Неразборліва]
>> David J. малая: Так што гэта не столькі функцыянальнымі памылку
але эстэтычны.
Я, верагодна, варта пакласці ў сімвал новага радка там у
канцы гэтага радка, так што мы на самай справе перамясціць курсор на
Наступная радок, і праграма выглядае крыху прыгажэй.
>> Так што цяпер дазвольце мне сысці ў акне тэрмінала
і павялічыць маштаб
І гэтая рэч тут, гэта называецца камандным радку.
Ён проста нагадаў мне, хто я, jharvard @ прыбор, дзе
Прыбор імя кампутара, я на.
У дужках гэта тыльда, тыльда сімвал, які
ўяўляе тое, што?
Аўдыторыя: Галоўная каталога.
David J. малая: Галоўная каталога.
Так што гэта проста скарочанае пазначэнне для кажу, што вы знаходзіцеся ў
Вашы асабістыя папкі, у якой усе файлы ідуць па змаўчанні.
Так што цяпер, тут, я магу набраць Ls за спіс.
І адзінае, што я тут бачу на дадзены момант з'яўляецца hello.c.
І гэта добра, таму што я толькі што напісаў.
>> Такім чынам, дазвольце мне ісці наперад і робім прывітанне.
І заўважце, я не ўводзіць зрабіць hello.c.
Замест гэтага, я набраўшы толькі базавую імя файла, прывітанне.
І зрабіць, як мы бачылі ў панядзелак, будзе проста зрабіць выснову, што я хачу
. З файлам.
Так што цяпер я набраў зрабіць прывітанне.
Цяпер я разумею, гэта даволі доўгую каманду і будзе працягвацца
Убачыўшы гэта зноў і зноў.
Але каб быць ясна, ляск, слова, якое толькі што з'явіўся,
гэта фактычна кампілятар.
Зрабіць гэта проста ўтыліта зборкі.
Гэта проста больш зручным для карыстальніка праграма, якая эканоміць мне, у
канчатковым рахунку, ад таго, каб уводзіць неверагодна доўга зморана
каманды, як гэты.
Такім чынам, вы можаце запусціць Clang ўручную.
Вы маглі б ўвесці ўсе гэта ўручную.
Проста становіцца вельмі стомным.
І зрабіць гэта проста праграма, якая спрашчае нашу жыццё і
працуе больш складаных каманд для нас.
>> Добра, так што цяпер, які файл я павінен
У маім бягучым каталогу?
Не толькі hello.c, але і прывітанне.
Так што, калі я хачу запусціць прывітанне, нагадаем, што я кажу, кропка слэш,
дзе кропка азначае ісці ў бягучай тэчцы, дзе б вы ні
з'яўляюцца, а затым запусціць праграму пад назвай прывітанне, ды і наогул, зараз,
У мяне прывітанне свет.
Добра, любыя пытанні аб працоўным працэсе ці сінтаксісу
тое, што мы толькі што зрабілі?
>> Добра, давайце рэчы на ​​прыступку вышэй яшчэ раз.
Так што гэта быў захапленне проста напісаць праграму, якая толькі
ніколі не кажа прывітанне, свет.
Такім чынам, мы змянілі яго, у панядзелак, калі не сказаць, прывітанне, Дэвід.
Гэта крыху больш асабістым, але гэтак жа жорстка, як
Першая версія.
Так што не ўсё так пераканаўча.
Але існуе і ў C, функцыі, акрамя, вядома,
друк, функцыі, якія дазволяць вам атрымаць карыстацкі ўвод.
І тое, як мы зрабілі гэта, на днях, быў наступным.
Перш, чым я на самой справе раздрукаваць нешта, я ўпершыню атрымаў
нешта ад карыстальніка.
Такім чынам, дазвольце мне зрабіць гэта зноў.
>> Струнны з, дзе з проста адвольнае імя, тут,
Радок, роўна GetString.
Так што GetString?
Гэта, відавочна, атрымлівае радок, заснаваную на яго імя.
Але што гэта такое, больш тэхнічна?
Гэта функцыя.
Так што гэта функцыі, якія не пастаўляюцца з C такой.
CS50 супрацоўнікі напісаў.
І так, каб выкарыстоўваць гэта, вы не можаце проста ўключыць stdio.h,
Акрамя таго, неабходна ўключыць і што?
Так.
Так cs50.h, які знаходзіцца ўсяго ў файл мы пісалі некалькі гадоў таму.
Мы ўсталявалі яго на прыладу для вас разам з
ўсе стандартныя файлы.
І вось у гэтыя першыя некалькі тыдняў класе, мы будзем выкарыстоўваць
гэта толькі, каб спрасціць працэс робіць вельмі просты
такія рэчы, як атрыманне карыстальнікам.
Таму што, як мы ўбачым праз некалькі тыдняў, атрымаць карыстацкі ўвод у
мову, як C на самай справе дзіўна складаным,
Асабліва таму, што вы не ведаеце загадзя, як правіла, як
шмат рэчаў, карыстальнік збіраецца ўвесці цалі
І калі вы не ведаеце, як шмат дадзеных, каб чакаць, вы не
даведацца, колькі памяці вылучыць.
І калі ў вас сапраўды ёсць спаборнасць карыстальнік, які спрабуе
для ўзлому вашай сістэмы, збой кампутара, ну,
як правіла, першы метад атакі, гэтак жа, як я зрабіў на
Панядзелак, увядзіце цэлую доўгую паслядоўнасць выпадковых сімвалаў,
Калі ласка, увядзіце ўдар, і паглядзець, што ламаецца.
Таму што звычайна, калі праграма перапынкі, што намякае на
недахоп бяспекі, патэнцыйна.
Гэта, вядома, намякае на вас, праграміст, зрабіўшы
памылкай, але што больш небяспечна, вы маглі б зрабіць
звязаных з бяспекай памылкі, і наогул, мы ўбачым, што
Вось як машыны аказваюцца пад пагрозай і па гэты дзень, як
У свеце Інтэрнэту і праграм на
каманднага радка, як гэта.
>> Добра.
Такім чынам, радок з роўным GetString.
Такім чынам, зараз больш канкрэтна, што ж радку 6 тут рабіць?
Такім чынам, функцыя ў правай атрымлівае радок,
бярэ, колькі аргументаў?
Добра.
Такім чынам, няма.
Трохі санітарнай праверкі.
Аргумент, зноў жа, гэта ўсяго толькі ўваход у функцыю для змены
яе паводзіны па змаўчанні ў некаторым родзе.
Але ў гэтым выпадку, я не хачу, каб змяніць
Паводзіны GetString.
Я проста хацеў, каб атрымаць радок.
Таму я стаўлю нічога ў дужках, а затым я паклаў
коскі дэмаркацыі канцы радка кода.
Цяпер, знак роўнасці не азначае, роўнага, як такой.
Гэта значыць, заданне, якое азначае, пакласці ўсё, што атрымлівае
выводзіцца на правым ўнутр усё, што знаходзіцца злева.
>> Такім чынам, на левай баку, мы кажам, што мы абвясцілі
Радок называецца с.
І больш канкрэтна, мы выдзеленай памяці ўнутры
якія мы будзем ставіць біт, які ўяўляе сабой паслядоўнасць
сімвалы.
Але на сённяшні дзень мы выдзелілі
або абвешчаныя радок.
Добра.
Так што цяпер, як толькі я зрабіў гэта, я хачу падлучыць значэння
ы, а не значэнне Давіда.
Так што гэта няправільна, чаму?
Так што гэта проста літаральна жорстка с.
Гэта, каб сказаць "прывітанне, з", які з'яўляецца не тое, што я хачу.
Такім чынам, я магу гэта зрабіць.
Знак адсотка з'яўляецца прататыпам, але цяпер мне трэба
Праходзім ў друк другі аргумент.
Нагадаем, што аргументы функцый адлучаюцца
косак, таму ў наступны коскі тут я стаўлю пасля гэтага ліста з.
І ў гэтым кантэксце зараз, а з'яўляецца зменнай, і Printf,
Пасля атрымання гэтых двух уваходаў -
Радок злева і зменнай імя справа -
яна будзе падлучыць апошняга ў былая для нас, і
проста раздрукаваць добрая прыгожая радок, якая змяшчае
ўсё гэта, што мы ўвялі цалі
>> Так давайце паспрабуем гэта.
Збіраюся ісці наперад і памяншэння маштабу, спіны
у акне тэрмінала.
Агледзіце ў ніжняй тут.
Паўтарыце зрабіць прывітанне.
Clang, здаецца, былі паўторна.
Я збіраюся ўвесці. / Прывітанне, Enter.
Нішто, здаецца, адбываецца яшчэ няма, але гэта ў гэтым радку
што я магу увесці нешта накшталт Nate, Enter, і зараз мы маем
Добры дзень, Нейт.
І я магу зрабіць гэта зноў з Робом, і гэтак далей.
Так што, спадзяюся, цяпер гэтая праграма паводзіць сябе, як я маю намер.
>> Цяпер, не ўсё, што зручна для карыстальніка.
Я не ведаю, што час ад мяне чакалі.
Такім чынам, мы, безумоўна, можа ачысціць гэта няшмат.
Дазвольце мне вярнуцца сюды, і замест таго, каб проста апусканне ў і
задаючы карыстачу для радка, дазвольце мне відавочна паказаць
Карыстальнік тое, што я чакаў.
Такім чынам, Е ("Калі ласка, увядзіце радок:"
);
Дык не зменных тут.
Няма знакі адсотка.
Проста просты ангельскай фразы.
Дазвольце мне зараз ісці да дна тут і паўторыце маю праграму.
Але нічога, здаецца, не змянілася.
Чаму?
Я павінен перакампіляваць яго.
Так лёгка зрабіць памылку.
Але вы павінны не толькі захаваць файл, але
перакампіляваць праграму.
І таму, калі я паўторна запусціць зрабіць прывітанне, зараз Clang працуе.
Цяпер я магу запусціць. / Прывітанне. І цяпер я бачу "Калі ласка, увядзіце радок:".
Добра.
Цяпер гэта крыху больш зручным.
Nate, увядзіце, прывітанне, Нейт.
>> Ну, давайце паспрабуем гэта зноў і пачаць думаць
Аб куце выпадках.
Гэтак жа, як у Scratch, вы заклікалі або знаходзяцца ў стадыі
рэкамендуецца ў спецыфікацыі да выгляду думаю пра тое, што можа пайсці
так, калі вы не чакаеце ўсё, што карыстач можа рабіць.
Памылкі, такім чынам, можа наступіць.
Так увядзіце радок -
Што куце дадзеным выпадку?
Што такое сцэнар, які я, праграміст, не могуць мець
чакаецца?
Так.
Добра.
Так што, калі я набіраю ў шэраг, як гэта?
Добра.
Так што ён усё яшчэ працуе.
Gramatically не мае сэнсу.
Але па крайняй меры працуе праграма.
>> Што другім куце выпадку?
Нешта я не чакаў.
Да?
Добра.
Так што мы маглі б зрабіць нешта накшталт вельмі, вельмі вялікі лік.
Так давайце зробім гэта тут.
Дазвольце мне паменшыць на секунду, дазвольце мне спыніцца.
Не атрымалася скапіяваць і ўставіць сюды.
Добра.
Таму я не магу капіяваць і ўстаўляць у гэтым акне тэрмінала, таму мы будзем
толькі яго імітацыі.
Дазвольце мне паменшыць маштаб, збіраўся загарнуць.
Я не збіраюся рабіць гэта занадта доўга, таму што яно не будзе
на самай справе зламаць ў гэтай праграме.
Але гэта можа адбыцца.
Enter.
Але гэта не так.
Добра.
Але гэта сапраўдны выпадак куце.
І толькі таму, што паводзілі сябе карэктна, так
казаць, таму, што CS50 функцыі GetString на самай справе
распрацаваны пад капотам, як мы ўбачым на працягу некалькіх тыдняў,
аўтаматычна вылучаць ўсё больш і больш памяці, больш і больш
памяць ад аперацыйнай сістэмы, калі яна разумее, нічога сабе,
Вы сапраўды набраў у чымсьці даволі доўга.
Цяпер, гэта крыху белай хлуснёй.
Калі мы сапраўды спыніўся на некаторы час, і я набраў у
нешта накшталт 5000000000 знакаў на клавіятуры
тут, ці сапраўды патрапіў капіяваць-ўставіць зусім крыху, мы, цалкам магчыма,
можа прывесці да аварыйнага завяршэння праграмы.
Проста крыху цяжэй сімуляваць, што з канчатковай
колькасць часу.
>> Што другім куце выпадку мы маглі б паспрабаваць?
Да?
Так.
Так чаму б нам не адказаць няма чаго?
Такім чынам, мы на самай справе трэба зрабіць некаторыя дзеянні, таму што інакш
Праграма збіраецца сядзець там міргае на працягу ўсяго дня.
Але калі я проста націсніце Enter -
Добра, зараз, па-ранейшаму выглядае так.
Не крах, але, магчыма, ёсць зараз магчымасць
прыступіць да рэалізацыі больш строгай праграме
што на самой справе правярае.
І калі радок, прапанова, слова, якое Я
набраў у мае даўжыню 0, а, можа быць, я павінен крычаць на
карыстальніка, ці сказаць яму ці ёй ўвесці радок яшчэ раз, каб
мы на самай справе атрымаць тое, што выглядае як правільнае паводзіны, а не
проста поўны кантроль з майго боку.
>> Пытанне ў спіне?
Дзесятковы лік.
Такім чынам, мы маглі б паспрабаваць гэта.
1,10000005.
Падобна на тое, што збіраецца проста працаваць на самай справе ўсё ў парадку.
І што на самой справе не чакаецца.
Хоць мы маглі б набраў гэты нумар там, або
большай колькасці раней, разумеюць, што калі мы ўводзім карыстальніка
ўваходнага і мы выкарыстоўваем GetString функцыі, не
справа, калі тое, што я друкую выглядае як лік.
Нагадаем, што ў адпаведнасці з ASCII, усё на ваш
Клавіятура мае лікавае значэнне, якое можа быць супастаўлены з
характару, знак.
Такім чынам, у дадзеным выпадку, хоць я б увесці лік,
кампутар будзе думаць пра гэта, так бы мовіць, у выглядзе радка -
то, што выглядае як лік, але
на самай справе не лік.
Але што на самой справе ідэальны пераход, таму што цяпер мы можам
на самай справе пераход да напісання праграм, якія
выкарыстоўваць іншыя тыпы дадзеных.
>> Такім чынам, акрамя выкарыстання сімвалаў, ці, хутчэй, акрамя выкарыстання радкоў,
разумею, што ў нас ёсць іншыя тыпы дадзеных у C, а таксама ў
іншыя мовы.
Сімвал, як вынікае з назвы, гэта ўсяго толькі адзін знак.
Паплавок значэнне з якая плавае кропкай, і гэта толькі фантазіі
спосаб сказаць, што сапраўдны лік - тое, што мае дзесятковую
кропка ў ім з некаторым ліку злева і / або справа.
Int з'яўляецца цэлым лікам, якое з'яўляецца проста лік, напрыклад 123.
А цяпер яшчэ цікавей такія рэчы, як падвойныя.
Што мы гаворым двайнога было ў апошні раз?
Гэта 64, справа.
Такім чынам, у той час як звычайна звароце знаходзіцца 32-разрадны -
так што гэта доўга ў памяці, яна выкарыстоўвае 32 нулёў і адзінак у
прадстаўляць значэння - двайны літаральна ў два разы, што
азначае, што вы можаце прадстаўляць вялікія ліку, або
Вы можаце ўявіць больш дакладныя лічбы.
Такім чынам, вы можаце мець больш лічбы пасля дзесятковай кропкі, але
як хлопец сказаў у відэа, нават нешта простае
Канцэптуальна, як 1/3 не можа быць прадстаўлена менавіта
кампутар, таму што ў канчатковым выніку вы бяжыце з бітаў, і
Таму вы можаце зрабіць толькі .33333333 так шмат разоў, у
які момант вы проста павінны сказаць, што я з прадстаўлення
прасторы, я павінен назваць яго проста дзень і прадстаўляць яе
некалькі недакладна падабаецца.
І доўга-доўга -
дурное імя, але гэта таму, што ёсць тып дадзеных, вядомы як
доўга ў С, які выпадкова часта 32 біт, гэтак жа, як
Int складае 32 біта, але доўга-доўга
звычайна 64 біт.
Так што гэта проста азначае, што вы можаце прадстаўляць вялікую
колькасці, чым гэта.
>> Добра.
Так што, калі мы сапраўды хочам, каб пачаць ўяўляюць рэчы, мы
можа спатрэбіцца больш складаныя тыпы, і
Вось чаму мы маем радок.
Такім чынам, у бібліятэцы CS50, што файл з імем cs50.h, мы
фактычна аб'яўлены тып дадзеных, так бы мовіць, называецца радком,
але радок не існуе.
Гэта, зноў жа, адзін з гэтых слаёў мы збіраемся чысціць
праз тыдзень ці два, і выкінуць, а на самай справе
глядзець пад капотам на тое, што радок на самай справе, і
як гэта ўяўляецца.
Мы таксама будзем глядзець на лагічных значэнняў.
>> Так што ж лагічнае ў кантэксце нуля?
Гэта праўда ці хлусня.
Так што гэта проста значэнне, праўда гэта ці хлусня, або выключыць, 1 або
0, аднак, вы хочаце, каб паглядзець на свет.
Такім чынам, у C, дзякуючы CS50 бібліятэка, якая ў сваю чаргу
ўключае ў сябе іншую бібліятэку пад капотам, у нас ёсць
доступ да дадзеных тыпу, які завецца лагічны, які будзе
літаральна дазваляе нам прысвоіць значэння ісціна або хлусня ў
рэчы ў праграме.
>> Так што давайце ісці наперад тут і напісаць невялікую праграму, якая
нешта робіць з удзелам нумары замест.
Такім чынам, дазвольце мне вярнуцца да CS50 Appliance, дазвольце мне ісці наперад і
стварыць новы файл тут называюць -
Давайце проста скажам, нешта простае, як math.c.
Добра.
А цяпер падыдзіце да верхняй частцы маёй праграме, я
збіраюся рабіць звычайныя -
# Уключыць , так што я магу выкарыстоўваць
Printf, Int асноўных (несапраўднымі) -
Мы вернемся да, у рэшце рэшт, тое, што Int азначае,
тут, што пустэча азначае тут, але цяпер, проста ведаю, што
Вы павінны пачаць такія праграмы.
Цяпер я збіраюся ісці наперад і сказаць што-небудзь
другая - Е ("Дай мне нумар:"
).
Тады я буду рабіць Int N = GetInt, таму што яна
аказваецца GetInt іншая функцыя ў бібліятэцы CS50
Акрамя таго GetString.
А зараз я збіраюся зрабіць нешта дурное, як "дзякуй
для% D ", для дзесятковы лік, а затым коска п,
Затым вяртаецца 0.
Такім чынам, зноў вяртаецца 0 не мае нічога агульнага з лікам я
запытаць у карыстача.
Проста азначае, у канцы, што ўсё, па-відаць, добра.
>> Такім чынам, дазвольце мне сысці ў акне тэрмінала тут.
Дазвольце мне ўвесці зрабіць матэматыку, увядзіце.
І нешта не так.
Зрабіць матэматыка не працуе.
Вось першы з нашых паведамленняў аб памылках.
Чаму?
Трохі загадкавым, але -
Так.
Так cs50.h.
Такім чынам, яшчэ раз, асабліва на ранняй стадыі, вы будзеце пісаць ваш першы
Праграма для PSET 1 у секцыі, у працоўны час, і
шчыра кажучы, гэта будзе пераважнай часам тое, што гэтыя рэчы
на самой справе кажуць.
Але вы зразумееце, вельмі хутка яны пачынаюць падаць
ў вёдры якой гэтая азначае, што вы пакінулі ад аднаго
з # ўключае ў верхняй частцы файла.
І Clang, кампілятар, інфармуе Вас аб гэтым па
казаў, а мудрагеліста, невідавочнае аб'яву
Функцыя GetInt з'яўляецца несапраўдным.
>> Добра.
Дык што ж гэта значыць?
Гэта проста азначае, што вы няяўна абвешчаныя ў GetInt
тым сэнсе, што вы відавочна не абвешчаная.
Для заяўляем, INT, вы павінны вучыць
Clang, што яна існуе.
І вельмі простае рашэнне для таго, каб навучыць яго,
у тым ліку гэта іншы файл, cs50.h, у
у верхняй частцы файла.
Таму што літаральна тое, што # уключыць ці гэта кажа Clang
у значнай ступені, каб пайсці знайсці файл з імем cs50.h, капіяваць,
устаўце яго аўтаматычна ў верхняй частцы маёй праграме для мяне,
, А затым пераўтварыць зыходны код нулёў і адзінак.
Але гэта, відавочна, будзе вельмі цяжка, калі мы, людзі, былі
ісці капіявання і ўстаўкі гэтых вялікіх файлаў ўвесь час,
# Ўключыць так проста робіць усё, што аўтаматычна, без
каламуціць мой код з чужой бібліятэкі.
А бібліятэка гэта проста яшчэ адзін файл, які змяшчае функцыі і
іншыя рэчы, якія хтосьці напісаў, што мы
Выкарыстоўваючы для нашага ўласнага даброты.
>> Добра.
Давайце паспрабуем яшчэ раз.
Зрабіце матэматыку.
Enter.
Добра.
Так што, падобна, працаваў.
Такім чынам, дазвольце мне цяпер працаваць матэматыцы; /. Матэматыку.
Калі ласка, увядзіце дае мне нумар 123.
Дзякуй за 123.
Зараз давайце паспрабуем іншы кут выпадак.
Радок даволі шчодры, таму што
Радок можа быць што заўгодна.
Можа выглядаць лічбы, выглядаць
сімвалы, падобныя на словы.
Але гэта Int Int.
Так што цяпер, калі я цяжка карыстальнікаў, і яна кажа "Дай мне
лік, "што, калі я спрабую зрабіць нешта накшталт 0,1?
Ну, гэты лік, і гэта адпавядае
граматыку я тут, але пад капотам, я з
Вядома, выкарыстоўваючы функцыю GetInt.
>> Такім чынам, давайце паглядзім, што адбудзецца.
Калі ласка, увядзіце, паўторыце спробу.
Добра.
Дазвольце мне быць складана і проста націсніце Enter яшчэ раз.
Enter, Enter.
Так што цяпер здаецца, што GetInt трохі больш
магутней, чым GetString.
Мы, супрацоўнікі, рэалізаваны такім чынам, што калі мы заўважаем,
Вы не далі нам Int - і Int з'яўляецца дзесятковы лік
якія змяшчаюць нулёў, адзінак, двоек, троек, чацвёрак, пяцёрак, шасцёрак,
сямёрак, васьмёрак або дзявятак.
І гэта ўсё.
Няма знакаў пасля коскі, не знакі, не знакі прыпынку.
Здаецца, што мы павінны супрацоўнічаць.
Такім чынам, дазвольце мне паспрабаваць чатыры, пяць, шэсць, і гэта дапамагае мне.
Такім чынам, сапраўды, быць анальны тут, я, верагодна, варта сказаць: "Дайце мне
лік "для таго, каб данесці да карыстальнікаў
менавіта тое, што я маю намер.
>> Зараз давайце падумаем, пад капотам.
Мы не збіраемся паглядзець, як cs50.h рэалізуецца сёння,
гэтай бібліятэкі.
Але калі ён працягвае казаць паўтор, паўтор, паўтор, што праграмаванне
Пабудуем я меркавана выкарыстання пад капотам, каб
ажыццяўлення гэтага?
Так што проста цыкл, ці не так?
Адзін з самых простых ідэй, якія мы бачылі на Scratch.
Назаўжды пабудаваць, паўтор пабудаваць.
Як мяркуецца, у гэтую праграму, пад капотам, нават
хоць яна напісаная на C, а не нуля, ён робіць
тое, што называецца эквівалентнай назаўжды, калі карыстальнік не мае
набраў у цэлы лік, скажам, паспрабаваць яшчэ раз, паўтарыць, паўтарыць, паўтарыць, так
Затым, нарэшце, калі мы атрымаем цэлае, то вы
вырвацца з гэтага цыклу.
>> Так што ж іншыя функцыі мы можам выкарыстаць тут, у бібліятэцы CS50 ў?
Ну, накшталт відавочныя, па меншай меры на аснове
тыпы дадзеных, якія мы зараз ведаем, існуюць.
Мы рэалізавалі GetString, GetInt, але і ва ўсім
Першыя тыдні тэрміну, вы таксама можаце выкарыстоўваць GetFloat і
GetDouble і GetLongLong таго, каб атрымаць менавіта
тыпы дадзеных, якія вы хочаце.
Паколькі ключавой дэталлю з'яўляецца тое, што ў адрозненне ад некаторых моў,
як Python і Ruby, дзе вы не абавязкова павінны
аб'яўляць тып дадзеных зменнай -
Вам не трэба казаць кампутара, які матэрыял
Вы збіраецеся змясціць у зменную -
У C, вы павінны быць вельмі дакладным.
Таму калі вы хочаце пераменная п, кавалак захоўвання
што ў гэтым выпадку адбываецца з 32 бітамі ў адпаведнасці з пагадненнем, Вы
павінны паведаміць кампутара, што гэтыя біты
збіраецеся захоўваць нумар -
Ня характар, а не радком, а не з якая плавае кропкай.
І гэта вырашае праблему, мы эфектыўна
сутыкнуўся на мінулым тыдні.
Калі мы выкарыстоўваем нулёў і адзінак лікаў, каб прадставіць не толькі
ліку, але як і сняданак і Cs, як у свеце
кампутар будзе ведаць, што гэтая карціна біт на самай справе
ўяўляе сабой лік 65, у адрозненне ад прадстаўляе
Ліст, якое выпадкова, у адпаведнасці з
ASCII, нагадаем, была эквівалентная 65?
>> Такім чынам, гэтыя тыпы дадзеных падаюць кантэкст для кампутара, так
што ён ведае, што калі гэтыя біты варта інтэрпрэтаваць як
INT або ў выглядзе радка.
Любыя пытанні, то з гэтай нагоды?
Да?
David J. малая: Добры пытанне.
Калі мы возьмем з stdio.h, мы захоўваем файл -
Дазвольце мне спусціцца ў акно тэрмінала і запусціце зрабіць матэматыку, маштабу
У і ўвядзіце -
Цяпер я атрымліваю другую памылку, таму што я няяўна
абвясціўшы, што працаваць цяпер?
Printf.
Так што цяпер я стварыў новыя праблемы, рашэнне якіх
па сутнасці тое ж самае.
Мне трэба паставіць назад.
Аўдыторыя: [неразборліва]
David J. малая: Так.
Так што, калі я вымаю -
Добра, так.
Так што, калі я выдалю ўключэння стандартнай бібліятэкі ўводу / высновы ў да
тут, а потым вы кажаце, калі я магу пазбавіцца ад Printf, атрымаць
пазбавіцца ад Printf?
Так.
Гэта павінна працаваць, таму што я больш не выкарыстоўваюць любы - воклічы.
Я толькі хлусіць?
Ну, добра.
Гэта не будзе працаваць з-за новай памылкі мы толькі што прадставіў.
І гэта адна крыху больш тлумачэнняў.
>> У чым праблема?
Невыкарыстоўваныя зменныя с.
Такім чынам, гэтая памылка з'яўляецца вынікам таго, нашы настроены
Прыбор быць асабліва педантычны, каб сапраўды крычаць на
Вы для кожнай магчымай памылкі, нават калі гэта збольшага
не-фатальную памылку, як гэта - ці сапраўды гэта такая вялікая
справа, што я вылучыў INT, паставіў шэраг у ім, а затым
проста нічога не рабілі з ім?
Такім чынам, функцыянальна, няма.
Гэта не зломіць праграму.
Гэта проста нейкая дурная, так?
Існуе ніякай каштоўнасці для папрасіўшы для гэтага нумара, захоўваемыя
яго ў зменную, калі вы ніколі не збіраўся рабіць нічога
з ім, няхай гэта будзе раздрукаваць яго ці захаваць яго.
Такім чынам, у дадзеным выпадку, Clang прызнае, столькі ж, а
гэта кажа нявыкарыстаных зменных п.
>> Такім чынам, мы можам выправіць гэта, калі мы сапраўды хочам.
Але зноў жа, гэта не добра праграмавання цяпер.
Так што я проста мог гэтага зрабіць -
Спусьцецеся тут, дазвольце мне ачысціць экран, зрабіць матэматыку.
Гэта працуе.
Цяпер я магу запусціць маю праграму матэматыку, прымае ўваход -
добра, што было дрэнна.
Прымае ўваход, і гэта ўсё, што ён робіць, і ў гэтым выпадку.
>> Такім чынам, на самай справе, давайце паспрабуем яшчэ адзін выпадак куце, што мы
не думаю раней.
У дадзеным выпадку - тут, давайце вернемся да таго, што гэта
трохі больш зручным.
Дазвольце мне вярнуцца сюды і зрабіць матэматыку запусціць зноў.
Ой, што ж я зрабіў не так?
Дабраўся, каб вярнуцца ў далейшым.
Добра.
Цяпер мы вярнуліся ў зыходны стан, у якім усё
мы спадзяемся добра.
І зараз, калі я бягу матэматыцы, 123, здаецца, працуе.
Але гэта не вельмі эфектыўны доказы, каб проста сказаць
Добра, што працуе.
789, якая працуе.
Час ўявіць.
Таму што ёсць іншыя выпадкі кута тут.
Радок сапраўды не даюць нам шмат непрыемнасцяў, увёўшы ў
шмат знакаў.
Але што, калі я набіраю ў гэтым?
Удар № 1 многае, многае тут -
Усё ў парадку, гэта становіцца трохі сумна, таму я збіраюся
спыніцеся тут, і я ўдару Enter.
>> Якога чорта гэта было?
Так што гэта сапраўды можа быць растлумачана.
Дык што ж гэта ўзяць яго ў двайковым выглядзе?
Добрая думка, але няма, гэта не тое, што ён узяў яго
ў двайковым выглядзе, таму што, сапраўды, гэта была проста нейкая
супадзеннем.
Мы можам зрабіць гэта зноў.
Так што № 2 у двайковай сістэме, гэта
верагодна, досыць у любым выпадку.
Enter.
Так што гэта не праблема.
Што яшчэ?
Менавіта так.
>> Так што думаю да таго, што Int на самай справе.
Гэта 32 біт, якія ў сукупнасці інтэрпрэтуецца
як лік.
Калі ў вас ёсць 32 біт, гэта азначае, што кожны з бітаў можа быць
0 або 1, 0 або 1.
Значыць, ёсць дзве магчымасці для гэтага трохі,
дзве магчымасці для гэтага дзве магчымасці для гэтага
трохі - так што ў 2 разы 2 разы -
так што гэта ад 2 да 32 харчавання ад агульнага ліку
перастановак з нулёў і адзінак, калі ў вас ёсць 32
запаўняльнікаў, нулёў або адзінак, перад вамі.
Так што, калі ў мяне ёсць 2 да 32, матэматычна, гэта што?
Так што гэта вельмі шмат.
Гэта 4 млрд, плюс-мінус.
І 4 млрд не здаецца, тое, што было надрукавана тут.
На самай справе, гэта выглядае бліжэй да 2 млрд. даляраў.
Але і гэта не выпадкова.
Справа ў тым, што кампутар няправільна маё вялікая колькасць,
мой велізарны паслядоўнасці, а потым і мая велізарная паслядоўнасць двое,
як прыкладна 2 мільярды, тлумачыцца як?
Там ёсць крышка на Int.
Там ёсць, вядома, максімальнае значэнне, якое можна ўявіць.
Але гэта, як правіла, 4 млрд, ці не так?
Калі ад 2 да 32, прыкладна ў 4 мільярды даляраў, што здаецца
гэта самая вялікая колькасць.
Так што не астатнія, але добрая думка.
Адмоўныя лікі.
Так што калі ў вас ёсць 4 мільярдаў магчымых рэчаў, якія вы можаце
ўяўляюць гэтыя розныя перастаноўкі з 32 0 і
1s, ну, само сабой зразумела, што мы, людзі, магчыма, захочаце
ўяўляюць сабой не толькі станоўчыя цэлыя лікі
але адмоўныя цэлыя лікі.
І на самай справе, гэта здагадка, што C робіць.
Такім чынам, з 32 бітамі, можна ўявіць прыкладна адмоўны 2
млрд. ўвесь шлях да станоўчага 2 мільярды даляраў.
І таму ў дадзеным выпадку, тое, што мы сапраўды бачым, гэта проста
махры здольнасць нашага цэлага, і ў нас ёсць, так што
сказаць, перапоўненыя цэлае.
Мы паспрабавалі ўціснуць больш бітаў у ім, чым можа на самай справе падыходзіць.
Такім чынам, канчатковы вынік нас па сутнасці ёсць усе 1 біт.
Мы перавярнуў усе нашы біты, мы спрабавалі прадставіць
Найбольшая колькасць магчымых, але гэта відавочна не амаль
досыць вялікі, каб прадстаўляць дзве рэчы, якія я толькі што ўвялі цалі
Да?
Аўдыторыя: [неразборліва]
>> David J. малая: Добры пытанне.
Чаму мы не можам проста прадстаўляць, што негатыўныя
падпісаць, як толькі персанаж?
Такім чынам, мы абсалютна мог, і мы маглі б захаваць
дадатковых біт.
Але вы па-ранейшаму будзеце мець, каб прадстаўляць, што працяжнік і
што будзе каштаваць вам хоць нешта,
Меркавана няшмат.
Так што, так, мы маглі б мець 32 біт, якія выкарыстоўваюцца для нашага нумары, але цяпер
нам патрэбен яшчэ трохі для нашых працяжнік
сімвал, знак мінус.
Так што цяпер у нас 33 бітныя значэння, якія мы маглі б зрабіць, але гэта
толькі не так, як гэта робіцца.
Мы зрабілі званок меркаваньні гадоў таму, 32 біт з'яўляецца свайго роду
Адзінкай вымярэння тут.
Так што мы збіраемся выкарыстаць адзін з гэтых бітаў эфектыўна
ўяўляюць негатыву, і 31 біт для прадстаўлення ліку.
Іншыя пытанні?
Добра.
Гэта вельмі шмат.
Чаму б нам не пайсці далей і ўзяць нашы пяціхвілінны перапынак тут?
>> Добра.
Такім чынам, яшчэ раз, каб не пераацаніць матэматычных прыкладанняў
праграмавання, давайце проста абрываць гэты прыклад
перш чым мы пяройдзем да іншых канструкцый, толькі таму, што
Праілюструем некалькі агульных каменем кропак на некаторых з
Асновы калі справа даходзіць да напісання праграм.
У гэтым выпадку, рабіць арыфметычныя выразы, якія маюць некаторыя
цікавае стаўленне да сінтаксісу.
>> Так што гэта проста формула, з якой мы можам пераўтварыць
тэмпературы па шкале Фарэнгейта ў градусы Цэльсія.
Калі вы не памятаеце, гэта ўсяго толькі формула.
Таму, калі мы падлучыць па Фарэнгейце значэнне 32 градусаў, што
замарожвання, што гэта будзе 32 мінус 32 роўна 0, і, сапраўды,
0 у Цэльсія таксама замарожванне.
Так хутка праверыць наяўнасць свядомасці ёсць - гэта вядомая формула.
Дазвольце мне перайсці да прыбора, хоць і пачаць
напісанне праграмы пад назвай, як, f2c; "Фарэнгейта ў
Цэльсія кропка C ".
А наверсе тут, я збіраюся пачаць з # ўключыць
stdio.h, і я збіраюся зрабіць Int асноўных (несапраўднымі), а
Зноў жа, мы вернемся ў будучыні да таго, што Int азначае,
там і што пустата азначае, што ёсць.
А цяпер дазвольце мне пайсці далей і рэалізаваць праграмы, якія
па сутнасці робіць гэта пераўтварэнне для нас.
>> Так Printf, скажам, тэмпературу ў градусах па Фарэнгейце.
І тое дазвольце мне ісці наперад і атрымаць значэнне ад карыстальніка.
Якое значэнне я павінен атрымаць ад карыстальніка, калі я хачу
іх даць мне тэмпературу ў градусах па Фарэнгейце?
Да?
Што вы маглі б прапанаваць?
Так.
Такім чынам, паплавок адчувае сябе даволі разумна.
У нас ёсць, зноў жа, толькі некалькі варыянтаў, якія
мы бачылі да гэтага часу.
У нас ёсць такія рэчы, як сімвал, двухмесны, з якая плавае кропкай, INT, доўга-доўга,
BOOL, радок.
Такім чынам, гэтыя, плаваць адчувае сябе даволі разумна.
Мы маглі б выкарыстоўваць двайныя, правільна, таму што, калі мы сапраўды хочам
ўяўляюць тэмпературы чалавечага аўтара -
98,60000 -
мы маглі б выкарыстоўваць 64 біта, каб зрабіць гэта, але ён адчувае, як
залішняя для тэмпературы.
Так што давайце проста пайсці з якая плавае кропкай.
Цяпер мне трэба зменнай.
Проста, каб не ўскладняць, я буду называць яго F, але я
можа проста як правільна называць гэта тэмпература,
але ў любым парадку.
Так што плаваць F = GetFloat.
Як толькі я цяпер вырашылі выкарыстаць GetFloat, хоць, я
неабходна зрабіць адно ўдакладненне.
Так.
Так што мы павінны # ўключыць , у адваротным выпадку кампілятар
збіраюся крычаць на нас.
Цяпер у мяне ёсць паплавок, дазвольце мне ісці наперад і рабіць
пераўтварэнні.
>> Такім чынам, па-першае, дазвольце мне ўвайсці ў звычку тут
Каментуючы свой код.
Такім чынам, яшчэ раз, каментарый гэта проста абазначэнне для чалавека гэта
не ўваходзіць у праграму такой, але ён адзін, дапаможа вам
разумею, што вы зрабілі наступную раніцу, або на наступны
месяц, гэта дапамагае выкладання хлопец зразумеў, што вы зрабілі
або тое, што вы мелі намер зрабіць, так гэта
як правіла, вельмі добрая практыка.
Кожныя некалькі радкоў кода, напісаць каментар да
сябе ці сваіх калегаў.
Дык вось, я хачу сказаць: "Спытайце ў карыстальніка тэмпературы".
Не павінна быць поўнае прапанову, толькі кароткая фраза.
Але ідэя каментуючы ў C з'яўляецца тое, што кожны з вашых
Каментары павінны даць вам сілы - ці, скажам, TF або калега -
слізгаць вашай праграме і дакладна ведаць, што ён робіць, не
столькі чытаннем кода, але, прачытаўшы каментары, якія
павінны быць кароткімі і яснымі.
Добра, цяпер дазвольце мне ісці наперад і сказаць: "Пераўтварэнне
Фарэнгейта ў градусы Цэльсія ". Такім чынам, я збіраюся ісці наперад і рабіць,
скажам, плаваць ст.
Мы будзем трымаць Цэльсія як значэнне з якая плавае кропкай.
>> І дазвольце мне прыняць ўдар на гэтым.
Формула, зноў жа, тут.
Як 5/9 раз F мінус 32.
Так давайце зробім гэта.
Так, 5 дзеліцца на 9, мінус -
Ой, я сапсаваў яго ўжо.
Times.
Такім чынам, 5/9 раз F мінус 32.
Такім чынам, F мінус 32, кропка з коскі.
І цяпер, тут, я буду ісці наперад
і кажуць, раздрукаваць вынік.
І гэтая частка проста. Printf.
Як я магу ісці аб друку гэтага?
Ну, я мог сказаць: "Гэта лік у Цэльсія% F \ п",
толькі для некаторых эстэтыкі.
І потым, якое значэнне я хачу падлучыць тут, як у Printf
Другі аргумент?
Добра.
Так што проста з.
Такім чынам, мы пачнем з гэтага, а потым проста вярнуць 0.
Зноў жа, гэта не мае нічога агульнага з матэматыкай.
Гэта проста азначае, што ўсё добра.
>> Цяпер, гэта правільна, гэтая праграма?
Добра.
Так што я зрабіў некалькі памылак.
Нават калі вы не ведаеце, што праграмаванне, вы можаце адсартаваць
з выводзім назад у пачатковай школе, што
памылкі тут можа быць.
Што адным з першых?
Аўдыторыя: [неразборліва]
David J. малая: Так.
Такім чынам, мы прапусцілі дужках.
Гэта быў наўмысны, што я зрабіў дужках у асноўны
слізгаць тут, таму што там на самой справе гэта паняцце парадку
аперацый, або перавага, у выніку чаго некаторыя аперацыі -
множання -
маюць больш высокую абавязковымі, маюць больш высокі прыярытэт, чым рэчы
як складанне або адніманне.
Такім чынам, мы зрабілі гэта на працягу многіх гадоў толькі, каб ясна дакладна,
што матэматычныя аперацыі павінна быць зроблена ў першую чаргу.
Так што я, верагодна, варта пераймаць менавіта гэта.
У адваротным выпадку кампутар хутчэй за ўсё будзе спрабаваць зрабіць
нешта накшталт разрыву 5 на 9, а затым памножыць F, а затым адняць
32 з усяго гэтага.
Што на самай справе не тое, што мы хочам зрабіць.
Так што давайце дужкі.
Давайце дадамо мой дужках тут, дужкі тут.
Давайце паставім гэта тут.
Вось, я толькі што заўважыў яшчэ адну памылку я зрабіў на гэтым шляху.
Да?
Аўдыторыя: [неразборліва]
>> David J. малая: Ах.
Добра.
Такім чынам, мы на самай справе ёсць і тое ж лік
падзел пытанне, чым раней.
Я выправіць гэта, давайце паглядзім, што сімптом.
Але мы збіраемся, каб выправіць адну
Іншая памылка тут.
Да?
Аўдыторыя: [неразборліва]
David J. малая: Так.
Такім чынам, дурныя памылкі я зрабіў, але неверагодна важна.
Кампутар не збіраецца проста заплюшчваюць вочы, і хай
мне выкарыстоўваць капітал F, калі я фактычна абвясціў зменную
як маленькая е тут, у радку 8.
Так што мне трэба выправіць у радку 11 капіталізацыю мой, які
Хвіліну таму быў сталіцай F па памылцы.
Што тут?
Калі гэта малыя, а?
Яна павінна быць, але гэта супадзенне.
Менавіта% F не мае нічога агульнага з зменнай.
Так проста, каб быць супер ясна, дазвольце мне ісці наперад і
перайменаваць, карацей, "тэмпература". Дазвольце мне перайменаваць
гэтая "тэмпература". Дазвольце мне не перайменаваць.
Таму што, зноў жа,% F глабальна азначае "значэнне з якая плавае кропкай".
Не мае нічога агульнага з маім зменнай.
Але «тэмпературу» па ўсёй месца толькі крыху шматслоўна,
так што я збіраюся вярнуцца да маёй малой літары "F" з.
>> Зараз, дазвольце мне ісці наперад да майго акна тут.
Зрабіць f2c -
які, зноў жа, адвольнае імя, якое я
далі гэты файл.
Здаецца, сабралі.
Дазвольце мне выканаць f2c.
Enter.
Тэмпература ў градусах Фарэнгейта - давайце рабіць лёгка.
32.
Добра, выправіць.
Але, калі я цяпер раблю 212 для кіпячэння -
блін.
Добра.
Такім чынам, відавочна, не выправіць, калі ваш TF спрабуе
па крайняй меры, два значэння.
Так у чым жа тут праблема?
Ну, вы ўжо паклаў палец на тое, што праблема ёсць.
Але чаму гэта так?
Тут, наверсе, калі я раблю матэматыку з 5 падзелены на 9.
Такім чынам, канцэптуальна, гэта цалкам правільна.
Цалкам у адпаведнасці з формулай.
Але толькі з кампутарамі рабіць менавіта тое, што вы
скажыце ім рабіць.
І тое, што мы фактычна кажа кампутара тут
дзяліць цэлы лік 5 на цэлых 9
і дайце мне вынік.
Праблема ў тым, аднак, калі вы падзелам з выкарыстаннем дадзеных
тыпу, на выхадзе будзе той жа тып дадзеных у якасці уваходаў.
І таму, калі два ўваходу з'яўляюцца цэлымі, то выхад будзе
быць Int.
І так 5 падзелены на 9 з'яўляецца кропкай нешта.
Але тое, што бліжэйшы цэлы лік, каб паказаць нешта?
Такім чынам, гэта на самай справе 0.
Так як мы абмяркоўвалі ў панядзелак, ўсё пасля дзесятковай
кропка застаецца ўсечаным.
Ён проста атрымлівае выкінуць.
Так што гэта поўная памылка, таму што я мог бы з такім жа поспехам
усе памножыць на 0 тут.
>> Цяпер я магу выправіць гэта ў некалькі спосабаў.
Я мог бы гэта зрабіць.
5,0 падзелены на 9,0.
Тэхнічна, я нават не трэба гэтага рабіць.
Гэта робіцца дастаткова проста зрабіць адно з лікаў з якая плавае кропкай -
або падвойным - паставіўшы дзесятковай кропкі тут.
Таму што тое, што адбываецца цяпер, калі вы падзеліце цэлы лік на
паплаўка, ці двайны, кампутар збіраецца рэалізаваць
ой, адзін з іх з'яўляецца больш дакладным.
Дазвольце мне памыліцца ў бок, каб даць вам больш дакладна, чым
Вы прызначаны.
Дык гэта будзе канвертаваць вынік -
ён будзе вяртаць вынік як значэнне з якая плавае кропкай, а таксама.
Так што будзе працаваць.
Гэта будзе працаваць.
І ёсць яшчэ адзін механізм, які мы ўбачым у
Больш падрабязна на наступным тыдні.
Вы можаце на самой справе, як праграміст, скажыце кампутара
на самай справе ставіцца адзін да тыпу дадзеных, як
калі б ён быў іншым.
>> Так што я мог на самай справе гэта зрабіць.
У дужках, што я магу сказаць нешта накшталт (з якая плавае кропкай), адкрыты
хлопец, побач хлопец.
І гэта тое, што завецца "кастынг". Зноў жа, больш
на наступным тыдні.
Але гэта толькі праграмны спосаб сказаць
кампутар, ды я ведаю, 9, цэлыя або доўга.
Я ведаю, што гэта значэнне з якая плавае кропкай.
Але разглядаць яго як такой у любым выпадку.
Такім чынам, каб кінуць тыпу дадзеных азначае для пераўтварэння
ад аднаго да іншага.
Шчыра кажучы, гэта крыху выродлівыя, таму я хацеў бы прапанаваць мы ідзем
вярнуцца да першапачатковага прапанове проста пераўтварэнні
гэтыя рэчы з якая плавае коскі ўручную.
Таму што цяпер гэта проста супер ясна, што адбываецца, і
гэта яшчэ не ўсё, што адцягвае.
>> Такім чынам, давайце цяпер вернемся ў маё акно тэрмінала.
Зрабіць f2c.
Дазвольце мне ісці наперад і выканаць гэта.
І, як у баку, вам надакучыць ўводзіць гэтыя каманды
зноў і зноў, разумееш, што кампутары, як і Linux тут,
як правіла, даволі разумная.
І калі б я стукнуў ўверх, мы можам прайсці праз усю сваю гісторыю
Каманды, уверх і ўніз.
Таму ў дадзеным выпадку тут, я магу проста пайсці да запуску зрабіць f2c.
Мяне крыкнуў, таму што я толькі што зрабіў, што секунду таму.
Ён ужо ў курсе.
Так што цяпер я магу запусціць f2c зноў.
Давайце паспрабуем 32 па Фарэнгейце.
Зараз давайце паспрабуем 212 па Фарэнгейце.
>> Уф.
Здаецца, працуе.
Цяпер, гэта добра, але яна адчувае сябе крыху адвольным, што
Я паказваю шэсць лічбаў пасля дзесятковай кропкі.
Правільна?
Калі вы надвор'е чалавека па тэлевізары, ты накшталт Doofus
калі вы праглядаеце тэмпературы
гэтая ступень дакладнасці.
Так давайце спросцім гэта.
Так што давайце на самай справе ідуць сюды, да майго Printf.
І так, я хачу, каб плаваць.
Але я хачу, каб зараз вызначыць дакладнасць.
І я збіраюся быць трохі лаканічней.
Я хачу сказаць, дайце мне адну кропку пасля коскі.
Так, а чым, скажам,% F, я збіраюся сказаць% .1 ф.
І гэта толькі азначае, дайце мне адну пазіцыю
пасля коскі.
Добра.
Давайце паспрабуем гэта зноў.
Дазвольце мне зноў запусціць яго пасля кампіляцыі.
А зараз я набіраю ў 32, і я вярнуся
больш ёмістыя значэння.
І я магу ўвесці, зараз 212, і атрымаць назад больш ёмістым
значэння, а таксама.
І ёсць іншыя рэчы, якія вы можаце зрабіць з Printf.
Вы сапраўды можаце паказаць, наколькі шырокі лік павінна быць.
Калі вы хочаце, каб абіўка на ім, так што вы можаце выраўнаваць па правым краі ці
выраўноўвання налева ўсе вашы нумара або
спрабуюць цэнтры рэчаў.
Так разумею, што ёсць маленькія хітрасці, якія вы можаце зрабіць там.
Але яны зводзяцца да таго, фармат кодаў,
як у нас ёсць.
>> Так што ў плане гэтае пытанне прыярытэту.
Гэта вельмі сумная табліца, каб прайсці праз метадычна.
Але разумею, што аўтары C прыдумалі
правіл, якія вызначаюць, якія аператары маюць больш высокі
прыярытэт, больш тыя, што абавязваюць ўлады, чым іншыя.
Такім чынам, у той час як у пачатковай школе, мы, як правіла ведаў, што гэта
множанне і дзяленне, затым складанне і адніманне,
Затым некаторыя іншыя рэчы.
У свеце праграмавання, ёсць шмат
доўгі спіс рэчаў.
І гэта не тое, што варта запомніць цяпер.
Вы атрымаеце прыстасавацца да яго ў хуткім часе.
Але, як і ў пачатковай школе, як правіла дужках вырашыць
пытанні перавага, зрабіўшы супер ясна,
кампутара і чалавека так, што ён прызначаны.
Так лічаць гэта ледзь шпаргалку там.
Але большасць з гэтых дэталяў мы не зможам атрымаць на працягу некаторага часу.
>> Добра.
Цяпер, давайце будаваць і адысці ад гэтых дурных маленькіх
матэматычныя прыклады.
Тым не менш выкарыстоўваць тыя ж асновы, але пачаць
выказаць сябе крыху больш як Scratch.
Такім чынам, у Scratch, у нас былі гэтыя лагічныя выразы.
І на англійскай, лагічны выраз, гэта што?
Праўда ці хлусня.
Гэта тое, што ацэньваецца як сапраўднае або ілжывае.
1 або 0.
Уключаны або выключаны.
Усё, што вы хочаце назваць гэта.
Зараз у Scratch, кавалачкі галаваломкі выглядала наступным чынам.
І гэта камбінацыя, на дне, з трох
кавалачкі галаваломкі.
Адзін сувязі -
тое, што мае пусты і пустой.
А потым два лагічных выразаў ўнутры яго.
Такім чынам, вы можаце укладваць лагічныя выразы, каб атрымаць больш
складаныя лагічныя выразы.
Напрыклад, калі гэта субота, і гэта добра
надвор'ем, то выйсці на вуліцу.
Ці нешта ў адвольнай падобнае.
Такім чынам, вы можаце далучыцца лагічныя выразы, каб прыдумаць
Вялікае значэнне праўдзівасці, адказ на які грунтуецца
на больш дробныя.
>> Цяпер, C, на шчасце, гэта адлюстраванне
на самай справе даволі простая.
Дужкі дапамагчы ўнесці яснасць тут.
&& Тое, што азначае «і». Дык вось, як
Мы збіраемся пераўтварыць гэтыя блокі з нуля C.
І ўмовы, якія мы бачылі ў Scratch, на левай руцэ
боку, я магу скласці іх гэтак жа ў С. Калі х менш
чым у, то зрабіць гэта.
Інакш, калі х больш у, то зрабіць гэта.
Астатняе лагічна яны павінны быць роўныя, так бы мовіць
што яны роўныя.
Так што цяпер мы можам пачаць будаваць гэтыя рэчы.
>> Так давайце зробім прыклад.
Дазвольце мне адкрыць файл, які знаходзіцца на вэб-сайт курсу, што
Я напісаў загадзя.
Гэта называецца nonswitch.c.
І мы ўбачым, чаму ў адзін момант.
Так што ў гэтым файле - nonswitch.c--
спачатку зразумець, што ёсць цэлая куча
Каментары на самым версе.
Вось толькі патлумачыць назоў файла, што гэта
робіць, і гэтак далей.
І ён, відавочна, дэманструе выкарыстанне лагічнае І-ня -
аб'яднаўшы два выразы.
>> Такім чынам, давайце паглядзім, як гэтая праграма працуе.
Я уключыў два маіх файлаў, cs50.h і stdio.h.
Калі я пракруціць ўніз, цяпер, да праграмы, гэта крыху больш
чым мы ўжо пісалі раней, але даволі чытанай.
Так што я спачатку раздрукаваць для карыстальніка, у радку 18,
"Дайце мне лічбу ад 1 да 10". Так
вось прама там.
Цяпер я атрымліваю цэлае.
Але разумею, што GetInt - даволі просты.
Гэта проста будзе атрымаць Int.
Гэта будзе гарантаваць, што гэта атрымаць Int, а не
Радок або лік з якая плавае кропкай.
Але гэта не збіраецца рабіць любыя межы праверкі.
Гэта не збіраецца фільтраваць нумары, каб быць паміж
вызначаным дыяпазоне.
Такім чынам, мы павінны рэалізаваць гэта самі.
Гэтак жа, як у Scratch, дзе я мог бы зрабіць злучэнне
2 выразы, я магу зрабіць гэта ў C наступным чынам.
Калі п больш або роўная 1, а п менш і
або роўная 3, я збіраюся вельмі адвольна ўказ, што
лік было невялікім лікам.
Толькі дзеля зацвярджэння.
Інакш, калі п ад 4 да 6, друк "Вы выбралі сярэдні
нумар. "Else, калі п ад 7 да 10, друк" Вы выбралі
Вялікая колькасць ". Else Print" Вы выбіраеце няправільны нумар ».
Таму лагічна, што наступным, калі мы
вычарпалі наш асартымент.
>> Так разумею, што гэта не зусім так, як мы пішам больш або
роўнымі ў матэматычным класе.
Правільна?
Вы звычайна малююць яго як гэта, з лініяй пад ім.
Але няма такой клавішы на клавіятуры.
Такім чынам, сімвал C для выражэння больш або
роўна гэта два знака, а знак менш
або роўная складаецца з двух знакаў, а таксама.
Добра.
Так што, калі я запускаю гэтую праграму, вы можаце здагадацца, што гэта
збіраецца рабіць.
Калі б я пайсці далей і зрабіць nonswitch, Enter.
А затым запусціць nonswitch.
Дайце мне нумар ад 1 да 10.
Я збіраюся даць яму 11.
Я выбраў няправільны нумар.
Дазвольце мне паспрабаваць нумар 3.
Я ўзяў невялікая колькасць.
Такім чынам, існуе даволі просты.
>> Што рабіць, калі я хачу змяніць паводзіны гэтай праграмы і
зрабіць нешта крыху па-іншаму, а?
Дазвольце мне ісці наперад і казаць пра гэта.
Дазвольце мне пазбавіцца ад усяго гэтага.
І дазвольце мне сказаць, калі (п == 42).
А потым я збіраюся ісці наперад і сказаць друку "Вы выбралі
Правільны адказ ". Астатняе мы збіраемся ісці наперад і сказаць,
Е ("Вы выбралі
няправільны адказ ");. Добра.
Проста так.
>> Зараз некалькі пунктаў мы можам зрабіць тут.
Адзін з іх, я не ўвесці сімвал, які вы думаеце,
Найбольш разумным.
Калі я хачу, каб праверыць роўнасць, аказваецца, вы не выкарыстоўваеце
знак роўнасці.
Вы замест гэтага выкарыстоўваць роўных знак роўнасці.
І чаму б гэта мог быць, проста інтуітыўна?
Так.
Аўдыторыя: [неразборліва]
David J. малая: Правільна.
Знак роўнасці ўжо выкарыстоўваецца для задання.
Хтосьці сапраўды не думаю, што гэта да канца.
І вось цяпер, калі справа даходзіць да праверкі роўнасці, мы павінны
быць больш відавочным, і казаць роўных з роўнымі.
Вельмі распаўсюджанай памылкай з'яўляецца, каб зрабіць гэта.
І, калі ў працоўны час або на наступным тыдні ці ў
Наступныя два тыдні вы робіце нешта накшталт гэтага, а затым
Змагацца з гэтым на 10, 20 хвілін, спрабуючы высветліць,
што праклятая памылка ёсць, разумееце, што вы адзін з тых,
людзі, якія зрабілі гэтую памылку.
Такім чынам, супер лёгка зрабіць.
Але мэта зараз, каб прадухіліць гэтую памылку.
Гэта можа ацаніць, таму што гэта на самай справе казаў?
Калі п атрымлівае 42.
Такім чынам, дзеяслоў людзі выкарыстоўваюць, у вуснай форме, каб выказаць
Паняцце прызначэнне "атрымлівае". Так што, калі п атрымлівае 42.
Такім чынам, гэта азначае, што прызначыць 42 да н.
Цяпер у мяне ёсць лагічнае выраз у круглых дужках,
Унутры гэтага ўмовы, кошт якіх складае 42.
Правільна?
Таму што, калі ацэньваць яго знутры, агульная
Адказ, у цяперашні час, складае 42.
>> Так што калі я задаў вам пытанне, "калі (42)," Што такое
, Што сапраўды казаў?
Ну, лагічныя выразы можа быць толькі сапраўдным або ілжывым.
1 або 0.
Уключаны або выключаны.
Такім чынам, мы, здаецца, ёсць куце дадзеным выпадку, згодна з якой усе
Раптам, я кажу "калі (42)". Гэта не лагічнае значэнне.
Так што кампутары робяць, тым не менш, яна па сутнасці прыраўноўвае
усё, што не 0 інтэрпрэтуецца, каб быць праўдай.
1.
On.
Усе яны функцыянальна эквівалентныя.
Толькі значэнне 0 або ключавое слова ілжывае, як мы будзем
у канчатковым рахунку бачыць, на самай справе няправільна.
Такім чынам, "калі (42)" будзе на самой справе быць праўдай, таму што яна не роўная нулю.
Такім чынам, каб быць больш дакладным тут, лагічнае значэнне, на самай справе не так
шмат праўдзівай ці ілжывай, але для гэтага
выпадку, калі роўны 0 або адрозніваюцца ад нуля.
Такім чынам, ілжывая ці не ілжывая.
І гэта дазваляе нам ахопліваць усё больш
магчымасці ў дужках.
Так што нам трэба, заўсёды так старанна, кажуць, што гэта -
Калі (п == 42).
Проста таму, што нам трэба паказаць тэсту роўнасці,
Ня прысвойванне значэння.
>> Што яшчэ варта адзначыць тут?
Гэтыя фігурныя дужкі на самай справе не трэба.
Я раблю іх проста каб быць Ніт-прыдзірлівыя тут.
Але калі ў вас ёсць умова, што ёсць толькі адзін радок
код, для зручнасці, праграмісты не павінны выкарыстоўваць
фігурныя дужкі.
Дастаткова проста водступ, па эстэтычным меркаваннях, а
Затым напісаць радок кода.
Толькі тады, калі вы хочаце напісаць два радкі кода - для
Напрыклад, яшчэ Е ("Bye!"). Калі вы хочаце зрабіць
, Што гэта не працуе.
Вы можаце водступу ўсё, што вы хочаце, а тое, што ў вас ёсць
ўвялі два радкі кода без выкарыстання фігурных дужак
азначае, што гэтая праграма не будзе працаваць правільна, ці можа
нават не збіраць правільна.
Такім чынам, на дадзены момант, шчыра кажучы, я думаю, што лепш проста звычка
выкарыстоўваць фігурныя дужкі, і вы ўбачыце, што яны робяць
Супер ясна, што адбываецца.
>> Акрамя таго, як у бок - асабліва, калі вы сярод тых, хто выкарыстоўвае
рэкамендуемыя кнігі або анлайн-рэсурсаў -
разумею, што ёсць такое паняцце стылю ў
праграмавання.
І некаторыя людзі на самай справе аддаюць перавагу ставіць фігурныя дужкі
тут на лінію.
Некаторыя людзі аддаюць перавагу рабіць смешныя рэчы,
як іх тут.
Там няма няправільных адказаў, калі справа даходзіць да
стыль, але гэта не так.
Але некаторыя людзі робяць гэта.
[Смех]
David J. малая: Так я кажу пра гэта цяпер, проста таму, што, як
Вы прачыталі пра рэчы ў кнігах або ў Інтэрнэце, вы збіраецеся атрымаць
розныя паведамленні з розных настаўнікаў і
розных аўтараў.
І гэтак жа, разумеем, што, функцыянальна, яны
ў цэлым эквівалентныя, але быць паслядоўным.
Так што ў гэтым выпадку, мы будзем стандартаваць фігурныя
дужкі выстройваюцца тут злева.
>> Добра.
Так што давайце ісці наперад зараз і запусціць гэта, і паглядзім, што адбудзецца
з гэтай праграмай.
Зрабіць nonswitch.
Затым запусціце nonswitch.
Дайце мне лік ад 0 да - так што гэта не адпавядаюць
больш, але я проста хачу, каб калі заўгодна казаць 42.
І я выбраў правільны адказ.
Ну што ж, давайце на самай справе ўзяць гэта ў іншым накірунку.
Аказваецца, ёсць некаторы іншы сінтаксіс, які мы
Можна выкарыстаць у праграме.
Вось новая частка сінтаксісу, функцыянальна тое ж самае,
а проста ўводзіць яшчэ адзін спосаб выказаць сябе.
Такім чынам, гэта тое, што завецца "перамыкач заяву". І
Пераключальнік заяве працуе наступным чынам.
Яна займае ў дужках значэнне, якое вы хочаце
"Пераключальнік" на.
Вы хочаце, каб паводзіць сябе па-рознаму ў залежнасці ад яго значэння.
Такім чынам, гэта азначае, што перамыкач на значэнне п.
А што гэта значыць?
Ну, а калі п = 1 або 2 ці 3, ісці наперад і раздрукаваць "Вы
атрыманні вялікай колькасці ", а затым разарваць.
Прычына разрыву ў тым, што шлях C працуе, як
толькі ён знаходзіць выпадак, які адпавядае, ён пачынае выкананне
увесь код ніжэй.
Так што, калі ў мяне ёсць адна радок кода, як я тут, на лініі 27, то
запускаецца на выкананне.
Калі я дадам яшчэ адну лінію тут, ён запускаецца на выкананне.
Іншая лінія тут, ён запускаецца на выкананне.
Праграма спыняе выкананне толькі тое, што ніжэй за
дастасавальным заявай аб выпадку, калі я відавочна
сказаць "зламаць". Так што не так.
Так, у дадзеным выпадку, у якасці выніку.
Выпадак 4 ці 5 ці 6, аналагічна, будзе
раздрукаваць паведамленне.
У гэтым выпадку сярэднія ліку.
Перапынак.
Выпадак 7, 8, 9, 10, гэта будзе раздрукаваць "Вы выбралі вялікі
нумар. "Break.
А тут яшчэ літаральна ключавое слова завецца "па змаўчанні"
гэта эфектыўна, як "іншае" пабудаваць.
Такім чынам, новы сінтаксіс, але інтэлектуальна,
нічога новага тут няма.
Гэта як Scratch.
Калі, інакш, калі, інакш, калі, накшталт блока.
>> Дык вось уключаны версію гэтай праграмы.
Але звярніце ўвагу, што мы зрабілі гэта з нумарамі тут.
Дазвольце мне адкрыць другой версіі, проста каб паказаць,
нешта больш канкрэтнае.
Такім чынам, тут мы маем класы замест гэтага.
Аказваецца, можна выкарыстоўваць перамыкачы не толькі на цэлыя, але на
сімвалы.
Не ва ўсіх тыпах дадзеных, але па крайняй меры на знакі.
Дык вось, мы маглі б зрабіць нешта падобнае, калі значэнне С,
Карыстальнік набралі, у радку 19 з дапамогай GetChar функцыі,
гэта капітал або ніжні рэгістр, давайце інтэрпрэтаваць яго як клас,
і кажуць, што яны выбралі выдатную ацэнку.
І ўніз уздоўж перамыкач заяву, у нас ёсць іншыя
выпадкаў "B" з і "C" з, і гэтак далей.
Але давайце зараз завяршаюць адну рэч.
І зноў, накшталт праляцеў праз
Некаторыя з гэтых прыкладаў.
Але гэта сапраўды так, што мы можам іх ужываць, то цяпер -
ці сапраўды, проста перавесці іх у цяперашні час -
да С.
>> Такім чынам, дазвольце мне ісці наперад і рабіць гэта.
Я збіраюся адкрыць новы файл.
І я збіраюся зрабіць, ўключаюць .
А потым я збіраюся зрабіць Int асноўных (несапраўднымі).
Дазвольце мне захаваць гэты файл як loop.c.
Проста ў якасці прыкладу.
І я збіраюся пайсці далей і зрабіць наступнае.
Я хачу напісаць вельмі стомна праграмы.
Так 10.
Давайце зробім гэта.
9.
Добра.
Як толькі вы пачынаеце рабіць гэта ў праграмаванні, вы
верагодна, робіце нешта няправільна.
Але мы пачнем там у любым выпадку.
Ой.
Гэта на самай справе так.
7.
6.
5.
4.
Нічога не здарыцца, калі мы дабяромся да 0.
3.
2.
1.
Добра.
0.
Выдаліць.
>> Добра.
Такім чынам, вяртаецца 0.
Такім чынам, гэтая праграма, відавочна, будзе рабіць тое, што ён вельмі
стомна кажа, што збіраецца рабіць.
Гэта будзе друкаваць усе гэтыя
Значэнні, ад верху да нізу.
Такім чынам, дазвольце мне робяць пятлю.
А потым - воклічы.
Зрабіце пятлю.
Я быў у іншым каталогу.
А цяпер дазвольце мне выканаць цыкл.
Enter.
Woohoo.
Вельмі прыгожа.
Добры, доўгі праграмы.
>> Добра, а цяпер давайце зробім гэта лепш.
Як і ў Scratch, калі вы пачалі выкарыстоўваць цыкл
будаваць, а не проста капіяваць і ўстаўляць ўсё
кавалачкі галаваломкі, дазвольце мне прадставіць гэтую рэч.
Такім чынам, у C, існуюць розныя цыклічныя канструкцыі,
адна з якіх выглядае наступным чынам.
"За" пятля мае тры рэчы, падзеленыя двума кропкамі з коскі.
І потым, усярэдзіне цела цыклу, так бы мовіць -
матэрыял ўнутры фігурных дужках -
мы можам зрабіць нешта зноў і зноў.
Так што ў мяне тут на экране, гэта
Літаральна каментар.
/ / Ці азначае, што тут ідзе каментар.
Гэта не код.
Гэта толькі англійская Апісанне, для мяне, чалавека.
>> Так ініцыялізацыі, умовы і абнаўлення.
Ну, давайце паглядзім, як гэта працуе.
Гэта дазваляе мне перапісаць гэтую праграму наступным чынам.
За -
так вось ідзе мой цыкл -
Int я -
Тут прыходзіць пераменная называецца "я" -
атрымлівае ініцыялізаваць да 10.
Так што мой ініцыялізацыі.
Я хачу зрабіць гэты цыкл да тых часоў, як "Я" больш ці
роўная 0.
І на кожнай ітэрацыі гэтага цыклу, я хачу,
зрабіць я -.
Такім чынам, мы ўбачылі + + ў панядзелак.
- Усё наадварот.
Гэта памяншае значэнне на 1.
Унутры гэтага цыклу, я хачу зрабіць нешта.
Так што я збіраюся сказаць нешта накшталт Printf.
Я не хачу сказаць, 10 цяпер, таму што гэта, відавочна, толькі
у друк і тое ж значэнне.
Што я хачу надрукаваць, а, напэўна?
Так.
Такім чынам, "я". Такім чынам,% D, I.
>> Так што я збіраюся выкрасці адну з гэтых ідэй ад больш ранніх -
гэтая замена фармату кодаў -
, А затым тут, унізе, я буду вяртаць 0, за ўсё
для добрай мерай.
Але зараз у мяне ёсць больш ёмістыя праграмы.
Гэта ўсяго толькі некалькі радкоў, а не які-небудзь 10 ці 11 ліній.
Пусціце мяне да маёй радку сюды.
Рымейк цыклу.
Паўтарыце цыкл.
І гэта, здаецца, тое ж самае.
Зараз праграма няма больш цікавай.
Але цяпер я магу нешта накшталт гэтага.
Я магу змяніць гэта да 100.
Затым я магу перакампіляваць праграму.
І тады я змагу зноў запусціць маю праграму.
І цяпер ён ідзе супер-хутка на сучасных кампутарах.
Але ёсць у мяне -
а на самай справе, мой пракруткі буфера ня
нават пайсці так далёка.
Там мы ідзем.
Так што ў нас ёсць усе 100.
Але гэта лёгка зрабіць памылкі тут.
Што будзе чаканае паводзіны, калі я
выпадкова гэта зрабіць?
Такім чынам, ён адчувае, як бясконца.
Такім чынам, давайце паглядзім, калі кампутар вядзе сябе.
>> Такім чынам, дазвольце мне пайсці далей і зрабіць пятлю.
І дазвольце мне выканаць цыкл.
Так што давайце вернемся да гэтага праз хвіліну.
Мы паведамім, якія працуюць.
Таму што мы павінны лічыць да, мінімальна?
Верагодна, па меншай меры, 2 млрд, калі ў нас ёсць, што шмат бітаў, а
мы выкарыстоўваем станоўчыя значэння.
Такім чынам, давайце пераходзіць сюды.
Акрамя гэтых відаў завес, у нас ёсць тое, што называецца ў той час як
завес. Такім чынам, як і ў Scratch, вы мелі Назаўжды
блокі, і ў вас паўтор блокаў.
Акрамя таго, у C, вы проста ёсць іншыя спосабы
выказаць сябе.
Так што ў вас ёсць гэта паняцце ў той час як цыкл, які дазваляе
выказаць сябе крыху па-іншаму.
І тады ў вас ёсць тое, што называецца зрабі той час як цыкл,
, Які працуе крыху па-іншаму, а таксама.
І мы будзем дражніць адзін ад аднаго гэтыя з цягам часу.
>> Але давайце паглядзім на гэта апошняе тут.
Калі мы ідзем у -
ўсё яшчэ працуе.
Гэта даволі бясконцым.
Такім чынам, дазвольце мне перайсці ў станоўчы, і паказаць, як мы можам на самай справе
кіраваць карыстацкага ўводу трохі больш эфектыўна.
Гэта даволі кароткай праграме.
І тут у нас, у асноўным, Int N дэкларацыі.
Так дайце мне зменную с. Зараз, я літаральна кажу
"Рабіць". А потым я атрымаў адкрытую фігурныя
дужкі, недалёка фігурнай дужкай.
А потым заўважылі, адразу пасля гэтага, ён кажа, а п
менш, чым 1.
Так заўважыць, што гэтыя лініі -
Ад 19 да 24 -
складаць калектыўна DO-цыклу.
І зноў жа, новы сінтаксіс, не новая ідэя.
Гэта проста яшчэ адзін спосаб цыклаў, сінтаксічна.
Дык што ж гэта зрабіць?
Выканайце наступныя дзеянні ў той час як п менш за 1.
Такім чынам, што ж я хачу зрабіць?
Я патрабую, каб вы даць мне цэлае станоўчае лік.
Тады я на самой справе спрабуюць атрымаць цэлы лік ад карыстальніка.
Але з пункту гледжання парадку аперацый тут, таму што
у той час як умова тут, я тады збіраўся праверыць, п
менш чым 1?
Такім чынам, выкажам здагадку, што карыстач -
пасля таго, як запатрабаваў такім чынам -
тыпу ў значэнне 0.
Гэта ўмова будзе слушна або ілжыва?
Ну, гэта на самай справе адбываецца, каб быць праўдай.
Таму што п 0, 0 менш за 1.
Дык што ж гэта значыць?
Зрабі гэта яшчэ раз.
Толькі адзін раз, што стан ХЛУСНЯ.
Калі я друкую ў 42.
Ну няма, 42 не менш, чым 1.
Таму гэты цыкл ажыццяўляецца выкананне.
І вось у той момант, праграма будзе сказаць, дзякуй за
42, у гэтым выпадку.
Зараз у вас ёсць гэта спосаб выказаць сябе -
Мы не павінны чакаць гэтага да канца.
Гэта зойме некаторы час.
Працяг варта ў наступны раз, можа быць.
>> Але зараз у вас ёсць магчымасць, мы спадзяемся зразумець,
Трохі гумару вылюдка.
Прабачэнні.
Гэта не прадстаўнік гумару ў кампутарнай навуцы
свету, але гэта міла.
[Смяецца] Давайце канца на гэтай ноце.
І мы будзем бачыць Вас у панядзелак.
[Апладысменты]