1 00:00:00,000 --> 00:00:03,944 >> [За възпроизвеждане на музика] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID Malan: Добре. 4 00:00:11,690 --> 00:00:14,674 Това е CS50, и този е краят на седмицата 2. 5 00:00:14,674 --> 00:00:16,840 Аз съм толкова съжалявам, че не би могло да бъде там с теб всичко днес, 6 00:00:16,840 --> 00:00:18,300 но вие сте в много добри ръце. 7 00:00:18,300 --> 00:00:21,710 Позволете ми да ви представя Собствена Rob Боудън CS50 е. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB Боудън: И разбира се, след това ние трябва да се гавриш с факта, 10 00:00:31,730 --> 00:00:36,820 че той ни изпрати вертикална видео и да се покаже. 11 00:00:36,820 --> 00:00:38,320 >> [Възпроизвеждане на видео] 12 00:00:38,320 --> 00:00:39,820 >> [За възпроизвеждане на музика] 13 00:00:39,820 --> 00:00:42,350 >> [FOOTSTEPS] 14 00:00:42,350 --> 00:00:44,730 >> -Това Не е видео Трябва да гледаме по този начин. 15 00:00:44,730 --> 00:00:46,570 Тя би могла да бъде предотвратена. 16 00:00:46,570 --> 00:00:49,070 Кажете не на вертикални видеоклипове. 17 00:00:49,070 --> 00:00:53,310 >> -Vertical Видеоклипове се случват, когато задръжте вашата камера по грешен начин. 18 00:00:53,310 --> 00:00:55,880 Видеоклипът ви ще приключи заприличваха глупости. 19 00:00:55,880 --> 00:00:57,650 >> - [Грухтене] 20 00:00:57,650 --> 00:01:02,240 >> -Има Повече и повече хора, пристрастени да прави вертикални клипове всеки ден. 21 00:01:02,240 --> 00:01:06,240 Това не е пляскане или нищо, но тя все още е наистина лошо. 22 00:01:06,240 --> 00:01:10,410 Има два различни вида хора, които са засегнати от VVS. 23 00:01:10,410 --> 00:01:14,160 Първата група третира видеоклипове те застрелям като снимков материал. 24 00:01:14,160 --> 00:01:15,850 Те не искам да кажа нищо лошо. 25 00:01:15,850 --> 00:01:19,180 Те просто не разбират, че докато можете да се обърнете на картина, 26 00:01:19,180 --> 00:01:20,880 наистина не може да се превърне един видеоклип. 27 00:01:20,880 --> 00:01:21,880 >> [БЛЪСКАМ СЕ] 28 00:01:21,880 --> 00:01:23,460 >> - [MONKEY ЗВУЧИ] 29 00:01:23,460 --> 00:01:27,540 >> -В Друга група е хора които не дават [пуикането]. 30 00:01:27,540 --> 00:01:31,090 >> -Vertical Video синдром е опасно. 31 00:01:31,090 --> 00:01:34,120 Картинки за движение имат винаги е бил в хоризонтално положение. 32 00:01:34,120 --> 00:01:35,990 Телевизорите са хоризонтални. 33 00:01:35,990 --> 00:01:38,380 Компютърни екрани са хоризонтални. 34 00:01:38,380 --> 00:01:41,580 Очите на хората са хоризонтални. 35 00:01:41,580 --> 00:01:45,170 Ние не са изградени, за да гледате видеоклипове вертикални. 36 00:01:45,170 --> 00:01:47,600 >> -Аз Обичам вертикални видеоклипове. 37 00:01:47,600 --> 00:01:50,410 >> -Nobody Му пука за теб. 38 00:01:50,410 --> 00:01:53,340 >> -Ако Този проблем е не бъде овладяна, вие също 39 00:01:53,340 --> 00:01:57,650 ще започне да се показва четири видеоклипове наведнъж, само за да спестите трафик. 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed Вертикални видеоклипове ще да бъде с размерите на пощенска марка. 41 00:02:02,400 --> 00:02:04,920 >> -И Тя ще се разпространи навсякъде. 42 00:02:04,920 --> 00:02:07,670 Филми екрани имат винаги е бил в хоризонтално положение. 43 00:02:07,670 --> 00:02:11,200 Ако вертикални видеоклипове стават приети, кина 44 00:02:11,200 --> 00:02:13,930 ще трябва да бъде висок и слаб. 45 00:02:13,930 --> 00:02:17,710 >> -И Всички киносалоните ще Трябва да се срине и възстановен. 46 00:02:17,710 --> 00:02:22,090 И от времето, когато те са били преустроени, Мила Кунис ще бъде стара и грозна. 47 00:02:22,090 --> 00:02:24,342 >> -Birds Ще се блъсне в тях и да умре. 48 00:02:24,342 --> 00:02:26,530 >> -Ще Получите всичко схванат вратовете от вдига поглед. 49 00:02:26,530 --> 00:02:29,800 >> -И Никой няма да седне в на първия ред все пак. 50 00:02:29,800 --> 00:02:37,170 >> -Джордж Лукас ще преиздадат Star Wars again-- кльощавият издание. 51 00:02:37,170 --> 00:02:41,860 >> -Аз Никога не е наистина в състояние да каже историята, че аз исках да кажа. 52 00:02:41,860 --> 00:02:46,030 Това е чудесна възможност за мен да експериментирате с нова технология. 53 00:02:46,030 --> 00:02:48,150 >> -You're Идиот. 54 00:02:48,150 --> 00:02:54,430 >> -Всеки Път мобилно устройство се използва за запис на видео, изкушението е там. 55 00:02:54,430 --> 00:02:56,370 Само да кажа не. 56 00:02:56,370 --> 00:03:00,116 Кажете не на Джордж Лукас. 57 00:03:00,116 --> 00:03:04,062 Кажете не на стария Мила Кунис. 58 00:03:04,062 --> 00:03:06,600 Кажете не на вертикални видеоклипове. 59 00:03:06,600 --> 00:03:12,511 >> -И Ако видите някой да го прави, да речем, "не снимате това право сляпо!" 60 00:03:12,511 --> 00:03:15,433 >> [За възпроизвеждане на музика] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [END PLAYBACK] 63 00:03:19,830 --> 00:03:23,702 >> [Аплодисменти] 64 00:03:23,702 --> 00:03:27,598 >> [AUDIO OUT] 65 00:03:27,598 --> 00:03:44,041 66 00:03:44,041 --> 00:03:45,790 ROB Боудън: --simple форма на криптографията, 67 00:03:45,790 --> 00:03:49,500 която е в основата на криптирането и декриптиране на тайни послания. 68 00:03:49,500 --> 00:03:52,590 Така че тук имаме един много прост играчка. 69 00:03:52,590 --> 00:03:56,900 И идеята е външния пръстен върти около вътрешния пръстен. 70 00:03:56,900 --> 00:04:01,610 И можете да видите, може би, ако съм я увеличите в, that--, че е трудно да се види. 71 00:04:01,610 --> 00:04:05,090 Но, като броят 1-- добре, че се мести. 72 00:04:05,090 --> 00:04:09,120 >> Броят една карта на писмото X, номер 2 карти на писмото 73 00:04:09,120 --> 00:04:11,630 J. Невероятно трудно да не прескачате напред. 74 00:04:11,630 --> 00:04:16,100 Писмо 2 карти да J. Номер 3 карти да D. Така че 75 00:04:16,100 --> 00:04:20,140 с този пръстен може да дадете някой на съобщение: 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 За някои вас причина Искам да им кажа XJD. 77 00:04:22,624 --> 00:04:24,540 Но вие можете да им дадете някои съобщение на номера, 78 00:04:24,540 --> 00:04:28,460 и толкова дълго, тъй като те имат този пръстен, те може да декриптира това, което се опитвам да кажа. 79 00:04:28,460 --> 00:04:32,510 >> Така че може би сте виждали това Конкретен пример на криптографията 80 00:04:32,510 --> 00:04:36,640 преди, ако около коледните празници сте гледали A Christmas Story. 81 00:04:36,640 --> 00:04:38,520 Ако никога не сте виждали го и преди, след това просто 82 00:04:38,520 --> 00:04:41,060 включите TBS при буквално всяко време на Бъдни вечер, 83 00:04:41,060 --> 00:04:44,510 защото те просто го покажа гръб до гръб назад, за да Насрещен целия ден. 84 00:04:44,510 --> 00:04:46,744 И съответната видеото е това. 85 00:04:46,744 --> 00:04:47,410 [Възпроизвеждане на видео] 86 00:04:47,410 --> 00:04:50,020 Бензен-то известен на всички и разни че Ралф Паркър е тук 87 00:04:50,020 --> 00:04:52,850 назначен за член на малката Ани Secret Circle Orphan 88 00:04:52,850 --> 00:04:56,490 и има право на всички почести и ползи, настъпили към него. 89 00:04:56,490 --> 00:04:59,010 Подписано Little Orphan Annie. 90 00:04:59,010 --> 00:05:03,120 Приподписан Пиер Андре с мастило! 91 00:05:03,120 --> 00:05:07,460 Honors и ползи вече на възраст от девет! 92 00:05:07,460 --> 00:05:12,530 >> [Крещи ОТ RADIO] 93 00:05:12,530 --> 00:05:13,030 -Хайде. 94 00:05:13,030 --> 00:05:14,000 Нека се заемем с това. 95 00:05:14,000 --> 00:05:18,274 Нямам нужда от всичко, което джаз за контрабандисти и пирати. 96 00:05:18,274 --> 00:05:20,440 -Listen Утре вечер с заключителната приключението 97 00:05:20,440 --> 00:05:22,540 на Черно пиратски кораб на. 98 00:05:22,540 --> 00:05:25,460 Сега е време за Тайно послание на Ани 99 00:05:25,460 --> 00:05:28,620 за вас, членовете на Secret Circle. 100 00:05:28,620 --> 00:05:32,370 Не забравяйте деца, само за членове на Secret Circle Ани 101 00:05:32,370 --> 00:05:34,880 може да декодира тайното послание на Ани. 102 00:05:34,880 --> 00:05:39,100 Не забравяйте, че Ани е в зависимост от вас. 103 00:05:39,100 --> 00:05:41,660 Определете вашите игли за B2. 104 00:05:41,660 --> 00:05:43,960 Ето съобщението. 105 00:05:43,960 --> 00:05:44,680 12. 106 00:05:44,680 --> 00:05:45,180 11. 107 00:05:45,180 --> 00:05:45,679 2. 108 00:05:45,679 --> 00:05:48,110 -Аз Съм в първия ми тайна среща. 109 00:05:48,110 --> 00:05:49,030 >> -25. 110 00:05:49,030 --> 00:05:49,834 14. 111 00:05:49,834 --> 00:05:51,040 11. 112 00:05:51,040 --> 00:05:51,854 18. 113 00:05:51,854 --> 00:05:52,670 16. 114 00:05:52,670 --> 00:05:54,570 >> -О, Pierre е в силен глас тази вечер. 115 00:05:54,570 --> 00:05:57,490 Мога да кажа, че тази вечер послание е наистина важно. 116 00:05:57,490 --> 00:05:57,990 -3. 117 00:05:57,990 --> 00:06:00,080 25. 118 00:06:00,080 --> 00:06:01,580 Това е съобщение от себе си Ани. 119 00:06:01,580 --> 00:06:02,880 Не забравяйте, че не казвай на никого. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -Five Секунди по-късно, аз съм в единствения стая в къщата, където едно момче на девет 122 00:06:11,130 --> 00:06:15,830 може да седне в личния живот и декодиране. 123 00:06:15,830 --> 00:06:16,620 Аха! 124 00:06:16,620 --> 00:06:17,340 B! 125 00:06:17,340 --> 00:06:20,210 Отидох към следващата. 126 00:06:20,210 --> 00:06:23,300 E. Първата дума е "да". 127 00:06:23,300 --> 00:06:25,880 S. Тя идваше по-лесно сега. 128 00:06:25,880 --> 00:06:28,400 U. 25. 129 00:06:28,400 --> 00:06:30,528 Това е R. 130 00:06:30,528 --> 00:06:31,278 -СОМе Върху, Ралфи! 131 00:06:31,278 --> 00:06:31,861 Аз бях да вървим! 132 00:06:31,861 --> 00:06:33,182 -Ще Бъде чак, Ma! 133 00:06:33,182 --> 00:06:36,038 Gee факир. 134 00:06:36,038 --> 00:06:42,840 Т. О. "със сигурност ще бъде" - не забравяйте да какво? 135 00:06:42,840 --> 00:06:44,770 Каква беше Little Orphan Ани се опитвам да кажа? 136 00:06:44,770 --> 00:06:46,381 Бъдете сигурни с какво? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Е трябва да си ходи! 138 00:06:47,825 --> 00:06:48,866 Ще ви моля да излезе? 139 00:06:48,866 --> 00:06:49,783 >> -Всички Полето, мамо! 140 00:06:49,783 --> 00:06:51,786 Връщам се веднага вън! 141 00:06:51,786 --> 00:06:53,606 Бях все по-близо сега. 142 00:06:53,606 --> 00:06:55,550 Напрежението беше ужасно. 143 00:06:55,550 --> 00:06:57,050 Какво беше? 144 00:06:57,050 --> 00:06:59,905 Съдбата на планетата може да виси на косъм! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Ранди трябва да си ходи! 146 00:07:01,736 --> 00:07:05,680 >> -Ще Бъде прав вън, за да плаче на глас! 147 00:07:05,680 --> 00:07:07,170 Почти там! 148 00:07:07,170 --> 00:07:08,150 Пръстите ми отлетя. 149 00:07:08,150 --> 00:07:09,980 Умът ми беше стоманен капан. 150 00:07:09,980 --> 00:07:11,496 Всеки порите вибрира. 151 00:07:11,496 --> 00:07:13,268 Беше почти ясно! 152 00:07:13,268 --> 00:07:13,767 Да. 153 00:07:13,767 --> 00:07:14,609 Да. 154 00:07:14,609 --> 00:07:15,108 Да. 155 00:07:15,108 --> 00:07:16,449 Да. 156 00:07:16,449 --> 00:07:20,240 Не забравяйте да пиете Ovaltine. 157 00:07:20,240 --> 00:07:20,740 Ovaltine? 158 00:07:20,740 --> 00:07:26,687 159 00:07:26,687 --> 00:07:27,520 А калпав търговска? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Кучи син. 162 00:07:34,920 --> 00:07:35,890 >> [END PLAYBACK] 163 00:07:35,890 --> 00:07:39,650 >> ROB Боудън: Така че това е начина, Ovaltine се отнася до областта на криптографията. 164 00:07:39,650 --> 00:07:42,290 По принцип CS50 просто рекламира Ovaltine, така че бихме могли да 165 00:07:42,290 --> 00:07:44,400 е кофти реклама за Ovaltine. 166 00:07:44,400 --> 00:07:44,900 Всичко е наред. 167 00:07:44,900 --> 00:07:47,120 Така че сега действително компютърни науки. 168 00:07:47,120 --> 00:07:50,670 Не забравяйте в понеделник престанахме гмуркане дълбоко в низове. 169 00:07:50,670 --> 00:07:52,820 Така че ние се занимават с низа "Zamyla." 170 00:07:52,820 --> 00:07:55,130 И ние се признава факта, че можем да се отнасяме 171 00:07:55,130 --> 00:07:57,510 "Zamyla" като последователност от символи. 172 00:07:57,510 --> 00:07:59,740 И не забравяйте, че сме научили скобата нотация. 173 00:07:59,740 --> 00:08:01,995 Така че, ако това са били съхранявани в низ "S", след което 174 00:08:01,995 --> 00:08:05,860 ако ние казахме и скоба 0, че ще посочва капитал Z. на писмо 175 00:08:05,860 --> 00:08:09,790 И ако ние казахме и скоба 1, че би показва, че първото малки букви а, 176 00:08:09,790 --> 00:08:14,220 и така нататък до ите конзола 5, които биха показали издържи. 177 00:08:14,220 --> 00:08:17,090 >> Сега не забравяйте, че Дължина на този низ е 6, 178 00:08:17,090 --> 00:08:23,220 но индексите от началото на низа са От 0 до 5, Z, чрез който издържи. 179 00:08:23,220 --> 00:08:28,650 Така че това вече се вписва в по-голяма снимка от паметта на компютъра ви, вашата RAM. 180 00:08:28,650 --> 00:08:32,020 Така че някъде програмата, която сте стартирали компютъра си 181 00:08:32,020 --> 00:08:34,780 трябва да се помни, Zamyla някъде в паметта. 182 00:08:34,780 --> 00:08:36,029 Така че мога да имам доброволец? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Да моля. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 А вие как се казвате? 187 00:08:51,500 --> 00:08:52,410 >> DEAN: Дийн. 188 00:08:52,410 --> 00:08:53,550 >> ROB Боудън: Дийн? 189 00:08:53,550 --> 00:08:54,910 Приятно ми е да се запознаем, Дийн. 190 00:08:54,910 --> 00:08:58,240 Така дойде тук, и ние ще имаме чертаете 191 00:08:58,240 --> 00:09:00,740 на нашата хубава готин оформление на паметта. 192 00:09:00,740 --> 00:09:05,950 Сега обичам да мисля за памет като една дълга ивица от байтове, 193 00:09:05,950 --> 00:09:11,090 но само за целите на дисплея пускаме Просто се отляво надясно и отгоре надолу. 194 00:09:11,090 --> 00:09:11,590 ДОБРЕ? 195 00:09:11,590 --> 00:09:22,030 >> Така че аз ще се покаже program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 И така, всичко, тази програма е прави се иска четири струни 197 00:09:25,760 --> 00:09:28,830 от потребителя GetString и след печат 198 00:09:28,830 --> 00:09:30,950 независимо, че първият низ влезе беше. 199 00:09:30,950 --> 00:09:32,840 Ние сме игнориране два през четири. 200 00:09:32,840 --> 00:09:33,610 ДОБРЕ. 201 00:09:33,610 --> 00:09:38,210 Така че тук, когато now-- Аз първо поискване s1. 202 00:09:38,210 --> 00:09:39,740 Така че вие ​​сте на компютъра. 203 00:09:39,740 --> 00:09:41,680 И вие прилагане GetString. 204 00:09:41,680 --> 00:09:46,710 Така че можете да поиска низ от мен, и аз казвам, OK, Дийн. 205 00:09:46,710 --> 00:09:47,900 Дайте низа "Дийн". 206 00:09:47,900 --> 00:09:50,300 >> Така че някъде в паметта ви трябва да се помни "Дийн". 207 00:09:50,300 --> 00:09:52,160 Така че ще го напиша в паметта някъде. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Perfect. 210 00:09:59,210 --> 00:09:59,880 ДОБРЕ. 211 00:09:59,880 --> 00:10:01,740 Така че сега сме s2. 212 00:10:01,740 --> 00:10:03,869 И s2 ще бъде искане до GetString. 213 00:10:03,869 --> 00:10:05,160 Така че аз отивам да въведете низ. 214 00:10:05,160 --> 00:10:08,720 Отивам да въведете "Хана". 215 00:10:08,720 --> 00:10:10,586 Така влиза "Хана" някъде в паметта. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Да. 218 00:10:19,360 --> 00:10:23,000 А-Н. 219 00:10:23,000 --> 00:10:25,550 >> ОК, така че сега s3. 220 00:10:25,550 --> 00:10:28,380 И това ще бъде друг поиска да GetString. 221 00:10:28,380 --> 00:10:37,020 И така, сега влиза "Мария". 222 00:10:37,020 --> 00:10:37,520 Всичко е наред. 223 00:10:37,520 --> 00:10:40,980 И след това има един последен искане до GetString, s4. 224 00:10:40,980 --> 00:10:42,580 Така че, аз не знам. 225 00:10:42,580 --> 00:10:45,640 Какво ще кажеш да отидем с antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Така, че влиза в паметта. 227 00:10:49,460 --> 00:10:50,400 Да. 228 00:10:50,400 --> 00:10:53,970 Така че просто правя "Роб." 229 00:10:53,970 --> 00:10:54,560 >> ДОБРЕ. 230 00:10:54,560 --> 00:10:58,410 Така че сега explain-- защо направих оставите тези пространства? 231 00:10:58,410 --> 00:11:01,340 Защо трябва това поле празно пространство тук, тук и тук? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Да. 234 00:11:05,670 --> 00:11:09,450 Така че забележите, когато отида да отпечатате s1-- така че ако ние 235 00:11:09,450 --> 00:11:11,890 имаше "Хана" бягане чак до "Дийн", 236 00:11:11,890 --> 00:11:14,360 как можем да знаем, когато низа "Декан" свършва? 237 00:11:14,360 --> 00:11:19,470 Така че отпечатването на низ S1 може да има просто отпечатва "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 ако то не разполага с никаква представа кога "Дийн" фактически завършва. 239 00:11:22,720 --> 00:11:23,240 >> Всичко е наред. 240 00:11:23,240 --> 00:11:27,650 Така в паметта на начина, по който ние всъщност представлява този край на низ 241 00:11:27,650 --> 00:11:29,940 е с наклонена черта нула. 242 00:11:29,940 --> 00:11:32,620 Така че това пространство е точно това, което искахме. 243 00:11:32,620 --> 00:11:34,040 Тя трябва да бъде наклонена черта нула. 244 00:11:34,040 --> 00:11:37,690 Това ще бъде една наклонена черта нула, и това ще бъде наклонена черта нула. 245 00:11:37,690 --> 00:11:41,585 И вие може да имате страхотна награда за да бъдеш съвършен доброволец. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Вземете стрес топка! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> ДОБРЕ. 250 00:11:49,700 --> 00:11:54,420 Така че този герой е наклонена черта нула как можем да посочи в края на низ. 251 00:11:54,420 --> 00:11:57,120 Това е как, когато всяка програма иска да отпечатате низ, 252 00:11:57,120 --> 00:11:59,760 Спомням си, че това е how-- научихме функцията strlen миналата седмица? 253 00:11:59,760 --> 00:12:00,940 Дължина на String? 254 00:12:00,940 --> 00:12:03,770 Това е как дължина низ е в състояние да определи колко дълго низ е. 255 00:12:03,770 --> 00:12:05,810 Тя просто продължава итерации над знаците 256 00:12:05,810 --> 00:12:08,217 докато намери на обратно наклонена черта нула характер. 257 00:12:08,217 --> 00:12:11,050 Така че важното е да се осъзнае за обратно наклонена черта нула характер 258 00:12:11,050 --> 00:12:14,950 е това е представено от всички нули в бита. 259 00:12:14,950 --> 00:12:18,980 Така че забележите, че това е важно от нула характер. 260 00:12:18,980 --> 00:12:23,010 Така нулевото характер, ако си спомняте в примера, че даде в края 261 00:12:23,010 --> 00:12:27,360 на лекция, където героите карта to-- като капитал A карти до 65. 262 00:12:27,360 --> 00:12:29,130 С малки букви на карти до 97. 263 00:12:29,130 --> 00:12:30,890 Малки букви б ще бъде 98. 264 00:12:30,890 --> 00:12:35,220 Така числото 0 картите to-- аз не правя знаете разстояние от върха на главата ми. 265 00:12:35,220 --> 00:12:36,400 44 или 45. 266 00:12:36,400 --> 00:12:37,890 Някъде в този регион. 267 00:12:37,890 --> 00:12:40,850 >> Така характера 0 е реален брой. 268 00:12:40,850 --> 00:12:44,350 Но обратно наклонена черта нула карти за всички нула бита. 269 00:12:44,350 --> 00:12:46,380 Така че има разлика между наклонена черта нула, 270 00:12:46,380 --> 00:12:48,450 които ние ще се обадя на нулевата терминатор. 271 00:12:48,450 --> 00:12:53,210 Има разлика между наклонена черта нула и характера нула. 272 00:12:53,210 --> 00:12:54,350 >> Всичко е наред. 273 00:12:54,350 --> 00:12:57,520 Така че говорим малко повече за струни. 274 00:12:57,520 --> 00:13:01,470 Така че след това, което виждаме тук, това е начинът, тя ще бъде изложена в паметта. 275 00:13:01,470 --> 00:13:07,940 Така че тази идея за низове като последователност на characters-- така официалната компютъра 276 00:13:07,940 --> 00:13:10,750 sciency термин за последователност е масив. 277 00:13:10,750 --> 00:13:13,790 Така бихме нарекли низ набор от символи. 278 00:13:13,790 --> 00:13:17,770 И всъщност има други данни видове, които можем да направим масиви от. 279 00:13:17,770 --> 00:13:19,975 >> Така че, за да мотивира това, разгледаме един пример. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Ние ще го наричаме ages0.c аз ще копирате и поставите нашия шаблон. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 ДОБРЕ. 284 00:13:33,410 --> 00:13:39,378 Така че в тази програма, което ние искате да направите, е да вземете възраст 285 00:13:39,378 --> 00:13:45,160 от трима студенти в курса. 286 00:13:45,160 --> 00:13:49,240 Така че ние знаем за инт age-- и сега аз ще кажа 0. 287 00:13:49,240 --> 00:13:53,140 Така че може да искате да се каже age1, но за цели, ние ще видим много скоро, 288 00:13:53,140 --> 00:13:57,187 Аз ще кажа, инт age0 равнява GetInt. 289 00:13:57,187 --> 00:13:59,270 Така че на същата покана да GetInt че ние сме били използване на I 290 00:13:59,270 --> 00:14:01,561 не се случи, за да се накара казвайки: "дай ми възраст." 291 00:14:01,561 --> 00:14:03,120 Но просто не поиска това. 292 00:14:03,120 --> 00:14:06,510 >> И age1 равнява GetInt. 293 00:14:06,510 --> 00:14:09,600 И инт age2 равнява GetInt. 294 00:14:09,600 --> 00:14:14,070 Така че, отново, трима студенти, но в крайна сметка променливите индекси 295 00:14:14,070 --> 00:14:16,890 са age0 чрез age2. 296 00:14:16,890 --> 00:14:17,550 ДОБРЕ. 297 00:14:17,550 --> 00:14:23,960 Така че тази програма ще направи каквото ние искаме с age0, age1 и age2, 298 00:14:23,960 --> 00:14:27,670 но в крайна сметка тази програма работи за трима студенти. 299 00:14:27,670 --> 00:14:28,380 >> ДОБРЕ. 300 00:14:28,380 --> 00:14:32,110 Така че сега какво, ако аз искам четирима студенти? 301 00:14:32,110 --> 00:14:36,000 Е, аз отивам да трябва да се върна в моя код, променете коментара, 302 00:14:36,000 --> 00:14:39,840 и сега имаме едно цяло число age3 равнява GetInt. 303 00:14:39,840 --> 00:14:40,610 ДОБРЕ. 304 00:14:40,610 --> 00:14:43,660 Така че, който вижда проблемът тук? 305 00:14:43,660 --> 00:14:47,310 Какъв е проблемът с този вид настройка? 306 00:14:47,310 --> 00:14:47,810 Да. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Да. 309 00:14:53,610 --> 00:14:56,360 Така че ние сме за създаване на променлива за всеки ученик. 310 00:14:56,360 --> 00:15:00,140 Сега, че работи, но в крайна сметка какво ще стане ако аз сега 311 00:15:00,140 --> 00:15:06,500 казват: "Искам да вземеш, на възраст от осем студенти или 16 студенти 312 00:15:06,500 --> 00:15:11,340 или все пак много студенти от стотиците студенти в CS50 313 00:15:11,340 --> 00:15:16,750 или хилядите студенти на колежа или милиардите хора по света? 314 00:15:16,750 --> 00:15:19,130 Така че в крайна сметка това не е устойчиво. 315 00:15:19,130 --> 00:15:21,990 Всеки път, когато видите сами копиране и поставяне код, подобен на този, 316 00:15:21,990 --> 00:15:25,050 вие по принцип трябва да се чувстват че има по-добър начин. 317 00:15:25,050 --> 00:15:31,290 >> Така че това е мястото, където ще се въведе декларация масив. 318 00:15:31,290 --> 00:15:34,564 Така че, когато декларира масив, това е, което общия формат 319 00:15:34,564 --> 00:15:35,480 ще изглежда така. 320 00:15:35,480 --> 00:15:36,664 Отиваме да кажа вида. 321 00:15:36,664 --> 00:15:38,830 и след това отиваме да даде името на това масив, 322 00:15:38,830 --> 00:15:41,150 точно както ние определяме дадена променлива. 323 00:15:41,150 --> 00:15:43,980 И тогава най-накрая ние използваме тази скоба нотация отново 324 00:15:43,980 --> 00:15:47,480 но в различен контекст от как сме се да го използвате по-рано. 325 00:15:47,480 --> 00:15:51,860 >> Така че тук това изглежда като нормална променлива декларация, че сме виждали. 326 00:15:51,860 --> 00:15:54,890 Така че сме виждали инт х запетая преди. 327 00:15:54,890 --> 00:16:00,020 Е, сега можем да видим нещо като INT х 5 скоби. 328 00:16:00,020 --> 00:16:04,020 И пускането на тази идея в Програма GetInt че ние have-- 329 00:16:04,020 --> 00:16:08,850 така че ние може да реализира това по същия начин. 330 00:16:08,850 --> 00:16:13,630 >> Да кажем, че в CS ние сме склонни да се използва N, тъй като броят на нещо. 331 00:16:13,630 --> 00:16:16,150 Така че тук ние ще съхранявате четирима студенти. 332 00:16:16,150 --> 00:16:25,960 И сега можем да кажем, инт възраст скоба не, N- доста го получи yet-- 333 00:16:25,960 --> 00:16:32,210 да декларира масив от четирима ученици. 334 00:16:32,210 --> 00:16:38,050 И така, как това ще изглежда в памет ще бъде подобна на това. 335 00:16:38,050 --> 00:16:39,570 Изчистете това. 336 00:16:39,570 --> 00:16:46,606 И ние ще трябва някъде в memory-- Ще сложа това там горе. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Така че някъде в паметта. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Едно две три четири. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Имаме четири числа в един ред за този набор от четири числа. 343 00:17:09,849 --> 00:17:13,820 Така че, в момента, това, което е най- размер на една от тези кутии? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Да. 346 00:17:17,690 --> 00:17:18,390 Това е четири байта. 347 00:17:18,390 --> 00:17:19,690 Това е 32 бита. 348 00:17:19,690 --> 00:17:22,310 Така че сега това е различно от масива, че 349 00:17:22,310 --> 00:17:24,020 видяхме по-рано, на масива от знаци. 350 00:17:24,020 --> 00:17:28,540 В низ всяка кутия е само един байт, защото един герой е само един байт. 351 00:17:28,540 --> 00:17:32,170 Но с набор от числа, всеки кутия трябва да бъде четири байта, с цел 352 00:17:32,170 --> 00:17:34,060 за да се побере цялото число. 353 00:17:34,060 --> 00:17:37,197 Така че това е, което масив от четири целочислени ще приличат. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> И след това обратно към код. 356 00:17:43,870 --> 00:17:47,460 Сега искаме да всъщност магазин числа в които масив. 357 00:17:47,460 --> 00:17:53,470 Така че сега това е много, много, много общ модел, който ще в някакъв момент 358 00:17:53,470 --> 00:17:54,680 стане мускулна памет. 359 00:17:54,680 --> 00:17:56,710 Така че аз INT е равна на 0. 360 00:17:56,710 --> 00:17:57,940 и по-малко от п. 361 00:17:57,940 --> 00:18:01,850 аз плюс плюс. 362 00:18:01,850 --> 00:18:05,790 Възрастова група и се равнява GetInt. 363 00:18:05,790 --> 00:18:15,100 >> Така че това за цикъл, този формат, трябва да се използва за много. 364 00:18:15,100 --> 00:18:20,010 Така че това е по принцип, как ще го направим обхождане на почти всеки масив. 365 00:18:20,010 --> 00:18:23,690 Сега забележите този вид обяснява защо от самото начало 366 00:18:23,690 --> 00:18:29,870 не сме имали за примки отиват за инт и е равно на 1, и по-малко от или равно на 10. 367 00:18:29,870 --> 00:18:34,200 Причината е, че се излиза от нула прави тази работа добре с масиви. 368 00:18:34,200 --> 00:18:36,270 Така масиви са нулеви индексира. 369 00:18:36,270 --> 00:18:40,360 Ако този масив е с дължина 4, индексите са от 0 до 3. 370 00:18:40,360 --> 00:18:42,880 >> Така през първото повторение на този цикъл за 371 00:18:42,880 --> 00:18:49,930 ние ще бъде създаването възраст скоба 0 равна на повикване до GetInt. 372 00:18:49,930 --> 00:18:52,440 Така че каквото и да се случи да влезе в клавиатурата. 373 00:18:52,440 --> 00:18:56,970 През второто преминаване, ние сме създаване age1 равна на GetInt. 374 00:18:56,970 --> 00:18:58,230 Трето пас, age2. 375 00:18:58,230 --> 00:18:59,880 Final пас age3. 376 00:18:59,880 --> 00:19:05,750 Така че, ако в първото преминаване на контура I, въведете числото 4 в клавиатурата, 377 00:19:05,750 --> 00:19:07,740 След това ние ще вмъкнете 4 тук. 378 00:19:07,740 --> 00:19:11,470 Ако на втория проход въведа 50, ние ще сложи 50 тук. 379 00:19:11,470 --> 00:19:15,180 На третия прохода бих могъл въведете отрицателна 1, 1 отрицателен, 380 00:19:15,180 --> 00:19:21,810 и накрая, ако въведете 0-- и Сега не забравяйте, че това е индекс три. 381 00:19:21,810 --> 00:19:25,350 >> След като примка назад, аз се ще бъде увеличен до 4. 382 00:19:25,350 --> 00:19:27,770 Вече не е по-малко от N, което е 4. 383 00:19:27,770 --> 00:19:29,840 И ние се измъкнат от примката. 384 00:19:29,840 --> 00:19:32,578 Така че това, което би било лошо в това? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Недоловим]? 387 00:19:38,729 --> 00:19:39,604 АУДИТОРИЯ: [недоловим] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Да. 390 00:19:46,400 --> 00:19:51,550 Така че масивът има само четири места, което означава, както индекси от 0 до 3. 391 00:19:51,550 --> 00:19:55,630 Така че, ако това беше така, щях поеме стойността 4 в някакъв момент. 392 00:19:55,630 --> 00:20:00,910 възрастова група 4 ще бъде определянето каквото и да се случва да бъде тук 393 00:20:00,910 --> 00:20:02,920 това, което имам да кажа, въведете 6. 394 00:20:02,920 --> 00:20:05,010 Това ще се настроите на 6. 395 00:20:05,010 --> 00:20:06,560 >> Но ние не знаем какво е тук. 396 00:20:06,560 --> 00:20:08,836 Това не е памет че сме имали достъп. 397 00:20:08,836 --> 00:20:10,710 Така че, ако си спомняте от предходната лекция, 398 00:20:10,710 --> 00:20:14,350 той е отпечатване на стойностите на Zamyla и в един момент той се удари тази сегментацията 399 00:20:14,350 --> 00:20:17,990 Аномалия. Така че най-вероятно ще се видим много грешки, колкото можете сегментиране 400 00:20:17,990 --> 00:20:20,530 се приложат някои от наборите проблемни. 401 00:20:20,530 --> 00:20:24,950 Но това е един от начините, по които можете да се натъкнете на сегментацията 402 00:20:24,950 --> 00:20:28,540 Аномалия, когато започнете достъп памет по начини, които не трябва да бъдат. 403 00:20:28,540 --> 00:20:34,117 Така че ние не са имали достъп до това място и това е грешка. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Така че това е по-добре. 406 00:20:40,190 --> 00:20:45,820 Сега все още е малък проблем с този код. 407 00:20:45,820 --> 00:20:50,720 И това е в общи линии, че ние сме все още остана на четири студенти. 408 00:20:50,720 --> 00:20:52,940 Сега, ако искам да използвам осем студенти, OK. 409 00:20:52,940 --> 00:20:54,350 Това не е кой знае какво. 410 00:20:54,350 --> 00:20:58,120 Мога да отида в, променете коментира, както и промяна п. 411 00:20:58,120 --> 00:20:59,760 Сега това ще работи с осем студенти. 412 00:20:59,760 --> 00:21:02,190 Ако компилирате и стартирате тази това, тя ще се появи me-- 413 00:21:02,190 --> 00:21:07,870 тя ще поиска числа, за осем студенти и тя просто ще работи. 414 00:21:07,870 --> 00:21:11,850 Но това е по-малко от идеални, за да се наложи да компилирате програмата всеки път 415 00:21:11,850 --> 00:21:15,960 Искам да променя броя на учениците че искам да въведете вековете за. 416 00:21:15,960 --> 00:21:22,990 >> Така че окончателното подобряване на това, както ще видим, че сме here-- 417 00:21:22,990 --> 00:21:26,177 ще поиска от броя на хората. 418 00:21:26,177 --> 00:21:28,010 Тук имаме редица от хората в стаите 419 00:21:28,010 --> 00:21:29,880 или всякакви възрасти хора в стаята. 420 00:21:29,880 --> 00:21:33,300 Но ние ще поиска броя от хората в помещението от страна на потребителя. 421 00:21:33,300 --> 00:21:36,171 Така че това е точно същото време не се прави линия, която сме виждали преди. 422 00:21:36,171 --> 00:21:37,920 Това е точно същото направя-линия, докато че сте 423 00:21:37,920 --> 00:21:40,050 може да бъде прилагането на снимачната проблем. 424 00:21:40,050 --> 00:21:43,102 Така че, докато те са въвеждане на N-малко от 1, 425 00:21:43,102 --> 00:21:45,310 така че трябва да е най- поне един човек в стаята. 426 00:21:45,310 --> 00:21:47,407 Докато те са въвеждане на N-малко от 1, 427 00:21:47,407 --> 00:21:48,990 След това ние ще продължим да питам отново. 428 00:21:48,990 --> 00:21:50,906 Моля, въведете числото на хората в стаята. 429 00:21:50,906 --> 00:21:53,550 Сега, след като имаме броя от хората в room-- 430 00:21:53,550 --> 00:21:58,020 така че може да влезе, че има са 200 души в тази стая. 431 00:21:58,020 --> 00:22:05,480 Тогава тук отиваме да дойде и декларира масив с размер 200. 432 00:22:05,480 --> 00:22:10,220 Ние сме за обявяване масив, който е достатъчно голям, за да държат 200 възрасти. 433 00:22:10,220 --> 00:22:15,370 Слиза, това е за контур че ще се използва за много. 434 00:22:15,370 --> 00:22:19,490 Така итерации през този масив, възлагане на всяко място 435 00:22:19,490 --> 00:22:23,020 че в масив цяло число, и след това в крайна сметка тук сме 436 00:22:23,020 --> 00:22:28,340 само за да се пример за итерации през този масив, за да не присвояване на стойности, 437 00:22:28,340 --> 00:22:30,150 но за да получите достъп до стойности. 438 00:22:30,150 --> 00:22:33,810 >> Така че тук ние виждаме, че ние се казва, след една година, 439 00:22:33,810 --> 00:22:40,470 лице% аз ще бъда% I-годишна възраст, където първият% I е I плюс 1. 440 00:22:40,470 --> 00:22:43,010 Така че аз е този индекс променлива. 441 00:22:43,010 --> 00:22:49,420 И вторият% I ще бъде на стойност, съхранена в масива възрасти плюс 1. 442 00:22:49,420 --> 00:22:54,217 Така че това е само един плюс, защото ние сме saying-- това плюс 1, възрасти I плюс 1. 443 00:22:54,217 --> 00:22:57,050 Това плюс 1 е само защото ние сме казвайки, след една година на лицето 444 00:22:57,050 --> 00:22:58,280 ще бъде този стар. 445 00:22:58,280 --> 00:23:01,080 >> Така че, защо е това аз плюс 1? 446 00:23:01,080 --> 00:23:04,064 Защо имаме плюс 1 до там? 447 00:23:04,064 --> 00:23:04,564 Да. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Да. 450 00:23:07,930 --> 00:23:10,510 Така че не забравяйте масиви са нула индексира. 451 00:23:10,510 --> 00:23:14,840 Така че, ако ние отпечатвате това в продължение на някой, който да се чете само на изхода, 452 00:23:14,840 --> 00:23:19,380 След това най-вероятно те искат да видят нещо като човек, един, човек номер едно, 453 00:23:19,380 --> 00:23:21,160 ще бъде на 20 години. 454 00:23:21,160 --> 00:23:23,570 Лице номер две ще бъде на 15 години. 455 00:23:23,570 --> 00:23:27,420 Те Предпочитам да не види човек Номер на нула е на 15 години. 456 00:23:27,420 --> 00:23:36,460 >> Така че съставянето на този и просто виждам какво тя изглежда like-- Създаване малко пространство. 457 00:23:36,460 --> 00:23:43,560 Направи възрасти компилира. 458 00:23:43,560 --> 00:23:45,080 Работещи възрасти. 459 00:23:45,080 --> 00:23:46,580 Виждаме брой хора в помещението. 460 00:23:46,580 --> 00:23:48,850 Така че аз ще кажа, че има трима души в стая. 461 00:23:48,850 --> 00:23:54,000 Възраст на човек номер едно, нека да кажем, 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 И сега аз ще кажа една година от Сега те ще бъдат 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Нека да видим, че това работи с п, която не е равна на 3. 464 00:24:02,900 --> 00:24:07,940 Така че, ако кажа, броя на хората, е 5, една, два, три, две, едно, след една година 465 00:24:07,940 --> 00:24:11,170 те ще бъдат две, три, четири, три, две години. 466 00:24:11,170 --> 00:24:16,500 Така че бих могъл точно както лесно да бъде п 10,000. 467 00:24:16,500 --> 00:24:21,270 Сега аз ще се седи тук за доста а по време на въвеждане на възраст, но това работи. 468 00:24:21,270 --> 00:24:26,000 >> Така че сега в паметта някъде ние имаме масив от размер 10 000, 469 00:24:26,000 --> 00:24:28,830 така в крайна сметка 40 000 байта, защото има 470 00:24:28,830 --> 00:24:31,222 четири байта за всеки от тези числа. 471 00:24:31,222 --> 00:24:33,180 Така че има един набор от размер на 10 000, където можем 472 00:24:33,180 --> 00:24:36,201 съхраняване на възраст между тези 10000 души. 473 00:24:36,201 --> 00:24:36,700 Всичко е наред. 474 00:24:36,700 --> 00:24:40,070 Въпроси за нищо от това? 475 00:24:40,070 --> 00:24:41,892 Да. 476 00:24:41,892 --> 00:24:43,350 Какво става, ако ви е дал отрицателно число? 477 00:24:43,350 --> 00:24:44,870 Нека да видим какво ще стане. 478 00:24:44,870 --> 00:24:49,320 Така че в този конкретен номер case-- от хората в помещението, отрицателна един. 479 00:24:49,320 --> 00:24:52,580 Той отхвърля това, защото тук ние се случи 480 00:24:52,580 --> 00:24:57,180 да се борави с факта, че, ако п е по-малко от една отиваме да попитам отново. 481 00:24:57,180 --> 00:25:01,780 Ако се опитате да обявят масив от отрицателна размер, 482 00:25:01,780 --> 00:25:03,950 това обикновено не работи. 483 00:25:03,950 --> 00:25:05,570 >> Така че нека да се опитаме. 484 00:25:05,570 --> 00:25:08,000 Нека да игнорира каквото стойност те вход за п 485 00:25:08,000 --> 00:25:10,571 и само да кажа, INT възрасти отрицателен. 486 00:25:10,571 --> 00:25:12,410 Нека да видим дали той дори компилира. 487 00:25:12,410 --> 00:25:14,100 Не съм сигурен. 488 00:25:14,100 --> 00:25:14,920 Не. 489 00:25:14,920 --> 00:25:18,280 Така възрасти, е декларирано като масив с отрицателен размер. 490 00:25:18,280 --> 00:25:22,540 Така че предварително признава масив може да не да бъде на отрицателна размер и го отхвърли. 491 00:25:22,540 --> 00:25:26,840 Сега, ако не се справя това не се прави линия, докато правилно, 492 00:25:26,840 --> 00:25:28,810 ако ние не се проверка ако п е по-малко от 1-- 493 00:25:28,810 --> 00:25:32,690 нека кажем просто не са имали това на всички 494 00:25:32,690 --> 00:25:35,940 и вместо това ние просто вземете цяло число. 495 00:25:35,940 --> 00:25:40,710 Без значение какъв е, че е цяло число, декларираме масив от този размер. 496 00:25:40,710 --> 00:25:44,250 >> Така че компилаторът не може вероятно се оплакват сега. 497 00:25:44,250 --> 00:25:48,780 Ако аз съставят this-- така че не мога да се оплача, 498 00:25:48,780 --> 00:25:51,480 защото не може да знае, че аз съм ще влезе отрицателно число, 499 00:25:51,480 --> 00:25:52,550 който може да бъде невалиден. 500 00:25:52,550 --> 00:25:54,633 За всичко, което знае, бих могъл Въведете положително число, 501 00:25:54,633 --> 00:25:56,000 което е напълно валидно. 502 00:25:56,000 --> 00:26:01,090 Така че аз си представите, ако въведете отрицателна 1 хора в стаята, сегментацията на вина. 503 00:26:01,090 --> 00:26:06,040 >> Така че, OK. 504 00:26:06,040 --> 00:26:13,160 Така че нека да добавите този върна само го пазят това, което първоначално е било. 505 00:26:13,160 --> 00:26:15,640 Така направи възрасти. 506 00:26:15,640 --> 00:26:18,120 Сега, ако искам да опитам отрицателна age-- така че нека 507 00:26:18,120 --> 00:26:19,710 кажа, че има пет души в стаята. 508 00:26:19,710 --> 00:26:23,180 Възраст на човек номер едно е отрицателна 4, лице на три 509 00:26:23,180 --> 00:26:26,500 е равна на нула, лице three-- OK. 510 00:26:26,500 --> 00:26:29,850 Така че тук, на една година, считано от сега, човек номер един ще бъде отрицателен 3-годишна възраст. 511 00:26:29,850 --> 00:26:32,830 Така че най-вероятно няма смисъл. 512 00:26:32,830 --> 00:26:37,220 Но това е само защото търсите в кода всичко, което правим 513 00:26:37,220 --> 00:26:40,260 иска GetInt. 514 00:26:40,260 --> 00:26:44,110 >> Сега, ако бяхме имали GetPositiveInt функция 515 00:26:44,110 --> 00:26:49,690 или бяхме просто направи това сортиране на същата линия, докато там долу, 516 00:26:49,690 --> 00:26:52,340 След това ще работи перфектно добре. 517 00:26:52,340 --> 00:26:54,200 Но в този конкретен случай, ние просто не го правят 518 00:26:54,200 --> 00:26:57,772 се случи да бъде работа с отрицателни стойности. 519 00:26:57,772 --> 00:26:59,147 Всякакви други въпроси за масиви? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 ДОБРЕ. 522 00:27:03,250 --> 00:27:09,380 >> Така че ние сега сме виждали масиви. 523 00:27:09,380 --> 00:27:12,500 И ние ще трябва да използвате това за аргументи от командния ред. 524 00:27:12,500 --> 00:27:14,680 Така че в определен проблем two-- Знам, че много от вас 525 00:27:14,680 --> 00:27:18,040 може би все още се работи по проблема набор един, но проблем зададете два предстои. 526 00:27:18,040 --> 00:27:22,260 В определен проблем две, ти започваш да се Трябва да се занимават с конци, решетки, 527 00:27:22,260 --> 00:27:23,950 и аргументи от командния ред. 528 00:27:23,950 --> 00:27:26,270 >> Така че какви са аргументите на командния ред? 529 00:27:26,270 --> 00:27:29,570 Сега, можете да видите тук долу на Малко закачка за точно това, което е 530 00:27:29,570 --> 00:27:30,950 ще се случи. 531 00:27:30,950 --> 00:27:32,950 Виждаме инт Основната, с включени argc, струнен argv скоби. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Така че първо нека се опитаме да интерпретираме това, което е, че се опитвам да кажа. 534 00:27:38,130 --> 00:27:40,800 Сега, OK. 535 00:27:40,800 --> 00:27:44,637 >> Така че в командния ред трябва да бъде привикване към някои от тези команди 536 00:27:44,637 --> 00:27:48,580 сега, и вие вероятно сте тичам CD в ​​терминала преди. 537 00:27:48,580 --> 00:27:52,100 Така че, ако ние кажем сд pset1, знаете ли, че, които трябва да 538 00:27:52,100 --> 00:27:55,050 се променя в директорията pset1. 539 00:27:55,050 --> 00:27:59,120 >> Сега забелязвам, че никога не сте писмена програма, подобно преди. 540 00:27:59,120 --> 00:28:03,120 Всяка програма, която си написал, вие ще се кандидатира, да речем, точка, наклонена черта Mario, 541 00:28:03,120 --> 00:28:06,779 дот наклонена черта алчни, и след това го може да ви пита за вход. 542 00:28:06,779 --> 00:28:08,570 Сега, това не е това, което промяна на указателя прави. 543 00:28:08,570 --> 00:28:12,770 Когато стартирате сд, тя не след това казват, която директория искате да сд в? 544 00:28:12,770 --> 00:28:17,200 Вместо това, можете просто да кажа, сд pset1, и той просто отива в указателя pset1. 545 00:28:17,200 --> 00:28:20,430 >> Така че по подобен начин имаме и други примери. 546 00:28:20,430 --> 00:28:21,540 направи здрасти. 547 00:28:21,540 --> 00:28:25,760 Когато стартирате направи, тя не след това казват, коя програма бихте искали да направите? 548 00:28:25,760 --> 00:28:29,620 Можете просто да кажем, в командния ред направи здрасти. 549 00:28:29,620 --> 00:28:31,060 >> Move е друг пример. 550 00:28:31,060 --> 00:28:34,840 Това, че се движим в mario.c подаде до една директория. 551 00:28:34,840 --> 00:28:38,060 Така че сега ние знаем с този пример ние сме наистина минава два аргумента. 552 00:28:38,060 --> 00:28:42,090 Има mario.c като първи аргумент, и точка точка е с втория аргумент. 553 00:28:42,090 --> 00:28:46,140 И тогава, когато ви свършат направите, можете се види, че наистина дълъг команда line-- 554 00:28:46,140 --> 00:28:50,580 че наистина дълъг команда отпечатан в командния ред. 555 00:28:50,580 --> 00:28:53,590 Така че отдавна command-- това е само на кратка част от него, 556 00:28:53,590 --> 00:28:56,090 но сега имаме три аргументи от командния ред. 557 00:28:56,090 --> 00:28:59,750 Dot пробив на нула, здравей, и hello.c. 558 00:28:59,750 --> 00:29:03,497 >> Така че това са командния ред аргументи, аргументи 559 00:29:03,497 --> 00:29:05,580 че сте преминаване в командния ред, така че да 560 00:29:05,580 --> 00:29:08,680 не трябва да бъдат подканени когато стартирате програмата. 561 00:29:08,680 --> 00:29:13,090 Би било разочароващо, ако, когато сте стартирали звън тя каза: "Добре, 562 00:29:13,090 --> 00:29:15,630 които program-- които файл са ви съставянето? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Какво бихте знамена искал да влиза? тире о. 565 00:29:19,440 --> 00:29:21,190 какво ще желаете файла да се нарече? 566 00:29:21,190 --> 00:29:21,690 Здравейте. 567 00:29:21,690 --> 00:29:25,290 Не, ти просто стартирате трясък блъскам о здравей hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Така че гледам назад в това. 569 00:29:28,820 --> 00:29:32,920 Сега argc-- argc е броят на аргумент. 570 00:29:32,920 --> 00:29:36,620 Това е броят на командния ред доводи, вписани в командния ред. 571 00:29:36,620 --> 00:29:39,720 Е, argv-- технически на ст щандове за вектор, 572 00:29:39,720 --> 00:29:41,460 което означава масив. 573 00:29:41,460 --> 00:29:42,680 Но можете да игнорирате това. 574 00:29:42,680 --> 00:29:47,540 Argv-- имаме низ argv, така струнен argv скоби. 575 00:29:47,540 --> 00:29:50,150 Така че това е още една форма на конзоли, които не сте виждали преди. 576 00:29:50,150 --> 00:29:52,300 Така че сме виждали скоба нотация, когато казахме, 577 00:29:52,300 --> 00:29:53,970 харесват, канап и се равнява Zamyla. 578 00:29:53,970 --> 00:29:56,910 ите скоба 0 получава достъп до Z. характер 579 00:29:56,910 --> 00:30:00,720 >> Ние също така съм виждал скоби, когато казахме INT възрасти конзола 5. 580 00:30:00,720 --> 00:30:03,160 Това обявена масив с размер 5. 581 00:30:03,160 --> 00:30:06,280 Така че тук е версия на скоби не сме виждали преди. 582 00:30:06,280 --> 00:30:09,630 Така че този вид на низ argv че ще бъде напълно запознат 583 00:30:09,630 --> 00:30:12,050 че това ще бъде само низ. 584 00:30:12,050 --> 00:30:14,520 Сега скобите показват че това е масив. 585 00:30:14,520 --> 00:30:19,920 Така струнен argv скоби средства че argv е масив от низове. 586 00:30:19,920 --> 00:30:22,540 Сега технически низ е набор от символи. 587 00:30:22,540 --> 00:30:26,400 Така че това сега е масив от набор от символи. 588 00:30:26,400 --> 00:30:31,490 Но това е много по-лесно да се мисли за това като просто масив от низове. 589 00:30:31,490 --> 00:30:34,900 >> Така че, защо би скобите да са празни? 590 00:30:34,900 --> 00:30:38,170 Подобно, защо да не можем да кажем, конзола 5, скоба п? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Да. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Да. 595 00:30:44,230 --> 00:30:46,396 Ние не знаем колко входове там ще бъде. 596 00:30:46,396 --> 00:30:53,560 Така че, ако се вгледаме в примера трясък, казваме звън пробив о здравей hello.c. 597 00:30:53,560 --> 00:30:56,710 В този конкретен случай, там се случи да бъде три аргументи от командния ред. 598 00:30:56,710 --> 00:31:00,522 И така brackets-- ще видим в секунда няма да е три. 599 00:31:00,522 --> 00:31:01,730 Това технически е четири. 600 00:31:01,730 --> 00:31:04,030 Но скобите, бихме да речем, има три. 601 00:31:04,030 --> 00:31:08,220 Но сега, ако ние погледна ход mario.c точка точка, конзолите 602 00:31:08,220 --> 00:31:09,760 ние ще искате да сложите две в тях. 603 00:31:09,760 --> 00:31:12,884 >> И има много от команди, които има променлив брой на командния ред 604 00:31:12,884 --> 00:31:13,620 аргументи. 605 00:31:13,620 --> 00:31:17,430 Така че това, когато тази версия на скоба нотация показва 606 00:31:17,430 --> 00:31:20,820 е, че argv е масив от низове. 607 00:31:20,820 --> 00:31:24,360 Но ние не знаем колко струни са в този масив. 608 00:31:24,360 --> 00:31:27,090 И как можем тогава знаете как много струни са в масива? 609 00:31:27,090 --> 00:31:28,870 Това е цялата точка argc. 610 00:31:28,870 --> 00:31:32,300 argc ни казва колко дълго argv е. 611 00:31:32,300 --> 00:31:36,500 >> Така че последното нещо, което да съхранява в ума е, че, технически, 612 00:31:36,500 --> 00:31:40,820 самата команда брои за един на аргументите на командния ред. 613 00:31:40,820 --> 00:31:45,330 Така сд pset1, има две аргументи от командния ред. 614 00:31:45,330 --> 00:31:50,260 Програмата сама по себе си, сд, и след това действителния аргумент на част от него, pset1. 615 00:31:50,260 --> 00:31:54,490 Всяка програма, която си написал до този момент е имал един команден ред argument-- дот 616 00:31:54,490 --> 00:31:55,320 Слаш Mario. 617 00:31:55,320 --> 00:31:57,350 Това е аргумент само от команден ред. 618 00:31:57,350 --> 00:32:00,900 >> Така че сега гледа трясък блъскам о здравей hello.c. 619 00:32:00,900 --> 00:32:01,905 Така че това, което е argc? 620 00:32:01,905 --> 00:32:05,260 621 00:32:05,260 --> 00:32:06,080 4. 622 00:32:06,080 --> 00:32:08,140 Така argc е 4. 623 00:32:08,140 --> 00:32:12,140 Звън, така argv скоба 0 е трясък. 624 00:32:12,140 --> 00:32:15,630 argv скоба 1 е пробив 0. 625 00:32:15,630 --> 00:32:21,870 argv скоба 2 е здравей, и argv скоба 3 е hello.c. 626 00:32:21,870 --> 00:32:26,813 ОК, така че въпроси за тази, и след това ще разгледаме някои програмни примери. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> ДОБРЕ. 629 00:32:30,480 --> 00:32:36,260 Така че ние ще разгледаме най hello3.c. 630 00:32:36,260 --> 00:32:41,890 Така че това трябва да е запознат от един от първите в примерите 631 00:32:41,890 --> 00:32:45,800 имахме, когато ние просто ще кажа, здравей свят, но сега това е по-общ. 632 00:32:45,800 --> 00:32:52,300 Така че тук ние казваме здравей % и наклонена черта п argv скоба 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- така нагоре до този момент, това е това, което ми се е шаблонен файл приличаше. 634 00:32:57,440 --> 00:33:01,800 Имах инт главната (недействителни), и след това бих направи нещо в основната функция. 635 00:33:01,800 --> 00:33:05,100 Сега вместо това, след като ние започнем да се занимаваме с аргументи от командния ред, 636 00:33:05,100 --> 00:33:07,890 ние трябва да се посочва различна форма на основната. 637 00:33:07,890 --> 00:33:11,930 >> Така че гледаш hello3 отново, основните върви 638 00:33:11,930 --> 00:33:15,990 да вземе два аргумента now-- инт argc, броят на аргументи от командния ред, 639 00:33:15,990 --> 00:33:20,970 и струнен argv скоби, действителното струни, вписани в командния ред. 640 00:33:20,970 --> 00:33:26,560 Така че аз отивам да се промени, че шаблон, за да отрази този факт. 641 00:33:26,560 --> 00:33:29,060 Сега, когато ви пиша програма, ако не го направите 642 00:33:29,060 --> 00:33:33,720 трябва да се вземат всяка от командния ред аргументи, тогава просто използвайте инт главната (недействителни). 643 00:33:33,720 --> 00:33:37,070 Но сега, когато пишете програми аргумент от командния ред, които 644 00:33:37,070 --> 00:33:40,350 започваш да се прави за проблем зададете two-- така че сега, че сте стартирали 645 00:33:40,350 --> 00:33:42,630 програми, които трябва да се вземат аргументи от командния ред, 646 00:33:42,630 --> 00:33:45,250 вие трябва да имате основна на тази форма. 647 00:33:45,250 --> 00:33:51,290 >> Така here-- това е голям използване Аргументът на командния ред. 648 00:33:51,290 --> 00:33:54,100 Така отпечатване argv 1. 649 00:33:54,100 --> 00:33:59,180 OK така че нека да компилирате и стартирате тази програма. 650 00:33:59,180 --> 00:34:02,440 Направи hello3. 651 00:34:02,440 --> 00:34:03,570 Обобщава. 652 00:34:03,570 --> 00:34:06,870 Dot наклонена черта hello3. 653 00:34:06,870 --> 00:34:08,920 И нека да кажем, "Роб." 654 00:34:08,920 --> 00:34:10,760 Hello Роб. 655 00:34:10,760 --> 00:34:14,940 Ако кажа, "Здравей Мария," Здравей Мария. 656 00:34:14,940 --> 00:34:15,719 Здравей Мария. 657 00:34:15,719 --> 00:34:18,639 Хана все още се казва, "здравей Maria ", защото аз не съм 658 00:34:18,639 --> 00:34:21,340 прави нищо с нашия argv 2. 659 00:34:21,340 --> 00:34:22,590 Argv 2 сега ще бъде "Хана". 660 00:34:22,590 --> 00:34:25,030 Argc ще бъде 3. 661 00:34:25,030 --> 00:34:27,735 Какво става, ако съм направил това? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 Така здравей нищожна. 664 00:34:34,679 --> 00:34:38,760 >> Той за кратко докосна на факта, че, технически, GetString 665 00:34:38,760 --> 00:34:42,429 може да върне нула, но ще получите много повече в това, което е нищожна в действителност. 666 00:34:42,429 --> 00:34:47,449 Но го приемам като въпрос на Фактът, че не е общо лошо. 667 00:34:47,449 --> 00:34:50,179 Ние направихме нещо нередно, ако това е печат на "здравей нула." 668 00:34:50,179 --> 00:34:52,179 И причината ние направихме Нещо не е наред is-- добре, 669 00:34:52,179 --> 00:34:56,179 когато аз се завтече дот наклонена черта hello3, argc беше 1. 670 00:34:56,179 --> 00:34:59,680 Това значи, че дължината на argv беше 1. 671 00:34:59,680 --> 00:35:05,110 Ако масив е с дължина 1, единствената валидна индекса е нула. 672 00:35:05,110 --> 00:35:08,550 И така, тук argv 1 е извън обхвата на този масив. 673 00:35:08,550 --> 00:35:13,410 Той е подобен на преди, когато се опитах за съхранение на 6 извън края на масива. 674 00:35:13,410 --> 00:35:18,100 Така че аз се опитвам да получите достъп до нещо извън броят на argv, 675 00:35:18,100 --> 00:35:21,340 и ние получаваме нищожна. 676 00:35:21,340 --> 00:35:24,360 >> Така че по-добра версия на това подобрение, 677 00:35:24,360 --> 00:35:27,010 е изрично проверка argc. 678 00:35:27,010 --> 00:35:33,580 Така че, ако argc е равно на 2, това означава, че ние се завтече нещо като дот наклонена черта hello3 Роб. 679 00:35:33,580 --> 00:35:36,840 И тя ще отпечатва "здравей Rob." 680 00:35:36,840 --> 00:35:39,850 Ако argc не е равно 2, а след това просто ще 681 00:35:39,850 --> 00:35:42,560 да не обръща внимание, каквото и да сложи по аргумент на командния ред 682 00:35:42,560 --> 00:35:43,960 като аргументи от командния ред. 683 00:35:43,960 --> 00:35:47,168 Или ако не е пускал такива изобщо, това е просто ще игнорира това и просто да кажа, 684 00:35:47,168 --> 00:35:47,960 "Здравей." 685 00:35:47,960 --> 00:35:51,490 >> Така че съставянето на този. 686 00:35:51,490 --> 00:35:54,500 Направи hello4. 687 00:35:54,500 --> 00:35:56,790 И работи hello4. 688 00:35:56,790 --> 00:36:00,010 Това по този начин за бягане, това, което трябва да бъде отпечатан? 689 00:36:00,010 --> 00:36:01,330 "Здравей." 690 00:36:01,330 --> 00:36:02,810 Здравей. 691 00:36:02,810 --> 00:36:05,870 Какво ще кажете за hello4 Роб? 692 00:36:05,870 --> 00:36:06,950 "Hello Rob." 693 00:36:06,950 --> 00:36:10,580 И най-накрая, здравейте Rob Maria е просто "здравей You" отново, 694 00:36:10,580 --> 00:36:13,677 защото не сте наистина въведете нещо, което го очаква. 695 00:36:13,677 --> 00:36:15,510 Въвели сте повече имена отколкото може да се справи, 696 00:36:15,510 --> 00:36:19,500 така че просто да просрочва Здравейте на вас поведение. 697 00:36:19,500 --> 00:36:23,040 Така че въпроси за тази? 698 00:36:23,040 --> 00:36:26,290 Или аргументи от командния ред? 699 00:36:26,290 --> 00:36:28,690 >> ОК, така че като се погледнете в още няколко примери за използване 700 00:36:28,690 --> 00:36:34,230 командния ред arguments-- първа ние сме argv тире 1 точка в. 701 00:36:34,230 --> 00:36:38,510 Така че коментарите раздават какво тази програма трябва да се прави. 702 00:36:38,510 --> 00:36:42,460 Но забележете now-- това за цикъл, Това съвпада точно модела 703 00:36:42,460 --> 00:36:43,390 Казах преди. 704 00:36:43,390 --> 00:36:46,240 Ние просто се случи да бъде използване argc вместо N. 705 00:36:46,240 --> 00:36:48,880 Сега argc е наистина п. 706 00:36:48,880 --> 00:36:51,260 Това е дължината на argv масива. 707 00:36:51,260 --> 00:36:59,600 Така се итерации над argv масив ФОРМАТ-ING всяка argv стойност. 708 00:36:59,600 --> 00:37:04,730 >> Така че, ако направя това. 709 00:37:04,730 --> 00:37:08,232 Направи argv 1. 710 00:37:08,232 --> 00:37:09,940 Той обобщава. 711 00:37:09,940 --> 00:37:11,620 Dot наклонена черта argv 1. 712 00:37:11,620 --> 00:37:15,530 Просто използвате това, разпечатки са разпръснати наклонена черта argv 1 713 00:37:15,530 --> 00:37:18,500 тъй като това е единственият командния ред argument-- името на програмата. 714 00:37:18,500 --> 00:37:22,080 Винаги ще бъдете в least-- argc не може да бъде по-малко от една, 715 00:37:22,080 --> 00:37:25,910 тъй като там винаги ще най-малко да бъде името на програмата да се изпълнява. 716 00:37:25,910 --> 00:37:32,040 Така argv 1 Rob ще отпечата argv 1 и след това на новата линия "Роб." 717 00:37:32,040 --> 00:37:36,350 >> Така в първата итерация на този цикъл, аз е 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 е името на програмата. 719 00:37:39,090 --> 00:37:40,010 Dot наклонена черта argv 1. 720 00:37:40,010 --> 00:37:43,770 И тогава argv 1 е първият ми аргумент на командния ред, което е Роб. 721 00:37:43,770 --> 00:37:45,920 В този момент, ние сме равни на argc. 722 00:37:45,920 --> 00:37:48,210 Ние се измъкнат от примката и сме готови. 723 00:37:48,210 --> 00:37:53,940 Така че това ще работи за произволна брой аргументи от командния ред. 724 00:37:53,940 --> 00:37:58,550 Забележете, той отпечатва argv 0, argv 1, 2 argv, argv 3, 4 argv. 725 00:37:58,550 --> 00:38:00,150 И няма argv 5. 726 00:38:00,150 --> 00:38:01,460 argc е равно на 5. 727 00:38:01,460 --> 00:38:06,960 Така че най-argc-- най аз се равнява на 5, ние се измъкнат от примката. 728 00:38:06,960 --> 00:38:07,950 ДОБРЕ. 729 00:38:07,950 --> 00:38:11,315 Така интересува, че преди ние разгледаме един по-сложен пример? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Така argv 2. 732 00:38:16,860 --> 00:38:17,830 Всичко е наред. 733 00:38:17,830 --> 00:38:20,610 Така че ние сме все още отпечатване аргументите на командния ред. 734 00:38:20,610 --> 00:38:23,170 Но сега забележите имаме вложено за контур. 735 00:38:23,170 --> 00:38:24,670 И така, какво е това правиш? 736 00:38:24,670 --> 00:38:28,430 Така че първата линия се справя точно това, което го е направил преди. 737 00:38:28,430 --> 00:38:30,950 Ние все още използваме цикъл всеки аргумент на командния ред, 738 00:38:30,950 --> 00:38:34,260 но сега това второ loop-- ние сме също виждал нещо подобно преди. 739 00:38:34,260 --> 00:38:38,600 Когато той е бил над итерации Zamyla отпечатване Z-A-M-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 Така че този втори контур за инт й се равнява 0, п е равно strlen на argv скоба аз. 741 00:38:44,816 --> 00:38:49,170 >> Така че нека първо да мисля за the-- нека да ходи сам. 742 00:38:49,170 --> 00:38:53,560 Нека да помислим какво би компютъра направя, ако аз се завтече тази програма, както току-що Дот 743 00:38:53,560 --> 00:38:56,030 Слаш argv тире 2. 744 00:38:56,030 --> 00:39:03,590 Така че, ако аз се завтече този код, а след това argc ще бъде равен на 1. 745 00:39:03,590 --> 00:39:07,050 И низ argv-- има само ще бъде един форум в argv, 746 00:39:07,050 --> 00:39:12,370 и това ще бъде равна на Дот Слаш argv 2-- името на програмата. 747 00:39:12,370 --> 00:39:19,170 >> ОК, така че сега аз равна на 0, аз по-малко от 1, т плюс плюс за инт й е равна на 0, 748 00:39:19,170 --> 00:39:23,880 п е равно strlen на argv скоба 0, така че в първото повторение на този цикъл. argv 749 00:39:23,880 --> 00:39:27,250 скоба 0 е точка наклонена черта argv 2. 750 00:39:27,250 --> 00:39:29,320 Така че това, което е дължината на този низ? 751 00:39:29,320 --> 00:39:32,480 Е, точка, наклонена черта A-R-G-V тире 2. 752 00:39:32,480 --> 00:39:35,020 Така strlen на която ще бъде 8. 753 00:39:35,020 --> 00:39:37,500 Така J е 0, п е равно на 8. 754 00:39:37,500 --> 00:39:39,530 Докато й е по-малко от 8, J ++. 755 00:39:39,530 --> 00:39:44,080 И с това ние ще се отпечатване на един символ, който 756 00:39:44,080 --> 00:39:47,350 е argv скоба аз попадне й. 757 00:39:47,350 --> 00:39:49,826 >> Така че единственият I е равна на нула. 758 00:39:49,826 --> 00:39:51,700 Ние все още само една аргумент от командния ред. 759 00:39:51,700 --> 00:39:53,890 В тази първа итерация на линия за, ние сме 760 00:39:53,890 --> 00:39:56,950 ще бъде печат argv скоба скоба 0 0. 761 00:39:56,950 --> 00:39:58,325 И тогава й се случва да увеличите. 762 00:39:58,325 --> 00:40:01,650 И ние ще печат argv скоба 0 скоба 1. 763 00:40:01,650 --> 00:40:04,150 И тогава argv скоба 0 скоба 2. 764 00:40:04,150 --> 00:40:09,030 >> Така че това е първата ни среща на многомерни масиви. 765 00:40:09,030 --> 00:40:12,770 Не забравяйте, че по-рано казах че argv е технически 766 00:40:12,770 --> 00:40:15,950 масив от масиви от символи. 767 00:40:15,950 --> 00:40:24,360 Така че тук, ако кажа нещо подобно низ и се равнява на argv скоба аз, 768 00:40:24,360 --> 00:40:29,590 и тогава казах, а скобата й, това ще бъде осъществяването на едно и също нещо. 769 00:40:29,590 --> 00:40:31,960 Сега, вие сте виждали и скобата й преди. 770 00:40:31,960 --> 00:40:36,680 Това е просто достъп до к-ти характер на тази струна. 771 00:40:36,680 --> 00:40:48,010 Така че с това, ние сме все по к-ти характер на аз-ти argv. 772 00:40:48,010 --> 00:40:51,450 >> Така че това, което трябва в крайна сметка този изход? 773 00:40:51,450 --> 00:40:53,210 Направи argv 2. 774 00:40:53,210 --> 00:40:54,730 Той обобщава. 775 00:40:54,730 --> 00:40:56,340 Dot наклонена черта argv 2. 776 00:40:56,340 --> 00:41:03,790 "Rob Maria Хана" и да ни даде някаква стая. 777 00:41:03,790 --> 00:41:07,050 Така ние виждаме, че това е извеждане точка на отделен ред и наклонена черта 778 00:41:07,050 --> 00:41:08,920 по своя собствена линия и по своя собствена линия. 779 00:41:08,920 --> 00:41:11,260 Той е извън всяко отпечатване индивидуален характер 780 00:41:11,260 --> 00:41:12,950 на всеки аргумент на командния ред. 781 00:41:12,950 --> 00:41:15,960 И тогава между тях, защото на тази нова линия 782 00:41:15,960 --> 00:41:19,380 ние сме отпечатване тук долу, в между тях, че ще отпечата на нов ред. 783 00:41:19,380 --> 00:41:24,540 >> Така че това е подобно на предварителното argv таблото 1, 784 00:41:24,540 --> 00:41:26,459 които отпечатват всяка аргумент на командния ред, 785 00:41:26,459 --> 00:41:28,500 но сега ние сме отпечатване аргументите на командния ред 786 00:41:28,500 --> 00:41:31,950 и след това итерации през всеки характера на всеки аргумент на командния ред 787 00:41:31,950 --> 00:41:35,400 за да получите този изход. 788 00:41:35,400 --> 00:41:36,870 ДОБРЕ? 789 00:41:36,870 --> 00:41:40,570 Така че въпроси за тази? 790 00:41:40,570 --> 00:41:45,130 >> Едно нещо е да се отбележи, е, че командния ред arguments-- 791 00:41:45,130 --> 00:41:49,990 така че те са разделени с интервали като вие естествено ще очакваме от тях да бъде. 792 00:41:49,990 --> 00:41:53,050 Така низ може да има празни места в него. 793 00:41:53,050 --> 00:41:57,380 Това не е супер важно, но ако аз Исках аргумент трета от командния ред 794 00:41:57,380 --> 00:42:01,226 да има място в него, тогава аз Може да се каже нещо подобно. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 ДОБРЕ? 797 00:42:05,550 --> 00:42:12,190 Така че това сега все още има само трима командния ред arguments-- и 4. 798 00:42:12,190 --> 00:42:17,620 Dot наклонена черта argv тире 2, Роб, Мария и Хана Bloomberg. 799 00:42:17,620 --> 00:42:18,320 ДОБРЕ. 800 00:42:18,320 --> 00:42:19,310 Въпроси за това? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Няма нищо по-специално за космически характер. 803 00:42:24,894 --> 00:42:27,810 Тя просто се случва да бъде, че командния ред третира пространството характер 804 00:42:27,810 --> 00:42:29,226 като как се разделят всеки аргумент. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 Всичко е наред. 807 00:42:33,000 --> 00:42:39,950 Така че тогава Проблем набор two-- ти започваш да бъде 808 00:42:39,950 --> 00:42:43,240 погледнете в тайна-ключ, криптография. 809 00:42:43,240 --> 00:42:47,700 Така, подобен на този пример видяхме от A Christmas Story, 810 00:42:47,700 --> 00:42:52,840 започваш да се прилагането на някои алгоритми, които, дадени съобщение, 811 00:42:52,840 --> 00:42:55,560 започваш да бъде в състояние за криптиране на това съобщение 812 00:42:55,560 --> 00:42:58,730 че само някой с този таен ключ, с който декодер пръстен, 813 00:42:58,730 --> 00:43:01,090 трябва да бъде в състояние да разшифрова. 814 00:43:01,090 --> 00:43:04,839 >> Така че това е стандартната версия. 815 00:43:04,839 --> 00:43:07,130 Ще бъдат изпълнение две различни версии. 816 00:43:07,130 --> 00:43:09,620 Ако се случи да погледнете в хакер издание на предприятието, 817 00:43:09,620 --> 00:43:12,600 отиваме да даде можете низ като този, 818 00:43:12,600 --> 00:43:15,240 което представлява криптирана парола. 819 00:43:15,240 --> 00:43:19,990 Така че вашата цел е да разбера каква е разшифрован парола. 820 00:43:19,990 --> 00:43:26,950 Сега това е всъщност как пароли се съхраняват в много от компютри, 821 00:43:26,950 --> 00:43:31,290 и то просто съхранява тази случаен низ от символи. 822 00:43:31,290 --> 00:43:34,440 Трябва да разбера как да получите от този случаен низ от символи 823 00:43:34,440 --> 00:43:36,140 до каква беше първоначалната парола. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> И накрая, след това проблем набор, вие трябва 826 00:43:43,290 --> 00:43:46,100 да е в състояние да разбере какво означава това. 827 00:43:46,100 --> 00:43:51,650 Така ще се научите как да дешифрирате този вид на низ. 828 00:43:51,650 --> 00:43:56,390 По същия начин, ако си спомняте от седмица 0, може да си видял този URL. 829 00:43:56,390 --> 00:44:00,210 И би трябвало да можете да разшифровате това в крайна сметка. 830 00:44:00,210 --> 00:44:04,810 Може да не се радваме, когато го разшифрова и кликнете върху линка. 831 00:44:04,810 --> 00:44:05,700 Всичко е наред. 832 00:44:05,700 --> 00:44:06,591 Това е всичко за днес. 833 00:44:06,591 --> 00:44:12,095 Така се видим следващата седмица! 834 00:44:12,095 --> 00:44:18,315 >> [ELECTRONIC за възпроизвеждане на музика] 835 00:44:18,315 --> 00:47:15,619