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