1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA CHAN: Честитки за дополнување на вашиот 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 нивните ciphertext порака. 12 00:00:40,020 --> 00:00:42,980 >> На enciphering за Цезар е прилично едноставна. 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 буквата С во ciphertext, бидејќи C е две писма по А Б ќе биде 20 00:01:07,580 --> 00:01:12,450 претставен од страна на Д и Ц од страна на Д Кон на крајот на азбуката, W е 21 00:01:12,450 --> 00:01:18,550 претставен од страна на Y и X од страна на З Но Ц Ч Џ не имаат две писма по неа, толку 22 00:01:18,550 --> 00:01:21,070 на шифри обвива околу азбука. 23 00:01:21,070 --> 00:01:27,190 Y во обичен текст е така претставена со А во ciphertext, и 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 >> Наместо да се користи int главната празнина, ние сме користење int главната, int 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 право елемент од низата argv. 62 00:03:31,690 --> 00:03:37,360 Ако корисникот внесе. / Излитане Тим Ракета во терминал, argv 0 би 63 00:03:37,360 --> 00:03:38,950 биде. / излитане. 64 00:03:38,950 --> 00:03:45,010 argv ќе биде тим, и arg2 ќе биде ракета. 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 За среќа, од А до Ц Ч Џ функција се грижи на овој за нас, па дури и се враќа 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 Чување на резултат на А до Ц во цел број, и таму ќе ја имаат Вашиот клуч. 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 Капитал Б е 66. 86 00:04:43,310 --> 00:04:45,260 Мали букви a е 97. 87 00:04:45,260 --> 00:04:47,590 Мали букви б е 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 го прави ова за ни и враќа Boolean - 97 00:05:14,460 --> 00:05:18,570 точно ако ликовите е писмо, false ако поинаку. 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 Бидејќи тие се Booleans, тие се корисно да се користи како услови. 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 до, ми даде писмо ѓ, и 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 >> Тогаш јас додадете писмо и клуч, чување на сума во int променливи резултат. 119 00:06:42,140 --> 00:06:47,740 Иако Резултатот е од типот податоци цел број, моето printf изјава користи 120 00:06:47,740 --> 00:06:50,370 % C случаеви за карактери. 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 в еднаква на стр плус к modulo 26. 136 00:07:42,750 --> 00:07:46,040 Се сеќавам дека modulo е корисна операција која ни дава остатокот 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 вредност на y е 89, која ни дава 91 modulo 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 каде A е нула и Z е 25, што значи дека Y е 24. 144 00:08:18,690 --> 00:08:25,830 24 плус 2, modulo 6, ни дава 26, modulo 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 И да се печати ликот ciphertext, ќе треба својата 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 >> И таму ќе ја имаат својата ciphertext. 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