1 00:00:00,000 --> 00:00:10,940 2 00:00:10,940 --> 00:00:13,060 >> Дэвід Дж малая: Усе Добра, так што гэта CS50. 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 сур'ёзна situations-- Вынікам ўстанаўлення які 17 00:01:00,410 --> 00:01:03,141 была даволі трагічная і expensive--, а таксама 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 Што вы думаеце? 24 00:01:16,530 --> 00:01:17,860 >> Глядачка: падстава сістэмы злічэння адрозніваецца? 25 00:01:17,860 --> 00:01:18,550 >> Дэвід Дж малая: The што? 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 Дэвід Дж малая: Так they-- правай. 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 Так што is-- Ну, інакш з чаго? 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 >> І так, напрыклад, за тыдзень ці два таму, калі мы казалі пра ASCII, 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 І мы ўбачым шэраг віньетак ад History Channel, які прымае 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 Калі б мы маглі прыцьміць lights-- 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 >> -Гэта Быў дзявочае ваяж Ariane 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 -The Праблема на Арыян было тое, што 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 >> -The Няздольнасць аднаго праграма, каб прыняць 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 створана для таго, быў таксама выкарыстаны на Ariane 5. 133 00:05:43,990 --> 00:05:49,750 >> -The Асноўная праблема ў тым, што Арыян 5 быў хутчэй, паскараецца хутчэй. 134 00:05:49,750 --> 00:05:53,000 І праграмнае забеспячэнне было ня склалі за гэта. 135 00:05:53,000 --> 00:05:56,330 >> -The Знішчэнне ракеты быў велізарны фінансавая катастрофа, 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 ракета Patriot выпрабаваў падобнага роду 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 Patriot ракетныя батарэі былі разгорнутыя каб абараніць Саудаўскую Аравію і Ізраіль 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 вытворчасці кампаніі Raytheon ст. 151 00:06:43,010 --> 00:06:49,080 >> -Памер Перахопнікаў Patriot, Сам, аб, доўга прыкладна 20 футаў. 152 00:06:49,080 --> 00:06:51,250 І ён важыць каля 2000 фунтаў. 153 00:06:51,250 --> 00:06:55,195 І гэта нясе боегалоўку about-- Я думаю, што гэта прыкладна 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 >> -The Патрыёт супраць ракетнай сістэмы ўзыходзіць па крайняй меры, 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 І так яны спрабавалі абнавіць Patriot. 167 00:07:42,340 --> 00:07:44,760 >> -Intercepting Ворага Ракета падарожжа ў Маха пяць 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 >> -пасля Сістэмных аператараў Patriot зразумеў Патрыёт міма брамы, 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 Міністэрства абароны адказаў кажу ўсё батарэйкі Patriot 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 08:00? 201 00:09:30,460 --> 00:09:30,960 10:00? 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 -The Батарэі Patriot размешчаны ў казармах 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 Гэта дакладна такая ж Праблема, што адбылося ў Patriot. 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 >> -Гэта Быў цяпер да радара кампанент сістэмы Patriot, 227 00:10:53,990 --> 00:10:58,520 абароны Дахране, каб знайсці і захаваць трэк надыходзячай ракеты праціўніка. 228 00:10:58,520 --> 00:10:59,690 >> -The Радар быў вельмі разумны. 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 адна кіраўнік у праблемных Гісторыя ракеты Patriot. 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 Зірніце на вэб-сайце CS50 ў для атрымання дадатковай інфармацыі пра іх. 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 Гэта як просты Праграма вы можаце напісаць у C, 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 Такім чынам, мы будзем бачыць менавіта тое, што .h файл гэта супраць файла .c, у рэшце рэшт. 277 00:13:02,370 --> 00:13:04,710 Але цяпер, проста ведаю, што Printf, напрыклад, 278 00:13:04,710 --> 00:13:08,370 сярод функцый, якія былі заявіў у нейкай іншай файл, дзе-то 279 00:13:08,370 --> 00:13:12,930 яшчэ на цвёрдым дыску, што аблокі дазваляе нам атрымаць доступ да Printf і выкарыстоўваць яго 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 І так аналагічна, зрабіў свет вырашыў некалькі гадоў таму, што ў C, 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 Але мы вернемся, у іншы раз, да чаго, INT, 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 Printf функцыя, мэта якога ў жыццё для друку адфарматаваную радок. 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 І Printf, вядома, займае адно або больш аргументаў або параметраў, 302 00:14:05,040 --> 00:14:06,770 інакш вядомы, больш проста, у якасці ўваходных дадзеных. 303 00:14:06,770 --> 00:14:09,230 >> Так Printf, як шмат Функцыі, прымае ўваходы. 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 І гэта тое, што адбываецца ў ўплываць на Паводзіны Printf таму што, вядома, 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 ён павінен фактычна выклікаюць кампутар, У канчатковым рахунку, або Printf, у дадзеным выпадку, 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 але я пішу, прывітанне праграму, і я не рэалізаваны, Printf. 355 00:16:08,589 --> 00:16:10,130 Хтосьці рэалізаваў, Printf. 356 00:16:10,130 --> 00:16:12,420 Хто хацеў бы прэтэндаваць на рэалізавалі, Printf? 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: [? Copal. ?] 360 00:16:14,155 --> 00:16:15,529 >> Дэвід Дж малая: Copal, давай да. 361 00:16:15,529 --> 00:16:16,430 Давай до. 362 00:16:16,430 --> 00:16:17,070 Добра. 363 00:16:17,070 --> 00:16:22,260 Такім чынам, мы маем, вось, некаторыя тэгі імя, так як мы будзем рабіць у невялікую гульню гэта. 364 00:16:22,260 --> 00:16:26,270 І мы звяжамся з Вамі, Printf. 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 >> Добра, так, прывітанне, мяне клічуць, Printf, калі вы хочаце, каб пакласці, што на. 368 00:16:35,550 --> 00:16:35,740 Добра. 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 >> А так, калі мой ўваход, тут, па-відаць, тое, што перадаецца PRINTF, 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 І добра, што мы не павінны бачыць The, новая лінія, у гэтай кропцы. 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 што збіраецца павінны гуляць ролю of-- Гэта толькі людзі, у аркестры 392 00:17:46,830 --> 00:17:47,355 Прама цяпер. 393 00:17:47,355 --> 00:17:47,980 Як about-- ОК. 394 00:17:47,980 --> 00:17:48,480 Прама тут. 395 00:17:48,480 --> 00:17:49,180 Давай до. 396 00:17:49,180 --> 00:17:49,955 Ваша імя? 397 00:17:49,955 --> 00:17:50,922 >> СТУДЕНТ 2: [? Ivay. ?] 398 00:17:50,922 --> 00:17:51,796 Дэвід Дж малая: Выбачайце? 399 00:17:51,796 --> 00:17:52,990 СТУДЕНТ 2: [? Ivay. ?] 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 ОК. 407 00:18:05,740 --> 00:18:07,190 І я вельмі шкада, што ваша імя? 408 00:18:07,190 --> 00:18:07,680 >> СТУДЕНТ 2: [? Ivay. ?] 409 00:18:07,680 --> 00:18:08,790 >> [? Дэвід Дж малая: Ivay. ?] ОК. 410 00:18:08,790 --> 00:18:10,430 Зараз, калі вы не розум, вы GetString. 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 Такім чынам, мы маем адзін, назавіце сваё імя, выкарыстоўваючы Printf; два, заклік да GetString, 417 00:18:24,080 --> 00:18:28,060 суправаджаецца прызначэннем на Пераменная называецца, радок з, або называюць гадоў; 418 00:18:28,060 --> 00:18:31,260 а потым яшчэ выклік, Printf, але на гэты раз з двума ўваходамі. 419 00:18:31,260 --> 00:18:33,646 >> Такім чынам, мы ўжо зрабілі стан Ваша імя, дакладней, мы ў 420 00:18:33,646 --> 00:18:34,770 ужо зрабіў званок PRINTF. 421 00:18:34,770 --> 00:18:38,960 Так што я збіраюся напісаць, дзяржаўных сваё імя. 422 00:18:38,960 --> 00:18:42,089 І так, што я збіраюся прайсці, Printf, у імгненне, 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 Добра. 426 00:18:48,260 --> 00:18:51,160 І забудзьцеся радок, у нас зараз ёсць наша ўласная радок кода тут. 427 00:18:51,160 --> 00:18:54,470 Такім чынам, у, GetString, мы павінны на самай справе назваць, GetString. 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 >> Добра. 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 з'яўляецца тое, што GetString вяртаецца да мяне, Я, быўшы пераменная радок называецца, с. 439 00:19:25,752 --> 00:19:26,252 Добра. 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 Добра. 443 00:19:28,450 --> 00:19:30,910 Такім чынам, мы маем імя Nik тут. 444 00:19:30,910 --> 00:19:33,750 Так што гэта тое, што ў літаральным сэнсе быў вернуты 445 00:19:33,750 --> 00:19:35,810 для мяне, так бы мовіць, па GetString. 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 Так што цяпер, у мяне ёсць пераменная называецца, з, захоўвання імя для Nik. 449 00:19:46,470 --> 00:19:49,520 Я ўжо перадаў Printf, папярэдні аргумент. 450 00:19:49,520 --> 00:19:52,800 Але ў нашым трэцім і канчатковым лініі Код, я на самой справе трэба рукі Printf 451 00:19:52,800 --> 00:19:58,500 што-то трохі different-- "прывітанне,% s," зваротны слэш п. 452 00:19:58,500 --> 00:20:01,510 >> І таму апошняя радок я збіраюся каб send-- апошняе, што я 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 заклікі да двух inputs-- Адзін з іх, гэта, і два, гэта. 456 00:20:10,690 --> 00:20:13,330 Так што, калі наша функцыя Printf Зараз можна прымаць іх у якасці ўваходных дадзеных, 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 Добра. 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 І дзякуй нашай GetString і PRINTF добраахвотнікі, так. 470 00:20:48,890 --> 00:20:49,551 Дзякуй. 471 00:20:49,551 --> 00:20:50,050 Добра. 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 Так C, і шмат моў, разумець рэчы, званыя сімвалы. 478 00:21:12,490 --> 00:21:16,852 Паўкокс, як правіла, адзін байт, ці восем біт. 479 00:21:16,852 --> 00:21:19,810 І гэта ўяўляе сабой адзін знак, як літара A, або капіталу 480 00:21:19,810 --> 00:21:21,990 Ліст, або малая лiтара А, або клічнік, 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 Яны існуюць у Java, калі вы ўзялі АСК ТП, 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 INT лёгка. 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 bits--, і мы зрабілі гэта ў тыдзень 0, 499 00:22:07,850 --> 00:22:10,820 вельмі briefly-- калі ў вас ёсць 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 Цяпер, як у бок, гістарычна, калі INT 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 Можна падумаць, што гэта ўжо, чым Int але, магчыма, менш працяглы, чым доўгі доўгі, 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 але, аказваецца, тыя, прыходзяць Толькі з бібліятэкай CS50. 535 00:23:43,960 --> 00:23:46,240 Так што тыя, якія не пабудавалі у С. Тыя замест 536 00:23:46,240 --> 00:23:49,340 прыйсці ў гэтым файле, званым CS50.h, што мы ў канчатковым выніку 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 Цяпер Printf, мы бачылі, мае запаўняльнікі,% S з'яўляецца адным. 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 Printf, запаўняльнік, верагодна,% гр. 546 00:24:15,270 --> 00:24:19,650 І калі вы хочаце, каб раздрукаваць лік з запаўняльнікам,% I. 547 00:24:19,650 --> 00:24:25,150 % LLD гэта даўным дзесятковы значэнне, але доўга доўга, так што карты да гэтага. 548 00:24:25,150 --> 00:24:28,640 І тады% F для плывучых значэнне пункту або для падвойнага, 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 І Printf і іншыя функцыі таксама Кіравальныя паслядоўнасці падтрымку іншых, 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 Памятаеце, з нашай PRINTF прыклады, калі мы 567 00:25:07,211 --> 00:25:10,075 праходзілі ў PRINTF на ўваходзе, злева ад гэтага радка ўводу 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 Printf, вядома, і ўсё з іншых на экране, 581 00:25:44,320 --> 00:25:47,140 вось, што мы будзем выкарыстоўваць для Першы курс у некалькі тыдняў, толькі 582 00:25:47,140 --> 00:25:48,485 прыходзяць, калі бібліятэка CS50. 583 00:25:48,485 --> 00:25:51,850 І яны робяць гэта нашмат прасцей, у З фактычна атрымаць карыстацкі ўвод. 584 00:25:51,850 --> 00:25:54,200 Аказваецца, што ў C, і адкрыта на некалькіх мовах, 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 сказаць ці пачакайце, у C, у нас ёсць функцыі, а, як Printf. 602 00:26:41,570 --> 00:26:45,350 >> Калі мы хочам, каб выказаць стан ў C, гэта падобна, у духу, 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 І я мяркую, што гэта таму, што вы бачыць, што ёсць больш INT і я, 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 >> А потым, падобна, мы перадаем Printf, значэнне. 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 Цяпер у нас ёсць PRINTF істота Прайшло тое значэнне запаўняльніка. 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 Добра. 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 Гэта стварае зменную I і яго крамы ў гэтай зменнай значэнне 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 Але чаму? 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 я ++ з'яўляецца скарочаны спосаб казаць; ўзяць значэнне I, і дадаць да яго 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 >> Глядачка: The ініцыялізацыя [неразборліва]. 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 Так на самой справе, гэта is-- Ну, і колькасць ініцыялізуецца 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 Добра. 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 Так што можа пайсці не так з Int? 750 00:33:09,430 --> 00:33:12,210 Калі я выкарыстоўваю Int да Граф, што можа пайсці не так? 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 Таму што, калі б у вас была больш bits-- і я паспрабуйце, накшталт, увядзiце яго here-- 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 Напрыклад, любы з вас, хто калі-небудзь гуляў Lego Star Wars, 804 00:35:26,630 --> 00:35:28,880 Хто-небудзь выпадкова не ведаеце, максімальны лік манет 805 00:35:28,880 --> 00:35:32,032 Вы можаце сабраць у Lego Star Wars? 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 Так што атрымліваецца, а ёсць некаторыя people-- 810 00:35:42,080 --> 00:35:46,080 некаторыя звяртаючыся да дапамогі пацвердзіў апошні night-- атрымалі 4 млрд залатых манет, 811 00:35:46,080 --> 00:35:47,730 ці яшчэ шмат чаго, у Lego Star Wars. 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 сказаць максімальную колькасць з coins-- або шпількі, 822 00:36:12,610 --> 00:36:14,860 як яны называюць, што вы them-- можа збіраць гэта 4 млрд. 823 00:36:14,860 --> 00:36:16,290 І так, чаму гэта? 824 00:36:16,290 --> 00:36:20,310 Як гэта LEGO гульні рэалізацыі лічыльніка 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 Як праграміст літаральна тыпізаваных, INT, у яго ці яе код, 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 >> Так што я не гуляў у гэтую game-- і я чытаў на гісторыі 835 00:36:45,063 --> 00:36:48,470 каб пацвердзіць, як much-- але ў Арыгінальная версія Civilization, дзе 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 >> Зараз больш трывожна, больш У апошні час Boeing 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 але асабліва калі мы чуем аб Apple, аперацыйных сістэм адбываецца ў аўтамабілях, 883 00:39:14,070 --> 00:39:18,030 і самастойнага кіравання аўтамабіляў з Google, і любую колькасць увасабленняў праграмнага забеспячэння 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 І атрымліваецца out-- і давайце паглядзім, калі мой мікрафон можа падняць гэта up-- што Apple 894 00:39:46,440 --> 00:39:47,790 было павесяліцца з гэтым у апошні час. 895 00:39:47,790 --> 00:39:48,850 Так у мяне ёсць iPhone тут. 896 00:39:48,850 --> 00:39:54,160 Я збіраюся пагаварыць з Siri і папрасіць яе каб даць мне адказ на 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 І Cookie Monster сумна што няма печыва. 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 Больш задавальнення, чым гэта, хоць, гэта што, па-відаць, Cookie Monster 912 00:40:29,830 --> 00:40:31,270 на Twitter у гэтыя дні. 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 трохі differently-- і мы ў канчатковым рахунку бачыць examples-- 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 але ваш сінтаксіс, ultimately-- як мы ў канчатковым рахунку 924 00:41:03,260 --> 00:41:04,551 see-- будзе адрознівацца. 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 дзе вы аб'яўляеце зменную, як INT лічыльнік коскі, 936 00:41:33,400 --> 00:41:36,570 а затым, магчыма, later-- наступны лінія, можа быць, 10 ліній later-- 937 00:41:36,570 --> 00:41:37,800 вы на самой справе яго ініцыялізацыі. 938 00:41:37,800 --> 00:41:42,230 Такім чынам, гэтыя 2 радкі кода абвясціць зменную тыпу Int 939 00:41:42,230 --> 00:41:44,930 і назваць яго лічыльнік, так што гэта дае мне дастаткова біты правесці Int. 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 атрымлівае радок з user-- шмат як наш валанцёр на імгненне ago-- 948 00:42:08,990 --> 00:42:11,320 захавання выніку ў пераменная называецца імя, 949 00:42:11,320 --> 00:42:15,470 і then-- гэтак жа, як з нашым валанцёрам з printf-- друкуе гэтыя значэння 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.c. 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 Гэта тое буду называць GetString, гэтак жа, як мы зрабілі з нашымі валанцёрамі. 961 00:42:50,320 --> 00:42:53,365 А потым, гэта цікава, ён збіраецца назваць PrintName. 962 00:42:53,365 --> 00:42:56,490 Аказваецца, увесь гэты час, ёсць здаецца, функцыя называецца PrintName. 963 00:42:56,490 --> 00:42:57,614 Гэта друкуе чыё-то імя. 964 00:42:57,614 --> 00:43:01,210 Мы не павінны выкарыстоўваць Printf ад мінулых гадоў, ёсць PrintName. 965 00:43:01,210 --> 00:43:03,500 >> Але гэта зман таму PrintName ня 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 Я абраў PrintName. 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 А потым, гэта program-- гэтак жа, як у пустым, 981 00:43:39,170 --> 00:43:42,590 Вы можаце мець карыстацкі галаваломкі pieces-- будзе мець гэты звычай паводзіны. 982 00:43:42,590 --> 00:43:46,760 Гэта збіраецца патэлефанаваць Printf праходзячы, прывітанне, запаўняльнік, 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 мудрагелістыя спосабы з saying--, калі Вам падабаецца гэты высокі ўзровень ідэя, 987 00:43:58,110 --> 00:44:01,569 як я хачу, функцыянальнасць, друкуе чыё-то імя, абсалютна вы 988 00:44:01,569 --> 00:44:04,360 можа ў літаральным сэнсе напісаць Printf, а затым прайсці ў аргументах, якія вы хочаце, 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 Вы можаце даць яму імя, як PrintName, і гэта 992 00:44:13,270 --> 00:44:15,280 гэтая ідэя слаёў ад тыдня 0. 993 00:44:15,280 --> 00:44:19,910 >> З гэтага часу я, і вы не павінны ведаць, ці ўсё роўна, як PrintName рэалізуецца. 994 00:44:19,910 --> 00:44:22,470 Так, гэта выкарыстоўвае Printf, можа быць, гэта няма, хто ведае, што выкарыстоўвае? 995 00:44:22,470 --> 00:44:23,410 Каго гэта хвалюе? 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 што ў бібліятэцы CS50, у ёсць толькі функцыя GetInt. 1004 00:44:44,570 --> 00:44:47,720 Мы не думаю, што гадоў таму, каб рэалізаваць функцыю GetPositiveInt. 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 Вы можаце выкарыстоўваць абсалютна GetInt. 1008 00:44:55,010 --> 00:44:57,840 І вы можаце праверыць з абсалютна стан і, магчыма, пятля 1009 00:44:57,840 --> 00:45:00,320 калі INT больш чым 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 хачу быць у стане назваць GetPositiveInt, і я хачу быць 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 гэтак жа, як GetString, можа вяртае значэнне для мяне. 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 І калі раней PrintName, Я нічога не трэба назад. 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 Тут, з GetPositiveInt, як з GetInt, 1030 00:45:48,840 --> 00:45:50,640 Я хачу, каб нешта быць перададзены назад. 1031 00:45:50,640 --> 00:45:53,220 Так што я кажу няма, пустата, на лініі 23, але INT, 1032 00:45:53,220 --> 00:45:55,570 у якім гаворыцца, гэтая функцыя што я пішу, 1033 00:45:55,570 --> 00:45:58,860 называецца GetPositiveInt збіраецца перадаць мяне цэлае, а не нічога, 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 Я не даю GetPositiveInt любы ўваход, я хачу, каб даць мне свой выхад. 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 Я раздрукаваць, калі ласка, даць мне станоўчы Int. 1046 00:46:30,760 --> 00:46:34,300 Затым я атрымаць Int, выкарыстоўваючы CS50-х функцыянаваць і захоўваць у п. 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 >> І кожны time-- і давайце працаваць this-- зрабіць функцыя 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 Так што я проста рэалізуецца, у пачуццё, што эквівалентна GetString, 1069 00:47:36,800 --> 00:47:40,590 дзе я вяртаючы да хто выкарыстоўвае мяне, некаторы значэнне. 1070 00:47:40,590 --> 00:47:42,820 Гэта не павінны быць радок, што гэта Int. 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 На самай справе, давайце паглядзім на лічбавая адной, якая называецца return.c. 1074 00:47:53,882 --> 00:47:55,590 А гэта на самай справе трохі прасцей. 1075 00:47:55,590 --> 00:47:59,010 Так Мэта гэтай праграмы ў life-- давайце скампіляваць і запусціць яго, 1076 00:47:59,010 --> 00:48:03,090 таму пераканайцеся, вяртанне, кропка слэш, return-- апавяшчэнне 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 Дык вось, я аб'яўлены Пераменная, называецца х, тыпу Int, 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 Так у мяне ёсць Int, у Назва адвольна, 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 да чаго-то больш каманднага радка у C. Але мы чэрпаем натхненне 1110 00:49:25,640 --> 00:49:27,680 з гэтага тут гульні ад мінулага, у якім 1111 00:49:27,680 --> 00:49:31,591 з дапамогай C і стандартная рэдакцыя р камплект вы рэалізуеце піраміду Марыё. 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 схапіць інтуітыўна, калі вы ўпершыню прачытаў it-- разумеючы, што тое, што я заўсёды 1120 00:49:53,576 --> 00:49:57,110 зроблена ў любы час я даў камусьці некаторыя грошы back--, што дазваляе заўсёды 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 І гэта, вядома, з'яўляецца пераканаўчым таму што, калі вы ідзяце ў CVS ці яшчэ шмат чаго, 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 -Добра. 1135 00:50:31,385 --> 00:50:32,774 Я атрымаў усё тут. 1136 00:50:32,774 --> 00:50:35,800 Я атрымаў Cyclone серыі F, Гідра, Jetflow, Стакгольм 1137 00:50:35,800 --> 00:50:37,660 Supersteam, вы называеце яго. 1138 00:50:37,660 --> 00:50:39,265 >> -А Што вы рекомендуете? 1139 00:50:39,265 --> 00:50:40,460 >> -Што Вы шукаеце? 1140 00:50:40,460 --> 00:50:41,300 >> -Power Чалавек. 1141 00:50:41,300 --> 00:50:42,285 Магутнасць. 1142 00:50:42,285 --> 00:50:42,910 -Як Silkwood. 1143 00:50:42,910 --> 00:50:44,520 -Гэта Для выпраменьвання. 1144 00:50:44,520 --> 00:50:46,335 -Гэта Дакладна. 1145 00:50:46,335 --> 00:50:48,275 -Зараз Што гэта? 1146 00:50:48,275 --> 00:50:49,704 -Гэта Commando 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 Ах так. 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 Вось калі для CS50. 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 для OUTROS з аднаго word-- нічога. 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: Outros з'яўляюцца ні пра што. 1178 00:52:16,260 --> 00:52:21,720 СПІКЕР 2: Ну, я маю на ўвазе, у філасофіі, Я маю на ўвазе, нічога не заўсёды нешта. 1179 00:52:21,720 --> 00:52:24,200 СПІКЕР 1: Так what's-- што памяшканне? 1180 00:52:24,200 --> 00:52:25,720 СПІКЕР 3: Так што гэта, як жыццё. 1181 00:52:25,720 --> 00:52:26,680 ОК. 1182 00:52:26,680 --> 00:52:28,294 Што вы рабілі сёння? 1183 00:52:28,294 --> 00:52:31,811 >> Дэвід Дж малая: Я ўстаў, было сняданак, і прыйшоў на працу. 1184 00:52:31,811 --> 00:52:34,056 >> СПІКЕР 3: Гэта Outro. 1185 00:52:34,056 --> 00:52:36,806 СПІКЕР 2: Але, я маю на ўвазе, не павінен нешта здарыцца з ім на the-- 1186 00:52:36,806 --> 00:52:37,889 СПІКЕР 3: Не, няма, няма, няма. 1187 00:52:37,889 --> 00:52:40,220 Нічога не адбываецца. 1188 00:52:40,220 --> 00:52:42,910 >> СПІКЕР 1: Дык чаму мы глядзім? 1189 00:52:42,910 --> 00:52:46,956 >> СПІКЕР 3: Таму што што гэта Outro для CS50. 1190 00:52:46,956 --> 00:52:48,652 >> Дэвід Дж малая: Пакуль няма. 1191 00:52:48,652 --> 00:52:49,151