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