1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID малая: Добра. 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 DAVID малая: Каб атрымаць радок, або атрымаць 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 замена пустэчу агдс коскі Радок агду якая адкрывае дужка якая зачыняе дужка. 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 и-- які тып дадзеных гэта другі аргумент? 63 00:03:03,233 --> 00:03:04,529 >> АЎДЫТОРЫЯ: Array. 64 00:03:04,529 --> 00:03:05,320 DAVID малая: Array. 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 Пры ўказанні, як у мяне тут, назва-то накшталт 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 для адкрытай кранштэйна зачыняе дужкі азначае, што агду не з'яўляецца радком, 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 Так шэраг збіраецца пайсці ў 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 Так агду кавалак памяці, якая захоўвае радок радок радок кропка кропка кропка, 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 indexed-- мы ўсё яшчэ лічачы ад 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 як змест вашага кампутара памяці, ці памяці RAM-- Random Access. 119 00:05:37,010 --> 00:05:40,330 Іншымі словамі, кампутар, так ці інакш для вас чароўным, 120 00:05:40,330 --> 00:05:45,360 ставіць лічбу 1 у агдс, AKA 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 >> Цяпер, між тым, калі I напісаць запусціць іншую праграму, 129 00:06:07,870 --> 00:06:12,250 кд, што больш правільна каманда, ў вашым перарывістым prompt-- прасторы кд 130 00:06:12,250 --> 00:06:17,200 Dropbox-- калі я запускаю, што, па сутнасці, калі праграма кд запускаецца, агдс, 131 00:06:17,200 --> 00:06:22,270 ўнутры памяці майго кампутара, для найбольш долю секунды лік 2. 132 00:06:22,270 --> 00:06:25,936 А потым агду кранштэйны аб мае кд, агду кранштэйны 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 Больш матэрыялу запаўняецца для агду, і агдс, вядома, 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 у які момант вы павінны спыніць гледзячы на ​​элементаў у 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 і не ўключаюць у сябе стандартныя Я O кропка гадзіну. 156 00:07:37,510 --> 00:07:41,160 Дазвольце мне таксама ўключаюць CS50 кропка гадзіну. 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 і я проста збіраюся зрабіць Е прывітанне,% 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 цытаваць канец цытаты "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 DAVID малая: 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 ОК Comp НЛ. 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 >> DAVID малая: файла на самай справе называецца 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 >> DAVID малая: памылка нейкі, магчыма. 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 Null. 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 мае 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 Упс. 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 і агду кранштэйны 1. 240 00:11:27,760 --> 00:11:32,730 Але агдс з'яўляецца значэнне 2, што азначае, што я толькі allowed-- гэта свайго роду гонар 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 Мой 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 ў памяці, пакуль я не пайшоў гэтую праграму. 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 з 4000000000 магчымых рэчаў што можа пайсці не так у праграме. 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 І я іду наперад і раздрукаваць, У гэтым выпадку, Zamyla або Rob 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 І калі я, замест то рабіць як Роб з'яўляецца суправаджалы 313 00:15:04,660 --> 00:15:07,550 у Thayer-- абмену адвольная інфармацыя. 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 >> Зараз, як у бок, мы 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 >> Такім чынам, любыя пытанні па агдс? 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 >> DAVID малая: Яны. 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 на ў выглядзе радка ў 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 або агдс? 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 DAVID малая: Чаму зрабіў гэта вяртае памылку only-- о! 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 >> DAVID малая: Як кампутар ведаць значэнне агдс? 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 DAVID малая: Што гэта значыць дамп? 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 >> DAVID малая: Добры пытанне. 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 і так абсалютна Можна назваць гэта 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 DAVID малая: Гэта масіў сімвалаў, ці не так? 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 Але гэта ./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 у тым, што цяпер я выкарыстоўваю агдс і ARGV тут. 420 00:19:47,260 --> 00:19:54,300 І зараз я інтэграцыі з цыкл у радку 18, ад г = 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 Гэта, відавочна, дэманструе выкарыстанне агдс. 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 DAVID малая: Точно. 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 бар, 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 Я правяраю, што з'яўляецца Даўжыня агду кранштэйна I. 450 00:21:11,090 --> 00:21:12,920 Я захоўваю гэты адказ у п. 451 00:21:12,920 --> 00:21:18,230 А потым я інтэгруючы ад J на да п, дзе J усталёўваецца на 0. 452 00:21:18,230 --> 00:21:19,460 Так, Канвенцыя для падліку. 453 00:21:19,460 --> 00:21:22,335 Калі вы ўжо выкарысталі I, калі ў вас ёсць укладзены цыкл, вы не можаце выкарыстаць я зноў, 454 00:21:22,335 --> 00:21:25,770 у адваротным выпадку вы будзеце калашмаціць, патэнцыйна, значэнне за межамі ўнутранага цыклу. 455 00:21:25,770 --> 00:21:27,200 Таму я выкарыстоўваю J па пагадненні. 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 Але цяпер, заўважыў майго Printf лінія трохі адрозніваецца. 459 00:21:33,800 --> 00:21:37,520 Я не друкуе% S, я друк% С, што, вядома, 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 DAVID малая: Характар ​​у гэтым радку. 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 А цяпер робяць агду-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 Цяпер дазвольце мне ісці наперад і рабіць нешта. 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 да Z. Так што гэта добра, таму што гэта дазваляе нам магчымасць, 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 >> DAVID малая: Аджай. 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 DAVID малая: Усё, што я хачу, каб ты Зараз, каб знайсці для мяне, і для нас, 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 >> DAVID малая: 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 >> DAVID малая: Касмічныя яйкі. 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 DAVID малая: Такім чынам, вы абралі выпадкова і пашанцавала. 539 00:25:03,420 --> 00:25:03,790 AJAY: Так. 540 00:25:03,790 --> 00:25:04,456 DAVID малая: ОК. 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 Але цяпер 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 Але зрабіць гэта алгарытмічных, і раскажыце, як вы збіраецеся пра гэта. 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 DAVID малая: Тут вы ідзяце. 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 DAVID малая: толькі верхні шэраг. 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 і, сапраўды, гэта было Шона Першая спроба з выпадковых лікаў 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 DAVID малая: Так. 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 і давайце рабіць тое, 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 І, напэўна, тое, што вас можа зрабіць алгарытмічных, 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 Але колькі часу гэта зойме Verizon для сартавання тэлефоннай кнігі? 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-- давайце не зрушэння здесь-- і нумар восем сюды на канцы. 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 >> DAVID малая: Арты, добра. 652 00:30:43,100 --> 00:30:44,297 Ты лік 1. 653 00:30:44,297 --> 00:30:45,310 >> AMIN: Амін. 654 00:30:45,310 --> 00:30:46,060 DAVID малая: Амін. 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 >> ANDY: Прывітанне, Эндзі. 660 00:30:52,660 --> 00:30:53,970 >> DAVID малая: Эндзі, гэта прыемна бачыць вас. 661 00:30:53,970 --> 00:30:54,520 Нумар 3. 662 00:30:54,520 --> 00:30:55,310 >> JACOB: Якаў. 663 00:30:55,310 --> 00:30:56,760 >> DAVID малая: Якаў, лік 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 DAVID малая: Грант. 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 >> DAVID малая: Алан, лік 6. 670 00:31:02,766 --> 00:31:03,589 >> Франчэска: Фрэнсіс. 671 00:31:03,589 --> 00:31:04,880 DAVID малая: Фрэнсіс, лік 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 >> DAVID малая: Рэйчел, лік 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 ліпень, 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 Going, каб пакінуць іх у спакоі. 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 DAVID малая: Так Рэйчел эфектыўна бурбалкі даволі далёка, 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 DAVID малая: Фрэнсіс. 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 вельмі доўга, але звернеце ўвагу, 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 Одно-- як цябе клічуць зноў? 816 00:36:23,750 --> 00:36:24,400 >> Арты: Арты. 817 00:36:24,400 --> 00:36:24,610 >> DAVID малая: Арты. 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 >> АЎДЫТОРЫЯ: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID малая: Добра, мы можа зрушыць ўсіх. 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 >> DAVID малая: Пераключальнік іх. 832 00:36:46,850 --> 00:36:47,900 І тое, што цябе клічуць? 833 00:36:47,900 --> 00:36:48,441 >> JACOB: Якаў. 834 00:36:48,441 --> 00:36:50,330 DAVID малая: Якаў, рухацца. 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 >> DAVID малая: Алан, мы прыйдзецца выселіць вас. 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 Шчыра кажучы, я стаміўся ад усё гэта перамяшчэння. 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 >> AMIN: Амін. 910 00:39:21,420 --> 00:39:22,270 >> DAVID малая: Амін. 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-- аб 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 Так што калі вы хочаце, каб соваць назад, давайце уставім вас. 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 Bubble роду, у першую чаргу? 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 што, па меншай меры для супер-вялікія значэння п. 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 ў базе дадзеных кампаніі 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 >> [TONES] 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 >> [TONES] 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 >> [TONES] 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 >> [TONES] 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 >> [TONES] 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 >> Апавядальнік: І зараз, "Deep Думкі ", па Daven Фарнэме. 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 >> [Смех]