>> Давид Ј Малан: Све Добро, тако да је ово ЦС50.
И то је јасно петак.
И то је крај недеље један.
Дакле, можда ћете се сетити да смо стали, последњи пут, са Цлиффхангер од сорти.
Чиме смо излагати ову лаж, да не ма шта си научио расте се
уп, 1 подељено са 10 није, у Чињеница, 0,1 или 0.100 или 0,10000.
У ствари, ако се саберу ова Програм, као што смо урадили јуче, са,
да непрецизност, а затим урадите тачка, сласх, непрецизност,
сазнали смо да је то оно што је 1 подељено са 10 је заправо.
Дакле, то није стварно врло случај.
Али то не наговештај на некој основно ограничење рачунара.
И заиста, међу ствари ћемо да радимо
данас је да погледамо зашто ово мора десило, какве импликације то има,
како је човечанство није успело да схвати ово у неким веома
Озбиљан ситуатионс-- Резултат који
је прилично трагична а екпенсиве-- и такође
Погледајмо како смо могу заправо брани
против ове врсте ограничења.
Тако интуитивно, можда, Зато је 1 подељено са 10,
према мом компјутеру Овде, не само 1/10, 0.10?
Да.
Šta misliš?
>> Аудиенце Мембер: Корен је другачије?
>> Давид Ј Малан Тхе шта је?
Ох, радик је другачија?
Дакле, не сасвим.
То је заправо више је фундаменталног значаја за хардвер.
Остали мисли?
Да.
Аудиенце Мембер: Они представљају бројеве другачије?
Давид Ј Малан: Тако они-- Тако је.
Они представљају бројеве другачије.
Нетачно, очигледно.
Тако да је-- Па, другачије од чега?
Или од кога?
Од нас?
Аудиенце Мембер: Да.
Они не користе децимала систем за [неразумљиво].
Давид Ј Малан: У реду.
Дакле, у извесном смислу, они не користе децимални систем.
Испод хаубе, све је, заиста, бинарни,
и то је повезано, у ствари.
Али то је чак и једноставније објашњење од тога.
Да.
>> Аудиенце Мембер: Они само толико бита.
Они само могу похранити до одређеног мери, као и са децимале.
>> Давид Ј Малан: Да.
То је оно што је стварно постаје у томе.
Испоставило се да су компјутери обично, увек ћу само
користити коначан количину информација да представља нешто.
Зар не?
На крају крајева, имамо фиксни само Количина простора на хард диску.
Имамо само фиксни износ РАМ-а или меморије рачунара.
И ако имате само фиксни износ од нечега,
сигурно не могу заправо цоунт уп до бесконачности, или било који број који желите.
Ви, врста, морају да бирамо шта опсег
од вредности ћеш да подржи.
>> И тако, на пример, недељу или две пре, када смо разговарали о АСЦИИ,
и разговарали смо око 8 бита, или бајт, да тако кажем,
највећи број можемо представљају са 8 бита је шта?
255.
И можемо представљати 256 Укупно вриједности али не ако ћемо провести један од њих
на 0-- Па, али ако провести један од њих на 0,
онда је највећи број је, наравно, 255.
>> Тако испада да је ово случај такође, у овом контексту.
Почели смо разговарати последњи пут, о бројевима флоатинг-поинт, који
се разликују од целих бројева, у да имају децималну тачку
и, надамо се, неки бројеви након тога, али они јесу.
Рачунар је само обично иде користити 32 бита, можда 64 бита
да представљају флоатинг поинт вредности.
Дакле, иако смо одрасли учење математике и знајући
да апсолутно може имати бесконачан број бројева
после децималног зареза, а не ако имате коначних меморију.
Ви, некако, морамо да заокружимо, или изабрати који
Бројеви ћеш да представљају.
И тако ти падне на памет, у извесном смислу, а то је компјутер најближи
приближавање вредности које 1/10 може се, са само 32 или тако бита.
И то не само 1/10.
>> На пример, ако променим ово 1/3, што мислимо да је још једноставније.
Дакле, 1 подељено са 3.
Дозволите ми да сачувате датотеку.
Пусти ме само напред и рецомпиле га.
И дозволите ми да поново покренути.
И овде, по свему судећи, 1/3 није 0.3 а затим бесконачан број 3'С
након тога.
Имате ову непрецизност на крају.
Дакле, ми људи су тачни, а шта ви се учи, у ствари, тачно,
али смо ударали до против неких ограничења.
>> И шта сам мислио да бих данас, је почети
гледајући, искрено, трагичне последице овога
Понекад, кад се човечанство не баш спроводи
за ову реалност и ових ограничења.
А видећемо низ вињете из Хистори Цханнел који узима
Погледајте како ствари је пошло наопако.
То је дуга око 8 минута, па ћемо се вратити после овога
и да погледамо тачно шта друго може да крене наопако.
Ако бисмо могли да затамни лигхтс--
>> [ВИДЕО РЕПРОДУКЦИЈА]
>> -Цомпутерс, Сви смо дошли да прихвати су често фрустрирајуће проблеми који
иди са њима.
Душко, вируси и софтвер Глитцхес су мале цене
да плати за практичност.
Али у високе технологије и хигх-спеед војних и свемирског програма апликације,
најмањи проблем може бити увећана у катастрофу.
Дана 4. јуна 1996. године, научници припремају да покрене беспилотну Ариане 5 ракету.
Она је носила научна сателити дизајниран
прецизно како успоставити Земљино магнетно интеракције на терену
са соларних ветрова.
Ракета је направљен за Европска свемирска агенција
и скинут са свог објекта на обали Француска Гвајана.
>> -И Око 30 секунди у лет, они прво
Приметио је нешто кренуло наопако.
То су млазнице су окретни на неки начин они заиста не би требало.
Око 40 секунди у лету, Јасно је возило било у невољи,
и тада су направили одлука да се униште.
Сваки Службеник за безбедност опсег са огромне храбрости притисне дугме,
разнео ракету пре него што је могла постати опасност за јавну безбедност.
>> Ово је била лепотица Воиаге оф тхе Ариане 5,
и њено уништење узео поставите због грешке
уграђен у софтверу ракете.
-Проблем На Аријана је да постоји
је број која је захтевала 64 бита да изразе,
и он је желео да га претвори га у 16 ​​бит број.
Они претпоставити да је број никада није ће бити веома велика,
да је већина тих цифара у 64-битна број је било 0 је.
Они су били у праву.
>> -У Немогућност једног софтверски програм да прихвати
врста броја генерише друга је била у корену неуспеха.
Развој софтвера је постао врло скупо део нове технологије.
Ариане 4 Ракета је веома био успешни, толико софтвера
створен за то је био користи на Ариане 5.
>> -У Основни проблем је да је Аријан 5 је био бржи, убрзан брже.
И софтвер није имала чини то.
>> -У Уништавање ракета Била је то огромна финансијска катастрофа,
све због минут софтвера грешке.
Али ово није био први време проблеми конверзије података
је муче модерне ракетне технологије.
>> -У 1991., са почетком Првог Заливског рата,
Патриотски ракета доживели сличну врсту
проблема конверзије број.
Као резултат тога, 28 људи, 28 амерички војници
убијено и око 100 рањено,
када Патриотски, који је требало за заштиту од долазних Сцудс,
није успео да испали ракету.
>> Када Ирак напао Кувајт и Америку покренута Пустињска олуја почетком 1991. године,
Патриот ракетне батерије су распоређени да заштити Саудијску Арабију и Израел
из ирачких Сцуд ракетних напада.
Патриота је амерички, средње опсег земља-ваздух система
произведен од стране компаније Раитхеон.
>> -У Величина Патриот интерцептор, Сама је око, дуга око 20 метара.
И то је тежак око 2000 килограма.
И то носи бојеву главу од о-- Мислим да је отприлике то 150 фунти.
А бојева глава, сама, је висока експлозив,
која има фрагменте око њега.
Кућиште бојеве главе је пројектована да делују као сачме.
>> -Тхе Ракете су носио, 4 по контејнеру,
и транспортују полу-приколици.
>> -У Патриота против ракетни систем датира најмање 20 година.
Првобитно је пројектован као ваздушна одбрана ракете
да оборе непријатељске авионе.
У првом Заливског рата, када је рат дошао,
Војска жели да га користите у оборе Сцудс, а не авионе.
Ирачки снаге није било толико проблем,
али је војска била забринута за Сцудс.
И тако су покушали да надоградите Патриот.
>> -Интерцептинг Непријатеља ракета путује Мацх пет
је требало да буде довољно изазован.
Али када Патриотски је улетео у службу,
Војска није био свестан Ирачки модификација које је
њихови СКАД готово немогуће погодити.
>> Шта се десило, то су СКАД да су долазили у, били су нестабилни,
они су брбљао.
Разлог за то, је Ирачанима, како
да 600 километара од од 300 километар опсег ракета,
је тежину од предњег бојеве главе и направио бојева глава упаљач.
Тако сада, Патриотски покушава да дође у Сцуд, и већину времена,
огромна већина од време, то би само лети од Сцуд.
>> -Једном Оператера система Патриот схватио Патриотски промашила циљ,
они активирао Патриот бојеву главу, како би се избегла губитке ако се
било дозвољено да падне на земљу.
>> То је оно што већина људи видели, те велике ватрене лопте на небу,
и разумео као пресретнути Сцуд бојевих глава.
Иако је у ноћи небо, Патриоте појавио
успешно се уништавање Сцудс, на Дхахран,
није могло бити грешка о свом раду.
Ту, у Патриот радарски систем Изгубила на долазни Сцуд,
и никада није покренута, због софтверског грешке.
То је Израелце који је први откривени да што дуже систем био укључен,
је већа време неслагање постао, због сат уграђеним
у рачунару система.
>> Око 2 недеље пре трагедија у Дхахран,
Израелци пријављен Министарство одбране,
да је систем губио време, да је после око 8 сати трчања,
су приметили да је систем постаје приметно мање прецизна.
Министарство одбране је одговорио говори све Патриот батерија
да не остављају система на дуже време.
Они никада није рекао шта је дуго времена била.
8 сати?
10 сати?
1000 сати?
Нико није знао.
-Тхе Патриот батерија стационирани у касарни
у Дхахран, и његова погрешна унутрашња сат, је био више од 100 сати
у ноћи 25. фебруара.
>> -То Багер времена са тачношћу око 1/10 секунде.
Сада 1/10 секунде је занимљива број
јер то не може бити изражен у бинарном, тачно.
Што значи, да не може да се изрази, тачно,
у сваком модерног дигиталног рачунара.
Тешко је поверовати, али користити као пример.
Узмимо број, 1/3.
1/3 не може исказати у децимале, тачно.
1/3 је 0.333 дешава у бесконачност.
Нема шансе да то урадите са апсолутна тачност, у децимале.
То је управо иста врста Проблем који се догодио у Патриот.
Што дуже систем водио је горе време грешка је постао.
>> -После 100 сати рада, грешка ин тиме је само око 1/3 секунде.
Међутим, у смислу таргетирања ракета путује Мацх 5,
то је резултирало у праћењу грешка преко 600 метара.
Било би фатална грешка за војнике на Дахрану.
>> Шта се десило, је Скад лансирање је детектован сателита за рано упозоравање,
и они нев да је Скад је долази у њиховом правцу.
Они нису знали одакле долази.
>> -То Сада је до радару компонента Патриот система,
брани Дхахран, да пронађе и задржи Трацк долазног непријатеља ракете.
>> -У Радар је био веома паметан.
То би, заправо, пратите положај Сцуд
а онда предвиђа где вероватно би било,
следећи пут, Радар послао импулса.
То се зове капија опсег.
>> Онда, некада Патриот одлучује довољно времена има
прошло да се вратим и проверите следеће локација за ову откривени објекат,
иде назад.
Дакле, када се вратио у погрешан место, онда не види објекат
и одлучује да није било објекат, то је била лажна детекција,
и капи нумеру.
Долазећи Скад нестала од радара,
и секунди касније, то ударио у касарну.
Скад убила 28, а била последња један испаљен током првог Заливског рата.
Трагично, ажурирани софтвер стигао у Дхахрана сутрадан.
Софтвер мана је имао био фиксни, затварање
једно поглавље у невољи Историја Патриот ракете.
>> [Крај репродукције]
>> Давид Ј Малан: Тако ћемо да погледамо неке сличне ограничења у мало.
Али прво, хајде да Прелазак на неколико вашу информацију је.
Дакле, једног-- овог викенда, било ће бити супер секције,
које имају за циљ да замени редовно заказаним секције, које
ће покренути недељно отуда.
Погледајте сајту ЦС50 је За више информација о њима.
Они ће такође бити снимљен и емитују ливе за оне који не могу да присуствују.
Проблем сет 1 је на Цоурсе аутора већ,
па ћемо да погледамо да је у само мало.
И радног времена превише, одржаће поставите Овог понедељка до четвртка.
>> Дакле, ово је највише канонски Програм смо погледали последњи пут.
То је као најједноставнији Програм можете писати у Ц,
па чак и да је мало храбре тврдње.
Зар не?
Зато што је много наизглед сложеност ово.
Дакле, хајде да погледамо брзо шта су неки од ових елемената
су били и онда покушати да обезбеди ментални модел за колико
ово најједноставнији програма раде, а онда ћемо почети
гледања на ствари све сложенији.
Дакле, ова линија овде, истакао сада, у жуто, оно што смо рекли, последњи пут,
да то за нас?
Која је сврха то служи?
Свако од даље назад?
Да.
>> Аудиенце Мембер: [неразумљиво]
Давид Ј Малан: Добро.
Дакле, то вам даје приступ командама, или немојмо
цалл их функције, да неко други написао, да су проглашени,
да тако кажем, у неком другом фајлу.
Тако ћемо тачно видети шта је .х фајл је насупрот .ц датотеку, на крају.
Али за сада, само знам то принтф, на пример,
је међу функција које су била декларисана у неком другом фајлу, негде
друго на чврстом диску облаку да је омогућава нам да приступите принтф и користити га
без потребе да поново измисли да се точак.
У међувремену, главни.
Какав је био аналогни главне, прошле недеље?
Да.
>> Аудиенце Мембер: Зелена застава се кликне.
>> Давид Ј Малан: Да.
Огреби је, када зелена застава кликне.
То је као слагалица комад да почиње офф ствари.
И тако на сличан начин, да ли је свет одлучио пре неколико година да је у Ц,
и гомила других језика, Ако желите да пишете програм,
ваша прва функција је да се зове, главни.
И то мора да изгледа овако.
Али ћемо се вратити, други пут, на шта инт,
и, празнина, значи у том контексту.
За сада, великих заграда су љубазни Као слагалице облик Сцратцх је
које обухвата известан број линија.
А међу на линијама овде, је ова овде.
иф је функција чија је сврха Живот је да одштампате форматирани стринг.
И од форматиран, мислим на тебе може прикључити плацехолдер вредности,
и можете одредити колико децимала бодова, колико бројева за штампање
након децималног зареза и сл.
И принтф, наравно, узима једну или више аргументи или параметри,
иначе познат, више једноставно, као улаза.
>> Тако иф, као и много функције, узима улаза.
А ти улази су прихватили од два загради овде.
А унутар њих је један улаз.
То је ниска, као што смо га звали, што је само низ карактера,
као реч или фразу, или у целини есеј чак, између двоструким наводницима.
И то је оно што ће утицати на понашање принтф јер, наравно,
то је само општи функција за штампање.
Неће знати шта за штампање, осим ако то рећи.
А онда, мало ситнице.
Оно што смо рекли ово чудно редослед симбола?
Да.
>> Аудиенце Мембер: Нова линија.
>> Давид Ј Малан: Нова линија.
Тако испада, не може само ударити, ентер, када пишете програм.
Генерално, преводилац ће добити мало збуњени о томе шта мислите.
Уместо тога, морате да буквално кажу, дај ми нову линију овде.
И тако / н, је оно што смо генерално зовемо одбегли карактер.
Тако н за нову линију.
И преводилац зна да када види / н,
заправо би требало да подстакне рачунар, на крају, односно принтф, у овом случају,
да одштампате стварни Нев линија, као и ударање Тхе, унесите,
тастер на тастатури.
И на крају, оно што смо рекли овај комад синтакса је за?
Шта то представља?
Да.
>> Аудиенце Мембер: [неразумљиво]
>> Давид Ј Малан: То је само крај линије.
То је крај изјаве.
И схватите да ми не ставите их свуда.
Ми свакако не их на крајевима сваког реда.
На пример, ту је нема на прва линија, нема нико на линији
са, главни, има нема после заграда,
али ћете почети да види и да упознати са где је позвао на.
И то је скоро увек после функцији позовите или изјава, мало акције
да заправо узимате.
>> И сад знам, нарочито ако међу онима који су мање удобна,
Ово су врсте глупим стварима да ћете завршити случајно лупа
главу уза зид изнад.
Јер ћеш бити логички Увјерен у неком проблему
Ресио за проблем Сет, а проклету ствар само
неће саставити или чак покренути.
И тако често, на почетку, то ће бити зато што пропустио заграду,
или сте пропустили зарез.
И тако само имати на уму оваквих ствари,
и покушајте да се не исфрустрирани их јер врло брзо то ради
постају стари шешир.
Али то је врло лако добити фрустриран рано, као резултат.
>> Дакле, сада, хајде да погледамо како Ова линија је заправо ради
и онда погледајте мало компликованији један.
Тако смо преко имамо овде, способност да се ослањају на овом екрану.
И претпоставимо да ово је мој рачунар екран,
али ја пишем, Хелло програм, и ја нисмо реализовали, принтф.
Неко други је спровела, принтф.
Ко би желео да тврде да су спроведене, принтф?
Ако могу?
У реду, како се зовеш?
>> СТУДЕНТСКИ 1: [? Цопал. ?]
>> Давид Ј Малан: Цопал, попни се.
Хајде горе.
U redu.
Тако имамо, овде, неки именима, јер ћемо направити малу игру овога.
И ми ћемо те звати, иф.
А ако желиш да дођеш овамо, шта Управо сам нацртана на екрану,
то је врло једноставно, ту ми је, ово.
>> У реду, тако да, хелло ми наме ис, иф, ако желите да ставите ово.
U redu.
И ако можете ићи став по екрану рачунара
као да сте функцију која дошао са овом компјутерском систему.
А твој циљ у животу је да стварно нешто штампање.
Али, слично као и програму Управо сам на екрану, овде,
ћемо морати да заправо ти дати допринос.
>> И тако, ако мој улаз, овде је очигледно, оно што је прошло у принтф,
хајде да некако се ругају овако.
Идем да буквално писати на парче папира, "Хелло, Ворлд"
обрнуте косе црте Н И да буде јасно, шта Управо сам нацртан на овом комаду папира,
изгледа овако.
Дакле, када сам покренути овај програм, а то жута линија кода буде погубљен,
то је као да сам, Хелло програма, ја предаје неки улаз са на функцију
да је неко други написао.
>> А ако вас, прстом, могао заправо, прстом,
драв на екрану год је то што су предали,
ефекат, на крају, јесте да види управо то, на екрану.
И мали кутак случај.
И добро, не треба видјети Тхе, нова линија, у овом тренутку.
Било би некоректно за вас изричито повући нови ред.
Али, ако смо задржали писање речи на екран, они би завршити испод тога.
>> Дакле, хвала вам пуно, али стицк овде само један тренутак.
Сада је потребан други волонтер, ако можемо,
то ће морати да одигра улогу од-- То је само људи у оркестру
odmah.
Како о-- реду.
Baš ovde.
Хајде горе.
Kako se zoveš?
>> Студент 2: [? Иваи. ?]
Давид Ј Малан: Молим?
Студент 2: [? Иваи. ?]
Давид Ј Малан: Етхан, хајде горе.
Не?
Да ли сам ја то погрешно, чак и након што је два пута рекао?
Хајде горе.
Тешко је чути овде.
OK.
И жао ми је, како се зовеш?
>> Студент 2: [? Иваи. ?]
>> [? Давид Ј Малан: Иваи. ?] OK.
За сада, ако не ум, ви сте ГетСтринг.
>> Студент 2: У реду.
Кул.
Давид Ј Малан: Дакле, ако желите да стојим овде за тренутак,
хајде да погледамо мало сложенији програм који
сада има три линије кода.
Тако имамо један, реците своје име користећи иф; два, позив на ГетСтринг,
затим задатку до променљива зове, Стринг с, или се зове ова;
а затим још један позив да, принтф, али овај пут са два улаза.
>> Тако смо већ урадили држава ваше име, односно имамо
већ урадио принтф позив.
Зато ћу да пишем, Реците своје име.
И тако, шта ћу пасс, иф, у само једном тренутку,
је једноставно, ово.
Дакле, ако желите да идете напред и нацртао на екрану, то је сада твој улаз.
U redu.
И заборави стринг, сада имамо наша линија кода овде.
Дакле, у, ГетСтринг, морамо да стварно звати, ГетСтринг.
Дакле, ваш циљ у животу је да само хода напоље у оркестру, ако можеш,
и да нечије име.
Али хајде да ти дам нешто да га стави.
Ако желите да, иди напред и добити низ,
да нечије име на који парче папира, ако можеш.
>> U redu.
И видећемо, у само једном тренутку, чије име смо се.
У међувремену, шта ћу припремите је празно комад
папира, у којима, идем да сачувате год је вредност
је да ГетСтринг се враћа у мени, Ја, као стринг променљива се зове, а.
U redu.
Дакле, шта имамо овде?
Ник.
U redu.
Дакле, имамо овде име на Ник.
Дакле, то је оно што буквално враћена
за мене, да тако кажем, од ГетСтринг.
>> Ја, сада, идем у изврши левој страни
тог изражавања, где сам једноставно записујем, за данашње потребе, Ник.
Дакле, сада имам променљиву назива, с, складиштење име на Ник.
Већ сам предао иф, претходни аргумент.
Али, у нашој трећој и завршној линији код, Ја имам при руци принтф
несто мало дифферент-- "Здраво,% с" обрнута коса црта бр.
>> И тако је последња линија Идем да сенд-- последња ствар коју ми
да запишете сада је ово.
Тако су две линије кода, или а последња линија кода,
позиви за две инпутс-- један, овај, и два, ово.
Дакле, ако наша Функција принтф Сада можете узети ово као улаз,
Лет Ме Цлеар екран за вас.
Заправо не, можете ићи напред.
Ми ћемо га оставити, јер то је на истом програму.
Требало би да видимо, здраво, Ник.
U redu.
Дакле, ово је доста Хоопс преко скок, само
да пише, наводи твој име, и здраво, Ник.
Али ова једноставна идеја поруке пролазу, улазног и излазног доношења пријем,
је управо модел ћемо имати чак и за најсложеније функције.
Дакле, пуно ти хвала обома.
Имамо дивну стрес Лопта за тебе.
И хвала нашим ГетСтринг и принтф волонтери подједнако.
Hvala vam.
U redu.
Хвала обома.
>> Тако смо причали до сада, углавном о жицама.
И испоставило се да је Ц заправо може разуме неколико различитих врста података.
У ствари, узмимо Погледајте ове овде.
Дакле, Ц, и много језика, разумемо ствари које се зову карактера.
Цхар је генерално једнобајтни, или осам бита.
И она представља један карактер, као слово а, или капитала
слово А, или мало слово А, или узвичник,
или било који знак да можете уписати на тастатура, а понекад чак и више.
Такође се догоди да видимо плута.
Флоат је, генерално, а 32-битна вредност, или четири бајта
јер опет, један бајт је осам бита.
>> Дакле, пловак је флоатинг поинт вредност, нешто са децимални зарез.
И заиста, ето шта филм је причао
о томе када су разговарали о флоатинг Вредности Поинт, неки фиксни број битова
који се користи за представљање прави број.
Али ту је ствари које се зову дублу.
Оне постоје у Јави, ако сте снимили оклопних транспортера,
и двоструки, као што име на срећу сугерише, је дупло већи флоат.
Још увек је прави број, то само има више бита
са којим бити све прецизнији, или да сачувате још веће бројеве.
инт је лако.
Разговарали смо о томе последњи пут.
То је само цео број.
И генерално је 32 бита или четири бајта.
>> И тако, ако имате, да видимо, 32 битс-- и ми смо то урадили у недељу 0,
имао бриефли-- ако имате 32 бита, што је највећа
Број можете представљати као цео број?
Дај или да?
То је као 4 милијарде долара, и то је само ако смо
представља само позитивне бројеве.
Ако имате 32 бита, а желите да представљају негативне бројеве и,
Ваш домет је, у суштини, негативна 2 милијарде до 2 милијарде позитивно.
Али, генерално, почећемо на 0 идите до 4 милијарде.
>> Не морате да знате тачно, али То видимо, у ствари, ако само
отвори мало калкулатор, овде.
Ја могу да урадим 2 на 32, и то је тачно колики,
колико вредности можете представљају, са 32 бита.
И то је отприлике 4 милијарде.
Дакле, ми ћемо виђати тај број на неколико различитих места.
Али, ако је потребно дуже Бројеви од тога,
Испоставило се да постоји нешто што се зове дуго дуго.
И много, много је генерално 64 бита, што
значи да је ред величине чак и већи него инт.
>> Тако да не могу ни да изговорим највећи број који можете представљати,
али је знатно већи.
Сада као страну, историјски, ако инт је 32 бита,
и дуго дуго траје 64 бита, како велика је дуг, а не дуго дуго?
Помислили бисте да је више од инт али можда мање него дуго дуго дуго,
али то је заправо зависи.
>> И тако испада да је један сувише фрустрација,
са писање кода на одређеним системима, није да нису сви ових типова података
имају предодређен вредности.
Понекад је оволико бита.
Понекад је да се многе делове.
Тако да стварно морам да знам, понекад, који хардвер
да сте покренули свој софтвер на.
Срећом, други језици и друге врсте података које сада постоје,
омогућавају да будем прецизнији.
Па, видели смо низ, и видели смо боол, такође,
али испоставило се оне долазе само са ЦС50 библиотеком.
Дакле, они се не граде у Ц. Они уместо тога,
долазе у том фајлу названом ЦС50.х, да смо на крају цу
огулити назад слојева.
Али за сада, то су само додатне врсте података.
Инт је истинита или лажна, и Стринг је низ знакова,
као реч.
Сада иф, видели смо, има плацехолдер% с је један.
И можда ћете моћи да сада, закључити из ових других примера, како
можете имати плацехолдер за различите типове података.
На пример, да претпоставите, ако вас желео да одштампате једну цхар користећи
иф, плејсхолдер је вероватно% Ц.
А ако желите да одштампате цео са плејсхолдер,% и.
% ЛЛД је много, много децимална вредност, али дуго дуго, тако да мапира на то.
А онда% Ф флоатинг Поинт Валуе или за двоструко,
па понекад они поново користи у различитим контекстима.
Тако ћемо видети и користити неки од њих током времена.
И принтф и друге функције такође есцапе секвенце подржати друге ",
а понекад, то су неопходни.
Тако обрнута коса црта је н нова линија.
Бацксласх Т, да ли ико Желим да се убод?
Аудиенце Мембер: таб.
Давид Ј Малан: таб.
Дакле, ако желите стварно да одштампате картицу, не
фиксни број простора, али стварни Картица карактер, не ударити,
Картица, тастер на тастатури, генерално, ви заправо учинити инверзна коса црта т.
Бацксласх двоструки цитат, Зашто бих икада желео да?
Зар не?
Зашто не могу да само укуцате двоструки цитат на мојој тастатури?
Аудиенце Мембер: Јер, у супротном, то је
да мислим да је крај Као за штампање [? текст. ?]
>> Давид Ј Малан: Управо тако.
Запамтите, са нашим принтф примери, када смо
су пролазили у принтф у улаз, на левој страни тог улазног стринга
и на десној страни тог улаза пролеће, наравно, био је двоструки цитат.
Ако ваш властити улаз има дупла Цитат у средини која,
рачунар могао потенцијално збунити, како би се,
да ли овај двоструки цитат спадају у средини?
Да ли припада левим један?
Да ли припада са правом?
И тако, ако желите да се направи супер јасно, зар не дупли Бацксласх цитат,
тако да је побегао, да тако кажем, и није измешан за нешто друго.
А ту је и неколико других овде, обрнута коса црта Р, сингле куотес, 0,
да видимо током времена, као добро.
А сада, шта је са функције?
>> Дакле, акција које можемо узети до сада на том језику Ц, па смо видели,
принтф, наравно, и сви од осталих на екрану,
овде, да ћемо користити за Наравно је првих неколико недеља, само
доћи када ЦС50 библиотеку.
И они чине га много лакше, у Ц да заиста добити уноса корисника.
Испоставило се да у Ц, и искрено у неколико језика,
То је прави бол у врату да уради нешто једноставно, као брз корисника
за тастатуром, за његовог улаза.
И тако ове функције бити лакше.
>> И она има грешку проверу током,
тако да, кад вас сећам се у среду, ве
видео, поновите, упозорење, када нисам сарађују,
и ја откуцао реч, уместо број?
Урадили смо тежак посао рано о да се уверите корисник сарађује.
Али то су само тренинг Точкови који смо на крају ће,
и брзо, скини.
>> Тако да подсетимо, онда, хајде да бацимо поглед,
налик смо урадили са Сцратцх, на неке канонске конструкције у Ц.
Ово би требало, сортирање од, бити вихор турнеја,
само да имате референцу и да сте видели ствари на први поглед.
Али онда ћемо погледати актуелне кодирање користите неке од ових градивних блокова.
Толико као у Сцратцх, када смо изјаве свиђа,
каже или, чекај, у Ц, ми немамо функције, као, као што је принтф.
>> Ако желимо да изразимо услов ин Ц, то је слично, у духу,
на тај комад пуззле да изгледао овако у Сцратцх.
Али, уместо тога, ми буквално само пишем, ако.
А онда, у загради, ставимо стање,
где је тај услов је оно што ћемо звати, опет, боолеан израз.
И поново, ово је нека врста псеудокоду.
А у заправо, // је коментар.
То је само енглеске речи за себе.
Али ово је општа структуру једног, ИФ, стање.
Али видећемо бетон примери за тренутак.
>> Ако желите да имају двосмерни Форк ин тхе Роад,
налик смо урадили са нашим волонтер на Среда, можете имати, иф.
А ако желите да имају трећи и Последњи услов, или стандардна ситуација,
можете имати само један другог блока, тамо.
И слично, са боолеан изразима, можете, и они заједно.
И видели смо у среду, да то није један Амперсанд,
то је два, за нижих нивоа разлога да смо на крају ћемо видети и играти.
Или-инг ствари заједно је 2 вертикалне пруге.
На америчком тастатури, ово је генерално кључ
са Схифт тастер горе Ваш Ентер или Ретурн тастер.
>> Затим, ту је ове ствари које ћемо користити можда једном или два пута.
Они су функционално еквивалентна шта можете да урадите са неким, ако иф,
иф друго, изградња, али они зову прекидач.
Они изгледају сасвим другачије, али ћемо види у неким од нашег дистрибутивног кодекса,
за будуће проблеме сет, највероватније, да је понекад је само лепша
начин да се изрази једну целину гомила услова,
без много заграда и много заграда и отиска.
Али они нам дају више снага него што већ имамо.
И сада петље.
И ово, ми ћемо гледати на мало спорије.
Али онда ћемо почети да користе ове, посебно за оне који су већ упознати.
Ово је канонска начин, ако невероватно волшебни начин, да напишем петљу у Ц.
>> Сада петља у Сцратцх је прилично јасно.
Имате, форевер, блок.
Имате, понављам, блок са само број морате да куцате.
И са, за петљу, можете имплементирају оба ова идеја,
али то је мало више техничке природе.
Али искрено, то је такође релативно једноставан.
Када знате редослед операције, буквално
тек ће се прикључити у вредности и реци рачунар шта да ради.
Ево један пример.
То је петља која, сасвим Једноставно, броји од једног броја до
кроз друго.
И само по погледавши на то, чак и ако имате
нема претходно искуство са овај језик, који број
то вероватно почети да броји у?
У реду, 0.
И претпостављам да је то због тебе видим да постоји инт и један сам,
што је променљива.
То је иницијализован на 0.
>> И касније, изгледа да Пролазимо принтф, вредност.
А, у ствари, направио сам мали куцању овде.
Али то је лако поправити.
Дозволите ми да додам, ја овде.
Сада имамо принтф биће донијела ту чувара места вредност.
И шта ће да изброји кроз?
ПУБЛИКА: 50.
50.
49.
Давид Ј Малан: 49.
Тако 50, на први поглед, изгледа у реду.
Али то, испоставило се, ће бити наш услов да се задржи проверу.
И ми ћемо једном заувек прекинути и је више није мањи од 50.
Дакле, ово петља, насупрот томе, треба екецуте, Докле год је мање од 50.
Али чим постане 50, или 51, или, још горе, требало би да се аутоматски зауставити.
U redu.
>> Дакле, шта се заправо дешава овде?
Дакле, ово је наредба операције за петље.
Један, имате тзв иницијализација.
Овај жути истакао комад кода се прво извршава,
и има такав ефекат да, пер Среда, вероватно замислити.
То ствара променљива и и назвао продавнице у том променљиву вредност 0.
Па сам је 0 у овом тренутку у причи.
>> Следећа ствар која догађа у овом конструкт,
је да је услов буде цхецкед.
Зато сам одмах проверити, је да мање од 50?
И наравно, одговор за сада је, свакако, да.
Да, јер сам је 0, и то је сигурно мање од 50.
Онда шта се дешава, да је ово линија кода буде погубљен.
А у ствари, ако има вишеструки линија кода у тим заграда,
сви они се извршавају једна за другом.
>> И у снази овде, је по свему судећи, да одштампате
Овај број, који ће бити 0, а затим 1, а затим 2.
Ali zašto?
Зашто то се увећава?
Па, четврта ствар која што се дешава је да овај синтакси
бива погубљен, после зарез.
и ++ је скраћеница начин да се каже; узети вредност и, и додати 1 на њега;
а онда следећи пут, додајте 1 на њега; и следећи пут,
додаје 1 њу.
>> Дакле, ако наставимо, шта ће се догодити
следећи је нећу да инитиализе сам икада поново.
Ако Наставио сам да инитиализинг и то 0, овај пример
никад краја, јер ја бих се заглавио на 0.
Али шта ће се догодити ис да ће тај услов бити проверени,
линија кода ће се извршити, Тхе И ће се додавати,
услов ће бити проверени, Код ће се извршити.
И то се стално поново бициклизма, и опет, и опет,
до и ++ изазива вредност од 50.
>> Услов онда каже: је 50 мање од 50?
Одговор је, наравно, није, и тако да је цела код зауставља извршавање.
А ако имате више кода на екрану доле, то је оно што ће се десити.
То ће искочити из ових заграда и наставља да одштампате више после тога.
>> Тако шала сада, из Фоктрот, да ћете можда сада схватам.
Увек је смешно.
То је као цхуцклес врста процедити,
а онда схватиш да не би требало се смејати хумор овако.
Али постоји неки понети овде, педагошки, превише.
Тако испада да сам ја недостаје дио синтаксе,
или Фоктрот фали комад синтаксе овде.
Оно што недостаје, да смо имали у сваком другом примеру, до сада?
Повратак, постоји, тако то је нешто друго,
да ћемо се вратити на пре дуго.
Шта недостаје, иако?
Да.
>> Аудиенце Мембер Тхе иницијализација од [неразумљиво].
>> Давид Ј Малан: У реду.
Тако да.
Дакле, у ствари, ово је-- Па, и датотека се иницијализује
изнад, односно, прогласио изнад.
Дакле, ово је један од начина да се то уради.
Али не у једној линији то је ипак важи.
А овде?
>> Аудиенце Мембер: Да ли је великих заграда?
>> Давид Ј Малан: Да.
Тако великих заграда недостаје.
Али ово код, мислим, да њихов кредит, заправо, синтаксически важећа.
Испоставило се, нећеш Потребни су витичасте
Ако имате само једну линију кода који желите да извршите унутар петље.
Сада смо увек у класи и све наше дистрибутивне кода,
укључују витичасте у сваком случају, само због јасноће екипе.
Али схватите да у уџбеницима и онлине примери,
можете врло добро видети коврџава брацес недостаје понекад.
И то је у реду, ако је то што су увучена и намењен
је само једна линија кода, а не више линија кода, потенцијално.
U redu.
Дакле, у вези са питањем непрецизност, је питање преливања,
у смислу да, слично, не цели бројеви имају ограничења на њих
као и флоатинг поинт вредности?
У свету са покретним зарезом вредности, можемо бити тако прецизан само
након чега, понекад лоше ствари може да се деси,
и наши програми могу бити луд и грешке.
Сада чак и са целих бројева, можете наиђете на проблеме.
Сада цео број не поседује децимална тачка или бројеве након њега.
То је само природан број, обично.
Шта може да крене наопако са инт?
Ако сам користећи инт у Грофе, шта би могло да крене наопако?
Изгледа много једноставније.
Да.
>> Аудиенце Мембер: Ако је Број добија [неразумљиво]
>> Давид Ј Малан: Да.
Шта ако рачунаш тако високо, да вас Не могу да изразе ту заиста велики број.
Зар не?
У неком тренутку, идеш прећи границе
од 32-битне вредности или 64-битни вредности.
Сада опет, нисам сигуран како да изрекне 64-битну вредност,
али знам са 32-битни цео број, највећа вредност може бити,
ако је само позитивно вредности, је око 4 милијарде.
Дакле, ако покушам да бројим до 5 милијарди, Нешто ће се десити.
Али хајде да видимо шта, у ствари, може да се деси.
У свету цео број прелив, где сте, у извесном смислу,
потопити у својству цео, шта се може десити?
>> Дакле, овде је бинарни број, То је подсећа на 0.
То је све 1, и симболе тамо су овлашћења 2,
тако да је ово бинарни.
Дакле, то су 8, 1 бита на екрану.
А ако се сећате или брзо математику,
какву вредност се представља овде са ових осам бита 1?
255.
А чак и ако нису били сасвим сигурни од математике, ти то можеш напоље.
Или си могао некако разума кроз њега,
чекај мало, ако сам представља 8-битну вредност,
а ја имам 256 могућих вредности, али је прва од којих је 0,
Ја само знам да је Највећа ће бити 255,
и то је оно што ова може бити.
>> Дакле, претпостављам да покушате да додате 1 до ове вредности.
Шта бисте ви урадили у разреду школа при додавању 1, и то
заиста не уклапа, јер морате да носите 1?
Шта је ово број иде да постане када додате 1?
То ће постати 0.
Зар не?
Јер ако сте имали више битс-- и ја ћу покушати да, некако, унесите га овде-
ако смо имали више бита, што смо могао овде додати 1,
и онда бисмо ово.
Упс.
Имали бисмо 1 бит скроз овамо.
>> Али, ако је ово коначна вредност, то је само 8 бита,
и то је предодређен од стране компјутера,
да је 1 ефективно не постоји.
Некако пада са литице.
И тако ако додате 1 до 255, што вредност ви очигледно добити?
0.
И тако бројевима случајно, а можда ненамерно,
завршити паковање око овако.
Дакле, шта може бити импликације овога?
Па, постоји неколико различитих ствари.
Дакле, један, то не завршим као 0, ненамерно,
али можете некако види, чак и у стварном свету,
за боље или на горе, манифестације ове идеје границе.
На пример, неко од вас који су икада играли ЛЕГО Стар Варс,
да ли неко случајно знате максималан број кованица
можете сакупити на ЛЕГО Стар Варс?
Погоди на основу данашњих водећих питања.
То је већи од 256 или 255.
То је 4 милијарде.
Тако испада, и има неки људи
неке гооглинг потврдио синож су добили 4 милијарде златнике,
или шта све не, у ЛЕГО Стар Варс.
Иако наизглед, нема начин да превари игру,
ту је буг или карактеристика, који вам омогућава само акумулирају много и много поена.
Али највећи могући вредност, према
на овај сцреен схот на некога кога сам наћи на интернету, заиста, 4 милијарде.
>> А зашто је то тако?
Управо је 4 милијарде, Вероватно зато што је неко одлучио,
који је писао ову игру, да раде 4 милијарде долара,
нешто, нешто, нешто, као вредност Ставио сам горе
са дигитроном раније, али то је само мало чистач за људе
да кажем максимални број од цоинс-- или нитнама,
како они називају томе-- то ти можете сакупити је 4 милијарде.
И тако, зашто је ово?
Како је ЛЕГО игра имплементацију цоунтер
који праћењу број кованица имате?
Они користе шта?
Аудиенце Мембер: Зауставља рацунам после 4 милијарде.
Давид Ј Малан: Зауставља рацунам после 4 милијарде долара,
што значи да можете закључити, као програмер,
да вероватно су коришћењем 32-битни цео број.
Као програмер буквално откуцани, ИНТ, у свом коду,
и то је тип променљиве које они користе за чување нечије кода.
Дакле, нема друге манифестације ових врста граница.
>> Дакле, нисам играо ову игру-- и ја сам читао о историји
да потврди као муцх--, али у Оригинална верзија цивилизације, где је
ви очигледно интеракцију са сваким друго и може да ратује или имају мир,
Ганди је требало да буде један од најмирнији ликови, као што сам
разумем, у првом верзија цивилизације.
И у ствари, на скали од 1 до 10, његова агресивност је био само 1.
Дакле, увек тако благо агресиван, очигледно.
>> Али у неком тренутку, очигледно могу инсталирати демократију у својој географији.
А ако инсталирате демократију у својој верзији игре,
онда ваш ниво агресије иде доле.
То је добра ствар.
Људи су мирније по свему судећи, у тој ситуацији.
Али очигледно, неко јесте немају, ако, стање
у оригиналној верзији кода.
>> Дакле, Ганди агресија ниво је од поситиве 1, минус 2, у негативан 1,
али игра не разуме негативне бројеве.
Дакле, оно што се десило је Гандхијево агресија Ниво ишао од 1, до 0, у негативан 1,
који су имали ефекат паковање около да буде
најагресивнији карактер у игри, у вредности од 255,
на скали од 1 до 10.
И од тада, дошло је до више инкарнација ове игре,
и они су га чува као нека врста ускршње јаје,
да Ганди је очигледно тако ужасно агресиван.
Али то је био резултат су врло једноставно програмирање грешка
У том врло раној верзији игре.
>> Сада више узнемирава више Недавно је Боинг 787
је документован као неко ко има буба, није врста уређаја
сте посебно желе да имају грешку.
А симптоми, који ћу да прочитам овде, из чланка на мрежи,
је то, модел 787 авиона која је континуирано поверед
за 248 дана можете изгубити све наизменичне струје, АЦ,
електрична енергија, због контролни агрегата,
ГЦУс, истовремено улазећи у Фаил-сафе моде.
Дакле, ово је упозорење издато када је открио овај проблем.
Ово стање је узроковано софтверским цоунтер,
интерна на ГЦУс, тако цео или променљива,
да ће преплавити после 248 дана непрекидног напајања.
Боинг у процесу развијање ГЦУ надоградњу софтвера који
ће исправи небезбедно стање.
>> Толико попут ракете Сценарио, где
они су имали неку врсту променљиве да је бројање, а бројање,
и бројање, али постепено прелива границе своје способности,
слично је урадио проклети авион имају променљиву прекорачење
након довољно времена трчања.
И тако је и језик-у-образ начин рада око овог питања
је заиста, рестарт, ваш авион сваки 247 дана, тако да је меморија буде избрисана
и променљива враћа на 0.
Али схватите, ово је веома Велики инкарнација софтвера,
а посебно како смо чули за Аппле-ов оперативним системима иде у аутомобиле,
и само-вожње аутомобила из Гоогле-а, и било који број инкарнација софтвера
у нашим свакодневним животима, телевизорима и сатови, и још много тога,
схватите су окружени софтвера, све што је написао нас људи.
>> И као што ћемо сви ускоро открити, то је врло лако и врло типично
да праве грешке приликом писања софтвера.
А ако их не ухвате, неке лоше ствари се дешавају.
Сада понекад, неки смешне ствари може да се деси,
или бар понекад знам да очекујемо неку баднесс.
Дакле 0 подељена 0, из разреда школа, је генерално лоша ствар.
То је недефинисан.
И испоставило оут-- па да видимо да ли мој микрофон можете одабрати ово их-- да је Аппле
имали мало забаве са овим недавно.
Дакле, имам иПхоне овде.
Ја ћу да разговарам са Сири и питати је да ми дају одговор на 0 подељен 0.
Шта је 0 подељено са 0?
>> Сири: Замислите да имате 0 колачиће, а ви их поделити равномерно
међу 0 пријатељима.
Колико колачиће се свака особа добити?
Видите?
То нема смисла.
И Цоокие Монстер је тужно да не постоје кекс.
А ти си тужан што немате пријатеље.
Давид Ј Малан: Некако је одвратан.
Дакле, то је оно што је управо тамо речено.
То је неодређена, није дефинисана, И заиста, многи програмски језици
или, заиста, компајлери ће детектује када се, у програму,
покушати да подели 0 од 0.
Више забаве од овог Иако, је да очигледно, Цоокие Монстер
је он Твиттер ових дана.
А он је одговорио да то, са овим, што је апсолутно неодољив.
Али хајде да погледамо на брзину пар других конструкција,
а затим ставити мало овога Код употребе, на добар начин.
Тако испада, осим за петље, ту је
нешто што се зове вхиле петљу да изгледа другачије и спроводи
мало дифферентли-- и смо на крају ћемо видети екамплес--
али у неком смислу, то је једноставније јер њега
не дозвољавају да се покрене и упдате у оквиру граница петље.
Још увек можете да га спроведе.
Дакле, можете да урадите тачно исте ствари са вхиле петље, као и фор петљи,
али ваш синтакса, ултиматели-- као што смо на крају цу
видео-- ће бити другачије.
Постоји чак и радити док петља, која је заправо мало другачија,
У том док је за петљу и док петља увек
проверите своје стање прво, ако сте прочитали ову ствар врха до дна,
некако изгледа као да ће цхецк То је стање прошле, јер је то
заиста последња линија кода.
И заиста, то ће бити корисно у неким програмима који пишемо,
Ако желите да слепо уради нешто и на крају проверите стање.
То није нужно лоша ствар.
Ако желимо променљиве, можемо да урадимо је у неколико различитих начина.
И видели смо у Фоктрот цртани филм, један од начина да се то уради,
где сте прогласи своју променљиву, као инт цоунтер зарезом,
а затим латер-- можда следећи линија, можда 10 линија латер--
ви заправо покрене.
Дакле, те 2 линија кода прогласи променљиву типа инт
и назовите га бројач, тако да даје ме довољно бита да држи инт.
И на крају, ставља вредност 0 у ту променљиву.
Она уређује је у 0, а 1 образац, да знамо од прошле недеље,
представља број знамо као 0.
Или искрено, можете да урадите толико више језгровито, само овако.
>> Сада такође имају Способност да се позове функција.
И, у ствари, овде је линија 2 Програм, или извод од тога,
који нам омогућава да ствари написати неки код који
добија низ од усер-- много као наш добровољац тренутак аго--
складиштење резултат у променљива се зове име,
и онда-- слично са нашим волонтерима са принтф-- отисака од тих вредности
доношењем два аргумената, стринг, следи варијаблом
назива, име, себе.
Дакле, хајде да погледамо, пре враћамо се Марио дођем тамо,
на неколико сада, примера ово.
>> Ја идем напред и отворен до, рецимо, функција-0.ц.
И као и увек, ово код је доступно на сајту току је,
тако да можете играти заједно у кући и погледате касније.
Али овде је програм у то суштина, од реда 17 до 22.
Главни програм је где је Програм увек ће почети.
Овај програм, по свему судећи, неће да одштампате своје име, дебело црево.
То је онда ће позвати ГетСтринг, као што смо урадили са нашим волонтерима.
А онда, ово је интересантно, да ће позвати ПринтНаме.
Испоставило се, сво ово време, тамо Чини се да је функција названа ПринтНаме.
То штампа нечије име.
Нисмо морате да користите принтф од прошла година, ту је ПринтНаме.
>> Али то је погрешно јер ПринтНаме не
долазе са Ц људи нису измислити га пре неких 40 или 50 година,
Јесам, уместо тога.
А у ствари, ако идите доле даљег обавештења,
како могу писати ми овн функције у Ц. смо на крају цу
објаснити зашто стално говоре, празнина, на неколико места,
али данас, хајдемо само погледајте име.
>> Он лине 24, ако желите да направите сопствену функцију,
ви буквално написати назив функције.
Изабрао сам ПринтНаме.
У загради, ви онда одредити које врсте
улаза, и колико си да ова функција да предузме.
У овом случају, желим да 1 променљива назива, име,
и да ће то бити Тип, ниска, тако да ће
да постоји неки редослед карактера.
А онда, ово програм-- слично као иу Сцратцх,
можете имати прилагођене загонетку пиецес-- ће имати овог обичаја понашање.
То ће позвати принтф пролази, здраво, чувар места,
а онда ће се прикључити како год корисник звао.
>> Дакле, ово је пример онога што компјутерски научник би
Позив апстракција или функционална разлагање, које су само
фанци начина на кажем-- је ако волите ову идеју на високом нивоу,
као да желим да функционалност штампа нечије име, апсолутно си
могу буквално писати принтф а затим пролазе у аргументима које желите,
а програм ће радити, јер има од среде.
Али можете почети да издвоје у гостима појам штампања име.
Можете му дати име, као ПринтНаме, и ово
је ова идеја о слојеви од недеље 0.
>> Од тада, ја и не морам да знам или брига колико ПринтНаме се спроводи.
Да, то иф користи, можда не, ко зна шта користи?
Koga briga?
Сада говорим овде, уместо овде.
И заиста, као што наши програми се напредније и софистицираније,
ћемо задржати узимање здраво за готово да постоји нижи ниво комада слагалице.
Зато што их је написао или неко други урадио, тако
да онда можемо градити на њих.
Хајде да погледамо ово варијанта, једну функцију.
>> Дакле, ово је мало више напредни, али се испоставило
да у библиотеци ЦС50 је, постоји само Тоноване функција.
Нисмо мислили, пре много година, да имплементирати функцију ГетПоситивеИнт.
И то је мало неугодно јер ако момци су писање програма назначено тиме
желите да добијете позитиван цео број од корисника,
апсолутно можете користити Тоноване.
И апсолутно да проверите са стање и можда петља
ако је инт је већи од 0 и викати на корисника
ако он или она не даје сте позитиван број.
Али хајде да градимо ово Буилдинг Блоцк себе, А,
обичај Огреби комад, ако хоћете.
Ја ћу имати програм овде да коначно сам
Желим да будем у стању да позовем ГетПоситивеИнт, а ја желим да будем
у стању да одштампате год да инт је.
Али ово се захвата одмах.
Управо је дат висок ниво име које говори оно што ради,
што је дивно, јер је то врло интуитивно сада да прочитам.
И ако ме брига шта је испод је хауба, пусти ме спустите.
И то је мало застрашујуће на први поглед, а посебно
Ако је ово ваша прва програма, али хајде да погледамо.
>> Ја не говорим, празнина, јер се испоставило функције,
налик ГетСтринг, могу вратити вредност за мене.
Они не само за штампање на екран,
они заиста могу да предају ми нешто назад.
И док је пре ПринтНаме, Нисам треба вратити ништа.
Требало ми је споредни ефекат нешто приказује на екрану,
али нисам потребан човека да ми предате нешто заузврат.
Ево, са ГетПоситивеИнт, као и са Тоноване,
Желим да се преда нешто заузврат.
Дакле, ја кажем не, празнина, он лине 23, али инт
који каже, ова функција да пишем,
зове ГетПоситивеИнт ће преда ме цео број, није ништа,
Не празнина.
>> У међувремену, то ће да траје улаза, тако да сам, на неки начин, то обрнута.
Не дајем никакве ГетПоситивеИнт улаз, желим да ми даш свој излаз.
И шта се онда дешава сада?
Ево како ја могу прогласити променљиву.
Ја сам то урадио ван петље, из разлога што на крају ћете видети,
али то само даје ми 32 бита зове, н
и ја сам пре одређивања им да сачувате цео.
И овде је, зар док конструкт, и то је разлог зашто је корисно.
Буквално ово, док је н је мања од 1.
Дакле, хајде да видимо шта се дешава.
Ја принт, молим вас дај ми позитиван инт.
Онда добити инт, користећи ЦС50 је функционишу и чувана у н.
>> И онда, шта линија кода вероватно бива следећа извршити, логично?
Који линија број?
Да, тако 31.
Ти не би знао ово док не Речено или некако га закључити,
али то је истина.
То иде од врха до дна и онда стално понавља.
Дакле, ако сам откуцао у рецимо, броју негативан 1, је н мања него негативне 1?
Да.
Пошто негативан 1 је мања од 1.
Шта треба да се деси?
Ја ћу да урадим ово док је н је мање од 1,
па ћу да се вратим на линији 28.
>> И сваки времена-- готово па да покренете ово-- маке функција 1 то саставити,
а сада дот сласх функцију 1.
Ако куцам негативну 1, то је Наставићу да виче на мене
док не сарађују јер свака мојих улаза је мања од 1
и ако је док је мање од 1, Ја ћу да наставим да радим ово.
Ако сам коначно му дати број као 50, срећу, каже, хвала за 50.
Зашто?
Јер, чим н није мањи од 1, престанем се заглави у петљи,
и ова нова кључна реч данас, повратак, буквално ради.
Тако да сам управо спроводи, у разум, еквивалент ГетСтринг,
где ја предати назад у ко ме користи, неку вредност.
То не мора да буде стринг, то је инт.
Тако једноставан, брз пример, али смо ускоро
видимо неке софистицираније верзије и даље.
У ствари, хајде да погледамо нумерички он, који се зове ретурн.ц.
А ово је заиста мало једноставније.
Дакле, сврха овог програма у живот-- хајде да састави и покрените га,
тако да повратак, дот Сласх, ретурн-- Обавештење
програм једноставно кубов вредност 2.
То је прилично глупо, тешко је код, то не узима никакве улаза,
али не покаже други Функција коју сам ја написао.
Дакле, овде сам проглашен променљива, позвао к, типа инт,
једнак број 2, потпуно произвољно.
Ово је само неки паперјаста штампа.
Пише к је сада, што и што је, Цубинг Дот Дот Дот.
А магија је очигледно у складу 21.
Зовем функцију која се зове, коцку, Ја сам га предати папир
са бројем 2 писаног на њему, и какву вредност, математички,
желим да изађем из њега?
Баш као што проверу исправности?
8.
Зар не?
Ја вант 2 укоцкавају назад, 2 до моћ 3, па 8 вратио.
>> Па где је коцка спроводи?
Па, приметимо да то реализује овде.
И баш као и раније, логично, иако синтакса је вероватно
Веома ново за многе од вас, Желим ову функцију
да ме предају натраг лист папир са инт на њему.
Дакле, имам инт, тхе Име је произвољно,
али удобно се зове коцка.
Улаз на њега, је н од тип цео број, тако да је
како могу проћи у броју 2 на папиру.
И онда се испостави Ц носача математике, тако да не морате к је за време,
користите само звездицу за умножавање.
И то се враћа н пута н пута Н, који је једноставно коцки вредност.
>> Па где ћемо са свим овим?
Ово је дефинитивно вихор турнеје, будите уверени,
да у супер секција а проблем сет 1,
бићете прошао кроз све ово све висе.
И у Проблем сет 1, ми ћемо транзицији из графичког света Сцратцх
да нешто више командне линије у Ц. Али, ми ћемо извући инспирацију
из овог овде игре фром јучерашњице, назначено тиме
коришћењем Ц и стандардног издања стр скуп ћете спровести на Марио пирамиду.
И у хакерске издању стр скуп, ако тако одлуче да изаберу,
ћете спровести још мало изазов пирамиде са два врха.
Такође ћете остварити једну алгоритам, похлепан алгоритам.
Испоставило се да постоји нека занимљива логика
иза процеса руннинг станицу благајник је
и заправо предаје неко врати кусур.
Постоји алгоритам који је прилично једноставно, да можда чак и
ухватите интуитивно када сте први пут прочитао то-- схватајући да је оно што сам одувек
учињено у било које време сам дао некоме нешто Новац натраг-- да вам увек
минимизира броја папир белешке или метални новац
да сте предати назад на корисника.
И то, наравно, није убедљив јер ако одете на ЦВС или ситница,
не желите да се преда читава гомила оних
или гомила новчића.
Желиш Најмање кованице, вероватно, могуће.
>> На крају, такође ћете бити оспорена да се бави у свету воде
и заправо добити захвалност за мапирање између стопе протока,
Као, воде у туш, колико воде се користи.
И алузија у њој, ће бити овај снимак овде,
које ћемо завршити на за само 60 секунди, то
осликава ниско-проток туш главе.
>> [ВИДЕО РЕПРОДУКЦИЈА]
-U redu.
Имам све овде.
Имам Цицлоне Ф Сериес, Хидра, Јетфлов, Стокхолм
Суперстеам, само реците.
>> -А Шта препоручујете?
>> -Šta tražite?
>> -Повер Човек.
Снага.
-Као Силквоод.
То је за зрачење.
-Tako je.
-Сад Шта је ово?
-То Је Цоммандо 450.
Ја не продати.
>> Али то је оно што желимо.
То је командос 450.
>> Не веруј ми.
То је користи само у циркусу.
То је за слонове.
>> Ја ћу платити ништа.
>> Шта о Јерри?
>> Он није могао да поднесе то.
Он је деликатна.
Oh da.
[Крај репродукције]
Давид Ј Малан: У реду.
То је ако је за ЦС50.
Видимо се следеће недеље.
>> СПЕАКЕР 1: [? Скали?], [? Иан?] што се тиче овог пројекта оутро,
Шта сте ви смислили?
>> Звучник 2: Па, ми смо дали то разне мисли,
и мислимо да је најбољи начин да--
>> Спеакер 3: Могу ли?
>> Звучник 2: Да.
У сваком случају, у ствари.
>> Спеакер 3: Па мислим можемо сумирати нашу идеју
за оутрос са једним ворд-- ништа.
>> Давид Ј Малан: Ништа?
Спеакер 3: Ништа.
Давид Ј Малан: Шта то значи?
Спеакер 3: Тхе Оутрос су око чега.
Звучник 2: Па, мислим, у филозофији, Мислим, ништа није увек нешто.
СПЕАКЕР 1: Па вхат'с-- шта је премиса?
Спеакер 3: Дакле, то је као живот.
OK.
Šta si radio danas?
>> Давид Ј Малан: Устао сам, имао доручак, и дође на посао.
>> Спеакер 3: То је оутро.
Звучник 2: Али, мислим, не треба нешто деси са њим до--
Спеакер 3: Не, не, не, не.
Ništa se ne dešava.
>> СПЕАКЕР 1: Зашто гледамо?
>> Спеакер 3: Зато што то је оутро за ЦС50.
>> Давид Ј Малан: Не још.