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