1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 Дејвид MALAN: Во ред. 3 00:00:11,940 --> 00:00:16,470 Значи ова е CS50, а тоа е сега на почетокот на три недела. 4 00:00:16,470 --> 00:00:19,960 >> Па до сега, ние сме Пишувам програми во C 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 Имаме int, главно, празнина, и тогаш нешто да се направи во средината, 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 можете да направите ./hello, но тоа е тоа. 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 Дејвид MALAN: За да добиете низа, или се int, или сте виделе други, 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 Како ЦД простор Dropbox. 28 00:01:18,560 --> 00:01:20,800 Ова, се разбира, промени Користење на вашиот именик, претпоставувајќи 29 00:01:20,800 --> 00:01:23,590 ќе бидете во домот на Џон Харвард директориумот, на вашиот Dropbox папка. 30 00:01:23,590 --> 00:01:27,380 Во меѓувреме, на команда вака создава нов директориум наречен pset2, 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 така што марка не знае што да се изгради, и така дека mkdir знае што папка да се создаде, 37 00:01:48,540 --> 00:01:51,110 и така што cd знае каде сакате да одите. 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 ние си оди за да започне додавајќи тука она што е во yellow-- 51 00:02:24,980 --> 00:02:30,520 замена на празнина со int argc запирка низа argv отворена заграда блиску заграда. 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 на овој начин, како што главна зема два аргументи, на int 62 00:02:58,810 --> 00:03:03,233 and-- она ​​што тип на податок е вториот аргумент? 63 00:03:03,233 --> 00:03:04,529 >> ПУБЛИКАТА: Низа. 64 00:03:04,529 --> 00:03:05,320 Дејвид MALAN: Низа. 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 ако се знае однапред колку ints или колку жици или што и да 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 Кога ќе се определи, како што имам овде, име на нешто како argv, 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 за отворена заграда блиску заграда значи дека argv не е стринг, 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 тоа е многу сличен на ставот нешто како int возраст отворен заградата, 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 Еден, како што ќе привлекува како овој правоаголник, се случува да се нарече argc. 94 00:04:26,550 --> 00:04:30,645 И само како брзо повториме, она што е податоци за видот на argc? 95 00:04:30,645 --> 00:04:31,270 Па тоа е int. 96 00:04:31,270 --> 00:04:33,480 Па голем број се случува да одат во argc-- врти 97 00:04:33,480 --> 00:04:35,660 дека се залага за аргумент брои. 98 00:04:35,660 --> 00:04:38,887 Во меѓувреме, јас сум подготвен argv како низа. 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 Па argv парче меморија која продавници низа стринг string точка точка точка, 104 00:04:50,970 --> 00:04:53,950 и argc е само една парче меморија за цел број. 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 argv, сакам да се добие во нив поединечно, исто како и минатата недела, 108 00:05:03,290 --> 00:05:05,670 ние сме случува да се користи нотација како argv заградата 0 109 00:05:05,670 --> 00:05:07,650 да се добие првото нешто низа. 110 00:05:07,650 --> 00:05:10,440 Argv заградата 1 за да го добиете Втората работа, и така натаму. 111 00:05:10,440 --> 00:05:14,597 Клучот тука е ние сме се уште 0 indexed-- ние сме сè уште сметајќи од 0. 112 00:05:14,597 --> 00:05:16,430 Па сега е нека всушност стави нешто во ова. 113 00:05:16,430 --> 00:05:21,670 Ако јас да се состави програма наречена hello од фајл наречен здраво точка в, 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 како содржина на вашиот компјутер меморија, или RAM-- Случаен Пристап меморија. 119 00:05:37,010 --> 00:05:40,330 Со други зборови, на компјутерот, некако за вас магично, 120 00:05:40,330 --> 00:05:45,360 става на бројот 1 во argc, АКА argcount, и го става буквално низа 121 00:05:45,360 --> 00:05:48,200 ./hello во argv заградата 0. 122 00:05:48,200 --> 00:05:51,750 Јас немам идеја, искрено, што е во argv држач 1 или 2 или 3, 123 00:05:51,750 --> 00:05:55,550 бидејќи ако корисникот не има внесе ништо освен ./hello, 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 да се погледне во нив, затоа што на argcount е само еден. 128 00:06:05,710 --> 00:06:07,870 >> Сега, пак, ако го пишуваат работи друга програма, 129 00:06:07,870 --> 00:06:12,250 CD, што е повеќе правилно команда, во вашиот трепне prompt-- CD простор 130 00:06:12,250 --> 00:06:17,200 Dropbox-- кога ќе ја стартувате тоа, ефикасно, Кога на CD програма се работи, argc, 131 00:06:17,200 --> 00:06:22,270 во внатрешноста на меморија мојот компјутер, е за најмногу најкраток вториот број 2. 132 00:06:22,270 --> 00:06:25,936 А потоа argv заградата o има CD, argv заградата 1 има Dropbox, 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 >> Во меѓувреме, ако правиме mkdir pset2, сликата изгледа речиси ист, 137 00:06:35,720 --> 00:06:37,900 но со различни жици внатре argv. 138 00:06:37,900 --> 00:06:42,570 Ако го направам ѕвекот цртичка здраво Здраво точка в, истата идеја. 139 00:06:42,570 --> 00:06:47,060 Повеќе работи се пополнува за argv и argc, се разбира, е 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 секогаш знае каде на крајот од него е, бидејќи argc се случува да ви кажам 143 00:06:56,720 --> 00:07:00,120 во кој момент ќе мора да престанат во потрага на елементи во argv. 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 Оној кој само вели здраво да некој како Zamyla. 147 00:07:09,070 --> 00:07:12,620 Така тврдам јас ќе одам да се напише програма во само еден миг преку која јас не можеше да стори 148 00:07:12,620 --> 00:07:16,670 ./hello простор Zamyla, а потоа сакам мојата програма да се печати нешто 149 00:07:16,670 --> 00:07:18,520 супер-едноставно како "здраво, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Во минатото сме се користи getstring. 151 00:07:20,100 --> 00:07:22,850 Па во минатото, дури и ако сте нови на програмирање, 152 00:07:22,850 --> 00:07:27,180 шансите се можете да разбивам програма која користи getstring 153 00:07:27,180 --> 00:07:29,390 а потоа користи printf да се каже Здраво на Zamyla. 154 00:07:29,390 --> 00:07:31,290 Но ајде да не ги користат getstring тоа време. 155 00:07:31,290 --> 00:07:37,510 Нека наместо мене да одат во Appliant и не вклучуваат стандардни Јас О точка ч. 156 00:07:37,510 --> 00:07:41,160 Дозволете ми, исто така, вклучуваат CS50 точка ч. 157 00:07:41,160 --> 00:07:44,730 Сега int главната, и сега сум нема да направи празнина денес. 158 00:07:44,730 --> 00:07:51,200 Наместо тоа, јас ќе одам да направите int argc низа argv отворена заграда блиску заграда, 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 и јас сум едноставно ќе се прават printf Здраво,% sn. 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 Значи, ако јас не ./hello простор Zamyla, јас сакате да некако програмски пристап 167 00:08:16,970 --> 00:08:20,870 цитирам unquote "Zamyla." па јас можат да одат во мојот аргумент вектор, 168 00:08:20,870 --> 00:08:25,980 мојата низа на стрингови, и ако командата, повторно, беше ./hello простор Zamyla, 169 00:08:25,980 --> 00:08:29,340 што бројот сакам да се стави во argv тука? 170 00:08:29,340 --> 00:08:29,840 ПУБЛИКАТА: 1. 171 00:08:29,840 --> 00:08:32,355 Дејвид MALAN: 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 Добро комп IO е. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla Enter. 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 >> Дејвид MALAN: на датотеката всушност, наречен hello3.c. 184 00:09:01,767 --> 00:09:03,850 И Јас го направив тоа само за конзистентност, затоа што ние сме 185 00:09:03,850 --> 00:09:06,550 имаше hello.c во минатото во онлајн код. 186 00:09:06,550 --> 00:09:11,550 Значи, да го надминете овој ./hello заградата цртичка 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Enter. 188 00:09:12,370 --> 00:09:14,030 И сега имаме здраво, Zamyla. 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 >> Дејвид MALAN: грешка на некој вид, можеби. 194 00:09:27,300 --> 00:09:28,200 Ајде да видиме. 195 00:09:28,200 --> 00:09:29,440 Enter. 196 00:09:29,440 --> 00:09:30,210 Нула. 197 00:09:30,210 --> 00:09:33,870 Значи printf е, всушност, се малку заштитни нас 198 00:09:33,870 --> 00:09:38,131 тука, и буквално печатење отворен paren нула, но дури и полоши работи може да се случи. 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 argv заградата 1 има Zamyla, argv држач 0 има ./hello, или ./hello-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, ./hello3 Ајде да зумирате и притиснете Ентер. 208 00:10:07,270 --> 00:10:08,270 Whoops. 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 Направи hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 Љубопитни. 216 00:10:26,500 --> 00:10:30,560 И сега ајде да се навистина bold-- 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 ./hello-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 Ајде да одиме во 5000. 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 Направи hello3, ./hello-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 >> Коефициенти are-- и има различни нешта што може да предизвика ова, 233 00:11:07,250 --> 00:11:09,730 и јасно вие сте во добра company-- имаме јасно 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 Сега на компјутерот гарантира дека ако јас работи ./helloZamyla дека јас може да го допре argv 239 00:11:25,530 --> 00:11:27,760 биде заградата 0 и argv заградата 1. 240 00:11:27,760 --> 00:11:32,730 Но argc е вредност 2, тоа значи дека јас сум само allowed-- тоа е вид на честа 241 00:11:32,730 --> 00:11:35,180 system-- на допир заградата 0 и заградата 1. 242 00:11:35,180 --> 00:11:37,990 Ако одам било подалечно, има апсолутно ќе биде меморија таму. 243 00:11:37,990 --> 00:11:40,660 Мојот RAM меморија постои физички во компјутерот. 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 Јас би можеле да имаат seen-- ако не беа го прават тоа на Appliant 247 00:11:46,910 --> 00:11:49,937 но на мојот Mac или PC-- Јас би можеле да имаат види содржината на е-маил. 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 во RAM меморија, додека не се откажат од таа програма. 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 и што лошите момци може дури и за тие cases-- 259 00:12:21,340 --> 00:12:23,807 особено кога ние стигнете до веб програмирање 260 00:12:23,807 --> 00:12:26,890 кон крајот на семестарот, ние ќе враќате оваа topic-- е ѕиркаат наоколу, 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 Ова ќе биде еквивалент на Mac OS или Windows 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 Значи, повторно, скелетот што сме го виделе earlier-- 274 00:13:01,000 --> 00:13:02,480 и сум истакна овој пат int. 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 Ние само напиши printf блиску кадрава голема заграда и тоа е тоа. 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 Врти out-- и тоа е малку counterintuitive-- дека 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 некои навидум произволни value-- тоа е затоа што програмер има хард-кодирани 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 Јас сум си сигурен дека argc еднаква изнесува 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 И јас одиме напред и да испечатите, во овој случај, Zamyla или Роб 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 ./hello-4 Zamyla се однесува како што се очекува. 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 И ако јас Наместо да направи нешто како Роб е PROCTOR 313 00:15:04,660 --> 00:15:07,550 во Thayer-- споделување произволни информации. 314 00:15:07,550 --> 00:15:13,680 Но информации, argv 1, 2, 3, 4, и 5 сега треба да постои во меморијата. 315 00:15:13,680 --> 00:15:16,540 Тоа, исто така, она што не е мојата програма очекува, 316 00:15:16,540 --> 00:15:20,300 бидејќи Сум проверил дали argc еднаква на еднаквите 2 или не. 317 00:15:20,300 --> 00:15:22,140 Па јас сум сега одбрана од ова. 318 00:15:22,140 --> 00:15:25,290 >> Сега, како настрана, ние programmer-- или поточно ние users-- 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 >> Значи, која било прашања во врска argc? 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 >> Дејвид MALAN: Тие се. 328 00:15:51,626 --> 00:15:55,080 Значи, прашањето е, што треба повремено се гледа програми 329 00:15:55,080 --> 00:15:57,270 како овој, што не велат низа argv заграда 330 00:15:57,270 --> 00:16:01,015 но наместо тоа се каже нешто како знак ѕвезда argv заграда. 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 на во форма на низа во CS50 библиотека, но во нешто повеќе од една недела 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 >> Други прашања во врска со нашите argv или argc? 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 Дејвид MALAN: Зошто го направи тоа врати грешка only-- ох! 344 00:16:29,230 --> 00:16:31,813 Во претходниот случај, кога беа futzing околу со меморијата, 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 >> ПУБЛИКАТА: Како компјутерот знаат вредноста на argc? 356 00:16:58,890 --> 00:17:02,390 >> Дејвид MALAN: Како функционира компјутер знаат вредноста на argc? 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 Дејвид MALAN: Што значи основни депонија значи? 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 или RAM меморија кога се урнал. 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 >> ПУБЛИКАТА: Дали argc команда во себе, или можете да го името нешто? 380 00:18:04,450 --> 00:18:05,575 >> Дејвид MALAN: Добро прашање. 381 00:18:05,575 --> 00:18:08,040 Е argc команда во себе, или можете да го името нешто? 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 и така апсолутно ние може да се нарече ова foo, 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 Но со Конвенцијата, ние ги користиме argc и argv. 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 Па излезе, јас сум бил кажува малку бели lie-- 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 Во овој случај тука кога јас претходно трчаше програма како ./hello или ./hello-3 394 00:18:37,310 --> 00:18:42,780 Zamyla, имавме содржината на мојот меморија компјутер во потрага околу, како 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 Дејвид MALAN: Тоа е низа од карактери, нели? 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 при што, во секоја од овие индекси на моите argv низа, 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 Но, ова е ./hello обратна коса црта 0, дека да се биде посебен карактер што 412 00:19:25,440 --> 00:19:28,310 демаркира крајот на стринг, и ние го добивме уште една по 413 00:19:28,310 --> 00:19:29,360 Име Zamyla е. 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 Една од нив е наречен argv1.c и другиот е argv2. 418 00:19:40,590 --> 00:19:44,260 Тоа е супер-едноставен програма која е различна од минатото програми 419 00:19:44,260 --> 00:19:47,260 во тоа што сега јас сум со користење argc и argv тука. 420 00:19:47,260 --> 00:19:54,300 И сега сум интегрирање со за телефонска линија во согласност 18, од i = 0 на до argc. 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 Ова очигледно покажува користењето на argc. 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 Дејвид MALAN: Токму така. 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 Дозволете ми да одам во мојот именик и прават argv1 ./argv1. 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 Ако јас сега велат foo, тоа се случува да се направи овие две, а ако кажам foo bar, 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 Но, да се потсетиме дека argv е низа од стрингови, 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 на до argc. 448 00:21:02,410 --> 00:21:05,510 А сега во согласност 21-- сум позајмување трик од минатата week-- 449 00:21:05,510 --> 00:21:11,090 Јас сум проверка што е Должината на argv заградата јас. 450 00:21:11,090 --> 00:21:12,920 Јас сум чување на тој одговор во n. 451 00:21:12,920 --> 00:21:18,230 И тогаш јас сум интегрирање од ѕ на до n, каде што j е иницијализиран на 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 во спротивно ќе clobber, потенцијално, на вредност надвор од внатрешниот циклус. 455 00:21:25,770 --> 00:21:27,200 Па јас сум со користење ѕ од Конвенцијата. 456 00:21:27,200 --> 00:21:28,020 Ние може да се користат k. 457 00:21:28,020 --> 00:21:31,080 Ако имате повеќе од к, најверојатно имаат премногу гнездење, обично. 458 00:21:31,080 --> 00:21:33,800 Но сега, забележи мојот printf линија е малку поинаква. 459 00:21:33,800 --> 00:21:37,520 Јас не сум печатење на% s, јас сум печатење% c, кои, се разбира, 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 Но, логично, тоа само значи добиете о низа во argv 465 00:21:47,290 --> 00:21:50,067 и да добијат jth што? 466 00:21:50,067 --> 00:21:50,900 ПУБЛИКАТА: карактер. 467 00:21:50,900 --> 00:21:52,800 Дејвид MALAN: карактер во таа низа. 468 00:21:52,800 --> 00:21:57,100 Значи со користење квадратни загради проследено со квадратни загради, 469 00:21:57,100 --> 00:22:00,390 ова е одличен прв во жици argv е, 470 00:22:00,390 --> 00:22:02,225 и потоа на втората квадратни загради со j 471 00:22:02,225 --> 00:22:06,580 е нуркање во ликовите на таа низа во argv. 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 А сега го прават argv-2-- whoops-- направи argv-2, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Enter. 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 Сега дозволете ми да оди напред и да го направи foo. 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 Секако, ако сте во ситуација да reimplement овој парчиња овие парчиња хартија 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 Значи, ако јас could-- ни треба еден доброволно да дојдат горе. 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 >> AJAY: 510 00:23:58,580 --> 00:23:58,655 >> Дејвид MALAN: Ajay. 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 Значи имаме зад овие шест врати дигитално на screen-- 515 00:24:04,500 --> 00:24:07,810 или, поточно, седум врати на screen-- целиот куп на броеви. 516 00:24:07,810 --> 00:24:10,099 И јас сум ви кажал ништо во advance-- договорено? 517 00:24:10,099 --> 00:24:11,140 AJAY: Ништо однапред. 518 00:24:11,140 --> 00:24:14,730 Дејвид MALAN: Се што сакам да го направите сега е да се најде за мене, и за нас, 519 00:24:14,730 --> 00:24:20,920 навистина, бројот 50, еден чекор во исто време. 520 00:24:20,920 --> 00:24:21,830 >> AJAY: Број 50? 521 00:24:21,830 --> 00:24:22,580 >> Дејвид MALAN: Бројот 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 >> AJAY: О, човеку. 531 00:24:47,362 --> 00:24:49,050 О, јас никогаш не сум видел Spaceballs. 532 00:24:49,050 --> 00:24:49,520 >> Дејвид MALAN: Spaceballs. 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 How-- ајде да се направи овој на способен moment-- 536 00:24:57,430 --> 00:25:00,412 како си оди за наоѓање на број 50? 537 00:25:00,412 --> 00:25:01,370 AJAY: Ги избрав по случаен избор. 538 00:25:01,370 --> 00:25:03,420 Дејвид MALAN: Значи сте одбрале случајно и доби среќен. 539 00:25:03,420 --> 00:25:03,790 AJAY: Да. 540 00:25:03,790 --> 00:25:04,456 Дејвид MALAN: Добро. 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 Да, Congrats. 550 00:25:24,730 --> 00:25:27,010 Но сега let's-- хумор мене, ако може. 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 Но го направи тоа algorithmically и кажете ни како сте ќе за тоа. 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 AJAY: Значи, ќе одам да се провери на крајот прво, за да се утврди дали there's-- 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 Дејвид MALAN: Еве. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Ајде да ги разгледаме во еден на претходниците на Ajay, 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 Дејвид MALAN: Само горниот ред. 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 фундаментално подобро во овој втор example-- 603 00:28:39,670 --> 00:28:42,380 и, навистина, тоа беше на Sean прв обид со случајни броеви 604 00:28:42,380 --> 00:28:45,460 како before-- но штом бидејќи овие броеви се подредени, 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 Дејвид MALAN: Да. 610 00:28:55,660 --> 00:28:56,160 Токму така. 611 00:28:56,160 --> 00:28:59,680 Па првичната инстинкт на Ajay беше за да се провери на крајот, како што се сеќавам, 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, затоа ние know-- 616 00:29:10,900 --> 00:29:14,850 и ајде да го прават токму that-- ние Затоа знам дека 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 И најверојатно тоа што може да направи algorithmically, 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 И now-- да не пристрасност here-- и број осум овде на крајот. 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 >> ARTIE: Artie. 651 00:30:41,950 --> 00:30:43,100 >> Дејвид MALAN: Artie, во ред. 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 Дејвид MALAN: Амин. 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 >> Дејвид MALAN: Енди, тоа е убаво да те видам. 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 >> Дејвид MALAN: Јаков, број 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 Дејвид MALAN: Грант. 667 00:30:58,881 --> 00:31:00,348 Број 5. 668 00:31:00,348 --> 00:31:01,200 >> Alanna: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> Дејвид MALAN: Alanna, број 6. 670 00:31:02,766 --> 00:31:03,589 >> FRANCES: Френсис. 671 00:31:03,589 --> 00:31:04,880 Дејвид MALAN: Френсис, број 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 >> Дејвид MALAN: Рејчел, број 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 И се надевам, нашата прва разумност проверка here-- 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 во крајна линија, и decide-- тоа е навистина импресивна, тоа е навистина ефикасен, 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 AND1, на ред. 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 Дејвид MALAN: Значи Рејчел има ефикасно клобуркаше до прилично далеку, 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, mm-mm. 743 00:33:29,930 --> 00:33:32,230 Ајде swap. 744 00:33:32,230 --> 00:33:33,200 6 и 3, mm-mm. 745 00:33:33,200 --> 00:33:34,420 Ајде swap. 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 Ајде swap. 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 FRANCES: Френсис. 752 00:33:40,570 --> 00:33:41,445 Дејвид MALAN: Френсис. 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, swap ајде. 757 00:33:48,720 --> 00:33:50,410 4 и 3, swap ајде. 758 00:33:50,410 --> 00:33:51,550 4 и 6, ти си во ред. 759 00:33:51,550 --> 00:33:53,340 6 и 5, swap ајде. 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 за многу долго време, но забележите takeaway-- голем барови се движи кон десно, 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 One-- она ​​што е вашето име повторно? 816 00:36:23,750 --> 00:36:24,400 >> ARTIE: Artie. 817 00:36:24,400 --> 00:36:24,610 >> Дејвид MALAN: Artie. 818 00:36:24,610 --> 00:36:25,460 Значи, Artie, повелете. 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 Како да се направи простор за Artie тука на почетокот, каде што број 1 припаѓа? 824 00:36:36,000 --> 00:36:36,770 >> ПУБЛИКАТА: Shift. 825 00:36:36,770 --> 00:36:38,950 >> Дејвид MALAN: Во ред, би можеле да се префрлат сите. 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 >> Дејвид MALAN: Исклучете ги. 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 Дејвид MALAN: Јаков, се движат. 835 00:36:50,330 --> 00:36:54,440 Многу поефикасно само за да имаат Јаков трампа локации со Artie, 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 Што е убаво за Artie сега, тој е во правилна позиција. 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 Ooh. 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 >> Alanna: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> Дејвид MALAN: Alanna, ние сме ќе мора да ви иселат. 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 Ајде да одиме напред и од оваа мени тука, овој visualization-- 876 00:37:56,800 --> 00:38:02,920 ајде да го промените ова to-- ајде, Firefox. 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 Искрено, јас сум уморен од сето ова traversing. 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 >> Дејвид MALAN: Амин. 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 Значи, Artie, ако може врати за момент. 923 00:39:42,770 --> 00:39:46,550 Ајде да одиме напред и да се префрлат сега, за разлика од нашите претходни алгоритми, 924 00:39:46,550 --> 00:39:50,910 да се направи простор за Artie токму тука на почетокот. 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-- ох oh-- и 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 Значи, ако сакате да pop- назад, ајде да го внесете. 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 Тоа е причината зошто ние имавме овие мали mispositions дека сме ги решиле со текот на времето. 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 се фундаментално само како ефикасна како секој other-- или, обратно, како што 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 тоа е најмалку за супер-големи вредности на n. 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 Но, како што n, број на лица, или бројот на броеви, 966 00:41:44,020 --> 00:41:46,350 или бројот на луѓето во телефонот книга, или бројот на веб-страници 967 00:41:46,350 --> 00:41:48,230 во базата на податоци на Google добива поголем и поголем, 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 можете да ги комбинирате вашиот ум повеќе audioly околу тоа што секое од тие нешта 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 >> Gnome вид. 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 >> Тоа е тоа за CS50. 1000 00:44:09,430 --> 00:44:13,360 Ние ќе се видиме во средата. 1001 00:44:13,360 --> 00:44:16,671 >> Раскажувач: И сега, "Длабоко Мисли "од Daven Farnham. 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 >> [Смеа]