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