1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA Чан: Поздравляем па аздабленні вашага 3 00:00:11,270 --> 00:00:13,200 Першыя пару праграм C. 4 00:00:13,200 --> 00:00:16,379 Я ведаю, што вашы першыя крокі ў C сінтаксіс можа быць складанай. 5 00:00:16,379 --> 00:00:20,060 Але запэўніваю вас, у канцы Вядома, вы зможаце зірнуць на 6 00:00:20,060 --> 00:00:23,870 Першыя пару заданняў і завяршыць іх у лічаныя хвіліны. 7 00:00:23,870 --> 00:00:27,830 >> Зараз, калі вы атрымліваеце больш знаёмыя з сінтаксісам, давайце пяройдзем да Цэзару. 8 00:00:27,830 --> 00:00:31,720 У Цэзара, карыстальнік будзе прадставіць цэлае ключ каманднага радка 9 00:00:31,720 --> 00:00:35,300 аргументу, то прысвоіць звычайную тэкставае паведамленне ў камандным радку. 10 00:00:35,300 --> 00:00:38,050 Пасля гэтага праграма шыфроўкі тэксту і друк 11 00:00:38,050 --> 00:00:40,020 іх зашыфраванага паведамлення. 12 00:00:40,020 --> 00:00:42,980 >> Шыфравання для Цэзара даволі проста. 13 00:00:42,980 --> 00:00:46,455 Зрух кожны ліст, у іх простага тэксту, з дапамогай ключа. 14 00:00:46,455 --> 00:00:49,220 У выніку, гэта таксама даволі няўпэўнена. 15 00:00:49,220 --> 00:00:53,850 Але рэалізацыя Цэзар прадставіць нам ASCIIMath і масіваў дадзеных 16 00:00:53,850 --> 00:00:54,460 структурамі. 17 00:00:54,460 --> 00:00:57,510 Мы вернемся да больш складаным шыфры пазней. 18 00:00:57,510 --> 00:01:01,680 З Цэзарам ключ 2, у лісце ў просты тэкст, павінна быць прадстаўлена 19 00:01:01,680 --> 00:01:07,580 літара С у зашыфраваны тэкст, таму што C дзве літары імя А. B будзе 20 00:01:07,580 --> 00:01:12,450 прадстаўлена D і C Э. Да канцы алфавіту, W ўяўляе 21 00:01:12,450 --> 00:01:18,550 прадстаўленай Y, Х на Y, Z. Але не мае двух літар пасля яго, так 22 00:01:18,550 --> 00:01:21,070 шыфры абарочваецца вакол алфавіту. 23 00:01:21,070 --> 00:01:27,190 Y ў выглядзе простага тэксту ўяўляецца, такім чынам У зашыфраванага тэксту і Z Б. Гэта можа 24 00:01:27,190 --> 00:01:32,080 Даведка для прагляду Цэзара як Cypher бесперапыннае кола алфавіту. 25 00:01:32,080 --> 00:01:35,760 >> Каб зашыфраваць іх тэкст, карыстальнік ўвойдзе два аргументу 26 00:01:35,760 --> 00:01:37,090 у камандны радок - 27 00:01:37,090 --> 00:01:40,010 . / Цэзару наступным ключом. 28 00:01:40,010 --> 00:01:44,710 Як заўсёды, мы не можам давяраць карыстачу поўнасцю ўвесці ўваходныя, якія робяць 29 00:01:44,710 --> 00:01:45,800 сэнс для нашай праграмы. 30 00:01:45,800 --> 00:01:50,670 Так што прыйдзецца, каб праверыць іх увод каманднага радка. 31 00:01:50,670 --> 00:01:57,285 >> Замест выкарыстання тап_п пустэчу, мы выкарыстаннем тап_п, унутр ARGC, радкі ARGV. 32 00:01:57,285 --> 00:02:01,730 Цэлая пераменная ўяўляе ARGC колькасць аргументаў, перададзеных у 33 00:02:01,730 --> 00:02:02,880 у камандным радку. 34 00:02:02,880 --> 00:02:09,070 І ARGV з'яўляецца масівам, або думаць аб ім як Спіс, з аргументаў, што перадаюцца цалі 35 00:02:09,070 --> 00:02:12,000 >> Так што для Цэзара, як мы сцвярджаем карыстальнікаў ўваход? 36 00:02:12,000 --> 00:02:15,870 Ну, яны павінны быць толькі ўводу два аргументу каманднага радка - 37 00:02:15,870 --> 00:02:18,150 . / Цэзар і ключ. 38 00:02:18,150 --> 00:02:22,340 Так што калі ARGC ня 2, гэта азначае, што яны альбо забыліся ключ і проста 39 00:02:22,340 --> 00:02:27,230 ўведзена. / Цэзарам, або яны ўвялі некалькі ключоў. 40 00:02:27,230 --> 00:02:29,770 >> Калі гэта так, то вам хочаце раздрукаваць інструкцыю 41 00:02:29,770 --> 00:02:30,910 і выйсці з праграмы. 42 00:02:30,910 --> 00:02:34,320 Ім трэба, каб паўтарыць спробу з каманднага радка. 43 00:02:34,320 --> 00:02:37,430 Але нават калі ARGC складае 2, вы будзеце неабходна праверыць, ці з'яўляюцца яны 44 00:02:37,430 --> 00:02:39,100 даць вам правільны ключ. 45 00:02:39,100 --> 00:02:40,730 Для Цэзара, неабходна цэлае. 46 00:02:40,730 --> 00:02:43,260 Але ARGV з'яўляецца масіў радкоў. 47 00:02:43,260 --> 00:02:46,490 Як атрымаць доступ да гэтых ключом? 48 00:02:46,490 --> 00:02:47,850 >> Збеглы погляд на масівы - 49 00:02:47,850 --> 00:02:51,410 структур дадзеных, якія трымаюць некалькі значэння таго ж тыпу дадзеных. 50 00:02:51,410 --> 00:02:55,350 Запісы пачынаюцца з нуля індэксуюцца, гэта азначае, што Першым элементам з'яўляецца індэксам нуль 51 00:02:55,350 --> 00:03:00,260 а апошні элемент мае індэкс памеру мінус 1, дзе памер колькасць 52 00:03:00,260 --> 00:03:02,850 элементаў у масіве. 53 00:03:02,850 --> 00:03:07,380 >> Калі б я абвясціў новую паштовую скрыню масіў радкоў даўжыні 3, візуальна, яна 54 00:03:07,380 --> 00:03:08,570 выглядае наступным чынам. 55 00:03:08,570 --> 00:03:11,520 Тры кантэйнеры для струнных , Бок аб бок. 56 00:03:11,520 --> 00:03:15,445 Каб атрымаць доступ да любога элемента, вы ўводзіце імя масіва, а затым пакажам 57 00:03:15,445 --> 00:03:18,080 індэкс ў квадратных дужках. 58 00:03:18,080 --> 00:03:21,610 Тут я задаю значэнне для кожнага элемент, як я хацеў бы зрабіць з любым 59 00:03:21,610 --> 00:03:24,310 іншай зменнай радок. 60 00:03:24,310 --> 00:03:29,020 >> Такім чынам, каб атрымаць доступ да нашых аргументаў каманднага радка, усё, што нам трэба зрабіць, гэта атрымаць доступ да 61 00:03:29,020 --> 00:03:31,690 правы элемент масіва агду. 62 00:03:31,690 --> 00:03:37,360 Калі карыстальнік увайшоў. / Стартам каманды Rocket у тэрмінал, агду 0 будзе 63 00:03:37,360 --> 00:03:38,950 быць. / стартам. 64 00:03:38,950 --> 00:03:45,010 ARGV будзе каманды, і арг2 б ракеты. 65 00:03:45,010 --> 00:03:47,670 >> Цяпер, калі мы можам атрымаць доступ да нашых ключавым, нам усё яшчэ трэба, каб зрабіць 66 00:03:47,670 --> 00:03:49,040 упэўнены, што гэта правільна. 67 00:03:49,040 --> 00:03:51,060 Нам трэба пераўтварыць яго ў цэлы лік. 68 00:03:51,060 --> 00:03:54,680 Але мы не можам проста кінуць, як мы зрабілі раней. 69 00:03:54,680 --> 00:03:58,800 На шчасце, у Y функцыя клапоціцца гэтага для нас і нават вяртае 0 70 00:03:58,800 --> 00:04:02,110 Калі радок не можа быць ператворана у цэлы лік. 71 00:04:02,110 --> 00:04:04,450 Табе і карты ў рукі, хоць, шчыра Карыстальнік чаму вы не будзеце 72 00:04:04,450 --> 00:04:06,220 дазволіць праграме працягвацца. 73 00:04:06,220 --> 00:04:10,710 Захаваць вынік у Y ў цэлае, і ў вас ёсць свой ключ. 74 00:04:10,710 --> 00:04:12,070 Наступным важным момантам з'яўляецца простым. 75 00:04:12,070 --> 00:04:15,940 Запытаць у карыстальніка іх простага тэксту, які будзе мець радковы тып дадзеных. 76 00:04:15,940 --> 00:04:18,339 На шчасце для нас, усе ўведзеныя карыстальнікам радкі з'яўляюцца сапраўднымі. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> Цяпер у нас ёсць усе неабходныя ўваходныя ад карыстальніка, гэты час для нас 79 00:04:24,760 --> 00:04:26,520 зашыфраваць сваё паведамленне. 80 00:04:26,520 --> 00:04:29,200 Канцэпцыя простая Цэзара дастаткова, каб зразумець. 81 00:04:29,200 --> 00:04:33,750 Але якім кампутарам ведаць, якія лісты прыходзяць адзін за адным? 82 00:04:33,750 --> 00:04:36,100 >> Вось дзе табліцы ASCII прыходзіць цалі 83 00:04:36,100 --> 00:04:39,420 У кожнага персанажа ёсць цэлае лік звязаных з ім. 84 00:04:39,420 --> 00:04:41,380 Капітал складае 65 гадоў. 85 00:04:41,380 --> 00:04:43,310 Капітал B складае 66. 86 00:04:43,310 --> 00:04:45,260 Ніжні рэгістр складае 97. 87 00:04:45,260 --> 00:04:47,590 Малыя B складае 98. 88 00:04:47,590 --> 00:04:50,770 Але сімвалы не абмяжоўваюцца проста алфавітным лікаў. 89 00:04:50,770 --> 00:04:56,020 Напрыклад, знак @ ASCII з'яўляецца 64 лік. 90 00:04:56,020 --> 00:04:59,690 >> Перш чым перайсці да цэлай радкі, давайце ўявім, што мы проста павінны перайсці 91 00:04:59,690 --> 00:05:01,220 адзін знак. 92 00:05:01,220 --> 00:05:04,640 Ну, мы толькі хочам зрушыць фактычныя Літары ў звычайны тэкст, які не 93 00:05:04,640 --> 00:05:06,020 знакі або лічбы. 94 00:05:06,020 --> 00:05:09,100 Такім чынам, першае, што мы хочам праверыць, ці з'яўляецца персанаж знаходзіцца ў 95 00:05:09,100 --> 00:05:10,430 алфавіту. 96 00:05:10,430 --> 00:05:14,460 >> Функцыя ISALPHA робіць гэта для нас і вяртае лагічнае - 97 00:05:14,460 --> 00:05:18,570 дакладна, калі знакаў лісце, ілжывае у адваротным выпадку. 98 00:05:18,570 --> 00:05:22,270 Два іншых карысных функцый ISUPPER і IsLower, з 99 00:05:22,270 --> 00:05:23,860 тлумачэнняў імёны. 100 00:05:23,860 --> 00:05:27,370 Яны выкананы, калі зададзены сімвал гэта верхні або ніжні рэгістр, 101 00:05:27,370 --> 00:05:28,740 адпаведна. 102 00:05:28,740 --> 00:05:33,770 Так як яны лагічныя, яны Карысна выкарыстоўваць у якасці умоў. 103 00:05:33,770 --> 00:05:38,310 >> Калі ISALPHA вяртае ісціну, вам трэба перакласці гэты сімвал ключом. 104 00:05:38,310 --> 00:05:43,750 Так давайце адкрыем для ASCIIMath і зрабіць некаторыя ASCII матэматыку. 105 00:05:43,750 --> 00:05:48,700 Выкарыстанне вельмі падобна на выкарыстанне для Цэзара і бярэ ў ключ на 106 00:05:48,700 --> 00:05:50,870 каманднага радка. 107 00:05:50,870 --> 00:05:59,590 >> Калі я запускаю ASCIIMath 5, гэта, здаецца, дадаць 5, даючы мне Літара F, і 108 00:05:59,590 --> 00:06:01,260 адлюстраванне ASCII значэння. 109 00:06:01,260 --> 00:06:04,090 Такім чынам, давайце зірнем на праграму. 110 00:06:04,090 --> 00:06:11,820 >> Вы можаце здзівіцца, прама тут, чаму літара пазначае цэлы лік, калі гэта 111 00:06:11,820 --> 00:06:14,330 ясна, ну, у лісце. 112 00:06:14,330 --> 00:06:17,690 Атрымліваецца, што сімвалы і цэлыя з'яўляюцца ўзаемазаменнымі. 113 00:06:17,690 --> 00:06:21,730 Змяшчаючы ліст у адну двукоссі, цэлае можа захоўваць 114 00:06:21,730 --> 00:06:25,390 ASCII кошту капіталу А. Аднак будзьце асцярожныя. 115 00:06:25,390 --> 00:06:27,150 Вам трэба адной вопратцы. 116 00:06:27,150 --> 00:06:31,260 Без адной двукоссі, кампілятар будзе шукаць зменную 117 00:06:31,260 --> 00:06:35,510 імя, а ня характар. 118 00:06:35,510 --> 00:06:42,140 >> Затым я дадаю ліст і ключ, захоўванне Сума ў цэлалікавых вынік зменных. 119 00:06:42,140 --> 00:06:47,740 Нават калі вынік мае тып дадзеных цэлае, мой Е аператар выкарыстоўвае 120 00:06:47,740 --> 00:06:50,370 % З запаўняльнік для знакаў. 121 00:06:50,370 --> 00:06:54,530 Такім чынам, праграма друкуе характару звязаныя з цэлалікавых вынік. 122 00:06:54,530 --> 00:07:00,400 І так як мы надрукавалі цэлае форме, а таксама выкарыстанне% D, мы бачым, 123 00:07:00,400 --> 00:07:02,110 колькасці, а таксама. 124 00:07:02,110 --> 00:07:04,450 Такім чынам, зараз вы бачыце, што мы лячэння і сімвалы 125 00:07:04,450 --> 00:07:06,980 цэлыя лікі, і наадварот. 126 00:07:06,980 --> 00:07:12,205 >> Давайце праверым ASCIIMath з некалькіх больш разоў з выкарыстаннем 25 у якасці ключа. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 Мы атрымліваем лісты г. 129 00:07:17,090 --> 00:07:19,750 Зараз мы спрабуем 26. 130 00:07:19,750 --> 00:07:25,600 Мы хочам атрымаць ліст, але Замест гэтага мы атрымліваем левую дужку. 131 00:07:25,600 --> 00:07:29,490 Так, відавочна, проста дадаўшы Ключ да ліста не будзе рабіць. 132 00:07:29,490 --> 00:07:32,780 Мы павінны высветліць формулу, каб абгарнуць па ўсім алфавіце, як і нашы 133 00:07:32,780 --> 00:07:34,570 Напрыклад, у пачатку зрабіў. 134 00:07:34,570 --> 00:07:38,520 >> Формула для Цэзара зрух заключаецца ў наступным. 135 00:07:38,520 --> 00:07:42,750 C роўная P Плюс да модулю 26. 136 00:07:42,750 --> 00:07:46,040 Памятаеце, што па модулю з'яўляецца карысным аперацыя, якая дае нам рэшту 137 00:07:46,040 --> 00:07:49,880 дзялення аднаго ліку на іншае. 138 00:07:49,880 --> 00:07:54,870 Давайце выкарыстоўваецца і ў дачыненні гэтую формулу да раўніне Тэкст ліста з ключом 2. 139 00:07:54,870 --> 00:08:01,810 ASCII значэнне ў 89, якая дае нам 91 па модулю 26, 140 00:08:01,810 --> 00:08:03,690 якіх роўная 13 - 141 00:08:03,690 --> 00:08:08,740 дакладна не ASCII значэнні а, які 67. 142 00:08:08,740 --> 00:08:12,810 >> Гумар мне цяпер і адысці ад ASCII значэнні алфавітны паказальнік 143 00:08:12,810 --> 00:08:18,690 дзе роўная нулю, а Z 25, гэта азначае, што Y роўна 24. 144 00:08:18,690 --> 00:08:25,830 24 плюс 2, па модулю 6, дае нам 26, 26 па модулю, 0, які з'яўляецца 145 00:08:25,830 --> 00:08:28,170 алфавітны паказальнік. 146 00:08:28,170 --> 00:08:32,980 Так што гэтая формула, здаецца, адносіцца да алфавітны паказальнік і літары 147 00:08:32,980 --> 00:08:34,960 Не яго значэнне ASCII. 148 00:08:34,960 --> 00:08:37,630 >> Але вы пачынаеце з ASCII значэнняў. 149 00:08:37,630 --> 00:08:41,650 І, каб надрукаваць сімвал зашыфраванага тэксту, Вы павінны будзеце яго ASCII значэння, а таксама. 150 00:08:41,650 --> 00:08:46,400 Табе і карты ў рукі, то, каб высветліць, Як пераключацца. 151 00:08:46,400 --> 00:08:49,850 >> Пасля таго як вы высветліць правільную формулу за адным персанажам, усё, што вам трэба зрабіць, 152 00:08:49,850 --> 00:08:53,520 гэта ўжыць такую ​​ж формулу, каб кожны Ліст у просты тэкст - 153 00:08:53,520 --> 00:08:57,720 толькі калі гэтая літара алфавітнага, вядома. 154 00:08:57,720 --> 00:09:02,360 І памятайце, што вам неабходна захаваць выпадку, верхняя ці ніжняя, вось дзе 155 00:09:02,360 --> 00:09:06,890 ISUPPER і IsLower функцый згадвалася раней спатрэбіцца. 156 00:09:06,890 --> 00:09:08,830 Магчыма, вам прыйдзецца дзве формулы - 157 00:09:08,830 --> 00:09:11,680 адзін для вялікіх літар і адзін у ніжнім рэгістры. 158 00:09:11,680 --> 00:09:18,420 Так ISUPPER IsLower дапаможа вам вызначыць, якой формуле ўжыць. 159 00:09:18,420 --> 00:09:22,460 >> Як Вы ўжываеце вашу формулу для кожнага аднаго знака ў радку? 160 00:09:22,460 --> 00:09:25,910 Ну, проста радок масіў знакаў. 161 00:09:25,910 --> 00:09:31,150 Такім чынам, вы можаце атрымаць доступ кожны знак групоўкі па кожнаму знаку ў 162 00:09:31,150 --> 00:09:33,450 радок у цыкле. 163 00:09:33,450 --> 00:09:37,550 Што тычыцца стану вашага цыкл, Функцыя StrLen, для струннага 164 00:09:37,550 --> 00:09:39,280 даўжыні, спатрэбіцца. 165 00:09:39,280 --> 00:09:44,020 Яна займае ў радку ў якасці ўваходных і вяртае даўжыню гэтага радка. 166 00:09:44,020 --> 00:09:49,250 Пераканайцеся, што ўключае ў сябе права бібліятэку выкарыстоўваць функцыю даўжыню радка. 167 00:09:49,250 --> 00:09:51,790 >> І ў вас ёсць зашыфраваны тэкст. 168 00:09:51,790 --> 00:09:53,260 Мяне клічуць Zamyla. 169 00:09:53,260 --> 00:09:54,510 І [кажа CODE]. 170 00:09:54,510 --> 00:10:02,944