>> ZAMYLA CHAN: Честитки за дополнување на вашиот
Првите неколку C програми.
Знам дека ти е прв упад во C синтакса може да биде застрашувачка.
Но јас ве уверувам, на крајот на Се разбира, ќе бидете во можност да се погледне на
Првите неколку задачи и заврши нив во минути.
>> Сега дека сте добивање повеќе запознаени со синтакса, ајде стигнете до Цезар.
Во Цезар, корисникот ќе поднесе целобројни клучните како командната линија
аргумент, а потоа внесете обичен текстуална порака во конзолата.
На програма, тогаш ќе написвам со Воице текстот и печатење
нивните ciphertext порака.
>> На enciphering за Цезар е прилично едноставна.
Префрлат секоја буква, во нивните обичен текст, со клучот.
Како резултат на тоа, тоа е, исто така, прилично несигурни.
Но, спроведувањето Цезар ќе се воведе нас да ASCIIMath и низа податоци
структури.
Ние ќе дојдеме до посложени шифри подоцна.
Со Цезар клучот на 2, буква А во обичен текст ќе биде претставен од страна на
буквата С во ciphertext, бидејќи C е две писма по А Б ќе биде
претставен од страна на Д и Ц од страна на Д Кон на крајот на азбуката, W е
претставен од страна на Y и X од страна на З Но Ц Ч Џ не имаат две писма по неа, толку
на шифри обвива околу азбука.
Y во обичен текст е така претставена со А во ciphertext, и Z од страна на Б Тоа може
помогне да ја видите Цезар Cypher како континуиран азбука тркалото.
>> Да написвам со Воице нивниот текст, на корисникот ќе влезат два аргументи
во командната линија -
. / Цезар проследено со клуч.
Како и секогаш, не можеме да веруваме на корисникот целосно да влезат влез што го прават
смисла за нашата програма.
Па ние ќе мора да се провери нивната командната линија влез.
>> Наместо да се користи int главната празнина, ние сме користење int главната, int argc, стринг argv.
На целобројна променлива argc претставува бројот на аргументи предадена во
на командната линија.
И argv е низа, или мислат на тоа како листа, на аргументи предадена внатре
>> Така и за Цезар, како ние валидирајте на корисникот влез?
Па, тие само треба да ја започне две командната линија аргументи -
. / Цезар и клуч.
Па ако argc не е 2, што значи дека тие или заборавил клучот и само
внесе. / Цезар, или тие влезе повеќе клучеви.
>> Ако ова е случај, тогаш ќе сакате да се печати инструкции
и прикази од програмата.
Тие ќе мора да се обиде повторно од командната линија.
Но дури и ако argc е 2, ќе треба да се провери дали тие
ви даде валидна клуч.
За Цезар, ви треба цел број.
Но argv е низа од стрингови.
Како да пристапите тој клуч?
>> А брз поглед на низи -
структури на податоци кои имаат повеќе вредности од ист тип на податок.
Записи се нулто индексирани, што значи дека првиот елемент е индекс нула
а последниот елемент е во индекс големина минус 1, каде што големина е бројот на
елементи во низа.
>> Ако јас прогласи новиот стринг низа сандаче со должина од 3, визуелно, тоа
изгледа вака.
Три контејнери за низи , Рамо до рамо.
Да пристапите на некој елемент, го напишете името на низата, а потоа укажуваат
индексот во квадратни загради.
Еве, јас сум доделување на вредност на секој елемент, исто како што јас би го направил со било кој
други стринг променлива.
>> Така да пристапите нашите командната линија аргументи, сите ние треба да направите е да пристапите
право елемент од низата argv.
Ако корисникот внесе. / Излитане Тим Ракета во терминал, argv 0 би
биде. / излитане.
argv ќе биде тим, и arg2 ќе биде ракета.
>> Сега дека можеме да пристапите нашите клучни, ние се уште треба да се направи
сигурни дека тоа е точно.
Ние треба да го претвори во цел број.
Но не можеме да само фрли како ние го направивме претходно.
За среќа, од А до Ц Ч Џ функција се грижи на овој за нас, па дури и се враќа 0
ако стрингот не може да се конвертира во цел број.
Тоа е до тебе, макар што, да им кажам корисникот зошто ќе не
нека програма продолжи.
Чување на резултат на А до Ц во цел број, и таму ќе ја имаат Вашиот клуч.
Следниот дел е едноставна.
Го извести корисникот за нивниот обичен текст, што ќе биде од тип на податок стринг.
За среќа за нас, сите кориснички внесуваат стрингови се валидни.
>> Сега кога имаме сите потребни влезни од корисникот, тоа е време за нас да
написвам со Воице својата порака.
Концептот на Цезар е едноставна доволно да се разбере.
Но, како не вашиот компјутер знаат што писма дојде по еден на друг?
>> Тука е местото каде ASCII табелата влегува внатре
Секој карактер има цел број Бројот поврзани со неа.
Капитал А е 65.
Капитал Б е 66.
Мали букви a е 97.
Мали букви б е 98.
Но ликовите не се ограничени само азбучен броеви.
На пример, симболот @ е ASCII број 64.
>> Пред се занимаваат со целата низа, нека се преправаме ние само треба да се префрлат
еден знак.
Па, ние само сакаат да ја префрлат вистински букви во обичен текст, не
карактери или броеви.
Па првото нешто што ќе сакате да го проверите дали ликот е во
азбука.
>> Функцијата isalpha го прави ова за ни и враќа Boolean -
точно ако ликовите е писмо, false ако поинаку.
Две други корисни функции се isupper и islower, со
очигледен имиња.
Ќе се вратат точно ако дава карактер е големи или мали букви,
соодветно.
Бидејќи тие се Booleans, тие се корисно да се користи како услови.
>> Ако isalpha враќа точно, ќе мора да го префрлат тој лик од клучот.
Па ајде да се отвори во ASCIIMath и направи некои ASCII математика.
Користењето е многу сличен на употреба за Цезар и ги зема во клуч на
командната линија.
>> Ако јас се кандидира ASCIIMath 5, се чини дека за да додадете 5 до, ми даде писмо ѓ, и
прикажување на ASCII вредност.
Па ајде да ги разгледаме во програмата.
>> Може да се прашувам, токму тука, зошто писмо е цел број, кога тоа е
јасно, добро, писмо.
Излегува дека карактери и цели броеви се менливи.
Со ставање на буквата А во еден наводници, на цел број може да се сместат
на ASCII вредност на капиталот А Бидете внимателни, иако.
Ви треба една облека.
Без единствена наводници, на компајлерот ќе барате променлива
именуван А, и не ликот.
>> Тогаш јас додадете писмо и клуч, чување на сума во int променливи резултат.
Иако Резултатот е од типот податоци цел број, моето printf изјава користи
% C случаеви за карактери.
Па на програмата отпечатоци ликот поврзани со целобројни резултат.
И бидејќи ние печатени на број форма, како и користење на% d, можеме да видиме
бројот, како и.
Значи сега може да се види дека ние третираат карактери и
цели броеви, и обратно.
>> Ајде да пробате ASCIIMath неколку повеќе пати со користење 25 како клучен.
Ќе го добиеме писмото на ●.
Сега ние се обидуваме 26.
Ние сакаме да го добиете писмо, но наместо тоа, ние се добие лева заграда.
Па очигледно, само додавање на Клучот за писмото нема да го стори.
Ние треба да дознаам формула за да заврши околу азбуката, како нашите
пример, во почетокот не.
>> А формулата за Цезар промена е како што следува.
в еднаква на стр плус к modulo 26.
Се сеќавам дека modulo е корисна операција која ни дава остатокот
на поделба на еден број од страна на другите.
Ајде да ја применуваат оваа формула на обичен текст писмо со клучот на 2.
На ASCII вредност на y е 89, која ни дава 91 modulo 26,
кој изнесува 13 -
дефинитивно не е ASCII вредност на, која е 67.
>> Хумор мене сега и се движат подалеку од ASCII вредности на индекс азбучен
каде A е нула и Z е 25, што значи дека Y е 24.
24 плус 2, modulo 6, ни дава 26, modulo 26, 0, кој е
Азбучен индекс на.
Значи оваа формула чини да се применува на Азбучен индекс на писмото и
не и нејзината ASCII вредност.
>> Но ќе почнете со ASCII вредности.
И да се печати ликот ciphertext, ќе треба својата ASCII вредност, како и.
Тоа е до вас, тогаш, да дознаам како да се вратиш назад и напред.
>> Откако ќе дознаам вистинската формула за еден карактер, сите што треба да направите
се примени истата формула за секој писмо во обичен текст -
само ако тоа писмо е азбучен, се разбира.
И не заборавајте дека треба да се зачува случај, горниот или долниот, тоа е каде
на isUpper и isLower функции што споменавме порано ќе ни се најде.
Може да има две формули -
една за големи букви и една за мали букви.
Па isUpper на isLower ќе ви помогнат се утврди која формула да се применуваат.
>> Како да се применуваат на формула за секој еден лик во серијата?
Па, низа е само низа од карактери.
Така можете да пристапите секој карактер од страна на групирање над секој лик во
низа во за телефонска линија.
Како и за состојбата на вашиот за јамка, функцијата strlen, за гудачки
должина, ќе ни се најде.
Таа ги зема во низа како влез и се враќа на должината на стрингот.
Бидете сигурни да го вклучи правото библиотека да го користите стринг должина функција.
>> И таму ќе ја имаат својата ciphertext.
Моето име е Zamyla.
И [ГОВОРЕЊЕ CODE].