1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [Walkthrough - Проблем 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 Добре. Здравейте на всички, и добре дошли Walkthrough 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 Чан - 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 И така, в Цезар някой ще ви подмине ключ с цяло число, 29 00:01:43,470 --> 00:01:48,420 и ще криптиране на низ от текст, че те ви предоставят 30 00:01:48,420 --> 00:01:50,670 и да ги върне криптирана нещо. 31 00:01:50,670 --> 00:01:56,050 Ако някой наблюдаваше Коледна Приказка, е пример за това, че има. 32 00:01:56,050 --> 00:01:59,090 След втората част на проблема, е Vigenere 33 00:01:59,090 --> 00:02:01,790 който е по-напреднал криптиране техника. 34 00:02:01,790 --> 00:02:05,640 И така, отиваме за шифроване на част от текст, 35 00:02:05,640 --> 00:02:09,600 с изключение вместо само с едно число, което всъщност ще го кодират 36 00:02:09,600 --> 00:02:13,340 с ключова дума, която потребителят ще ни предоставите. 37 00:02:16,270 --> 00:02:22,090 Добре, така че първият инструмент в кутията с инструменти днес всъщност ще се актуализира на уреда. 38 00:02:22,090 --> 00:02:26,430 На дъската за обсъждания ще видите неща, като: "Защо не тази работа?" 39 00:02:26,430 --> 00:02:28,110 "Защо не представи 50 работа?" 40 00:02:28,110 --> 00:02:31,830 и често решението е просто да се актуализира вашия уред. 41 00:02:31,830 --> 00:02:36,730 И ако е така просто в терминален прозорец във вашия уред Sudo Yum-Y - 42 00:02:36,730 --> 00:02:40,040 това е флаг, да актуализира всичко - актуализация, 43 00:02:40,040 --> 00:02:42,280 вашия уред ще се актуализира, ако е необходимо. 44 00:02:42,280 --> 00:02:46,960 И то не боли, ако вече сте в най-новата версия на уреда. 45 00:02:46,960 --> 00:02:51,280 След това просто ще кажа няма нови актуализации и можете да продължат да работят заедно. 46 00:02:51,280 --> 00:02:55,800 Но това е добре да се изпълнява всеки път, когато отворите уреда 47 00:02:55,800 --> 00:02:57,140 защото ние все още сме много - 48 00:02:57,140 --> 00:03:00,320 понякога, ако влезем в грешка - определяне на уреда. 49 00:03:00,320 --> 00:03:03,180 Така че се уверете, че имате най-новата версия на уреда 50 00:03:03,180 --> 00:03:07,710 и да стартирате тази актуализация има. 51 00:03:07,710 --> 00:03:14,360 Добре. Така че, тъй като ние сме се занимават с букви и промяна, enciphering неща, 52 00:03:14,360 --> 00:03:20,410 отиваме наистина искате да станете най-добри приятели с ASCII класацията ни. 53 00:03:20,410 --> 00:03:24,350 Има множество онлайн, ако намерите. Може дори да направите своя собствена. 54 00:03:24,350 --> 00:03:29,950 По принцип, с всяко писмо и всеки брой и всеки герой 55 00:03:29,950 --> 00:03:32,210 има редица свързани с тях, 56 00:03:32,210 --> 00:03:38,670 и затова е добре да се види техните ASCII стойности заедно с реалното писмо. 57 00:03:38,670 --> 00:03:42,310 Това определено ще ви помогне в проблема набор. 58 00:03:42,310 --> 00:03:45,750 Едно нещо, което наистина ми помогна в този проблем, е действително да го отпечатате, 59 00:03:45,750 --> 00:03:48,380 и като минавах през, аз всъщност ще се възползва от него, 60 00:03:48,380 --> 00:03:51,150 пише: "Ако това трябва да отиде до там, тогава ..." 61 00:03:51,150 --> 00:03:55,270 Нещо се възползва от него и да го маркирате, стават най-добри приятели с ASCII таблицата. 62 00:03:57,240 --> 00:04:00,750 Тогава ние имаме няколко други инструменти на наше разположение. 63 00:04:00,750 --> 00:04:03,750 Този път вместо само да накара потребителя за техния принос 64 00:04:03,750 --> 00:04:05,230 ние ще направим комбинация. 65 00:04:05,230 --> 00:04:06,880 Отиваме да ги пита за принос, 66 00:04:06,880 --> 00:04:11,350 но ние сме също така да се използва само аргументите на командния ред. 67 00:04:11,350 --> 00:04:15,600 Така че, когато се изпълняват тяхната програма, обикновено ви кажа. / Здравей, например, 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 Ето само един пример за едно мини 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 е съобразена с Б, по целия път до 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 през О, защото това е всяко писмо изместен над 3 пъти, 96 00:06:19,520 --> 00:06:22,080 само като пример на колело, което ви показах. 97 00:06:22,080 --> 00:06:25,300 Тогава, например, ако сте въвели Това е CS50! 98 00:06:25,300 --> 00:06:27,960 тогава би също така да преместите всички писма. 99 00:06:27,960 --> 00:06:31,040 И това е важното в Цезар, така и Vigenere 100 00:06:31,040 --> 00:06:34,890 е, че отиваме да прескочат всички букви. 101 00:06:34,890 --> 00:06:39,160 Така интервали, символи и т.н., цифри, отиваме да ги едни и същи. 102 00:06:39,160 --> 00:06:42,920 Ние само ще смени буквите в този случай. 103 00:06:42,920 --> 00:06:45,870 Така че, както виждате, в колелото, ние имаме само буквите, които са достъпни за нас, 104 00:06:45,870 --> 00:06:50,150 така че ние само искате да преместите буквите и кодиране на буквите. 105 00:06:51,370 --> 00:06:56,720 Така че първото нещо, което трябва да се направи, вие видяхте, че за използване на Цезар в проблем, 2 106 00:06:56,720 --> 00:07:05,280 е да стартирате Цезар и след това въведете число, когато ти тичам в терминала. 107 00:07:05,280 --> 00:07:10,940 Така че това, което ние трябва да направим, е по някакъв начин да се получи, че ключ и достъп до него. 108 00:07:10,940 --> 00:07:14,730 И така, ние искаме по някакъв начин да я видите ще бъде на втория аргумент на командния ред. 109 00:07:14,730 --> 00:07:20,950 Първият от тях ще бъде / цезар, а следващият ще бъде ключов номер. 110 00:07:22,190 --> 00:07:29,200 Така че, преди имахме INT главната (нищожна) да започнат нашите в програми. 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 ние всъщност се занимават с два параметъра. 114 00:07:37,920 --> 00:07:44,070 Имаме вътр име argc и след това масив от низове, наречен argv. 115 00:07:44,070 --> 00:07:46,030 Така argc е цяло число, 116 00:07:46,030 --> 00:07:49,640 и представлява броя на аргументите, подадени в програмата си. 117 00:07:49,640 --> 00:07:53,590 И тогава argv всъщност е списък на изминалите аргументи. 118 00:07:53,590 --> 00:08:00,820 Всички аргументи са струни, и т.н. argv представлява масив, списък, на струните. 119 00:08:01,830 --> 00:08:03,990 Нека поговорим за масиви малко. 120 00:08:03,990 --> 00:08:05,940 Масивите са по същество нова структура на данните. 121 00:08:05,940 --> 00:08:09,660 Имаме цели числа, ние сме се удвоява, имаме струни, а сега имаме масиви. 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, тъй като в този пример, след което последният елемент ще бъде в три индекса, 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 , казват те. / здравей Дейвид Малан, 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, защото той вижда три отделни думи, разделени с интервали. 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 Нека видим дали можем да се възползваме от отношенията между две. 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 I = 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 това означава, че argc по същество е дължината на 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 Това, което искам да направя в този случай ние искаме да го разпечатате, така че нека кажем ФОРМАТ. 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 Така че нека да кажем, че искам да кажа опцията брън. 199 00:14:23,170 --> 00:14:26,570 Тогава го отпечатва обратно към нас. Добре ли си? 200 00:14:26,570 --> 00:14:30,790 Така че е пример за това как можете да използвате argc и argv 201 00:14:30,790 --> 00:14:33,460 знаейки, че argc представлява дължината на argv. 202 00:14:33,460 --> 00:14:42,750 Уверете се, че не сте някога с масиви достъп с едно извън дължината на масива 203 00:14:42,750 --> 00:14:45,140 защото C определено ще крещят на вас. 204 00:14:45,140 --> 00:14:47,560 Вие ще получите нещо, наречено сегментация вина, 205 00:14:47,560 --> 00:14:52,470 която никога не е забавно, основно казвам, че се опитвате да отворите нещо 206 00:14:52,470 --> 00:14:55,000 , което не съществува, не принадлежи на вас. 207 00:14:55,000 --> 00:14:59,430 Така че се уверете, и особено с нулева индексиране, ние не искаме да 208 00:14:59,430 --> 00:15:02,390 Като например, ако имаме масив с дължина 4, 209 00:15:02,390 --> 00:15:07,240 този масив индекс 4 не съществува, защото ние започва от 0, при нулев индекс. 210 00:15:07,240 --> 00:15:11,730 Това ще стане втора природа точно като за електрически вериги, когато започват от 0. 211 00:15:11,730 --> 00:15:13,610 Така че просто Имайте го в предвид. 212 00:15:13,610 --> 00:15:22,590 Вие не искате да някога достъп до индекс на масив, който е извън вашия обсег. 213 00:15:26,710 --> 00:15:32,560 Така че можем да видим как можем вид достъп 214 00:15:32,560 --> 00:15:35,930 аргументите на командния ред, които се предават. 215 00:15:35,930 --> 00:15:41,330 Но както видяхте низ, argv всъщност е низ масив. 216 00:15:41,330 --> 00:15:45,740 Така че това всъщност не е цяло число, все още, но в Цезар искаме да се справят с цели числа. 217 00:15:45,740 --> 00:15:54,430 За щастие, има функция, създадена за нас, че всъщност може да конвертирате низ до цяло число. 218 00:15:54,430 --> 00:15:58,710 Също така тук ние не се занимаваме с въвеждане от потребителя, когато сме ги накара 219 00:15:58,710 --> 00:16:03,740 за вход тук за ключа, така че ние не може действително да reprompt и да кажа, 220 00:16:03,740 --> 00:16:07,840 - О, дай ми друго число, да речем, ако това не е валиден. " 221 00:16:07,840 --> 00:16:10,540 Но ние все още трябва да се провери за правилното използване. 222 00:16:10,540 --> 00:16:13,520 В Цезар те са позволени само да мине 1 брой, 223 00:16:13,520 --> 00:16:18,030 и така те трябва да тичам. / Цезар и след това те трябва да ви дам един номер. 224 00:16:18,030 --> 00:16:23,660 Така argc трябва да бъде определен брой. 225 00:16:23,660 --> 00:16:29,060 Какъв номер би било, ако те трябва да ви мине. / Цезар и след това ключ? 226 00:16:29,060 --> 00:16:32,920 Какво е argc? >> Студент [2]. >> Втора. Точно така. 227 00:16:32,920 --> 00:16:35,490 Значи вие искате да се уверите, argc е 2. 228 00:16:35,490 --> 00:16:39,620 В противен случай вие основно отказват да стартирате програмата. 229 00:16:39,620 --> 00:16:43,040 В главната вътр основната функция, която казва, 230 00:16:43,040 --> 00:16:47,360 така, тогава ние винаги в добро 0 практика на връщане в края на една успешна програма. 231 00:16:47,360 --> 00:16:50,840 Така че, ако, да речем, те ни дават три опции на командния ред, вместо на 2 232 00:16:50,840 --> 00:16:54,350 или ще Ви даде 1, например, тогава това, което ще направим, е, вие ще искате да проверите за това 233 00:16:54,350 --> 00:16:59,900 и след това се върнете една поговорка, не, аз не може да продължи с тази програма. 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 [Ученик] Защо имате нужда от две, за разлика от само едно argc? Определено има 1 брой. 242 00:17:27,569 --> 00:17:32,200 Точно така. Причината, поради която трябва да има 2 argc вместо от 1 243 00:17:32,200 --> 00:17:36,260 е така, защото, когато стартирате програмата и да каже / Цезар или / здравей, 244 00:17:36,260 --> 00:17:38,280 че всъщност се брои като аргумент на командния ред. 245 00:17:38,280 --> 00:17:43,020 Така че това вече заема 1 и така, тогава ние сме въвеждане на 1 допълнително. 246 00:17:45,030 --> 00:17:49,440 Значи въвеждане на низ в аргумент на командния ред. 247 00:17:49,440 --> 00:17:52,730 Какво искате да направя, за Цезар искаме да се справим с цяло число, 248 00:17:52,730 --> 00:17:57,180 така че можете да използвате тази функция atoi. 249 00:17:57,180 --> 00:18:02,850 И в общи линии, преминават в низ и след това тя ще ви върне цяло число 250 00:18:02,850 --> 00:18:06,070 ако това е възможно да се направи, че низ в цяло число. 251 00:18:06,070 --> 00:18:10,960 Сега си спомнете, когато си имаме работа с ФОРМАТ или GetString, такива неща, 252 00:18:10,960 --> 00:18:13,390 включват библиотеки, които са специфични за нас. 253 00:18:13,390 --> 00:18:19,450 Така че в началото ще започнем с хеш стандарт тагове I / O, з, нещо такова. 254 00:18:19,450 --> 00:18:22,430 Е, atoi не е в един от тези библиотеки, 255 00:18:22,430 --> 00:18:26,600 така че това, което ние трябва да направим е, че ние трябва да включват правото библиотека за това. 256 00:18:26,600 --> 00:18:32,720 Така припомнят Walkthrough 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 Но в този случай ние не трябва да се направи някаква Do време или докато примки да се провери. 267 00:19:12,440 --> 00:19:14,480 GetString определено ще ни даде низ 268 00:19:14,480 --> 00:19:17,630 и отиваме за криптиране, независимо от потребител ни дава. 269 00:19:17,630 --> 00:19:23,770 Така че може да се предположи, че всички тези потребителски въведените струни са правилни. 270 00:19:23,770 --> 00:19:24,670 Велики. 271 00:19:24,670 --> 00:19:27,270 Значи след като имам ключа и след като веднъж сте текста, 272 00:19:27,270 --> 00:19:31,660 сега това, което е останало, е, че трябва да шифроване на прав текст. 273 00:19:31,660 --> 00:19:36,530 Само за да се покриват бързо с течение на жаргон, в прав текст е това, което потребителят ви дава, 274 00:19:36,530 --> 00:19:41,030 и ciphertext е това, което се върнете към тях. 275 00:19:42,450 --> 00:19:45,850 Така струни, за да може да мине през всъщност писмо с писмо 276 00:19:45,850 --> 00:19:48,550 защото ние трябва да се пренасочат всяко писмо, 277 00:19:48,550 --> 00:19:51,390 Ние разбираме, че струните, ако ние вид кори обратно слой, 278 00:19:51,390 --> 00:19:54,130 ние виждаме, че те са просто наистина списък на героите. 279 00:19:54,130 --> 00:19:55,930 Един от тях идва след друг. 280 00:19:55,930 --> 00:20:01,690 И така можем да се отнасяме низове като масиви, защото те са масиви от символи. 281 00:20:01,690 --> 00:20:05,640 Да предположим, че имате низ име текст, 282 00:20:05,640 --> 00:20:09,400 и в рамките на тази променлива текст се съхранява Това е CS50. 283 00:20:09,400 --> 00:20:15,680 Тогава текст с индекс 0 би било столица T, индекс 1 ч и др. 284 00:20:17,530 --> 00:20:23,970 И след това с масиви в argc например в args.c 285 00:20:23,970 --> 00:20:27,090 видяхме, че имахме за обхождане на масив 286 00:20:27,090 --> 00:20:32,440 и така ние трябваше да превъртите от I = 0, докато не е по-малка от дължината. 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 Минавате в низ, а след това ще ви върне едно цяло число, което представлява дължината на вашия низ. 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 I = 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 Значи това, което искаме да направим, нека ФОРМАТ. 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 С вътр можете да използвате г%. 315 00:22:24,580 --> 00:22:30,890 И така, по същия начин, с характер използвате% C, за да кажа, че отивам да печатате характер 316 00:22:30,890 --> 00:22:34,570 , която се съхранява вътре в променлива. 317 00:22:34,570 --> 00:22:40,840 Така че ние имаме това, и нека добавим период от време и пространство, за да го. 318 00:22:40,840 --> 00:22:45,430 Кой герой използвате? 319 00:22:45,430 --> 00:22:49,780 Отиваме да се използва какъвто и характер, ние сме на низа. 320 00:22:49,780 --> 00:22:52,890 Тогава започваш да се използва нещо с низ, 321 00:22:52,890 --> 00:22:56,420 но ние искаме да се достъп до определен характер. 322 00:22:56,420 --> 00:23:02,740 Така че, ако низ е само масив, тогава как да достъп до елементите на масивите? 323 00:23:02,740 --> 00:23:06,480 Ние имаме тези квадратни скоби, а след това ще се постави индекс там. 324 00:23:06,480 --> 00:23:11,820 Така че ние имаме квадратни скоби. Нашия индекс в този случай можем само да мога да използвам. Точно така. 325 00:23:15,290 --> 00:23:22,370 Така че тук ние казваме, че започваш да се отпечатване на знак, последван от точка и място, 326 00:23:22,370 --> 00:23:30,870 и този характер ще бъде ItH писмо в нашия низ S. 327 00:23:32,920 --> 00:23:39,330 Аз съм просто ще да спаси. Добре. 328 00:23:42,510 --> 00:23:46,840 Сега отивам да тече дължина на низ. 329 00:23:46,840 --> 00:23:53,440 Така че ние трябваше низ 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 Преди това, как стигнахме Int? 333 00:24:01,610 --> 00:24:08,040 Казахме GetInt, нали? Но това не е INT, така че нека 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 Така някои полезни функции, за да бъде в състояние да се справят с само enciphering писма 365 00:26:19,480 --> 00:26:22,380 и запазване на капитализация на нещата 366 00:26:22,380 --> 00:26:25,130 е isalpha, isupper, islower функции. 367 00:26:25,130 --> 00:26:29,270 И така, това са функции, които връщат булева стойност. 368 00:26:29,270 --> 00:26:34,180 По принцип, вярно или невярно. С главни букви? Буквено-цифров? 369 00:26:34,180 --> 00:26:37,180 Дали това писмо, по същество. 370 00:26:37,180 --> 00:26:41,070 Така че тук са три примера за това как можете да използвате тази функция. 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 Така че, ако погледнем назад, тук имаме Аз капитал, нали? 376 00:27:08,470 --> 00:27:14,550 Така че ние знаем, че отива на О, защото аз + 6 е О. 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. Малки букви е се отнася до 102. 398 00:28:48,040 --> 00:28:51,480 Отново, ако искате да знаете тези стойности, погледнете в ASCII таблицата. 399 00:28:51,480 --> 00:28:56,160 Така че нека да отидем в някои примери за това как може да бъде в състояние да се изважда и се добавят, 400 00:28:56,160 --> 00:29:03,130 начина, по който всъщност наистина могат да работят с тези символи, да ги използват като взаимозаменяеми. 401 00:29:03,870 --> 00:29:11,350 Казвам, че се случва да се изчисли допълнение на герой до цяло число ASCIIMath 402 00:29:11,350 --> 00:29:17,590 и след това показва полученият характер, както и произтичащото от ASCII стойност. 403 00:29:17,590 --> 00:29:22,290 И така, ето аз казвам, - we'll се занимават с тази част по-късно - 404 00:29:22,290 --> 00:29:29,100 но основно, аз казвам, че потребителят трябва да кажа, работи ASCIIMath заедно с ключ, 405 00:29:29,100 --> 00:29:30,880 и аз казвам, че този ключ ще бъде номер 406 00:29:30,880 --> 00:29:34,600 , с които отиваме да добавите този герой. 407 00:29:34,600 --> 00:29:38,560 Така че тук забележите, че тъй като аз съм искат ключ, 408 00:29:38,560 --> 00:29:40,590 тъй като аз съм взискателни, че те ще ми даваш 1 нещо, 409 00:29:40,590 --> 00:29:45,600 Искам само да приеме. / Asciimath и ключ. 410 00:29:45,600 --> 00:29:49,330 Така че аз отивам да поиска argc е равно на две. 411 00:29:49,330 --> 00:29:54,360 Ако не е, тогава аз ще се върне 1 и програмата ще излезете. 412 00:29:55,070 --> 00:29:58,540 Така че аз казвам, че ключът не ще бъде първият аргумент на командния ред, 413 00:29:58,540 --> 00:30:05,080 , че това ще бъде втората, и както виждате тук, 414 00:30:05,080 --> 00:30:11,790 Отивам да го превърне в цяло число. 415 00:30:15,740 --> 00:30:19,230 Тогава аз отивам да се определи характера да бъде R. 416 00:30:19,230 --> 00:30:23,970 Обърнете внимание, че типът на променливата CHR всъщност е цяло число. 417 00:30:23,970 --> 00:30:30,480 Начинът, по който аз съм в състояние да използват R като цяло число е като го обшивка с тези единични кавички. 418 00:30:33,850 --> 00:30:40,560 Така че обратно към ФОРМАТ нашите Изявление където имаме контейнер за символ 419 00:30:40,560 --> 00:30:43,590 и след това контейнер за цяло число, 420 00:30:43,590 --> 00:30:49,450 герой е представен от Chr и число е ключът. 421 00:30:49,450 --> 00:30:54,320 И така, след това отиваме в резултат добавете 2 заедно. 422 00:30:54,320 --> 00:30:58,420 Така че ние ще добавим R + каквото и да е клавиш, 423 00:30:58,420 --> 00:31:03,520 и след това отиваме да отпечатате резултат на това. 424 00:31:06,210 --> 00:31:14,220 Така че нека направим asciimath. Това е към днешна дата, така че нека просто стартирате asciimath. 425 00:31:14,220 --> 00:31:18,290 О, но виж, не направи нищо, защото ние не всъщност го даде ключ. 426 00:31:18,290 --> 00:31:23,850 Така че, когато тя просто връща 1, основната ни функция, тя просто връща обратно към нас. 427 00:31:23,850 --> 00:31:29,250 Така че след това да премине в ключ. Някой да ми даде номер. >> [Ученик] 4. 428 00:31:29,250 --> 00:31:30,920 4. Добре. 429 00:31:30,920 --> 00:31:39,280 Така че R е увеличил с 4 ще ни даде V, което съответства на ASCII стойността на 118. 430 00:31:39,280 --> 00:31:43,880 Така то тогава има смисъл, че - 431 00:31:43,880 --> 00:31:51,250 Всъщност, мога да ви попитам, какво мислиш ASCII стойността на R е, ако R + 4 е 118? 432 00:31:53,070 --> 00:31:55,470 Тогава да, R е 114. 433 00:31:55,470 --> 00:32:03,010 Така че, ако търсите на ASCII таблица тогава, разбира се, вие ще видите, че R е представена от 114. 434 00:32:03,010 --> 00:32:08,610 Така че сега ние знаем, че можем да добавим числа до знака, това изглежда доста проста. 435 00:32:08,610 --> 00:32:12,740 Ние просто ще за обхождане на низ, както видяхме в пример преди. 436 00:32:12,740 --> 00:32:17,170 Ние ще проверим дали това е писмо. 437 00:32:17,170 --> 00:32:20,420 Ако е така, тогава ние ще го смени от каквото и да е ключ. 438 00:32:20,420 --> 00:32:23,650 Доста проста, с изключение на случаите, когато можете да се харесва това, 439 00:32:23,650 --> 00:32:32,140 ще видите, че Z, представлявано от 122, а след това ще ви даде различен характер. 440 00:32:32,140 --> 00:32:37,770 Ние всъщност искаме да останем в рамките на нашата азбука, нали? 441 00:32:37,770 --> 00:32:43,180 Така че ние трябва да разбера някакъв начин от този вид обвивка около. 442 00:32:43,180 --> 00:32:47,190 Когато стигнете до Zed и искате да се увеличи с определен брой, 443 00:32:47,190 --> 00:32:51,230 не искате да отидете в извън ASCII раздел азбука; 444 00:32:51,230 --> 00:32:54,140 искате да приключи назад чак до А. 445 00:32:54,140 --> 00:32:58,550 Но имайте предвид, че все още запазване на случая. 446 00:32:58,550 --> 00:33:00,980 Така че, знаейки, че буквите не може да стане символи 447 00:33:00,980 --> 00:33:05,290 само като символи няма да се променя, както и. 448 00:33:05,290 --> 00:33:08,170 В последния pset вие определено не трябва да 449 00:33:08,170 --> 00:33:14,310 но опция е да се приложи алчни pset с помощта на модул функция. 450 00:33:14,310 --> 00:33:17,230 Но сега ние всъщност ще трябва да използвате модул, 451 00:33:17,230 --> 00:33:19,900 така че нека просто отиди това малко. 452 00:33:19,900 --> 00:33:26,920 По същество, когато имате х модул Y, която ви дава остатъка от х разделени от години. 453 00:33:26,920 --> 00:33:30,930 Ето няколко примера тук. Ние имаме 27% 15. 454 00:33:30,930 --> 00:33:36,200 По принцип, когато се изважда 15 от 27 толкова пъти, колкото е възможно, без да се отрицателен 455 00:33:36,200 --> 00:33:39,060 тогава можете да получите 12 ляво. 456 00:33:39,060 --> 00:33:44,650 Така че това е нещо като в контекста на математиката, но как всъщност можем да използвате тази? 457 00:33:44,650 --> 00:33:47,100 Това ще бъде полезно за нашия wrapover. 458 00:33:47,100 --> 00:33:55,420 За това, нека просто кажем, че ви помолих да се разделят на три групи. 459 00:33:55,420 --> 00:33:58,010 Понякога можете да направите това в групи и нещо подобно. 460 00:33:58,010 --> 00:34:01,320 Кажа, че каза: "Добре, аз искам всичко да бъде разделена на три." 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, защото искат само три групи. 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-ти човек. Как ли да кажа две вместо на 5? 474 00:34:49,420 --> 00:34:53,760 Вие казвате, 5 мод 3 е 2. 475 00:34:53,760 --> 00:34:59,100 Искам да видя колко са останали групи от по 3, а след това в какъв ред аз 476 00:34:59,100 --> 00:35:02,860 И така, след това, ако ние продължихме по цялата стая, 477 00:35:02,860 --> 00:35:07,760 тогава ние ще видим, че ние сме винаги действително прилагане на Министерството на отбраната функция за себе си 478 00:35:07,760 --> 00:35:09,990 вид броиш. 479 00:35:09,990 --> 00:35:14,490 Това е по-мила на реален пример за това как бихте могли да използвате модул 480 00:35:14,490 --> 00:35:17,960 защото аз съм сигурен, че повечето от нас вероятно са преминали през този процес 481 00:35:17,960 --> 00:35:19,630 където сме имали за да броиш. 482 00:35:19,630 --> 00:35:21,840 Всички въпроси по модул? 483 00:35:21,840 --> 00:35:25,360 Това ще бъде доста важно да се разбере концепции за това, 484 00:35:25,360 --> 00:35:28,640 така че искам да се уверете, че вие ​​разбират. 485 00:35:28,640 --> 00:35:34,660 [Ученик] Ако няма остатъка, е да ви даде действителния брой? 486 00:35:34,660 --> 00:35:40,430 Ако един от първите 3 от тях са го направили, ще го да ги даде това, което са в действителност, 487 00:35:40,430 --> 00:35:43,310 или би им дал чува] >> Това е добър въпрос. 488 00:35:43,310 --> 00:35:48,750 Когато няма остатъка за модул - така казват, че имат 6 мод 3 - 489 00:35:48,750 --> 00:35:52,340 , които всъщност ви дава върне 0. 490 00:35:53,670 --> 00:35:57,290 Ще говорим за това малко по-късно. 491 00:35:58,810 --> 00:36:07,720 О, да, например, 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 Ще видите две азбуки и след това можете да ги видите преместване. 499 00:36:42,640 --> 00:36:44,430 Така че нека да се опитаме и да изразят, че по отношение на формулата. 500 00:36:44,430 --> 00:36:46,940 Тази формула е в спец. 501 00:36:46,940 --> 00:36:52,070 но нека вид изглежда чрез това, което всяка променлива означава. 502 00:36:52,070 --> 00:36:55,000 Нашата Крайният резултат ще бъде ciphertext. 503 00:36:55,000 --> 00:36:58,300 Така че това казва, че ItH характер на ciphertext 504 00:36:58,300 --> 00:37:02,500 ще отговарят на ItH характер на прав текст. 505 00:37:02,500 --> 00:37:08,130 Това има смисъл, защото искаме винаги да се редят на тези неща. 506 00:37:08,130 --> 00:37:13,480 Така че това ще бъде ItH характер на ciphertext плюс К, който е наш ключов 507 00:37:13,480 --> 00:37:17,230 че има смисъл - и тогава ние трябва този мод 26. 508 00:37:17,230 --> 00:37:19,860 Забравяйте, когато имахме Zed 509 00:37:19,860 --> 00:37:24,190 ние не искате да получите в характера, така че ние искахме да го моден 510 00:37:24,190 --> 00:37:26,540 и вид на разгънатата азбуката. 511 00:37:26,540 --> 00:37:33,430 След Zed няма да отида в, б, в, г, докато имаш правилния брой. 512 00:37:33,430 --> 00:37:44,690 Така че ние знаем, че Zed, ако + 6, ще ни даде е, защото след Zed идва а, б, в, г, д, е. 513 00:37:44,690 --> 00:37:52,530 Така че нека да не забравяме, ние знаем със сигурност, че Zed + 6 ще ни даде е. 514 00:37:52,530 --> 00:38:03,530 В ASCII стойности, Z е 122 и е 102. 515 00:38:03,530 --> 00:38:10,570 Така че ние трябва да намерим някакъв начин да ни Цезар формула ни дават 102 516 00:38:10,570 --> 00:38:13,590 , след като в 122. 517 00:38:13,590 --> 00:38:19,550 Така че, ако ние просто прилага тази формула, ("Z" + 6) 26%, че всъщност ви дава 24 518 00:38:19,550 --> 00:38:25,980 тъй като сто двайсет и две + 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-ти писмо е 6-та. 523 00:38:51,340 --> 00:38:55,460 Но ние сме по компютърни науки, така че ние ще индекс на 0. 524 00:38:55,460 --> 00:39:00,690 Тогава вместо Z е номер 26, ние отиваме да се каже, че е номер 25 525 00:39:00,690 --> 00:39:02,630 защото е 0. 526 00:39:02,630 --> 00:39:04,770 Така че сега да приложим тази формула. 527 00:39:04,770 --> 00:39:11,710 Имаме Z представлявана от 25 + 6, която ви дава 31. 528 00:39:11,710 --> 00:39:15,790 31 мод 26 ви дава 5 като остатък. 529 00:39:15,790 --> 00:39:20,500 Това е перфектно, защото знаем, че е е 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 и след това го шифроване и след това да им даде гръб ciphertext. 557 00:41:19,050 --> 00:41:24,650 Така че, както казах, това е много подобен на Цезар, само че вместо изместване от определен брой, 558 00:41:24,650 --> 00:41:30,620 номерът е всъщност няма да се промени всеки път от символ характер. 559 00:41:30,620 --> 00:41:34,890 Да декларирате, че реалният брой да се смени, е представена от буквите на клавиатурата. 560 00:41:34,890 --> 00:41:43,150 Така че, ако сте въвели в промяна, например, това би съответствало на изместване на 0. 561 00:41:43,150 --> 00:41:45,900 Така че това е отново обратно към азбучния указател. 562 00:41:45,900 --> 00:41:49,100 Какво може да бъде полезно, ако вие виждате, че ние всъщност се занимават с ASCII стойности 563 00:41:49,100 --> 00:41:51,790 , както и писма, както и азбучен указател, 564 00:41:51,790 --> 00:41:58,020 може да намери или да направите своя собствена ASCII таблица, която показва азбучен индекс от 0 до 25, 565 00:41:58,020 --> 00:42:03,750 от А до Я, и ASCII стойности, така че можете да видите вид отношения 566 00:42:03,750 --> 00:42:07,020 и скица и се опитайте да намерите някои модели. 567 00:42:07,020 --> 00:42:11,010 Също така, ако сте били преместване в определен случай е - 568 00:42:11,010 --> 00:42:21,110 и това е или малки или главни букви 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 с изключение вместо просто к имаме к к форум. 573 00:42:37,390 --> 00:42:44,810 Забележете, че ние не използвам, защото по същество, дължината на ключовата дума 574 00:42:44,810 --> 00:42:49,850 не е задължително дължината на нашата ciphertext. 575 00:42:49,850 --> 00:42:56,130 Това ще бъде по-ясно малко, когато виждаме пример, че имам малко по-късно. 576 00:42:56,130 --> 00:43:03,160 По принцип, ако изпълнявате вашата програма с ключова дума на Ohai 577 00:43:03,160 --> 00:43:08,560 това означава, че всеки път, Ohai ще бъде смяната си. 578 00:43:08,560 --> 00:43:11,060 Така че в зависимост от каква позиция сте във вашата ключова дума, 579 00:43:11,060 --> 00:43:15,800 ти започваш да смени своя определен характер ciphertext с тази сума. 580 00:43:15,800 --> 00:43:19,630 И отново, точно като Цезар, ние искаме да сме сигурни, че запази капитализация на нещата 581 00:43:19,630 --> 00:43:22,900 и ние само шифроване писма, а не, знаци или интервали. 582 00:43:22,900 --> 00:43:26,330 Така че, да погледнем назад към Цезар за функциите, които може да са използвани, 583 00:43:26,330 --> 00:43:32,570 начина, по който сте решили как да се смени неща, и се прилагат, че вашата програма тук. 584 00:43:32,570 --> 00:43:35,260 Така че нека Карта това. 585 00:43:35,260 --> 00:43:39,680 Имаме прав текст, че сме придобили от потребителя, от GetString 586 00:43:39,680 --> 00:43:44,090 казват, че това ... е CS50! 587 00:43:44,090 --> 00:43:47,090 Тогава ние имаме ключова дума на Ohai. 588 00:43:47,090 --> 00:43:50,930 Първите четири знака са доста прости. 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 Така о съответства на определен номер в азбуката. 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 Тогава ние имаме аз и, които след това се превежда от о и з. 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 А отива тук, аз тук, о, H, I, O, ч,, аз. Вие не правите това. 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 където, ако има три групи, 4-ти човек, 644 00:48:23,590 --> 00:48:30,610 броят им, че те казаха е 4 мод 3, което е 1. 645 00:48:30,610 --> 00:48:32,880 Така че опитайте и мисля за него по този начин. 646 00:48:34,770 --> 00:48:42,740 Както видяхте във формулата, където имате Ci и след това пи, но след това KJ, 647 00:48:42,740 --> 00:48:44,700 искате да се уверите, че можете да следите на тези. 648 00:48:44,700 --> 00:48:47,580 Вие не трябва да го наричам, не е нужно да го наричат ​​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 интро]