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