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