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