1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [Праходжанне - Праблема Set 2] 2 00:00:01,940 --> 00:00:04,130 [Zamyla Chan - Гарвардскі універсітэт] 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 у пакрокавых кіраўніцтваў, каб прайсці праз кожны спосаб зрабіць пастаўленай задачы 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: Crypto - Zamyla Chan - 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: Crypto гэта весела адзін. 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 Мы не збіраемся прайсці праз гэта за праходжанне гульні, 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 І так у Caesar хтосьці пройдзе міма вас ключ з цэлым, 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 І так, калі вы проста запусціць у акне тэрмінала ў ваш прыбор Суда ням-у - 42 00:02:36,730 --> 00:02:40,040 гэта сцяг saying так, усё абнаўлення - абнаўлення, 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 Добра. Такім чынам, паколькі мы маем справу з лістамі і змены, шыфраванне рэчы, 52 00:03:14,360 --> 00:03:20,410 мы збіраемся сапраўды хочам стаць лепшымі сябрамі з нашымі ASCII графіцы. 53 00:03:20,410 --> 00:03:24,350 Ёсць мноства ones онлайн, калі вы знойдзеце. Можа быць, нават стварыць свой уласны. 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 Таму, калі яны працуюць свае праграмы, як правіла, скажаце вы. / Прывітанне, напрыклад, 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 Па сутнасці, сумешчаны з A, B сумешчана з B, аж да Z. 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 Калі мы ўвайшлі ў літары ад А да L ў нашай шыфр Цэзара, 95 00:06:14,550 --> 00:06:19,520 то гэта будзе ўваход D праз O таму што кожная літара перайшла ў 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 І гэта галоўнае ў абодвух Цэзара і Виженера 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 У нас ёсць цэлы лік імя агдс, а затым масіў радкоў, званы argv. 115 00:07:44,070 --> 00:07:46,030 Так агдс является цэлым лікам, 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 У нас ёсць цэлых лікаў, мы ў два разы, у нас ёсць радкі, і зараз мы маем масівы. 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 яны кажуць. / Hello David 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 Наступны Давіда, наступнага малая. 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 абярыце Уласцівасці, Адкрыць з дапамогай, а затым выберыце Gedit, усталяваць па змаўчанні, 160 00:11:04,580 --> 00:11:13,020 і цяпер ваша праграма павінна адкрыць у Gedit замест Emacs. 161 00:11:14,710 --> 00:11:16,290 Perfect. 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 Так што структуры, якія мы можам выкарыстоўваць для перабору что-то - 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 = 0. Давайце пачнем са стандартнай ініцыялізацыі зменнай. 169 00:11:56,900 --> 00:12:02,370 Я збіраюся пакінуць умовай для набору, а затым сказаць, што я + +, збіраюся рабіць рэчы. 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 то гэта азначае, што агдс, па сутнасці, даўжыня ARGV, права, 174 00:12:21,280 --> 00:12:28,970 таму што там будзе столькі аргументаў, як значэнне ARGC. 175 00:12:28,970 --> 00:12:35,910 Таму калі мы хочам, каб перабору кожнага элемента ў 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 Bar. 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 ведаючы, што агдс ўяўляе даўжыню 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 Так што гэта на самай справе не з'яўляецца цэлым лікам кліентаў, але ў Caesar мы хочам мець справу з цэлымі лікамі. 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 Так агдс павінна быць пэўнае колькасць. 225 00:16:23,660 --> 00:16:29,060 Што лік гэта будзе, калі яны павінны перадаць вам. / Цэзар, а затым ключ? 226 00:16:29,060 --> 00:16:32,920 Што такое агдс? >> [Студэнт] 2. Два >>. Менавіта так. 227 00:16:32,920 --> 00:16:35,490 Такім чынам, вы хочаце, каб пераканацца, што агдс роўная 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 агдс? Там пэўна 1 лік. 242 00:17:27,569 --> 00:17:32,200 Права. Прычына, чаму мы павінны 2 для агдс замест 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 Такім чынам, у пачатку мы пачынаем з хэш-тэгам стандартнага ўводу / высновы. Ч, нешта накшталт гэтага. 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 і зашыфраванага тэксту з'яўляецца тое, што вы вернецеся да іх. 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 будзе вялікай літары, індэкс 1 будзе ч, і г.д. 284 00:20:17,530 --> 00:20:23,970 А потым з масівамі, у ARGC напрыклад, у args.c, 285 00:20:23,970 --> 00:20:27,090 мы ўбачылі, што ў нас было перабраць масіў 286 00:20:27,090 --> 00:20:32,440 і таму нам давялося паўтараць ад = 0 да I менш, чым даўжыня. 287 00:20:32,440 --> 00:20:35,560 Так што нам трэба нейкім чынам высветліць, што даўжыня нашых радок 288 00:20:35,560 --> 00:20:37,090 калі мы збіраемся перабраць яго. 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 Давайце паглядзім на прыклад таго, як мы маглі б для перабору кожнага знака ў радку 295 00:21:05,840 --> 00:21:08,470 і нешта зрабіць з гэтым. 296 00:21:08,470 --> 00:21:13,250 Тое, што мы хочам зрабіць, гэта перабор кожнага знака радкі, 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 = 0. 300 00:21:27,020 --> 00:21:30,070 Мы збіраемся пакінуць прастору для стану. 301 00:21:32,700 --> 00:21:36,840 Мы хочам, каб паўтараць, пакуль не дасягнем канца радка, дакладна? 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 Такім чынам, то ў гэтым выпадку мы маем справу з радком с. 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 Калі вы хочаце, каб раздрукаваць паплавок, можна выкарыстоўваць як запаўняльнік% ф. 314 00:22:22,150 --> 00:22:24,580 З Int вы павінны выкарыстоўваць% г. 315 00:22:24,580 --> 00:22:30,890 І аналагічна, з характарам, вы выкарыстоўваеце% з сказаць, што я збіраюся быць пячатку з знакавай 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 і што характар ​​будзе й літарай у нашу радок з. 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 Таму мы вымушаны былі радкі называецца OMG, і зараз яна падкрэсліла, нават больш. 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 Да гэтага, як мы атрымаем цэлы лік? 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 дзе я прызначыць словы для кожнай літары ці нешта накшталт гэтага. Cool. 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 У нас ёсць некалькі інструментаў, як мы перабору радкі, 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 Ніжні рэгістр павінен застацца ў ніжнім рэгістры. 364 00:26:13,620 --> 00:26:19,480 Такім чынам, некаторыя карысныя функцыі, каб быць у стане мець справу толькі з шыфраваннем літары 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 Але мы хочам, каб пераканацца, што выснова будзе сталіцай O. 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 Такім чынам, сталіца C ставіцца да 67. Малыя F ставіцца да 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 І вось я кажу - МЫ справіцца з гэтай часткай пазней - 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 Так што я буду патрабаваць, каб агдс роўная 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 Тады я збіраюся ўсталяваць знак, які будзе р. 416 00:30:19,230 --> 00:30:23,970 Звярніце ўвагу, што тып зменнай ХР на самай справе цэлае. 417 00:30:23,970 --> 00:30:30,480 Такім чынам, што я магу выкарыстоўваць Г як цэлае з'яўляецца ўпакоўваючы яго з гэтым адзінарныя двукоссі. 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 сімвал ўяўляецца КПЧ, і цэлае з'яўляецца ключавым. 421 00:30:49,450 --> 00:30:54,320 І такім чынам мы збіраемся ў выніку дадаць 2 разам. 422 00:30:54,320 --> 00:30:58,420 Такім чынам, мы збіраемся дадаць усё, што г + ключ, 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 Такім чынам, г павялічыўся на 4 збіраецца даць нам V, што адпавядае ASCII значэнне 118. 430 00:31:39,280 --> 00:31:43,880 І тады яна як бы мае сэнс, што - 431 00:31:43,880 --> 00:31:51,250 На самай справе, ці магу я спытаць вас, што вы думаеце ASCII значэння г, калі г + 4 складае 118? 432 00:31:53,070 --> 00:31:55,470 Тады так, г 114. 433 00:31:55,470 --> 00:32:03,010 Так што, калі вы паглядзіце на табліцу ASCII, то, вядома ж, вы ўбачыце, што г прадстаўлена 114. 434 00:32:03,010 --> 00:32:08,610 Так што цяпер мы ведаем, што мы можам дадаць цэлых лікаў, сімвалаў, гэта здаецца даволі простым. 435 00:32:08,610 --> 00:32:12,740 Мы проста збіраемся для перабору радкоў, як мы бачылі ў прыкладзе раней. 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 Вы бачыце, што г, прадстаўлены на 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 Па сутнасці, калі ў вас ёсць х па модулю у, які дае вам астатнюю частку х дзеліцца на ў. 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 Гэта будзе карысна для нашых п `ах. 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 Зноў жа, вы на самой справе 5-га чалавека. Як вы ведаеце, казаць 2, а не 5? 474 00:34:49,420 --> 00:34:53,760 Вы кажаце, што 5 Mod 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 Mod 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 Ах ды, напрыклад, 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 Наш канчатковы вынік будзе зашыфраванага тэксту. 503 00:36:55,000 --> 00:36:58,300 Такім чынам, гэта кажа пра тое, што га характару зашыфраваны тэкст 504 00:36:58,300 --> 00:37:02,500 будзе адпавядаць га характару тэксту. 505 00:37:02,500 --> 00:37:08,130 Гэта мае сэнс, таму што мы хочам, каб заўсёды быць падшэўка гэтыя рэчы. 506 00:37:08,130 --> 00:37:13,480 Так што гэта будзе га характару зашыфраванага тэксту плюс да, які з'яўляецца нашым ключом - 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 вы пойдзеце да A, B, C, D, пакуль вы не дабраліся да патрэбнага колькасці. 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 значэння, г складае 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 Такім чынам, відавочна, што мы павінны мець некаторы спосаб налады гэтага няшмат. 522 00:38:42,970 --> 00:38:51,340 У тэрмінах рэгулярных алфавіту, мы ведаем, што г 26 літары і F з'яўляецца 6-м. 523 00:38:51,340 --> 00:38:55,460 Але мы ў інфарматыцы, так што мы збіраемся індэкса 0. 524 00:38:55,460 --> 00:39:00,690 І тады замест г-лік 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 Мы маем г прадстаўлены 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 Мы зашыфравана яго. 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 Як мы перабору знакаў у радку, 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 і ў канцы ітэрацыі, што ўвесь масіў і раздрукаваць яго. 548 00:40:39,280 --> 00:40:40,980 Такім чынам, у вас ёсць некалькі варыянтаў для гэтага. 549 00:40:40,980 --> 00:40:47,280 І памятайце, што з% будзе запаўняльнік для друку характару. 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 , А затым зашыфраваць яго, а затым даць ім назад зашыфраванага тэксту. 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 праз г, а ASCII значэння, так што вы можаце бачыць выгляд адносін 566 00:42:03,750 --> 00:42:07,020 і намеціць і паспрабаваць знайсці некаторыя заканамернасці. 567 00:42:07,020 --> 00:42:11,010 Сапраўды гэтак жа, калі б вы былі зрушэння ў пэўнай інстанцыі F - 568 00:42:11,010 --> 00:42:21,110 і гэта альбо малымі ці вялікімі F - тое, што адпавядала б 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 выключэннем, а не толькі да маем да індэксам J. 573 00:42:37,390 --> 00:42:44,810 Звярніце ўвагу, што мы не выкарыстоўваем, таму што я па сутнасці, даўжыня ключавога слова 574 00:42:44,810 --> 00:42:49,850 не абавязкова даўжыні нашага зашыфраванага тэксту. 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 Вы збіраецеся перанесці ваш пэўны характар ​​зашыфраванага тэксту на гэтую суму. 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 Мы ведаем, што T збіраецца быць ссунутыя на о, 590 00:43:55,580 --> 00:44:01,990 Тады Н будзе ссунуты на гадзіну, я маю намер быць ссунутыя. 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 Затым з зрушваецца на мяне. 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 [Студэнт] Такім чынам, выснова будзе зрушваючы ж - 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 і перабіраць. 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 Тады я і S, якія затым перакладаюцца на в і ч адпаведна. 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 Так што гэта не падобна на цябе фактычна наканаваная, скажам, ідзе тут пра, ч тут ідзе, 622 00:46:33,710 --> 00:46:39,200 ідзе тут, я тут ідзе, O, H, A, I, O, H, A, I. Вы не робіце гэтага. 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 Адзначым, што наступны знак, індэкс Я з тэксту, з'яўляецца лікам, напрыклад. 632 00:47:19,310 --> 00:47:31,630 Тады мы не вылучаюць J, індэкс для нашага ключавога слова, пакуль мы не дасягнем яшчэ адзін ліст. 633 00:47:31,630 --> 00:47:36,230 Зноў жа, вы таксама хочаце, каб пераканацца, што вы пахам да пачатку ключавога слова 634 00:47:36,230 --> 00:47:37,770 калі вы знаходзіцеся ў канцы яго. 635 00:47:37,770 --> 00:47:42,030 Калі вы бачыце, тут мы знаходзімся я, наступны павінен быць кс. 636 00:47:42,030 --> 00:47:47,690 Такім чынам, вы хочаце знайсці нейкі спосаб, каб быць здольным пахам ў пачатку вашых ключавых слоў 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 а потым пі, але затым кДж, 647 00:48:42,740 --> 00:48:44,700 Вы хочаце, каб пераканацца, што вы сачыць за тым. 648 00:48:44,700 --> 00:48:47,580 Вам не трэба называць гэта я, вам не трэба называць гэта J, 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 Але калі вы спрабуеце зашыфраваць рэчы і захаваць тэкст, 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 нават калі ваш TF будзе выгляд ведаем, што карціна вы маглі б выкарыстоўваць, 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 [Гэта было праходжанне 2] Калі няма ніякіх іншых пытанняў, то я застануся тут няшмат. 677 00:50:58,990 --> 00:51:04,370 Поспехаў вам у вашых PSET 2: Crypto і дзякуй за ўвагу. 678 00:51:06,070 --> 00:51:08,620 [Студэнт] Дзякуй. >> Дзякуй. 679 00:51:09,220 --> 00:51:10,800 [Media Offline Intro]