1 00:00:00,000 --> 00:00:10,940 2 00:00:10,940 --> 00:00:13,060 >> Давид Ј Малан: Све Добро, тако да је ово ЦС50. 3 00:00:13,060 --> 00:00:15,040 И то је јасно петак. 4 00:00:15,040 --> 00:00:16,850 И то је крај недеље један. 5 00:00:16,850 --> 00:00:21,020 Дакле, можда ћете се сетити да смо стали, последњи пут, са Цлиффхангер од сорти. 6 00:00:21,020 --> 00:00:25,020 Чиме смо излагати ову лаж, да не ма шта си научио расте се 7 00:00:25,020 --> 00:00:31,610 уп, 1 подељено са 10 није, у Чињеница, 0,1 или 0.100 или 0,10000. 8 00:00:31,610 --> 00:00:35,270 У ствари, ако се саберу ова Програм, као што смо урадили јуче, са, 9 00:00:35,270 --> 00:00:39,770 да непрецизност, а затим урадите тачка, сласх, непрецизност, 10 00:00:39,770 --> 00:00:43,600 сазнали смо да је то оно што је 1 подељено са 10 је заправо. 11 00:00:43,600 --> 00:00:46,140 Дакле, то није стварно врло случај. 12 00:00:46,140 --> 00:00:49,014 Али то не наговештај на некој основно ограничење рачунара. 13 00:00:49,014 --> 00:00:50,930 И заиста, међу ствари ћемо да радимо 14 00:00:50,930 --> 00:00:55,130 данас је да погледамо зашто ово мора десило, какве импликације то има, 15 00:00:55,130 --> 00:00:58,430 како је човечанство није успело да схвати ово у неким веома 16 00:00:58,430 --> 00:01:00,410 Озбиљан ситуатионс-- Резултат који 17 00:01:00,410 --> 00:01:03,141 је прилично трагична а екпенсиве-- и такође 18 00:01:03,141 --> 00:01:04,849 Погледајмо како смо могу заправо брани 19 00:01:04,849 --> 00:01:06,530 против ове врсте ограничења. 20 00:01:06,530 --> 00:01:10,940 Тако интуитивно, можда, Зато је 1 подељено са 10, 21 00:01:10,940 --> 00:01:15,480 према мом компјутеру Овде, не само 1/10, 0.10? 22 00:01:15,480 --> 00:01:15,980 Да. 23 00:01:15,980 --> 00:01:16,530 Šta misliš? 24 00:01:16,530 --> 00:01:17,860 >> Аудиенце Мембер: Корен је другачије? 25 00:01:17,860 --> 00:01:18,550 >> Давид Ј Малан Тхе шта је? 26 00:01:18,550 --> 00:01:19,730 Ох, радик је другачија? 27 00:01:19,730 --> 00:01:20,720 Дакле, не сасвим. 28 00:01:20,720 --> 00:01:23,200 То је заправо више је фундаменталног значаја за хардвер. 29 00:01:23,200 --> 00:01:23,980 Остали мисли? 30 00:01:23,980 --> 00:01:24,584 Да. 31 00:01:24,584 --> 00:01:26,750 Аудиенце Мембер: Они представљају бројеве другачије? 32 00:01:26,750 --> 00:01:27,880 Давид Ј Малан: Тако они-- Тако је. 33 00:01:27,880 --> 00:01:29,338 Они представљају бројеве другачије. 34 00:01:29,338 --> 00:01:30,700 Нетачно, очигледно. 35 00:01:30,700 --> 00:01:33,190 Тако да је-- Па, другачије од чега? 36 00:01:33,190 --> 00:01:34,490 Или од кога? 37 00:01:34,490 --> 00:01:35,050 Од нас? 38 00:01:35,050 --> 00:01:35,966 Аудиенце Мембер: Да. 39 00:01:35,966 --> 00:01:38,930 Они не користе децимала систем за [неразумљиво]. 40 00:01:38,930 --> 00:01:39,680 Давид Ј Малан: У реду. 41 00:01:39,680 --> 00:01:41,560 Дакле, у извесном смислу, они не користе децимални систем. 42 00:01:41,560 --> 00:01:43,720 Испод хаубе, све је, заиста, бинарни, 43 00:01:43,720 --> 00:01:45,510 и то је повезано, у ствари. 44 00:01:45,510 --> 00:01:48,135 Али то је чак и једноставније објашњење од тога. 45 00:01:48,135 --> 00:01:48,635 Да. 46 00:01:48,635 --> 00:01:49,970 >> Аудиенце Мембер: Они само толико бита. 47 00:01:49,970 --> 00:01:52,370 Они само могу похранити до одређеног мери, као и са децимале. 48 00:01:52,370 --> 00:01:52,780 >> Давид Ј Малан: Да. 49 00:01:52,780 --> 00:01:54,420 То је оно што је стварно постаје у томе. 50 00:01:54,420 --> 00:01:57,180 Испоставило се да су компјутери обично, увек ћу само 51 00:01:57,180 --> 00:01:59,690 користити коначан количину информација да представља нешто. 52 00:01:59,690 --> 00:01:59,870 Зар не? 53 00:01:59,870 --> 00:02:02,110 На крају крајева, имамо фиксни само Количина простора на хард диску. 54 00:02:02,110 --> 00:02:04,210 Имамо само фиксни износ РАМ-а или меморије рачунара. 55 00:02:04,210 --> 00:02:06,251 И ако имате само фиксни износ од нечега, 56 00:02:06,251 --> 00:02:09,611 сигурно не могу заправо цоунт уп до бесконачности, или било који број који желите. 57 00:02:09,611 --> 00:02:11,610 Ви, врста, морају да бирамо шта опсег 58 00:02:11,610 --> 00:02:13,220 од вредности ћеш да подржи. 59 00:02:13,220 --> 00:02:18,100 >> И тако, на пример, недељу или две пре, када смо разговарали о АСЦИИ, 60 00:02:18,100 --> 00:02:21,610 и разговарали смо око 8 бита, или бајт, да тако кажем, 61 00:02:21,610 --> 00:02:26,360 највећи број можемо представљају са 8 бита је шта? 62 00:02:26,360 --> 00:02:28,350 255. 63 00:02:28,350 --> 00:02:31,850 И можемо представљати 256 Укупно вриједности али не ако ћемо провести један од њих 64 00:02:31,850 --> 00:02:34,190 на 0-- Па, али ако провести један од њих на 0, 65 00:02:34,190 --> 00:02:36,830 онда је највећи број је, наравно, 255. 66 00:02:36,830 --> 00:02:39,410 >> Тако испада да је ово случај такође, у овом контексту. 67 00:02:39,410 --> 00:02:42,350 Почели смо разговарати последњи пут, о бројевима флоатинг-поинт, који 68 00:02:42,350 --> 00:02:44,640 се разликују од целих бројева, у да имају децималну тачку 69 00:02:44,640 --> 00:02:47,056 и, надамо се, неки бројеви након тога, али они јесу. 70 00:02:47,056 --> 00:02:51,730 Рачунар је само обично иде користити 32 бита, можда 64 бита 71 00:02:51,730 --> 00:02:53,497 да представљају флоатинг поинт вредности. 72 00:02:53,497 --> 00:02:56,080 Дакле, иако смо одрасли учење математике и знајући 73 00:02:56,080 --> 00:02:58,750 да апсолутно може имати бесконачан број бројева 74 00:02:58,750 --> 00:03:01,650 после децималног зареза, а не ако имате коначних меморију. 75 00:03:01,650 --> 00:03:03,930 Ви, некако, морамо да заокружимо, или изабрати који 76 00:03:03,930 --> 00:03:05,346 Бројеви ћеш да представљају. 77 00:03:05,346 --> 00:03:08,710 И тако ти падне на памет, у извесном смислу, а то је компјутер најближи 78 00:03:08,710 --> 00:03:14,050 приближавање вредности које 1/10 може се, са само 32 или тако бита. 79 00:03:14,050 --> 00:03:15,300 И то не само 1/10. 80 00:03:15,300 --> 00:03:19,820 >> На пример, ако променим ово 1/3, што мислимо да је још једноставније. 81 00:03:19,820 --> 00:03:21,300 Дакле, 1 подељено са 3. 82 00:03:21,300 --> 00:03:22,355 Дозволите ми да сачувате датотеку. 83 00:03:22,355 --> 00:03:24,680 Пусти ме само напред и рецомпиле га. 84 00:03:24,680 --> 00:03:25,820 И дозволите ми да поново покренути. 85 00:03:25,820 --> 00:03:30,000 И овде, по свему судећи, 1/3 није 0.3 а затим бесконачан број 3'С 86 00:03:30,000 --> 00:03:30,770 након тога. 87 00:03:30,770 --> 00:03:32,540 Имате ову непрецизност на крају. 88 00:03:32,540 --> 00:03:35,544 Дакле, ми људи су тачни, а шта ви се учи, у ствари, тачно, 89 00:03:35,544 --> 00:03:37,460 али смо ударали до против неких ограничења. 90 00:03:37,460 --> 00:03:39,420 >> И шта сам мислио да бих данас, је почети 91 00:03:39,420 --> 00:03:42,190 гледајући, искрено, трагичне последице овога 92 00:03:42,190 --> 00:03:45,490 Понекад, кад се човечанство не баш спроводи 93 00:03:45,490 --> 00:03:48,460 за ову реалност и ових ограничења. 94 00:03:48,460 --> 00:03:52,360 А видећемо низ вињете из Хистори Цханнел који узима 95 00:03:52,360 --> 00:03:53,950 Погледајте како ствари је пошло наопако. 96 00:03:53,950 --> 00:03:56,340 То је дуга око 8 минута, па ћемо се вратити после овога 97 00:03:56,340 --> 00:03:59,439 и да погледамо тачно шта друго може да крене наопако. 98 00:03:59,439 --> 00:04:00,605 Ако бисмо могли да затамни лигхтс-- 99 00:04:00,605 --> 00:04:02,350 >> [ВИДЕО РЕПРОДУКЦИЈА] 100 00:04:02,350 --> 00:04:06,310 >> -Цомпутерс, Сви смо дошли да прихвати су често фрустрирајуће проблеми који 101 00:04:06,310 --> 00:04:07,750 иди са њима. 102 00:04:07,750 --> 00:04:11,370 Душко, вируси и софтвер Глитцхес су мале цене 103 00:04:11,370 --> 00:04:13,230 да плати за практичност. 104 00:04:13,230 --> 00:04:17,519 Али у високе технологије и хигх-спеед војних и свемирског програма апликације, 105 00:04:17,519 --> 00:04:22,130 најмањи проблем може бити увећана у катастрофу. 106 00:04:22,130 --> 00:04:27,750 Дана 4. јуна 1996. године, научници припремају да покрене беспилотну Ариане 5 ракету. 107 00:04:27,750 --> 00:04:29,890 Она је носила научна сателити дизајниран 108 00:04:29,890 --> 00:04:33,030 прецизно како успоставити Земљино магнетно интеракције на терену 109 00:04:33,030 --> 00:04:35,600 са соларних ветрова. 110 00:04:35,600 --> 00:04:37,930 Ракета је направљен за Европска свемирска агенција 111 00:04:37,930 --> 00:04:41,620 и скинут са свог објекта на обали Француска Гвајана. 112 00:04:41,620 --> 00:04:44,924 >> -И Око 30 секунди у лет, они прво 113 00:04:44,924 --> 00:04:46,340 Приметио је нешто кренуло наопако. 114 00:04:46,340 --> 00:04:49,280 То су млазнице су окретни на неки начин они заиста не би требало. 115 00:04:49,280 --> 00:04:53,042 Око 40 секунди у лету, Јасно је возило било у невољи, 116 00:04:53,042 --> 00:04:55,250 и тада су направили одлука да се униште. 117 00:04:55,250 --> 00:04:58,970 Сваки Службеник за безбедност опсег са огромне храбрости притисне дугме, 118 00:04:58,970 --> 00:05:03,940 разнео ракету пре него што је могла постати опасност за јавну безбедност. 119 00:05:03,940 --> 00:05:06,600 >> Ово је била лепотица Воиаге оф тхе Ариане 5, 120 00:05:06,600 --> 00:05:09,270 и њено уништење узео поставите због грешке 121 00:05:09,270 --> 00:05:10,992 уграђен у софтверу ракете. 122 00:05:10,992 --> 00:05:12,700 -Проблем На Аријана је да постоји 123 00:05:12,700 --> 00:05:15,370 је број која је захтевала 64 бита да изразе, 124 00:05:15,370 --> 00:05:18,150 и он је желео да га претвори га у 16 ​​бит број. 125 00:05:18,150 --> 00:05:21,160 Они претпоставити да је број никада није ће бити веома велика, 126 00:05:21,160 --> 00:05:25,020 да је већина тих цифара у 64-битна број је било 0 је. 127 00:05:25,020 --> 00:05:26,310 Они су били у праву. 128 00:05:26,310 --> 00:05:28,680 >> -У Немогућност једног софтверски програм да прихвати 129 00:05:28,680 --> 00:05:32,820 врста броја генерише друга је била у корену неуспеха. 130 00:05:32,820 --> 00:05:37,190 Развој софтвера је постао врло скупо део нове технологије. 131 00:05:37,190 --> 00:05:40,760 Ариане 4 Ракета је веома био успешни, толико софтвера 132 00:05:40,760 --> 00:05:43,990 створен за то је био користи на Ариане 5. 133 00:05:43,990 --> 00:05:49,750 >> -У Основни проблем је да је Аријан 5 је био бржи, убрзан брже. 134 00:05:49,750 --> 00:05:53,000 И софтвер није имала чини то. 135 00:05:53,000 --> 00:05:56,330 >> -У Уништавање ракета Била је то огромна финансијска катастрофа, 136 00:05:56,330 --> 00:05:59,670 све због минут софтвера грешке. 137 00:05:59,670 --> 00:06:01,990 Али ово није био први време проблеми конверзије података 138 00:06:01,990 --> 00:06:05,310 је муче модерне ракетне технологије. 139 00:06:05,310 --> 00:06:08,300 >> -У 1991., са почетком Првог Заливског рата, 140 00:06:08,300 --> 00:06:10,650 Патриотски ракета доживели сличну врсту 141 00:06:10,650 --> 00:06:12,650 проблема конверзије број. 142 00:06:12,650 --> 00:06:15,620 Као резултат тога, 28 људи, 28 амерички војници 143 00:06:15,620 --> 00:06:18,440 убијено и око 100 рањено, 144 00:06:18,440 --> 00:06:21,900 када Патриотски, који је требало за заштиту од долазних Сцудс, 145 00:06:21,900 --> 00:06:24,630 није успео да испали ракету. 146 00:06:24,630 --> 00:06:29,440 >> Када Ирак напао Кувајт и Америку покренута Пустињска олуја почетком 1991. године, 147 00:06:29,440 --> 00:06:33,800 Патриот ракетне батерије су распоређени да заштити Саудијску Арабију и Израел 148 00:06:33,800 --> 00:06:37,000 из ирачких Сцуд ракетних напада. 149 00:06:37,000 --> 00:06:40,610 Патриота је амерички, средње опсег земља-ваздух система 150 00:06:40,610 --> 00:06:43,010 произведен од стране компаније Раитхеон. 151 00:06:43,010 --> 00:06:49,080 >> -У Величина Патриот интерцептор, Сама је око, дуга око 20 метара. 152 00:06:49,080 --> 00:06:51,250 И то је тежак око 2000 килограма. 153 00:06:51,250 --> 00:06:55,195 И то носи бојеву главу од о-- Мислим да је отприлике то 150 фунти. 154 00:06:55,195 --> 00:06:59,500 А бојева глава, сама, је висока експлозив, 155 00:06:59,500 --> 00:07:02,570 која има фрагменте око њега. 156 00:07:02,570 --> 00:07:06,890 Кућиште бојеве главе је пројектована да делују као сачме. 157 00:07:06,890 --> 00:07:09,130 >> -Тхе Ракете су носио, 4 по контејнеру, 158 00:07:09,130 --> 00:07:12,080 и транспортују полу-приколици. 159 00:07:12,080 --> 00:07:19,100 >> -У Патриота против ракетни систем датира најмање 20 година. 160 00:07:19,100 --> 00:07:22,320 Првобитно је пројектован као ваздушна одбрана ракете 161 00:07:22,320 --> 00:07:24,180 да оборе непријатељске авионе. 162 00:07:24,180 --> 00:07:27,860 У првом Заливског рата, када је рат дошао, 163 00:07:27,860 --> 00:07:32,745 Војска жели да га користите у оборе Сцудс, а не авионе. 164 00:07:32,745 --> 00:07:36,150 Ирачки снаге није било толико проблем, 165 00:07:36,150 --> 00:07:39,110 али је војска била забринута за Сцудс. 166 00:07:39,110 --> 00:07:42,340 И тако су покушали да надоградите Патриот. 167 00:07:42,340 --> 00:07:44,760 >> -Интерцептинг Непријатеља ракета путује Мацх пет 168 00:07:44,760 --> 00:07:47,250 је требало да буде довољно изазован. 169 00:07:47,250 --> 00:07:50,000 Али када Патриотски је улетео у службу, 170 00:07:50,000 --> 00:07:54,030 Војска није био свестан Ирачки модификација које је 171 00:07:54,030 --> 00:07:56,840 њихови СКАД готово немогуће погодити. 172 00:07:56,840 --> 00:08:01,020 >> Шта се десило, то су СКАД да су долазили у, били су нестабилни, 173 00:08:01,020 --> 00:08:02,310 они су брбљао. 174 00:08:02,310 --> 00:08:05,140 Разлог за то, је Ирачанима, како 175 00:08:05,140 --> 00:08:09,450 да 600 километара од од 300 километар опсег ракета, 176 00:08:09,450 --> 00:08:12,930 је тежину од предњег бојеве главе и направио бојева глава упаљач. 177 00:08:12,930 --> 00:08:17,710 Тако сада, Патриотски покушава да дође у Сцуд, и већину времена, 178 00:08:17,710 --> 00:08:21,700 огромна већина од време, то би само лети од Сцуд. 179 00:08:21,700 --> 00:08:25,700 >> -Једном Оператера система Патриот схватио Патриотски промашила циљ, 180 00:08:25,700 --> 00:08:29,790 они активирао Патриот бојеву главу, како би се избегла губитке ако се 181 00:08:29,790 --> 00:08:32,380 било дозвољено да падне на земљу. 182 00:08:32,380 --> 00:08:36,340 >> То је оно што већина људи видели, те велике ватрене лопте на небу, 183 00:08:36,340 --> 00:08:41,289 и разумео као пресретнути Сцуд бојевих глава. 184 00:08:41,289 --> 00:08:43,590 Иако је у ноћи небо, Патриоте појавио 185 00:08:43,590 --> 00:08:47,020 успешно се уништавање Сцудс, на Дхахран, 186 00:08:47,020 --> 00:08:49,730 није могло бити грешка о свом раду. 187 00:08:49,730 --> 00:08:53,990 Ту, у Патриот радарски систем Изгубила на долазни Сцуд, 188 00:08:53,990 --> 00:08:56,650 и никада није покренута, због софтверског грешке. 189 00:08:56,650 --> 00:08:59,650 190 00:08:59,650 --> 00:09:04,100 То је Израелце који је први откривени да што дуже систем био укључен, 191 00:09:04,100 --> 00:09:07,510 је већа време неслагање постао, због сат уграђеним 192 00:09:07,510 --> 00:09:09,490 у рачунару система. 193 00:09:09,490 --> 00:09:12,670 >> Око 2 недеље пре трагедија у Дхахран, 194 00:09:12,670 --> 00:09:15,010 Израелци пријављен Министарство одбране, 195 00:09:15,010 --> 00:09:17,940 да је систем губио време, да је после око 8 сати трчања, 196 00:09:17,940 --> 00:09:21,410 су приметили да је систем постаје приметно мање прецизна. 197 00:09:21,410 --> 00:09:25,290 Министарство одбране је одговорио говори све Патриот батерија 198 00:09:25,290 --> 00:09:28,070 да не остављају система на дуже време. 199 00:09:28,070 --> 00:09:29,960 Они никада није рекао шта је дуго времена била. 200 00:09:29,960 --> 00:09:30,460 8 сати? 201 00:09:30,460 --> 00:09:30,960 10 сати? 202 00:09:30,960 --> 00:09:31,870 1000 сати? 203 00:09:31,870 --> 00:09:33,734 Нико није знао. 204 00:09:33,734 --> 00:09:35,650 -Тхе Патриот батерија стационирани у касарни 205 00:09:35,650 --> 00:09:40,410 у Дхахран, и његова погрешна унутрашња сат, је био више од 100 сати 206 00:09:40,410 --> 00:09:43,041 у ноћи 25. фебруара. 207 00:09:43,041 --> 00:09:47,416 >> -То Багер времена са тачношћу око 1/10 секунде. 208 00:09:47,416 --> 00:09:49,290 Сада 1/10 секунде је занимљива број 209 00:09:49,290 --> 00:09:52,700 јер то не може бити изражен у бинарном, тачно. 210 00:09:52,700 --> 00:09:54,820 Што значи, да не може да се изрази, тачно, 211 00:09:54,820 --> 00:09:57,420 у сваком модерног дигиталног рачунара. 212 00:09:57,420 --> 00:10:01,460 Тешко је поверовати, али користити као пример. 213 00:10:01,460 --> 00:10:03,520 Узмимо број, 1/3. 214 00:10:03,520 --> 00:10:07,110 1/3 не може исказати у децимале, тачно. 215 00:10:07,110 --> 00:10:11,490 1/3 је 0.333 дешава у бесконачност. 216 00:10:11,490 --> 00:10:15,486 Нема шансе да то урадите са апсолутна тачност, у децимале. 217 00:10:15,486 --> 00:10:18,360 То је управо иста врста Проблем који се догодио у Патриот. 218 00:10:18,360 --> 00:10:22,510 Што дуже систем водио је горе време грешка је постао. 219 00:10:22,510 --> 00:10:28,420 >> -После 100 сати рада, грешка ин тиме је само око 1/3 секунде. 220 00:10:28,420 --> 00:10:31,830 Међутим, у смислу таргетирања ракета путује Мацх 5, 221 00:10:31,830 --> 00:10:35,890 то је резултирало у праћењу грешка преко 600 метара. 222 00:10:35,890 --> 00:10:38,970 Било би фатална грешка за војнике на Дахрану. 223 00:10:38,970 --> 00:10:45,035 >> Шта се десило, је Скад лансирање је детектован сателита за рано упозоравање, 224 00:10:45,035 --> 00:10:48,930 и они нев да је Скад је долази у њиховом правцу. 225 00:10:48,930 --> 00:10:51,170 Они нису знали одакле долази. 226 00:10:51,170 --> 00:10:53,990 >> -То Сада је до радару компонента Патриот система, 227 00:10:53,990 --> 00:10:58,520 брани Дхахран, да пронађе и задржи Трацк долазног непријатеља ракете. 228 00:10:58,520 --> 00:10:59,690 >> -У Радар је био веома паметан. 229 00:10:59,690 --> 00:11:01,710 То би, заправо, пратите положај Сцуд 230 00:11:01,710 --> 00:11:04,040 а онда предвиђа где вероватно би било, 231 00:11:04,040 --> 00:11:06,140 следећи пут, Радар послао импулса. 232 00:11:06,140 --> 00:11:07,660 То се зове капија опсег. 233 00:11:07,660 --> 00:11:11,870 >> Онда, некада Патриот одлучује довољно времена има 234 00:11:11,870 --> 00:11:16,280 прошло да се вратим и проверите следеће локација за ову откривени објекат, 235 00:11:16,280 --> 00:11:17,280 иде назад. 236 00:11:17,280 --> 00:11:21,690 Дакле, када се вратио у погрешан место, онда не види објекат 237 00:11:21,690 --> 00:11:25,230 и одлучује да није било објекат, то је била лажна детекција, 238 00:11:25,230 --> 00:11:26,650 и капи нумеру. 239 00:11:26,650 --> 00:11:29,690 Долазећи Скад нестала од радара, 240 00:11:29,690 --> 00:11:32,670 и секунди касније, то ударио у касарну. 241 00:11:32,670 --> 00:11:38,100 Скад убила 28, а била последња један испаљен током првог Заливског рата. 242 00:11:38,100 --> 00:11:43,460 Трагично, ажурирани софтвер стигао у Дхахрана сутрадан. 243 00:11:43,460 --> 00:11:46,150 Софтвер мана је имао био фиксни, затварање 244 00:11:46,150 --> 00:11:48,940 једно поглавље у невољи Историја Патриот ракете. 245 00:11:48,940 --> 00:11:50,220 >> [Крај репродукције] 246 00:11:50,220 --> 00:11:54,340 >> Давид Ј Малан: Тако ћемо да погледамо неке сличне ограничења у мало. 247 00:11:54,340 --> 00:11:58,470 Али прво, хајде да Прелазак на неколико вашу информацију је. 248 00:11:58,470 --> 00:12:01,575 Дакле, једног-- овог викенда, било ће бити супер секције, 249 00:12:01,575 --> 00:12:04,200 које имају за циљ да замени редовно заказаним секције, које 250 00:12:04,200 --> 00:12:05,460 ће покренути недељно отуда. 251 00:12:05,460 --> 00:12:08,204 Погледајте сајту ЦС50 је За више информација о њима. 252 00:12:08,204 --> 00:12:11,120 Они ће такође бити снимљен и емитују ливе за оне који не могу да присуствују. 253 00:12:11,120 --> 00:12:12,980 Проблем сет 1 је на Цоурсе аутора већ, 254 00:12:12,980 --> 00:12:15,105 па ћемо да погледамо да је у само мало. 255 00:12:15,105 --> 00:12:18,350 И радног времена превише, одржаће поставите Овог понедељка до четвртка. 256 00:12:18,350 --> 00:12:20,960 >> Дакле, ово је највише канонски Програм смо погледали последњи пут. 257 00:12:20,960 --> 00:12:23,590 То је као најједноставнији Програм можете писати у Ц, 258 00:12:23,590 --> 00:12:25,250 па чак и да је мало храбре тврдње. 259 00:12:25,250 --> 00:12:25,750 Зар не? 260 00:12:25,750 --> 00:12:28,070 Зато што је много наизглед сложеност ово. 261 00:12:28,070 --> 00:12:30,445 Дакле, хајде да погледамо брзо шта су неки од ових елемената 262 00:12:30,445 --> 00:12:33,080 су били и онда покушати да обезбеди ментални модел за колико 263 00:12:33,080 --> 00:12:35,710 ово најједноставнији програма раде, а онда ћемо почети 264 00:12:35,710 --> 00:12:38,050 гледања на ствари све сложенији. 265 00:12:38,050 --> 00:12:41,280 Дакле, ова линија овде, истакао сада, у жуто, оно што смо рекли, последњи пут, 266 00:12:41,280 --> 00:12:43,200 да то за нас? 267 00:12:43,200 --> 00:12:45,220 Која је сврха то служи? 268 00:12:45,220 --> 00:12:46,984 Свако од даље назад? 269 00:12:46,984 --> 00:12:47,483 Да. 270 00:12:47,483 --> 00:12:48,649 >> Аудиенце Мембер: [неразумљиво] 271 00:12:48,649 --> 00:12:50,871 272 00:12:50,871 --> 00:12:51,704 Давид Ј Малан: Добро. 273 00:12:51,704 --> 00:12:53,537 Дакле, то вам даје приступ командама, или немојмо 274 00:12:53,537 --> 00:12:56,750 цалл их функције, да неко други написао, да су проглашени, 275 00:12:56,750 --> 00:12:58,350 да тако кажем, у неком другом фајлу. 276 00:12:58,350 --> 00:13:02,370 Тако ћемо тачно видети шта је .х фајл је насупрот .ц датотеку, на крају. 277 00:13:02,370 --> 00:13:04,710 Али за сада, само знам то принтф, на пример, 278 00:13:04,710 --> 00:13:08,370 је међу функција које су била декларисана у неком другом фајлу, негде 279 00:13:08,370 --> 00:13:12,930 друго на чврстом диску облаку да је омогућава нам да приступите принтф и користити га 280 00:13:12,930 --> 00:13:15,240 без потребе да поново измисли да се точак. 281 00:13:15,240 --> 00:13:16,930 У међувремену, главни. 282 00:13:16,930 --> 00:13:19,690 Какав је био аналогни главне, прошле недеље? 283 00:13:19,690 --> 00:13:20,190 Да. 284 00:13:20,190 --> 00:13:21,460 >> Аудиенце Мембер: Зелена застава се кликне. 285 00:13:21,460 --> 00:13:21,740 >> Давид Ј Малан: Да. 286 00:13:21,740 --> 00:13:23,490 Огреби је, када зелена застава кликне. 287 00:13:23,490 --> 00:13:25,560 То је као слагалица комад да почиње офф ствари. 288 00:13:25,560 --> 00:13:28,306 И тако на сличан начин, да ли је свет одлучио пре неколико година да је у Ц, 289 00:13:28,306 --> 00:13:30,930 и гомила других језика, Ако желите да пишете програм, 290 00:13:30,930 --> 00:13:33,410 ваша прва функција је да се зове, главни. 291 00:13:33,410 --> 00:13:34,641 И то мора да изгледа овако. 292 00:13:34,641 --> 00:13:36,640 Али ћемо се вратити, други пут, на шта инт, 293 00:13:36,640 --> 00:13:38,690 и, празнина, значи у том контексту. 294 00:13:38,690 --> 00:13:42,860 За сада, великих заграда су љубазни Као слагалице облик Сцратцх је 295 00:13:42,860 --> 00:13:45,080 које обухвата известан број линија. 296 00:13:45,080 --> 00:13:47,070 А међу на линијама овде, је ова овде. 297 00:13:47,070 --> 00:13:51,610 иф је функција чија је сврха Живот је да одштампате форматирани стринг. 298 00:13:51,610 --> 00:13:55,010 И од форматиран, мислим на тебе може прикључити плацехолдер вредности, 299 00:13:55,010 --> 00:13:58,360 и можете одредити колико децимала бодова, колико бројева за штампање 300 00:13:58,360 --> 00:14:00,040 након децималног зареза и сл. 301 00:14:00,040 --> 00:14:05,040 И принтф, наравно, узима једну или више аргументи или параметри, 302 00:14:05,040 --> 00:14:06,770 иначе познат, више једноставно, као улаза. 303 00:14:06,770 --> 00:14:09,230 >> Тако иф, као и много функције, узима улаза. 304 00:14:09,230 --> 00:14:12,730 А ти улази су прихватили од два загради овде. 305 00:14:12,730 --> 00:14:15,180 А унутар њих је један улаз. 306 00:14:15,180 --> 00:14:18,600 То је ниска, као што смо га звали, што је само низ карактера, 307 00:14:18,600 --> 00:14:22,310 као реч или фразу, или у целини есеј чак, између двоструким наводницима. 308 00:14:22,310 --> 00:14:25,712 И то је оно што ће утицати на понашање принтф јер, наравно, 309 00:14:25,712 --> 00:14:27,170 то је само општи функција за штампање. 310 00:14:27,170 --> 00:14:29,600 Неће знати шта за штампање, осим ако то рећи. 311 00:14:29,600 --> 00:14:31,000 А онда, мало ситнице. 312 00:14:31,000 --> 00:14:34,056 Оно што смо рекли ово чудно редослед симбола? 313 00:14:34,056 --> 00:14:34,556 Да. 314 00:14:34,556 --> 00:14:35,410 >> Аудиенце Мембер: Нова линија. 315 00:14:35,410 --> 00:14:35,990 >> Давид Ј Малан: Нова линија. 316 00:14:35,990 --> 00:14:39,340 Тако испада, не може само ударити, ентер, када пишете програм. 317 00:14:39,340 --> 00:14:42,590 Генерално, преводилац ће добити мало збуњени о томе шта мислите. 318 00:14:42,590 --> 00:14:45,340 Уместо тога, морате да буквално кажу, дај ми нову линију овде. 319 00:14:45,340 --> 00:14:49,506 И тако / н, је оно што смо генерално зовемо одбегли карактер. 320 00:14:49,506 --> 00:14:50,870 Тако н за нову линију. 321 00:14:50,870 --> 00:14:53,810 И преводилац зна да када види / н, 322 00:14:53,810 --> 00:14:57,420 заправо би требало да подстакне рачунар, на крају, односно принтф, у овом случају, 323 00:14:57,420 --> 00:15:00,260 да одштампате стварни Нев линија, као и ударање Тхе, унесите, 324 00:15:00,260 --> 00:15:01,480 тастер на тастатури. 325 00:15:01,480 --> 00:15:05,620 И на крају, оно што смо рекли овај комад синтакса је за? 326 00:15:05,620 --> 00:15:06,591 Шта то представља? 327 00:15:06,591 --> 00:15:07,090 Да. 328 00:15:07,090 --> 00:15:07,490 >> Аудиенце Мембер: [неразумљиво] 329 00:15:07,490 --> 00:15:08,660 >> Давид Ј Малан: То је само крај линије. 330 00:15:08,660 --> 00:15:09,909 То је крај изјаве. 331 00:15:09,909 --> 00:15:11,890 И схватите да ми не ставите их свуда. 332 00:15:11,890 --> 00:15:13,900 Ми свакако не их на крајевима сваког реда. 333 00:15:13,900 --> 00:15:16,680 На пример, ту је нема на прва линија, нема нико на линији 334 00:15:16,680 --> 00:15:18,680 са, главни, има нема после заграда, 335 00:15:18,680 --> 00:15:21,740 али ћете почети да види и да упознати са где је позвао на. 336 00:15:21,740 --> 00:15:26,014 И то је скоро увек после функцији позовите или изјава, мало акције 337 00:15:26,014 --> 00:15:27,180 да заправо узимате. 338 00:15:27,180 --> 00:15:29,520 >> И сад знам, нарочито ако међу онима који су мање удобна, 339 00:15:29,520 --> 00:15:32,540 Ово су врсте глупим стварима да ћете завршити случајно лупа 340 00:15:32,540 --> 00:15:33,873 главу уза зид изнад. 341 00:15:33,873 --> 00:15:36,107 Јер ћеш бити логички Увјерен у неком проблему 342 00:15:36,107 --> 00:15:38,440 Ресио за проблем Сет, а проклету ствар само 343 00:15:38,440 --> 00:15:40,187 неће саставити или чак покренути. 344 00:15:40,187 --> 00:15:43,270 И тако често, на почетку, то ће бити зато што пропустио заграду, 345 00:15:43,270 --> 00:15:44,455 или сте пропустили зарез. 346 00:15:44,455 --> 00:15:46,547 И тако само имати на уму оваквих ствари, 347 00:15:46,547 --> 00:15:49,380 и покушајте да се не исфрустрирани их јер врло брзо то ради 348 00:15:49,380 --> 00:15:50,640 постају стари шешир. 349 00:15:50,640 --> 00:15:53,910 Али то је врло лако добити фрустриран рано, као резултат. 350 00:15:53,910 --> 00:15:57,020 >> Дакле, сада, хајде да погледамо како Ова линија је заправо ради 351 00:15:57,020 --> 00:15:59,170 и онда погледајте мало компликованији један. 352 00:15:59,170 --> 00:16:02,017 Тако смо преко имамо овде, способност да се ослањају на овом екрану. 353 00:16:02,017 --> 00:16:04,100 И претпоставимо да ово је мој рачунар екран, 354 00:16:04,100 --> 00:16:08,589 али ја пишем, Хелло програм, и ја нисмо реализовали, принтф. 355 00:16:08,589 --> 00:16:10,130 Неко други је спровела, принтф. 356 00:16:10,130 --> 00:16:12,420 Ко би желео да тврде да су спроведене, принтф? 357 00:16:12,420 --> 00:16:12,920 Ако могу? 358 00:16:12,920 --> 00:16:13,830 У реду, како се зовеш? 359 00:16:13,830 --> 00:16:14,155 >> СТУДЕНТСКИ 1: [? Цопал. ?] 360 00:16:14,155 --> 00:16:15,529 >> Давид Ј Малан: Цопал, попни се. 361 00:16:15,529 --> 00:16:16,430 Хајде горе. 362 00:16:16,430 --> 00:16:17,070 U redu. 363 00:16:17,070 --> 00:16:22,260 Тако имамо, овде, неки именима, јер ћемо направити малу игру овога. 364 00:16:22,260 --> 00:16:26,270 И ми ћемо те звати, иф. 365 00:16:26,270 --> 00:16:30,170 А ако желиш да дођеш овамо, шта Управо сам нацртана на екрану, 366 00:16:30,170 --> 00:16:32,340 то је врло једноставно, ту ми је, ово. 367 00:16:32,340 --> 00:16:35,550 >> У реду, тако да, хелло ми наме ис, иф, ако желите да ставите ово. 368 00:16:35,550 --> 00:16:35,740 U redu. 369 00:16:35,740 --> 00:16:37,360 И ако можете ићи став по екрану рачунара 370 00:16:37,360 --> 00:16:39,730 као да сте функцију која дошао са овом компјутерском систему. 371 00:16:39,730 --> 00:16:42,063 А твој циљ у животу је да стварно нешто штампање. 372 00:16:42,063 --> 00:16:44,560 Али, слично као и програму Управо сам на екрану, овде, 373 00:16:44,560 --> 00:16:47,060 ћемо морати да заправо ти дати допринос. 374 00:16:47,060 --> 00:16:51,810 >> И тако, ако мој улаз, овде је очигледно, оно што је прошло у принтф, 375 00:16:51,810 --> 00:16:53,730 хајде да некако се ругају овако. 376 00:16:53,730 --> 00:16:58,720 Идем да буквално писати на парче папира, "Хелло, Ворлд" 377 00:16:58,720 --> 00:17:03,020 обрнуте косе црте Н И да буде јасно, шта Управо сам нацртан на овом комаду папира, 378 00:17:03,020 --> 00:17:04,020 изгледа овако. 379 00:17:04,020 --> 00:17:08,730 Дакле, када сам покренути овај програм, а то жута линија кода буде погубљен, 380 00:17:08,730 --> 00:17:12,970 то је као да сам, Хелло програма, ја предаје неки улаз са на функцију 381 00:17:12,970 --> 00:17:13,970 да је неко други написао. 382 00:17:13,970 --> 00:17:16,595 >> А ако вас, прстом, могао заправо, прстом, 383 00:17:16,595 --> 00:17:21,520 драв на екрану год је то што су предали, 384 00:17:21,520 --> 00:17:27,465 ефекат, на крају, јесте да види управо то, на екрану. 385 00:17:27,465 --> 00:17:29,140 И мали кутак случај. 386 00:17:29,140 --> 00:17:31,540 И добро, не треба видјети Тхе, нова линија, у овом тренутку. 387 00:17:31,540 --> 00:17:33,900 Било би некоректно за вас изричито повући нови ред. 388 00:17:33,900 --> 00:17:36,810 Али, ако смо задржали писање речи на екран, они би завршити испод тога. 389 00:17:36,810 --> 00:17:39,560 >> Дакле, хвала вам пуно, али стицк овде само један тренутак. 390 00:17:39,560 --> 00:17:42,860 Сада је потребан други волонтер, ако можемо, 391 00:17:42,860 --> 00:17:46,830 то ће морати да одигра улогу од-- То је само људи у оркестру 392 00:17:46,830 --> 00:17:47,355 odmah. 393 00:17:47,355 --> 00:17:47,980 Како о-- реду. 394 00:17:47,980 --> 00:17:48,480 Baš ovde. 395 00:17:48,480 --> 00:17:49,180 Хајде горе. 396 00:17:49,180 --> 00:17:49,955 Kako se zoveš? 397 00:17:49,955 --> 00:17:50,922 >> Студент 2: [? Иваи. ?] 398 00:17:50,922 --> 00:17:51,796 Давид Ј Малан: Молим? 399 00:17:51,796 --> 00:17:52,990 Студент 2: [? Иваи. ?] 400 00:17:52,990 --> 00:17:55,320 Давид Ј Малан: Етхан, хајде горе. 401 00:17:55,320 --> 00:17:55,820 Не? 402 00:17:55,820 --> 00:17:58,390 Да ли сам ја то погрешно, чак и након што је два пута рекао? 403 00:17:58,390 --> 00:17:58,890 Хајде горе. 404 00:17:58,890 --> 00:18:00,030 Тешко је чути овде. 405 00:18:00,030 --> 00:18:05,240 406 00:18:05,240 --> 00:18:05,740 OK. 407 00:18:05,740 --> 00:18:07,190 И жао ми је, како се зовеш? 408 00:18:07,190 --> 00:18:07,680 >> Студент 2: [? Иваи. ?] 409 00:18:07,680 --> 00:18:08,790 >> [? Давид Ј Малан: Иваи. ?] OK. 410 00:18:08,790 --> 00:18:10,430 За сада, ако не ум, ви сте ГетСтринг. 411 00:18:10,430 --> 00:18:11,013 >> Студент 2: У реду. 412 00:18:11,013 --> 00:18:11,797 Кул. 413 00:18:11,797 --> 00:18:14,630 Давид Ј Малан: Дакле, ако желите да стојим овде за тренутак, 414 00:18:14,630 --> 00:18:17,100 хајде да погледамо мало сложенији програм који 415 00:18:17,100 --> 00:18:18,670 сада има три линије кода. 416 00:18:18,670 --> 00:18:24,080 Тако имамо један, реците своје име користећи иф; два, позив на ГетСтринг, 417 00:18:24,080 --> 00:18:28,060 затим задатку до променљива зове, Стринг с, или се зове ова; 418 00:18:28,060 --> 00:18:31,260 а затим још један позив да, принтф, али овај пут са два улаза. 419 00:18:31,260 --> 00:18:33,646 >> Тако смо већ урадили држава ваше име, односно имамо 420 00:18:33,646 --> 00:18:34,770 већ урадио принтф позив. 421 00:18:34,770 --> 00:18:38,960 Зато ћу да пишем, Реците своје име. 422 00:18:38,960 --> 00:18:42,089 И тако, шта ћу пасс, иф, у само једном тренутку, 423 00:18:42,089 --> 00:18:43,005 је једноставно, ово. 424 00:18:43,005 --> 00:18:47,760 Дакле, ако желите да идете напред и нацртао на екрану, то је сада твој улаз. 425 00:18:47,760 --> 00:18:48,260 U redu. 426 00:18:48,260 --> 00:18:51,160 И заборави стринг, сада имамо наша линија кода овде. 427 00:18:51,160 --> 00:18:54,470 Дакле, у, ГетСтринг, морамо да стварно звати, ГетСтринг. 428 00:18:54,470 --> 00:18:57,920 Дакле, ваш циљ у животу је да само хода напоље у оркестру, ако можеш, 429 00:18:57,920 --> 00:18:58,980 и да нечије име. 430 00:18:58,980 --> 00:19:00,860 Али хајде да ти дам нешто да га стави. 431 00:19:00,860 --> 00:19:02,908 Ако желите да, иди напред и добити низ, 432 00:19:02,908 --> 00:19:05,241 да нечије име на који парче папира, ако можеш. 433 00:19:05,241 --> 00:19:12,940 434 00:19:12,940 --> 00:19:13,530 >> U redu. 435 00:19:13,530 --> 00:19:15,250 И видећемо, у само једном тренутку, чије име смо се. 436 00:19:15,250 --> 00:19:17,630 У међувремену, шта ћу припремите је празно комад 437 00:19:17,630 --> 00:19:21,340 папира, у којима, идем да сачувате год је вредност 438 00:19:21,340 --> 00:19:25,752 је да ГетСтринг се враћа у мени, Ја, као стринг променљива се зове, а. 439 00:19:25,752 --> 00:19:26,252 U redu. 440 00:19:26,252 --> 00:19:27,293 Дакле, шта имамо овде? 441 00:19:27,293 --> 00:19:27,950 Ник. 442 00:19:27,950 --> 00:19:28,450 U redu. 443 00:19:28,450 --> 00:19:30,910 Дакле, имамо овде име на Ник. 444 00:19:30,910 --> 00:19:33,750 Дакле, то је оно што буквално враћена 445 00:19:33,750 --> 00:19:35,810 за мене, да тако кажем, од ГетСтринг. 446 00:19:35,810 --> 00:19:38,720 >> Ја, сада, идем у изврши левој страни 447 00:19:38,720 --> 00:19:43,440 тог изражавања, где сам једноставно записујем, за данашње потребе, Ник. 448 00:19:43,440 --> 00:19:46,470 Дакле, сада имам променљиву назива, с, складиштење име на Ник. 449 00:19:46,470 --> 00:19:49,520 Већ сам предао иф, претходни аргумент. 450 00:19:49,520 --> 00:19:52,800 Али, у нашој трећој и завршној линији код, Ја имам при руци принтф 451 00:19:52,800 --> 00:19:58,500 несто мало дифферент-- "Здраво,% с" обрнута коса црта бр. 452 00:19:58,500 --> 00:20:01,510 >> И тако је последња линија Идем да сенд-- последња ствар коју ми 453 00:20:01,510 --> 00:20:03,060 да запишете сада је ово. 454 00:20:03,060 --> 00:20:06,310 Тако су две линије кода, или а последња линија кода, 455 00:20:06,310 --> 00:20:10,690 позиви за две инпутс-- један, овај, и два, ово. 456 00:20:10,690 --> 00:20:13,330 Дакле, ако наша Функција принтф Сада можете узети ово као улаз, 457 00:20:13,330 --> 00:20:16,000 Лет Ме Цлеар екран за вас. 458 00:20:16,000 --> 00:20:17,250 Заправо не, можете ићи напред. 459 00:20:17,250 --> 00:20:19,333 Ми ћемо га оставити, јер то је на истом програму. 460 00:20:19,333 --> 00:20:21,760 461 00:20:21,760 --> 00:20:27,380 Требало би да видимо, здраво, Ник. 462 00:20:27,380 --> 00:20:27,880 U redu. 463 00:20:27,880 --> 00:20:29,670 Дакле, ово је доста Хоопс преко скок, само 464 00:20:29,670 --> 00:20:31,620 да пише, наводи твој име, и здраво, Ник. 465 00:20:31,620 --> 00:20:37,210 Али ова једноставна идеја поруке пролазу, улазног и излазног доношења пријем, 466 00:20:37,210 --> 00:20:40,430 је управо модел ћемо имати чак и за најсложеније функције. 467 00:20:40,430 --> 00:20:41,804 Дакле, пуно ти хвала обома. 468 00:20:41,804 --> 00:20:43,730 Имамо дивну стрес Лопта за тебе. 469 00:20:43,730 --> 00:20:48,890 И хвала нашим ГетСтринг и принтф волонтери подједнако. 470 00:20:48,890 --> 00:20:49,551 Hvala vam. 471 00:20:49,551 --> 00:20:50,050 U redu. 472 00:20:50,050 --> 00:20:50,966 Хвала обома. 473 00:20:50,966 --> 00:20:56,640 474 00:20:56,640 --> 00:21:00,430 >> Тако смо причали до сада, углавном о жицама. 475 00:21:00,430 --> 00:21:06,550 И испоставило се да је Ц заправо може разуме неколико различитих врста података. 476 00:21:06,550 --> 00:21:08,860 У ствари, узмимо Погледајте ове овде. 477 00:21:08,860 --> 00:21:12,490 Дакле, Ц, и много језика, разумемо ствари које се зову карактера. 478 00:21:12,490 --> 00:21:16,852 Цхар је генерално једнобајтни, или осам бита. 479 00:21:16,852 --> 00:21:19,810 И она представља један карактер, као слово а, или капитала 480 00:21:19,810 --> 00:21:21,990 слово А, или мало слово А, или узвичник, 481 00:21:21,990 --> 00:21:25,440 или било који знак да можете уписати на тастатура, а понекад чак и више. 482 00:21:25,440 --> 00:21:26,795 Такође се догоди да видимо плута. 483 00:21:26,795 --> 00:21:31,160 Флоат је, генерално, а 32-битна вредност, или четири бајта 484 00:21:31,160 --> 00:21:33,660 јер опет, један бајт је осам бита. 485 00:21:33,660 --> 00:21:36,675 >> Дакле, пловак је флоатинг поинт вредност, нешто са децимални зарез. 486 00:21:36,675 --> 00:21:38,550 И заиста, ето шта филм је причао 487 00:21:38,550 --> 00:21:42,240 о томе када су разговарали о флоатинг Вредности Поинт, неки фиксни број битова 488 00:21:42,240 --> 00:21:43,940 који се користи за представљање прави број. 489 00:21:43,940 --> 00:21:45,740 Али ту је ствари које се зову дублу. 490 00:21:45,740 --> 00:21:47,860 Оне постоје у Јави, ако сте снимили оклопних транспортера, 491 00:21:47,860 --> 00:21:51,540 и двоструки, као што име на срећу сугерише, је дупло већи флоат. 492 00:21:51,540 --> 00:21:54,540 Још увек је прави број, то само има више бита 493 00:21:54,540 --> 00:21:58,390 са којим бити све прецизнији, или да сачувате још веће бројеве. 494 00:21:58,390 --> 00:21:58,890 инт је лако. 495 00:21:58,890 --> 00:22:00,181 Разговарали смо о томе последњи пут. 496 00:22:00,181 --> 00:22:01,160 То је само цео број. 497 00:22:01,160 --> 00:22:03,980 И генерално је 32 бита или четири бајта. 498 00:22:03,980 --> 00:22:07,850 >> И тако, ако имате, да видимо, 32 битс-- и ми смо то урадили у недељу 0, 499 00:22:07,850 --> 00:22:10,820 имао бриефли-- ако имате 32 бита, што је највећа 500 00:22:10,820 --> 00:22:13,580 Број можете представљати као цео број? 501 00:22:13,580 --> 00:22:16,080 Дај или да? 502 00:22:16,080 --> 00:22:18,380 То је као 4 милијарде долара, и то је само ако смо 503 00:22:18,380 --> 00:22:20,690 представља само позитивне бројеве. 504 00:22:20,690 --> 00:22:23,930 Ако имате 32 бита, а желите да представљају негативне бројеве и, 505 00:22:23,930 --> 00:22:27,100 Ваш домет је, у суштини, негативна 2 милијарде до 2 милијарде позитивно. 506 00:22:27,100 --> 00:22:29,250 Али, генерално, почећемо на 0 идите до 4 милијарде. 507 00:22:29,250 --> 00:22:32,400 >> Не морате да знате тачно, али То видимо, у ствари, ако само 508 00:22:32,400 --> 00:22:36,400 отвори мало калкулатор, овде. 509 00:22:36,400 --> 00:22:41,070 Ја могу да урадим 2 на 32, и то је тачно колики, 510 00:22:41,070 --> 00:22:43,190 колико вредности можете представљају, са 32 бита. 511 00:22:43,190 --> 00:22:44,442 И то је отприлике 4 милијарде. 512 00:22:44,442 --> 00:22:46,900 Дакле, ми ћемо виђати тај број на неколико различитих места. 513 00:22:46,900 --> 00:22:48,890 Али, ако је потребно дуже Бројеви од тога, 514 00:22:48,890 --> 00:22:51,670 Испоставило се да постоји нешто што се зове дуго дуго. 515 00:22:51,670 --> 00:22:54,005 И много, много је генерално 64 бита, што 516 00:22:54,005 --> 00:22:56,380 значи да је ред величине чак и већи него инт. 517 00:22:56,380 --> 00:22:59,510 >> Тако да не могу ни да изговорим највећи број који можете представљати, 518 00:22:59,510 --> 00:23:01,340 али је знатно већи. 519 00:23:01,340 --> 00:23:05,190 Сада као страну, историјски, ако инт је 32 бита, 520 00:23:05,190 --> 00:23:12,780 и дуго дуго траје 64 бита, како велика је дуг, а не дуго дуго? 521 00:23:12,780 --> 00:23:16,500 522 00:23:16,500 --> 00:23:20,330 Помислили бисте да је више од инт али можда мање него дуго дуго дуго, 523 00:23:20,330 --> 00:23:21,400 али то је заправо зависи. 524 00:23:21,400 --> 00:23:23,400 >> И тако испада да је један сувише фрустрација, 525 00:23:23,400 --> 00:23:26,830 са писање кода на одређеним системима, није да нису сви ових типова података 526 00:23:26,830 --> 00:23:28,440 имају предодређен вредности. 527 00:23:28,440 --> 00:23:29,771 Понекад је оволико бита. 528 00:23:29,771 --> 00:23:31,020 Понекад је да се многе делове. 529 00:23:31,020 --> 00:23:32,750 Тако да стварно морам да знам, понекад, који хардвер 530 00:23:32,750 --> 00:23:34,083 да сте покренули свој софтвер на. 531 00:23:34,083 --> 00:23:36,960 Срећом, други језици и друге врсте података које сада постоје, 532 00:23:36,960 --> 00:23:38,400 омогућавају да будем прецизнији. 533 00:23:38,400 --> 00:23:41,220 Па, видели смо низ, и видели смо боол, такође, 534 00:23:41,220 --> 00:23:43,960 али испоставило се оне долазе само са ЦС50 библиотеком. 535 00:23:43,960 --> 00:23:46,240 Дакле, они се не граде у Ц. Они уместо тога, 536 00:23:46,240 --> 00:23:49,340 долазе у том фајлу названом ЦС50.х, да смо на крају цу 537 00:23:49,340 --> 00:23:51,831 огулити назад слојева. 538 00:23:51,831 --> 00:23:53,830 Али за сада, то су само додатне врсте података. 539 00:23:53,830 --> 00:23:57,060 Инт је истинита или лажна, и Стринг је низ знакова, 540 00:23:57,060 --> 00:23:57,970 као реч. 541 00:23:57,970 --> 00:24:01,690 Сада иф, видели смо, има плацехолдер% с је један. 542 00:24:01,690 --> 00:24:05,430 И можда ћете моћи да сада, закључити из ових других примера, како 543 00:24:05,430 --> 00:24:07,720 можете имати плацехолдер за различите типове података. 544 00:24:07,720 --> 00:24:11,150 На пример, да претпоставите, ако вас желео да одштампате једну цхар користећи 545 00:24:11,150 --> 00:24:15,270 иф, плејсхолдер је вероватно% Ц. 546 00:24:15,270 --> 00:24:19,650 А ако желите да одштампате цео са плејсхолдер,% и. 547 00:24:19,650 --> 00:24:25,150 % ЛЛД је много, много децимална вредност, али дуго дуго, тако да мапира на то. 548 00:24:25,150 --> 00:24:28,640 А онда% Ф флоатинг Поинт Валуе или за двоструко, 549 00:24:28,640 --> 00:24:31,270 па понекад они поново користи у различитим контекстима. 550 00:24:31,270 --> 00:24:33,350 Тако ћемо видети и користити неки од њих током времена. 551 00:24:33,350 --> 00:24:36,420 И принтф и друге функције такође есцапе секвенце подржати друге ", 552 00:24:36,420 --> 00:24:38,080 а понекад, то су неопходни. 553 00:24:38,080 --> 00:24:39,770 Тако обрнута коса црта је н нова линија. 554 00:24:39,770 --> 00:24:42,886 Бацксласх Т, да ли ико Желим да се убод? 555 00:24:42,886 --> 00:24:43,760 Аудиенце Мембер: таб. 556 00:24:43,760 --> 00:24:44,551 Давид Ј Малан: таб. 557 00:24:44,551 --> 00:24:46,810 Дакле, ако желите стварно да одштампате картицу, не 558 00:24:46,810 --> 00:24:49,940 фиксни број простора, али стварни Картица карактер, не ударити, 559 00:24:49,940 --> 00:24:53,490 Картица, тастер на тастатури, генерално, ви заправо учинити инверзна коса црта т. 560 00:24:53,490 --> 00:24:57,750 Бацксласх двоструки цитат, Зашто бих икада желео да? 561 00:24:57,750 --> 00:24:58,250 Зар не? 562 00:24:58,250 --> 00:25:00,417 Зашто не могу да само укуцате двоструки цитат на мојој тастатури? 563 00:25:00,417 --> 00:25:02,124 Аудиенце Мембер: Јер, у супротном, то је 564 00:25:02,124 --> 00:25:04,830 да мислим да је крај Као за штампање [? текст. ?] 565 00:25:04,830 --> 00:25:05,420 >> Давид Ј Малан: Управо тако. 566 00:25:05,420 --> 00:25:07,211 Запамтите, са нашим принтф примери, када смо 567 00:25:07,211 --> 00:25:10,075 су пролазили у принтф у улаз, на левој страни тог улазног стринга 568 00:25:10,075 --> 00:25:12,950 и на десној страни тог улаза пролеће, наравно, био је двоструки цитат. 569 00:25:12,950 --> 00:25:16,270 Ако ваш властити улаз има дупла Цитат у средини која, 570 00:25:16,270 --> 00:25:18,920 рачунар могао потенцијално збунити, како би се, 571 00:25:18,920 --> 00:25:20,760 да ли овај двоструки цитат спадају у средини? 572 00:25:20,760 --> 00:25:22,150 Да ли припада левим један? 573 00:25:22,150 --> 00:25:23,566 Да ли припада са правом? 574 00:25:23,566 --> 00:25:26,780 И тако, ако желите да се направи супер јасно, зар не дупли Бацксласх цитат, 575 00:25:26,780 --> 00:25:30,480 тако да је побегао, да тако кажем, и није измешан за нешто друго. 576 00:25:30,480 --> 00:25:34,400 А ту је и неколико других овде, обрнута коса црта Р, сингле куотес, 0, 577 00:25:34,400 --> 00:25:36,510 да видимо током времена, као добро. 578 00:25:36,510 --> 00:25:37,760 А сада, шта је са функције? 579 00:25:37,760 --> 00:25:41,630 >> Дакле, акција које можемо узети до сада на том језику Ц, па смо видели, 580 00:25:41,630 --> 00:25:44,320 принтф, наравно, и сви од осталих на екрану, 581 00:25:44,320 --> 00:25:47,140 овде, да ћемо користити за Наравно је првих неколико недеља, само 582 00:25:47,140 --> 00:25:48,485 доћи када ЦС50 библиотеку. 583 00:25:48,485 --> 00:25:51,850 И они чине га много лакше, у Ц да заиста добити уноса корисника. 584 00:25:51,850 --> 00:25:54,200 Испоставило се да у Ц, и искрено у неколико језика, 585 00:25:54,200 --> 00:25:57,450 То је прави бол у врату да уради нешто једноставно, као брз корисника 586 00:25:57,450 --> 00:26:01,310 за тастатуром, за његовог улаза. 587 00:26:01,310 --> 00:26:03,240 И тако ове функције бити лакше. 588 00:26:03,240 --> 00:26:05,472 >> И она има грешку проверу током, 589 00:26:05,472 --> 00:26:07,180 тако да, кад вас сећам се у среду, ве 590 00:26:07,180 --> 00:26:09,740 видео, поновите, упозорење, када нисам сарађују, 591 00:26:09,740 --> 00:26:11,700 и ја откуцао реч, уместо број? 592 00:26:11,700 --> 00:26:15,402 Урадили смо тежак посао рано о да се уверите корисник сарађује. 593 00:26:15,402 --> 00:26:17,860 Али то су само тренинг Точкови који смо на крају ће, 594 00:26:17,860 --> 00:26:19,640 и брзо, скини. 595 00:26:19,640 --> 00:26:22,630 >> Тако да подсетимо, онда, хајде да бацимо поглед, 596 00:26:22,630 --> 00:26:26,620 налик смо урадили са Сцратцх, на неке канонске конструкције у Ц. 597 00:26:26,620 --> 00:26:28,580 Ово би требало, сортирање од, бити вихор турнеја, 598 00:26:28,580 --> 00:26:30,990 само да имате референцу и да сте видели ствари на први поглед. 599 00:26:30,990 --> 00:26:34,100 Али онда ћемо погледати актуелне кодирање користите неке од ових градивних блокова. 600 00:26:34,100 --> 00:26:36,710 Толико као у Сцратцх, када смо изјаве свиђа, 601 00:26:36,710 --> 00:26:41,570 каже или, чекај, у Ц, ми немамо функције, као, као што је принтф. 602 00:26:41,570 --> 00:26:45,350 >> Ако желимо да изразимо услов ин Ц, то је слично, у духу, 603 00:26:45,350 --> 00:26:47,840 на тај комад пуззле да изгледао овако у Сцратцх. 604 00:26:47,840 --> 00:26:49,850 Али, уместо тога, ми буквално само пишем, ако. 605 00:26:49,850 --> 00:26:51,830 А онда, у загради, ставимо стање, 606 00:26:51,830 --> 00:26:54,807 где је тај услов је оно што ћемо звати, опет, боолеан израз. 607 00:26:54,807 --> 00:26:56,390 И поново, ово је нека врста псеудокоду. 608 00:26:56,390 --> 00:26:58,830 А у заправо, // је коментар. 609 00:26:58,830 --> 00:27:00,550 То је само енглеске речи за себе. 610 00:27:00,550 --> 00:27:03,000 Али ово је општа структуру једног, ИФ, стање. 611 00:27:03,000 --> 00:27:05,220 Али видећемо бетон примери за тренутак. 612 00:27:05,220 --> 00:27:07,960 >> Ако желите да имају двосмерни Форк ин тхе Роад, 613 00:27:07,960 --> 00:27:11,740 налик смо урадили са нашим волонтер на Среда, можете имати, иф. 614 00:27:11,740 --> 00:27:16,020 А ако желите да имају трећи и Последњи услов, или стандардна ситуација, 615 00:27:16,020 --> 00:27:19,006 можете имати само један другог блока, тамо. 616 00:27:19,006 --> 00:27:21,880 И слично, са боолеан изразима, можете, и они заједно. 617 00:27:21,880 --> 00:27:24,296 И видели смо у среду, да то није један Амперсанд, 618 00:27:24,296 --> 00:27:28,220 то је два, за нижих нивоа разлога да смо на крају ћемо видети и играти. 619 00:27:28,220 --> 00:27:30,410 Или-инг ствари заједно је 2 вертикалне пруге. 620 00:27:30,410 --> 00:27:32,240 На америчком тастатури, ово је генерално кључ 621 00:27:32,240 --> 00:27:35,730 са Схифт тастер горе Ваш Ентер или Ретурн тастер. 622 00:27:35,730 --> 00:27:38,620 >> Затим, ту је ове ствари које ћемо користити можда једном или два пута. 623 00:27:38,620 --> 00:27:42,570 Они су функционално еквивалентна шта можете да урадите са неким, ако иф, 624 00:27:42,570 --> 00:27:44,950 иф друго, изградња, али они зову прекидач. 625 00:27:44,950 --> 00:27:48,020 Они изгледају сасвим другачије, али ћемо види у неким од нашег дистрибутивног кодекса, 626 00:27:48,020 --> 00:27:51,890 за будуће проблеме сет, највероватније, да је понекад је само лепша 627 00:27:51,890 --> 00:27:54,060 начин да се изрази једну целину гомила услова, 628 00:27:54,060 --> 00:27:57,590 без много заграда и много заграда и отиска. 629 00:27:57,590 --> 00:28:01,910 Али они нам дају више снага него што већ имамо. 630 00:28:01,910 --> 00:28:02,550 И сада петље. 631 00:28:02,550 --> 00:28:05,020 И ово, ми ћемо гледати на мало спорије. 632 00:28:05,020 --> 00:28:08,470 Али онда ћемо почети да користе ове, посебно за оне који су већ упознати. 633 00:28:08,470 --> 00:28:13,830 Ово је канонска начин, ако невероватно волшебни начин, да напишем петљу у Ц. 634 00:28:13,830 --> 00:28:15,896 >> Сада петља у Сцратцх је прилично јасно. 635 00:28:15,896 --> 00:28:17,020 Имате, форевер, блок. 636 00:28:17,020 --> 00:28:19,760 Имате, понављам, блок са само број морате да куцате. 637 00:28:19,760 --> 00:28:22,220 И са, за петљу, можете имплементирају оба ова идеја, 638 00:28:22,220 --> 00:28:23,595 али то је мало више техничке природе. 639 00:28:23,595 --> 00:28:25,994 Али искрено, то је такође релативно једноставан. 640 00:28:25,994 --> 00:28:28,160 Када знате редослед операције, буквално 641 00:28:28,160 --> 00:28:30,910 тек ће се прикључити у вредности и реци рачунар шта да ради. 642 00:28:30,910 --> 00:28:32,800 Ево један пример. 643 00:28:32,800 --> 00:28:38,040 То је петља која, сасвим Једноставно, броји од једног броја до 644 00:28:38,040 --> 00:28:40,187 кроз друго. 645 00:28:40,187 --> 00:28:42,020 И само по погледавши на то, чак и ако имате 646 00:28:42,020 --> 00:28:44,660 нема претходно искуство са овај језик, који број 647 00:28:44,660 --> 00:28:46,920 то вероватно почети да броји у? 648 00:28:46,920 --> 00:28:47,730 У реду, 0. 649 00:28:47,730 --> 00:28:50,240 И претпостављам да је то због тебе видим да постоји инт и један сам, 650 00:28:50,240 --> 00:28:51,073 што је променљива. 651 00:28:51,073 --> 00:28:52,390 То је иницијализован на 0. 652 00:28:52,390 --> 00:28:55,670 >> И касније, изгледа да Пролазимо принтф, вредност. 653 00:28:55,670 --> 00:28:58,000 А, у ствари, направио сам мали куцању овде. 654 00:28:58,000 --> 00:28:59,850 Али то је лако поправити. 655 00:28:59,850 --> 00:29:02,390 Дозволите ми да додам, ја овде. 656 00:29:02,390 --> 00:29:06,150 Сада имамо принтф биће донијела ту чувара места вредност. 657 00:29:06,150 --> 00:29:08,299 И шта ће да изброји кроз? 658 00:29:08,299 --> 00:29:08,840 ПУБЛИКА: 50. 659 00:29:08,840 --> 00:29:09,340 50. 660 00:29:09,340 --> 00:29:10,160 49. 661 00:29:10,160 --> 00:29:10,910 Давид Ј Малан: 49. 662 00:29:10,910 --> 00:29:13,340 Тако 50, на први поглед, изгледа у реду. 663 00:29:13,340 --> 00:29:16,990 Али то, испоставило се, ће бити наш услов да се задржи проверу. 664 00:29:16,990 --> 00:29:21,740 И ми ћемо једном заувек прекинути и је више није мањи од 50. 665 00:29:21,740 --> 00:29:24,920 Дакле, ово петља, насупрот томе, треба екецуте, Докле год је мање од 50. 666 00:29:24,920 --> 00:29:28,891 Али чим постане 50, или 51, или, још горе, требало би да се аутоматски зауставити. 667 00:29:28,891 --> 00:29:29,390 U redu. 668 00:29:29,390 --> 00:29:31,200 >> Дакле, шта се заправо дешава овде? 669 00:29:31,200 --> 00:29:33,160 Дакле, ово је наредба операције за петље. 670 00:29:33,160 --> 00:29:35,440 Један, имате тзв иницијализација. 671 00:29:35,440 --> 00:29:38,264 Овај жути истакао комад кода се прво извршава, 672 00:29:38,264 --> 00:29:40,930 и има такав ефекат да, пер Среда, вероватно замислити. 673 00:29:40,930 --> 00:29:45,500 То ствара променљива и и назвао продавнице у том променљиву вредност 0. 674 00:29:45,500 --> 00:29:47,560 Па сам је 0 у овом тренутку у причи. 675 00:29:47,560 --> 00:29:49,680 >> Следећа ствар која догађа у овом конструкт, 676 00:29:49,680 --> 00:29:51,540 је да је услов буде цхецкед. 677 00:29:51,540 --> 00:29:54,325 Зато сам одмах проверити, је да мање од 50? 678 00:29:54,325 --> 00:29:57,700 И наравно, одговор за сада је, свакако, да. 679 00:29:57,700 --> 00:30:00,710 Да, јер сам је 0, и то је сигурно мање од 50. 680 00:30:00,710 --> 00:30:03,866 Онда шта се дешава, да је ово линија кода буде погубљен. 681 00:30:03,866 --> 00:30:06,740 А у ствари, ако има вишеструки линија кода у тим заграда, 682 00:30:06,740 --> 00:30:09,020 сви они се извршавају једна за другом. 683 00:30:09,020 --> 00:30:11,450 >> И у снази овде, је по свему судећи, да одштампате 684 00:30:11,450 --> 00:30:15,365 Овај број, који ће бити 0, а затим 1, а затим 2. 685 00:30:15,365 --> 00:30:15,865 Ali zašto? 686 00:30:15,865 --> 00:30:17,410 Зашто то се увећава? 687 00:30:17,410 --> 00:30:20,680 Па, четврта ствар која што се дешава је да овај синтакси 688 00:30:20,680 --> 00:30:22,610 бива погубљен, после зарез. 689 00:30:22,610 --> 00:30:27,506 и ++ је скраћеница начин да се каже; узети вредност и, и додати 1 на њега; 690 00:30:27,506 --> 00:30:30,380 а онда следећи пут, додајте 1 на њега; и следећи пут, 691 00:30:30,380 --> 00:30:31,330 додаје 1 њу. 692 00:30:31,330 --> 00:30:33,640 >> Дакле, ако наставимо, шта ће се догодити 693 00:30:33,640 --> 00:30:35,890 следећи је нећу да инитиализе сам икада поново. 694 00:30:35,890 --> 00:30:38,290 Ако Наставио сам да инитиализинг и то 0, овај пример 695 00:30:38,290 --> 00:30:41,110 никад краја, јер ја бих се заглавио на 0. 696 00:30:41,110 --> 00:30:43,870 Али шта ће се догодити ис да ће тај услов бити проверени, 697 00:30:43,870 --> 00:30:54,280 линија кода ће се извршити, Тхе И ће се додавати, 698 00:30:54,280 --> 00:30:56,970 услов ће бити проверени, Код ће се извршити. 699 00:30:56,970 --> 00:30:59,790 И то се стално поново бициклизма, и опет, и опет, 700 00:30:59,790 --> 00:31:03,340 до и ++ изазива вредност од 50. 701 00:31:03,340 --> 00:31:05,870 >> Услов онда каже: је 50 мање од 50? 702 00:31:05,870 --> 00:31:09,360 Одговор је, наравно, није, и тако да је цела код зауставља извршавање. 703 00:31:09,360 --> 00:31:13,020 А ако имате више кода на екрану доле, то је оно што ће се десити. 704 00:31:13,020 --> 00:31:17,530 То ће искочити из ових заграда и наставља да одштампате више после тога. 705 00:31:17,530 --> 00:31:20,470 >> Тако шала сада, из Фоктрот, да ћете можда сада схватам. 706 00:31:20,470 --> 00:31:30,810 707 00:31:30,810 --> 00:31:31,560 Увек је смешно. 708 00:31:31,560 --> 00:31:34,110 То је као цхуцклес врста процедити, 709 00:31:34,110 --> 00:31:38,370 а онда схватиш да не би требало се смејати хумор овако. 710 00:31:38,370 --> 00:31:41,160 Али постоји неки понети овде, педагошки, превише. 711 00:31:41,160 --> 00:31:43,577 Тако испада да сам ја недостаје дио синтаксе, 712 00:31:43,577 --> 00:31:45,410 или Фоктрот фали комад синтаксе овде. 713 00:31:45,410 --> 00:31:48,076 Оно што недостаје, да смо имали у сваком другом примеру, до сада? 714 00:31:48,076 --> 00:31:51,599 715 00:31:51,599 --> 00:31:53,390 Повратак, постоји, тако то је нешто друго, 716 00:31:53,390 --> 00:31:54,440 да ћемо се вратити на пре дуго. 717 00:31:54,440 --> 00:31:55,398 Шта недостаје, иако? 718 00:31:55,398 --> 00:31:55,908 Да. 719 00:31:55,908 --> 00:31:58,150 >> Аудиенце Мембер Тхе иницијализација од [неразумљиво]. 720 00:31:58,150 --> 00:31:58,470 >> Давид Ј Малан: У реду. 721 00:31:58,470 --> 00:31:58,980 Тако да. 722 00:31:58,980 --> 00:32:03,210 Дакле, у ствари, ово је-- Па, и датотека се иницијализује 723 00:32:03,210 --> 00:32:05,470 изнад, односно, прогласио изнад. 724 00:32:05,470 --> 00:32:06,960 Дакле, ово је један од начина да се то уради. 725 00:32:06,960 --> 00:32:08,685 Али не у једној линији то је ипак важи. 726 00:32:08,685 --> 00:32:09,310 А овде? 727 00:32:09,310 --> 00:32:10,196 >> Аудиенце Мембер: Да ли је великих заграда? 728 00:32:10,196 --> 00:32:10,640 >> Давид Ј Малан: Да. 729 00:32:10,640 --> 00:32:12,080 Тако великих заграда недостаје. 730 00:32:12,080 --> 00:32:15,495 Али ово код, мислим, да њихов кредит, заправо, синтаксически важећа. 731 00:32:15,495 --> 00:32:17,610 Испоставило се, нећеш Потребни су витичасте 732 00:32:17,610 --> 00:32:21,691 Ако имате само једну линију кода који желите да извршите унутар петље. 733 00:32:21,691 --> 00:32:24,190 Сада смо увек у класи и све наше дистрибутивне кода, 734 00:32:24,190 --> 00:32:26,730 укључују витичасте у сваком случају, само због јасноће екипе. 735 00:32:26,730 --> 00:32:29,010 Али схватите да у уџбеницима и онлине примери, 736 00:32:29,010 --> 00:32:31,300 можете врло добро видети коврџава брацес недостаје понекад. 737 00:32:31,300 --> 00:32:34,850 И то је у реду, ако је то што су увучена и намењен 738 00:32:34,850 --> 00:32:38,650 је само једна линија кода, а не више линија кода, потенцијално. 739 00:32:38,650 --> 00:32:39,150 U redu. 740 00:32:39,150 --> 00:32:44,500 Дакле, у вези са питањем непрецизност, је питање преливања, 741 00:32:44,500 --> 00:32:48,560 у смислу да, слично, не цели бројеви имају ограничења на њих 742 00:32:48,560 --> 00:32:49,970 као и флоатинг поинт вредности? 743 00:32:49,970 --> 00:32:53,120 У свету са покретним зарезом вредности, можемо бити тако прецизан само 744 00:32:53,120 --> 00:32:55,710 након чега, понекад лоше ствари може да се деси, 745 00:32:55,710 --> 00:32:57,760 и наши програми могу бити луд и грешке. 746 00:32:57,760 --> 00:33:00,050 Сада чак и са целих бројева, можете наиђете на проблеме. 747 00:33:00,050 --> 00:33:03,820 Сада цео број не поседује децимална тачка или бројеве након њега. 748 00:33:03,820 --> 00:33:07,130 То је само природан број, обично. 749 00:33:07,130 --> 00:33:09,430 Шта може да крене наопако са инт? 750 00:33:09,430 --> 00:33:12,210 Ако сам користећи инт у Грофе, шта би могло да крене наопако? 751 00:33:12,210 --> 00:33:13,230 Изгледа много једноставније. 752 00:33:13,230 --> 00:33:13,873 Да. 753 00:33:13,873 --> 00:33:16,240 >> Аудиенце Мембер: Ако је Број добија [неразумљиво] 754 00:33:16,240 --> 00:33:17,073 >> Давид Ј Малан: Да. 755 00:33:17,073 --> 00:33:20,820 Шта ако рачунаш тако високо, да вас Не могу да изразе ту заиста велики број. 756 00:33:20,820 --> 00:33:21,320 Зар не? 757 00:33:21,320 --> 00:33:23,910 У неком тренутку, идеш прећи границе 758 00:33:23,910 --> 00:33:27,077 од 32-битне вредности или 64-битни вредности. 759 00:33:27,077 --> 00:33:29,410 Сада опет, нисам сигуран како да изрекне 64-битну вредност, 760 00:33:29,410 --> 00:33:32,230 али знам са 32-битни цео број, највећа вредност може бити, 761 00:33:32,230 --> 00:33:35,490 ако је само позитивно вредности, је око 4 милијарде. 762 00:33:35,490 --> 00:33:39,000 Дакле, ако покушам да бројим до 5 милијарди, Нешто ће се десити. 763 00:33:39,000 --> 00:33:41,050 Али хајде да видимо шта, у ствари, може да се деси. 764 00:33:41,050 --> 00:33:44,570 У свету цео број прелив, где сте, у извесном смислу, 765 00:33:44,570 --> 00:33:48,270 потопити у својству цео, шта се може десити? 766 00:33:48,270 --> 00:33:51,190 >> Дакле, овде је бинарни број, То је подсећа на 0. 767 00:33:51,190 --> 00:33:54,630 То је све 1, и симболе тамо су овлашћења 2, 768 00:33:54,630 --> 00:33:55,980 тако да је ово бинарни. 769 00:33:55,980 --> 00:33:59,416 Дакле, то су 8, 1 бита на екрану. 770 00:33:59,416 --> 00:34:01,290 А ако се сећате или брзо математику, 771 00:34:01,290 --> 00:34:06,074 какву вредност се представља овде са ових осам бита 1? 772 00:34:06,074 --> 00:34:06,950 255. 773 00:34:06,950 --> 00:34:09,260 А чак и ако нису били сасвим сигурни од математике, ти то можеш напоље. 774 00:34:09,260 --> 00:34:10,550 Или си могао некако разума кроз њега, 775 00:34:10,550 --> 00:34:12,633 чекај мало, ако сам представља 8-битну вредност, 776 00:34:12,633 --> 00:34:17,750 а ја имам 256 могућих вредности, али је прва од којих је 0, 777 00:34:17,750 --> 00:34:19,909 Ја само знам да је Највећа ће бити 255, 778 00:34:19,909 --> 00:34:21,510 и то је оно што ова може бити. 779 00:34:21,510 --> 00:34:26,060 >> Дакле, претпостављам да покушате да додате 1 до ове вредности. 780 00:34:26,060 --> 00:34:28,750 Шта бисте ви урадили у разреду школа при додавању 1, и то 781 00:34:28,750 --> 00:34:31,139 заиста не уклапа, јер морате да носите 1? 782 00:34:31,139 --> 00:34:34,380 Шта је ово број иде да постане када додате 1? 783 00:34:34,380 --> 00:34:37,030 То ће постати 0. 784 00:34:37,030 --> 00:34:37,530 Зар не? 785 00:34:37,530 --> 00:34:41,139 Јер ако сте имали више битс-- и ја ћу покушати да, некако, унесите га овде- 786 00:34:41,139 --> 00:34:44,710 ако смо имали више бита, што смо могао овде додати 1, 787 00:34:44,710 --> 00:34:47,370 и онда бисмо ово. 788 00:34:47,370 --> 00:34:48,739 Упс. 789 00:34:48,739 --> 00:34:52,250 Имали бисмо 1 бит скроз овамо. 790 00:34:52,250 --> 00:34:55,530 >> Али, ако је ово коначна вредност, то је само 8 бита, 791 00:34:55,530 --> 00:34:57,480 и то је предодређен од стране компјутера, 792 00:34:57,480 --> 00:34:59,370 да је 1 ефективно не постоји. 793 00:34:59,370 --> 00:35:00,980 Некако пада са литице. 794 00:35:00,980 --> 00:35:05,480 И тако ако додате 1 до 255, што вредност ви очигледно добити? 795 00:35:05,480 --> 00:35:06,180 0. 796 00:35:06,180 --> 00:35:09,700 И тако бројевима случајно, а можда ненамерно, 797 00:35:09,700 --> 00:35:12,040 завршити паковање око овако. 798 00:35:12,040 --> 00:35:14,079 Дакле, шта може бити импликације овога? 799 00:35:14,079 --> 00:35:15,620 Па, постоји неколико различитих ствари. 800 00:35:15,620 --> 00:35:18,751 Дакле, један, то не завршим као 0, ненамерно, 801 00:35:18,751 --> 00:35:20,750 али можете некако види, чак и у стварном свету, 802 00:35:20,750 --> 00:35:23,416 за боље или на горе, манифестације ове идеје границе. 803 00:35:23,416 --> 00:35:26,630 На пример, неко од вас који су икада играли ЛЕГО Стар Варс, 804 00:35:26,630 --> 00:35:28,880 да ли неко случајно знате максималан број кованица 805 00:35:28,880 --> 00:35:32,032 можете сакупити на ЛЕГО Стар Варс? 806 00:35:32,032 --> 00:35:35,640 Погоди на основу данашњих водећих питања. 807 00:35:35,640 --> 00:35:39,140 То је већи од 256 или 255. 808 00:35:39,140 --> 00:35:40,330 То је 4 милијарде. 809 00:35:40,330 --> 00:35:42,080 Тако испада, и има неки људи 810 00:35:42,080 --> 00:35:46,080 неке гооглинг потврдио синож су добили 4 милијарде златнике, 811 00:35:46,080 --> 00:35:47,730 или шта све не, у ЛЕГО Стар Варс. 812 00:35:47,730 --> 00:35:49,860 Иако наизглед, нема начин да превари игру, 813 00:35:49,860 --> 00:35:53,222 ту је буг или карактеристика, који вам омогућава само акумулирају много и много поена. 814 00:35:53,222 --> 00:35:54,930 Али највећи могући вредност, према 815 00:35:54,930 --> 00:35:58,360 на овај сцреен схот на некога кога сам наћи на интернету, заиста, 4 милијарде. 816 00:35:58,360 --> 00:35:59,240 >> А зашто је то тако? 817 00:35:59,240 --> 00:36:03,040 Управо је 4 милијарде, Вероватно зато што је неко одлучио, 818 00:36:03,040 --> 00:36:05,500 који је писао ову игру, да раде 4 милијарде долара, 819 00:36:05,500 --> 00:36:07,340 нешто, нешто, нешто, као вредност Ставио сам горе 820 00:36:07,340 --> 00:36:10,256 са дигитроном раније, али то је само мало чистач за људе 821 00:36:10,256 --> 00:36:12,610 да кажем максимални број од цоинс-- или нитнама, 822 00:36:12,610 --> 00:36:14,860 како они називају томе-- то ти можете сакупити је 4 милијарде. 823 00:36:14,860 --> 00:36:16,290 И тако, зашто је ово? 824 00:36:16,290 --> 00:36:20,310 Како је ЛЕГО игра имплементацију цоунтер 825 00:36:20,310 --> 00:36:23,420 који праћењу број кованица имате? 826 00:36:23,420 --> 00:36:24,266 Они користе шта? 827 00:36:24,266 --> 00:36:26,390 Аудиенце Мембер: Зауставља рацунам после 4 милијарде. 828 00:36:26,390 --> 00:36:27,720 Давид Ј Малан: Зауставља рацунам после 4 милијарде долара, 829 00:36:27,720 --> 00:36:29,525 што значи да можете закључити, као програмер, 830 00:36:29,525 --> 00:36:31,960 да вероватно су коришћењем 32-битни цео број. 831 00:36:31,960 --> 00:36:35,380 Као програмер буквално откуцани, ИНТ, у свом коду, 832 00:36:35,380 --> 00:36:39,620 и то је тип променљиве које они користе за чување нечије кода. 833 00:36:39,620 --> 00:36:42,230 Дакле, нема друге манифестације ових врста граница. 834 00:36:42,230 --> 00:36:45,063 >> Дакле, нисам играо ову игру-- и ја сам читао о историји 835 00:36:45,063 --> 00:36:48,470 да потврди као муцх--, али у Оригинална верзија цивилизације, где је 836 00:36:48,470 --> 00:36:53,240 ви очигледно интеракцију са сваким друго и може да ратује или имају мир, 837 00:36:53,240 --> 00:36:56,590 Ганди је требало да буде један од најмирнији ликови, као што сам 838 00:36:56,590 --> 00:36:59,280 разумем, у првом верзија цивилизације. 839 00:36:59,280 --> 00:37:03,250 И у ствари, на скали од 1 до 10, његова агресивност је био само 1. 840 00:37:03,250 --> 00:37:05,620 Дакле, увек тако благо агресиван, очигледно. 841 00:37:05,620 --> 00:37:11,590 >> Али у неком тренутку, очигледно могу инсталирати демократију у својој географији. 842 00:37:11,590 --> 00:37:14,900 А ако инсталирате демократију у својој верзији игре, 843 00:37:14,900 --> 00:37:17,320 онда ваш ниво агресије иде доле. 844 00:37:17,320 --> 00:37:18,460 То је добра ствар. 845 00:37:18,460 --> 00:37:20,890 Људи су мирније по свему судећи, у тој ситуацији. 846 00:37:20,890 --> 00:37:23,190 Али очигледно, неко јесте немају, ако, стање 847 00:37:23,190 --> 00:37:24,780 у оригиналној верзији кода. 848 00:37:24,780 --> 00:37:30,650 >> Дакле, Ганди агресија ниво је од поситиве 1, минус 2, у негативан 1, 849 00:37:30,650 --> 00:37:33,840 али игра не разуме негативне бројеве. 850 00:37:33,840 --> 00:37:38,680 Дакле, оно што се десило је Гандхијево агресија Ниво ишао од 1, до 0, у негативан 1, 851 00:37:38,680 --> 00:37:40,900 који су имали ефекат паковање около да буде 852 00:37:40,900 --> 00:37:44,690 најагресивнији карактер у игри, у вредности од 255, 853 00:37:44,690 --> 00:37:46,630 на скали од 1 до 10. 854 00:37:46,630 --> 00:37:49,887 И од тада, дошло је до више инкарнација ове игре, 855 00:37:49,887 --> 00:37:51,720 и они су га чува као нека врста ускршње јаје, 856 00:37:51,720 --> 00:37:53,870 да Ганди је очигледно тако ужасно агресиван. 857 00:37:53,870 --> 00:37:56,740 Али то је био резултат су врло једноставно програмирање грешка 858 00:37:56,740 --> 00:37:58,630 У том врло раној верзији игре. 859 00:37:58,630 --> 00:38:02,860 >> Сада више узнемирава више Недавно је Боинг 787 860 00:38:02,860 --> 00:38:05,720 је документован као неко ко има буба, није врста уређаја 861 00:38:05,720 --> 00:38:07,340 сте посебно желе да имају грешку. 862 00:38:07,340 --> 00:38:10,130 А симптоми, који ћу да прочитам овде, из чланка на мрежи, 863 00:38:10,130 --> 00:38:13,840 је то, модел 787 авиона која је континуирано поверед 864 00:38:13,840 --> 00:38:18,030 за 248 дана можете изгубити све наизменичне струје, АЦ, 865 00:38:18,030 --> 00:38:20,850 електрична енергија, због контролни агрегата, 866 00:38:20,850 --> 00:38:23,330 ГЦУс, истовремено улазећи у Фаил-сафе моде. 867 00:38:23,330 --> 00:38:26,790 Дакле, ово је упозорење издато када је открио овај проблем. 868 00:38:26,790 --> 00:38:28,750 Ово стање је узроковано софтверским цоунтер, 869 00:38:28,750 --> 00:38:32,230 интерна на ГЦУс, тако цео или променљива, 870 00:38:32,230 --> 00:38:36,850 да ће преплавити после 248 дана непрекидног напајања. 871 00:38:36,850 --> 00:38:40,350 Боинг у процесу развијање ГЦУ надоградњу софтвера који 872 00:38:40,350 --> 00:38:42,350 ће исправи небезбедно стање. 873 00:38:42,350 --> 00:38:44,226 >> Толико попут ракете Сценарио, где 874 00:38:44,226 --> 00:38:46,850 они су имали неку врсту променљиве да је бројање, а бројање, 875 00:38:46,850 --> 00:38:50,720 и бројање, али постепено прелива границе своје способности, 876 00:38:50,720 --> 00:38:54,890 слично је урадио проклети авион имају променљиву прекорачење 877 00:38:54,890 --> 00:38:56,410 након довољно времена трчања. 878 00:38:56,410 --> 00:38:59,240 И тако је и језик-у-образ начин рада око овог питања 879 00:38:59,240 --> 00:39:04,400 је заиста, рестарт, ваш авион сваки 247 дана, тако да је меморија буде избрисана 880 00:39:04,400 --> 00:39:06,100 и променљива враћа на 0. 881 00:39:06,100 --> 00:39:09,410 Али схватите, ово је веома Велики инкарнација софтвера, 882 00:39:09,410 --> 00:39:14,070 а посебно како смо чули за Аппле-ов оперативним системима иде у аутомобиле, 883 00:39:14,070 --> 00:39:18,030 и само-вожње аутомобила из Гоогле-а, и било који број инкарнација софтвера 884 00:39:18,030 --> 00:39:21,000 у нашим свакодневним животима, телевизорима и сатови, и још много тога, 885 00:39:21,000 --> 00:39:24,950 схватите су окружени софтвера, све што је написао нас људи. 886 00:39:24,950 --> 00:39:28,150 >> И као што ћемо сви ускоро открити, то је врло лако и врло типично 887 00:39:28,150 --> 00:39:30,250 да праве грешке приликом писања софтвера. 888 00:39:30,250 --> 00:39:32,745 А ако их не ухвате, неке лоше ствари се дешавају. 889 00:39:32,745 --> 00:39:35,400 Сада понекад, неки смешне ствари може да се деси, 890 00:39:35,400 --> 00:39:38,280 или бар понекад знам да очекујемо неку баднесс. 891 00:39:38,280 --> 00:39:41,550 Дакле 0 подељена 0, из разреда школа, је генерално лоша ствар. 892 00:39:41,550 --> 00:39:43,050 То је недефинисан. 893 00:39:43,050 --> 00:39:46,440 И испоставило оут-- па да видимо да ли мој микрофон можете одабрати ово их-- да је Аппле 894 00:39:46,440 --> 00:39:47,790 имали мало забаве са овим недавно. 895 00:39:47,790 --> 00:39:48,850 Дакле, имам иПхоне овде. 896 00:39:48,850 --> 00:39:54,160 Ја ћу да разговарам са Сири и питати је да ми дају одговор на 0 подељен 0. 897 00:39:54,160 --> 00:39:55,850 Шта је 0 подељено са 0? 898 00:39:55,850 --> 00:39:59,350 899 00:39:59,350 --> 00:40:02,230 >> Сири: Замислите да имате 0 колачиће, а ви их поделити равномерно 900 00:40:02,230 --> 00:40:03,540 међу 0 пријатељима. 901 00:40:03,540 --> 00:40:05,810 Колико колачиће се свака особа добити? 902 00:40:05,810 --> 00:40:06,350 Видите? 903 00:40:06,350 --> 00:40:07,660 То нема смисла. 904 00:40:07,660 --> 00:40:10,540 И Цоокие Монстер је тужно да не постоје кекс. 905 00:40:10,540 --> 00:40:13,987 А ти си тужан што немате пријатеље. 906 00:40:13,987 --> 00:40:15,570 Давид Ј Малан: Некако је одвратан. 907 00:40:15,570 --> 00:40:17,550 Дакле, то је оно што је управо тамо речено. 908 00:40:17,550 --> 00:40:21,380 То је неодређена, није дефинисана, И заиста, многи програмски језици 909 00:40:21,380 --> 00:40:24,950 или, заиста, компајлери ће детектује када се, у програму, 910 00:40:24,950 --> 00:40:27,050 покушати да подели 0 од 0. 911 00:40:27,050 --> 00:40:29,830 Више забаве од овог Иако, је да очигледно, Цоокие Монстер 912 00:40:29,830 --> 00:40:31,270 је он Твиттер ових дана. 913 00:40:31,270 --> 00:40:37,610 А он је одговорио да то, са овим, што је апсолутно неодољив. 914 00:40:37,610 --> 00:40:40,110 Али хајде да погледамо на брзину пар других конструкција, 915 00:40:40,110 --> 00:40:43,459 а затим ставити мало овога Код употребе, на добар начин. 916 00:40:43,459 --> 00:40:45,250 Тако испада, осим за петље, ту је 917 00:40:45,250 --> 00:40:49,174 нешто што се зове вхиле петљу да изгледа другачије и спроводи 918 00:40:49,174 --> 00:40:51,590 мало дифферентли-- и смо на крају ћемо видети екамплес-- 919 00:40:51,590 --> 00:40:53,500 али у неком смислу, то је једноставније јер њега 920 00:40:53,500 --> 00:40:56,670 не дозвољавају да се покрене и упдате у оквиру граница петље. 921 00:40:56,670 --> 00:40:57,794 Још увек можете да га спроведе. 922 00:40:57,794 --> 00:41:01,219 Дакле, можете да урадите тачно исте ствари са вхиле петље, као и фор петљи, 923 00:41:01,219 --> 00:41:03,260 али ваш синтакса, ултиматели-- као што смо на крају цу 924 00:41:03,260 --> 00:41:04,551 видео-- ће бити другачије. 925 00:41:04,551 --> 00:41:07,450 Постоји чак и радити док петља, која је заправо мало другачија, 926 00:41:07,450 --> 00:41:09,640 У том док је за петљу и док петља увек 927 00:41:09,640 --> 00:41:13,005 проверите своје стање прво, ако сте прочитали ову ствар врха до дна, 928 00:41:13,005 --> 00:41:16,440 некако изгледа као да ће цхецк То је стање прошле, јер је то 929 00:41:16,440 --> 00:41:17,910 заиста последња линија кода. 930 00:41:17,910 --> 00:41:20,580 И заиста, то ће бити корисно у неким програмима који пишемо, 931 00:41:20,580 --> 00:41:23,746 Ако желите да слепо уради нешто и на крају проверите стање. 932 00:41:23,746 --> 00:41:25,205 То није нужно лоша ствар. 933 00:41:25,205 --> 00:41:27,912 Ако желимо променљиве, можемо да урадимо је у неколико различитих начина. 934 00:41:27,912 --> 00:41:30,290 И видели смо у Фоктрот цртани филм, један од начина да се то уради, 935 00:41:30,290 --> 00:41:33,400 где сте прогласи своју променљиву, као инт цоунтер зарезом, 936 00:41:33,400 --> 00:41:36,570 а затим латер-- можда следећи линија, можда 10 линија латер-- 937 00:41:36,570 --> 00:41:37,800 ви заправо покрене. 938 00:41:37,800 --> 00:41:42,230 Дакле, те 2 линија кода прогласи променљиву типа инт 939 00:41:42,230 --> 00:41:44,930 и назовите га бројач, тако да даје ме довољно бита да држи инт. 940 00:41:44,930 --> 00:41:48,230 И на крају, ставља вредност 0 у ту променљиву. 941 00:41:48,230 --> 00:41:51,250 Она уређује је у 0, а 1 образац, да знамо од прошле недеље, 942 00:41:51,250 --> 00:41:53,260 представља број знамо као 0. 943 00:41:53,260 --> 00:41:56,920 Или искрено, можете да урадите толико више језгровито, само овако. 944 00:41:56,920 --> 00:41:59,390 >> Сада такође имају Способност да се позове функција. 945 00:41:59,390 --> 00:42:03,070 И, у ствари, овде је линија 2 Програм, или извод од тога, 946 00:42:03,070 --> 00:42:06,157 који нам омогућава да ствари написати неки код који 947 00:42:06,157 --> 00:42:08,990 добија низ од усер-- много као наш добровољац тренутак аго-- 948 00:42:08,990 --> 00:42:11,320 складиштење резултат у променљива се зове име, 949 00:42:11,320 --> 00:42:15,470 и онда-- слично са нашим волонтерима са принтф-- отисака од тих вредности 950 00:42:15,470 --> 00:42:19,180 доношењем два аргумената, стринг, следи варијаблом 951 00:42:19,180 --> 00:42:20,781 назива, име, себе. 952 00:42:20,781 --> 00:42:23,155 Дакле, хајде да погледамо, пре враћамо се Марио дођем тамо, 953 00:42:23,155 --> 00:42:26,010 на неколико сада, примера ово. 954 00:42:26,010 --> 00:42:30,537 >> Ја идем напред и отворен до, рецимо, функција-0.ц. 955 00:42:30,537 --> 00:42:33,120 И као и увек, ово код је доступно на сајту току је, 956 00:42:33,120 --> 00:42:35,660 тако да можете играти заједно у кући и погледате касније. 957 00:42:35,660 --> 00:42:40,400 Али овде је програм у то суштина, од реда 17 до 22. 958 00:42:40,400 --> 00:42:43,270 Главни програм је где је Програм увек ће почети. 959 00:42:43,270 --> 00:42:46,980 Овај програм, по свему судећи, неће да одштампате своје име, дебело црево. 960 00:42:46,980 --> 00:42:50,320 То је онда ће позвати ГетСтринг, као што смо урадили са нашим волонтерима. 961 00:42:50,320 --> 00:42:53,365 А онда, ово је интересантно, да ће позвати ПринтНаме. 962 00:42:53,365 --> 00:42:56,490 Испоставило се, сво ово време, тамо Чини се да је функција названа ПринтНаме. 963 00:42:56,490 --> 00:42:57,614 То штампа нечије име. 964 00:42:57,614 --> 00:43:01,210 Нисмо морате да користите принтф од прошла година, ту је ПринтНаме. 965 00:43:01,210 --> 00:43:03,500 >> Али то је погрешно јер ПринтНаме не 966 00:43:03,500 --> 00:43:06,760 долазе са Ц људи нису измислити га пре неких 40 или 50 година, 967 00:43:06,760 --> 00:43:07,990 Јесам, уместо тога. 968 00:43:07,990 --> 00:43:10,330 А у ствари, ако идите доле даљег обавештења, 969 00:43:10,330 --> 00:43:14,200 како могу писати ми овн функције у Ц. смо на крају цу 970 00:43:14,200 --> 00:43:16,319 објаснити зашто стално говоре, празнина, на неколико места, 971 00:43:16,319 --> 00:43:18,110 али данас, хајдемо само погледајте име. 972 00:43:18,110 --> 00:43:20,905 >> Он лине 24, ако желите да направите сопствену функцију, 973 00:43:20,905 --> 00:43:22,780 ви буквално написати назив функције. 974 00:43:22,780 --> 00:43:24,340 Изабрао сам ПринтНаме. 975 00:43:24,340 --> 00:43:26,159 У загради, ви онда одредити које врсте 976 00:43:26,159 --> 00:43:28,450 улаза, и колико си да ова функција да предузме. 977 00:43:28,450 --> 00:43:31,906 У овом случају, желим да 1 променљива назива, име, 978 00:43:31,906 --> 00:43:34,030 и да ће то бити Тип, ниска, тако да ће 979 00:43:34,030 --> 00:43:35,780 да постоји неки редослед карактера. 980 00:43:35,780 --> 00:43:39,170 А онда, ово програм-- слично као иу Сцратцх, 981 00:43:39,170 --> 00:43:42,590 можете имати прилагођене загонетку пиецес-- ће имати овог обичаја понашање. 982 00:43:42,590 --> 00:43:46,760 То ће позвати принтф пролази, здраво, чувар места, 983 00:43:46,760 --> 00:43:49,110 а онда ће се прикључити како год корисник звао. 984 00:43:49,110 --> 00:43:51,450 >> Дакле, ово је пример онога што компјутерски научник би 985 00:43:51,450 --> 00:43:55,090 Позив апстракција или функционална разлагање, које су само 986 00:43:55,090 --> 00:43:58,110 фанци начина на кажем-- је ако волите ову идеју на високом нивоу, 987 00:43:58,110 --> 00:44:01,569 као да желим да функционалност штампа нечије име, апсолутно си 988 00:44:01,569 --> 00:44:04,360 могу буквално писати принтф а затим пролазе у аргументима које желите, 989 00:44:04,360 --> 00:44:07,340 а програм ће радити, јер има од среде. 990 00:44:07,340 --> 00:44:10,510 Али можете почети да издвоје у гостима појам штампања име. 991 00:44:10,510 --> 00:44:13,270 Можете му дати име, као ПринтНаме, и ово 992 00:44:13,270 --> 00:44:15,280 је ова идеја о слојеви од недеље 0. 993 00:44:15,280 --> 00:44:19,910 >> Од тада, ја и не морам да знам или брига колико ПринтНаме се спроводи. 994 00:44:19,910 --> 00:44:22,470 Да, то иф користи, можда не, ко зна шта користи? 995 00:44:22,470 --> 00:44:23,410 Koga briga? 996 00:44:23,410 --> 00:44:26,034 Сада говорим овде, уместо овде. 997 00:44:26,034 --> 00:44:28,700 И заиста, као што наши програми се напредније и софистицираније, 998 00:44:28,700 --> 00:44:32,550 ћемо задржати узимање здраво за готово да постоји нижи ниво комада слагалице. 999 00:44:32,550 --> 00:44:34,780 Зато што их је написао или неко други урадио, тако 1000 00:44:34,780 --> 00:44:36,910 да онда можемо градити на њих. 1001 00:44:36,910 --> 00:44:39,430 Хајде да погледамо ово варијанта, једну функцију. 1002 00:44:39,430 --> 00:44:41,780 >> Дакле, ово је мало више напредни, али се испоставило 1003 00:44:41,780 --> 00:44:44,570 да у библиотеци ЦС50 је, постоји само Тоноване функција. 1004 00:44:44,570 --> 00:44:47,720 Нисмо мислили, пре много година, да имплементирати функцију ГетПоситивеИнт. 1005 00:44:47,720 --> 00:44:50,970 И то је мало неугодно јер ако момци су писање програма назначено тиме 1006 00:44:50,970 --> 00:44:53,325 желите да добијете позитиван цео број од корисника, 1007 00:44:53,325 --> 00:44:55,010 апсолутно можете користити Тоноване. 1008 00:44:55,010 --> 00:44:57,840 И апсолутно да проверите са стање и можда петља 1009 00:44:57,840 --> 00:45:00,320 ако је инт је већи од 0 и викати на корисника 1010 00:45:00,320 --> 00:45:02,699 ако он или она не даје сте позитиван број. 1011 00:45:02,699 --> 00:45:04,740 Али хајде да градимо ово Буилдинг Блоцк себе, А, 1012 00:45:04,740 --> 00:45:06,555 обичај Огреби комад, ако хоћете. 1013 00:45:06,555 --> 00:45:08,680 Ја ћу имати програм овде да коначно сам 1014 00:45:08,680 --> 00:45:11,780 Желим да будем у стању да позовем ГетПоситивеИнт, а ја желим да будем 1015 00:45:11,780 --> 00:45:14,200 у стању да одштампате год да инт је. 1016 00:45:14,200 --> 00:45:16,240 Али ово се захвата одмах. 1017 00:45:16,240 --> 00:45:19,050 Управо је дат висок ниво име које говори оно што ради, 1018 00:45:19,050 --> 00:45:21,780 што је дивно, јер је то врло интуитивно сада да прочитам. 1019 00:45:21,780 --> 00:45:24,710 И ако ме брига шта је испод је хауба, пусти ме спустите. 1020 00:45:24,710 --> 00:45:27,140 И то је мало застрашујуће на први поглед, а посебно 1021 00:45:27,140 --> 00:45:29,470 Ако је ово ваша прва програма, али хајде да погледамо. 1022 00:45:29,470 --> 00:45:32,860 >> Ја не говорим, празнина, јер се испоставило функције, 1023 00:45:32,860 --> 00:45:34,777 налик ГетСтринг, могу вратити вредност за мене. 1024 00:45:34,777 --> 00:45:36,610 Они не само за штампање на екран, 1025 00:45:36,610 --> 00:45:38,410 они заиста могу да предају ми нешто назад. 1026 00:45:38,410 --> 00:45:41,535 И док је пре ПринтНаме, Нисам треба вратити ништа. 1027 00:45:41,535 --> 00:45:44,160 Требало ми је споредни ефекат нешто приказује на екрану, 1028 00:45:44,160 --> 00:45:46,570 али нисам потребан човека да ми предате нешто заузврат. 1029 00:45:46,570 --> 00:45:48,840 Ево, са ГетПоситивеИнт, као и са Тоноване, 1030 00:45:48,840 --> 00:45:50,640 Желим да се преда нешто заузврат. 1031 00:45:50,640 --> 00:45:53,220 Дакле, ја кажем не, празнина, он лине 23, али инт 1032 00:45:53,220 --> 00:45:55,570 који каже, ова функција да пишем, 1033 00:45:55,570 --> 00:45:58,860 зове ГетПоситивеИнт ће преда ме цео број, није ништа, 1034 00:45:58,860 --> 00:45:59,890 Не празнина. 1035 00:45:59,890 --> 00:46:03,280 >> У међувремену, то ће да траје улаза, тако да сам, на неки начин, то обрнута. 1036 00:46:03,280 --> 00:46:08,280 Не дајем никакве ГетПоситивеИнт улаз, желим да ми даш свој излаз. 1037 00:46:08,280 --> 00:46:09,800 И шта се онда дешава сада? 1038 00:46:09,800 --> 00:46:11,640 Ево како ја могу прогласити променљиву. 1039 00:46:11,640 --> 00:46:15,090 Ја сам то урадио ван петље, из разлога што на крају ћете видети, 1040 00:46:15,090 --> 00:46:17,700 али то само даје ми 32 бита зове, н 1041 00:46:17,700 --> 00:46:20,952 и ја сам пре одређивања им да сачувате цео. 1042 00:46:20,952 --> 00:46:23,660 И овде је, зар док конструкт, и то је разлог зашто је корисно. 1043 00:46:23,660 --> 00:46:26,700 Буквално ово, док је н је мања од 1. 1044 00:46:26,700 --> 00:46:28,030 Дакле, хајде да видимо шта се дешава. 1045 00:46:28,030 --> 00:46:30,760 Ја принт, молим вас дај ми позитиван инт. 1046 00:46:30,760 --> 00:46:34,300 Онда добити инт, користећи ЦС50 је функционишу и чувана у н. 1047 00:46:34,300 --> 00:46:38,990 >> И онда, шта линија кода вероватно бива следећа извршити, логично? 1048 00:46:38,990 --> 00:46:41,890 Који линија број? 1049 00:46:41,890 --> 00:46:42,571 Да, тако 31. 1050 00:46:42,571 --> 00:46:45,320 Ти не би знао ово док не Речено или некако га закључити, 1051 00:46:45,320 --> 00:46:45,986 али то је истина. 1052 00:46:45,986 --> 00:46:48,280 То иде од врха до дна и онда стално понавља. 1053 00:46:48,280 --> 00:46:55,840 Дакле, ако сам откуцао у рецимо, броју негативан 1, је н мања него негативне 1? 1054 00:46:55,840 --> 00:46:56,340 Да. 1055 00:46:56,340 --> 00:46:58,470 Пошто негативан 1 је мања од 1. 1056 00:46:58,470 --> 00:46:59,510 Шта треба да се деси? 1057 00:46:59,510 --> 00:47:03,260 Ја ћу да урадим ово док је н је мање од 1, 1058 00:47:03,260 --> 00:47:05,760 па ћу да се вратим на линији 28. 1059 00:47:05,760 --> 00:47:09,530 >> И сваки времена-- готово па да покренете ово-- маке функција 1 то саставити, 1060 00:47:09,530 --> 00:47:11,340 а сада дот сласх функцију 1. 1061 00:47:11,340 --> 00:47:14,280 Ако куцам негативну 1, то је Наставићу да виче на мене 1062 00:47:14,280 --> 00:47:17,530 док не сарађују јер свака мојих улаза је мања од 1 1063 00:47:17,530 --> 00:47:20,070 и ако је док је мање од 1, Ја ћу да наставим да радим ово. 1064 00:47:20,070 --> 00:47:24,240 Ако сам коначно му дати број као 50, срећу, каже, хвала за 50. 1065 00:47:24,240 --> 00:47:24,970 Зашто? 1066 00:47:24,970 --> 00:47:30,640 Јер, чим н није мањи од 1, престанем се заглави у петљи, 1067 00:47:30,640 --> 00:47:33,840 и ова нова кључна реч данас, повратак, буквално ради. 1068 00:47:33,840 --> 00:47:36,800 Тако да сам управо спроводи, у разум, еквивалент ГетСтринг, 1069 00:47:36,800 --> 00:47:40,590 где ја предати назад у ко ме користи, неку вредност. 1070 00:47:40,590 --> 00:47:42,820 То не мора да буде стринг, то је инт. 1071 00:47:42,820 --> 00:47:44,990 Тако једноставан, брз пример, али смо ускоро 1072 00:47:44,990 --> 00:47:47,930 видимо неке софистицираније верзије и даље. 1073 00:47:47,930 --> 00:47:53,882 У ствари, хајде да погледамо нумерички он, који се зове ретурн.ц. 1074 00:47:53,882 --> 00:47:55,590 А ово је заиста мало једноставније. 1075 00:47:55,590 --> 00:47:59,010 Дакле, сврха овог програма у живот-- хајде да састави и покрените га, 1076 00:47:59,010 --> 00:48:03,090 тако да повратак, дот Сласх, ретурн-- Обавештење 1077 00:48:03,090 --> 00:48:05,530 програм једноставно кубов вредност 2. 1078 00:48:05,530 --> 00:48:08,410 То је прилично глупо, тешко је код, то не узима никакве улаза, 1079 00:48:08,410 --> 00:48:12,220 али не покаже други Функција коју сам ја написао. 1080 00:48:12,220 --> 00:48:15,760 Дакле, овде сам проглашен променљива, позвао к, типа инт, 1081 00:48:15,760 --> 00:48:17,840 једнак број 2, потпуно произвољно. 1082 00:48:17,840 --> 00:48:19,530 Ово је само неки паперјаста штампа. 1083 00:48:19,530 --> 00:48:23,070 Пише к је сада, што и што је, Цубинг Дот Дот Дот. 1084 00:48:23,070 --> 00:48:26,390 А магија је очигледно у складу 21. 1085 00:48:26,390 --> 00:48:30,120 Зовем функцију која се зове, коцку, Ја сам га предати папир 1086 00:48:30,120 --> 00:48:32,890 са бројем 2 писаног на њему, и какву вредност, математички, 1087 00:48:32,890 --> 00:48:34,860 желим да изађем из њега? 1088 00:48:34,860 --> 00:48:36,570 Баш као што проверу исправности? 1089 00:48:36,570 --> 00:48:37,070 8. 1090 00:48:37,070 --> 00:48:37,570 Зар не? 1091 00:48:37,570 --> 00:48:40,160 Ја вант 2 укоцкавају назад, 2 до моћ 3, па 8 вратио. 1092 00:48:40,160 --> 00:48:42,570 >> Па где је коцка спроводи? 1093 00:48:42,570 --> 00:48:44,349 Па, приметимо да то реализује овде. 1094 00:48:44,349 --> 00:48:47,140 И баш као и раније, логично, иако синтакса је вероватно 1095 00:48:47,140 --> 00:48:49,320 Веома ново за многе од вас, Желим ову функцију 1096 00:48:49,320 --> 00:48:51,780 да ме предају натраг лист папир са инт на њему. 1097 00:48:51,780 --> 00:48:53,990 Дакле, имам инт, тхе Име је произвољно, 1098 00:48:53,990 --> 00:48:55,530 али удобно се зове коцка. 1099 00:48:55,530 --> 00:48:58,430 Улаз на њега, је н од тип цео број, тако да је 1100 00:48:58,430 --> 00:49:00,800 како могу проћи у броју 2 на папиру. 1101 00:49:00,800 --> 00:49:03,910 И онда се испостави Ц носача математике, тако да не морате к је за време, 1102 00:49:03,910 --> 00:49:06,680 користите само звездицу за умножавање. 1103 00:49:06,680 --> 00:49:11,070 И то се враћа н пута н пута Н, који је једноставно коцки вредност. 1104 00:49:11,070 --> 00:49:12,840 >> Па где ћемо са свим овим? 1105 00:49:12,840 --> 00:49:14,570 Ово је дефинитивно вихор турнеје, будите уверени, 1106 00:49:14,570 --> 00:49:16,410 да у супер секција а проблем сет 1, 1107 00:49:16,410 --> 00:49:18,368 бићете прошао кроз све ово све висе. 1108 00:49:18,368 --> 00:49:22,490 И у Проблем сет 1, ми ћемо транзицији из графичког света Сцратцх 1109 00:49:22,490 --> 00:49:25,640 да нешто више командне линије у Ц. Али, ми ћемо извући инспирацију 1110 00:49:25,640 --> 00:49:27,680 из овог овде игре фром јучерашњице, назначено тиме 1111 00:49:27,680 --> 00:49:31,591 коришћењем Ц и стандардног издања стр скуп ћете спровести на Марио пирамиду. 1112 00:49:31,591 --> 00:49:34,340 И у хакерске издању стр скуп, ако тако одлуче да изаберу, 1113 00:49:34,340 --> 00:49:38,280 ћете спровести још мало изазов пирамиде са два врха. 1114 00:49:38,280 --> 00:49:41,239 Такође ћете остварити једну алгоритам, похлепан алгоритам. 1115 00:49:41,239 --> 00:49:43,030 Испоставило се да постоји нека занимљива логика 1116 00:49:43,030 --> 00:49:45,640 иза процеса руннинг станицу благајник је 1117 00:49:45,640 --> 00:49:47,410 и заправо предаје неко врати кусур. 1118 00:49:47,410 --> 00:49:50,410 Постоји алгоритам који је прилично једноставно, да можда чак и 1119 00:49:50,410 --> 00:49:53,576 ухватите интуитивно када сте први пут прочитао то-- схватајући да је оно што сам одувек 1120 00:49:53,576 --> 00:49:57,110 учињено у било које време сам дао некоме нешто Новац натраг-- да вам увек 1121 00:49:57,110 --> 00:50:00,679 минимизира броја папир белешке или метални новац 1122 00:50:00,679 --> 00:50:02,220 да сте предати назад на корисника. 1123 00:50:02,220 --> 00:50:04,610 И то, наравно, није убедљив јер ако одете на ЦВС или ситница, 1124 00:50:04,610 --> 00:50:06,430 не желите да се преда читава гомила оних 1125 00:50:06,430 --> 00:50:07,596 или гомила новчића. 1126 00:50:07,596 --> 00:50:10,120 Желиш Најмање кованице, вероватно, могуће. 1127 00:50:10,120 --> 00:50:13,070 >> На крају, такође ћете бити оспорена да се бави у свету воде 1128 00:50:13,070 --> 00:50:17,220 и заправо добити захвалност за мапирање између стопе протока, 1129 00:50:17,220 --> 00:50:19,890 Као, воде у туш, колико воде се користи. 1130 00:50:19,890 --> 00:50:22,640 И алузија у њој, ће бити овај снимак овде, 1131 00:50:22,640 --> 00:50:24,840 које ћемо завршити на за само 60 секунди, то 1132 00:50:24,840 --> 00:50:29,070 осликава ниско-проток туш главе. 1133 00:50:29,070 --> 00:50:30,886 >> [ВИДЕО РЕПРОДУКЦИЈА] 1134 00:50:30,886 --> 00:50:31,385 -U redu. 1135 00:50:31,385 --> 00:50:32,774 Имам све овде. 1136 00:50:32,774 --> 00:50:35,800 Имам Цицлоне Ф Сериес, Хидра, Јетфлов, Стокхолм 1137 00:50:35,800 --> 00:50:37,660 Суперстеам, само реците. 1138 00:50:37,660 --> 00:50:39,265 >> -А Шта препоручујете? 1139 00:50:39,265 --> 00:50:40,460 >> -Šta tražite? 1140 00:50:40,460 --> 00:50:41,300 >> -Повер Човек. 1141 00:50:41,300 --> 00:50:42,285 Снага. 1142 00:50:42,285 --> 00:50:42,910 -Као Силквоод. 1143 00:50:42,910 --> 00:50:44,520 То је за зрачење. 1144 00:50:44,520 --> 00:50:46,335 -Tako je. 1145 00:50:46,335 --> 00:50:48,275 -Сад Шта је ово? 1146 00:50:48,275 --> 00:50:49,704 -То Је Цоммандо 450. 1147 00:50:49,704 --> 00:50:50,620 Ја не продати. 1148 00:50:50,620 --> 00:50:51,700 >> Али то је оно што желимо. 1149 00:50:51,700 --> 00:50:52,680 То је командос 450. 1150 00:50:52,680 --> 00:50:53,882 >> Не веруј ми. 1151 00:50:53,882 --> 00:50:55,090 То је користи само у циркусу. 1152 00:50:55,090 --> 00:50:56,512 То је за слонове. 1153 00:50:56,512 --> 00:50:59,356 >> Ја ћу платити ништа. 1154 00:50:59,356 --> 00:51:01,252 >> Шта о Јерри? 1155 00:51:01,252 --> 00:51:02,760 >> Он није могао да поднесе то. 1156 00:51:02,760 --> 00:51:04,910 Он је деликатна. 1157 00:51:04,910 --> 00:51:05,750 Oh da. 1158 00:51:05,750 --> 00:51:36,737 1159 00:51:36,737 --> 00:51:37,320 [Крај репродукције] 1160 00:51:37,320 --> 00:51:37,700 Давид Ј Малан: У реду. 1161 00:51:37,700 --> 00:51:38,820 То је ако је за ЦС50. 1162 00:51:38,820 --> 00:51:40,050 Видимо се следеће недеље. 1163 00:51:40,050 --> 00:51:45,910 1164 00:51:45,910 --> 00:51:49,029 >> СПЕАКЕР 1: [? Скали?], [? Иан?] што се тиче овог пројекта оутро, 1165 00:51:49,029 --> 00:51:50,362 Шта сте ви смислили? 1166 00:51:50,362 --> 00:51:51,990 >> Звучник 2: Па, ми смо дали то разне мисли, 1167 00:51:51,990 --> 00:51:53,250 и мислимо да је најбољи начин да-- 1168 00:51:53,250 --> 00:51:53,660 >> Спеакер 3: Могу ли? 1169 00:51:53,660 --> 00:51:54,326 >> Звучник 2: Да. 1170 00:51:54,326 --> 00:51:56,360 У сваком случају, у ствари. 1171 00:51:56,360 --> 00:51:59,425 >> Спеакер 3: Па мислим можемо сумирати нашу идеју 1172 00:51:59,425 --> 00:52:05,450 за оутрос са једним ворд-- ништа. 1173 00:52:05,450 --> 00:52:08,950 1174 00:52:08,950 --> 00:52:10,409 >> Давид Ј Малан: Ништа? 1175 00:52:10,409 --> 00:52:11,200 Спеакер 3: Ништа. 1176 00:52:11,200 --> 00:52:12,990 Давид Ј Малан: Шта то значи? 1177 00:52:12,990 --> 00:52:16,260 Спеакер 3: Тхе Оутрос су око чега. 1178 00:52:16,260 --> 00:52:21,720 Звучник 2: Па, мислим, у филозофији, Мислим, ништа није увек нешто. 1179 00:52:21,720 --> 00:52:24,200 СПЕАКЕР 1: Па вхат'с-- шта је премиса? 1180 00:52:24,200 --> 00:52:25,720 Спеакер 3: Дакле, то је као живот. 1181 00:52:25,720 --> 00:52:26,680 OK. 1182 00:52:26,680 --> 00:52:28,294 Šta si radio danas? 1183 00:52:28,294 --> 00:52:31,811 >> Давид Ј Малан: Устао сам, имао доручак, и дође на посао. 1184 00:52:31,811 --> 00:52:34,056 >> Спеакер 3: То је оутро. 1185 00:52:34,056 --> 00:52:36,806 Звучник 2: Али, мислим, не треба нешто деси са њим до-- 1186 00:52:36,806 --> 00:52:37,889 Спеакер 3: Не, не, не, не. 1187 00:52:37,889 --> 00:52:40,220 Ništa se ne dešava. 1188 00:52:40,220 --> 00:52:42,910 >> СПЕАКЕР 1: Зашто гледамо? 1189 00:52:42,910 --> 00:52:46,956 >> Спеакер 3: Зато што то је оутро за ЦС50. 1190 00:52:46,956 --> 00:52:48,652 >> Давид Ј Малан: Не још. 1191 00:52:48,652 --> 00:52:49,151