1 00:00:07,420 --> 00:00:08,160 [Powered by Google Translate] Давид Ј. Малан: У реду. 2 00:00:08,160 --> 00:00:11,170 Ово је ЦС50, и то је крај недеље два. 3 00:00:11,170 --> 00:00:14,650 Ако очекујете да буде гладан у ово време сутра, знам да ћемо 4 00:00:14,650 --> 00:00:18,920 да се сазове као мала група сутра, четвртак, 1:15 ПМ. 5 00:00:18,920 --> 00:00:21,460 Ту је овај УРЛ овде ако желите да РСВП. 6 00:00:21,460 --> 00:00:25,270 Простор је ограничен, тако да молим те опрости ако форма није испуњена у време када 7 00:00:25,270 --> 00:00:26,680 попуните ово. 8 00:00:26,680 --> 00:00:29,400 Други УРЛ иако то може бити од интереса је ово. 9 00:00:29,400 --> 00:00:32,409 >> Дакле, у само месец дана, курс ће бити доступна 10 00:00:32,409 --> 00:00:36,090 све шире путем ЕДКС, преко којих људи на Интернету ће бити 11 00:00:36,090 --> 00:00:39,580 моћи да пратите, ангажовати у току веома активно, у ствари. 12 00:00:39,580 --> 00:00:43,070 Они ће бити користећи ЦС50 Апплианце и ЦС50 разговарати и највише од 13 00:00:43,070 --> 00:00:45,840 разни софтверски алати који смо већ користе овај семестар. 14 00:00:45,840 --> 00:00:49,030 И једна од иницијатива бисмо желели да преузму као експеримент ове године 15 00:00:49,030 --> 00:00:53,120 је да се види колико садржај можемо превести на друге говори и 16 00:00:53,120 --> 00:00:54,110 писаних језика. 17 00:00:54,110 --> 00:00:58,000 Дакле, ако сте можда има интерес да учествује у овом пројекту, при чему 18 00:00:58,000 --> 00:01:02,090 ми ћемо обезбедити енглеског транскрипте и титлове за курс је 19 00:01:02,090 --> 00:01:05,190 предавања и шорц и семинаре и секције и слично - 20 00:01:05,190 --> 00:01:08,700 Ако течно говорите или напиши течно неки други језик, што би 21 00:01:08,700 --> 00:01:12,240 Волим да те укључе у овај пројекат, при чему се узме на једној или више од 22 00:01:12,240 --> 00:01:15,340 видео, преводећи их на језик познајете добро. 23 00:01:15,340 --> 00:01:19,050 Да вам дати осећај интерфејса, ту је ово веб-басед кориснички интерфејс 24 00:01:19,050 --> 00:01:22,330 да ћемо користити да ће у суштини креирање УИ овако. 25 00:01:22,330 --> 00:01:24,520 Ово је моје предавање пре неких Ноћ вештица. 26 00:01:24,520 --> 00:01:27,710 А на десној страни у црној боји, поред тих временских печата, 27 00:01:27,710 --> 00:01:31,300 видећете различите ствари које су дошли из уста тог дана. 28 00:01:31,300 --> 00:01:34,660 А онда испод њега ћете моћи да преведе на неком другом језику. 29 00:01:34,660 --> 00:01:37,840 Управо оно што је мапирање између, у овом случају, енглеском 30 00:01:37,840 --> 00:01:38,660 и, рецимо, шпански. 31 00:01:38,660 --> 00:01:40,480 Дакле, то је заправо врло разумљив алат. 32 00:01:40,480 --> 00:01:43,690 Можете уназад и брзо премотавање врло лако са пречице на тастатури. 33 00:01:43,690 --> 00:01:46,710 Дакле, ако желите да учествујете у овом експерименту и имају своје речи 34 00:01:46,710 --> 00:01:50,730 види и чита потенцијално хиљада људи тамо, молимо Вас да 35 00:01:50,730 --> 00:01:51,960 слободно да учествују. 36 00:01:51,960 --> 00:01:56,940 >> Сада једну реч о мачету од понедељка, да не бисмо послали претерано 37 00:01:56,940 --> 00:01:58,120 застрашујуће поруке. 38 00:01:58,120 --> 00:02:02,130 Да схвати да је радно време указују и као секције сугеришу је 39 00:02:02,130 --> 00:02:05,110 дизајн курса је веома много да су студенти сарађују и 40 00:02:05,110 --> 00:02:09,250 говори да раде кроз проблем поставе и проблеме заједно. 41 00:02:09,250 --> 00:02:13,630 И заиста је линија само своди на, опет, посао који на крају 42 00:02:13,630 --> 00:02:16,420 треба да поднесе би требало да буде ваша. 43 00:02:16,420 --> 00:02:19,080 И тако је, сасвим искрено - у радног времена, то је сасвим нормално - 44 00:02:19,080 --> 00:02:21,560 је потпуно да се очекује, чак и - да се дописује са неким 45 00:02:21,560 --> 00:02:22,370 пријатељи поред вас. 46 00:02:22,370 --> 00:02:25,240 Ако он или она се бори са неким темама, а ти си као, ох, па нека 47 00:02:25,240 --> 00:02:27,750 да ти дам увид у неке линије кода који сам написао. 48 00:02:27,750 --> 00:02:28,290 То је у реду. 49 00:02:28,290 --> 00:02:28,700 То се дешава. 50 00:02:28,700 --> 00:02:31,580 И то је веома повољна, мислим, са процесом учења. 51 00:02:31,580 --> 00:02:35,270 Где је линија, опет, добија прешао је када је глава нагнута над врста 52 00:02:35,270 --> 00:02:38,800 Овде сувише много секунди или минута за које заиста само да имају 53 00:02:38,800 --> 00:02:41,250 била деблокада прилика за свог пријатеља. 54 00:02:41,250 --> 00:02:43,870 И свакако, када се ствари размењују путем е-поште и Дропбок и 55 00:02:43,870 --> 00:02:45,350 слично, тамо је линија. 56 00:02:45,350 --> 00:02:48,940 Дакле, свим средствима, осећају удобно и осећају охрабрио да ћаскају са пријатељима 57 00:02:48,940 --> 00:02:51,270 и другови око псетс и још много тога. 58 00:02:51,270 --> 00:02:54,680 И само схватити да је оно што сте на крају достави заиста треба да буде 59 00:02:54,680 --> 00:02:57,780 производ вашег стварања а не неко други. 60 00:02:57,780 --> 00:03:01,010 >> Дакле, у истом стилу и умиљати створења, можда ћете 61 00:03:01,010 --> 00:03:02,820 Знам овог момка овде. 62 00:03:02,820 --> 00:03:06,180 Дакле, ово је хоррифицалли сираст филм из пре много година. 63 00:03:06,180 --> 00:03:08,680 Свако овде видели Спацебаллс? 64 00:03:08,680 --> 00:03:09,120 У реду. 65 00:03:09,120 --> 00:03:10,220 Дакле овде добар број. 66 00:03:10,220 --> 00:03:13,840 Дакле, ово је наш предивно академски начин увођења данас коначно 67 00:03:13,840 --> 00:03:15,130 појам криптографије. 68 00:03:15,130 --> 00:03:19,010 И тако је један од домена специфичних проблема за псет 2, који ће доћи 69 00:03:19,010 --> 00:03:22,770 Повратак касно сутра увече, да зарони у свет криптографије, која 70 00:03:22,770 --> 00:03:26,380 је уметност за криптовање или кодирања информације. 71 00:03:26,380 --> 00:03:30,160 А ово на крају односи на свет безбедности. 72 00:03:30,160 --> 00:03:34,440 >> Сада безбедности за већину нас долази у облику прилично световних механизама. 73 00:03:34,440 --> 00:03:36,920 Свако од нас има корисничка имена и лозинке. 74 00:03:36,920 --> 00:03:41,350 И сви ми имамо веома лоше корисничких имена и лозинки, највероватније. 75 00:03:41,350 --> 00:03:45,250 Ако је ваша лозинка је иста на више веб сајтова, то вероватно не 76 00:03:45,250 --> 00:03:47,920 најбоља идеја, јер ћемо разговарати на крају семестар. 77 00:03:47,920 --> 00:03:51,680 Ако је ваша лозинка је написана на лепљиве белешке - није шала - на вашој 78 00:03:51,680 --> 00:03:55,130 монитора, и то није нужно најбољи дизајн, али сасвим уобичајена 79 00:03:55,130 --> 00:03:56,140 феномен. 80 00:03:56,140 --> 00:04:00,420 А ако не користите криптографију за шифровање лозинке, они су 81 00:04:00,420 --> 00:04:01,610 посебно рањива. 82 00:04:01,610 --> 00:04:04,670 Дакле, ако мислите да сте паметни сте супер тако што скривене Реч 83 00:04:04,670 --> 00:04:07,740 документују негде на вашем хард диску који има све ваше лозинке, али 84 00:04:07,740 --> 00:04:10,550 то је у директоријуму који нико неће да погледа у, и то није баш 85 00:04:10,550 --> 00:04:11,540 сигуран механизам. 86 00:04:11,540 --> 00:04:15,100 И шта псет 2 ће увести ово уметност криптографије и 87 00:04:15,100 --> 00:04:18,300 кодирање информација, тако да ствари као што су лозинке 88 00:04:18,300 --> 00:04:19,500 све сигурније. 89 00:04:19,500 --> 00:04:24,500 Дакле, као да мотивише овај веома реалном свету проблем са веома не-стварном свету 90 00:04:24,500 --> 00:04:28,740 сценарију, дозволите ми да вам представим један од наших омиљених спотова овде из овог 91 00:04:28,740 --> 00:04:29,895 филм, Спацебаллс. 92 00:04:29,895 --> 00:04:30,565 >> [ВИДЕО РЕПРОДУКЦИЈА] 93 00:04:30,565 --> 00:04:32,995 -Шлем, ти ђаво, шта се дешава? 94 00:04:32,995 --> 00:04:34,730 Шта радиш са мојом ћерком? 95 00:04:34,730 --> 00:04:38,960 -Дозволите ми да представим сјајне младе хирурга пластичне, др Филип 96 00:04:38,960 --> 00:04:43,290 Сцхлоткин, највећи нос посао човек у читавом 97 00:04:43,290 --> 00:04:45,526 универзум и Беверли Хилс. 98 00:04:45,526 --> 00:04:46,450 -Ваша висости. 99 00:04:46,450 --> 00:04:47,380 -Нос посао? 100 00:04:47,380 --> 00:04:48,035 Не разумем. 101 00:04:48,035 --> 00:04:49,480 Она је већ имала операцију носа. 102 00:04:49,480 --> 00:04:51,490 То је слатко 16 присутни. 103 00:04:51,490 --> 00:04:53,090 -Не, то није оно што мислите. 104 00:04:53,090 --> 00:04:55,150 Много је, много горе. 105 00:04:55,150 --> 00:04:59,860 Ако ми не дају комбинацију ваздушне штита, др Сцхлоткин ће 106 00:04:59,860 --> 00:05:04,135 дајте ћерку назад свој стари нос. 107 00:05:04,135 --> 00:05:05,385 -Не! 108 00:05:08,202 --> 00:05:10,186 Одакле ти то? 109 00:05:10,186 --> 00:05:11,178 -У реду. 110 00:05:11,178 --> 00:05:11,674 Ја ћу рећи. 111 00:05:11,674 --> 00:05:12,666 Ја ћу рећи. 112 00:05:12,666 --> 00:05:14,154 -Не, тата, не. 113 00:05:14,154 --> 00:05:15,150 Ви не смете. 114 00:05:15,150 --> 00:05:16,460 -У праву си, моја драга. 115 00:05:16,460 --> 00:05:18,450 Ја ћу пропустити свој нови нос. 116 00:05:18,450 --> 00:05:21,550 Али нећу им рећи комбинацију без обзира на све. 117 00:05:21,550 --> 00:05:23,100 -Веома добро. 118 00:05:23,100 --> 00:05:25,510 Др Сцхлоткин, урадите ваш најгоре. 119 00:05:25,510 --> 00:05:26,760 -Драго ми је. 120 00:05:30,560 --> 00:05:31,180 -Не! 121 00:05:31,180 --> 00:05:33,450 Чекај, чекај. 122 00:05:33,450 --> 00:05:34,770 Ја ћу рећи. 123 00:05:34,770 --> 00:05:36,400 Ја ћу рећи. 124 00:05:36,400 --> 00:05:38,630 -Знао сам да ће радити. 125 00:05:38,630 --> 00:05:42,040 У реду, дај ми. 126 00:05:42,040 --> 00:05:46,890 -Комбинација је један. 127 00:05:46,890 --> 00:05:47,290 -Један. 128 00:05:47,290 --> 00:05:48,183 -Један. 129 00:05:48,183 --> 00:05:48,950 -Два. 130 00:05:48,950 --> 00:05:49,370 -Два. 131 00:05:49,370 --> 00:05:50,450 -Два. 132 00:05:50,450 --> 00:05:50,715 -Три 133 00:05:50,715 --> 00:05:51,380 -Три. 134 00:05:51,380 --> 00:05:52,390 -Три. 135 00:05:52,390 --> 00:05:53,200 -Четири. 136 00:05:53,200 --> 00:05:53,720 -Четири. 137 00:05:53,720 --> 00:05:55,830 -Четири. 138 00:05:55,830 --> 00:05:56,580 -Пет 139 00:05:56,580 --> 00:05:57,120 -Пет. 140 00:05:57,120 --> 00:05:58,560 -Пет. 141 00:05:58,560 --> 00:06:03,770 -Дакле комбинација је један, два, три, четири, пет. 142 00:06:03,770 --> 00:06:06,745 То је најглупља комбинација коју сам икада чуо у животу. 143 00:06:06,745 --> 00:06:09,290 То је врста ствари идиот би имати на свом пртљагу. 144 00:06:09,290 --> 00:06:11,540 -Хвала, ваша висости. 145 00:06:11,540 --> 00:06:12,940 -Шта си урадио? 146 00:06:12,940 --> 00:06:14,230 -Ја искључен зид. 147 00:06:14,230 --> 00:06:14,630 -Не, ниси. 148 00:06:14,630 --> 00:06:15,430 Ти искључен цео филм. 149 00:06:15,430 --> 00:06:16,722 -Мора да сам притиснуо погрешно дугме. 150 00:06:16,722 --> 00:06:18,078 -Па, стави назад. 151 00:06:18,078 --> 00:06:18,805 Ставите филм назад. 152 00:06:18,805 --> 00:06:19,080 -Да, господине. 153 00:06:19,080 --> 00:06:19,270 Да, господине. 154 00:06:19,270 --> 00:06:19,830 -Идемо, Ерна. 155 00:06:19,830 --> 00:06:20,270 Хајде, Гретцхен. 156 00:06:20,270 --> 00:06:22,850 Наравно да знам да увек ћу морати да вас наплатимо за то. 157 00:06:27,400 --> 00:06:28,325 -Па, да ли је то посао? 158 00:06:28,325 --> 00:06:29,550 Где је капија? 159 00:06:29,550 --> 00:06:29,910 -То је функционисало, господине. 160 00:06:29,910 --> 00:06:30,770 Имамо комбинацију. 161 00:06:30,770 --> 00:06:31,390 -Сјајно. 162 00:06:31,390 --> 00:06:35,630 Сада можемо узети сваки последњи дах свежег ваздуха са планете Друидиа. 163 00:06:35,630 --> 00:06:36,550 Шта је комбинација? 164 00:06:36,550 --> 00:06:38,805 -Један, два, три, четири, пет. 165 00:06:38,805 --> 00:06:40,610 -Један, два, три, четири, пет? 166 00:06:40,610 --> 00:06:41,070 -Да. 167 00:06:41,070 --> 00:06:41,760 -То је невероватно. 168 00:06:41,760 --> 00:06:45,200 Имам исту комбинацију на мом пртљагу. 169 00:06:45,200 --> 00:06:47,800 Припремите Спацебалл 1 за непосредну одлазак. 170 00:06:47,800 --> 00:06:48,536 -Да, господине. 171 00:06:48,536 --> 00:06:52,350 -И промените комбинацију на мом пртљагу. 172 00:06:52,350 --> 00:06:53,250 -Ау! 173 00:06:53,250 --> 00:06:55,020 [ЕНД ВИДЕО РЕПРОДУКЦИЈА] 174 00:06:55,020 --> 00:06:57,470 >> Давид Ј. Малан: невероватна филм који сте сад сви треба да виде. 175 00:07:00,600 --> 00:07:06,540 Дакле, овде је контекст да са несигурним подацима долази прилику да 176 00:07:06,540 --> 00:07:07,790 шифровање га и да га верати. 177 00:07:07,790 --> 00:07:11,060 И тако то, на пример, је пример шифроване поруке. 178 00:07:11,060 --> 00:07:12,980 То заправо каже нешто на енглеском језику. 179 00:07:12,980 --> 00:07:14,750 Али јасно је не сасвим очигледно. 180 00:07:14,750 --> 00:07:17,360 И ми ћемо доћи пун круг је данас измамио осим шта је то тајна 181 00:07:17,360 --> 00:07:18,380 Порука је. 182 00:07:18,380 --> 00:07:22,370 Али у стварном свету рачунара, ствари уопште не изгледају као да би могао 183 00:07:22,370 --> 00:07:23,440 Енглески бити фразе. 184 00:07:23,440 --> 00:07:27,500 На пример, ово је оно што сте могли наћи на стандардном Линук или Мац или 185 00:07:27,500 --> 00:07:32,080 Уникс рачунар у фајлу који је некада давно зове лозинку датотеку. 186 00:07:32,080 --> 00:07:34,170 Данас, то је била премештена на друга места. 187 00:07:34,170 --> 00:07:38,660 Али, ако се осврнемо на правом месту на систем, видећете не само вашу 188 00:07:38,660 --> 00:07:41,430 корисничко име или других људи на систем, али ћете видети 189 00:07:41,430 --> 00:07:43,410 кодиран верзија њиховог лозинком. 190 00:07:43,410 --> 00:07:47,800 Заиста, реч крипта тамо сугерише да је следећи ствар је шифрована. 191 00:07:47,800 --> 00:07:52,030 И ова серија наизглед случајних слова и знакова и бројева и 192 00:07:52,030 --> 00:07:56,370 тако даље може бити дешифрована само генерално знајући неку тајну - 193 00:07:56,370 --> 00:07:58,600 тајна реч, тајна број. 194 00:07:58,600 --> 00:08:02,760 И тако заиста, уметност криптографије коначно своди на поверење неких 195 00:08:02,760 --> 00:08:05,700 сортирање и знајући нешто што неко други не. 196 00:08:05,700 --> 00:08:10,010 Ми ћемо истражити ово мало подробније данас иу псет доћи. 197 00:08:10,010 --> 00:08:11,860 >> А сада реч о прошао / пао. 198 00:08:11,860 --> 00:08:15,250 Дакле, посебно, као што неки од вас су заронио у псет 1, апарата и 199 00:08:15,250 --> 00:08:18,390 веома нови свет за себе, схватио да фрустрације и 200 00:08:18,390 --> 00:08:21,340 конфузија и само техничке потешкоће треба очекивати. 201 00:08:21,340 --> 00:08:24,410 Посебно са првом псет, где постоји само толико ново, само добијање 202 00:08:24,410 --> 00:08:28,830 упознат са ЛС и ЦД и свих ових тајанствених команде у новом окружењу. 203 00:08:28,830 --> 00:08:32,679 И то је одвојен од стварног материјала и програмирање себе. 204 00:08:32,679 --> 00:08:35,960 Тако схватају, такође, да сигурно постоје радно време које постоје као 205 00:08:35,960 --> 00:08:36,770 структура подршке. 206 00:08:36,770 --> 00:08:38,620 Секције почети ове долази у недељу. 207 00:08:38,620 --> 00:08:41,990 Али што је најважније, ако осећате само да ово није 208 00:08:41,990 --> 00:08:44,420 свет за вас, схватите да је то заиста само треба времена. 209 00:08:44,420 --> 00:08:47,520 И то није било за ову прилику пре неколико година за мене узимања класу 210 00:08:47,520 --> 00:08:50,840 пасс / фаил, искрено, ја никада не бих ни крочио у учионици. 211 00:08:50,840 --> 00:08:53,520 И ви можете да промените до, рецимо, пети понедељак курса. 212 00:08:53,520 --> 00:08:57,110 Дакле, ако сте на ивици сада схватају да уместо главе у неки други 213 00:08:57,110 --> 00:09:01,000 воде заједно, да свакако размислите само промена да прође / пропаст. 214 00:09:01,000 --> 00:09:03,750 Опет, не постоји стварно ова култура овде на Харварду узимања ствари 215 00:09:03,750 --> 00:09:08,080 пасс / фаил јер свако заиста жели да постигне или оверацхиеве. 216 00:09:08,080 --> 00:09:11,470 Али искрено, ово је диван начин да покушава нешто да можда не 217 00:09:11,470 --> 00:09:13,110 бити упознат са вама. 218 00:09:13,110 --> 00:09:17,090 А ти ћеш завршити раде у већини случајева сасвим фино, можда 219 00:09:17,090 --> 00:09:18,040 много вашег изненађење. 220 00:09:18,040 --> 00:09:20,850 И у Конкретно, оно што ја мислим прошао / пао генерално ради, 221 00:09:20,850 --> 00:09:23,350 поготово што сте можда искусан са псет 0, ако сте ставили 222 00:09:23,350 --> 00:09:27,200 у 10 часова, 15 сати, 25 сати у неком псет - А ти си само лупа 223 00:09:27,200 --> 00:09:28,180 главу о зид, 224 00:09:28,180 --> 00:09:29,850 и то је све супер касно ноћу, 225 00:09:29,850 --> 00:09:31,880 али ви сте узели псет као 90% начин, 226 00:09:31,880 --> 00:09:33,780 знаш да не могу да схватим једну ствар - 227 00:09:33,780 --> 00:09:36,830 пасс / фаил заиста узима оштрицу класе као што је ово, где можете да сортирате 228 00:09:36,830 --> 00:09:39,150 од срећно кажу ок, знам да није савршен. 229 00:09:39,150 --> 00:09:40,470 Али ја сам радила дупе на ово. 230 00:09:40,470 --> 00:09:42,410 Прилично сам задовољан, где је завршио. 231 00:09:42,410 --> 00:09:44,780 И да ће испунити очекивања за прошао / није прошао. 232 00:09:44,780 --> 00:09:46,850 Дакле, имајте то на уму. 233 00:09:46,850 --> 00:09:47,140 >> У реду. 234 00:09:47,140 --> 00:09:50,980 Дакле, они од вас који су се борили да користе Универзитета Харвард Ви-Фи зна 235 00:09:50,980 --> 00:09:54,780 да постоји ЦС50 ССИД, Ви-Фи веза плутају да 236 00:09:54,780 --> 00:09:56,520 можда има боље среће за. 237 00:09:56,520 --> 00:09:59,430 То је мало иронично да лозинка за ово - ако желите да пробате 238 00:09:59,430 --> 00:10:03,080 повезивање на ово боље брзине и јавите нам ако није боље - 239 00:10:03,080 --> 00:10:09,240 један, два, три, четири, пет, сви пут до осам, јер је осам 240 00:10:09,240 --> 00:10:10,270 сигурније од пет. 241 00:10:10,270 --> 00:10:15,520 Дакле, ако вам треба Ви-Фи лозинке, повезивање ЦС50 бежично овде. 242 00:10:15,520 --> 00:10:16,950 Један, два, три, четири, пет, шест, седам, осам. 243 00:10:16,950 --> 00:10:20,440 И пост на ЦС50 Разговарајте ако и даље имате повремено повезивање питања, 244 00:10:20,440 --> 00:10:24,880 а ми ћемо пустити моћи да се знају за овај простор. 245 00:10:24,880 --> 00:10:25,180 >> У реду. 246 00:10:25,180 --> 00:10:30,350 Тако брзо задиркивање, нарочито за оне од вас који су навијачке дечаци или девојчице 247 00:10:30,350 --> 00:10:31,900 од свих ствари Аппле. 248 00:10:31,900 --> 00:10:37,566 Оно што сам ископао од неколико година уназад био тај фајл овде, илоцк.ц, само да 249 00:10:37,566 --> 00:10:40,930 врста чине више бетона и сложеније неки од више основних Ц 250 00:10:40,930 --> 00:10:42,350 Програми које смо написали. 251 00:10:42,350 --> 00:10:44,360 Зато сам отворио овај фајл, илоцк.ц. 252 00:10:44,360 --> 00:10:46,830 То је доступан на страници предавања за данас. 253 00:10:46,830 --> 00:10:49,470 На левој страни можете видети дугачку листу функција. 254 00:10:49,470 --> 00:10:51,860 Дакле, човек који је написао ово написали много функција, 255 00:10:51,860 --> 00:10:53,290 више него само главни. 256 00:10:53,290 --> 00:10:55,490 Он се овде користи гомилу библиотека. 257 00:10:55,490 --> 00:11:00,450 А ако почнемо кретање кроз, шта је ово заправо је веома 258 00:11:00,450 --> 00:11:04,670 Прво, ја верујем, прасак за оригиналну иПхоне. 259 00:11:04,670 --> 00:11:08,000 Када је желео да јаилбреак оригинални иПхоне, што значи унтетхер 260 00:11:08,000 --> 00:11:11,800 је од АТ & Т и заправо инсталирати посебан софтвер на њему и раде ствари 261 00:11:11,800 --> 00:11:13,510 да Аппле није желео да људи раде - 262 00:11:13,510 --> 00:11:17,020 добро, неко узео времена да схватим како тачно они би могли да искористе 263 00:11:17,020 --> 00:11:20,880 софтвер мане, грешке, бубе, у софтверу Аппле. 264 00:11:20,880 --> 00:11:22,650 И тако је рођен илоцк.ц. 265 00:11:22,650 --> 00:11:26,670 То ако је сачињен на рачунару и инсталирати га на иПхоне том 266 00:11:26,670 --> 00:11:29,810 био повезан са рачунаром преко, рецимо, УСБ кабла, то ће вам дати 267 00:11:29,810 --> 00:11:33,360 административне или корена привилегије на вашем иПхоне и пустите ви прилично 268 00:11:33,360 --> 00:11:34,170 шта год желите. 269 00:11:34,170 --> 00:11:36,740 >> И тако је дошло до ове фасцинантно мачке и миша игра између Аппле и 270 00:11:36,740 --> 00:11:39,920 остатак света а посебно као и они, као и многе компаније, покушајте да закључате 271 00:11:39,920 --> 00:11:43,220 њихова ствар доле, тако да можете само да урадите са тим шта они намеравају. 272 00:11:43,220 --> 00:11:46,620 Али захваљујући људима као што је ово и њихов разумевање ниског нивоа 273 00:11:46,620 --> 00:11:50,580 детаљи и, у овом случају, Ц програмирање и много од познатих конструкција 274 00:11:50,580 --> 00:11:54,630 које смо почели играти са, ви сте у стању да заиста искористе 275 00:11:54,630 --> 00:11:59,050 хардвер на начин како вама одговара, а не нужно неки корпоративни ентитет. 276 00:11:59,050 --> 00:12:01,360 Тако, на пример, немам појма шта се све ово ради. 277 00:12:01,360 --> 00:12:03,220 Али ГетВерсион звучи прилично једноставно. 278 00:12:03,220 --> 00:12:05,480 И изгледа да је ово функција која та особа написала. 279 00:12:05,480 --> 00:12:09,240 Узми неку цео као аргумент, не врати ништа, али 280 00:12:09,240 --> 00:12:13,080 Изгледа да петљи код петље за овде и ако је стању, ако стање, 281 00:12:13,080 --> 00:12:15,620 сломити, и некако се односи на верзију бројева. 282 00:12:15,620 --> 00:12:16,700 Ако смо доле помицати - 283 00:12:16,700 --> 00:12:19,570 иако многи од ових кључних речи ће бити нови, и ту је 284 00:12:19,570 --> 00:12:22,590 много функција у ту никада нисмо видели и не би никада видети преко 285 00:12:22,590 --> 00:12:23,830 Ток семестра - 286 00:12:23,830 --> 00:12:27,150 на крају крајева, она следи иста правила и логику да смо били 287 00:12:27,150 --> 00:12:28,760 играње са до сада. 288 00:12:28,760 --> 00:12:34,220 Дакле, ово је сувише стар да пуца своје иПхоне 4С 3с или 5с или ускоро, ових дана, 289 00:12:34,220 --> 00:12:37,320 али знам да је то све врло много потиче из овог света да ми смо 290 00:12:37,320 --> 00:12:38,430 дивед у. 291 00:12:38,430 --> 00:12:41,900 >> Па хајде да погледамо мало више једноставан пример. 292 00:12:41,900 --> 00:12:46,100 Ово је један, само да се загрејао са неким синтакси и неки други подаци 293 00:12:46,100 --> 00:12:49,240 тип који смо говорили о али нису стварно видели у Ц. Дакле, ово је 294 00:12:49,240 --> 00:12:51,680 фајл под поситиве1.ц. 295 00:12:51,680 --> 00:12:55,120 И по коментарима на врху, ово само захтева да корисник обезбеди 296 00:12:55,120 --> 00:12:55,960 позитиван број. 297 00:12:55,960 --> 00:12:59,530 Дакле, то је пример до-вхиле петље, што је лепо за корисника интерактивни 298 00:12:59,530 --> 00:13:01,980 програми где треба да каже кориснику да уради нешто. 299 00:13:01,980 --> 00:13:05,190 А ако они не сарађују, можете викати на њих, или одбије њихов допринос. 300 00:13:05,190 --> 00:13:11,610 Случај у тачки, ја ћу да радим линес 19 до 24 докле год корисник има 301 00:13:11,610 --> 00:13:14,310 Није ми дао позитиван број. 302 00:13:14,310 --> 00:13:20,400 Сада овај детаљ овде на линији 18, зашто сам изјављујем н изнад цела ова 303 00:13:20,400 --> 00:13:24,490 петље конструкт насупрот одмах на линију 22 где сам 304 00:13:24,490 --> 00:13:26,880 стварно стало да се н? 305 00:13:26,880 --> 00:13:27,330 Да? 306 00:13:27,330 --> 00:13:27,780 [ИНАУДИБЛЕ] 307 00:13:27,780 --> 00:13:29,040 >> Давид Ј. Малан: Да, тако да ово питање обима. 308 00:13:29,040 --> 00:13:30,850 А у року лаик, шта обим односи? 309 00:13:34,690 --> 00:13:36,610 Да? 310 00:13:36,610 --> 00:13:37,860 [ИНАУДИБЛЕ] 311 00:13:40,040 --> 00:13:41,105 Давид Ј. Малан: Да ли говорите мало гласније? 312 00:13:41,105 --> 00:13:43,450 ПРЕДСЕДНИК 1: Где можете приступити одређену променљиву. 313 00:13:43,450 --> 00:13:45,170 Давид Ј. Малан: Савршено. 314 00:13:45,170 --> 00:13:47,360 Где можете да приступите одређену променљиву. 315 00:13:47,360 --> 00:13:50,400 А генерално, правило до сада је била да обим неких 316 00:13:50,400 --> 00:13:55,860 променљива је дефинисана последњих заграда које сте видели. 317 00:13:55,860 --> 00:14:02,010 И тако у овом случају, ако сам направио грешку декларисања н на линији 22, 318 00:14:02,010 --> 00:14:03,010 та линија ће функционисати. 319 00:14:03,010 --> 00:14:10,990 Ја бих добити инт, а ја бих га ставио у ту променљиву н у складу 22. 320 00:14:10,990 --> 00:14:16,900 Али која линија кода би сада немају појма шта ја говорим о? 321 00:14:16,900 --> 00:14:22,650 Дакле 25 и испада 24, као и, јер у овом случају, то не потпада 322 00:14:22,650 --> 00:14:23,610 од заграда. 323 00:14:23,610 --> 00:14:27,280 Дакле, само мало сметња, али врло лако решити једноставним изјављујући 324 00:14:27,280 --> 00:14:30,140 променљива изван саме функције. 325 00:14:30,140 --> 00:14:32,600 >> Сада ћемо видети касније данас, можете отићи корак даље. 326 00:14:32,600 --> 00:14:34,860 А ти ни могао добити мало лењ - 327 00:14:34,860 --> 00:14:37,320 и то се не може препоручити, у целини - 328 00:14:37,320 --> 00:14:42,260 али чак и да се лењи и ставио глобално променљиву, да тако кажем, не 329 00:14:42,260 --> 00:14:46,670 унутар функције, а не унутар петље, али у самом фајлу, изван 330 00:14:46,670 --> 00:14:49,600 од свих функција које сте написали, као што сам овде на линији 15. 331 00:14:49,600 --> 00:14:51,160 Али ово је генерално неодобравањем. 332 00:14:51,160 --> 00:14:55,680 Али схвати да је ово решење понекад другим проблемима, као што ћемо 333 00:14:55,680 --> 00:14:56,620 коначно видети. 334 00:14:56,620 --> 00:14:58,130 Дакле, за сада, ми ћемо га оставити овако. 335 00:14:58,130 --> 00:15:01,030 Али, хајде да видимо да ли можемо да преправи ово само за почетак изражавања себе 336 00:15:01,030 --> 00:15:01,990 мало другачије. 337 00:15:01,990 --> 00:15:05,330 >> Дакле овај програм, само да буде јасно, је поситиве1. 338 00:15:05,330 --> 00:15:11,810 Дозволите ми да иде напред и овде у мом прозору терминала да поситиве1, Ентер. 339 00:15:11,810 --> 00:15:12,740 Саставља, ок. 340 00:15:12,740 --> 00:15:14,910 Идем да покренете поситиве1, притисните Ентер. 341 00:15:14,910 --> 00:15:16,820 Ја захтевам да ми дају позитиван цео број. 342 00:15:16,820 --> 00:15:18,260 Ја ћу рећи -1. 343 00:15:18,260 --> 00:15:18,910 То није посао. 344 00:15:18,910 --> 00:15:22,150 0, 99, изгледа да ради. 345 00:15:22,150 --> 00:15:23,570 Можда не најригорознији тест. 346 00:15:23,570 --> 00:15:26,480 Али бар је лепо разум провера да смо на правом путу. 347 00:15:26,480 --> 00:15:29,240 Дакле, сада пусти ме напред и отворити верзију две о томе. 348 00:15:29,240 --> 00:15:32,500 А шта је другачије већ? 349 00:15:32,500 --> 00:15:35,140 Она спроводи исту ствар. 350 00:15:35,140 --> 00:15:40,660 Али, шта је скакао је као јасно другачије овај пут? 351 00:15:40,660 --> 00:15:42,560 Да, тако то воид у зеленом. 352 00:15:42,560 --> 00:15:45,980 Гедит је истакнуто у зеленој ову кључну реч познат као Боол, 353 00:15:45,980 --> 00:15:47,000 који је тип података. 354 00:15:47,000 --> 00:15:51,080 То не долази уграђен у свим верзијама Ц. Морате да укључите 355 00:15:51,080 --> 00:15:52,010 специфична библиотека. 356 00:15:52,010 --> 00:15:54,770 У нашем случају, укључују ЦС50 библиотеку, тако да смо 357 00:15:54,770 --> 00:15:56,460 имају приступ Боол. 358 00:15:56,460 --> 00:15:59,810 Али, у реду 18, изгледа да имамо Булову вредност која се овде зове захвалан. 359 00:15:59,810 --> 00:16:01,040 Тако да сам могао да се зове ово ништа. 360 00:16:01,040 --> 00:16:04,500 Али сам га захвалан само да некако пренесем неке семантичко значење. 361 00:16:04,500 --> 00:16:07,930 Дакле, првобитно на линији 18, ја очигледно нисам захвална, јер 362 00:16:07,930 --> 00:16:12,150 Булова вредност захвалан је иницијализован на лаж у линији 18. 363 00:16:12,150 --> 00:16:16,890 А онда се чини оно што сам овде урадио у редовима 21 до 23 је управо сам 364 00:16:16,890 --> 00:16:18,610 врста прерадила моју логику. 365 00:16:18,610 --> 00:16:21,020 Тако да нема функционално другачије. 366 00:16:21,020 --> 00:16:26,940 Али, у реду 22 сада, проверите да ли кам корисник је пружио је већи од 367 00:16:26,940 --> 00:16:31,120 0, онда једноставно промените вредност захвалан на истина. 368 00:16:31,120 --> 00:16:32,290 И зашто сам то урадио? 369 00:16:32,290 --> 00:16:35,600 Јер у складу 25, очигледно, идем да проверим стање. 370 00:16:35,600 --> 00:16:39,380 До ове петље док захвалан је лажна. 371 00:16:39,380 --> 00:16:43,610 >> Дакле, ја предлажем ово као алтернативу верзији једном, јер је то најмање 372 00:16:43,610 --> 00:16:45,130 мало више интуитивно, можда. 373 00:16:45,130 --> 00:16:46,900 То је мало више утемељена на енглеском језику. 374 00:16:46,900 --> 00:16:51,710 Дакле, урадите следеће док нисте захвални или док захвалан је лажна. 375 00:16:51,710 --> 00:16:55,890 И овај пут, такође, ја очигледно не занима да се сети шта корисник откуцао 376 00:16:55,890 --> 00:16:57,730 у обавештењу, јер нема променљиве н. 377 00:16:57,730 --> 00:16:58,650 Па стварно, ја - 378 00:16:58,650 --> 00:17:00,080 мало бела лаж тамо. 379 00:17:00,080 --> 00:17:02,770 Функционално, програм је мало другачија када стигнемо до дна 380 00:17:02,770 --> 00:17:04,819 то зато што ја не сећајући се шта је н. 381 00:17:04,819 --> 00:17:09,579 Али ја сам хтео да покаже превише да, иако смо видели и ГетИнт 382 00:17:09,579 --> 00:17:13,920 ГетСтринг користи на десној страни знаком једнакости до сада, тако да 383 00:17:13,920 --> 00:17:17,160 памтимо вредност, технички, то није неопходно. 384 00:17:17,160 --> 00:17:20,950 Уколико из било ког разлога једноставно не занима да сачувате вредност, само желите 385 00:17:20,950 --> 00:17:25,710 да провери вредност, приметићете да можемо једноставно написати ово као отворен ГетИнт 386 00:17:25,710 --> 00:17:27,000 заграда, близу заграда. 387 00:17:27,000 --> 00:17:30,460 Та функција ће вратити вредност, као што смо говорили. 388 00:17:30,460 --> 00:17:32,010 То ће вам вратити инт. 389 00:17:32,010 --> 00:17:36,450 И тако, ако ментално мислите о овом догађају, када куцам у 99, ГетИнт 390 00:17:36,450 --> 00:17:38,160 враћа број 99. 391 00:17:38,160 --> 00:17:41,330 И тако концептуално, то је као да мој код је заправо то. 392 00:17:41,330 --> 00:17:45,880 Дакле, ако 99 је заиста већи од 0, онда захвални постаје истина. 393 00:17:45,880 --> 00:17:50,420 Затим ред 25 схвата оох, ми смо урадили, јер сада сам захвалан. 394 00:17:50,420 --> 00:17:54,590 А у складу 26, једноставно смо рекли, хвала за позитиван цео број, без обзира што 395 00:17:54,590 --> 00:17:55,710 десило се. 396 00:17:55,710 --> 00:17:58,900 >> Сада идемо овде радимо мало синтаксна шећер, да тако кажем. 397 00:17:58,900 --> 00:18:02,990 Хајде да видимо да ли можемо да очисти ову линију 25 са овим трећи и последњи варијације 398 00:18:02,990 --> 00:18:04,640 у поситиве3. 399 00:18:04,640 --> 00:18:08,250 Дакле, приметио је једина разлика сада је оно линија кода? 400 00:18:11,930 --> 00:18:13,260 Да, па 25. 401 00:18:13,260 --> 00:18:15,520 И ми смо заиста није видела овај трик још увек. 402 00:18:15,520 --> 00:18:19,510 Али смо видели знак узвика у понедељак, који означава шта? 403 00:18:19,510 --> 00:18:20,970 Дакле, не, или негација. 404 00:18:20,970 --> 00:18:23,460 Дакле, потребно Булову вредност и флип њену вредност. 405 00:18:23,460 --> 00:18:24,390 Истина постаје лажна. 406 00:18:24,390 --> 00:18:25,500 Нетачно постаје истина. 407 00:18:25,500 --> 00:18:28,910 Дакле, ја бих предлажем, чак мало више интуитивно од начина 408 00:18:28,910 --> 00:18:32,200 писања кода, јер сам још увек иницијализује захвалан на фалсе. 409 00:18:32,200 --> 00:18:33,530 И даље урадите следеће. 410 00:18:33,530 --> 00:18:35,700 Поставио сам захвалан тачно када дође време. 411 00:18:35,700 --> 00:18:40,690 Али сада заиста можете једноставно превести овај код вербално лево-десно, 412 00:18:40,690 --> 00:18:42,550 док не захвалан. 413 00:18:42,550 --> 00:18:46,170 Јер прасак, или знак узвика, означава појам не, тако да док 414 00:18:46,170 --> 00:18:47,010 Не захвалан. 415 00:18:47,010 --> 00:18:49,740 >> Дакле, опет, нисмо увели никакве нове концепте по себи. 416 00:18:49,740 --> 00:18:53,230 Разговарали смо о томе боолеанс назад када смо играли са нуле. 417 00:18:53,230 --> 00:18:55,690 Али схвати сада можемо само да почнете да пишете наш код у 418 00:18:55,690 --> 00:18:56,550 много различитих начина. 419 00:18:56,550 --> 00:19:00,010 Дакле, посебно у псет1, ако си некако боре да схватим пут 420 00:19:00,010 --> 00:19:03,400 напише неки програм, шансе су ти среће јер ће то бити 421 00:19:03,400 --> 00:19:05,780 број решења које се може десити на. 422 00:19:05,780 --> 00:19:09,850 На пример, ово је само три за чак најједноставније програма. 423 00:19:09,850 --> 00:19:10,180 У реду. 424 00:19:10,180 --> 00:19:13,860 А сада сећам у понедељак, оставили смо на овој белешци са повратком вредностима. 425 00:19:13,860 --> 00:19:18,280 Дакле, за први пут, написао је програм који не само да има главни, 426 00:19:18,280 --> 00:19:22,240 такође има своју сопствену функцију да сам овде написао. 427 00:19:22,240 --> 00:19:26,640 Дакле, у складу 31 кроз 34, ја сам реализовао коцке функцију. 428 00:19:26,640 --> 00:19:27,800 То није сложен. 429 00:19:27,800 --> 00:19:29,830 То је само пута пута, у овом случају. 430 00:19:29,830 --> 00:19:34,920 Али оно што је важно је да о томе водим улаз у форми и 431 00:19:34,920 --> 00:19:38,910 Ја враћам излаз у облику једног пута пута. 432 00:19:38,910 --> 00:19:43,940 >> Тако да сада имам могућност, слично сам се са инт сама, да позове 433 00:19:43,940 --> 00:19:47,120 ова функција позивом коцке функцију. 434 00:19:47,120 --> 00:19:49,470 А коцка функција узима неки улаз. 435 00:19:49,470 --> 00:19:52,030 А коцка функција даје неки излаз. 436 00:19:52,030 --> 00:19:56,660 И тако Насупрот томе, иф управо урадили нешто. 437 00:19:56,660 --> 00:19:59,490 То нису вратили ништа да ми је стало - иако је, како 438 00:19:59,490 --> 00:20:00,820 на страну, то ради врати вредност. 439 00:20:00,820 --> 00:20:02,650 Ти генерално га игнорисати. 440 00:20:02,650 --> 00:20:04,000 Принтф управо урадио нешто. 441 00:20:04,000 --> 00:20:06,220 Имао је споредни ефекат штампања на екрану. 442 00:20:06,220 --> 00:20:09,480 Насупрот томе овде, имамо коцке функцију, која 443 00:20:09,480 --> 00:20:11,400 заправо враћа нешто. 444 00:20:11,400 --> 00:20:12,960 >> Дакле, ово је генерално - 445 00:20:12,960 --> 00:20:15,260 за оне упознати са овим, то је прилично једноставан идеја. 446 00:20:15,260 --> 00:20:18,460 Али за оне који мање познају са том идејом доношења у улаза и добијање 447 00:20:18,460 --> 00:20:21,700 назад излази, хајде да пробамо нешто што супер једноставан. 448 00:20:21,700 --> 00:20:25,180 Да ли је неко пријатно долази на бину на кратко? 449 00:20:25,180 --> 00:20:27,460 Морате бити задовољни камером на тебе, као добро. 450 00:20:27,460 --> 00:20:27,640 Да. 451 00:20:27,640 --> 00:20:28,610 Ок, шта је ваше име? 452 00:20:28,610 --> 00:20:29,020 КЕН: Кен. 453 00:20:29,020 --> 00:20:29,420 Давид Ј. Малан: Кен. 454 00:20:29,420 --> 00:20:29,810 У реду, Кен. 455 00:20:29,810 --> 00:20:31,060 Хајде горе. 456 00:20:31,060 --> 00:20:34,660 Дакле, Кен ће бити овде функција врста. 457 00:20:34,660 --> 00:20:35,760 И идемо напред и урадите то. 458 00:20:35,760 --> 00:20:38,790 Хајдемо мало машту. 459 00:20:38,790 --> 00:20:39,770 Драго ми је што смо се упознали. 460 00:20:39,770 --> 00:20:41,010 Добродошли у центру пажње. 461 00:20:41,010 --> 00:20:41,980 У реду. 462 00:20:41,980 --> 00:20:45,590 Хајдемо овамо ово дугме. 463 00:20:45,590 --> 00:20:46,420 У реду. 464 00:20:46,420 --> 00:20:49,490 Дакле, овде имате модерну цхалкбоард. 465 00:20:49,490 --> 00:20:53,050 А шта сам ја јесте основна функција, на пример. 466 00:20:53,050 --> 00:20:55,990 А ја немам иПад у руци. 467 00:20:55,990 --> 00:20:59,000 Ја стварно не сећам како - па, заправо, не могу рећи. 468 00:20:59,000 --> 00:21:02,200 Ја стварно не имати добар рукопис. 469 00:21:02,200 --> 00:21:05,260 И тако дакле, желим да одштампате нешто на екрану за мене. 470 00:21:05,260 --> 00:21:07,470 >> Тако сам био главни програм. 471 00:21:07,470 --> 00:21:15,060 И ја ћу да вам кажем да ово је писао у мојој пилетином нуле и 472 00:21:15,060 --> 00:21:16,600 онда вам полагања улаз. 473 00:21:16,600 --> 00:21:20,000 Дакле, као блесав иако ова вежба је појам функције и позивање 474 00:21:20,000 --> 00:21:22,260 Функција и враћања функција стварно своди на ово. 475 00:21:22,260 --> 00:21:23,120 Ја сам главни. 476 00:21:23,120 --> 00:21:26,270 Управо сам написао принтф ("нешто") на екрану. 477 00:21:26,270 --> 00:21:27,470 Ја водим овај програм. 478 00:21:27,470 --> 00:21:30,900 И чим иф буде зове, она траје један аргумент - или један параметар, 479 00:21:30,900 --> 00:21:31,660 понекад - 480 00:21:31,660 --> 00:21:32,780 између двоструких наводника. 481 00:21:32,780 --> 00:21:33,960 Овде је тај аргумент. 482 00:21:33,960 --> 00:21:35,740 Ја то пролази на Кена. 483 00:21:35,740 --> 00:21:39,390 Сада је црна кутија написан известан број година да изгледа 484 00:21:39,390 --> 00:21:41,070 само зна како да одштампате нешто на екрану. 485 00:21:41,070 --> 00:21:42,320 >> Дакле, извршити. 486 00:21:48,842 --> 00:21:49,900 То није лоше. 487 00:21:49,900 --> 00:21:50,890 Дакле, врло добро. 488 00:21:50,890 --> 00:21:52,900 Дакле, сада Кен врши извршење. 489 00:21:52,900 --> 00:21:55,810 Да ли он треба да ми преда нешто назад? 490 00:21:55,810 --> 00:21:57,240 Дакле, не да смо видели до сада. 491 00:21:57,240 --> 00:21:59,230 Опет, не принтф заправо враћа број. 492 00:21:59,230 --> 00:22:01,640 Али ми ћемо игнорисати, јер за сада нисмо користили. 493 00:22:01,640 --> 00:22:03,400 Дакле, то је то за Кена. 494 00:22:03,400 --> 00:22:06,650 И тако сада главни враћа да изврши - 495 00:22:06,650 --> 00:22:09,630 Главни преузима контролу програма поново, јер те линије кода, 496 00:22:09,630 --> 00:22:11,010 принтф, врши извршење. 497 00:22:11,010 --> 00:22:13,890 И ми идемо о нашем путу извршава све друге линије су тамо. 498 00:22:13,890 --> 00:22:14,130 >> У реду. 499 00:22:14,130 --> 00:22:17,080 Дакле, хајде да пробамо нешто другачије пример. 500 00:22:17,080 --> 00:22:22,430 И овај пут овде, хајде да прво обришете овде екран. 501 00:22:22,430 --> 00:22:24,670 И овај пут, ми ћемо урадити цубинг функцију. 502 00:22:24,670 --> 00:22:27,350 Али овај пут, ја очекујем излазни вредност. 503 00:22:27,350 --> 00:22:28,630 Зато идемо напред и урадите то. 504 00:22:28,630 --> 00:22:35,680 Тако да сада имам линију кода која каже к = коцке (к). 505 00:22:35,680 --> 00:22:36,930 Тако заправо хајде - 506 00:22:41,450 --> 00:22:43,940 линија кода, сећам се, изгледа овако. 507 00:22:43,940 --> 00:22:45,960 к = коцке (к). 508 00:22:45,960 --> 00:22:48,100 Дакле, како ће ово да ради? 509 00:22:48,100 --> 00:22:50,820 Зато идемо напред и да вам поново бели екран. 510 00:22:50,820 --> 00:22:55,000 А ја ћу сада да напише вредности к, које су у овом тренутку у 511 00:22:55,000 --> 00:23:01,080 Време се дешава да се, рецимо, 2, да га једноставно. 512 00:23:01,080 --> 00:23:04,890 Тако сам записао на парчету папира вредности од 2, 513 00:23:04,890 --> 00:23:06,100 који је мој к вредност. 514 00:23:06,100 --> 00:23:08,250 Ја дам га Кен. 515 00:23:08,250 --> 00:23:09,200 КЕН: И само написати одговор? 516 00:23:09,200 --> 00:23:12,660 Давид Ј. Малан: Да, хајде да напише одговор. 517 00:23:12,660 --> 00:23:13,030 Ок. 518 00:23:13,030 --> 00:23:16,280 И сада он мора да ми врати нешто. 519 00:23:16,280 --> 00:23:17,560 Дакле - 520 00:23:17,560 --> 00:23:18,170 савршен. 521 00:23:18,170 --> 00:23:18,840 Лепо Сегуе. 522 00:23:18,840 --> 00:23:21,970 >> Дакле, сада ми је предао врати вредност од 8, у овом случају. 523 00:23:21,970 --> 00:23:23,220 А шта да радим са њим? 524 00:23:23,220 --> 00:23:26,130 Па, у ствари, да видимо. 525 00:23:26,130 --> 00:23:26,640 Набавите ово право. 526 00:23:26,640 --> 00:23:27,880 Шта ћу да радим са њом? 527 00:23:27,880 --> 00:23:31,900 Сада ћу да искористим ову вредност и заправо га чувати у оним 528 00:23:31,900 --> 00:23:33,400 Исти бита у меморији. 529 00:23:33,400 --> 00:23:35,030 Али, погледајте, ја сам некако боре овде. 530 00:23:35,030 --> 00:23:38,280 Ја сам мало збуњена јер где сам у ствари пишем вредност к? 531 00:23:38,280 --> 00:23:41,840 Јер оно што сам урадио је физички рука Кен комад папира 532 00:23:41,840 --> 00:23:44,400 који је имао вредност 2, која је била к. 533 00:23:44,400 --> 00:23:46,300 И заиста, то је управо оно што се дешава. 534 00:23:46,300 --> 00:23:50,100 Тако испада да, када позовете функцију, и проћи у аргумент 535 00:23:50,100 --> 00:23:54,130 свиђа "Хелло Ворлд", или да прође као аргумент као 2, генерално, ти си 536 00:23:54,130 --> 00:23:56,720 пролази у копију тог аргумента. 537 00:23:56,720 --> 00:24:01,020 И тако као што сам записао број 2 овде и предао га Кен, да мора 538 00:24:01,020 --> 00:24:04,760 Мислим да сам још увек негде копију вредности 2. 539 00:24:04,760 --> 00:24:08,140 Јер заиста, сад кад сам добио назад вредност 8, морам да се вратим у 540 00:24:08,140 --> 00:24:12,010 РАМ и заправо напишу 8 где сам некада имао број 2. 541 00:24:12,010 --> 00:24:15,720 >> Дакле, визуелно запамтите овај појам проласка у буквално 542 00:24:15,720 --> 00:24:16,730 копија вредности. 543 00:24:16,730 --> 00:24:19,570 Кен ради своју ствар, предао ме назад нешто - у овом случају, 544 00:24:19,570 --> 00:24:20,820 вредност као 8. 545 00:24:20,820 --> 00:24:22,660 И онда морам да урадим нешто са те вредности ако 546 00:24:22,660 --> 00:24:24,880 Желим да га задржим около. 547 00:24:24,880 --> 00:24:29,470 Дакле, све ово ће бити све превише упознат пре дуго. 548 00:24:29,470 --> 00:24:33,082 Хвала вам пуно за ову демонстрацију овде, Кен. 549 00:24:33,082 --> 00:24:34,820 У реду. 550 00:24:34,820 --> 00:24:36,720 Врло добро урађено. 551 00:24:36,720 --> 00:24:40,610 Дакле, хајде да видимо како ће на крају односи на неке функције 552 00:24:40,610 --> 00:24:42,270 називајући да смо овде. 553 00:24:42,270 --> 00:24:47,610 Зато ме пусти да иде напред и да нас врати у цубинг пример. 554 00:24:47,610 --> 00:24:53,080 И приметите да ако желимо да заиста почну да ово даље, идемо 555 00:24:53,080 --> 00:24:57,050 морати да буду свесни чињенице да број к који је већ био прошао у 556 00:24:57,050 --> 00:25:01,390 Овде је другачије од онога што је заправо буде усвојен у функцији. 557 00:25:01,390 --> 00:25:03,940 Дакле, опет, ово је прошло од копије ће постати сасвим 558 00:25:03,940 --> 00:25:05,620 германе у само једном тренутку. 559 00:25:05,620 --> 00:25:09,320 >> Дакле, хајде да погледамо нешто што баш не ради праву још. 560 00:25:09,320 --> 00:25:11,790 Идем да иде напред и отвори трећи пример бугги, који 561 00:25:11,790 --> 00:25:13,560 је погрешан по природи. 562 00:25:13,560 --> 00:25:18,070 И то се зове бугги3, а спроводи замене функције. 563 00:25:18,070 --> 00:25:23,500 Дакле, овде имамо главну функцију која је к и и произвољно иницијализован да 564 00:25:23,500 --> 00:25:24,720 1 и 2, респективно. 565 00:25:24,720 --> 00:25:27,590 Могли би искористити ГетИнт, али ми само треба једноставну вежбу. 566 00:25:27,590 --> 00:25:29,680 Тако да је тешко-кодиране као 1 и 2. 567 00:25:29,680 --> 00:25:35,330 У линијама 21 и 22, ми смо изгледа одштампате Кс и И, једну по линији. 568 00:25:35,330 --> 00:25:39,620 Затим, на линији 23, тврдим ја замене ове вредности, тачка, тачка, тачка. 569 00:25:39,620 --> 00:25:43,030 Ја очигледно позвати функцију у складу 24 називом своп 570 00:25:43,030 --> 00:25:44,000 који узима два аргумента. 571 00:25:44,000 --> 00:25:46,430 То је потпуно легитиман за функције да се два аргумента. 572 00:25:46,430 --> 00:25:48,220 Видели смо то већ инт. 573 00:25:48,220 --> 00:25:50,370 Дакле, очигледно узима своп Кс и И. 574 00:25:50,370 --> 00:25:53,010 И као што јој име сугерише, надам се да ће то 575 00:25:53,010 --> 00:25:54,320 свап ове две вредности. 576 00:25:54,320 --> 00:25:57,560 Дакле, ја тврдим на линији 25, заменили. 577 00:25:57,560 --> 00:26:01,570 И репринт Кс и И под претпоставком да 578 00:26:01,570 --> 00:26:02,830 смо заиста они су заменили. 579 00:26:02,830 --> 00:26:04,370 Али, ако сам заиста покренути овај програм - 580 00:26:04,370 --> 00:26:06,060 дозволите ми да отворим прозор терминала. 581 00:26:06,060 --> 00:26:07,750 Дозволите ми да бугги3. 582 00:26:07,750 --> 00:26:09,970 Као што име сугерише, ово неће добро завршити. 583 00:26:09,970 --> 00:26:14,690 Јер, када сам ударио Ентер, приметити да је к 1. 584 00:26:14,690 --> 00:26:15,720 и 2. 585 00:26:15,720 --> 00:26:19,160 А ипак, на крају програма, још су, у ствари, исто. 586 00:26:19,160 --> 00:26:22,760 >> Дакле, на основу демонстрације управо сада са Кен, шта се заправо дешава? 587 00:26:22,760 --> 00:26:24,660 Па, хајде да зароните у ову свап функцију. 588 00:26:24,660 --> 00:26:25,800 То је супер кратак. 589 00:26:25,800 --> 00:26:28,020 То је само неколико линија кода дуго. 590 00:26:28,020 --> 00:26:32,810 Али шта је основни проблем заснован на једноставном прича испричана 591 00:26:32,810 --> 00:26:34,270 овде са Кен? 592 00:26:34,270 --> 00:26:36,115 Зашто је свап сломљено? 593 00:26:36,115 --> 00:26:37,365 [ИНАУДИБЛЕ] 594 00:26:39,840 --> 00:26:40,460 Управо тако. 595 00:26:40,460 --> 00:26:43,610 Тако смо складиштење на копији, не променљива себе. 596 00:26:43,610 --> 00:26:46,810 Другим речима, своп очигледно узима два аргумента, инт. 597 00:26:46,810 --> 00:26:49,370 И то је произвољно зове и б. 598 00:26:49,370 --> 00:26:54,430 А овде, ја сам прошао у Кс и И, који су редом 1 и 2. 599 00:26:54,430 --> 00:26:56,580 Али нисам буквално пролази у к. 600 00:26:56,580 --> 00:26:58,410 Нисам буквално пролази уи. 601 00:26:58,410 --> 00:27:01,230 Ја пролазу копију Кс и И копију. 602 00:27:01,230 --> 00:27:05,180 То је као скоро као да сте копирали и налепили у заменили вредности које 603 00:27:05,180 --> 00:27:07,440 желите заправо да манипулише. 604 00:27:07,440 --> 00:27:11,970 Дакле, ако је то случај, када сам програм почне извршавање 605 00:27:11,970 --> 00:27:14,140 линија 35, а затим 36 - 606 00:27:14,140 --> 00:27:17,740 кад дођем на ред 37, у овом тренутку у причи, шта је вредност? 607 00:27:20,740 --> 00:27:24,850 У овом тренутку у причи, линија 37, која је вредност у овом тренутку? 608 00:27:24,850 --> 00:27:25,980 Тако да само треба да буде 1. 609 00:27:25,980 --> 00:27:26,170 Зар не? 610 00:27:26,170 --> 00:27:29,100 Зато к донет као први аргумент. 611 00:27:29,100 --> 00:27:33,150 И ова функција само произвољно зове свој први аргумент,. 612 00:27:33,150 --> 00:27:35,130 Слично је и, други аргумент. 613 00:27:35,130 --> 00:27:37,930 И то је само произвољно зове други аргумент б. 614 00:27:37,930 --> 00:27:40,510 >> Сада овај дихотомија је заправо прилично једноставно објаснити. 615 00:27:40,510 --> 00:27:40,880 Размислите о томе. 616 00:27:40,880 --> 00:27:42,980 Нико од нас није срео особу која написао принтф. 617 00:27:42,980 --> 00:27:49,880 Па сигурно, он или она нема појма шта су наши варијабле 30 година касније се дешава 618 00:27:49,880 --> 00:27:50,710 да се зове. 619 00:27:50,710 --> 00:27:55,110 Дакле, мора да постоји разлика између онога што ви називате променљиве 620 00:27:55,110 --> 00:27:59,960 Функције пишете и шта ви зовете променљиве у функцијама које ћете 621 00:27:59,960 --> 00:28:01,770 позивања или коришћења. 622 00:28:01,770 --> 00:28:05,120 Другим речима, ја сам написао моје променљиве као кии. 623 00:28:05,120 --> 00:28:08,060 Али, ако је неко други написао свап функцију, он или она свакако 624 00:28:08,060 --> 00:28:10,480 Не знам шта би моји променљиве ће бити позван. 625 00:28:10,480 --> 00:28:13,850 Дакле, схватите да је то зато што имају ову дуалност имена. 626 00:28:13,850 --> 00:28:16,800 Технички, нисам могао да урадим ово случајност. 627 00:28:16,800 --> 00:28:19,750 Али они би и даље бити усвојен у што примерака. 628 00:28:19,750 --> 00:28:22,940 То би било чиста случајност естетски, ако тој особи која је писала 629 00:28:22,940 --> 00:28:25,590 своп је користио иста имена. 630 00:28:25,590 --> 00:28:25,930 >> У реду. 631 00:28:25,930 --> 00:28:29,010 Дакле, у овом тренутку у причи, ред 37, је 1. 632 00:28:29,010 --> 00:28:30,410 б је 2. 633 00:28:30,410 --> 00:28:32,040 А сада да наставим да их замене. 634 00:28:32,040 --> 00:28:34,730 Па пре свега, дозволите ми заправо урадили много више једноставно. 635 00:28:34,730 --> 00:28:36,500 Ја не знам шта су те три линије кода ради. 636 00:28:36,500 --> 00:28:37,370 Дозволите ми да урадим ово. 637 00:28:37,370 --> 00:28:38,850 б добија. 638 00:28:38,850 --> 00:28:40,170 добија б. 639 00:28:40,170 --> 00:28:41,450 Готово. 640 00:28:41,450 --> 00:28:43,540 Зашто је ово сломљено, логично? 641 00:28:46,980 --> 00:28:48,590 То је нека врста интуитивног ствар, зар не? 642 00:28:48,590 --> 00:28:50,640 Тако постаје б. 643 00:28:50,640 --> 00:28:52,450 И б постаје. 644 00:28:52,450 --> 00:28:55,410 Али проблем је у томе што чим линија 37 извршава, шта је 645 00:28:55,410 --> 00:28:58,170 вредност и б? 646 00:28:58,170 --> 00:28:59,070 Исто, 1. 647 00:28:59,070 --> 00:29:03,460 Зато што сте разбили, да тако кажем, ви сте променили б да буде једнак. 648 00:29:03,460 --> 00:29:06,000 Дакле, када линија 37 је извршена, то је сјајно. 649 00:29:06,000 --> 00:29:09,940 Ви сада имате две копије број 1 унутрашњости ове функције. 650 00:29:09,940 --> 00:29:14,720 Дакле, када сте рекли у реду 38, добија б, добро, ти си некако сјебана. 651 00:29:14,720 --> 00:29:17,370 Јер ти само додељивање 1 до 1. 652 00:29:17,370 --> 00:29:20,400 Ти си некако изгубио вредност коју стало. 653 00:29:20,400 --> 00:29:22,910 >> Дакле, у оригиналној верзији овога, погледајмо шта сам урадио. 654 00:29:22,910 --> 00:29:26,620 Ја уместо имао трећу линију кода који изгледа овако. 655 00:29:26,620 --> 00:29:29,910 Изјављујем привремену променљиву - тмп је веома чест назив 656 00:29:29,910 --> 00:29:31,240 за привремене променљиве. 657 00:29:31,240 --> 00:29:34,280 То је инт јер мора да одговара оно што ја желим да направим копију. 658 00:29:34,280 --> 00:29:39,720 Чувам копију унутар тмп. Дакле, када линија 37 је извршио, 659 00:29:39,720 --> 00:29:41,390 вредност је - 660 00:29:41,390 --> 00:29:42,970 брз разум цхецк - 661 00:29:42,970 --> 00:29:43,460 1. 662 00:29:43,460 --> 00:29:45,780 Вредност је 2 б. 663 00:29:45,780 --> 00:29:48,470 А вредност тмп је 1. 664 00:29:48,470 --> 00:29:51,470 Дакле, сада сам извршава линију 38. 665 00:29:51,470 --> 00:29:57,180 Дакле, када линија 38 извршава, узима вредности б. 666 00:29:57,180 --> 00:29:58,510 И б је 2. 667 00:29:58,510 --> 00:30:00,500 Тако је сада 2. 668 00:30:00,500 --> 00:30:03,110 Дакле, у овом тренутку у причи, је 2, Б је 2, 669 00:30:03,110 --> 00:30:05,130 и тмп је 1. 670 00:30:05,130 --> 00:30:09,330 Дакле, сада логично, ми можемо само плоп ТМП је вредност у б. 671 00:30:09,330 --> 00:30:10,690 И ми смо урадили. 672 00:30:10,690 --> 00:30:12,170 >> Зато смо решили тај проблем. 673 00:30:12,170 --> 00:30:16,040 Нажалост, када сам покренути овај програм у овом облику, он заправо не мењате 674 00:30:16,040 --> 00:30:17,700 било вредности. 675 00:30:17,700 --> 00:30:18,950 Али, да буде јасно, зашто? 676 00:30:23,420 --> 00:30:26,310 Поправио сам логичан проблем од пре само тренутак. 677 00:30:26,310 --> 00:30:31,150 Али опет, ако сам покренути овај програм, Кс и И остају непромењене до краја 678 00:30:31,150 --> 00:30:33,834 овог програма извршење. 679 00:30:33,834 --> 00:30:34,760 [ИНАУДИБЛЕ] 680 00:30:34,760 --> 00:30:36,030 Давид Ј. Малан: Дакле, ми нисмо вратили ништа. 681 00:30:36,030 --> 00:30:36,960 Дакле, то је истина. 682 00:30:36,960 --> 00:30:39,880 Али испоставило се да је то мало проблем овде, јер до сада, 683 00:30:39,880 --> 00:30:42,460 Једино што смо били у могућности да се врате је једна ствар. 684 00:30:42,460 --> 00:30:46,540 И то је ограничење Ц. Можете да стварно врати једну вредност, 685 00:30:46,540 --> 00:30:48,970 у ком случају, ја сам некако заглављена овде 686 00:30:48,970 --> 00:30:51,805 јер сам могао да се врати нову вредност к или сам могао да врати 687 00:30:51,805 --> 00:30:53,160 нова вредност и. 688 00:30:53,160 --> 00:30:54,330 Али желим оба назад. 689 00:30:54,330 --> 00:30:58,010 Дакле, повратак није овде једноставно решење. 690 00:30:58,010 --> 00:30:59,770 Али проблем је у основи зашто? 691 00:30:59,770 --> 00:31:03,270 Шта смо заправо заменили? 692 00:31:03,270 --> 00:31:04,010 и б. 693 00:31:04,010 --> 00:31:07,670 Али и б су копије кии, што значи да смо управо урадили све ово 694 00:31:07,670 --> 00:31:10,080 ради - управо смо провели као три минута разговора о замени 695 00:31:10,080 --> 00:31:11,680 функција и сва три од ових променљивих. 696 00:31:11,680 --> 00:31:15,090 И то је одлично, савршено тачно у изолацији. 697 00:31:15,090 --> 00:31:20,230 Али и Б је обим само у овим линијама овде. 698 00:31:20,230 --> 00:31:24,130 Дакле, баш као за петљу, ако прогласе цео сам унутра за 699 00:31:24,130 --> 00:31:27,400 петља - слично, ако декларисања и б унутар функције које 700 00:31:27,400 --> 00:31:30,550 Ви сте написали, они су једина валидна унутар те функције. 701 00:31:30,550 --> 00:31:35,020 Што значи да чим своп врши извршење и ми идемо са линије 24 до 702 00:31:35,020 --> 00:31:38,380 линија 25, Кс и И нису променили уопште. 703 00:31:38,380 --> 00:31:42,580 Управо си изгубила много времена замене копије променљивих. 704 00:31:42,580 --> 00:31:46,490 >> Тако испада да је решење за ово је заправо не-очигледна. 705 00:31:46,490 --> 00:31:49,210 Није сасвим довољно да се врате вредности, јер можемо 706 00:31:49,210 --> 00:31:50,320 само да врати једну вредност. 707 00:31:50,320 --> 00:31:53,370 И стварно не желим да замене оба Кс и И у исто време. 708 00:31:53,370 --> 00:31:55,020 Дакле, ми ћемо се вратити на ово. 709 00:31:55,020 --> 00:31:58,770 Али за сада, схватају да питање суштински произилази из чињенице 710 00:31:58,770 --> 00:32:00,660 да и б су копије. 711 00:32:00,660 --> 00:32:03,450 И они су у свом обиму. 712 00:32:03,450 --> 00:32:04,980 Па, хајде да покушамо да реши ово на неки начин. 713 00:32:04,980 --> 00:32:09,200 Дозволите ми заправо помицати овде и отвори се, рецимо, четврта варијанта 714 00:32:09,200 --> 00:32:11,170 ово, бугги4. 715 00:32:11,170 --> 00:32:13,230 А шта је ово? 716 00:32:13,230 --> 00:32:16,690 То је слично, али једноставнији проблем да погледате пре него што узме нож у 717 00:32:16,690 --> 00:32:17,530 реси. 718 00:32:17,530 --> 00:32:19,440 Овај програм се зове прираштај. 719 00:32:19,440 --> 00:32:24,320 И очигледно је иницијализује на 1 к цео број у линији 18. 720 00:32:24,320 --> 00:32:25,950 И онда тврдим к 1. 721 00:32:25,950 --> 00:32:28,020 Ја сам тада тврде увецава, тачка, тачка, тачка. 722 00:32:28,020 --> 00:32:29,460 Онда позовите прираста. 723 00:32:29,460 --> 00:32:33,480 Али онда у редовима 22 и 23, ја тврдим да је то било увећава. 724 00:32:33,480 --> 00:32:37,780 Тврдим к је сада шта год да је, 2 вероватно. 725 00:32:37,780 --> 00:32:39,770 >> Али овај програм је луд. 726 00:32:39,770 --> 00:32:41,020 У чему је проблем? 727 00:32:43,450 --> 00:32:44,418 Да? 728 00:32:44,418 --> 00:32:45,668 [ИНАУДИБЛЕ] 729 00:32:49,260 --> 00:32:49,850 Давид Ј. Малан: Тачно. 730 00:32:49,850 --> 00:32:52,430 Дакле, к је очигледно проглашен на линији 18. 731 00:32:52,430 --> 00:32:54,410 То је унутар заграда ГЛАВНИ а. 732 00:32:54,410 --> 00:32:58,470 Дакле, једноставан одговор је у томе, па, к постоји овде. 733 00:32:58,470 --> 00:33:01,510 То не постоји у линији 32. 734 00:33:01,510 --> 00:33:03,710 Дакле, овај програм заправо неће ни саставити. 735 00:33:03,710 --> 00:33:07,910 Компајлер, када покушам састављања овог кода, ће викати на мене 736 00:33:07,910 --> 00:33:13,190 о неком необјављеном идентификатора или нешто у том смислу. 737 00:33:13,190 --> 00:33:13,870 У ствари, хајде да пробамо. 738 00:33:13,870 --> 00:33:15,235 То је направити бугги4. 739 00:33:17,780 --> 00:33:18,190 Ту је. 740 00:33:18,190 --> 00:33:22,030 Коришћење непријављеног идентификатора к у линији 32. 741 00:33:22,030 --> 00:33:25,700 И заправо, будимо експлицитнији овде данас, тако да је то корисно у 742 00:33:25,700 --> 00:33:27,140 Радно време и код куће. 743 00:33:27,140 --> 00:33:29,000 Приметимо да је мало загонетно написано. 744 00:33:29,000 --> 00:33:31,560 Али чињеница да кланг има викао на нас, говорећи 745 00:33:31,560 --> 00:33:36,970 бугги4.ц: 32:5, је заправо корисно. 746 00:33:36,970 --> 00:33:41,970 То значи да је грешка на линији 32 на позицији карактера пет. 747 00:33:41,970 --> 00:33:44,670 Тако један, два, три, четири, пет. 748 00:33:44,670 --> 00:33:46,640 То је, у ствари, где је проблем. 749 00:33:46,640 --> 00:33:49,710 А такође треба имати на уму при радног времена и код куће, ја сам срећан овде. 750 00:33:49,710 --> 00:33:50,740 Имам једну грешку. 751 00:33:50,740 --> 00:33:52,660 То ће да буде релативно лако поправити. 752 00:33:52,660 --> 00:33:56,220 Али, ако добијете цео екран пун неодољив грешци, опет, 753 00:33:56,220 --> 00:33:59,240 Схватамо да Најнижи човек да буде само симптом 754 00:33:59,240 --> 00:34:00,320 Највиши они. 755 00:34:00,320 --> 00:34:03,560 Дакле, увек јури доле своје грешке од врха на доле. 756 00:34:03,560 --> 00:34:06,720 Јер постоји само можда Тратинчица ланац ефекат који вас сугерише 757 00:34:06,720 --> 00:34:09,030 имају много више проблема него што стварно раде. 758 00:34:09,030 --> 00:34:14,989 >> Па како смо могли ово поправити ако је мој циљ је да повећате к? 759 00:34:14,989 --> 00:34:15,370 Шта је то? 760 00:34:15,370 --> 00:34:15,620 Ок. 761 00:34:15,620 --> 00:34:16,679 Дакле, можемо направити к глобална. 762 00:34:16,679 --> 00:34:18,860 Узмимо пречицу који сам упозоравао и раније. 763 00:34:18,860 --> 00:34:20,550 Али врага, ми само треба брзо поправити. 764 00:34:20,550 --> 00:34:23,949 Па рецимо инт овде. 765 00:34:23,949 --> 00:34:25,600 То чини к глобална. 766 00:34:25,600 --> 00:34:28,460 Дакле, сада главни има приступ до ње. 767 00:34:28,460 --> 00:34:31,780 И прираст има приступ до ње. 768 00:34:31,780 --> 00:34:33,860 И тако пусти ме напред и да састави ово сада. 769 00:34:33,860 --> 00:34:36,330 Направите бугги4, Ентер. 770 00:34:36,330 --> 00:34:37,440 Изгледа да сада саставити. 771 00:34:37,440 --> 00:34:40,949 Хајде да покренемо бугги4, а изгледа да се заиста ради. 772 00:34:40,949 --> 00:34:42,780 Сада је то једна од тих ствари - 773 00:34:42,780 --> 00:34:45,870 како ја кажем, не како ја радим, као што сам управо овде урадили. 774 00:34:45,870 --> 00:34:49,239 Јер у принципу, наши програми ће добити много занимљивији и 775 00:34:49,239 --> 00:34:50,440 много дуже од тога. 776 00:34:50,440 --> 00:34:53,199 А ако ваше решење проблема зивотних је само ах, стави све 777 00:34:53,199 --> 00:34:57,550 променљиве на врху датотеке, врло брзо не добију програми 778 00:34:57,550 --> 00:34:59,700 хоррифицалли тешко управљати. 779 00:34:59,700 --> 00:35:02,050 Постаје све теже да смислим нове имена променљивих. 780 00:35:02,050 --> 00:35:05,240 Постаје све теже да схвате шта променљива ради шта. 781 00:35:05,240 --> 00:35:08,250 >> И тако у принципу, то није добро решење. 782 00:35:08,250 --> 00:35:09,780 Дакле, хајде да урадимо то боље. 783 00:35:09,780 --> 00:35:11,920 Ми не желимо да овде користе глобалну променљиву. 784 00:35:11,920 --> 00:35:14,050 Ја не желим да повећате к. 785 00:35:14,050 --> 00:35:16,050 Тако да сам очигледно могао - 786 00:35:16,050 --> 00:35:18,450 на крају крајева, то је нека врста смешне приче, јер смо управо урадили. 787 00:35:18,450 --> 00:35:22,050 Али ако ја не знам о том оператеру, или није дозвољено да 788 00:35:22,050 --> 00:35:27,700 промените га у главни себи, како би други могао да применим Кена овде, ово 789 00:35:27,700 --> 00:35:31,450 Време не коцка, али да повећате? 790 00:35:31,450 --> 00:35:32,700 Како да променим овде ову ствар? 791 00:35:32,700 --> 00:35:33,025 Да. 792 00:35:33,025 --> 00:35:34,275 [ИНАУДИБЛЕ] 793 00:35:37,430 --> 00:35:38,000 Давид Ј. Малан: Добро, добро. 794 00:35:38,000 --> 00:35:40,490 Па зашто не бих прошао у к? 795 00:35:40,490 --> 00:35:44,390 И онда, уместо да га врати, зашто не бих се врате к + 1? 796 00:35:44,390 --> 00:35:46,370 Сада, још пар ствари да се овде променити. 797 00:35:46,370 --> 00:35:47,530 Ја сам на правом путу. 798 00:35:47,530 --> 00:35:48,910 Шта још треба да подеси? 799 00:35:48,910 --> 00:35:49,470 Неко други. 800 00:35:49,470 --> 00:35:49,882 Да? 801 00:35:49,882 --> 00:35:51,530 [ИНАУДИБЛЕ] 802 00:35:51,530 --> 00:35:53,520 Давид Ј. Малан: Морам да променим тип повратка прираста 803 00:35:53,520 --> 00:35:54,590 јер није то поништава. 804 00:35:54,590 --> 00:35:56,650 Празнина значи ништа не враћа. 805 00:35:56,650 --> 00:35:57,600 Али јасно је, сада је то. 806 00:35:57,600 --> 00:36:01,280 Дакле, то треба да се промени на инт да буде у складу са оним 807 00:36:01,280 --> 00:36:02,580 Ја стварно враћам. 808 00:36:02,580 --> 00:36:04,580 >> Сада је нешто друго и даље луд овде. 809 00:36:04,580 --> 00:36:04,982 Да? 810 00:36:04,982 --> 00:36:06,590 [ИНАУДИБЛЕ] 811 00:36:06,590 --> 00:36:07,630 Давид Ј. Малан: Па морам да повећате к? 812 00:36:07,630 --> 00:36:10,336 [ИНАУДИБЛЕ] 813 00:36:10,336 --> 00:36:11,880 Давид Ј. Малан: Ах, тако ми треба да прође к. 814 00:36:11,880 --> 00:36:13,300 Зато морам да урадим ово. 815 00:36:17,590 --> 00:36:19,690 Дакле прототипа, морам да променим ово овде. 816 00:36:19,690 --> 00:36:21,290 Дакле, ово мора да постане инт. 817 00:36:21,290 --> 00:36:22,820 Ово мора да постане - 818 00:36:22,820 --> 00:36:23,670 хмм. 819 00:36:23,670 --> 00:36:24,710 Ја стварно имам бубу овде доле. 820 00:36:24,710 --> 00:36:25,780 Хајде да поправимо ово прво. 821 00:36:25,780 --> 00:36:27,990 Шта би то заправо било? 822 00:36:27,990 --> 00:36:29,330 Дакле, то мора да буде инт нешто. 823 00:36:29,330 --> 00:36:30,340 То би могао да буде к. 824 00:36:30,340 --> 00:36:33,120 Али искрено, ако почну да позивају све своје к променљивих, то ће добити 825 00:36:33,120 --> 00:36:35,250 све мање и мање јасно шта је шта. 826 00:36:35,250 --> 00:36:38,210 Па хајде да произвољно бирају другу конвенцију именовања за моје 827 00:36:38,210 --> 00:36:40,220 помоћне функције, функције пишем. 828 00:36:40,220 --> 00:36:41,100 Ми ћемо га зову. 829 00:36:41,100 --> 00:36:44,500 Или бисмо могли да га зовемо - назовимо га евен_нумбер бити још јасније. 830 00:36:44,500 --> 00:36:47,610 Па онда морам да се врати све што је број 1 плус. 831 00:36:47,610 --> 00:36:49,720 А сада морам да промените једну другу ствар овде, а један 832 00:36:49,720 --> 00:36:50,700 друга ствар овде. 833 00:36:50,700 --> 00:36:54,150 Шта ја имам да се промени на линији 21 прво? 834 00:36:54,150 --> 00:36:55,390 Морам да га доделите к. 835 00:36:55,390 --> 00:36:57,480 Тако да не могу тек тако звати к прираста. 836 00:36:57,480 --> 00:37:01,000 Морам да се сетим одговор променом вредности к на 837 00:37:01,000 --> 00:37:02,020 левој страни. 838 00:37:02,020 --> 00:37:04,930 И мада је к сада лево и десно, то је потпуно у реду, јер 839 00:37:04,930 --> 00:37:08,370 десна страна добија прво извршити онда бива плоппед у лево 840 00:37:08,370 --> 00:37:10,240 рука ствар, к у овом случају. 841 00:37:10,240 --> 00:37:11,900 И онда на крају, ово је сада лако поправити. 842 00:37:11,900 --> 00:37:15,080 То само треба да одговара оно што је доле. 843 00:37:15,080 --> 00:37:17,120 Инт број. 844 00:37:17,120 --> 00:37:17,320 >> У реду. 845 00:37:17,320 --> 00:37:20,290 Дакле, цела гомила промена за стварно глупо функцију. 846 00:37:20,290 --> 00:37:24,250 Али представник ствари које смо све ћемо желе да раде. 847 00:37:24,250 --> 00:37:25,490 Тако да бугги4. 848 00:37:25,490 --> 00:37:26,485 Сам зезнуо сам негде. 849 00:37:26,485 --> 00:37:27,520 Ох, мој Боже. 850 00:37:27,520 --> 00:37:29,660 Пет грешака у, рецимо, шест линија програм. 851 00:37:29,660 --> 00:37:36,500 Дакле, шта је било на линији 18, карактер 5? 852 00:37:36,500 --> 00:37:36,970 У реду. 853 00:37:36,970 --> 00:37:39,330 Зато морам да прогласи овај Инт. 854 00:37:39,330 --> 00:37:39,630 У реду. 855 00:37:39,630 --> 00:37:41,790 Дакле, хајде да видимо, гомилу других грешака. 856 00:37:41,790 --> 00:37:42,230 О мој Боже. 857 00:37:42,230 --> 00:37:43,880 19, 18, 21. 858 00:37:43,880 --> 00:37:46,020 Али опет, хајде да обришете екран - 859 00:37:46,020 --> 00:37:48,660 Контрола Л овде - и поново покренути кланг. 860 00:37:48,660 --> 00:37:51,340 Дакле, пет проблеми заправо само то једно. 861 00:37:51,340 --> 00:37:53,500 Дакле, сада хајде да бугги4, Ентер. 862 00:37:53,500 --> 00:37:54,150 Уф. 863 00:37:54,150 --> 00:37:57,434 к је правилно повећава. 864 00:37:57,434 --> 00:37:58,420 >> У реду. 865 00:37:58,420 --> 00:38:01,700 Сва питања о томе како да повећате број? 866 00:38:01,700 --> 00:38:02,896 Да? 867 00:38:02,896 --> 00:38:06,864 ПРЕДСЕДНИК 2: Зашто је то можете само да промените к на броју у променљива 868 00:38:06,864 --> 00:38:08,860 име и то ћемо знати на шта мислите? 869 00:38:08,860 --> 00:38:09,600 Давид Ј. Малан: Добро питање. 870 00:38:09,600 --> 00:38:13,130 Како то да ја могу променити к на броју, а програм ће знати 871 00:38:13,130 --> 00:38:13,990 одмах? 872 00:38:13,990 --> 00:38:16,120 Дакле, опет, мисле о томе као ове апстракције. 873 00:38:16,120 --> 00:38:20,110 Дакле, ако сам ја главни и Кен је постепен, искрено, не занима 874 00:38:20,110 --> 00:38:21,540 шта Кен зове његов иПад. 875 00:38:21,540 --> 00:38:25,350 Не занима ме оно што он назива све што има везе са његовом спровођењу 876 00:38:25,350 --> 00:38:26,550 ове функционалности. 877 00:38:26,550 --> 00:38:32,130 Дакле, ово је имплементација детаљ који сам, главни, не 878 00:38:32,130 --> 00:38:33,010 морамо да бринемо о томе. 879 00:38:33,010 --> 00:38:37,440 И тако једноставно мењање доследно унутар функције, број овде 880 00:38:37,440 --> 00:38:41,340 и број овде, то је све што је потребно тако дуго док сам компајлирате. 881 00:38:41,340 --> 00:38:43,820 То је нешто као, ако мислите о - многи од нас, они са вама возача 882 00:38:43,820 --> 00:38:46,590 лиценце који су вођени, или ако чак сам возио у аутомобилу - 883 00:38:46,590 --> 00:38:50,710 већина нас нема појма како ауто ради испод хаубе. 884 00:38:50,710 --> 00:38:54,710 И буквално, ако отвори хаубу, највише од нас - укључујући и мене - 885 00:38:54,710 --> 00:38:56,580 неће да знам шта тражимо. 886 00:38:56,580 --> 00:38:58,850 Некако као да сте можда осећате са стварима као што је овај сада. 887 00:38:58,850 --> 00:39:01,380 Али ми заиста не морају да брину како ауто ради. 888 00:39:01,380 --> 00:39:05,000 Ми не морамо да бринемо шта све шипке и клипова и кабловима унутар 889 00:39:05,000 --> 00:39:07,700 ауто се заправо ради. 890 00:39:07,700 --> 00:39:11,360 >> Дакле, нешто као оно што ви зовете клип није битно 891 00:39:11,360 --> 00:39:11,920 овде у овом случају. 892 00:39:11,920 --> 00:39:12,490 Иста идеја. 893 00:39:12,490 --> 00:39:12,670 Да? 894 00:39:12,670 --> 00:39:13,920 [ИНАУДИБЛЕ] 895 00:39:25,250 --> 00:39:29,530 Давид Ј. Малан: Ако пре било више користи од променљивом ка тренутку, 896 00:39:29,530 --> 00:39:32,220 ви, програмер, морати да их мењају свуда. 897 00:39:32,220 --> 00:39:35,230 Или можете да урадите буквално Филе, Мени, а затим Финд / Реплаце, 898 00:39:35,230 --> 00:39:36,270 тако нешто. 899 00:39:36,270 --> 00:39:40,110 Али ћете морати да се те промене. 900 00:39:40,110 --> 00:39:41,200 Морате бити доследни. 901 00:39:41,200 --> 00:39:42,450 [ИНАУДИБЛЕ] 902 00:39:47,200 --> 00:39:48,960 Давид Ј. Малан: Посебно наређење као и овде? 903 00:39:48,960 --> 00:39:52,660 Ако је ово био други инт број? 904 00:39:52,660 --> 00:39:52,940 Да. 905 00:39:52,940 --> 00:39:56,430 Дакле, да би битно када позивате функцију. 906 00:39:56,430 --> 00:40:00,350 Дакле, ако сам се зове пораст овде са нечим нешто запета, 907 00:40:00,350 --> 00:40:01,400 постоји директна мапирање. 908 00:40:01,400 --> 00:40:04,490 Прва променљива, шта год да се зове, је направио копију првог 909 00:40:04,490 --> 00:40:05,480 Аргумент овамо. 910 00:40:05,480 --> 00:40:07,280 Нажалост, ово не би требало да буде заграда. 911 00:40:07,280 --> 00:40:09,300 Други аргумент линије са другом. 912 00:40:09,300 --> 00:40:11,220 >> Тако да би, да је важно. 913 00:40:11,220 --> 00:40:11,490 У реду. 914 00:40:11,490 --> 00:40:13,360 Жао ми је дуг пут до тамо. 915 00:40:13,360 --> 00:40:14,610 Остала питања? 916 00:40:16,460 --> 00:40:16,850 У реду. 917 00:40:16,850 --> 00:40:20,300 Дакле, хајде да видимо, ако не могу да сликам слику о томе шта се заправо дешава 918 00:40:20,300 --> 00:40:22,160 Овде испод хаубе, да тако кажем. 919 00:40:22,160 --> 00:40:26,310 Дакле, ово је правоугаоник који могу да представљају меморију рачунара. 920 00:40:26,310 --> 00:40:31,240 Дакле, чак и ако немате појма колико меморије ради или колико РАМ радови, најмање 921 00:40:31,240 --> 00:40:33,590 Претпостављам да имате гомиле ових дана. 922 00:40:33,590 --> 00:40:34,740 Имаш мегабајта њега. 923 00:40:34,740 --> 00:40:35,760 Имаш гигабајта њега. 924 00:40:35,760 --> 00:40:40,690 И ми знамо из недеље нуле да бајт је само шта? 925 00:40:40,690 --> 00:40:41,280 8 бита. 926 00:40:41,280 --> 00:40:42,730 Добро, па 8 нуле и јединице. 927 00:40:42,730 --> 00:40:46,300 Дакле, ако ваш рачунар има свирку РАМ, две свирке РАМ ових дана, имате 928 00:40:46,300 --> 00:40:54,450 милијарди или 2 милијарде бајтова меморије, или око 8 милијарди динара, или 16 милијарде 929 00:40:54,450 --> 00:40:56,560 бита, унутар рачунара. 930 00:40:56,560 --> 00:40:59,710 Сада за разлику од малог вунаста Вилија пример, није магнетне честице 931 00:40:59,710 --> 00:41:00,560 обично више. 932 00:41:00,560 --> 00:41:04,470 Све у лаптоп бар је солид стате дискова, ССД, да 933 00:41:04,470 --> 00:41:05,560 Управо нема покретних делова. 934 00:41:05,560 --> 00:41:06,710 То је све електронски. 935 00:41:06,710 --> 00:41:08,070 То је све струја заснива. 936 00:41:08,070 --> 00:41:12,360 Па мислим, међутим, овог правоугаоника као само представља једну или две 937 00:41:12,360 --> 00:41:13,930 гигабајта меморије коју имате. 938 00:41:13,930 --> 00:41:15,500 >> Дакле, то је комад меморије. 939 00:41:15,500 --> 00:41:20,460 Сада свет информатике има неку врсту подељена искључен комада 940 00:41:20,460 --> 00:41:22,570 меморије да раде различите ствари. 941 00:41:22,570 --> 00:41:25,930 Тако на пример, ако је ово рачунара РАМ-а - како је предложио 942 00:41:25,930 --> 00:41:30,400 правоугаоник тамо - Испада да по обичају, на врху меморије, тако да 943 00:41:30,400 --> 00:41:33,170 да говоре, генерално оно што се зове текст сегмент. 944 00:41:33,170 --> 00:41:35,910 То су нуле и јединице које сте сачинили. 945 00:41:35,910 --> 00:41:39,040 Дакле, када смо гледали испод хаубе шта а.оут је, све 946 00:41:39,040 --> 00:41:40,360 су нуле и јединице - 947 00:41:40,360 --> 00:41:44,000 када покренете програм, те нуле и јединице се учитавају са хард 948 00:41:44,000 --> 00:41:46,290 Погон у нешто што се зове РАМ-а. 949 00:41:46,290 --> 00:41:48,950 И у РАМ, они ставили на врху. 950 00:41:48,950 --> 00:41:50,330 Сада међувремену, имате и друге ствари. 951 00:41:50,330 --> 00:41:53,060 Иницијализују подаци, неиницијализоване податке. 952 00:41:53,060 --> 00:41:56,440 Та два ирок круг меморије односе на глобалне променљиве, које 953 00:41:56,440 --> 00:41:57,530 не користи често. 954 00:41:57,530 --> 00:42:00,630 Али понекад, ако то урадите, они завршавају тамо као добро. 955 00:42:00,630 --> 00:42:01,620 Затим, ту је нека друга ствар. 956 00:42:01,620 --> 00:42:04,130 Енвиронмент променљиве, које нећемо провести много времена на. 957 00:42:04,130 --> 00:42:06,120 Али онда две важне ствари које ће вратити током ове 958 00:42:06,120 --> 00:42:08,130 семестар, стек и гомила. 959 00:42:08,130 --> 00:42:12,280 >> Дакле, већина меморији рачунара је резервисан када је покренут програм за 960 00:42:12,280 --> 00:42:14,880 нешто што се зове штос и нешто што се зове гомиле. 961 00:42:14,880 --> 00:42:16,940 А ми нећемо да разговарамо о гомили данас, али ћемо 962 00:42:16,940 --> 00:42:18,180 разговарају о стека. 963 00:42:18,180 --> 00:42:22,910 И стек је требало да дочара визуелни попут трпезарији 964 00:42:22,910 --> 00:42:26,120 оброк касете у Матхер кући, или где год да се налазите, где 965 00:42:26,120 --> 00:42:27,810 трпезарија особље очистите их сваки дан. 966 00:42:27,810 --> 00:42:30,180 Они стек их од пода на горе. 967 00:42:30,180 --> 00:42:33,800 А слично у меморији, постоји ова идеја стављања нешто на 968 00:42:33,800 --> 00:42:36,740 стек, стављајући нешто на стек, стављајући нешто на стеку. 969 00:42:36,740 --> 00:42:38,000 А шта ми подразумевамо под овим? 970 00:42:38,000 --> 00:42:41,430 Па, хајде да зумирате на само доњој половини слике, ваш компјутер 971 00:42:41,430 --> 00:42:43,990 РАМ-а, да предложи следеће. 972 00:42:43,990 --> 00:42:48,300 Испада да када покренете програм као а.оут или здраво, шта год 973 00:42:48,300 --> 00:42:49,920 Програм је да сте написали, 974 00:42:49,920 --> 00:42:53,030 опет, ти нуле и јединице су учитан са вашег хард диска - што је 975 00:42:53,030 --> 00:42:56,190 дугорочно складиштење, остаје тамо чак и када извадите утикач - 976 00:42:56,190 --> 00:42:57,220 учита у РАМ. 977 00:42:57,220 --> 00:42:59,020 РАМ је бржи од хард дискова. 978 00:42:59,020 --> 00:43:00,700 То је мање од хард дискова. 979 00:43:00,700 --> 00:43:03,490 Али то је место где живи програми док сте их приказују. 980 00:43:03,490 --> 00:43:06,380 >> Дакле, два пута кликнете на програм на Мац или ПЦ - то је учитан из 981 00:43:06,380 --> 00:43:07,750 хард диск у РАМ. 982 00:43:07,750 --> 00:43:11,760 Чим се то учита у РАМ, и нуле и јединице иду у правцу врха, 983 00:43:11,760 --> 00:43:13,130 тзв текст сегмент. 984 00:43:13,130 --> 00:43:17,040 Али онда, чим је ваш програм заправо почиње са радом, главна 985 00:43:17,040 --> 00:43:18,140 Функција се позива. 986 00:43:18,140 --> 00:43:21,070 И главно, као што смо видели, често има локалне променљиве. 987 00:43:21,070 --> 00:43:24,560 И она има Интс и гудаче и слова и као. 988 00:43:24,560 --> 00:43:28,300 Дакле, ако ваш програм који сте написали или програм који сте 989 00:43:28,300 --> 00:43:33,680 двапут кликнуо користи неке променљиве унутар главни, они завршавају на 990 00:43:33,680 --> 00:43:37,020 дну гомиле сећања, да тако кажем. 991 00:43:37,020 --> 00:43:39,160 Сада конкретније, шта то заправо значи? 992 00:43:39,160 --> 00:43:44,080 То само значи да ако ћемо пребројати ствари - 993 00:43:44,080 --> 00:43:49,380 ако смо ишли на број бајтова РАМ меморије на вашем рачунару, приметићете да 994 00:43:49,380 --> 00:43:51,650 ово може бити бајт број нула. 995 00:43:51,650 --> 00:43:56,130 Ово може бити бајт број један, два, три, четири, пет, шест, сви 996 00:43:56,130 --> 00:43:57,290 начин до свиђа - 997 00:43:57,290 --> 00:44:01,520 2 милијарде ће бити све тако горе на врху. 998 00:44:01,520 --> 00:44:05,960 Другим речима, када говоримо о РАМ меморије или у смислу бајтова, она 999 00:44:05,960 --> 00:44:09,680 само значи да је неко одлучио шта да нумерисати сваки од 1000 00:44:09,680 --> 00:44:11,110 ти комади меморије. 1001 00:44:11,110 --> 00:44:16,950 >> Дакле, када вам је потребно 32 бита за инт, или вам је потребно 8 битова за знак, где 1002 00:44:16,950 --> 00:44:18,320 они завршити у меморији? 1003 00:44:18,320 --> 00:44:20,650 Па концептуално, они само завршити на дну ове 1004 00:44:20,650 --> 00:44:21,780 ствар се зове штос. 1005 00:44:21,780 --> 00:44:25,670 Али оно што је интересантно је сада када је главни зове функција. 1006 00:44:25,670 --> 00:44:28,830 Претпоставимо функцију зове трла, само произвољно име. 1007 00:44:28,830 --> 00:44:32,480 Шта се дешава је главни налази на дну ове гомиле меморије. 1008 00:44:32,480 --> 00:44:35,630 Бијело сада је стављен на врху главни у меморији. 1009 00:44:35,630 --> 00:44:40,020 Дакле, све локалне променљиве које трла је завршити врсту концептуално горе 1010 00:44:40,020 --> 00:44:40,770 оне у главни. 1011 00:44:40,770 --> 00:44:46,920 Ако трла позива другу функцију која се зове бар оне променљиве завршити овде. 1012 00:44:46,920 --> 00:44:49,790 Ако трака зове нешто друго, овде, овде, овде. 1013 00:44:49,790 --> 00:44:53,900 Дакле, оно што је занимљиво у вези покретања програма је у томе што ви називате функције, 1014 00:44:53,900 --> 00:44:57,720 и као те функције позива функције, а као те функције позива функције, 1015 00:44:57,720 --> 00:45:00,980 правите ову гомилу функција у меморији. 1016 00:45:00,980 --> 00:45:06,740 И само једном у функцији повратка да почнете да се вратим ту меморију. 1017 00:45:06,740 --> 00:45:11,190 Зато је један од најлакших начина да останете без меморије у рачунарском програму је 1018 00:45:11,190 --> 00:45:14,170 написати функције које никада не врате. 1019 00:45:14,170 --> 00:45:16,650 >> Тако, на пример, да покажу колико са 1020 00:45:16,650 --> 00:45:18,460 намерно бугги програма. 1021 00:45:18,460 --> 00:45:24,690 Дозволите ми да иде напред и да # инцлуде инт маин (воид). 1022 00:45:24,690 --> 00:45:31,270 И ја ћу да урадим, док (2> 1), што се вероватно неће никада 1023 00:45:31,270 --> 00:45:33,370 промените на нас. 1024 00:45:33,370 --> 00:45:37,720 И дозволите ми да иде напред и да се сада принтф. 1025 00:45:37,720 --> 00:45:39,950 Заправо, то ће бити мање визуелно занимљива. 1026 00:45:39,950 --> 00:45:40,460 Хајде да то урадимо. 1027 00:45:40,460 --> 00:45:44,840 За инт (и = 0 и> 0). 1028 00:45:44,840 --> 00:45:49,740 Хајде да направимо ову грешку, и + +. 1029 00:45:49,740 --> 00:45:51,150 И немојмо принтф овде. 1030 00:45:51,150 --> 00:45:52,550 Хајде да вежбају оно што сам проповедао. 1031 00:45:52,550 --> 00:45:54,090 Хајде да овде имамо метод. 1032 00:45:54,090 --> 00:46:00,860 Празнина хор, а ми ћемо рећи инт. 1033 00:46:00,860 --> 00:46:02,295 А онда ћу да кажем, иф - 1034 00:46:04,871 --> 00:46:06,790 ох, хајде да то више занимљиво. 1035 00:46:06,790 --> 00:46:08,350 Хајде да ствари не штампа ништа. 1036 00:46:08,350 --> 00:46:10,530 Хајде само то. 1037 00:46:10,530 --> 00:46:11,780 Цхорус (и). 1038 00:46:16,630 --> 00:46:17,000 >> У реду. 1039 00:46:17,000 --> 00:46:20,040 Дакле, ово је луд, јер зашто? 1040 00:46:20,040 --> 00:46:22,850 Правим ово што ја идем, јер програм не заправо ништа 1041 00:46:22,850 --> 00:46:23,420 интереса. 1042 00:46:23,420 --> 00:46:24,670 Али то није циљ. 1043 00:46:24,670 --> 00:46:30,440 Циљ је да се напише програм чија је главна функција шта ради, очигледно? 1044 00:46:30,440 --> 00:46:31,370 Позив себе. 1045 00:46:31,370 --> 00:46:32,600 И заправо, не треба петљу. 1046 00:46:32,600 --> 00:46:36,070 Хајде да поједностави ово само како да не изгуби из вида стварно 1047 00:46:36,070 --> 00:46:37,310 фундаментална грешка. 1048 00:46:37,310 --> 00:46:39,200 Главни позиви хор да пева неку хор. 1049 00:46:39,200 --> 00:46:41,760 Онда сам урадио нешто глупо, и ја сам имао рефрен позива хору, јер сам претпоставио 1050 00:46:41,760 --> 00:46:43,550 неко хтео да га спроведе можда. 1051 00:46:43,550 --> 00:46:45,960 И сада то неће још да састави. 1052 00:46:45,960 --> 00:46:48,340 Морам да урадим шта? 1053 00:46:48,340 --> 00:46:49,700 Треба ми прототип, сећам се. 1054 00:46:49,700 --> 00:46:55,520 Дакле, потребно је да се овде рефрен воид (инт);. 1055 00:46:55,520 --> 00:46:57,470 >> Дакле, сада, ако ја одем доле - 1056 00:46:57,470 --> 00:46:59,030 заправо, хајде да користите већи прозор. 1057 00:46:59,030 --> 00:47:01,670 Идемо напред и да хор. 1058 00:47:01,670 --> 00:47:06,000 Идемо напред и да хор. 1059 00:47:06,000 --> 00:47:08,302 Коришћење неидентификованог и давалац изјаве. 1060 00:47:08,302 --> 00:47:09,860 Ох, то је било глупо. 1061 00:47:09,860 --> 00:47:11,020 Не треба аргумент. 1062 00:47:11,020 --> 00:47:13,680 Хајде само то. 1063 00:47:13,680 --> 00:47:14,550 Жеља ми је започео овај начин. 1064 00:47:14,550 --> 00:47:16,160 Било би много лакше програм за писање. 1065 00:47:16,160 --> 00:47:20,100 Тако тамо. 1066 00:47:20,100 --> 00:47:23,870 Сада идемо до мене терминалу, поново покренути кланг. 1067 00:47:23,870 --> 00:47:26,900 И идемо. 1068 00:47:26,900 --> 00:47:28,020 То је било заиста брзо. 1069 00:47:28,020 --> 00:47:30,690 Шта се заправо десило, иако? 1070 00:47:30,690 --> 00:47:33,430 Па, сада ћу додати линију за штампање, тако да можемо да видимо. 1071 00:47:33,430 --> 00:47:41,330 Дакле, дозволите ми да кажем иф, хајде да кажем, ја сам овде. 1072 00:47:41,330 --> 00:47:43,470 Ок, нема променљиве, ми ћемо то оставити тако. 1073 00:47:43,470 --> 00:47:44,860 Дозволите ми да поново покрене направити. 1074 00:47:44,860 --> 00:47:47,940 Дозволите ми да поново покренути хор. 1075 00:47:47,940 --> 00:47:51,235 И хајде. 1076 00:47:53,880 --> 00:47:55,130 Настави. 1077 00:47:57,630 --> 00:47:59,750 Као на страну, зашто је не срушио још? 1078 00:47:59,750 --> 00:48:02,050 Сегментација грешка се десило пре супер брзо. 1079 00:48:02,050 --> 00:48:04,250 [ИНАУДИБЛЕ] 1080 00:48:04,250 --> 00:48:04,830 Давид Ј. Малан: Тачно. 1081 00:48:04,830 --> 00:48:06,350 Дакле, потребно је време да се одштампа. 1082 00:48:06,350 --> 00:48:08,370 То је само потребно више рада на делу рачунара. 1083 00:48:08,370 --> 00:48:09,550 И то је то. 1084 00:48:09,550 --> 00:48:10,620 Сегментација грешка. 1085 00:48:10,620 --> 00:48:12,140 >> Па приметио колико брзо програми покренути. 1086 00:48:12,140 --> 00:48:14,110 Ако не штампате ништа, супер брзо. 1087 00:48:14,110 --> 00:48:18,100 Али ми увек имамо ову грешку јер сегментирања шта се дешава? 1088 00:48:18,100 --> 00:48:21,310 Па, ако ви мислите о томе рачунара меморија је постављен, овај 1089 00:48:21,310 --> 00:48:22,890 дешава да се главни. 1090 00:48:22,890 --> 00:48:23,800 Али овде - 1091 00:48:23,800 --> 00:48:28,670 хајде да зовемо хору, и назовимо то хор. 1092 00:48:28,670 --> 00:48:33,420 А сада, ако ја у праву моје естетику, ово је само рећи рефрен, 1093 00:48:33,420 --> 00:48:38,060 хор, хор, хор, хор, хор, хор, ад наусеум. 1094 00:48:38,060 --> 00:48:39,920 И на крају, шта ће се десити? 1095 00:48:39,920 --> 00:48:46,690 Ако велика слика буквално је ово, шта се дешава само концептуално? 1096 00:48:46,690 --> 00:48:48,320 Штос прекорачења гомиле. 1097 00:48:48,320 --> 00:48:52,400 Или још горе, само преплавили све, укључујући текст сегменту, што је 1098 00:48:52,400 --> 00:48:54,530 су нуле и јединице које представљају Ваш програм. 1099 00:48:54,530 --> 00:48:56,690 Укратко, ово је само супер, супер лоше. 1100 00:48:56,690 --> 00:48:56,860 Зар не? 1101 00:48:56,860 --> 00:48:58,620 Ваш програм је у спирали ван контроле. 1102 00:48:58,620 --> 00:49:02,840 Ви користите начин више меморије него што сте сви намењен због глупа 1103 00:49:02,840 --> 00:49:03,920 грешка, у овом случају. 1104 00:49:03,920 --> 00:49:08,160 Или у овом случају, врло намерно учињено функција се зове. 1105 00:49:08,160 --> 00:49:09,210 Сада то није све лоше. 1106 00:49:09,210 --> 00:49:12,540 Функције зову себе заправо има велику моћ 1107 00:49:12,540 --> 00:49:13,700 када га користите правилно. 1108 00:49:13,700 --> 00:49:15,650 Нисам га користио правилно овде. 1109 00:49:15,650 --> 00:49:16,940 >> Дакле, ово није све тако лоше. 1110 00:49:16,940 --> 00:49:20,620 Али чињеница да сам заправо никада не престају називајући себе је фундаментална 1111 00:49:20,620 --> 00:49:23,050 слабост овде овог програма. 1112 00:49:23,050 --> 00:49:25,090 Дакле, где идемо са свим овим? 1113 00:49:25,090 --> 00:49:26,230 Па, шта се заиста дешава? 1114 00:49:26,230 --> 00:49:30,010 Када зовем прираст функцију, као што смо радили у тим примерима, 1115 00:49:30,010 --> 00:49:33,290 Имам вредност као 1 да прођем унутра 1116 00:49:33,290 --> 00:49:35,820 Прођем у копији број један. 1117 00:49:35,820 --> 00:49:37,080 Дакле, дешава се следеће. 1118 00:49:37,080 --> 00:49:40,390 Зато идемо у прирасту пример. 1119 00:49:40,390 --> 00:49:44,230 И овај момак овамо. 1120 00:49:44,230 --> 00:49:46,800 Дакле, ево шта се заправо дешава. 1121 00:49:46,800 --> 00:49:50,770 Када сам позвао прираста, и ја прошао у к, сликовито шта је 1122 00:49:50,770 --> 00:49:53,660 дешава овде је ово - 1123 00:49:53,660 --> 00:50:00,240 ако имам вредност од 1 сачуване овде, а ја заправо зовем прираштај, који 1124 00:50:00,240 --> 00:50:02,680 се сада зове рефрен - 1125 00:50:02,680 --> 00:50:04,010 Да, то ме одбацивање овде. 1126 00:50:04,010 --> 00:50:06,750 Дакле, назовимо то прираста. 1127 00:50:06,750 --> 00:50:09,420 А ми не знамо шта је то следећа функција ће бити. 1128 00:50:09,420 --> 00:50:14,270 Дакле, шта се заправо дешава је овде негде у главни имам комад 1129 00:50:14,270 --> 00:50:16,670 меморија која је чување број 1. 1130 00:50:16,670 --> 00:50:19,730 Када зовем прираста, ја користим други комад сећања, али сада сам 1131 00:50:19,730 --> 00:50:20,840 имају примерак 1. 1132 00:50:20,840 --> 00:50:25,480 Када сам инкрементирање ту вредност, ово постаје 2 - страшно написан 1133 00:50:25,480 --> 00:50:26,420 Екран овде. 1134 00:50:26,420 --> 00:50:30,550 Али онда, шта се дешава чим прираст повратка? 1135 00:50:30,550 --> 00:50:34,610 Ова меморија само добија враћен на оперативни систем, што значи да сви 1136 00:50:34,610 --> 00:50:37,470 Урадио си ништа корисно. 1137 00:50:37,470 --> 00:50:43,460 Онај који је првобитно садржана у главном је још ствари тамо. 1138 00:50:43,460 --> 00:50:44,650 >> Дакле, где идемо са овим? 1139 00:50:44,650 --> 00:50:49,400 Па, испада да у меморији имате ово бацк то бацк редослед 1140 00:50:49,400 --> 00:50:50,940 бајтова које можете ставити ствари унутра 1141 00:50:50,940 --> 00:50:53,760 И испада да смо већ видели нешто што подразумева стављање 1142 00:50:53,760 --> 00:50:55,100 ствари бацк то бацк враћа се назад. 1143 00:50:55,100 --> 00:51:00,170 Шта је ниска, на основу једне недеље и сада недеље два? 1144 00:51:00,170 --> 00:51:01,840 Дакле, то је само збирка карактера. 1145 00:51:01,840 --> 00:51:05,290 Тако испада, баш као што можете ставити бројеве у меморији, слично можете 1146 00:51:05,290 --> 00:51:06,900 стави знакова у меморији. 1147 00:51:06,900 --> 00:51:09,810 А када почнемо стављајући знакова у меморији бацк то бацк враћа се 1148 00:51:09,810 --> 00:51:12,800 назад, испада да користи најједноставније ствари као за петљу или 1149 00:51:12,800 --> 00:51:14,510 вхиле петље, можемо прелазили - 1150 00:51:14,510 --> 00:51:17,130 слева на десно преко ликова у низу - 1151 00:51:17,130 --> 00:51:20,720 и почети масирањем их у различите ликове заједно. 1152 00:51:20,720 --> 00:51:25,550 Могла да постане Б. Б може постати Ц. Тако да на крају, можемо узети 1153 00:51:25,550 --> 00:51:28,830 Енглеском реченица која заправо има смисла и конвертује сваки од оних 1154 00:51:28,830 --> 00:51:32,440 писма један по један од ходања кроз сећање нашег рачунара остављено 1155 00:51:32,440 --> 00:51:34,300 Право да се заиста шифровање. 1156 00:51:34,300 --> 00:51:36,590 >> Па хајде да узмемо овде пет минута паузе, а кад се вратимо, ми ћемо 1157 00:51:36,590 --> 00:51:39,060 почети овај процес кодирања информација. 1158 00:51:41,640 --> 00:51:43,180 >> У реду. 1159 00:51:43,180 --> 00:51:48,440 Дакле, пре него што зароните у неком крипто и ове ствари називају низови, дозволите ми да 1160 00:51:48,440 --> 00:51:51,610 пауза за сва питања јер се осећам као да сам стварно некако смушено неких 1161 00:51:51,610 --> 00:51:52,230 те теме. 1162 00:51:52,230 --> 00:51:53,940 Дакле, хајде да поправим сад ако можемо. 1163 00:51:53,940 --> 00:51:56,480 Дакле, ми смо само причали о повратку вредностима. 1164 00:51:56,480 --> 00:51:58,630 Разговарали смо о аргументима. 1165 00:51:58,630 --> 00:52:02,330 И разговарали смо о овом појму, који ћемо вратити у недељама које 1166 00:52:02,330 --> 00:52:07,140 дошао, посматрања меморију као гомилу ових наслагане 1167 00:52:07,140 --> 00:52:08,540 тацне, да тако кажем. 1168 00:52:08,540 --> 00:52:13,460 Од дна горе, тако да сваки носач које добија стави на стек представља 1169 00:52:13,460 --> 00:52:15,160 функција која се тренутно зове. 1170 00:52:17,970 --> 00:52:20,300 Има ли питања? 1171 00:52:20,300 --> 00:52:22,890 Па како о - дозволите ми да покушам постављам питање. 1172 00:52:22,890 --> 00:52:25,520 Стално кварење, али сада то је - Био си све видео лице дечака. 1173 00:52:25,520 --> 00:52:27,020 Тако ћемо се вратити на то. 1174 00:52:27,020 --> 00:52:29,700 >> Зато ме пусти да поставим питање овде. 1175 00:52:29,700 --> 00:52:34,810 Дозволите ми да поједностави назад на оно што је било пре неких наших ранијих К & А. 1176 00:52:34,810 --> 00:52:41,730 А чињеница да прираст има отворену заграду, инт број, затворен 1177 00:52:41,730 --> 00:52:42,260 заграда. 1178 00:52:42,260 --> 00:52:46,370 Шта инт број представља? 1179 00:52:46,370 --> 00:52:47,250 [ИНАУДИБЛЕ] 1180 00:52:47,250 --> 00:52:47,870 Давид Ј. Малан: аргумент. 1181 00:52:47,870 --> 00:52:50,732 Добро, али шта је аргумент? 1182 00:52:50,732 --> 00:52:51,620 [ИНАУДИБЛЕ] 1183 00:52:51,620 --> 00:52:52,500 Давид Ј. Малан: Извините, шта је то? 1184 00:52:52,500 --> 00:52:53,150 ПРЕДСЕДНИК 3: Нешто што ин проћи 1185 00:52:53,150 --> 00:52:53,570 Давид Ј. Малан: У реду. 1186 00:52:53,570 --> 00:52:54,780 Дакле, нешто што прође унутра 1187 00:52:54,780 --> 00:52:56,560 И уопште, то је само улаз. 1188 00:52:56,560 --> 00:52:59,860 Ако пишете функцију и ту функцију је сврху у животу је да урадите 1189 00:52:59,860 --> 00:53:03,290 нешто мало другачије сваки пут када га користите, онда једини начин за 1190 00:53:03,290 --> 00:53:07,710 то заиста десити да изгледа да га обезбеди улаз тако да се 1191 00:53:07,710 --> 00:53:10,180 може да уради нешто другачије са тим улазом сваки пут. 1192 00:53:10,180 --> 00:53:13,590 >> Дакле, морате да наведете две ствари када функција узима улаза. 1193 00:53:13,590 --> 00:53:17,240 Морате да наведете име које желите да дате том улазу, чисто за 1194 00:53:17,240 --> 00:53:20,790 ваша удобност, тако да се може односити на њега у функцији коју 1195 00:53:20,790 --> 00:53:23,610 сами пишу, као што сам овде у реду 32. 1196 00:53:23,610 --> 00:53:27,840 Али такође треба навести његов тип, јер је Ц програмски језик 1197 00:53:27,840 --> 00:53:28,840 то само захтева 1198 00:53:28,840 --> 00:53:31,810 да ако желите променљиву, морате да кажете шта рачунар 1199 00:53:31,810 --> 00:53:32,790 Тип података је, 1200 00:53:32,790 --> 00:53:35,540 у великој мери, тако да се не зна колико бита 1201 00:53:35,540 --> 00:53:37,230 издвајају за ту променљиву. 1202 00:53:37,230 --> 00:53:38,600 Јер би то могло да буде шест - 1203 00:53:38,600 --> 00:53:39,990 Жао ми је, то неће бити шест. 1204 00:53:39,990 --> 00:53:41,050 То може да буде 16. 1205 00:53:41,050 --> 00:53:41,630 То може бити 8. 1206 00:53:41,630 --> 00:53:44,410 То може бити 32, чак 64. 1207 00:53:44,410 --> 00:53:45,820 Али рачунар мора да зна. 1208 00:53:45,820 --> 00:53:49,110 Сада инт на левој страни представља шта, напротив? 1209 00:53:52,825 --> 00:53:53,780 [ИНАУДИБЛЕ] 1210 00:53:53,780 --> 00:53:54,570 Давид Ј. Малан: Шта је то? 1211 00:53:54,570 --> 00:53:55,390 [ИНАУДИБЛЕ] 1212 00:53:55,390 --> 00:53:57,920 Давид Ј. Малан: Тип функције и, још конкретније, 1213 00:53:57,920 --> 00:53:59,755 тип свог производа. 1214 00:53:59,755 --> 00:54:00,220 Тачно. 1215 00:54:00,220 --> 00:54:04,220 Дакле, док је ствар у загради представља његов улаз, уколико их има, 1216 00:54:04,220 --> 00:54:06,640 ствар са леве стране представља своју производњу. 1217 00:54:06,640 --> 00:54:10,560 И у овом случају, повећање очигледно враћа инт. 1218 00:54:10,560 --> 00:54:14,590 И тако инт је повратак тип ове функције. 1219 00:54:14,590 --> 00:54:16,090 >> Шта то значи да се врате? 1220 00:54:16,090 --> 00:54:19,810 Буквално, користите кључне речи повратак. 1221 00:54:19,810 --> 00:54:24,640 А онда, ако оно што се враћају са десне кључне речи је 1222 00:54:24,640 --> 00:54:28,340 цео број, онда је то заиста у складу са оним што смо обећали. 1223 00:54:28,340 --> 00:54:31,110 Ниси могао да уради овако нешто - 1224 00:54:31,110 --> 00:54:32,280 здраво, свет - 1225 00:54:32,280 --> 00:54:33,500 јер је ниска. 1226 00:54:33,500 --> 00:54:35,440 Очигледно то није цео број. 1227 00:54:35,440 --> 00:54:40,450 Дакле, у најкраћем, терет је заиста на нама, програмер, да буде специфичан, као 1228 00:54:40,450 --> 00:54:44,730 на шта смо повратак и онда заправо иде о његовом повратку. 1229 00:54:44,730 --> 00:54:49,030 А онда би нијансу јаснији контекст - 1230 00:54:49,030 --> 00:54:50,080 ево га опет. 1231 00:54:50,080 --> 00:54:51,060 Контекст - 1232 00:54:51,060 --> 00:54:52,830 Велико изненађење долази у само једном тренутку. 1233 00:54:52,830 --> 00:54:57,720 Контекст сада овде је да ваш рачунар меморија је, опет, 1234 00:54:57,720 --> 00:54:59,070 гигабајт, два гигабајта, шта год. 1235 00:54:59,070 --> 00:54:59,630 Можда је више. 1236 00:54:59,630 --> 00:55:00,540 Можда је мање. 1237 00:55:00,540 --> 00:55:03,750 Али компјутер га види као да има различите секције. 1238 00:55:03,750 --> 00:55:04,860 Нешто иде доле. 1239 00:55:04,860 --> 00:55:06,020 Нешто друго иде тамо. 1240 00:55:06,020 --> 00:55:07,540 Различите ствари иде у средини. 1241 00:55:07,540 --> 00:55:09,300 И данас, ми смо само почели говорим ову причу. 1242 00:55:09,300 --> 00:55:11,130 >> Али ми ћемо се вратити на ово током времена. 1243 00:55:11,130 --> 00:55:15,000 За сада, једини комад сећања ми заиста стало је текст сегмент 1244 00:55:15,000 --> 00:55:17,160 јер то само представља нула и јединица 1245 00:55:17,160 --> 00:55:18,460 који је цланг излазног. 1246 00:55:18,460 --> 00:55:21,570 Дакле, када покренете команду на тастатури као а.оут, или двоструко 1247 00:55:21,570 --> 00:55:25,350 кликните на икону на Мац ОС или Виндовс, програм се учитава из чврстог 1248 00:55:25,350 --> 00:55:26,930 возити у РАМ. 1249 00:55:26,930 --> 00:55:30,850 И то плоппед на врху меморије вашег рачунара, тако да кажем. 1250 00:55:30,850 --> 00:55:35,470 Сада је у међувремену, како ваш програм почне са радом, а главни добија позвао 1251 00:55:35,470 --> 00:55:39,240 програм који је написао или програма Мицрософт или Аппле писао, било од њених 1252 00:55:39,240 --> 00:55:42,930 локалне променљиве завршити доле на дну меморије рачунара. 1253 00:55:42,930 --> 00:55:46,490 Али, ако главни позива другу функцију која и сама има променљиве или 1254 00:55:46,490 --> 00:55:48,340 аргументи су завршити изнад њега. 1255 00:55:48,340 --> 00:55:50,670 И ако та функција позива нешто, они завршавају изнад њега, 1256 00:55:50,670 --> 00:55:51,840 изнад њега, изнад њега. 1257 00:55:51,840 --> 00:55:56,100 И само једном функција врши извршење ради гомилу касета, тако 1258 00:55:56,100 --> 00:55:58,320 да говори, почети да се све ниже и ниже. 1259 00:55:58,320 --> 00:56:03,370 И то је оно што тада, у суштини, објашњава зашто, када зовете коцка - 1260 00:56:03,370 --> 00:56:04,660 или позовите прираштај - 1261 00:56:04,660 --> 00:56:06,490 ти пролази у копију вредности. 1262 00:56:06,490 --> 00:56:09,840 А шта то значи сликовито је да буквално пишете 1263 00:56:09,840 --> 00:56:14,540 број 1 у другом делу меморије, мењајући да је 1 до 2, у случају 1264 00:56:14,540 --> 00:56:15,360 прираст - 1265 00:56:15,360 --> 00:56:17,450 или на 8, у случају коцке - 1266 00:56:17,450 --> 00:56:21,450 а затим бацали ту успомену гостима чим прираста или коцке 1267 00:56:21,450 --> 00:56:23,410 функција враћа. 1268 00:56:23,410 --> 00:56:24,267 >> Питање. 1269 00:56:24,267 --> 00:56:25,517 [ИНАУДИБЛЕ] 1270 00:56:28,090 --> 00:56:29,970 Давид Ј. Малан: Где - су глобалне променљиве чувају у оно што је 1271 00:56:29,970 --> 00:56:32,960 Тренутно називају иницијализован подаци или неиницијализоване податке. 1272 00:56:32,960 --> 00:56:35,900 Разлика је у томе, ако имате глобалну променљиву, а ви га доделите 1273 00:56:35,900 --> 00:56:39,530 Одмах вредност са једнакима потпише, она завршава на врху тамо. 1274 00:56:39,530 --> 00:56:43,390 А ако само кажете инт зарез без вредности, завршава незнатно 1275 00:56:43,390 --> 00:56:46,670 нижи у РАМ једноставно конвенцијом. 1276 00:56:46,670 --> 00:56:49,308 Остала питања. 1277 00:56:49,308 --> 00:56:49,750 У реду. 1278 00:56:49,750 --> 00:56:53,040 >> Дакле, ова слика ће се вратити као што смо добили више моћан са оним што можемо да урадимо 1279 00:56:53,040 --> 00:56:53,830 са рачунаром. 1280 00:56:53,830 --> 00:56:58,790 Али за сада, хајде да кратак увод у криптографију, специфичан тип 1281 00:56:58,790 --> 00:57:01,910 криптографија то не реши све проблеме на свету, али не решава 1282 00:57:01,910 --> 00:57:02,480 неке од њих. 1283 00:57:02,480 --> 00:57:06,090 У том случају овде, имамо нешто што се зове тајни кључ криптографије. 1284 00:57:06,090 --> 00:57:10,430 А тајни кључ криптографије, као што име сугерише, потиче њену безбедност 1285 00:57:10,430 --> 00:57:11,330 из тајну. 1286 00:57:11,330 --> 00:57:14,720 Тако на пример, ако се вратите у основној школи, а ви пролазите 1287 00:57:14,720 --> 00:57:18,040 мала тајна љубав писмо дечака или девојчице коју постројење на - ако 1288 00:57:18,040 --> 00:57:20,820 желео да прође да се кроз публику, вероватно не бих написао 1289 00:57:20,820 --> 00:57:24,120 таква напомена на енглеском или било шта ваш матерњи језик, него ти 1290 00:57:24,120 --> 00:57:25,800 Можда шифровање га. 1291 00:57:25,800 --> 00:57:27,820 Или сте можда им пошаљете текстуалну поруку ових дана. 1292 00:57:27,820 --> 00:57:30,310 Али ви у ствари можда им донесе поруку целој учионици. 1293 00:57:30,310 --> 00:57:33,820 И да сигурно то на такав начин да ваши пријатељи и наставника 1294 00:57:33,820 --> 00:57:36,820 Не знам шта пишете, можда доћи до прилично једноставна 1295 00:57:36,820 --> 00:57:37,800 алгоритам - 1296 00:57:37,800 --> 00:57:39,290 млада иако ћете можда - 1297 00:57:39,290 --> 00:57:40,780 само да верати речи. 1298 00:57:40,780 --> 00:57:44,390 Дакле, уместо писања, можда написати Б. Уместо Б, можда написати 1299 00:57:44,390 --> 00:57:46,670 Ц. Уместо Ц, можда пишете Д, и тако даље. 1300 00:57:46,670 --> 00:57:50,020 Или сте могли доћи до више софистицираним превод слова 1301 00:57:50,020 --> 00:57:51,300 различитим словима. 1302 00:57:51,300 --> 00:57:55,440 Али цака је дечак или девојчица коме шаљете ову поруку треба да 1303 00:57:55,440 --> 00:57:56,850 Знам нешто. 1304 00:57:56,850 --> 00:57:59,620 Што је оно што, очигледно? 1305 00:57:59,620 --> 00:58:01,400 Као, шта је твоја тајна је. 1306 00:58:01,400 --> 00:58:04,620 Као, шта је то мапирање између АС и БС и ЦС и ДС? 1307 00:58:04,620 --> 00:58:08,780 Да ли је то само додаје један, да тако кажем, да сваки од слова да иду од 1308 00:58:08,780 --> 00:58:09,730 До тачке Б, Б и Ц? 1309 00:58:09,730 --> 00:58:11,350 Да ли је то много комплекснија од тога? 1310 00:58:11,350 --> 00:58:16,450 Дакле, ви и ваш симпатија треба да имају ову тајну информацију. 1311 00:58:16,450 --> 00:58:18,170 Али постоји нека врста Цатцх-22 овде. 1312 00:58:18,170 --> 00:58:20,760 Ако је ово први пут да шаљете ово љубавно писмо кроз 1313 00:58:20,760 --> 00:58:25,590 класа, како је тај дечак или девојчица ће знати шта тајна, чак је? 1314 00:58:25,590 --> 00:58:28,450 Дакле тајни кључ крипто не реши све светске проблеме. 1315 00:58:28,450 --> 00:58:30,490 И заправо ту је однос који ћемо вратити ка 1316 00:58:30,490 --> 00:58:31,370 семестар, крај. 1317 00:58:31,370 --> 00:58:35,970 >> Слично томе, имамо нико од нас вероватно никада послао - 1318 00:58:35,970 --> 00:58:39,453 Слично томе, не већина нас не зна некога ко ради, на пример, у 1319 00:58:39,453 --> 00:58:40,300 Амазон.цом. 1320 00:58:40,300 --> 00:58:43,130 А ипак, многи од нас су вероватно купили ствари на Амазон.цом. 1321 00:58:43,130 --> 00:58:45,670 И ми смо научени да се претпостави да су ови е-цоммерце 1322 00:58:45,670 --> 00:58:47,060 трансакције су безбедне. 1323 00:58:47,060 --> 00:58:47,210 Зар не? 1324 00:58:47,210 --> 00:58:49,310 УРЛ адреса вероватно каже хттпс. 1325 00:58:49,310 --> 00:58:51,590 Можда постоји негде глупо мало катанац икона. 1326 00:58:51,590 --> 00:58:54,680 Постоји нека врста криптографије обезбеђивању информација о кредитној картици 1327 00:58:54,680 --> 00:58:56,980 између вас и Амазон.цом. 1328 00:58:56,980 --> 00:59:00,410 А ипак, ако криптографија укључује знајући неку тајну, а ипак не 1329 00:59:00,410 --> 00:59:03,330 знам никога на Амазону, а ја свакако нисам није уговорио никакву 1330 00:59:03,330 --> 00:59:07,350 тајна са неким на Амазону, како је мој рачунар или мој прегледач ово радиш? 1331 00:59:07,350 --> 00:59:10,100 Па, испада да је друге врсте криптографије укупно да решавају 1332 00:59:10,100 --> 00:59:10,740 тај проблем. 1333 00:59:10,740 --> 00:59:13,610 Али данас, ми ћемо се фокусирати на једноставан, где можете организовати у 1334 00:59:13,610 --> 00:59:18,480 унапред да знају неке тајне, као што је плус 1 или неког мапирање између АС и БС. 1335 00:59:18,480 --> 00:59:20,710 >> А процес криптографије генерално подразумева ово. 1336 00:59:20,710 --> 00:59:23,550 Имаш неки обичан текст, приказан овде у лево. 1337 00:59:23,550 --> 00:59:26,260 Ви га пролазе кроз неку врсту алгоритма или поступак 1338 00:59:26,260 --> 00:59:27,670 за енкрипцију га. 1339 00:59:27,670 --> 00:59:31,390 Можда је то само постаје Б, Б постаје Ц. И онда можете завршити са 1340 00:59:31,390 --> 00:59:32,260 Ципхер текст. 1341 00:59:32,260 --> 00:59:36,450 У међувремену, када ваша симпатија прима тајну поруку, он или она мора да тада 1342 00:59:36,450 --> 00:59:39,950 дешифровање се по принципу уназад тај алгоритам како би добили 1343 00:59:39,950 --> 00:59:41,640 подржати обичан текст. 1344 00:59:41,640 --> 00:59:43,860 Сада постоје физичке инкарнације ово. 1345 00:59:43,860 --> 00:59:46,720 На пример, ово је мала тајна декодер прстен. 1346 00:59:46,720 --> 00:59:50,060 А ово је прстен у смислу да овде постоје два бира. 1347 00:59:50,060 --> 00:59:53,630 На периферији изван ове ствари, има слова од А до З, 1348 00:59:53,630 --> 00:59:55,110 иако су у случајним редоследом. 1349 00:59:55,110 --> 00:59:58,410 А унутра, у ствари има неке бројеве, тако да са овим 1350 00:59:58,410 --> 01:00:02,940 прстен, можете некако окренути споља, али не и изнутра како би се построје 1351 01:00:02,940 --> 01:00:04,110 бројеви са словима. 1352 01:00:04,110 --> 01:00:08,290 А у клипу се спремате да виде - од којих неки можда сте видели 24/7 1353 01:00:08,290 --> 01:00:11,120 око Божића из филма под називом Цхристмас Стори. 1354 01:00:11,120 --> 01:00:16,050 Видећете да је мало Ралпхие био толико жељан да схватим оно мало сироче 1355 01:00:16,050 --> 01:00:19,810 Анние тајна порука је била да му се да је комуницирао, ја мислим, у 1356 01:00:19,810 --> 01:00:22,810 формирају нумеричких порука на серијском кутији. 1357 01:00:22,810 --> 01:00:26,760 А морали сте да акумулирају све мале картице који су дошли 1358 01:00:26,760 --> 01:00:27,480 У кутији са цереалијама. 1359 01:00:27,480 --> 01:00:28,320 Морао си да их послати унутра 1360 01:00:28,320 --> 01:00:31,060 Морао си да се врати тајни прстен декодер, тако да коначно могу да схватим 1361 01:00:31,060 --> 01:00:34,190 шта мапирање између слова и бројева, 1362 01:00:34,190 --> 01:00:35,420 или слова и писма. 1363 01:00:35,420 --> 01:00:39,790 Зато сам ти дам ову кратку снимак из А Цхристмас Стори мотивисати псет 2 и 1364 01:00:39,790 --> 01:00:42,340 наша дискусија, у тренутку, од низова. 1365 01:00:42,340 --> 01:00:43,773 Дакле, овде имамо Ралпхие. 1366 01:00:43,773 --> 01:00:44,126 >> [ВИДЕО РЕПРОДУКЦИЈА] 1367 01:00:44,126 --> 01:00:47,470 -Будите познато да све и сушен на сунцу да се Ралф Паркер именује 1368 01:00:47,470 --> 01:00:50,690 члан сироче Ени Сецрет Цирцле и има право на све 1369 01:00:50,690 --> 01:00:53,500 почасти и користи се јавља њу. 1370 01:00:53,500 --> 01:00:56,040 -Потписан, сироче Ени. 1371 01:00:56,040 --> 01:00:58,730 Потписаног, Пјер Андре! 1372 01:00:58,730 --> 01:01:00,150 У боју! 1373 01:01:00,150 --> 01:01:02,910 Почасти и користи, већ на узрасту од девет. 1374 01:01:09,970 --> 01:01:10,730 Хајде, идемо даље са њим. 1375 01:01:10,730 --> 01:01:15,000 Не треба све то јазз о кријумчарима и гусарима. 1376 01:01:15,000 --> 01:01:17,624 -Слушај сутра увече на завршном авантуру Црна 1377 01:01:17,624 --> 01:01:19,710 Пирате Схип. 1378 01:01:19,710 --> 01:01:23,380 Сада је време за тајне поруке Анние за вас чланови 1379 01:01:23,380 --> 01:01:25,670 Тајне круга. 1380 01:01:25,670 --> 01:01:30,260 Запамтите, децо, само чланови Сецрет Цирцле Ени може да декодира 1381 01:01:30,260 --> 01:01:31,660 Анние тајна порука. 1382 01:01:31,660 --> 01:01:36,230 Запамтите, Ени је у зависности од вас. 1383 01:01:36,230 --> 01:01:38,720 Поставите своје пинове Б2. 1384 01:01:38,720 --> 01:01:41,040 Овде је порука. 1385 01:01:41,040 --> 01:01:42,470 12, 11 - 1386 01:01:42,470 --> 01:01:46,000 -Ја сам у свом првом тајном састанку. 1387 01:01:46,000 --> 01:01:49,440 -14, 11, 18, 16 - 1388 01:01:49,440 --> 01:01:51,700 Пјер је био у великој гласа вечерас. 1389 01:01:51,700 --> 01:01:54,890 Ја могу да кажем да је вечерашња порука је била веома важна. 1390 01:01:54,890 --> 01:01:56,750 -3, 25. 1391 01:01:56,750 --> 01:01:58,590 То је порука од Ени лично. 1392 01:01:58,590 --> 01:01:59,840 Запамтите, не причај никоме. 1393 01:02:04,570 --> 01:02:08,750 Касније -90 секунди, ја сам у јединој просторији у кући у којој дечак од девет 1394 01:02:08,750 --> 01:02:12,980 могао да седим у приватности и декодирање. 1395 01:02:12,980 --> 01:02:17,130 Аха, Б. отишао сам следећи. 1396 01:02:17,130 --> 01:02:20,330 Е. Прва реч је бити. 1397 01:02:20,330 --> 01:02:22,670 С. Он је дошао лакше сада. 1398 01:02:22,670 --> 01:02:24,590 У. 1399 01:02:24,590 --> 01:02:26,510 -Ма, хајде, Ралпхие. 1400 01:02:26,510 --> 01:02:28,430 Морам да идем. 1401 01:02:28,430 --> 01:02:30,350 -Бићу доле, мама. 1402 01:02:30,350 --> 01:02:33,720 -Гее зујање. 1403 01:02:33,720 --> 01:02:38,270 -Т, О. Будите сигурни да. 1404 01:02:38,270 --> 01:02:40,000 Будите сигурни на шта? 1405 01:02:40,000 --> 01:02:42,105 Шта је био сироче Ени покушаваш да кажеш? 1406 01:02:42,105 --> 01:02:43,095 Будите сигурни на шта? 1407 01:02:43,095 --> 01:02:43,590 -Ралпхие! 1408 01:02:43,590 --> 01:02:44,580 Ренди мора да иде. 1409 01:02:44,580 --> 01:02:45,570 Хоћеш ли молим те изаћи? 1410 01:02:45,570 --> 01:02:46,560 -У реду, мама. 1411 01:02:46,560 --> 01:02:48,540 Ја ћу бити одмах. 1412 01:02:48,540 --> 01:02:50,580 -Био сам ближи сада. 1413 01:02:50,580 --> 01:02:52,550 Тензија је била страшна. 1414 01:02:52,550 --> 01:02:53,355 Шта је било? 1415 01:02:53,355 --> 01:02:56,315 Судбина планете може држати у равнотежи. 1416 01:02:56,315 --> 01:02:56,790 -Ралпхие! 1417 01:02:56,790 --> 01:02:59,165 Ренди мора да иде. 1418 01:02:59,165 --> 01:03:02,310 -Ја ћу бити у праву се, за Бога милога. 1419 01:03:02,310 --> 01:03:04,000 -Боже, скоро тамо. 1420 01:03:04,000 --> 01:03:05,180 Моји прсти летели. 1421 01:03:05,180 --> 01:03:07,150 Мој ум је био челика замка. 1422 01:03:07,150 --> 01:03:08,790 Свака пора вибрира. 1423 01:03:08,790 --> 01:03:10,040 Било је скоро јасно. 1424 01:03:10,040 --> 01:03:13,400 Да, да, да, да. 1425 01:03:13,400 --> 01:03:18,960 -Будите сигурни да пију своју Овалтине. 1426 01:03:18,960 --> 01:03:20,210 Овалтине? 1427 01:03:24,010 --> 01:03:25,260 Бедан рекламу? 1428 01:03:28,200 --> 01:03:29,640 Курвин сине. 1429 01:03:29,640 --> 01:03:33,340 [ЕНД ВИДЕО РЕПРОДУКЦИЈА] 1430 01:03:33,340 --> 01:03:36,040 >> Давид Ј. Малан: Значи имамо криптографију. 1431 01:03:36,040 --> 01:03:39,670 Па како се у рачунару можемо ићи око примене или 1432 01:03:39,670 --> 01:03:40,950 представља овакве ствари? 1433 01:03:40,950 --> 01:03:44,430 Па, потребан нам је нацин да се изрази нешто флексибилније него 1434 01:03:44,430 --> 01:03:46,420 наши променљиве су до сада дозвољено. 1435 01:03:46,420 --> 01:03:47,370 Ми смо имали Интс. 1436 01:03:47,370 --> 01:03:48,380 Ми смо имали знакова. 1437 01:03:48,380 --> 01:03:50,790 Добили смо Флоатс и дуплира и неколико других. 1438 01:03:50,790 --> 01:03:55,050 Али то су појединачни комади меморије која заправо не дозвољавају да 1439 01:03:55,050 --> 01:03:58,010 изражавају ствари као речи и реченице и фразе. 1440 01:03:58,010 --> 01:04:00,200 Заиста, ми смо се зове такве ствари конце. 1441 01:04:00,200 --> 01:04:03,650 Али ми обећали да је ово заиста само поједностављење у ЦС50 1442 01:04:03,650 --> 01:04:07,020 библиотека која смо намеравали да одлепите. 1443 01:04:07,020 --> 01:04:08,970 >> И тако почнимо да урадим овде. 1444 01:04:08,970 --> 01:04:11,130 Дозволите ми да иде напред и отворити датотеке - 1445 01:04:11,130 --> 01:04:13,770 сви ови фајлови су доступни као уобичајеног Онлине - 1446 01:04:13,770 --> 01:04:19,120 позвао арраи.ц да реши проблем неповезане са жицама, али да наслика 1447 01:04:19,120 --> 01:04:23,040 слика овде, како бисмо могли да користимо нешто зове низ. 1448 01:04:23,040 --> 01:04:25,530 Низ је тип података. 1449 01:04:25,530 --> 01:04:31,320 То је врста променљиве, врста, која има више мањих типова података 1450 01:04:31,320 --> 01:04:34,150 унутар ње бацк то бацк враћа се назад. 1451 01:04:34,150 --> 01:04:37,700 Тако на пример, ако желимо да напише мало програм који вам даје ваш 1452 01:04:37,700 --> 01:04:42,110 квиз просеку за курс као 50 који има два квизове, можеш врло лако 1453 01:04:42,110 --> 01:04:45,170 Пишем овај програм - на чак на неким од материјала прошлонедељном - 1454 01:04:45,170 --> 01:04:47,770 помоћу ГетИнт и неколико променљивих. 1455 01:04:47,770 --> 01:04:51,920 Инт куиз1, инт куиз2, и то је прилично једноставно. 1456 01:04:51,920 --> 01:04:55,930 Можда је 10, 20 линија кода, мак, да спроведе програм који тражи 1457 01:04:55,930 --> 01:05:01,170 корисника за две квиз резултате, а затим израчунава њихова просечна их додавањем 1458 01:05:01,170 --> 01:05:03,850 заједно, делећи по два, а затим штампање резултата. 1459 01:05:03,850 --> 01:05:06,380 Ми смо вероватно могао да урадим прилично лако сада после 1460 01:05:06,380 --> 01:05:07,510 одређени број минута. 1461 01:05:07,510 --> 01:05:11,005 >> Али проблем је у томе претпостављам да је 50 имао три или четири тестови. 1462 01:05:11,005 --> 01:05:13,510 Претпоставимо да сте желели да користите исти програм за класу која је имала 1463 01:05:13,510 --> 01:05:14,850 недељни тестови. 1464 01:05:14,850 --> 01:05:16,610 Размислите о класи која је недељни квизове. 1465 01:05:16,610 --> 01:05:20,610 Ако је као 16 или тако недеља у семестру, а сада имате 16 променљивих - 1466 01:05:20,610 --> 01:05:24,270 инт куиз1, инт куиз2 инт куиз3, инт куиз4. 1467 01:05:24,270 --> 01:05:27,560 Чим почнете видите ову редундантност, ова копирања и лепљења 1468 01:05:27,560 --> 01:05:31,390 кода, то би требало да почне да желите било бољи начин. 1469 01:05:31,390 --> 01:05:33,930 И срећом, због низова, ту је. 1470 01:05:33,930 --> 01:05:34,980 Дакле, хајде да урадимо то. 1471 01:05:34,980 --> 01:05:38,430 Прво, дозволите ми да представим веома једноставну ствар која ми не смо користили до сада, 1472 01:05:38,430 --> 01:05:40,140 али ћете видети повремено у коду. 1473 01:05:40,140 --> 01:05:42,360 То је оно што се обично назива константа. 1474 01:05:42,360 --> 01:05:45,790 Дакле, то је константа у смислу да је ова вредност никада мења. 1475 01:05:45,790 --> 01:05:49,210 Конвенцијом о људским приликом креирања константа је да користи све капитал 1476 01:05:49,210 --> 01:05:51,940 слова, само да би она заиста стоји у вашем коду. 1477 01:05:51,940 --> 01:05:55,960 А посебна кључна реч која се користи у Ц # је дефинисати. 1478 01:05:55,960 --> 01:06:00,250 Дакле, ако кажете # дефине, затим размак, онда реч коју желите да користите за 1479 01:06:00,250 --> 01:06:03,260 Тхе Цонстант име, а затим вредност константе. 1480 01:06:03,260 --> 01:06:06,180 Дакле најаве, ово је другачије од додељивања нешто променљивој. 1481 01:06:06,180 --> 01:06:07,020 Нема знака једнакости. 1482 01:06:07,020 --> 01:06:08,240 Нема зарез. 1483 01:06:08,240 --> 01:06:11,410 То је оно што је опште позната као Препроцессор директива, већ више на 1484 01:06:11,410 --> 01:06:12,210 да је други пут. 1485 01:06:12,210 --> 01:06:18,540 >> За сада, ово ствара непроменљиво вредност која се зове КВИЗОВИ чије стварне 1486 01:06:18,540 --> 01:06:19,940 нумеричка вредност је 2. 1487 01:06:19,940 --> 01:06:24,020 Дакле, где год видиш КВИЗОВИ, квизове, квизове током овог фајла, то је 1488 01:06:24,020 --> 01:06:25,410 Само број 2. 1489 01:06:25,410 --> 01:06:28,100 Сада, ако погледате главни сада, хајде да видимо како ово функционише. 1490 01:06:28,100 --> 01:06:29,500 У почетку, то изгледа мало криптичан. 1491 01:06:29,500 --> 01:06:31,340 Али то је све ствари из недеље један. 1492 01:06:31,340 --> 01:06:32,710 Питајте корисника за разреде. 1493 01:06:32,710 --> 01:06:33,630 Како да радимо ово? 1494 01:06:33,630 --> 01:06:35,470 Па, у реду 22 - 1495 01:06:35,470 --> 01:06:37,210 ово је стварно сочна део - 1496 01:06:37,210 --> 01:06:40,960 Ја прогласи пловак, али не само један пловак. 1497 01:06:40,960 --> 01:06:44,620 Ја декларисање, односно низ покретном зарезу. 1498 01:06:44,620 --> 01:06:49,100 Та променљива ће да се зове разреда, као подразумевао овде. 1499 01:06:49,100 --> 01:06:53,080 Али једини комад нову синтаксу онда су ови угластим заградама, чињеница 1500 01:06:53,080 --> 01:06:59,350 да сам рекао пловак разреда, а затим отворите заграду, а затим број. 1501 01:06:59,350 --> 01:07:02,460 Запазите, ако је ово константа, то је баш као што смо то урадили. 1502 01:07:02,460 --> 01:07:06,890 То значи хеј рачунар, дај два плута, и идемо колективно зову 1503 01:07:06,890 --> 01:07:08,220 их разреда. 1504 01:07:08,220 --> 01:07:11,920 Ово је у супротности са много досадан процес овако. 1505 01:07:11,920 --> 01:07:15,850 Флоат Граде1, плутају граде2, и тако даље. 1506 01:07:15,850 --> 01:07:20,010 Дакле, низ омогућава нам да спроведе ову идеју, али много мање мессили, у 1507 01:07:20,010 --> 01:07:24,630 такав начин да можемо написати једну линију кода уместо, рецимо, 16 за 16 1508 01:07:24,630 --> 01:07:25,740 недеље семестра. 1509 01:07:25,740 --> 01:07:29,950 Дакле, нисам желео да се тешко код 2 јер ако мислите о томе сада 1510 01:07:29,950 --> 01:07:34,160 логично - Претпостављам идуће године ЦС50 промене до 3 тестови уместо. 1511 01:07:34,160 --> 01:07:35,510 И ја сам имао овде број 2. 1512 01:07:35,510 --> 01:07:36,600 Имао сам број 2. 1513 01:07:36,600 --> 01:07:37,580 Имао сам број 2. 1514 01:07:37,580 --> 01:07:38,560 Имао сам број 2. 1515 01:07:38,560 --> 01:07:43,180 Она постаје веома напоран и врло лако се зезнуо и да случајно промените 1516 01:07:43,180 --> 01:07:47,690 једна вредност на 3 и пропустите неку другу вредност 2. 1517 01:07:47,690 --> 01:07:52,460 Зато ћу уместо апстрактне ово даље и користе то стално да, као свог 1518 01:07:52,460 --> 01:07:54,120 име сугерише, никада промене. 1519 01:07:54,120 --> 01:07:57,710 А сада, без обзира на то да ли смо другачији тестови ове године или следеће, ја 1520 01:07:57,710 --> 01:08:01,210 Само треба да га промени на једном месту, овде на врху. 1521 01:08:01,210 --> 01:08:02,720 >> Тако да је све константа. 1522 01:08:02,720 --> 01:08:08,680 У међувремену, нови концептуални карактеристика је да од низа. 1523 01:08:08,680 --> 01:08:14,660 Дакле квадратних заграде ми оволико Флоатс и омогућава ми колективно 1524 01:08:14,660 --> 01:08:16,630 зову их разреда овде. 1525 01:08:16,630 --> 01:08:17,990 Дакле, хајде да видимо шта ћу да урадим. 1526 01:08:17,990 --> 01:08:20,359 Овде у складу 24 је почетак за петљу. 1527 01:08:20,359 --> 01:08:22,260 Ово је стварно ништа фенси. 1528 01:08:22,260 --> 01:08:25,060 То је само помоћу тестови уместо тешко кодираном броју. 1529 01:08:25,060 --> 01:08:27,790 Али нема ништа интелектуално разликује се од прошле недеље. 1530 01:08:27,790 --> 01:08:29,040 Ово је само принтф. 1531 01:08:29,040 --> 01:08:35,490 Дакле принтф ("квиз број% д од% д") јер желим да одштампате дајте ми квиз 1532 01:08:35,490 --> 01:08:38,050 број један од два, а затим два два. 1533 01:08:38,050 --> 01:08:39,850 Дакле, ово је чисто естетска ствар. 1534 01:08:39,850 --> 01:08:42,500 Али занимљив део је сада у линији 27. 1535 01:08:42,500 --> 01:08:48,310 Да би се попунила у једном од два чувара места са покретном зарезу 1536 01:08:48,310 --> 01:08:51,029 вредност, можете поново да користите угласте заграде. 1537 01:08:51,029 --> 01:08:55,620 У овом случају, ја сам помоћу јер ово за петљу је почео са и изједначавање 1538 01:08:55,620 --> 01:08:57,560 шта вредност, очигледно? 1539 01:08:57,560 --> 01:08:58,279 0. 1540 01:08:58,279 --> 01:09:01,350 >> Дакле, на првој итерацији ове петље, то је као да сам 1541 01:09:01,350 --> 01:09:02,689 написао ово у коду. 1542 01:09:02,689 --> 01:09:05,580 Али, на другој итерацији ове петље, то је као да сам 1543 01:09:05,580 --> 01:09:07,750 ово написао у мом коду. 1544 01:09:07,750 --> 01:09:10,750 Али чињеница да сам помоћу променљиве је савршен, јер као име 1545 01:09:10,750 --> 01:09:14,300 сугерише, то је променљив своју вредност на свакој итерацији. 1546 01:09:14,300 --> 01:09:17,370 Дакле, ја сам за пуњење Овај низ једну тачку у једном тренутку. 1547 01:09:17,370 --> 01:09:18,910 Шта ово низ изгледа? 1548 01:09:18,910 --> 01:09:21,430 Па, разлог што сам нацртао ово овде супер једноставан правоугаоник на екрану 1549 01:09:21,430 --> 01:09:23,350 раније из тог разлога. 1550 01:09:23,350 --> 01:09:27,279 Низ је само комад меморије следи други комад меморије, 1551 01:09:27,279 --> 01:09:30,109 затим још комад сећања, и тако даље. 1552 01:09:30,109 --> 01:09:35,260 Дакле, ако је мој низ од величине 2, у овом слуцају овде, све бих да радим по 1553 01:09:35,260 --> 01:09:37,590 куцање у мојим квиз бодова, као овде. 1554 01:09:37,590 --> 01:09:39,430 Имам 100 на овој. 1555 01:09:39,430 --> 01:09:42,020 А онда сам добио 99 на овој. 1556 01:09:42,020 --> 01:09:46,040 Онда је ово сећање не може да се користи, јер сам само питао 1557 01:09:46,040 --> 01:09:48,689 Рачунар за низ величине 2. 1558 01:09:48,689 --> 01:09:50,180 Ти квадрати су још увек тамо. 1559 01:09:50,180 --> 01:09:50,340 Зар не? 1560 01:09:50,340 --> 01:09:52,500 Још увек имате два гигабајта РАМ меморије, чак и ако сте само 1561 01:09:52,500 --> 01:09:53,979 тражећи два сплавова. 1562 01:09:53,979 --> 01:09:58,710 Тако да је идеја иза низова је да рачунар траје само комад меморије 1563 01:09:58,710 --> 01:10:03,230 и онда расподељује мањих комада бацк то бацк враћа се назад. 1564 01:10:03,230 --> 01:10:04,740 И то је све низ је. 1565 01:10:04,740 --> 01:10:09,080 То је суседни комад сећања, унутар којег можете ставити ствари. 1566 01:10:09,080 --> 01:10:12,400 >> Сада се то деси онда само мало досадно аритметике. 1567 01:10:12,400 --> 01:10:16,170 Ако сам дођите овде, ово је место где сам тада прелазили преко низа. 1568 01:10:16,170 --> 01:10:19,410 Дошао сам до сума свих вредности у низу. 1569 01:10:19,410 --> 01:10:22,390 И онда ја користим округлу функцију овде заправо 1570 01:10:22,390 --> 01:10:23,940 сумирамо подељен квизове. 1571 01:10:23,940 --> 01:10:27,450 Али дозволите ми да машу ми руку на то као нека врста довољно аритметику за сада. 1572 01:10:27,450 --> 01:10:30,010 Али све то ради за мене на крају се обрачуна просек. 1573 01:10:30,010 --> 01:10:33,640 Дакле, прво квиз, плус други квиз, подељен са 2, а затим штампа 1574 01:10:33,640 --> 01:10:34,700 она се као инт. 1575 01:10:34,700 --> 01:10:39,030 >> Али хајде да сада прелазак на другачији пример зове стринг1, 1576 01:10:39,030 --> 01:10:42,370 који осликава сличну слику, али помоћу жице. 1577 01:10:42,370 --> 01:10:45,550 Дозволите ми да иде напред и поједностави то само за тренутак. 1578 01:10:45,550 --> 01:10:48,340 И опрости увлачење за сада. 1579 01:10:48,340 --> 01:10:52,280 Обавештење у складу 19 овог пример, ја добијем стринг од корисника. 1580 01:10:52,280 --> 01:10:55,780 Али погледајмо шта ја радим поред у редовима 22 напред. 1581 01:10:55,780 --> 01:11:00,260 Ја стварно итератинг од И до - и ово је нови трик - 1582 01:11:00,260 --> 01:11:02,730 стрлен, ниска дужине. 1583 01:11:02,730 --> 01:11:07,010 То је функција која долази са Ц који, ако му прође низ, што говори 1584 01:11:07,010 --> 01:11:08,950 ти колико карактера су у том низу. 1585 01:11:08,950 --> 01:11:09,440 То је све. 1586 01:11:09,440 --> 01:11:12,520 Чињеница да је стрлен уместо жица дужине је само зато што је 1587 01:11:12,520 --> 01:11:13,040 више језгровит. 1588 01:11:13,040 --> 01:11:17,100 Пре 30 година, људи воле да пишу ствари као језгровито могуће. 1589 01:11:17,100 --> 01:11:19,080 Зато смо овде стално ту конвенцију. 1590 01:11:19,080 --> 01:11:21,730 и + + значи само повећавати ја у свакој итерацији. 1591 01:11:21,730 --> 01:11:24,310 И сада приметити, што је заиста интересантно. 1592 01:11:24,310 --> 01:11:28,730 Дакле, у складу 24, кажем рачунар, дај ми знак, осам 1593 01:11:28,730 --> 01:11:30,770 бита, а зову га ц. 1594 01:11:30,770 --> 01:11:35,370 Али шта је то на десна страна говори? 1595 01:11:35,370 --> 01:11:38,150 У енглеском језику, шта то представља? 1596 01:11:38,150 --> 01:11:40,070 [ИНАУДИБЛЕ] 1597 01:11:40,070 --> 01:11:40,490 Давид Ј. Малан: Тачно. 1598 01:11:40,490 --> 01:11:42,390 Дај ми први карактер у низу. 1599 01:11:42,390 --> 01:11:45,400 Или генерално, дај ми и-ти карактер у низу. 1600 01:11:45,400 --> 01:11:48,230 И схвати да је сада важно да што компјутерских научника, ми заправо 1601 01:11:48,230 --> 01:11:49,330 рачунајући од 0. 1602 01:11:49,330 --> 01:11:51,290 Не морате дискреционо сада да почнемо да радимо ово. 1603 01:11:51,290 --> 01:11:54,580 Сада морате да се понашате у складу са очекивањима рачунара и 1604 01:11:54,580 --> 01:11:58,010 Одбројавање од нуле јер [0] ће бити први 1605 01:11:58,010 --> 01:11:59,670 лик у низу. 1606 01:11:59,670 --> 01:12:01,320 [1] ће бити други. 1607 01:12:01,320 --> 01:12:03,610 [2] ће бити трећи, и тако даље. 1608 01:12:03,610 --> 01:12:08,840 Дакле, овај програм, ако га састави - то је, опет, стринг1. 1609 01:12:08,840 --> 01:12:11,040 >> Тако да стринг1. 1610 01:12:11,040 --> 01:12:16,730 И сада сам покренути стринг1 у мом прозору терминала. 1611 01:12:16,730 --> 01:12:19,180 Чека за унос, па ћу да куцате у, рецимо, Давид. 1612 01:12:19,180 --> 01:12:20,080 Ентер. 1613 01:12:20,080 --> 01:12:23,350 И сада се штампа Дејвиду све на различитим линијама, јер 1614 01:12:23,350 --> 01:12:24,430 Обратите пажњу шта радим. 1615 01:12:24,430 --> 01:12:27,510 Ја штампање једног знака на време. 1616 01:12:27,510 --> 01:12:29,100 Сада нећемо ићи у детаље данас на овоме. 1617 01:12:29,100 --> 01:12:31,610 Али сам избрисао тренутак пре ове провере овде. 1618 01:12:31,610 --> 01:12:36,310 Испада да ако корисник има проблема у раду, контрадикторно, или само 1619 01:12:36,310 --> 01:12:41,780 збуњени, можете заправо не дају низ неке дужине. 1620 01:12:41,780 --> 01:12:43,640 Ако притиснете погрешан тастер на тастатури, можда ћете дати 1621 01:12:43,640 --> 01:12:44,390 нема стринг уопште. 1622 01:12:44,390 --> 01:12:47,790 Или ако си злонамеран, можда ћете покушати да налепите у вредности гигабајт је од 1623 01:12:47,790 --> 01:12:49,380 есеј да попуните овај редослед. 1624 01:12:49,380 --> 01:12:52,060 А ако рачунар понестане меморије, испада да ћемо 1625 01:12:52,060 --> 01:12:54,310 да се вратим ову посебну вредност зове нулл. 1626 01:12:54,310 --> 01:12:57,550 Дакле, за сада, само знам да постоји та посебна вредност нула зове да 1627 01:12:57,550 --> 01:13:01,000 ће нам омогућити да проверите када смо ван меморије, између осталог. 1628 01:13:01,000 --> 01:13:07,330 >> Али ако ја отворим сада стринг2, приметите овде једну разлику. 1629 01:13:07,330 --> 01:13:09,760 Приметите једну разлику овде са стринг2. 1630 01:13:09,760 --> 01:13:13,260 Са стринг2, ово петљи је мало другачија. 1631 01:13:13,260 --> 01:13:16,350 Дозволите ми да избришете нуллс, тако да можемо говорити о онима други пут. 1632 01:13:16,350 --> 01:13:18,460 Али шта је то другачије за петљу овај пут? 1633 01:13:21,580 --> 01:13:23,160 И ја могу да се вратим на претходни пример. 1634 01:13:23,160 --> 01:13:24,800 Дакле, то је верзија два. 1635 01:13:24,800 --> 01:13:27,020 Ово је верзија један. 1636 01:13:27,020 --> 01:13:31,935 Један, два, један два. 1637 01:13:35,030 --> 01:13:38,240 Дакле, стрлен позив је где? 1638 01:13:38,240 --> 01:13:40,420 То је у првом делу за петљу. 1639 01:13:40,420 --> 01:13:43,060 Било која мисли о томе зашто ово радим? 1640 01:13:43,060 --> 01:13:43,690 Да. 1641 01:13:43,690 --> 01:13:46,010 [ИНАУДИБЛЕ] 1642 01:13:46,010 --> 01:13:47,630 Давид Ј. Малан: Дакле, ми не зову функција сваки пут. 1643 01:13:47,630 --> 01:13:48,040 Управо тако. 1644 01:13:48,040 --> 01:13:50,350 Подсетимо из за петље да су они супер једноставно када сте некако 1645 01:13:50,350 --> 01:13:52,180 Разумем да је ово иницијализација је 1646 01:13:52,180 --> 01:13:53,330 стање, и ажурирање. 1647 01:13:53,330 --> 01:13:55,430 Проблем је у томе што услов дешава на сваком 1648 01:13:55,430 --> 01:13:56,600 итерација петље. 1649 01:13:56,600 --> 01:13:59,930 И тако се у овом примеру овде, шта је лоше у вези са чињеницом 1650 01:13:59,930 --> 01:14:03,500 да је ово моје стање? 1651 01:14:03,500 --> 01:14:05,920 Зовеш стрлен опет и опет и опет. 1652 01:14:05,920 --> 01:14:08,990 Али када сам откуцао у Давиду, дужина тог стринга је пет. 1653 01:14:08,990 --> 01:14:11,560 И то неће променити на свакој итерацији петље, јер 1654 01:14:11,560 --> 01:14:15,560 стринг је увек Д-В-И-Д. Дакле, ово је наговештај шта ће постати 1655 01:14:15,560 --> 01:14:19,650 све важније идеја познат као дизајн решења, где - само не 1656 01:14:19,650 --> 01:14:21,640 чине рачунар уради непотребан посао. 1657 01:14:21,640 --> 01:14:25,630 >> Сада само као увид у псет 2, псет 2 у стандардном издању је 1658 01:14:25,630 --> 01:14:28,850 ће вам изазов да заиста спроведе одређени број шифре, неке 1659 01:14:28,850 --> 01:14:32,650 број алгоритама за шифровање, тако да можете и шифровање и дешифровање 1660 01:14:32,650 --> 01:14:35,530 тајне поруке, баш као једне Ралпхие се декодира. 1661 01:14:35,530 --> 01:14:38,720 У хакерске издању псет 2, ми ћемо ићи мало даље. 1662 01:14:38,720 --> 01:14:42,010 Ми ћемо вам дам датотеку из стварног компјутерског система који садржи 1663 01:14:42,010 --> 01:14:45,690 гомила корисничких имена и лозинки стварних шифрованих и изазов 1664 01:14:45,690 --> 01:14:49,110 за хакер издање ће бити да пуца те лозинке и фигуру 1665 01:14:49,110 --> 01:14:53,060 шта криптографске или шта тајна је коришћена да се заиста 1666 01:14:53,060 --> 01:14:55,080 генерисати те лозинке. 1667 01:14:55,080 --> 01:14:58,360 А ми ћемо да урадимо ово користећи нову функцију овде, Ц који ћу дати 1668 01:14:58,360 --> 01:15:02,200 само демо, познат као аргумената у командној линији. 1669 01:15:02,200 --> 01:15:05,930 >> Тако испада, као што неки од вас можда видели у делу или у уџбеницима, 1670 01:15:05,930 --> 01:15:09,850 Главни не мора увек да буде празнина у загради. 1671 01:15:09,850 --> 01:15:14,060 Испада да је главни може бити написана овако, са два аргумената, 1672 01:15:14,060 --> 01:15:19,690 аргц и аргв, где аргц је број речи које сте укуцали после 1673 01:15:19,690 --> 01:15:21,940 овог програма је име на командној линији. 1674 01:15:21,940 --> 01:15:24,550 А аргв је стварни речи. 1675 01:15:24,550 --> 01:15:29,470 И као Тргу заграде тамо сугеришем, аргв је очигледно низ. 1676 01:15:29,470 --> 01:15:33,720 То ће бити ниска, после низа после низа у меморији. 1677 01:15:33,720 --> 01:15:36,170 Па шта ћемо моћи да урадимо, почевши псет 2, се 1678 01:15:36,170 --> 01:15:37,310 овако нешто. 1679 01:15:37,310 --> 01:15:42,450 Ако направим аргв1, што је пример ћемо вратити у понедељак, и покрените 1680 01:15:42,450 --> 01:15:45,180 то, приметићете да то не изгледа да ништа још. 1681 01:15:45,180 --> 01:15:47,050 То је само исписује своје име. 1682 01:15:47,050 --> 01:15:53,220 Али ако кажем збогом класе, обавештење да је овај програм очигледно понавља 1683 01:15:53,220 --> 01:15:57,030 преко сваке речи које су откуцали у промпту. 1684 01:15:57,030 --> 01:16:02,050 А начин на који ћемо добити приступ речи које корисник има 1685 01:16:02,050 --> 01:16:06,780 откуцан на линији је променом главни, од овог викенда, од инт 1686 01:16:06,780 --> 01:16:10,710 маин () на маин (аргц, аргв). 1687 01:16:10,710 --> 01:16:13,700 И тако ће се родити командне линије аргументе. 1688 01:16:13,700 --> 01:16:17,210 А када се заиста софистицирана у овоме, ви ћете бити у стању да напише 1689 01:16:17,210 --> 01:16:21,370 Заиста триппи програми, као што је овај овде, што иде изнад и изван 1690 01:16:21,370 --> 01:16:25,520 неке од функционалности које смо урадили до сада, али све веома моћан. 1691 01:16:25,520 --> 01:16:27,330 >> Тако ћемо оставити ово са ово на екрану. 1692 01:16:27,330 --> 01:16:29,160 А ми ћемо вас видети у понедељак.