1 00:00:08,119 --> 00:00:11,630 [Powered by Google Translate] Дейвид Дж. Малан: Добре, това е CS50, и това е 2 00:00:11,630 --> 00:00:14,790 началото на седмица две. 3 00:00:14,790 --> 00:00:16,300 Благодаря. 4 00:00:16,300 --> 00:00:19,000 Нека започнем тук с едно телефонно обаждане. 5 00:00:19,000 --> 00:00:30,005 Аз съм за да наберете шестстотин и седемнадесет милиона BUG-CS50. 6 00:00:30,005 --> 00:00:31,230 CS50: Това е CS50. 7 00:00:31,230 --> 00:00:33,930 За Shuttle Boy, натиснете 1. 8 00:00:33,930 --> 00:00:36,660 Да започне отначало, натиснете 9. 9 00:00:36,660 --> 00:00:38,180 Дейвид Дж. Малан: Така каза той за Shuttle Boy, натиснете 1. 10 00:00:38,180 --> 00:00:41,560 Така че отиваме да натиснете 1. 11 00:00:41,560 --> 00:00:43,230 CS50: Какъв е вашия произход? 12 00:00:43,230 --> 00:00:45,340 За четворни, натиснете 1. 13 00:00:45,340 --> 00:00:47,080 Mather, натиснете 2. 14 00:00:47,080 --> 00:00:49,240 Boylston, натиснете 3. 15 00:00:49,240 --> 00:00:51,280 Ламонт, натиснете 4. 16 00:00:51,280 --> 00:00:53,210 Държавите зала, натиснете 5. 17 00:00:53,210 --> 00:00:55,660 Да започне отначало, натиснете 0. 18 00:00:55,660 --> 00:00:59,590 Дейвид Дж. Малан: Ще натиснете 1 за четириядрени. 19 00:00:59,590 --> 00:01:03,610 CS50: Следваща совалката оставя това много минути в 1:10 PM и 20 00:01:03,610 --> 00:01:09,820 след това в 13:20, 13:30, 13:40. 21 00:01:09,820 --> 00:01:12,030 Това е CS50. 22 00:01:12,030 --> 00:01:15,570 >> Дейвид Дж. Малан: Така че това е глас CS50. 23 00:01:15,570 --> 00:01:18,030 И това е един пример от сортовете на окончателните проекти, 24 00:01:18,030 --> 00:01:19,500 Например, можете да отхапват към 25 00:01:19,500 --> 00:01:20,600 края на семестъра. 26 00:01:20,600 --> 00:01:23,840 Например, че shuttleboy.cs50.net съществува - 27 00:01:23,840 --> 00:01:28,200 всъщност е проект, който за първи път се пише след като CS51 28 00:01:28,200 --> 00:01:29,740 назад, когато бях студент. 29 00:01:29,740 --> 00:01:32,250 И вдъхновение тук беше тогава, всички те са имали 30 00:01:32,250 --> 00:01:34,320 печатните графици автобус и не е имало 31 00:01:34,320 --> 00:01:35,970 идеята да гледаш на нещата онлайн. 32 00:01:35,970 --> 00:01:38,730 И така, аз вид на гълъб в един уикенд, изсипва през 33 00:01:38,730 --> 00:01:41,460 отпечатва график, както и преминаване към компютърна програма. 34 00:01:41,460 --> 00:01:43,790 По това време се случи компютърната програма да бъде написана 35 00:01:43,790 --> 00:01:47,110 С. И всъщност тя се завтече като напишете Shuttle Boy 36 00:01:47,110 --> 00:01:48,600 мига подкани като сме правили до този момент. 37 00:01:48,600 --> 00:01:50,450 Но с течение на годините той се превърна в един миг 38 00:01:50,450 --> 00:01:51,390 съобщения бот. 39 00:01:51,390 --> 00:01:53,970 Тя се разви по-скоро в този сайт, в едно 40 00:01:53,970 --> 00:01:57,720 SMS-базиран инструмент, както и в този глас-базиран инструмент. 41 00:01:57,720 --> 00:02:00,170 И това е да намекват за всякакви неща, които можете да 42 00:02:00,170 --> 00:02:02,380 направите за себе си до края на семестъра. 43 00:02:02,380 --> 00:02:05,490 >> Например, там, версията SMS на Shuttle Boy се случва 44 00:02:05,490 --> 00:02:06,510 да работи по следния начин. 45 00:02:06,510 --> 00:02:10,880 Ако на мобилния си телефон, можете да изпратите текстово съобщение до 41411 и 46 00:02:10,880 --> 00:02:14,300 след това да изпрати специален sboy символ, за Shuttle Boy, 47 00:02:14,300 --> 00:02:18,350 последвано от А и Б, където А е произход и Б е 48 00:02:18,350 --> 00:02:19,070 дестинация - 49 00:02:19,070 --> 00:02:21,030 например, Boylston Space Quad - 50 00:02:21,030 --> 00:02:23,330 какво трябва да се върне в рамките на няколко секунди е текст 51 00:02:23,330 --> 00:02:25,820 съобщение от Shuttle Boy ви казвам точно кога 52 00:02:25,820 --> 00:02:28,990 следващите няколко совалки, от тази гледна точка за това 53 00:02:28,990 --> 00:02:29,640 точка Б. 54 00:02:29,640 --> 00:02:32,510 И това е един по-общ пример за това, което е известно като 55 00:02:32,510 --> 00:02:33,920 с помощта на API. 56 00:02:33,920 --> 00:02:36,930 >> Така например, това тук е просто shuttleboy.cs50.net, 57 00:02:36,930 --> 00:02:39,300 действителната уеб-базиран въплъщение на тази. 58 00:02:39,300 --> 00:02:42,480 Но данните, които подчертават този и други приложения, които CS50 59 00:02:42,480 --> 00:02:45,560 е разработила са изложени на всички тук под формата 60 00:02:45,560 --> 00:02:49,340 APIs, приложни програмни интерфейси. 61 00:02:49,340 --> 00:02:52,220 И това е само един луксозен начин на казвайки, че хората ни харесва 62 00:02:52,220 --> 00:02:56,010 Интернет и други са прекарали известно време в създаване на 63 00:02:56,010 --> 00:02:59,970 софтуер, който можете да използвате, за да вземете данните от нас и 64 00:02:59,970 --> 00:03:02,510 след това да изградят свои собствени приложения на върха 65 00:03:02,510 --> 00:03:03,840 на този набор от данни. 66 00:03:03,840 --> 00:03:06,610 Така например, тази Shuttle Boy страница API, което 67 00:03:06,610 --> 00:03:09,390 се случва да бъде в ръководството CS50 по същество документи 68 00:03:09,390 --> 00:03:13,080 как можете да отидете да попитате CS50 сървъри за данни. 69 00:03:13,080 --> 00:03:16,240 Например, ако сте запознати с CSV файлове, разделени със запетая 70 00:03:16,240 --> 00:03:18,940 стойности, разделени, те са просто бърз и мръсен 71 00:03:18,940 --> 00:03:20,310 Excel подобни файлове. 72 00:03:20,310 --> 00:03:23,110 Така че може да поиска трансфер Момче за всички данни по всеки един от 73 00:03:23,110 --> 00:03:25,090 къщи и техните GPS координати, и вие ще получите 74 00:03:25,090 --> 00:03:27,300 обратно, по същество, електронна таблица като тази, че 75 00:03:27,300 --> 00:03:30,820 След това можете да прочетете в програмата на собствения си и след това 76 00:03:30,820 --> 00:03:33,250 генерира резултати, като Shuttle Boy 77 00:03:33,250 --> 00:03:34,160 се случва да се прави. 78 00:03:34,160 --> 00:03:37,030 За тези по-познати, по-модерни представителства на данни 79 00:03:37,030 --> 00:03:39,420 JSON, JavaScript Object Notation. 80 00:03:39,420 --> 00:03:40,620 Нещо ще се върне към вас 81 00:03:40,620 --> 00:03:41,720 края на семестъра. 82 00:03:41,720 --> 00:03:45,440 >> Но отново, това е само един от няколко от APIs CS50. 83 00:03:45,440 --> 00:03:48,320 Вълнуващото нещо е сега, тези дни, Facebook и 84 00:03:48,320 --> 00:03:51,110 Twitter и Google, както и почти всеки популярен уеб сайт от 85 00:03:51,110 --> 00:03:54,130 там има някакво API, което означава, че ако прочетете 86 00:03:54,130 --> 00:03:56,620 документация на уебсайта си, можете да се регистрирате за 87 00:03:56,620 --> 00:03:59,980 сметка, след това можете да започнете да пишете софтуер на върха на 88 00:03:59,980 --> 00:04:03,680 каквато и да е инструменти или данни, които компанията предлага. 89 00:04:03,680 --> 00:04:06,210 И така, един от нашите собствени сътрудници на преподаване няколко години назад 90 00:04:06,210 --> 00:04:07,620 пише Mac версия на този. 91 00:04:07,620 --> 00:04:10,990 Така че връзката Mac тук горе в ляво, всъщност можете да 92 00:04:10,990 --> 00:04:13,940 изтегляне на Mac OS джаджа, която работи на вашия собствен Mac да направи 93 00:04:13,940 --> 00:04:15,040 същите видове на нещата. 94 00:04:15,040 --> 00:04:17,970 Така че всичко е въпрос на изграждане на върха на набори от данни като тези. 95 00:04:17,970 --> 00:04:21,839 Но повече за това към края на семестъра. 96 00:04:21,839 --> 00:04:25,780 >> Така че нека да се потопите по-бързо на бъг, просто някак да се 97 00:04:25,780 --> 00:04:27,990 неща затоплена днес, и мисля, обратно на някои от 98 00:04:27,990 --> 00:04:29,660 неща погледна миналата седмица. 99 00:04:29,660 --> 00:04:32,840 По-специално, нека вървим напред и издърпайте нагоре, да речем, 100 00:04:32,840 --> 00:04:34,080 този пример тук. 101 00:04:34,080 --> 00:04:37,500 Buggy1.c, това е на разположение на интернет страницата на курса, ако искате 102 00:04:37,500 --> 00:04:40,250 искал да го изтеглите и да мушкам около себе си. 103 00:04:40,250 --> 00:04:43,520 Но нека да я увеличите тук, в тази сравнително кратка програма, а просто 104 00:04:43,520 --> 00:04:46,550 супер-бърз обзор на някои от основните градивни елементи, които 105 00:04:46,550 --> 00:04:48,880 ние наистина ще започнете да приемате за даденост. 106 00:04:48,880 --> 00:04:51,860 >> Така синята неща, в редове от 1 до 9, са само 107 00:04:51,860 --> 00:04:53,670 софтбол въпроси. 108 00:04:53,670 --> 00:04:54,590 Така че това са само коментари. 109 00:04:54,590 --> 00:04:56,230 Те нямат функционално значение. 110 00:04:56,230 --> 00:04:58,460 Но те са коментари в смисъл, че те са отбелязва, че 111 00:04:58,460 --> 00:05:02,010 I, човека, за себе си, така че в лекция и след 112 00:05:02,010 --> 00:05:04,340 лекция, всъщност мога да си спомня какво тази програма 113 00:05:04,340 --> 00:05:07,120 прави, без да се налага да четете през него линия по ред и 114 00:05:07,120 --> 00:05:08,990 пресъздаване на историята в съзнанието ми. 115 00:05:08,990 --> 00:05:11,000 Освен това, ако в ръка тази програма на някой друг като 116 00:05:11,000 --> 00:05:14,420 вас, това е много по-ясни за вас, защото коментари като този, 117 00:05:14,420 --> 00:05:16,680 какво всъщност прави програмата, или поне това, което 118 00:05:16,680 --> 00:05:18,210 програма е трябвало да се прави. 119 00:05:18,210 --> 00:05:20,760 Дали това е вярно или не е съвсем друг въпрос. 120 00:05:20,760 --> 00:05:25,040 Сега, в C, с многоредови коментари, се припомни, че он-лайн 121 00:05:25,040 --> 00:05:27,880 тук е магически символ, / *. 122 00:05:27,880 --> 00:05:30,380 Това означава, че тук идва началото на коментар. 123 00:05:30,380 --> 00:05:34,560 И нищо друго няма значение, докато не стигнат до края терминатор, 124 00:05:34,560 --> 00:05:36,700 което е * /, точно обратното. 125 00:05:36,700 --> 00:05:39,120 Така че самият факт, че имам 80-тук от някои странни звезди 126 00:05:39,120 --> 00:05:41,550 ляво на дясно наистина е просто естетически детайл. 127 00:05:41,550 --> 00:05:43,370 Той няма функционално значение. 128 00:05:43,370 --> 00:05:44,490 >> Сега какво ще кажеш за линия 11? 129 00:05:44,490 --> 00:05:46,940 Какво означава това в други думи? 130 00:05:51,560 --> 00:05:52,540 Какво е това? 131 00:05:52,540 --> 00:05:54,280 ПУБЛИКАТА: Включва стандарт. 132 00:05:54,280 --> 00:05:54,740 Дейвид Дж. Малан: Добре, добре. 133 00:05:54,740 --> 00:05:57,500 Така че това включва stdio.h библиотека. 134 00:05:57,500 --> 00:05:58,230 И така, какво означава това? 135 00:05:58,230 --> 00:06:01,570 Е, вътре в този файл, stdio.h са цял куп 136 00:06:01,570 --> 00:06:03,320 декларации на функциите - 137 00:06:03,320 --> 00:06:05,290 че е код, че някой друг е написал. 138 00:06:05,290 --> 00:06:08,160 И перфектен пример за функция, която е обявена в 139 00:06:08,160 --> 00:06:10,250 stdio.h - 140 00:06:10,250 --> 00:06:11,980 които фаворит до сега? 141 00:06:11,980 --> 00:06:14,300 Така ФОРМАТ, един от най-често срещаните да се използва, разбира се 142 00:06:14,300 --> 00:06:15,840 по-рано, от тази библиотека е там. 143 00:06:15,840 --> 00:06:19,290 Ако изключа тази линия на код, звъня да крещи 144 00:06:19,290 --> 00:06:22,550 ми нещо за използването на недеклариран символ. 145 00:06:22,550 --> 00:06:24,930 Недекларирани Нещо, което вероятно е ключовата дума, защото 146 00:06:24,930 --> 00:06:27,770 ние не са информирали компилатор ФОРМАТ изглежда 147 00:06:27,770 --> 00:06:29,230 искали, освен ако не включват тази линия. 148 00:06:29,230 --> 00:06:31,830 И още на Земята, наистина, това, което тази линия се казва, е 149 00:06:31,830 --> 00:06:34,890 отвори този файл, stdio.h, където и да се намира на сървъра 150 00:06:34,890 --> 00:06:38,200 твърд диск или твърд диск на уреда и копиране и поставяне 151 00:06:38,200 --> 00:06:40,240 точно там в досието ми, без да ми 152 00:06:40,240 --> 00:06:41,730 се налага да направите това ръчно. 153 00:06:41,730 --> 00:06:44,420 >> Сега, след като сме се тук до основното, не след дълго ние ще започнем 154 00:06:44,420 --> 00:06:46,900 подигравателен освен вътр и това, което е нищожно. 155 00:06:46,900 --> 00:06:48,430 Но за сега, нека погледнем трите линии 156 00:06:48,430 --> 00:06:50,350 в рамките на 15 до 17. 157 00:06:50,350 --> 00:06:52,250 Това тук аз твърдя, като бъги. 158 00:06:52,250 --> 00:06:54,900 Линия 7 в коментарите ми казва "трябва да отпечата 10 159 00:06:54,900 --> 00:06:59,410 звездички, но не го прави. "Защо това не се отпечатват, в действителност, 160 00:06:59,410 --> 00:07:01,097 10 такива звезди? 161 00:07:01,097 --> 00:07:02,347 ПУБЛИКАТА: недоловим. 162 00:07:05,210 --> 00:07:05,800 Дейвид Дж. Малан: Точно така. 163 00:07:05,800 --> 00:07:08,720 Така че забележите, че започва да брои от 0. 164 00:07:08,720 --> 00:07:10,780 И това е всъщност конвенция в програмирането и 165 00:07:10,780 --> 00:07:13,230 компютърни науки в по-общ план, като се започне да се брои 166 00:07:13,230 --> 00:07:14,610 от 0 вместо 1. 167 00:07:14,610 --> 00:07:16,690 И това наистина просто произтича от факта, че за 168 00:07:16,690 --> 00:07:18,940 Например, когато имахме осем души на сцената, когато 169 00:07:18,940 --> 00:07:20,680 никой не е повишаване на тяхната страна, те са 170 00:07:20,680 --> 00:07:22,340 всички ефективно нули. 171 00:07:22,340 --> 00:07:24,260 И така, това е просто вид на компютъра конвенция така, 172 00:07:24,260 --> 00:07:26,030 следователно, да започнем да броим от 0. 173 00:07:26,030 --> 00:07:29,130 Ако това е най-малък брой могат да се представят в двоичен. 174 00:07:29,130 --> 00:07:32,270 >> Така че тук сме започнали и инициализиране на 0. 175 00:07:32,270 --> 00:07:34,230 Сме аз равна на 0. 176 00:07:34,230 --> 00:07:37,780 Но тогава аз направих тази грешка тук, да кажа, че е по-малко от или 177 00:07:37,780 --> 00:07:38,820 равна на 10. 178 00:07:38,820 --> 00:07:41,700 Но ако смятате, че, ако започват от 0 и тогава ще отида 179 00:07:41,700 --> 00:07:46,410 до 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, аз съм всъщност ще 180 00:07:46,410 --> 00:07:49,980 отпечатате 11 звезди на екрана, защото съм качил 181 00:07:49,980 --> 00:07:52,410 до и равен на 10. 182 00:07:52,410 --> 00:07:55,090 Така лесно определят тук е какво? 183 00:07:55,090 --> 00:07:56,070 ПУБЛИКАТА: недоловим. 184 00:07:56,070 --> 00:07:57,350 Дейвид Дж. Малан: Просто го смените с по-малко от. 185 00:07:57,350 --> 00:07:59,700 Ако наистина искате, можете да направите това. 186 00:07:59,700 --> 00:08:01,370 Но като цяло, това е те гледат накриво. 187 00:08:01,370 --> 00:08:04,020 И така, започва да брои от 0 е просто нещо, което трябва 188 00:08:04,020 --> 00:08:05,510 обикновено се използва. 189 00:08:05,510 --> 00:08:07,810 Сега, какво ще кажеш за цялата тази конструкция и на себе си? 190 00:08:07,810 --> 00:08:10,640 Тази линия 15 demarks за контур. 191 00:08:10,640 --> 00:08:12,510 Така че не е функция. 192 00:08:12,510 --> 00:08:13,640 Това е просто изявление. 193 00:08:13,640 --> 00:08:16,180 Това е примка конструкция, както видяхме в Scratch. 194 00:08:16,180 --> 00:08:17,600 И тя има три части. 195 00:08:17,600 --> 00:08:19,740 Забележете, че там е първата част 196 00:08:19,740 --> 00:08:21,350 ляво на точка и запетая. 197 00:08:21,350 --> 00:08:24,200 Има средната част между двете точка и запетая. 198 00:08:24,200 --> 00:08:26,250 И тогава там е дясната част на дясно 199 00:08:26,250 --> 00:08:27,640 на втората точка и запетая. 200 00:08:27,640 --> 00:08:31,822 Сега, първото от тях какво прави? 201 00:08:31,822 --> 00:08:33,679 ПУБЛИКАТА: недоловим. 202 00:08:33,679 --> 00:08:34,270 Дейвид Дж. Малан: Назад там? 203 00:08:34,270 --> 00:08:34,816 Да? 204 00:08:34,816 --> 00:08:35,980 ПУБЛИКАТА: Инициализация. 205 00:08:35,980 --> 00:08:36,850 >> Дейвид Дж. Малан: Инициализация. 206 00:08:36,850 --> 00:08:37,840 И така, какво означава това? 207 00:08:37,840 --> 00:08:40,690 Обявен за променлива се обадих. 208 00:08:40,690 --> 00:08:43,840 Тя е от тип Int, защото съм посочено вътр аз. 209 00:08:43,840 --> 00:08:46,470 И аз съм инициализиране на стойност 0. 210 00:08:46,470 --> 00:08:47,730 И така, какво е това наистина да кажеш? 211 00:08:47,730 --> 00:08:50,680 Ефективно казва компютъра хей, дай ми достатъчно 212 00:08:50,680 --> 00:08:53,660 памет, достатъчно RAM, за да се вмести в брой, а след това поставете 213 00:08:53,660 --> 00:08:56,130 номер 0 в това парче на RAM. 214 00:08:56,130 --> 00:08:59,100 И като настрана, колко голяма е едно цяло число обикновено, най-малко вътре 215 00:08:59,100 --> 00:09:00,280 на уреда? 216 00:09:00,280 --> 00:09:01,000 Аудитория: 32 бита. 217 00:09:01,000 --> 00:09:01,670 Дейвид Дж. Малан: 32 бита. 218 00:09:01,670 --> 00:09:04,890 Така че това означава, че ми даде 32 бита, иначе известни като четири байта, 219 00:09:04,890 --> 00:09:07,250 и постави стойност 0 в нея, което е доста лесно, защото 220 00:09:07,250 --> 00:09:09,110 Това просто означава всички части до 0. 221 00:09:09,110 --> 00:09:11,690 >> Така че сега, втората част е състоянието. 222 00:09:11,690 --> 00:09:14,590 И състояние, както подсказва и името, е това, което се проверява 223 00:09:14,590 --> 00:09:18,100 отново и отново и отново, дали това е вярно или невярно. 224 00:09:18,100 --> 00:09:21,410 Така че това е просто казвам направите следните редове код - 225 00:09:21,410 --> 00:09:23,950 а именно линия 16, защото това е само отстъп 226 00:09:23,950 --> 00:09:24,820 отдолу - 227 00:09:24,820 --> 00:09:26,980 толкова дълго, колкото е по-малко от 10. 228 00:09:26,980 --> 00:09:30,520 И след всяка итерация през този цикъл, направете 229 00:09:30,520 --> 00:09:33,840 incrementation, което в този случай е + +. 230 00:09:33,840 --> 00:09:35,580 Сега, тя не трябва да бъде I + +. 231 00:09:35,580 --> 00:09:37,610 Това бих могъл да бъда. 232 00:09:37,610 --> 00:09:39,860 Но ако го направя това, какво поведение ще 233 00:09:39,860 --> 00:09:41,370 да бъде на тази програма? 234 00:09:41,370 --> 00:09:42,290 Аудитория: Това ще бъде един безкраен цикъл. 235 00:09:42,290 --> 00:09:44,060 Дейвид Дж. Малан: Това ще бъде някакъв безкраен цикъл, 236 00:09:44,060 --> 00:09:47,720 освен ако имаме късмет, след отрицателен 2 милиарда, или така. 237 00:09:47,720 --> 00:09:51,320 Може би нещата ще обгърне, просто от природата на крайните 238 00:09:51,320 --> 00:09:53,930 броя на битовете, които са разпределени за вътр. 239 00:09:53,930 --> 00:09:56,270 Но това със сигурност ще обхождане много повече от 10 и 240 00:09:56,270 --> 00:09:58,630 със сигурност повече от 11 пъти. 241 00:09:58,630 --> 00:10:02,240 >> И сега, точно както настрана, осъзнавам, че съм + + и аз - 242 00:10:02,240 --> 00:10:04,420 наистина са синтактична захар. 243 00:10:04,420 --> 00:10:07,210 Това е просто краткия запис на това, което е малко повече 244 00:10:07,210 --> 00:10:08,720 изрично е записано, както следва: 245 00:10:08,720 --> 00:10:11,200 I = I + 1. 246 00:10:11,200 --> 00:10:13,460 Това е идентично да съм + +. 247 00:10:13,460 --> 00:10:15,860 Тя просто вид изглежда по-хубава да кажа, че + +. 248 00:10:15,860 --> 00:10:17,490 Това е по-кратка, по-разбираеми. 249 00:10:17,490 --> 00:10:19,030 И така правят повечето хора, че вместо. 250 00:10:19,030 --> 00:10:21,840 Но това е идентичен функционално 251 00:10:21,840 --> 00:10:22,900 това, което току-що видяхме. 252 00:10:22,900 --> 00:10:27,770 Така че по-кратко, бързо решение тук е просто да кажа, че обхождане 253 00:10:27,770 --> 00:10:30,690 от 0 по целия път до по-малко от 10. 254 00:10:30,690 --> 00:10:32,700 И тогава наистина ще получите 10 звезди. 255 00:10:32,700 --> 00:10:33,430 >> Така че нека опитаме това. 256 00:10:33,430 --> 00:10:35,310 Нека се отвори терминала в долната част. 257 00:10:35,310 --> 00:10:37,420 Позволете ми да отидете в директорията, че това е инча 258 00:10:37,420 --> 00:10:40,030 И аз отивам да го компилирате ръчно с звъня за сега. 259 00:10:40,030 --> 00:10:44,880 И аз отивам за съставянето на настоящия като buggy1.c, Въведете. 260 00:10:44,880 --> 00:10:50,280 И сега buggy1, защо няма такъв файл или директория 261 00:10:50,280 --> 00:10:52,026 нарича buggy1? 262 00:10:52,026 --> 00:10:53,850 ПУБЛИКАТА: недоловим. 263 00:10:53,850 --> 00:10:54,240 Дейвид Дж. Малан: Да. 264 00:10:54,240 --> 00:10:55,420 Така че това всъщност се нарича a.out. 265 00:10:55,420 --> 00:10:57,480 Така припомни, ако просто звъня, където звъня 266 00:10:57,480 --> 00:11:00,420 компилатор и не укажете името, което искате да 267 00:11:00,420 --> 00:11:03,550 даде на вашата програма, това ще да фалира a.out. 268 00:11:03,550 --> 00:11:05,030 Така че наистина, ако го направя ли - 269 00:11:05,030 --> 00:11:05,510 Опа. 270 00:11:05,510 --> 00:11:07,680 И аз не. - Черно-бяло въпрос някои от 271 00:11:07,680 --> 00:11:08,840 срещнаха е фиксиран. 272 00:11:08,840 --> 00:11:10,670 Но позволете ми да направя това. 273 00:11:10,670 --> 00:11:14,570 Там имаме a.out на лявата страна. 274 00:11:14,570 --> 00:11:17,360 Така че ние трябва да тичам a.out вместо buggy1. 275 00:11:17,360 --> 00:11:19,140 >> Така че нека да вървим напред и да направите това. 276 00:11:19,140 --> 00:11:22,840 . / A.out Enter. 277 00:11:22,840 --> 00:11:26,160 И аз очевидно не съм направил какво? 278 00:11:26,160 --> 00:11:26,620 ПУБЛИКАТА: Save. 279 00:11:26,620 --> 00:11:27,390 Дейвид Дж. Малан: Спаси ми файл. 280 00:11:27,390 --> 00:11:31,520 Така че това се решава лесно като натиснете Control S, или ще 281 00:11:31,520 --> 00:11:33,450 File, Save, като в повечето програми. 282 00:11:33,450 --> 00:11:36,360 Нека отида тук, изчистване на екрана, стартирайте го отново. 283 00:11:36,360 --> 00:11:37,960 И все още има бъг. 284 00:11:37,960 --> 00:11:41,618 Така че това, което се случва - 285 00:11:41,618 --> 00:11:42,980 ПУБЛИКАТА: Вие не се компилира. 286 00:11:42,980 --> 00:11:44,040 Дейвид Дж. Малан: А, добре. 287 00:11:44,040 --> 00:11:45,010 Аз не го компилирате. 288 00:11:45,010 --> 00:11:47,250 Като идиот, аз търся код, за да видим какво не е наред. 289 00:11:47,250 --> 00:11:51,275 Така ехтя buggy1.c, сега a.out. 290 00:11:51,275 --> 00:11:52,640 Пфу, спаси. 291 00:11:52,640 --> 00:11:55,090 >> Така че изглежда малко грозно, защото няма нова линия 292 00:11:55,090 --> 00:11:55,970 навсякъде в програмата. 293 00:11:55,970 --> 00:11:57,390 Но отново, това е просто естетически детайл. 294 00:11:57,390 --> 00:11:59,430 И поне ако броим тези, трябва да се 295 00:11:59,430 --> 00:12:01,160 сега да видим 10 такива звезди. 296 00:12:01,160 --> 00:12:03,260 Е, какво за този втори загряване пример? 297 00:12:03,260 --> 00:12:07,750 Така че през buggy2, аз твърдя, че тази версия, също ще се отпечата 298 00:12:07,750 --> 00:12:10,110 10 звезди, една на ред. 299 00:12:10,110 --> 00:12:12,340 Така че този път, аз имам един символ за нов ред, само за да 300 00:12:12,340 --> 00:12:13,520 нещата малко по-красива. 301 00:12:13,520 --> 00:12:15,410 Но вместо това, което получавате, е това. 302 00:12:15,410 --> 00:12:19,590 Така че позволете ми да направя ехтя buggy2.c Enter. 303 00:12:19,590 --> 00:12:21,790 Сега тя отново призова a.out. 304 00:12:21,790 --> 00:12:23,130 Enter. 305 00:12:23,130 --> 00:12:26,900 Виждам само една нова линия, само последния нов ред, че 306 00:12:26,900 --> 00:12:29,370 се движи моя ред на следващия ред. 307 00:12:29,370 --> 00:12:32,660 И все пак ясно съм бил печат *, а след това на нов ред, 308 00:12:32,660 --> 00:12:33,990 *, След което на нов ред. 309 00:12:33,990 --> 00:12:35,490 Но каква е грешката тук? 310 00:12:35,490 --> 00:12:35,974 Да? 311 00:12:35,974 --> 00:12:37,224 ПУБЛИКАТА: недоловим. 312 00:12:39,850 --> 00:12:40,470 >> Дейвид Дж. Малан: Точно така. 313 00:12:40,470 --> 00:12:44,110 Така че, за разлика от някои езици, като Python, където вдлъбнатина 314 00:12:44,110 --> 00:12:46,030 всъщност има функционално значение, в 315 00:12:46,030 --> 00:12:47,150 език като C - 316 00:12:47,150 --> 00:12:49,140 както ще видим, PHP, JavaScript - 317 00:12:49,140 --> 00:12:51,940 вдлъбнатината е наистина само в полза на хората ". 318 00:12:51,940 --> 00:12:55,690 Така че самият факт, че съм отстъп линия 16 и 17 изглежда страхотно, 319 00:12:55,690 --> 00:12:57,530 но няма функционално значение тук. 320 00:12:57,530 --> 00:13:00,700 Ако искам двете линии да се изпълни като част от 321 00:13:00,700 --> 00:13:05,140 контур, тогава аз трябва да ги приложат във фигурни скоби по този начин. 322 00:13:05,140 --> 00:13:08,540 Можете само да намали този ъгъл и да пропусне фигурни скоби, ако 323 00:13:08,540 --> 00:13:10,036 какъв е случая? 324 00:13:10,036 --> 00:13:10,410 АУДИТОРИЯ: Само един ред. 325 00:13:10,410 --> 00:13:11,130 Дейвид Дж. Малан: Само един ред. 326 00:13:11,130 --> 00:13:15,280 Така че това е просто хубав вид на синтаксиса подробно, така че 327 00:13:15,280 --> 00:13:17,900 че не губете време в писане на три линии, две от които са 328 00:13:17,900 --> 00:13:20,040 фигурни скоби, просто да напише един ред код. 329 00:13:20,040 --> 00:13:21,650 Но ако имате две или повече линии, ние 330 00:13:21,650 --> 00:13:22,860 наистина трябва да направите това. 331 00:13:22,860 --> 00:13:24,210 >> Така че сега да ме спаси. 332 00:13:24,210 --> 00:13:27,140 Нека вървим напред и изпълнете отново звъня. 333 00:13:27,140 --> 00:13:31,375 Тогава нека повторение a.out, а сега ги получи по една на ред. 334 00:13:31,375 --> 00:13:33,670 Сега, a.out отново е вид тъпо име за програмата. 335 00:13:33,670 --> 00:13:37,500 Как мога да разбера звъня да ми даде име на файла 336 00:13:37,500 --> 00:13:39,820 че е по-лесен за употреба, като buggy2 себе си? 337 00:13:43,200 --> 00:13:44,466 А малко по-ясно? 338 00:13:44,466 --> 00:13:45,220 ПУБЛИКАТА: недоловим. 339 00:13:45,220 --> 00:13:47,810 Дейвид Дж. Малан: Добре, така че аз всъщност може да вземе много 340 00:13:47,810 --> 00:13:51,000 лесен за употреба прекия път и просто напишете buggy2. 341 00:13:51,000 --> 00:13:53,840 Аз не се уточнява в. в този случай, и натиснете Enter. 342 00:13:53,840 --> 00:13:58,530 И това, което прави прави е за мен от съставя buggy2.c 343 00:13:58,530 --> 00:14:00,260 пита звъня да го направя. 344 00:14:00,260 --> 00:14:05,100 По-конкретно, призовава звъня, той работи звъня се използват много по- 345 00:14:05,100 --> 00:14:08,540 аргументи от командния ред или комутатори, отколкото всъщност трябва. 346 00:14:08,540 --> 00:14:11,270 С течение на времето, ние ще се върнем към това, което всички тези различни 347 00:14:11,270 --> 00:14:13,810 загадъчни с тирета изрази средства. 348 00:14:13,810 --> 00:14:16,910 Но за сега, че току-що ме спаси неприятности на 349 00:14:16,910 --> 00:14:19,600 се налага да помните и да пишете на всички тези 350 00:14:19,600 --> 00:14:21,150 различни с тирета изрази. 351 00:14:21,150 --> 00:14:23,240 И главата от него в крайна сметка е 352 00:14:23,240 --> 00:14:25,900 че сега имам buggy2. 353 00:14:25,900 --> 00:14:27,480 Ако искам да направите това ръчно, все пак, 354 00:14:27,480 --> 00:14:28,775 може вместо това да направите това - 355 00:14:28,775 --> 00:14:34,110 ехтя-о buggy2 и след това buggy2.c. 356 00:14:34,110 --> 00:14:37,980 И това също ще ми даде файл, наречен buggy2. 357 00:14:37,980 --> 00:14:39,710 >> Така че по-кратко, звъня компилатор. 358 00:14:39,710 --> 00:14:43,080 Уверете се, е само лесен за употреба инструмент, който ще се използва по- 359 00:14:43,080 --> 00:14:44,420 и повече, защото тя просто започва да 360 00:14:44,420 --> 00:14:47,330 опрости нещата за нас. 361 00:14:47,330 --> 00:14:49,430 И се връщаме 0 накрая. 362 00:14:49,430 --> 00:14:51,890 За сега, само защото, но ние ще започнем подигравателен тази част 363 00:14:51,890 --> 00:14:52,930 днес и в сряда. 364 00:14:52,930 --> 00:14:55,560 Всички въпроси на който и да е от това? 365 00:14:55,560 --> 00:14:56,450 Да? 366 00:14:56,450 --> 00:14:58,234 ПУБЛИКАТА: недоловим] 367 00:14:58,234 --> 00:15:00,020 ли в кавички там? 368 00:15:00,020 --> 00:15:01,710 Дейвид Дж. Малан: OK. 369 00:15:01,710 --> 00:15:05,880 Когато написах в кавички ли, че ми правят някаква магия 370 00:15:05,880 --> 00:15:07,160 зад кулисите, за да се определи бъг. 371 00:15:07,160 --> 00:15:09,370 Забравих, като сме казвали много от вас 372 00:15:09,370 --> 00:15:11,600 дискусионните форуми, да се направи - 373 00:15:11,600 --> 00:15:17,220 ние ще направим това сега - Sudo Yum-Y актуализация appliance50. 374 00:15:17,220 --> 00:15:19,790 Опа, че това, написани. 375 00:15:19,790 --> 00:15:23,240 Така че уредът е като операционна система. 376 00:15:23,240 --> 00:15:25,650 Тази операционна система, наречена Fedora. 377 00:15:25,650 --> 00:15:27,450 И сега заради бавния интернет връзката ми, имам 378 00:15:27,450 --> 00:15:28,260 наистина го промиват. 379 00:15:28,260 --> 00:15:31,620 Така че Sudo Yum актуализация, тъй като ние ви казвам да се направи в 380 00:15:31,620 --> 00:15:34,080 набор проблем, по същество е като бягане автоматични актуализации 381 00:15:34,080 --> 00:15:35,420 в Mac OS или Windows. 382 00:15:35,420 --> 00:15:37,280 И причината за използването на този в самото начало на 383 00:15:37,280 --> 00:15:39,640 проблема се е така, защото, когато ние създадохме уреда, 384 00:15:39,640 --> 00:15:42,480 объркан, и аз случайно всички ваши програми изглеждат 385 00:15:42,480 --> 00:15:45,210 черно на черен екран, поради което не ги виждам 386 00:15:45,210 --> 00:15:45,860 по подразбиране. 387 00:15:45,860 --> 00:15:48,020 Но най-новата версия на уреда определя това. 388 00:15:48,020 --> 00:15:50,500 И аз ще се определи, че по време на почивка, след като имам интернет 389 00:15:50,500 --> 00:15:51,280 свързаност. 390 00:15:51,280 --> 00:15:54,630 >> Така кавичките крие моя грешка, много дискретно, 391 00:15:54,630 --> 00:15:55,730 очевидно. 392 00:15:55,730 --> 00:15:56,980 Други въпроси? 393 00:15:59,750 --> 00:16:00,668 Да? 394 00:16:00,668 --> 00:16:02,012 ПУБЛИКАТА: Къде прави идват от? 395 00:16:02,012 --> 00:16:03,810 [Недоловим] 396 00:16:03,810 --> 00:16:04,280 Дейвид Дж. Малан: Добър въпрос. 397 00:16:04,280 --> 00:16:05,460 Когато прави? 398 00:16:05,460 --> 00:16:09,390 Това е Linux програма, която е съществувала в продължение на много години, дълго 399 00:16:09,390 --> 00:16:10,570 преди CS50. 400 00:16:10,570 --> 00:16:12,930 И той идва с операционна система като Fedora. 401 00:16:12,930 --> 00:16:14,830 Той не идва от библиотеката CS50. 402 00:16:14,830 --> 00:16:17,560 Всъщност, единствените неща, които идват от библиотеката CS50 403 00:16:17,560 --> 00:16:20,470 до този момент, че сме виждали, са GetString, GetInt, всички 404 00:16:20,470 --> 00:16:25,550 тези Вземи функции, и на низ дума, и до известна 405 00:16:25,550 --> 00:16:26,575 степен думата булев. 406 00:16:26,575 --> 00:16:29,180 Но ние ще се дразни, че освен, когато се потопите в CS50 407 00:16:29,180 --> 00:16:30,580 уреда. 408 00:16:30,580 --> 00:16:32,820 >> Така че, да, още един въпрос тук. 409 00:16:32,820 --> 00:16:36,636 ПУБЛИКАТА: Като казахте, правят и след това бъги, как 410 00:16:36,636 --> 00:16:39,980 компютър знаеш [недоловим]? 411 00:16:39,980 --> 00:16:40,520 Дейвид Дж. Малан: Добър въпрос. 412 00:16:40,520 --> 00:16:43,830 Така че, когато просто да buggy1 или да направите buggy2, как 413 00:16:43,830 --> 00:16:45,220 прави знаеш? 414 00:16:45,220 --> 00:16:49,900 Така че по подразбиране, ако въведете направи buggy1, да търси 415 00:16:49,900 --> 00:16:52,330 файл, наречен buggy1.c. 416 00:16:52,330 --> 00:16:55,570 И тогава той изпълнява съответните команди звъня 417 00:16:55,570 --> 00:17:00,380 като по този начин се преодолява файл по подразбиране продукция, наречена a.out. 418 00:17:00,380 --> 00:17:03,670 Всъщност, ако се вгледаме в това, което правят, какво 419 00:17:03,670 --> 00:17:04,839 да се откажат от това. 420 00:17:04,839 --> 00:17:09,530 Ако се вгледаме в това, което правят всъщност прави, да buggy2 421 00:17:09,530 --> 00:17:10,470 това е вече към днешна дата. 422 00:17:10,470 --> 00:17:13,020 Така че нека да премахнете RM команда, 423 00:17:13,020 --> 00:17:14,319 програма писах преди. 424 00:17:14,319 --> 00:17:17,319 Въвеждане на Y-E-S, за да потвърдите, че искате да го премахнете. 425 00:17:17,319 --> 00:17:20,480 Ако аз сега правят, забележете, че в тази много дълга линия, 426 00:17:20,480 --> 00:17:22,980 е това последното нещо, което тук-о buggy2. 427 00:17:22,980 --> 00:17:26,959 Всичко да се прави минава този аргумент, така да се каже, за да 428 00:17:26,959 --> 00:17:29,665 Звъня, така че аз не трябва да си го напишете. 429 00:17:29,665 --> 00:17:32,660 >> Добре, така че бързо няколко административни 430 00:17:32,660 --> 00:17:33,470 съобщения. 431 00:17:33,470 --> 00:17:36,940 Така че за участъци, които официално започна този смешен 432 00:17:36,940 --> 00:17:38,970 Неделя, винаги ще искате да се въвеждат, ако 433 00:17:38,970 --> 00:17:40,120 имате един лаптоп. 434 00:17:40,120 --> 00:17:42,570 Ако не разполагате с лаптоп, постигнат от мен 435 00:17:42,570 --> 00:17:43,580 Пратете ми имейл. 436 00:17:43,580 --> 00:17:44,810 И ние ще разбера работния процес. 437 00:17:44,810 --> 00:17:47,100 Това, което обикновено ще намерите в раздел е, че те са част 438 00:17:47,100 --> 00:17:48,770 концептуално, част ръце. 439 00:17:48,770 --> 00:17:52,190 Ще специално раздела на въпроси, част от 440 00:17:52,190 --> 00:17:54,110 проблем седмица комплект, за да преминете през някои от 441 00:17:54,110 --> 00:17:55,820 концептуален материал от лекцията. 442 00:17:55,820 --> 00:17:57,480 И това е всичко в сегашния набор проблем. 443 00:17:57,480 --> 00:18:00,010 И ние ще се потопите в някои практически дейности, понякога 444 00:18:00,010 --> 00:18:02,190 от които ще се изисква да бъдат представени, понякога на 445 00:18:02,190 --> 00:18:02,830 които няма. 446 00:18:02,830 --> 00:18:04,630 Така например, тази първа седмица, те са замислени само като 447 00:18:04,630 --> 00:18:05,780 загряване упражнения. 448 00:18:05,780 --> 00:18:07,800 И вие ще откриете, че тези проблеми са наистина точно това. 449 00:18:07,800 --> 00:18:10,220 Те са замислени да бъдат сравнително малки, но не непременно 450 00:18:10,220 --> 00:18:13,100 тривиални програми, да се пишат, които не са непременно 451 00:18:13,100 --> 00:18:16,230 вълнуващи и на себе си, но са добри възможности за 452 00:18:16,230 --> 00:18:19,620 практикува с синтаксис, с нови функции, в уюта на 453 00:18:19,620 --> 00:18:21,900 секция, където имате няколко от съучениците си представят като 454 00:18:21,900 --> 00:18:22,870 както си TF. 455 00:18:22,870 --> 00:18:26,210 >> И какво ще направим с течение на времето се използва инструмент, наречен CS50 пространства, 456 00:18:26,210 --> 00:18:28,940 като вместо само с помощта на CS50 техника, ще 457 00:18:28,940 --> 00:18:32,450 вместо да отидете на уеб страница в браузъра, където ще бъде в състояние 458 00:18:32,450 --> 00:18:35,610 да пишат код в прозореца на браузъра по време на раздел. 459 00:18:35,610 --> 00:18:38,240 И тогава, ако се включите в другаря си учение може да се покаже 460 00:18:38,240 --> 00:18:40,980 каквото и да пишете на вашия екран във вашия браузър 461 00:18:40,980 --> 00:18:43,930 прозорец в предната част на класа, независимо дали анонимно или 462 00:18:43,930 --> 00:18:47,250 публично, така че той или тя може да преминете през с 463 00:18:47,250 --> 00:18:50,080 съучениците си, какво си направил добре, това, което не е добре. 464 00:18:50,080 --> 00:18:52,750 И отново, бъдете сигурни, всичко това може да бъде добре анонимни. 465 00:18:52,750 --> 00:18:54,410 Но това ще бъде прекрасна възможност за много повече 466 00:18:54,410 --> 00:18:56,810 интерактивност от нещо като лекция позволява. 467 00:18:56,810 --> 00:18:58,910 >> В същото време, ние ще имаме тези неща, наречени супер 468 00:18:58,910 --> 00:19:01,610 секции, които не са задължителни, но са отворени за всички 469 00:19:01,610 --> 00:19:04,030 класа, така че можете да направите това по-колективно 470 00:19:04,030 --> 00:19:05,190 проблем зададете една. 471 00:19:05,190 --> 00:19:06,010 Ето графика. 472 00:19:06,010 --> 00:19:08,870 Това също е публикуван на началната страница на cs50.net. 473 00:19:08,870 --> 00:19:10,850 Забележете, че там ще бъде хакер специфичен 474 00:19:10,850 --> 00:19:12,430 една утре следобед. 475 00:19:12,430 --> 00:19:15,460 И ние ще снимат днес и утре и след тези 476 00:19:15,460 --> 00:19:16,720 онлайн в рамките на 24 часа. 477 00:19:16,720 --> 00:19:19,370 Така че не, ако не можете да направите някое от тези времена, да се притеснявате. 478 00:19:19,370 --> 00:19:22,720 И отново, графикът е на линия в cs50.net. 479 00:19:22,720 --> 00:19:25,350 >> По отношение на себе си, разделящ, трябва да са придобили 480 00:19:25,350 --> 00:19:28,520 имейл с инструкции да отидете на началната страница на курса, за да се намери 481 00:19:28,520 --> 00:19:29,610 вашето раздел. 482 00:19:29,610 --> 00:19:32,890 Ако животът се е променил и трябва да промените вашата секция, 483 00:19:32,890 --> 00:19:33,560 не е проблем. 484 00:19:33,560 --> 00:19:37,900 Върни се, че един и същ URL, cs50.net/section, единствено число, 485 00:19:37,900 --> 00:19:40,090 и ще попълват подобна форма, така че можете да 486 00:19:40,090 --> 00:19:41,260 след това ни даде предпочитанията си. 487 00:19:41,260 --> 00:19:43,360 И ние ще следваме до края на седмицата, като на това, което можем да 488 00:19:43,360 --> 00:19:44,240 настанят. 489 00:19:44,240 --> 00:19:49,530 Миналата седмица се припомни, че ние предложихме CS50 Обсъждане 490 00:19:49,530 --> 00:19:51,370 обсъждане на курса инструмент, в лекция. 491 00:19:51,370 --> 00:19:53,680 Така че ние трябваше 40 въпроса, които бяха зададени и 492 00:19:53,680 --> 00:19:54,720 отговори по време на лекция. 493 00:19:54,720 --> 00:19:56,280 Така че изглежда да работи добре, така че ние ще продължим 494 00:19:56,280 --> 00:19:57,180 опитват да направят това. 495 00:19:57,180 --> 00:19:59,600 Ако по време на лекция, не само се чувстват комфортно на осведомеността 496 00:19:59,600 --> 00:20:00,780 ръката си, не е проблем. 497 00:20:00,780 --> 00:20:04,640 Отиди на cs50.net/discuss, пишете там, и един от нашето учение 498 00:20:04,640 --> 00:20:07,270 сътрудници или ще му отговори по електронен път или повишаване на тяхната 499 00:20:07,270 --> 00:20:10,620 ръка от ваше име анонимно да попитам, в зависимост 500 00:20:10,620 --> 00:20:12,470 от естеството на въпроса. 501 00:20:12,470 --> 00:20:15,000 И по отношение на обратната връзка, обикновено psets ще бъде 502 00:20:15,000 --> 00:20:16,760 върната в рамките на една седмица. 503 00:20:16,760 --> 00:20:19,080 Защото това отнема малко време, за раздели, за да се постигне 504 00:20:19,080 --> 00:20:22,430 равновесие, първо pset, 0 и 1, ще бъде малко 505 00:20:22,430 --> 00:20:24,130 забавени, тъй като нещата се успокоят. 506 00:20:24,130 --> 00:20:27,130 Но очаквайте, че в идните седмици. 507 00:20:27,130 --> 00:20:29,750 >> Добре, така че нека ме постави на моята сериозна 508 00:20:29,750 --> 00:20:31,040 глас само за миг. 509 00:20:31,040 --> 00:20:32,690 Така че това всъщност е интересен климат да бъде 510 00:20:32,690 --> 00:20:35,210 като тази дискусия, това, което с всички други неща 511 00:20:35,210 --> 00:20:37,310 става на територията на колежа, свързани с тях. 512 00:20:37,310 --> 00:20:40,220 Но CS50 определено имаше своята история на този конкретен 513 00:20:40,220 --> 00:20:43,360 тема, колкото всяка година, този курс, за много 514 00:20:43,360 --> 00:20:46,910 години, рекламни бордове около 3% на класа. 515 00:20:46,910 --> 00:20:51,620 Това най-новата година, 2011, CS50 Ad-качва 35 студенти. 516 00:20:51,620 --> 00:20:54,120 Това не е, мисля, че поради липсата на яснота. 517 00:20:54,120 --> 00:20:56,760 Осъзнайте, че в учебната програма на курса, има страница на 518 00:20:56,760 --> 00:20:59,020 обяснение, където линиите са. 519 00:20:59,020 --> 00:21:01,350 Същата декларация се повтаря на всеки един от 520 00:21:01,350 --> 00:21:03,070 проблем поставя на първа страница. 521 00:21:03,070 --> 00:21:05,760 >> Така че говорим за това днес наистина само за да 522 00:21:05,760 --> 00:21:07,030 хора, водени от грижата за това. 523 00:21:07,030 --> 00:21:08,080 И ние Опитах различни неща. 524 00:21:08,080 --> 00:21:10,630 И това, което решихме, че ще направим днес е просто отделете малко време, за да 525 00:21:10,630 --> 00:21:13,830 действително изглежда на някои от последните случаи, които са дошли. 526 00:21:13,830 --> 00:21:16,160 Вместо да се държи като малка мръсна тайна, всъщност 527 00:21:16,160 --> 00:21:19,170 точка, това, което студентите са направили и как сме открити 528 00:21:19,170 --> 00:21:21,630 и наистина основната мотивация е 529 00:21:21,630 --> 00:21:23,950 дори да водим този разговор. 530 00:21:23,950 --> 00:21:27,060 Така че с това каза, линията по същество е това - 531 00:21:27,060 --> 00:21:29,200 на учебната програма, вие сте добре дошли, вие се насърчават, за да се 532 00:21:29,200 --> 00:21:30,210 говори със съучениците си. 533 00:21:30,210 --> 00:21:31,910 Това е цялата цел като тези съвместни 534 00:21:31,910 --> 00:21:34,470 работно време в Annenberg и насърчаване на хората за 535 00:21:34,470 --> 00:21:35,755 окончателния проект да работим заедно. 536 00:21:35,755 --> 00:21:38,590 Но да теглим чертата, когато дойде време наистина да пиша 537 00:21:38,590 --> 00:21:39,790 вашето окончателно решение. 538 00:21:39,790 --> 00:21:42,590 Говорейки на английски език, напълно добре, говори в псевдо код, 539 00:21:42,590 --> 00:21:43,400 напълно добре. 540 00:21:43,400 --> 00:21:46,340 Изпращане по имейл на свой съученик pset, да ги гледам през 541 00:21:46,340 --> 00:21:48,610 екрана, ръцете продължите да пишете, 542 00:21:48,610 --> 00:21:50,110 над линията, както добре. 543 00:21:50,110 --> 00:21:52,250 Гледайте учебната програма за отделните линии. 544 00:21:52,250 --> 00:21:55,850 >> Но само за да нарисува картина как това е за съжаление 545 00:21:55,850 --> 00:21:58,370 действителност, осъзнаваме, че има сайтове там, че 546 00:21:58,370 --> 00:22:01,490 решения от този клас и много други класове. 547 00:22:01,490 --> 00:22:04,940 Фактът, че вие ​​или около 3% от вас знаят, че то съществува 548 00:22:04,940 --> 00:22:07,240 означава, че ние знаем, че това съществува. 549 00:22:07,240 --> 00:22:09,340 Фактът, че има сайтове като този, където можете 550 00:22:09,340 --> 00:22:11,540 да плаща на някого да се прави проблемните комплекти - това е 551 00:22:11,540 --> 00:22:13,450 действителен случай, който дойде миналата година. 552 00:22:13,450 --> 00:22:15,790 Това е един сайт наречен odesk.com. 553 00:22:15,790 --> 00:22:20,090 И Тим е името на лицето, които се публикуване на 554 00:22:20,090 --> 00:22:24,580 този сайт и да попита някой, който да си върши pset 7 555 00:22:24,580 --> 00:22:25,570 този конкретен случай. 556 00:22:25,570 --> 00:22:28,350 Е, odesk.com е много Google, и ние също 557 00:22:28,350 --> 00:22:30,310 много добър в Googling. 558 00:22:30,310 --> 00:22:32,360 Тук също има сайтове - и това е по-скоро 559 00:22:32,360 --> 00:22:34,234 брутално, честно казано. 560 00:22:34,234 --> 00:22:38,050 [Смях] 561 00:22:38,050 --> 00:22:39,610 Дейвид Дж. Малан: Смешното нещо за този сайт, ако 562 00:22:39,610 --> 00:22:41,970 ви да прочетете страницата, те говорят за своята корпоративна 563 00:22:41,970 --> 00:22:44,390 култура и как обслужване на клиентите им е номер едно 564 00:22:44,390 --> 00:22:46,190 приоритет, за да сте сигурни, че вашите задачи получават 565 00:22:46,190 --> 00:22:47,890 се обърна навреме. 566 00:22:47,890 --> 00:22:50,580 >> Но в цялата му сериозност, отново на факта, че тези сайтове 567 00:22:50,580 --> 00:22:52,910 съществува, ние осъзнаваме, също са осведомени за 568 00:22:52,910 --> 00:22:53,730 тези видове сайтове. 569 00:22:53,730 --> 00:22:55,890 За да ви дам представа за това какво представлява това обикновено 570 00:22:55,890 --> 00:22:58,570 взема, ние обикновено не има големи скандали, където хората 571 00:22:58,570 --> 00:23:01,080 работят заедно по какъвто и да е вид на огромни мащаби, а по-скоро 572 00:23:01,080 --> 00:23:04,540 тези нощни моменти на слабост, където да има толкова 573 00:23:04,540 --> 00:23:07,550 много да се направи, това е 04:00 AM сте изчерпани, и вие 574 00:23:07,550 --> 00:23:09,770 мисля за себе си, добре, нека просто да погледнете в моя 575 00:23:09,770 --> 00:23:11,770 съквартирант или на моя приятел код или нещо подобно. 576 00:23:11,770 --> 00:23:14,800 И проявите на този, за съжаление включва Student 577 00:23:14,800 --> 00:23:17,640 Подаване на нещо като това и да представи Студентски B 578 00:23:17,640 --> 00:23:20,370 нещо като това, което със сигурност в един компютър 579 00:23:20,370 --> 00:23:23,830 науката клас, е изключително лесен за компютърни учени 580 00:23:23,830 --> 00:23:25,690 да се открие с софтуер. 581 00:23:25,690 --> 00:23:28,410 Това е друга често срещана парадигма, където сте вид 582 00:23:28,410 --> 00:23:31,010 работейки рамо до рамо на някой, може би говори 583 00:23:31,010 --> 00:23:32,360 Английски, само глоба, pseudocode. 584 00:23:32,360 --> 00:23:35,080 Но след това идва време, за да представят, и psets 585 00:23:35,080 --> 00:23:37,910 просто се обменят по електронната поща Dropbox или други подобни. 586 00:23:37,910 --> 00:23:41,120 Но в опит да се направи по-ясно, че това е 587 00:23:41,120 --> 00:23:44,830 какво се е случило, то това е това, което се представя. 588 00:23:44,830 --> 00:23:47,880 Това също не пътуване до добре написани парчета 589 00:23:47,880 --> 00:23:50,360 софтуер като ние всъщност трябва да се открие 590 00:23:50,360 --> 00:23:51,280 неща от този род. 591 00:23:51,280 --> 00:23:53,760 И наистина това, което правим, е изпълняване на софтуер, която сравнява всички 592 00:23:53,760 --> 00:23:55,540 Доводите срещу всички през изминалата година тази година 593 00:23:55,540 --> 00:23:57,380 изявления, срещу всичко, което намери на 594 00:23:57,380 --> 00:24:00,060 Интернет, срещу всяка работа сайт там. 595 00:24:00,060 --> 00:24:01,710 Всичко това е много автоматизирано. 596 00:24:01,710 --> 00:24:05,665 И така, ние правим това наистина в голяма справедливост на 97%, които 597 00:24:05,665 --> 00:24:07,760 наистина работят ослите им в този и в други 598 00:24:07,760 --> 00:24:11,530 класове и въвеждане в цялото това усилие, така че работата 599 00:24:11,530 --> 00:24:13,030 в крайна сметка те твърдят, е тяхната собствена. 600 00:24:13,030 --> 00:24:14,220 И мога да отида в продължение на векове. 601 00:24:14,220 --> 00:24:16,030 >> Това са само няколко от случаите на миналата година. 602 00:24:16,030 --> 00:24:19,350 Няколко студенти представиха тези файлове по същия начин за pset 2, 603 00:24:19,350 --> 00:24:22,460 3 pset, pset 4, 5, pset pset 6, pset 9. 604 00:24:22,460 --> 00:24:26,360 В този случай, това е тест 0 и през миналата година, когато двама 605 00:24:26,360 --> 00:24:29,570 студентите се представи по същия начин това изречение сред много 606 00:24:29,570 --> 00:24:32,210 други, "Искането на типа -" точка, точка, точка. 607 00:24:32,210 --> 00:24:34,530 Така че дори и в клас 600 се открие това 608 00:24:34,530 --> 00:24:36,310 на представените викторини. 609 00:24:36,310 --> 00:24:39,080 Така че по-кратко, това честно казано, аз мразя да се налага този вид 610 00:24:39,080 --> 00:24:41,300 разговор - но това е наистина съзнателно усилие 611 00:24:41,300 --> 00:24:43,540 тази година, за да се опитам да карам, че броят. 612 00:24:43,540 --> 00:24:45,650 Защото, въпреки че казваме тези неща всеки 613 00:24:45,650 --> 00:24:48,100 години, мисля, че реалността, че спря на няколко 614 00:24:48,100 --> 00:24:50,800 още секунди от обикновено и всъщност посочва, 615 00:24:50,800 --> 00:24:53,600 , че това, което може да изглежда като, нали, не е толкова голям проблем, най-малко 616 00:24:53,600 --> 00:24:56,390 мисля, че до този момент, както в справедливостта 617 00:24:56,390 --> 00:25:00,100 себе си и съучениците си тук. 618 00:25:00,100 --> 00:25:02,480 Така че, ако някога имате някакви въпроси по отношение на линията 619 00:25:02,480 --> 00:25:04,290 е просто достигне до мен лично. 620 00:25:04,290 --> 00:25:07,190 Но отговорът винаги е, напълно е подчертано в 621 00:25:07,190 --> 00:25:09,090 последната минута, парични средства в края на ден. 622 00:25:09,090 --> 00:25:11,080 Или ако това е въпрос не закъснели ден, 623 00:25:11,080 --> 00:25:12,900 честно казано, ми пишете лично. 624 00:25:12,900 --> 00:25:14,110 Ще измислим нещо. 625 00:25:14,110 --> 00:25:17,480 Моля, не постави времето си тук в Харвард изложени на риск. 626 00:25:17,480 --> 00:25:18,570 >> Сега, мисля, че трябва да се облекчи настроение, така че 627 00:25:18,570 --> 00:25:20,264 включително и тази, като на следващия слайд. 628 00:25:20,264 --> 00:25:22,770 [Смях] 629 00:25:22,770 --> 00:25:23,630 Дейвид Дж. Малан: Този сайт беше страхотно. 630 00:25:23,630 --> 00:25:24,820 Аз всъщност имам разсейва малко. 631 00:25:24,820 --> 00:25:26,330 Е това. 632 00:25:26,330 --> 00:25:29,590 И тогава това беше невероятно. 633 00:25:29,590 --> 00:25:35,190 Добре, така че мисля, че на това коте късно през нощта, когато правите 634 00:25:35,190 --> 00:25:36,040 тези решения. 635 00:25:36,040 --> 00:25:40,110 Добре, да се върнем към по-забавно и по-сериозни неща, като 636 00:25:40,110 --> 00:25:40,780 условия. 637 00:25:40,780 --> 00:25:43,900 >> Добре, говорихме за кратко за тях. 638 00:25:43,900 --> 00:25:46,080 Това е нещо, което вероятно е доста познат от 639 00:25:46,080 --> 00:25:47,260 света на надраскване. 640 00:25:47,260 --> 00:25:49,860 И в света на надраскване, имаме нужда понякога да 641 00:25:49,860 --> 00:25:51,110 отивам да вилици на пътя. 642 00:25:51,110 --> 00:25:54,840 Направите това или онова или другото нещо тук. 643 00:25:54,840 --> 00:25:58,990 И когато искаме да направим това, ние можем да използвате, в C сега, това, ако 644 00:25:58,990 --> 00:26:00,860 друго построи. 645 00:26:00,860 --> 00:26:06,420 А пък тук имаме булеви изрази. 646 00:26:06,420 --> 00:26:09,260 Например, булеви изрази тук можем да ИЛИ 647 00:26:09,260 --> 00:26:12,260 заедно, в смисъл, че имаме това състояние ИЛИ 648 00:26:12,260 --> 00:26:13,200 това състояние. 649 00:26:13,200 --> 00:26:15,100 Ние можем и заедно, в смисъл, че ние искаме да 650 00:26:15,100 --> 00:26:17,710 проверите това състояние и това условие. 651 00:26:17,710 --> 00:26:22,440 И тук имаме ключ изявление, което не е така 652 00:26:22,440 --> 00:26:26,040 подобни синтактично на тези видове условия, но 653 00:26:26,040 --> 00:26:30,160 ни позволява да правим еквивалент на ако, иначе, ако друго, ако, в противен 654 00:26:30,160 --> 00:26:34,990 , ако и други подобни, като просто ги изброява всеки отделен случай 655 00:26:34,990 --> 00:26:36,670 за всеки отделен случай. 656 00:26:36,670 --> 00:26:38,370 Така видяхме тези, които за последен път. 657 00:26:38,370 --> 00:26:40,430 И тогава ние започнахме засяга неща като вериги. 658 00:26:40,430 --> 00:26:42,070 Видяхме една от тях само преди миг. 659 00:26:42,070 --> 00:26:44,180 Но има и тези за цикъл. 660 00:26:44,180 --> 00:26:46,370 >> Например, този тук. 661 00:26:46,370 --> 00:26:50,140 Така че, докато (състояние), направете това нещо отново и отново. 662 00:26:50,140 --> 00:26:53,070 Така че фундаментално, това, което изглежда да бъде различен между настоящата 663 00:26:53,070 --> 00:26:55,760 контур и този цикъл, докато сме тук? 664 00:27:00,810 --> 00:27:05,045 Това за контур и този цикъл, докато. 665 00:27:05,045 --> 00:27:07,840 Да? 666 00:27:07,840 --> 00:27:08,800 Какво е това? 667 00:27:08,800 --> 00:27:10,050 ПУБЛИКАТА: недоловим. 668 00:27:14,632 --> 00:27:15,120 Дейвид Дж. Малан: Добре. 669 00:27:15,120 --> 00:27:17,130 Така че, като има предвид, че в контур състояние, има ясно 670 00:27:17,130 --> 00:27:17,940 още синтаксис. 671 00:27:17,940 --> 00:27:20,560 Е това инициализация, има тази актуализация. 672 00:27:20,560 --> 00:27:23,820 В една линия, докато има само това състояние. 673 00:27:23,820 --> 00:27:26,630 Така че изглежда, че това е малко сравнение спрямо 674 00:27:26,630 --> 00:27:28,770 цикъл, което означава, че ако искаме да имаме променливи и ние искаме 675 00:27:28,770 --> 00:27:30,800 да има incrementation, ние всъщност трябва да 676 00:27:30,800 --> 00:27:32,500 направи това нещо себе си. 677 00:27:32,500 --> 00:27:34,420 >> Така че нека да вървим напред и да се отворят Gedit. 678 00:27:34,420 --> 00:27:36,320 Позволете ми да преминат към уреда. 679 00:27:36,320 --> 00:27:38,110 И нека направим една бърза малък пример, че 680 00:27:38,110 --> 00:27:40,550 разграничава един от тях от другата. 681 00:27:40,550 --> 00:27:42,490 И тук в съзнанието ми, аз трябва да кажа едно нещо. 682 00:27:42,490 --> 00:27:44,120 Аз специално се споменава името Тим. 683 00:27:44,120 --> 00:27:47,740 Тим всъщност е някой, че един студент се опитаха да намерят, за да се направи 684 00:27:47,740 --> 00:27:48,680 домашните си работи за тях. 685 00:27:48,680 --> 00:27:51,280 Ние нямахме Тим в този конкретен раздел. 686 00:27:51,280 --> 00:27:53,690 Така че осъзнават, за да не разкрива един студент, той не е бил студент. 687 00:27:53,690 --> 00:27:55,720 Това беше случаен човек в интернет се правят нещата 688 00:27:55,720 --> 00:27:57,180 чрез пълномощник миналата година. 689 00:27:57,180 --> 00:27:58,670 Така че, ние откриваме, че също. 690 00:27:58,670 --> 00:28:00,630 Така че в този случай тук, позволете ми да отида напред и 691 00:28:00,630 --> 00:28:02,810 отвори нов файл. 692 00:28:02,810 --> 00:28:04,800 File, New. 693 00:28:04,800 --> 00:28:06,050 Това ми дава раздела тук. 694 00:28:06,050 --> 00:28:09,940 Позволете ми да отида напред и да го запишете като loop.c. 695 00:28:09,940 --> 00:28:11,810 Позволете ми да отида и щракнете върху Запиши. 696 00:28:11,810 --> 00:28:15,340 И тогава тук, да вървим напред и да започнете да пишете 697 00:28:15,340 --> 00:28:16,605 # Включват . 698 00:28:19,116 --> 00:28:20,520 Нека я увеличите инча 699 00:28:20,520 --> 00:28:23,410 Сега ние ще направим INT главната (нищожна). 700 00:28:23,410 --> 00:28:30,020 Сега нека да вървим напред и да направи за (INT I = 0; I < 701 00:28:30,020 --> 00:28:33,480 о, 10; I + +). 702 00:28:33,480 --> 00:28:36,620 И сега отивам да вървим напред и да се отпечатват на звездата, че 703 00:28:36,620 --> 00:28:37,890 направих по-рано. 704 00:28:37,890 --> 00:28:39,390 И след това в края на тази програма, ние просто ще 705 00:28:39,390 --> 00:28:41,130 отпечатва нов ред, просто така, че моят ред 706 00:28:41,130 --> 00:28:42,470 не изглежда всички разхвърлян. 707 00:28:42,470 --> 00:28:45,170 върне 0. 708 00:28:45,170 --> 00:28:47,610 Изглежда синтактично правилно? 709 00:28:47,610 --> 00:28:48,040 Досега. 710 00:28:48,040 --> 00:28:48,560 Така че нека да видим. 711 00:28:48,560 --> 00:28:51,290 >> Така че нека да я увеличите, в моя терминален прозорец. 712 00:28:51,290 --> 00:28:54,570 И ме пусна напред и стартирайте линия, защото нарекох тази 713 00:28:54,570 --> 00:28:55,690 нещо loop.c. 714 00:28:55,690 --> 00:28:56,780 Така че контур. 715 00:28:56,780 --> 00:28:57,840 Изглежда да съставят OK. 716 00:28:57,840 --> 00:29:00,210 Позволете ми да тичам линия, а сега Въведете. 717 00:29:00,210 --> 00:29:01,820 И изглежда, че са отпечатани 10 звезди. 718 00:29:01,820 --> 00:29:03,780 Така че нека просто превръщане на тази линия, докато и да видим какво 719 00:29:03,780 --> 00:29:05,220 видове въпроси, с които се препъвам. 720 00:29:05,220 --> 00:29:11,290 Така че, вместо това, да ме пуснеш тук и да кажа, докато аз 721 00:29:11,290 --> 00:29:12,760 по-малко от 10 - 722 00:29:12,760 --> 00:29:14,910 нека се отървем за контур. 723 00:29:14,910 --> 00:29:17,170 ОК, така че ние имаме няколко проблеми вече. 724 00:29:17,170 --> 00:29:21,110 Така че условието е същото, но аз съм очевидно липсва 725 00:29:21,110 --> 00:29:21,680 инициализация. 726 00:29:21,680 --> 00:29:23,840 Аз съм липсва incrementation. 727 00:29:23,840 --> 00:29:28,020 И така, какво трябва да компилатор вероятно да ми каже, когато се опитвам да 728 00:29:28,020 --> 00:29:29,170 съставят тази програма? 729 00:29:29,170 --> 00:29:29,666 Да? 730 00:29:29,666 --> 00:29:31,154 ПУБЛИКАТА: недоловим. 731 00:29:31,154 --> 00:29:31,650 >> Дейвид Дж. Малан: Добре. 732 00:29:31,650 --> 00:29:34,180 Така че ще каже нещо като недекларирания - в този 733 00:29:34,180 --> 00:29:35,280 случай, аз променлива. 734 00:29:35,280 --> 00:29:37,980 И наистина, използването на недеклариран и идентификатор. 735 00:29:37,980 --> 00:29:40,960 И така, това е в контраст с езици като PHP и 736 00:29:40,960 --> 00:29:43,120 Python и Ruby, с които някои от вас може да са запознати, 737 00:29:43,120 --> 00:29:44,820 , където можете просто започнете да използвате променливи 738 00:29:44,820 --> 00:29:47,420 волю-неволю и не трябва да се притеснявате за да ги декларират 739 00:29:47,420 --> 00:29:48,560 изрично винаги. 740 00:29:48,560 --> 00:29:51,770 В C и в езици като Java и C + +, което трябва да бъде 741 00:29:51,770 --> 00:29:53,020 супер изрично. 742 00:29:53,020 --> 00:29:55,760 А ако искате променлива Обадих се, вие трябва да ми кажете 743 00:29:55,760 --> 00:29:57,360 какъв вид променлива. 744 00:29:57,360 --> 00:29:59,360 Така че ние ще трябва да се определи това, както следва. 745 00:29:59,360 --> 00:30:05,510 Аз ще трябва да отида тук и въведете Int и, следователно, 746 00:30:05,510 --> 00:30:07,860 Са декларирали променлива, се обадих. 747 00:30:07,860 --> 00:30:09,180 Сега, аз пропускат една стъпка. 748 00:30:09,180 --> 00:30:11,340 Аз очевидно не съм го инициализира, но нека да видим дали, че в 749 00:30:11,340 --> 00:30:13,650 малкото прави звъня Спри да се оплакваш. 750 00:30:13,650 --> 00:30:15,770 Така че нека римейк на тази програма. 751 00:30:15,770 --> 00:30:16,770 >> Добре, сега просто се оплаква 752 00:30:16,770 --> 00:30:17,870 поради друга причина. 753 00:30:17,870 --> 00:30:21,130 "Variable" аз "е неинициализирана, когато се използва тук." Добре, така че 754 00:30:21,130 --> 00:30:22,340 това е доста изрично. 755 00:30:22,340 --> 00:30:25,510 Инициализация просто означава създаване равна на стойност. 756 00:30:25,510 --> 00:30:30,820 И ние не сме направили това, така че нека се опитам да е равна на 0. 757 00:30:30,820 --> 00:30:35,030 Сега нека се опитаме това отново и отново да стартирате звъня. 758 00:30:35,030 --> 00:30:36,140 Съставител и този път. 759 00:30:36,140 --> 00:30:37,210 И аз съм за да го стартирате. 760 00:30:37,210 --> 00:30:43,120 Но голям стар безкраен цикъл, защото съм направил 761 00:30:43,120 --> 00:30:45,530 инициализация, аз съм направил състояние, но аз никога не съм правил 762 00:30:45,530 --> 00:30:47,030 всякакъв вид на incrementation. 763 00:30:47,030 --> 00:30:48,780 И така, как мога да направя incrementation? 764 00:30:48,780 --> 00:30:51,170 Е, в последно време контур, тя се чувства като аз ще трябва 765 00:30:51,170 --> 00:30:54,180 да го направи в рамките на цикъла, защото много прилича на първата 766 00:30:54,180 --> 00:30:56,570 седмица примери за прави примка конструкции, като с 767 00:30:56,570 --> 00:30:59,040 чорапи и със самостоятелно отчитане, което трябваше да направя 768 00:30:59,040 --> 00:31:01,550 нещо в самия край, като се върна на следващия ред. 769 00:31:01,550 --> 00:31:05,040 Какво ще стане, ако отида напред и това е като + + тук? 770 00:31:05,040 --> 00:31:06,030 Нека дори не обобщава. 771 00:31:06,030 --> 00:31:06,890 Хвани ме вече. 772 00:31:06,890 --> 00:31:09,704 Какво не е наред тук? 773 00:31:09,704 --> 00:31:10,690 ПУБЛИКАТА: недоловим. 774 00:31:10,690 --> 00:31:11,770 >> Дейвид Дж. Малан: Така че това определено не е вътр. 775 00:31:11,770 --> 00:31:13,080 То аз. 776 00:31:13,080 --> 00:31:15,110 И фигурни скоби, както преди, 777 00:31:15,110 --> 00:31:16,800 Вдлъбнатината не е достатъчно. 778 00:31:16,800 --> 00:31:18,410 Така че сега съм тази конструкция. 779 00:31:18,410 --> 00:31:21,780 Така че, докато аз е по-малко от 10, отпечатайте една звезда, 780 00:31:21,780 --> 00:31:23,220 тогава аз нарастване. 781 00:31:23,220 --> 00:31:25,680 И начина, по който линия, докато работи, е, че веднага след като се удари 782 00:31:25,680 --> 00:31:29,630 дъното на цикъла, което в този случай изглежда като линия 10, 783 00:31:29,630 --> 00:31:32,880 , че ще се върна, за да линия 6, като в този момент 784 00:31:32,880 --> 00:31:34,400 състояние ще бъдат проверени отново. 785 00:31:34,400 --> 00:31:37,500 И ако аз все още е по-малко от 10, ние ще направим линии 8 и 786 00:31:37,500 --> 00:31:41,250 след 9, тогава ние ще удари 10, и се върна до 6, отново и 787 00:31:41,250 --> 00:31:45,580 отново и отново и отново, толкова дълго, колкото е по-малко от 10. 788 00:31:45,580 --> 00:31:47,860 Така че нека да пуснете отново направи тук. 789 00:31:47,860 --> 00:31:48,940 >> Добре, ние сме съставили по-добре. 790 00:31:48,940 --> 00:31:50,300 Нека повторно контур. 791 00:31:50,300 --> 00:31:52,620 И сега действително изглежда да работи. 792 00:31:52,620 --> 00:31:55,100 Така плюсове и минуси? 793 00:31:55,100 --> 00:31:58,910 Е, досега всъщност не е цяло на Организацията за освобождение на Палестина - 794 00:31:58,910 --> 00:31:59,420 Толкова е сладък. 795 00:31:59,420 --> 00:32:01,870 Добре, че беше - ах, че е било инцидент. 796 00:32:01,870 --> 00:32:05,200 Добре, нека се върнем на линия за. 797 00:32:05,200 --> 00:32:07,530 Така че за вериги са приятни, защото те са супер изрично. 798 00:32:07,530 --> 00:32:09,720 И въпреки, че те са малко по несръчност да пиша, това е 799 00:32:09,720 --> 00:32:11,500 много мощен и ви позволява да направите 800 00:32:11,500 --> 00:32:12,980 няколко неща наведнъж. 801 00:32:12,980 --> 00:32:16,240 Докато вериги не изглежда да има огромна сума на стойност само 802 00:32:16,240 --> 00:32:18,500 все още, защото тя се чувства като ние просто трябва да вършат повече работа. 803 00:32:18,500 --> 00:32:20,670 Ние трябва да сложим инициализация тук, 804 00:32:20,670 --> 00:32:23,480 актуализира тук, и ние трябва да помним, за да правя всичко това. 805 00:32:23,480 --> 00:32:26,260 Така че ние ще видим, че докато вериги всъщност придават 806 00:32:26,260 --> 00:32:29,380 себе си само различни контексти, различни данни 807 00:32:29,380 --> 00:32:33,900 структури като списъци и хеш-таблици, нещата ние ще стигнем до 808 00:32:33,900 --> 00:32:34,970 средата на семестъра. 809 00:32:34,970 --> 00:32:37,900 Но за сега, знам, че има този трети тип, известен като направи 810 00:32:37,900 --> 00:32:38,480 докато контур. 811 00:32:38,480 --> 00:32:39,540 И ние сме виждали това накратко. 812 00:32:39,540 --> 00:32:41,830 И това може да бъде супер полезни с pset 1. 813 00:32:41,830 --> 00:32:45,570 Всеки път, когато искам да направя нещо и след това проверете дали 814 00:32:45,570 --> 00:32:48,940 потребител не оказа съдействие, и ако те не го направя отново, направи 815 00:32:48,940 --> 00:32:51,460 линия, докато се поддава на този вид логика. 816 00:32:51,460 --> 00:32:55,640 Тъй като на поръчка от горе до долу тук предполага, 817 00:32:55,640 --> 00:32:57,750 буквално означава направите това. 818 00:32:57,750 --> 00:32:59,830 И ще направим това отново и отново, какво може да бъде това? 819 00:32:59,830 --> 00:33:03,000 Може би това означава, призовава GetInt или GetString и след това 820 00:33:03,000 --> 00:33:05,830 проверка на стойността на GetInt или GetString и след това викове 821 00:33:05,830 --> 00:33:08,260 към потребителя, ако те не са оказали съдействие, като ги помолите 822 00:33:08,260 --> 00:33:10,100 отново и отново и отново. 823 00:33:10,100 --> 00:33:11,730 Когато искаш да направиш нещо веднъж, 824 00:33:11,730 --> 00:33:13,210 след това проверете някои условия. 825 00:33:13,210 --> 00:33:14,110 >> Така че нека опитаме това. 826 00:33:14,110 --> 00:33:17,130 Нека променим това сега, за да направи линия, докато. 827 00:33:17,130 --> 00:33:18,830 И аз ще отида напред и да направите следното. 828 00:33:18,830 --> 00:33:21,830 Така че направете следното. 829 00:33:21,830 --> 00:33:26,870 Нека да направим Int I = GetInt (), но нека първо да съобщите на потребителя 830 00:33:26,870 --> 00:33:27,410 какво да правя. 831 00:33:27,410 --> 00:33:29,050 Така малко по-различно този път. 832 00:33:29,050 --> 00:33:31,270 "Дай ми INT". 833 00:33:31,270 --> 00:33:32,910 Така че аз ще използва ФОРМАТ за това. 834 00:33:32,910 --> 00:33:35,740 И сега аз ще отида тук, и аз ще направя това 835 00:33:35,740 --> 00:33:41,520 докато аз, да речем, по-голяма от 836 00:33:41,520 --> 00:33:47,540 нека да видим, аз, да речем, по-малко от 0, или аз 837 00:33:47,540 --> 00:33:48,730 по-голяма от 10. 838 00:33:48,730 --> 00:33:51,810 С други думи, искам номер 1-9, просто 839 00:33:51,810 --> 00:33:52,720 произволно. 840 00:33:52,720 --> 00:33:55,290 Така че аз съм с комбинирана булев израз тук, за да 841 00:33:55,290 --> 00:33:59,930 сигурен, че е по-малко от 0 или по-голяма от 10, в който 842 00:33:59,930 --> 00:34:02,530 случай аз ще направя този цикъл отново тук. 843 00:34:02,530 --> 00:34:04,400 Така че, отново да направите това - 844 00:34:04,400 --> 00:34:08,480 докато аз е по-малко от 0 или ще е по-голяма от 10. 845 00:34:08,480 --> 00:34:11,440 >> Така че сега да вървим напред и да направи това, след като сме направили това. 846 00:34:11,440 --> 00:34:13,270 Нека направим една бърза проверка на здрав разум. 847 00:34:13,270 --> 00:34:18,929 ФОРМАТ ("Благодаря, аз е% г", аз). 848 00:34:18,929 --> 00:34:21,350 Така че тази проста програма пита потребителя за едно цяло число, 849 00:34:21,350 --> 00:34:24,000 прави, че това е в някакъв диапазон от 1 до 9 включително, 850 00:34:24,000 --> 00:34:26,280 и след това благодари на потребителя, като им напомня какво те просто 851 00:34:26,280 --> 00:34:27,940 написали, точно като малко здрав разум проверка. 852 00:34:27,940 --> 00:34:30,659 Но нека да видим дали това работи, както е предвидено. 853 00:34:30,659 --> 00:34:34,533 Нека отида с главата надолу и изпълнете отново направи лупинг. 854 00:34:34,533 --> 00:34:35,350 Хмм. 855 00:34:35,350 --> 00:34:38,600 "Използване на недекларирания идентификатор" I ". Това е странно. 856 00:34:38,600 --> 00:34:41,509 Мислех, че сме решени, че. 857 00:34:45,489 --> 00:34:47,560 Същият симптом, но различен код. 858 00:34:47,560 --> 00:34:47,899 Да? 859 00:34:47,899 --> 00:34:50,191 АУДИТОРИЯ: [недоловим вътре двете, ние трябва да 860 00:34:50,191 --> 00:34:52,639 [Недоловим. 861 00:34:52,639 --> 00:34:53,260 >> Дейвид Дж. Малан: Точно така. 862 00:34:53,260 --> 00:34:55,989 Така че това всъщност ни води до тема, известен като обхват. 863 00:34:55,989 --> 00:34:59,350 Оказва се, че C, отново, това наистина ще ви отведе буквално. 864 00:34:59,350 --> 00:35:02,970 И ако направя нещо подобно, където Вие декларирате, вътр 865 00:35:02,970 --> 00:35:06,120 и след това го зададете някаква стойност, но вие, че вътре в 866 00:35:06,120 --> 00:35:09,840 чифт фигурни скоби, какво C прави предполага, че 867 00:35:09,840 --> 00:35:14,800 искат само тези 32 бита, за които е известно, както и да съществува в рамките на 868 00:35:14,800 --> 00:35:18,200 контекста на тези фигурни скоби, в контекста на линии 869 00:35:18,200 --> 00:35:22,420 От 6 до 9. Така че аз се декларира, и му се приписва 870 00:35:22,420 --> 00:35:26,530 стойност по линия 8, но веднага след като получите извън 871 00:35:26,530 --> 00:35:30,270 линия 9 под презрамки къдрава, аз вече не е в 872 00:35:30,270 --> 00:35:31,910 обхват, така да се каже. 873 00:35:31,910 --> 00:35:35,030 S-С-О-Р-Е. Това вече не е в правилния контекст. 874 00:35:35,030 --> 00:35:37,940 Така че сега не е I, така че това е като че ли ние дори не са имали 875 00:35:37,940 --> 00:35:38,770 декларирали, че тя изобщо. 876 00:35:38,770 --> 00:35:41,520 >> Така че това, което е корекция за нещо подобно, ако 877 00:35:41,520 --> 00:35:44,300 Причината е, че е обявен в рамките на фигурните скоби, които 878 00:35:44,300 --> 00:35:45,120 очевидно е лошо? 879 00:35:45,120 --> 00:35:45,410 Тук? 880 00:35:45,410 --> 00:35:46,820 ПУБЛИКАТА: недоловим. 881 00:35:46,820 --> 00:35:47,150 Дейвид Дж. Малан: Да. 882 00:35:47,150 --> 00:35:48,710 Така че можем да го инициализирате отвън. 883 00:35:48,710 --> 00:35:53,530 Така че нека да отидете напред и да изтриете декларация части, по силата на който 884 00:35:53,530 --> 00:35:55,820 Определяне на типа, и нека да го направя тук. 885 00:35:55,820 --> 00:36:00,220 Така че в съответствие 5, сега казва: "Дай ми Int." Наречете го. 886 00:36:00,220 --> 00:36:03,400 Забележете, в линия 9, аз не искам да правя това, защото аз 887 00:36:03,400 --> 00:36:04,830 вече има 32 бита. 888 00:36:04,830 --> 00:36:06,140 Аз не искам да попитам компютър за 889 00:36:06,140 --> 00:36:07,630 различни 32 бита. 890 00:36:07,630 --> 00:36:09,850 Искам да използвам същите тези 32 бита. 891 00:36:09,850 --> 00:36:13,190 И сега, защото е обявена в съответствие 5, тя все още е легален 892 00:36:13,190 --> 00:36:16,550 да го използвате в ред 11 и ред 12. 893 00:36:16,550 --> 00:36:19,310 >> Така че, нека се опитам да компилирате и да видим 894 00:36:19,310 --> 00:36:20,490 ако звъня спира да крещи. 895 00:36:20,490 --> 00:36:22,380 направи линия. 896 00:36:22,380 --> 00:36:25,470 Така че сега тя е "имплицитно декларация на функция 897 00:36:25,470 --> 00:36:29,880 В c99 "GetInt" е невалиден. "Какво е това? 898 00:36:29,880 --> 00:36:30,400 Да? 899 00:36:30,400 --> 00:36:32,330 ПУБЛИКАТА: недоловим. 900 00:36:32,330 --> 00:36:32,690 Дейвид Дж. Малан: Да. 901 00:36:32,690 --> 00:36:35,520 Така че сега, че аз съм всъщност използва GetInt, това не е нещо 902 00:36:35,520 --> 00:36:38,190 че просто идва с C. Това идва от CS50. 903 00:36:38,190 --> 00:36:39,890 Така че имаме нужда от този тук. 904 00:36:39,890 --> 00:36:41,450 И нека да се върна бързо надолу 905 00:36:41,450 --> 00:36:43,500 тук и изпълнете отново направи. 906 00:36:43,500 --> 00:36:44,160 Добре, най-накрая. 907 00:36:44,160 --> 00:36:46,270 Сега сме решени, че и друга грешка. 908 00:36:46,270 --> 00:36:48,930 Нека сега тичам линия и да видим какво ще се случи. 909 00:36:48,930 --> 00:36:51,740 "Дай ми вътр. Аз ще го дам 11. 910 00:36:51,740 --> 00:36:53,100 Аз ще го дам -1. 911 00:36:53,100 --> 00:36:54,470 Аз ще го дам Foo. 912 00:36:54,470 --> 00:36:56,080 Аз ще го дам 5. 913 00:36:56,080 --> 00:36:57,450 И сега тя наистина работи. 914 00:36:57,450 --> 00:36:59,410 Но бързо се променили тук поради някаква причина. 915 00:36:59,410 --> 00:37:02,800 Защо го казвам опитайте отново един от тези пъти, но ми дай 916 00:37:02,800 --> 00:37:03,920 INT останалите три пъти? 917 00:37:03,920 --> 00:37:05,500 Защо е това поведение е по-различно? 918 00:37:05,500 --> 00:37:06,980 ПУБЛИКАТА: низ. 919 00:37:06,980 --> 00:37:07,830 Дейвид Дж. Малан: Моля? 920 00:37:07,830 --> 00:37:08,570 АУДИТОРИЯ: Ти ми даде низ. 921 00:37:08,570 --> 00:37:08,990 Дейвид Дж. Малан: Да. 922 00:37:08,990 --> 00:37:11,450 Така че ние го даде низ в този трети опит, 923 00:37:11,450 --> 00:37:12,490 когато написах Foo. 924 00:37:12,490 --> 00:37:13,200 Foo е низ. 925 00:37:13,200 --> 00:37:14,340 Това очевидно не е вътр. 926 00:37:14,340 --> 00:37:17,500 CS50 начина, по който е изпълнила GetInt е, че ние 927 00:37:17,500 --> 00:37:20,330 не провери дали нещо не е по-малко от 0 или по-голяма от 10 928 00:37:20,330 --> 00:37:22,260 за вас, защото как можем да знаем предварително какъв вид 929 00:37:22,260 --> 00:37:23,130 INT искате? 930 00:37:23,130 --> 00:37:25,880 Но ние можем да минимално проверите за вас, не на потребителя най-малко 931 00:37:25,880 --> 00:37:26,730 въведете цяло число? 932 00:37:26,730 --> 00:37:30,500 И ако не го направят, ние крещи към потребителя, като напишете "опитайте отново" на 933 00:37:30,500 --> 00:37:31,440 на екрана. 934 00:37:31,440 --> 00:37:34,210 >> Така че сега ние имаме програма, която е примка. Добре. 935 00:37:34,210 --> 00:37:37,070 Сега, кой от тях е на по-добра конструкция? 936 00:37:37,070 --> 00:37:39,060 Така че това е мястото, където нещата започват да се получи малко разхвърлян, 937 00:37:39,060 --> 00:37:42,360 факта, че трябва да се помни, да декларирате променлива тук 938 00:37:42,360 --> 00:37:44,630 ако искате да го използвате във вътрешността на някои 939 00:37:44,630 --> 00:37:46,460 фигурни скоби и извън него. 940 00:37:46,460 --> 00:37:48,490 Но дори и ако това изглежда малко загадъчен на пръв поглед 941 00:37:48,490 --> 00:37:50,750 поглед, просто отново, не забравяйте, проста логика. 942 00:37:50,750 --> 00:37:54,630 За да използвате нищо в C, независимо дали това е функция или 943 00:37:54,630 --> 00:37:57,680 това е променлива, трябва да го включи, ако това е функцията 944 00:37:57,680 --> 00:37:59,770 в някои библиотеката, или ще трябва да го декларира. 945 00:37:59,770 --> 00:38:02,405 Но сега трябва да бъдат допълнително наясно с факта, че 946 00:38:02,405 --> 00:38:04,940 го обявява в дясното поле. 947 00:38:04,940 --> 00:38:08,150 Вие не го твърде плътно вътре в скоби. 948 00:38:08,150 --> 00:38:09,410 >> Така че, позволете ми да се връщам. 949 00:38:09,410 --> 00:38:12,660 Ако се върнем към нашия например от по-рано, и аз отивам 950 00:38:12,660 --> 00:38:19,245 обратно за Int, Int = 0; <10; + +, и аз 951 00:38:19,245 --> 00:38:26,370 направи ФОРМАТ звезди, като това, и след това затворете скоба, и сега 952 00:38:26,370 --> 00:38:30,410 ФОРМАТ и сега е - 953 00:38:30,410 --> 00:38:33,500 според същата логика, какво ще се случи, когато се опитам да 954 00:38:33,500 --> 00:38:35,500 съставят тази програма? 955 00:38:35,500 --> 00:38:36,790 ПУБЛИКАТА: Невалиден идентификатор. 956 00:38:36,790 --> 00:38:38,560 Дейвид Дж. Малан: Значи това е друга невалиден идентификатор, 957 00:38:38,560 --> 00:38:39,470 недекларирания идентификатор. 958 00:38:39,470 --> 00:38:41,810 Сега, причината е малко по-различно. 959 00:38:41,810 --> 00:38:44,370 Има очевидно не фигурни скоби тук, но същото 960 00:38:44,370 --> 00:38:46,790 идея, една и съща история на обхвата. 961 00:38:46,790 --> 00:38:50,340 Ако сте декларирали променливи, както и във вътрешността на 962 00:38:50,340 --> 00:38:53,960 контур, дори ако не са изрично писмено къдрава 963 00:38:53,960 --> 00:38:56,980 скоби, мислете за тях психически, че все още е там, в който 964 00:38:56,980 --> 00:39:00,310 случай, че е валидно само вътрешността на линия за. 965 00:39:00,310 --> 00:39:03,080 Не е валиден, след като стигна до следващия ред, което в 966 00:39:03,080 --> 00:39:05,090 този случай сега е 10. 967 00:39:05,090 --> 00:39:09,060 Така че само няколко въпроса на обхвата и подобни. 968 00:39:09,060 --> 00:39:12,620 Добре, някакви въпроси? 969 00:39:12,620 --> 00:39:15,310 >> Добре, така че това е вид тривиална малка програма, 970 00:39:15,310 --> 00:39:17,450 отпечатване само на малки звезди. 971 00:39:17,450 --> 00:39:20,400 Но нека да видим, ако си спомняте тази песен тук. 972 00:39:20,400 --> 00:39:22,530 Това е невероятно досадно песен, децата ще пеят 973 00:39:22,530 --> 00:39:23,550 на училищен автобус и други подобни. 974 00:39:23,550 --> 00:39:25,990 Но това, което е хубаво за него е, че той има тази цикличност, 975 00:39:25,990 --> 00:39:27,910 което е "99 бутилки бира на стената, 976 00:39:27,910 --> 00:39:28,520 99 бутилки бира. 977 00:39:28,520 --> 00:39:31,030 Приемайте по една, преминават около 98 бутилки бира на 978 00:39:31,030 --> 00:39:34,330 стената. "И тогава песента повтаря 97, след това 96, след това 979 00:39:34,330 --> 00:39:38,040 95, 94, по целия път до 0, ако действително има 980 00:39:38,040 --> 00:39:38,920 далеч в автобуса. 981 00:39:38,920 --> 00:39:41,960 Така че това е хубава програма да сортирате инвентар, защото моята 982 00:39:41,960 --> 00:39:43,650 Боже, ако може просто да приложи това с няколко 983 00:39:43,650 --> 00:39:46,660 реда код, можете да изплюе на цели текстове за това 984 00:39:46,660 --> 00:39:48,240 песен доста бързо. 985 00:39:48,240 --> 00:39:50,420 Но по пътя, можем да започнем да дразни освен някои 986 00:39:50,420 --> 00:39:52,460 на тези основни за цикъл и сега също 987 00:39:52,460 --> 00:39:55,830 въведе функции, които се пишат, връщат стойности 988 00:39:55,830 --> 00:39:57,020 че минаваме наоколо. 989 00:39:57,020 --> 00:39:58,910 Но първо, защо не отидем напред и ни вземат пет минути 990 00:39:58,910 --> 00:39:59,320 прекъсне тук? 991 00:39:59,320 --> 00:40:01,480 И когато се върнем, ще пеем тази песен. 992 00:40:05,680 --> 00:40:08,760 >> Добре, така че ние сме назад. 993 00:40:08,760 --> 00:40:11,850 И когато казвам, ние сега ще пея тази песен, искам да кажа 994 00:40:11,850 --> 00:40:13,250 програмно, а не устно. 995 00:40:13,250 --> 00:40:19,370 Така че тук имаме beer1.c, който е един прилагането на настоящия 996 00:40:19,370 --> 00:40:20,580 определена песен. 997 00:40:20,580 --> 00:40:23,110 И само за да бъде ясна, за онези, които не са запознати с това, което 998 00:40:23,110 --> 00:40:24,460 това нещо изглежда, нека вървим напред 999 00:40:24,460 --> 00:40:27,070 и да beer1 Enter. 1000 00:40:27,070 --> 00:40:30,400 Сега нека тичаме beer1 и какво ще видим - колко бутилки 1001 00:40:30,400 --> 00:40:31,140 на бира ще има? 1002 00:40:31,140 --> 00:40:33,240 Ще въведете 99, както се пее в песента. 1003 00:40:33,240 --> 00:40:34,040 Enter. 1004 00:40:34,040 --> 00:40:35,650 И сега, ако преминете през 1005 00:40:35,650 --> 00:40:38,280 Опа - ако преминете през всичко това, ще видим, че 1006 00:40:38,280 --> 00:40:41,350 това наистина пее цялата песен. 1007 00:40:44,050 --> 00:40:44,540 Изчакайте една минута. 1008 00:40:44,540 --> 00:40:46,240 Моят плъзгач е малко объркано. 1009 00:40:46,240 --> 00:40:47,940 Да използваме по-голям прозорец. 1010 00:40:47,940 --> 00:40:53,500 Така beer1, 99, там отиваме. 1011 00:40:53,500 --> 00:40:56,420 Така че тук имаме цялата песен, изпята много по-бързо от 1012 00:40:56,420 --> 00:40:58,450 компютър, отколкото би могло да е от нас. 1013 00:40:58,450 --> 00:41:00,340 Така забележите, обаче, цикличен характер. 1014 00:41:00,340 --> 00:41:03,380 Той казва 99, след това 99, след това "вземете, да го давате 1015 00:41:03,380 --> 00:41:04,740 наоколо ", след това 98. 1016 00:41:04,740 --> 00:41:06,640 И сега го повтаря отново и отново. 1017 00:41:06,640 --> 00:41:08,840 >> Така че това всъщност е добра възможност за някакъв вид 1018 00:41:08,840 --> 00:41:10,400 примка построи. 1019 00:41:10,400 --> 00:41:12,950 Забележете, че аз съм един вид на намаляване на ъгъла тук. 1020 00:41:12,950 --> 00:41:15,960 Забележете, че казвам "98 бутилки бира на стената, 1021 00:41:15,960 --> 00:41:19,010 97 бутилки бира на стената ", и че беше толкова 1022 00:41:19,010 --> 00:41:21,640 че когато стигнем до един бутилки бира, не е нужно 1023 00:41:21,640 --> 00:41:23,300 да се притеснявате за английската граматика. 1024 00:41:23,300 --> 00:41:25,790 Но ние също може да се определи това с малко на ако 1025 00:41:25,790 --> 00:41:26,910 състояние, може би. 1026 00:41:26,910 --> 00:41:30,110 Ако този брой е в единствено, продължавайте и кажете "бутилка", 1027 00:41:30,110 --> 00:41:31,840 противен случай, ако това е множествено число, да речем "бутилки". 1028 00:41:31,840 --> 00:41:34,150 Но за сега, аз съм напълно намаляване на този ъгъл. 1029 00:41:34,150 --> 00:41:35,520 Така че нека да видим какво имаме тук. 1030 00:41:35,520 --> 00:41:37,150 Така че ние имаме някои коментари на върха. 1031 00:41:37,150 --> 00:41:39,450 Аз включително тези две библиотеки, както 1032 00:41:39,450 --> 00:41:41,140 често сме били. 1033 00:41:41,140 --> 00:41:43,610 А сега нека превъртете надолу до първия 1034 00:41:43,610 --> 00:41:44,990 действителните реда код. 1035 00:41:44,990 --> 00:41:47,020 Линия 17 започва основната. 1036 00:41:47,020 --> 00:41:50,610 Line 21 и 20 колко бутилки от бира ще има? 1037 00:41:50,610 --> 00:41:52,060 И тогава аз наричам GetInt. 1038 00:41:52,060 --> 00:41:53,800 И сега имам малко здрав разум проверка. 1039 00:41:53,800 --> 00:41:57,030 >> Така че това е конвенция, която сега ние ще започне приемането на 1040 00:41:57,030 --> 00:41:59,620 по-строго вход на потребителя. 1041 00:41:59,620 --> 00:42:01,710 Понякога просто не искам да ги подкани отново 1042 00:42:01,710 --> 00:42:02,630 и отново, и отново. 1043 00:42:02,630 --> 00:42:05,620 Ако потребителят винтове и не си сътрудничат, добре. 1044 00:42:05,620 --> 00:42:07,430 Спри и просто не се справят с тях. 1045 00:42:07,430 --> 00:42:08,990 И така, това е, което правя тук. 1046 00:42:08,990 --> 00:42:12,520 Ако N е по-малко от една, аз съм просто да крещи на потребителя, 1047 00:42:12,520 --> 00:42:14,330 "Съжалявам, че няма смисъл." И тогава аз ще 1048 00:42:14,330 --> 00:42:16,650 произволно връщане 1. 1049 00:42:16,650 --> 00:42:18,550 Така че отново, това е само една конвенция, която да се използва за. 1050 00:42:18,550 --> 00:42:19,850 За сега, вземете го на вяра. 1051 00:42:19,850 --> 00:42:22,700 Но до сега, ние винаги сме били върне 0, защото 1052 00:42:22,700 --> 00:42:25,204 казахме връщане 0 означава какво? 1053 00:42:25,204 --> 00:42:26,000 АУДИТОРИЯ: успех. 1054 00:42:26,000 --> 00:42:27,320 Дейвид Дж. Малан: Успех, това е всичко. 1055 00:42:27,320 --> 00:42:29,740 Така че сега ние сме най-накрая започват да мислят за 1056 00:42:29,740 --> 00:42:31,330 не-успехи - 1057 00:42:31,330 --> 00:42:33,760 с други думи, ъглови случаи, грешка условия - 1058 00:42:33,760 --> 00:42:37,520 сега имам един безкраен доставка, или най-малко четири милиарда 1059 00:42:37,520 --> 00:42:39,790 възможни неща, които могат да се объркат в моите програми. 1060 00:42:39,790 --> 00:42:42,300 И мога да започна да им зададете индивидуални номера. 1061 00:42:42,300 --> 00:42:44,340 Сега, по принцип е достатъчно просто да се върне 1062 00:42:44,340 --> 00:42:45,730 нещо различно от 0. 1063 00:42:45,730 --> 00:42:48,040 Така че ние просто ще върне едно за сега. 1064 00:42:48,040 --> 00:42:51,440 Но причината за връщане 1 е, че веднага след като се върнете 1065 00:42:51,440 --> 00:42:55,110 1, познайте какво се случва с останалата част от програмата? 1066 00:42:55,110 --> 00:42:55,720 Спира. 1067 00:42:55,720 --> 00:42:56,560 Това е всичко. 1068 00:42:56,560 --> 00:42:59,150 Така че самият факт, че Връщам 1 е ефективно 1069 00:42:59,150 --> 00:43:02,950 късо съединение изпълнение на тази програма, така че 1070 00:43:02,950 --> 00:43:06,780 нищо под линия 27 ще продължи да се изпълнява. 1071 00:43:06,780 --> 00:43:09,210 Веднага след като основни връща, това е то. 1072 00:43:09,210 --> 00:43:13,160 >> Добре, така че, ако потребителят не си сътрудничат и да стигнем до линия 30 1073 00:43:13,160 --> 00:43:15,680 защото те въвели в законна брой, тук е моят 1074 00:43:15,680 --> 00:43:16,990 изпълнението на тази песен. 1075 00:43:16,990 --> 00:43:19,050 Тогава първо разпечатате символ за нов ред, само за 1076 00:43:19,050 --> 00:43:19,880 естетика. 1077 00:43:19,880 --> 00:43:21,500 Аз сега имам за цикъл. 1078 00:43:21,500 --> 00:43:22,930 И забележите, аз правя нещата по малко 1079 00:43:22,930 --> 00:43:23,880 от друга посока. 1080 00:43:23,880 --> 00:43:26,210 Не трябва да се направи по-малко, отколкото, че не е нужно да правите + +. 1081 00:43:26,210 --> 00:43:30,660 Вместо това мога да кажа инициализира Аз променлива, равна на 1082 00:43:30,660 --> 00:43:35,080 N, номер на потребителя въвели в, а след това направете следното, за да 1083 00:43:35,080 --> 00:43:39,590 дълго, колкото е по-голяма от 0, тогава аз - 1084 00:43:39,590 --> 00:43:42,070 след като приключите едно повторение на този цикъл. 1085 00:43:42,070 --> 00:43:44,310 Така че можем да разчитаме с помощта на линия, както добре. 1086 00:43:44,310 --> 00:43:47,520 Сега, това е почти седмица неща сега, ФОРМАТ. 1087 00:43:47,520 --> 00:43:51,770 Така печат "бутилки% D бира на стената." Print "% г 1088 00:43:51,770 --> 00:43:54,990 бутилки от бира. "един дъх, преминават около" Print 1089 00:43:54,990 --> 00:43:58,880 "% D бутилки бира на стената." Така че това е все още% D, но 1090 00:43:58,880 --> 00:44:02,770 забележите, че аргументът за ФОРМАТ се променя. 1091 00:44:02,770 --> 00:44:05,840 След запетая, аз имам, защото аз искам да кажа 99. 1092 00:44:05,840 --> 00:44:08,590 След това запетая, аз имам, защото аз искам да кажа 99. 1093 00:44:08,590 --> 00:44:14,030 След това запетая, аз имам - 1, защото аз искам да кажа, 98 в 1094 00:44:14,030 --> 00:44:16,260 тази първа итерация, и така нататък. 1095 00:44:16,260 --> 00:44:18,520 И сега тук, аз просто трябва някаква глупава малка забележка. 1096 00:44:18,520 --> 00:44:22,270 И тогава линия 42, се върна 0 по силата на споразумение, което означава, че 1097 00:44:22,270 --> 00:44:23,650 всичко е наред. 1098 00:44:23,650 --> 00:44:24,490 >> И какво, ако goofed? 1099 00:44:24,490 --> 00:44:26,350 Какво може често срещана грешка тук? 1100 00:44:26,350 --> 00:44:29,200 Е, какво ще стане, ако случайно казах добре, аз искам да се брои 1101 00:44:29,200 --> 00:44:31,640 до 0, искам 0 бутилки бира на стената? 1102 00:44:31,640 --> 00:44:34,620 Така че аз казвам, че е по-голяма или равна на 0. 1103 00:44:34,620 --> 00:44:38,920 Какво ще е симптом, че сега видя дали мога компилирате 1104 00:44:38,920 --> 00:44:41,173 beer1 и да го стартирате? 1105 00:44:41,173 --> 00:44:42,120 ПУБЛИКАТА: отрицателен. 1106 00:44:42,120 --> 00:44:43,590 Дейвид Дж. Малан: Да, ще отида отрицателен. 1107 00:44:43,590 --> 00:44:45,950 Това е по една грешка, невероятно 1108 00:44:45,950 --> 00:44:47,270 често срещана грешка, за да се направи. 1109 00:44:47,270 --> 00:44:48,960 Да се ​​върна към терминален прозорец и да го направя 1110 00:44:48,960 --> 00:44:50,620 тук, така че ние можем да видите повече в даден момент. 1111 00:44:50,620 --> 00:44:53,280 Enter, 99 бутилки бира. 1112 00:44:53,280 --> 00:44:56,580 Затвори, но отидохме все така леко твърде далеч. 1113 00:44:56,580 --> 00:45:00,500 Ние изпя песента твърде далеч надолу, така че сега удари 1114 00:45:00,500 --> 00:45:01,510 отрицателно число. 1115 00:45:01,510 --> 00:45:03,680 Така че съвсем не работи. 1116 00:45:03,680 --> 00:45:06,450 >> Добре, така че лесно можем да поправим, че като се върнем към 1117 00:45:06,450 --> 00:45:07,650 начина, по който някога е бил. 1118 00:45:07,650 --> 00:45:10,360 Но какви са някои възможности за 1119 00:45:10,360 --> 00:45:11,190 подобрение? 1120 00:45:11,190 --> 00:45:17,200 Е, нека да отвори beer2.c и превъртете надолу тук и да вземе 1121 00:45:17,200 --> 00:45:19,310 погледнете тази версия. 1122 00:45:19,310 --> 00:45:21,370 Кое е първото нещо, което скача като различни 1123 00:45:21,370 --> 00:45:23,715 в тази версия тук? 1124 00:45:23,715 --> 00:45:24,190 ПУБЛИКАТА: недоловим. 1125 00:45:24,190 --> 00:45:26,510 Дейвид Дж. Малан: Да, така не аз, защото го хрумна 1126 00:45:26,510 --> 00:45:29,350 ти знаеш какво, аз искам на потребителя за N и тогава аз съм 1127 00:45:29,350 --> 00:45:33,580 място аз равна на N, и след това съм аз променя, но аз никога не съм 1128 00:45:33,580 --> 00:45:34,590 докосва N отново. 1129 00:45:34,590 --> 00:45:37,390 И така, какво по дяволите е точка на разпределянето на 32 1130 00:45:37,390 --> 00:45:45,210 бита Обадих се просто така, че мога да имам различна променлива? 1131 00:45:45,210 --> 00:45:47,960 Така че в този случай, аз някак признава, че ненужно 1132 00:45:47,960 --> 00:45:49,190 дизайн функция. 1133 00:45:49,190 --> 00:45:52,730 И аз сега ще кажа а н е по-голяма от 0, 1134 00:45:52,730 --> 00:45:56,180 напред и да отпечатате една и съща песен, която минава N ФОРМАТ като 1135 00:45:56,180 --> 00:46:00,210 вторият аргумент, и N - 1 като втори аргумент тук. 1136 00:46:00,210 --> 00:46:02,930 И тогава на всяко повторение на този цикъл, давай напред и само 1137 00:46:02,930 --> 00:46:05,080 снижаване н себе си. 1138 00:46:05,080 --> 00:46:06,960 Сега, функционално, тази програма 1139 00:46:06,960 --> 00:46:08,010 ще са идентични. 1140 00:46:08,010 --> 00:46:10,730 Ако пиша в 99, N започва в 99. 1141 00:46:10,730 --> 00:46:12,890 Аз декремент, намаление, намаление, намаление. 1142 00:46:12,890 --> 00:46:15,875 Отивам да получите по целия път надолу до "Една бутилка от бира на 1143 00:46:15,875 --> 00:46:16,740 на стената, една бутилка от бира. 1144 00:46:16,740 --> 00:46:18,020 Приемайте по една, Заобикаля. 1145 00:46:18,020 --> 00:46:21,480 0 бутилки бира на стената. "The End, защото направих 1146 00:46:21,480 --> 00:46:23,200 получите състояние правилно. 1147 00:46:23,200 --> 00:46:24,280 Това е по-голям от 0. 1148 00:46:24,280 --> 00:46:26,220 Не съм правил тази грешка. 1149 00:46:26,220 --> 00:46:28,470 >> Така че, който е по-добре, версия или версия две? 1150 00:46:31,380 --> 00:46:33,480 Чух, че един куп роптанията за двама. 1151 00:46:33,480 --> 00:46:34,730 Защо две? 1152 00:46:37,210 --> 00:46:38,225 Какво е това? 1153 00:46:38,225 --> 00:46:39,215 ПУБЛИКАТА: недоловим. 1154 00:46:39,215 --> 00:46:40,070 Дейвид Дж. Малан: О, добре. 1155 00:46:40,070 --> 00:46:42,870 Така че няма да слезе под 0, но не забравяйте, версия едно, 1156 00:46:42,870 --> 00:46:45,870 оригинална правилната версия не отиде под 0 или. 1157 00:46:45,870 --> 00:46:48,340 Така че не забравяйте, че това е правилната версия. 1158 00:46:48,340 --> 00:46:51,630 Така че нека поне се сравняват двете правилните версии. 1159 00:46:51,630 --> 00:46:53,300 Какво е аргумент в полза на версията 1160 00:46:53,300 --> 00:46:55,146 две са, ммм, по-добре? 1161 00:46:55,146 --> 00:46:55,642 Да? 1162 00:46:55,642 --> 00:46:57,630 АУДИТОРИЯ: Той използва по-малко пространство. 1163 00:46:57,630 --> 00:46:59,530 Дейвид Дж. Малан: Добре, така че използва по-малко пространство, нали? 1164 00:46:59,530 --> 00:47:02,900 Като има предвид, версия, което се използва 32 бита за N, и после още 1165 00:47:02,900 --> 00:47:07,680 32 бита за I. 1166 00:47:07,680 --> 00:47:10,060 Версия само две използва 32 бита за N, така че 1167 00:47:10,060 --> 00:47:11,700 изглежда да е плюс. 1168 00:47:11,700 --> 00:47:12,950 Други мисли? 1169 00:47:18,070 --> 00:47:21,520 Някой иска ли да се твърди, в полза на един? 1170 00:47:21,520 --> 00:47:22,070 Да? 1171 00:47:22,070 --> 00:47:25,240 АУДИТОРИЯ: Вие трябва да използвате допълнителен ред код за N - 1172 00:47:25,240 --> 00:47:26,090 >> Дейвид Дж. Малан: Добре, разбира се. 1173 00:47:26,090 --> 00:47:26,960 Така че това е справедливо. 1174 00:47:26,960 --> 00:47:29,040 Така че това е просто, поне за мен - 1175 00:47:29,040 --> 00:47:31,940 Искам да кажа, това всъщност се чувства малко разхвърлян, фактът, че 1176 00:47:31,940 --> 00:47:35,120 Не мога да сортирате на капсулиране на моята логика в едно 1177 00:47:35,120 --> 00:47:38,030 красива линия, за контур, като за цикъла може. 1178 00:47:38,030 --> 00:47:40,240 Ето, аз вид трябва да халс по този н 1179 00:47:40,240 --> 00:47:41,120 в края на цикъла, защото 1180 00:47:41,120 --> 00:47:42,550 логично това е необходимо. 1181 00:47:42,550 --> 00:47:45,190 Но това някак ме трие по грешен начин, просто защото 1182 00:47:45,190 --> 00:47:48,260 изглежда отделно от логиката тук, макар че 1183 00:47:48,260 --> 00:47:49,430 отново, че е необходимо. 1184 00:47:49,430 --> 00:47:50,990 Други мисли? 1185 00:47:50,990 --> 00:47:51,490 Да? 1186 00:47:51,490 --> 00:47:52,740 ПУБЛИКАТА: недоловим. 1187 00:47:57,990 --> 00:47:58,350 >> Дейвид Дж. Малан: Да. 1188 00:47:58,350 --> 00:48:00,730 И какво ако вместо това, в края на песента, исках да 1189 00:48:00,730 --> 00:48:02,950 отпечатате отново името на песента? 1190 00:48:02,950 --> 00:48:05,660 Like "Благодаря за възпроизвеждане на 99 бутилки бира", или нещо 1191 00:48:05,660 --> 00:48:06,690 глупаво така? 1192 00:48:06,690 --> 00:48:09,750 Но въпросът е, ти искаше достъп до първоначалната стойност. 1193 00:48:09,750 --> 00:48:13,180 Фактът, че сте мутирал или променени N на всеки 1194 00:48:13,180 --> 00:48:16,330 итерация и затова са унищожени първоначалната си стойност 1195 00:48:16,330 --> 00:48:18,650 означава, че просто не може да направи това в края. 1196 00:48:18,650 --> 00:48:20,660 Сега, може би, ние ясно не искам да правя 1197 00:48:20,660 --> 00:48:21,450 , че в тази програма. 1198 00:48:21,450 --> 00:48:22,350 И така, на кого му пука? 1199 00:48:22,350 --> 00:48:23,630 Но това е много валидна точка. 1200 00:48:23,630 --> 00:48:25,520 И за да бъда честен, наистина никой не 1201 00:48:25,520 --> 00:48:26,630 правилният отговор тук. 1202 00:48:26,630 --> 00:48:28,740 И двамата са еднакво правилни. 1203 00:48:28,740 --> 00:48:30,210 Мога да бъда убеден, така или иначе. 1204 00:48:30,210 --> 00:48:33,310 Аз ще кажа, че като цяло, това е един добър принцип, ако 1205 00:48:33,310 --> 00:48:36,030 попита потребителя за някаква стойност и съхранява в променлива 1206 00:48:36,030 --> 00:48:38,730 като N, просто някак по принцип, това е вероятно добро 1207 00:48:38,730 --> 00:48:40,160 да запази нещата. 1208 00:48:40,160 --> 00:48:43,400 И всички данни, които искате да мутира отново и отново, само 1209 00:48:43,400 --> 00:48:46,030 да си направите копие на тази променлива, просто така, че 1210 00:48:46,030 --> 00:48:47,830 имат достъп до оригиналния. 1211 00:48:47,830 --> 00:48:51,040 Харчат още 32 бита, но реалността е това 1212 00:48:51,040 --> 00:48:53,490 компютъра, като два гигабайта RAM тези дни, 1213 00:48:53,490 --> 00:48:55,310 и ние сме заяждане над 32 бита? 1214 00:48:55,310 --> 00:48:56,320 Наистина не е такъв голям проблем. 1215 00:48:56,320 --> 00:48:58,550 И дори тук, на това устройство с половин концерт или 1216 00:48:58,550 --> 00:49:01,700 гигабайт RAM, 32 бита срещу 64 бита, 1217 00:49:01,700 --> 00:49:02,920 не е такъв голям проблем. 1218 00:49:02,920 --> 00:49:05,890 Разбира се днес, ще бъде начин претоварени от размера 1219 00:49:05,890 --> 00:49:08,400 на самата програма, която ще бъде неколкостотин 1220 00:49:08,400 --> 00:49:10,890 килобайта, ако не и няколко мегабайта, тези дни. 1221 00:49:10,890 --> 00:49:13,550 >> Така основателни опасения, нито един правилен отговор. 1222 00:49:13,550 --> 00:49:15,490 Но поне това са мисли, че трябва да започне да 1223 00:49:15,490 --> 00:49:16,790 мине през ума си? 1224 00:49:16,790 --> 00:49:19,600 Защото в pset 0, въпреки че наистина се очакват само 1225 00:49:19,600 --> 00:49:22,340 коректност, или най-малкото се отказва от различни бъгове, които 1226 00:49:22,340 --> 00:49:25,440 може да са се сблъскали, докато се движим напред, дизайнът е 1227 00:49:25,440 --> 00:49:27,910 ще бъде друг ключов аспект, както на писане на код 1228 00:49:27,910 --> 00:49:29,770 , а също и нашата оценка код. 1229 00:49:29,770 --> 00:49:32,310 И така, най-малко, че неща като това. 1230 00:49:32,310 --> 00:49:35,590 И само защото нещо работи не означава, че е добре, 1231 00:49:35,590 --> 00:49:37,130 не означава, че тя е добре. 1232 00:49:37,130 --> 00:49:38,820 И това е едно от нещата, на преподаване специализанти и 1233 00:49:38,820 --> 00:49:41,990 проблемни комплекти ще ни помогне да дразни част с течение на времето. 1234 00:49:41,990 --> 00:49:45,020 >> Ами, нека кажем, тази версия тук? 1235 00:49:45,020 --> 00:49:49,090 Нека направим нещо малко секси тук в момента. 1236 00:49:49,090 --> 00:49:50,740 Първо, позволете ми да се отърве от този. 1237 00:49:50,740 --> 00:49:54,120 И сега нека да поправя това граматически въпрос. 1238 00:49:54,120 --> 00:49:58,780 Така че в тази версия, искам да определи граматиката, така че 1239 00:49:58,780 --> 00:50:02,460 , а не само да кажа скоби S, като "бутилка" 1240 00:50:02,460 --> 00:50:03,360 или "бутилки" - 1241 00:50:03,360 --> 00:50:04,900 Аз не искам да се намали този ъгъл - 1242 00:50:04,900 --> 00:50:08,350 Аз също искам да динамично отпечатате думата "бутилки" 1243 00:50:08,350 --> 00:50:12,820 или "бутилка", като по този начин се използват контейнери те% S днес. 1244 00:50:12,820 --> 00:50:16,550 Така че аз трябва да условно да се провери каква е стойността на АЗ. 1245 00:50:16,550 --> 00:50:19,590 И ако това е 1, аз искам да кажа "бутилка", и ако това е всичко 1246 00:50:19,590 --> 00:50:23,115 друго, искам да кажа "бутилки". Така че, нека се опитаме да направим това. 1247 00:50:23,115 --> 00:50:31,340 Така че, ако аз == 1, а след това ме пусна напред и обяви - 1248 00:50:31,340 --> 00:50:34,080 Имам нужда от низ, така че позволете ми да направя струнни s1, защото това е 1249 00:50:34,080 --> 00:50:36,070 първият низ което ме интересува в момента. 1250 00:50:36,070 --> 00:50:40,980 Отивам да кажа "бутилка". И тогава, нека да видим, низ 1251 00:50:40,980 --> 00:50:43,110 s2 - и ще ти обясня къде отивам в един миг - 1252 00:50:43,110 --> 00:50:47,650 "Бутилки". Така че припомни, че в тази песен, трябва да бъде в състояние 1253 00:50:47,650 --> 00:50:50,580 да отпечатате потенциално неща, две различни думи. 1254 00:50:50,580 --> 00:50:53,590 Така че, ако се върнем тук, забележете, че когато стигнем до 1255 00:50:53,590 --> 00:50:56,440 този пример тук ", две бутилки бира на стената, 1256 00:50:56,440 --> 00:50:59,490 две бутилки бира, вземете, Заобикаля ", искам 1257 00:50:59,490 --> 00:51:02,380 тази четвърта линия, за да се каже "една бутилка бира на 1258 00:51:02,380 --> 00:51:04,900 стена "Така че аз трябва да се реши, не искам да кажа" бутилки "или 1259 00:51:04,900 --> 00:51:07,780 "Бутилка"? Така че аз ще произволно да се каже, добре, 1260 00:51:07,780 --> 00:51:10,530 Отивам да обяви променлива наречена s1, канап 1261 00:51:10,530 --> 00:51:13,830 едно, че ще се включи тук и тук, 1262 00:51:13,830 --> 00:51:16,070 защото тези думи са винаги еднакви, само защото на 1263 00:51:16,070 --> 00:51:17,290 естеството на песента. 1264 00:51:17,290 --> 00:51:20,100 И аз ще се обадя s2 думата, искам да 1265 00:51:20,100 --> 00:51:21,560 в крайна сметка се появи тук. 1266 00:51:21,560 --> 00:51:25,530 Сега, буквално 99 от 100 пъти, че ще бъде 1267 00:51:25,530 --> 00:51:28,820 същото и в двете от тези случаи, защото 3 е в множествено число, 2 1268 00:51:28,820 --> 00:51:30,200 множествено число, 4 е в множествено число. 1269 00:51:30,200 --> 00:51:34,640 Но в този ъгъл случай, когато стигнем до 2 и след това един или 1270 00:51:34,640 --> 00:51:37,250 дори 1 и след това 0, имам нужда от тази логика. 1271 00:51:37,250 --> 00:51:41,020 Така че аз трябва да прекарат известно време в моя код получаване на това право. 1272 00:51:41,020 --> 00:51:47,530 Така че, ако го направя, ако аз == 1, а след това, s1, равни на "бутилка" 1273 00:51:47,530 --> 00:51:52,010 и s2 равен на "бутилки", защото това ще бъде за 1 1274 00:51:52,010 --> 00:51:56,340 бутилка, и това ще бъде за 0 бутилки. 1275 00:51:56,340 --> 00:51:58,250 А това тук, какво означава това? 1276 00:51:58,250 --> 00:51:59,780 Само за да бъде ясно. 1277 00:51:59,780 --> 00:52:00,620 Това е просто коментар. 1278 00:52:00,620 --> 00:52:03,730 Така че самият факт, че може да има един-лайн коментари означава 1279 00:52:03,730 --> 00:52:06,110 мога да коментирам кода си по този начин, но друга често срещана 1280 00:52:06,110 --> 00:52:09,050 парадигма, е, че ако имате супер-кратка фраза, че 1281 00:52:09,050 --> 00:52:11,410 искате да се поставите и това е просто по-разбираеми, да се сложи 1282 00:52:11,410 --> 00:52:13,270 в края на линията на код, можете да 1283 00:52:13,270 --> 00:52:15,230 абсолютно направя нещо подобно. 1284 00:52:15,230 --> 00:52:20,150 >> И сега какво, ако направя това? Иначе, ако аз не е равен на 1. 1285 00:52:20,150 --> 00:52:21,620 Така се равнява на взрив - 1286 00:52:21,620 --> 00:52:23,150 удивителен знак е известен като "взрив". 1287 00:52:23,150 --> 00:52:25,080 Така взрив = 1. 1288 00:52:25,080 --> 00:52:28,530 Така че, ако не е равен на 1, какво мога да вместо искате да направите? 1289 00:52:28,530 --> 00:52:31,700 Е, първата дума, искам да бъда това, което? 1290 00:52:34,620 --> 00:52:40,030 Така низ 1 трябва да бъде "бутилки" за множествено число бутилки, 1291 00:52:40,030 --> 00:52:42,440 и след това ще бъде множествено число "бутилки", както и, за сега. 1292 00:52:42,440 --> 00:52:43,800 И ние ще видим дали това всъщност получава от нас да 1293 00:52:43,800 --> 00:52:44,870 там, където искаме да отидем. 1294 00:52:44,870 --> 00:52:47,680 Така че сега, ако ми превъртете надолу тук, забележете, че аз съм включите 1295 00:52:47,680 --> 00:52:50,170 Не само аз, но S1. 1296 00:52:50,170 --> 00:52:51,860 Аз съм включване в s1. 1297 00:52:51,860 --> 00:52:54,440 И тогава тук, аз съм минус 1, което е същото като 1298 00:52:54,440 --> 00:52:55,920 преди, но s2. 1299 00:52:55,920 --> 00:52:58,730 С други думи, аз искам английската дума за промяна на базата 1300 00:52:58,730 --> 00:52:59,930 по тази логика. 1301 00:52:59,930 --> 00:53:03,310 Сега вече има някои проблеми в този кодекс. 1302 00:53:03,310 --> 00:53:08,460 Какво е счупен вече на вратата? 1303 00:53:08,460 --> 00:53:10,796 Да? 1304 00:53:10,796 --> 00:53:13,210 ПУБЛИКАТА: недоловим. 1305 00:53:13,210 --> 00:53:13,800 >> Дейвид Дж. Малан: Точно така. 1306 00:53:13,800 --> 00:53:16,030 Така че вече съм нарушил урок на обхвата. 1307 00:53:16,030 --> 00:53:19,610 Така че аз съм обявена за S1 и S2, но аз съм го правил вътрешността на 1308 00:53:19,610 --> 00:53:22,980 фигурни скоби, което означава, да, този код ще работи 1309 00:53:22,980 --> 00:53:27,430 до линия 42, но веднага след като се удари линия 43, познайте какво не 1310 00:53:27,430 --> 00:53:28,900 вече не съществува? 1311 00:53:28,900 --> 00:53:32,600 Е, познайте какво вече не е в обхват - s1, или S2. 1312 00:53:32,600 --> 00:53:33,780 Така че ние трябва да поправя това. 1313 00:53:33,780 --> 00:53:36,180 Така че нека ми изтриете декларации. 1314 00:53:36,180 --> 00:53:39,320 И аз ще оставя имената на променливите и изтрийте този тук 1315 00:53:39,320 --> 00:53:40,120 и изтрийте този тук. 1316 00:53:40,120 --> 00:53:43,557 И в каква насока трябва да наистина да декларира тези неща? 1317 00:53:43,557 --> 00:53:44,960 ПУБЛИКАТА: недоловим. 1318 00:53:44,960 --> 00:53:45,410 Дейвид Дж. Малан: Да, така че вероятно 1319 00:53:45,410 --> 00:53:46,850 точно тук, 33-Иш. 1320 00:53:46,850 --> 00:53:50,670 Така струнни s1 и след низ s2. 1321 00:53:50,670 --> 00:53:51,950 И се оказва, което мога да направя това. 1322 00:53:51,950 --> 00:53:54,260 Ако сте деклариране на две променливи от същия вид, 1323 00:53:54,260 --> 00:53:57,420 всъщност можете просто да използвате запетая и че в C. Всички 1324 00:53:57,420 --> 00:53:58,970 надясно, така че сега имам две променливи - 1325 00:53:58,970 --> 00:53:59,860 S1 и S2. 1326 00:53:59,860 --> 00:54:02,000 Съм ги присвояване на стойностите в тези 1327 00:54:02,000 --> 00:54:04,210 условия тук или тук. 1328 00:54:04,210 --> 00:54:06,690 И тогава аз ги използвате по-долу. 1329 00:54:06,690 --> 00:54:10,960 Колко добре е това сега ще работим? 1330 00:54:10,960 --> 00:54:12,740 >> Е, това е все още малко бъгав, но нека поне вижте 1331 00:54:12,740 --> 00:54:13,730 колко далеч сме придобили. 1332 00:54:13,730 --> 00:54:16,500 Така че нека да вървим напред и да beer3. 1333 00:54:16,500 --> 00:54:17,695 Е тази beer3? 1334 00:54:17,695 --> 00:54:19,410 Да, това е beer3. 1335 00:54:19,410 --> 00:54:21,510 А сега нека вървим напред и стартирайте beer3. 1336 00:54:21,510 --> 00:54:23,820 399 99. 1337 00:54:23,820 --> 00:54:25,840 Ние вероятно може да пропуснете повечето от тях. 1338 00:54:25,840 --> 00:54:29,100 И тук, погледни това. 1339 00:54:29,100 --> 00:54:31,110 "Една бутилка бира на стената, една бутилка от бира, 1340 00:54:31,110 --> 00:54:34,306 едно от тях, преминават около 0 бутилки бира на стената. " 1341 00:54:34,306 --> 00:54:37,570 Но аз привлече вниманието ви само половината от решението. 1342 00:54:37,570 --> 00:54:39,620 Нещо прецаках тук. 1343 00:54:39,620 --> 00:54:43,030 Така че изглежда, че на ъгъла такива случаи, когато аз се равнява на това, което 1344 00:54:43,030 --> 00:54:44,030 двете стойности? 1345 00:54:44,030 --> 00:54:45,020 АУДИТОРИЯ: 2, 1. 1346 00:54:45,020 --> 00:54:46,190 Дейвид Дж. Малан: 2 и 1. 1347 00:54:46,190 --> 00:54:48,180 Това не е една, а не 1. 1348 00:54:48,180 --> 00:54:51,890 Това е наистина само тези последните две строфи на тази песен. 1349 00:54:51,890 --> 00:54:53,890 Така че това, което мога вместо искате да направите? 1350 00:54:53,890 --> 00:54:58,890 Така че изглежда, че е уловил случай, ако аз == 1, 1351 00:54:58,890 --> 00:55:02,240 след първата дума е "бутилка", но втората дума 1352 00:55:02,240 --> 00:55:07,230 "бутилки". Но тук искам да променя това да бъде == 2. 1353 00:55:07,230 --> 00:55:08,570 И ако това е така, какво мога да искам 1354 00:55:08,570 --> 00:55:09,620 първата дума да бъде? 1355 00:55:09,620 --> 00:55:10,430 Публиката: "бутилки". 1356 00:55:10,430 --> 00:55:12,890 Дейвид Дж. Малан: "Бутилки", така и за две бутилки. 1357 00:55:12,890 --> 00:55:14,690 И тогава тази дума тук трябва да бъде - 1358 00:55:14,690 --> 00:55:15,340 Публиката: "Бутилка". 1359 00:55:15,340 --> 00:55:17,316 Дейвид Дж. Малан: "Бутилка", единствено число. 1360 00:55:20,430 --> 00:55:25,160 >> Добре, нека да я увеличите, се върна тук, прегласуване направи, 1361 00:55:25,160 --> 00:55:28,590 Re план beer3, тип 99 отново. 1362 00:55:28,590 --> 00:55:30,710 Добре, "Сегментация грешка (ядро дъмпингови)." 1363 00:55:30,710 --> 00:55:32,780 Какво съм сгрешил? 1364 00:55:36,050 --> 00:55:38,722 АУДИТОРИЯ: Не е нужно стойност [недоловим. 1365 00:55:38,722 --> 00:55:40,480 Дейвид Дж. Малан: Ах, отлична точка. 1366 00:55:40,480 --> 00:55:43,310 Добре де, какво не е наред тук? 1367 00:55:43,310 --> 00:55:45,450 Така сегментация вина, и ние всъщност ще видим 1368 00:55:45,450 --> 00:55:49,020 това доста няколко пъти в бъдеще, умишлено. 1369 00:55:49,020 --> 00:55:51,030 Но за сега, какво означава това всъщност означава това? 1370 00:55:51,030 --> 00:55:53,620 Сегментация вина почти винаги означава, че имате 1371 00:55:53,620 --> 00:55:56,760 по някакъв начин се опита да достъп до паметта, RAM в компютъра си, 1372 00:55:56,760 --> 00:56:00,600 че не го направите, че не сте всъщност попитах 1373 00:56:00,600 --> 00:56:02,050 операционната система. 1374 00:56:02,050 --> 00:56:04,440 Така че в този случай, обърнете внимание на това, което съм направил, което е 1375 00:56:04,440 --> 00:56:05,870 недостатъци в моята логика. 1376 00:56:05,870 --> 00:56:09,500 Са възложени S1 и S2 стойност, ако аз се равнява на 1. 1377 00:56:09,500 --> 00:56:11,590 Съм също така направи, че ако е равно на 2. 1378 00:56:11,590 --> 00:56:13,710 Но аз не съм го направил в безкрайна редица други 1379 00:56:13,710 --> 00:56:14,690 възможности - 1380 00:56:14,690 --> 00:56:17,940 по-специално, 3 или 4, или точка, точка, точка, 99. 1381 00:56:17,940 --> 00:56:20,100 Така че едно решение за това може да бъде само да 1382 00:56:20,100 --> 00:56:22,190 има друго състояние. 1383 00:56:22,190 --> 00:56:26,780 И ме пусна тук и да кажа s1 равен - 1384 00:56:26,780 --> 00:56:28,180 какво трябва да бъде тук? 1385 00:56:28,180 --> 00:56:28,750 ПУБЛИКАТА: недоловим. 1386 00:56:28,750 --> 00:56:30,460 >> Дейвид Дж. Малан: "бутилки", защото в общия случай, 1387 00:56:30,460 --> 00:56:32,020 това е просто едно и също нещо. 1388 00:56:32,020 --> 00:56:35,580 Така се равнява на цитат, кавички, "бутилки". Така че за множествено число 1389 00:56:35,580 --> 00:56:41,010 бутилки, и след това тук, за множествено бутилки. 1390 00:56:41,010 --> 00:56:44,580 Добре, сега нека се върнем на моя терминален прозорец, 1391 00:56:44,580 --> 00:56:47,200 прекомпилирате, прегласуване. 1392 00:56:47,200 --> 00:56:48,440 99. 1393 00:56:48,440 --> 00:56:49,150 Whew. 1394 00:56:49,150 --> 00:56:50,610 И нека да направим една бърза проверка здрав разум. 1395 00:56:50,610 --> 00:56:52,400 Технически погледнато, ние ще искате да прочетете всичко това, за да се уверите, 1396 00:56:52,400 --> 00:56:53,370 те са правилни, но нека да погледнем 1397 00:56:53,370 --> 00:56:54,640 най-известните виновници. 1398 00:56:54,640 --> 00:56:57,370 3 бутилки, 2 бутилки, 2 бутилки, един 1399 00:56:57,370 --> 00:57:00,380 бутилка, 1 бутилка, 0 бутилки. 1400 00:57:00,380 --> 00:57:03,080 Ние изглежда да са най-малко го определя за сега. 1401 00:57:03,080 --> 00:57:06,010 Но за улов тук е, че това, което бог ужасна бъркотия това е 1402 00:57:06,010 --> 00:57:07,470 само за решаване на един глупав 1403 00:57:07,470 --> 00:57:09,540 едносимволен граматически подробности. 1404 00:57:09,540 --> 00:57:11,150 Така че има вид на причината, поради която съм срязал този ъгъл 1405 00:57:11,150 --> 00:57:14,090 по-рано, защото това е напълно досадно да трябва да 1406 00:57:14,090 --> 00:57:15,020 пиша това много код. 1407 00:57:15,020 --> 00:57:17,530 Но се оказва, че там е малко по-елегантни начини за 1408 00:57:17,530 --> 00:57:20,110 изразяване на точно същото нещо. 1409 00:57:20,110 --> 00:57:22,040 И можем да направим това по следния начин. 1410 00:57:22,040 --> 00:57:23,890 >> Нека оставим това на екрана за момент и 1411 00:57:23,890 --> 00:57:27,320 въведе нещо, известно като третичния оператор. 1412 00:57:27,320 --> 00:57:29,600 Това е вид на един лайнер, който е имал намерение да направи 1413 00:57:29,600 --> 00:57:31,880 живее малко по-секси, както беше обещано. 1414 00:57:31,880 --> 00:57:33,130 И аз ще направя това, както следва. 1415 00:57:33,130 --> 00:57:35,810 Дай ми низ наричат ​​S1 и ми позволи да 1416 00:57:35,810 --> 00:57:37,200 възлага, както следва. 1417 00:57:37,200 --> 00:57:39,900 (I == 1)? 1418 00:57:39,900 --> 00:57:47,820 "Бутилка", в противен случай "бутилки". String s2 получава (I == 2)? 1419 00:57:47,820 --> 00:57:52,670 "Бутилка", в противен случай "бутилки". 1420 00:57:52,670 --> 00:57:57,050 И така, какво тогава е разликата тук? 1421 00:57:57,050 --> 00:57:59,370 Тези два реда код, аз твърдя, може да 1422 00:57:59,370 --> 00:58:02,200 замени цялата тази бъркотия. 1423 00:58:02,200 --> 00:58:04,280 Така че аз го наричам бъркотия, просто защото някак си трие ми 1424 00:58:04,280 --> 00:58:05,940 грешен начин, че толкова много редове код. 1425 00:58:05,940 --> 00:58:06,650 Не е грешно. 1426 00:58:06,650 --> 00:58:07,700 Това не е лош дизайн. 1427 00:58:07,700 --> 00:58:10,140 Например, това е напълно правилно и съвършено глоба. 1428 00:58:10,140 --> 00:58:12,970 Но кодиране получава досаден ако трябва да изразиш себе си, така 1429 00:58:12,970 --> 00:58:15,530 дяволите специално отново и отново, и отново, с проста 1430 00:58:15,530 --> 00:58:16,620 сценарий като този. 1431 00:58:16,620 --> 00:58:19,470 С някои команди, като тази. 1432 00:58:19,470 --> 00:58:24,270 Така че това по същество се казва обяви низ наричат ​​S1 и 1433 00:58:24,270 --> 00:58:32,610 я зададете тази стойност или тази стойност, ако съм == - 1434 00:58:32,610 --> 00:58:35,290 Съжалявам, че трябва да го кажа по-ясно. 1435 00:58:35,290 --> 00:58:41,680 Декларираме променлива s1, я зададете тази стойност, ако това е вярно. 1436 00:58:41,680 --> 00:58:44,280 В противен случай, тя определя тази стойност. 1437 00:58:44,280 --> 00:58:47,220 С други думи, това е вид начин на един ред 1438 00:58:47,220 --> 00:58:51,490 казват, че щом друго, но това задание по протежение на пътя. 1439 00:58:51,490 --> 00:58:55,540 Така че, ако е един, след това отидете напред и да наричат ​​това "бутилка". И 1440 00:58:55,540 --> 00:58:59,830 след това друго, го наричат ​​"бутилки". Междувременно, s2, 1441 00:58:59,830 --> 00:59:04,060 втората дума, че ние трябва да се определи, ако аз се равнява на 2, ние ще 1442 00:59:04,060 --> 00:59:08,350 настроите s2 "бутилка". В противен случай, да го настроите да "бутилки". И това, което 1443 00:59:08,350 --> 00:59:11,460 това означава, че в момента е, че може да мине през това и да изтриете всички 1444 00:59:11,460 --> 00:59:12,860 тези редове код. 1445 00:59:12,860 --> 00:59:17,220 И когато казвам, малко смешно, че сега това е 1446 00:59:17,220 --> 00:59:20,060 секси, тя е секси в стилистичен смисъл. 1447 00:59:20,060 --> 00:59:22,660 Фактът, че функционално, този код е всъщност ще 1448 00:59:22,660 --> 00:59:24,610 направи точно същото нещо. 1449 00:59:24,610 --> 00:59:26,890 И въпреки че това може да изглежда малко загадъчен на първия 1450 00:59:26,890 --> 00:59:29,250 поглед, защото преди не съм виждал тази конструкция, бих 1451 00:59:29,250 --> 00:59:31,850 твърдят, че в крайна сметка ще бъде много по- 1452 00:59:31,850 --> 00:59:34,820 чете и така много по-лесно за нас, хората, за да сортирате 1453 00:59:34,820 --> 00:59:36,830 разбере, защото сега можете просто да прочетете 1454 00:59:36,830 --> 00:59:38,830 код на един ред. 1455 00:59:38,830 --> 00:59:41,550 Тя все още е подобни по смисъл, ако, когато това е 1456 00:59:41,550 --> 00:59:44,920 състояние и след това е това, което е вътре в ако и това 1457 00:59:44,920 --> 00:59:46,480 е това, което е вътре в друго. 1458 00:59:46,480 --> 00:59:49,450 Но можем да направим това само много по-елегантно. 1459 00:59:49,450 --> 00:59:52,650 >> И ако сега се върнем към неговото крайно, след като заличи всички 1460 00:59:52,650 --> 00:59:55,530 на тези линии и ги заменя само с тези две, 1461 00:59:55,530 --> 01:00:00,150 прекомпилирате, пуснете отново бутилки бира с 99, забележете, че ми 1462 01:00:00,150 --> 01:00:03,350 граматиката е в действителност, все още вярна. 1463 01:00:03,350 --> 01:00:06,160 Така че отново - нещо, което да започне. 1464 01:00:06,160 --> 01:00:08,840 2 бутилки бира, 1 бутилка бира. 1465 01:00:08,840 --> 01:00:09,370 Изглежда прав. 1466 01:00:09,370 --> 01:00:10,100 Да. 1467 01:00:10,100 --> 01:00:13,900 Така че ние имаме много по-кратка решение. 1468 01:00:13,900 --> 01:00:16,020 Така че това също, както можете да получите по-удобно с C не, 1469 01:00:16,020 --> 01:00:18,630 непременно с първия pset или дори второто, но 1470 01:00:18,630 --> 01:00:21,170 осъзнават, че тези конструкции може да ни позволи да прави неща, някога 1471 01:00:21,170 --> 01:00:22,810 по-елегантно. 1472 01:00:22,810 --> 01:00:25,200 Сега нека да направим нещо друго тук. 1473 01:00:25,200 --> 01:00:31,460 Нека вървим напред и да се отворят return1.c. 1474 01:00:31,460 --> 01:00:34,340 Сега нека да започнем да реши друг проблем по начин, който 1475 01:00:34,340 --> 01:00:37,140 ни позволява да пишат по-сложен код. 1476 01:00:37,140 --> 01:00:39,960 >> Така че тук е просто малка програма, чиято цел в живота 1477 01:00:39,960 --> 01:00:41,870 е да увеличите стойности. 1478 01:00:41,870 --> 01:00:43,100 И всъщност, нека да направи крачка назад. 1479 01:00:43,100 --> 01:00:44,400 Позволете ми да направите това ръчно. 1480 01:00:44,400 --> 01:00:52,200 Остави ме да включва и INT главната (нищожна). 1481 01:00:52,200 --> 01:00:53,450 И нека ми се обади тази increment.c. 1482 01:00:57,150 --> 01:00:58,570 И това, което искам да направя? 1483 01:00:58,570 --> 01:01:02,240 Отивам да вървим напред и да кажа нещо подобно - 1484 01:01:02,240 --> 01:01:04,280 ще се обади на номерата и същ - 1485 01:01:04,280 --> 01:01:04,980 INT х. 1486 01:01:04,980 --> 01:01:13,670 Така INT х получава 2; ФОРМАТ X% г, на нов ред, х. 1487 01:01:13,670 --> 01:01:16,780 Така че аз съм пишете бързо, но нещо от познати неща. 1488 01:01:16,780 --> 01:01:18,830 Тогава аз ще направя х + +. 1489 01:01:18,830 --> 01:01:21,710 Тогава аз отивам отново да отпечатате, че едно и също изречение. 1490 01:01:21,710 --> 01:01:24,550 И тогава аз ще върне 0, само за да излезете от програмата. 1491 01:01:24,550 --> 01:01:25,960 Добре, така че това е програма, която 1492 01:01:25,960 --> 01:01:26,960 стъпка номер. 1493 01:01:26,960 --> 01:01:29,830 Първо ще се инициализира нещо за 2 и след това е 1494 01:01:29,830 --> 01:01:33,470 ще увеличи го и го разпечатате отново. 1495 01:01:33,470 --> 01:01:36,930 >> Така че нека да тече увеличение, невероятно проста програма. 1496 01:01:36,930 --> 01:01:40,940 Но да предположим, че искам да куб стойност, за да направи 1497 01:01:40,940 --> 01:01:42,490 нещо малко произволно. 1498 01:01:42,490 --> 01:01:45,140 И аз всъщност искам да направя х получава кубче от нея. 1499 01:01:45,140 --> 01:01:47,570 Така че може да използва това, което се нарича функция Pow, но аз не 1500 01:01:47,570 --> 01:01:48,650 наистина ли къде се намира все още. 1501 01:01:48,650 --> 01:01:50,580 Така че аз отивам да го направим по старомодния начин. 1502 01:01:50,580 --> 01:01:54,550 х пъти това се равнява на х пъти х х пъти. 1503 01:01:54,550 --> 01:01:56,880 Така че аз съм cubing стойност, тя се умножи по себе си отново 1504 01:01:56,880 --> 01:02:00,440 и отново, и отново, така че да получите мощността 1505 01:02:00,440 --> 01:02:02,050 3 в този случай. 1506 01:02:02,050 --> 01:02:06,000 Така че сега трябва да бъде, както ще видим по които да се печатат 1507 01:02:06,000 --> 01:02:08,450 - направи увеличение, така че всъщност не е наистина увеличите 1508 01:02:08,450 --> 01:02:10,260 вече, но ние ще оставим само името - 1509 01:02:10,260 --> 01:02:11,590 2 и след това 8. 1510 01:02:11,590 --> 01:02:17,670 Сега, ние имаме началото на възможност за усъвършенстване 1511 01:02:17,670 --> 01:02:21,570 тук, при което този cubing нещо от умножаването на броя 1512 01:02:21,570 --> 01:02:24,680 от само себе си от само себе си от само себе си се чувства като това може да бъде само 1513 01:02:24,680 --> 01:02:27,920 полезно да има като функция, подобно на някой реши 1514 01:02:27,920 --> 01:02:30,430 преди години - знаете, вид полезно, ако един от нас сяда 1515 01:02:30,430 --> 01:02:33,120 и пише ФОРМАТ, така че останалата част от света да го използвате, 1516 01:02:33,120 --> 01:02:36,160 защо не седнете и напишете функция, наречена куб 1517 01:02:36,160 --> 01:02:39,250 , че прави това cubing за нас, така че ние не трябва ръчно да 1518 01:02:39,250 --> 01:02:41,500 прилагане на идеята за cubing стойности тук? 1519 01:02:41,500 --> 01:02:44,040 >> Така че един прост пример, но нека да вървим напред и да използват това е като 1520 01:02:44,040 --> 01:02:46,280 възможност да напишете нашата собствена функция. 1521 01:02:46,280 --> 01:02:49,110 Така че до този момент, ние сме използват само основната, и ние сме използвали други 1522 01:02:49,110 --> 01:02:51,780 функции на хората, но не сме писали за нашето собствено. 1523 01:02:51,780 --> 01:02:52,650 Така че тук ние тръгваме. 1524 01:02:52,650 --> 01:02:56,330 Отивам да вървим напред и да напишете функция, наречена куб. 1525 01:02:56,330 --> 01:02:58,490 И аз ще го вземат вход. 1526 01:02:58,490 --> 01:03:02,070 Така че му вход ще бъде цяло число. 1527 01:03:02,070 --> 01:03:03,570 И какво смяташ да правиш? 1528 01:03:03,570 --> 01:03:08,500 Това ще обяви INT изход = вход пъти вход 1529 01:03:08,500 --> 01:03:09,880 пъти вход. 1530 01:03:09,880 --> 01:03:12,190 И след това ще се върне тази продукция. 1531 01:03:12,190 --> 01:03:14,500 И тогава трябва да бъдат специфични сега. 1532 01:03:14,500 --> 01:03:16,820 Тази функция ще върне вътр. 1533 01:03:16,820 --> 01:03:19,130 Така че тук е как искате да пишете свои собствени функции. 1534 01:03:19,130 --> 01:03:20,850 Първо ще се реши какво е името на вашия 1535 01:03:20,850 --> 01:03:21,720 функция ще бъде. 1536 01:03:21,720 --> 01:03:23,964 И като цяло, нещо обяснителен е добро, така че аз ще 1537 01:03:23,964 --> 01:03:25,060 го наричат ​​куб. 1538 01:03:25,060 --> 01:03:27,180 След това трябва да се уточни какво ще се върне, какво е 1539 01:03:27,180 --> 01:03:28,240 неговата продукция ще бъде. 1540 01:03:28,240 --> 01:03:29,595 И ние нямаме още, че много опции. 1541 01:03:29,595 --> 01:03:32,260 Int, Чар, флоат, булев, низ. 1542 01:03:32,260 --> 01:03:34,260 За сега, аз отивам да се придържаме с вътр, защото аз го искам 1543 01:03:34,260 --> 01:03:35,880 да се върне цяло число. 1544 01:03:35,880 --> 01:03:38,770 След това трябва да се уточни какво своите ресурси, ако има такива, са. 1545 01:03:38,770 --> 01:03:41,570 И ако куб приема аргумент, взема нещо средно между 1546 01:03:41,570 --> 01:03:44,970 скоби, трябва да се даде този аргумент име, така че 1547 01:03:44,970 --> 01:03:47,860 може да се нарече нещо като сте прилагат или писане 1548 01:03:47,860 --> 01:03:50,550 тази функция, а вие трябва да му се даде вид, което в този 1549 01:03:50,550 --> 01:03:51,810 случай ще бъде Int. 1550 01:03:51,810 --> 01:03:54,690 Така че по-кратко, куб е функция, която приема цяло число 1551 01:03:54,690 --> 01:03:57,560 като вход и връща целочислена като продукция. 1552 01:03:57,560 --> 01:03:59,240 >> Така че какво прави с този вход? 1553 01:03:59,240 --> 01:04:03,710 Е, в ред 14, декларирам променлива наречена продукция, и аз 1554 01:04:03,710 --> 01:04:07,410 я зададете стойност, вход пъти вход пъти вход. 1555 01:04:07,410 --> 01:04:11,490 И тогава се върна изход. 1556 01:04:11,490 --> 01:04:14,890 И така, как мога да използвам това? 1557 01:04:14,890 --> 01:04:19,210 Какво мога да променя тези символи се осветяват, он-лайн 1558 01:04:19,210 --> 01:04:21,006 7 да бъде, не мислиш ли? 1559 01:04:21,006 --> 01:04:21,800 ПУБЛИКАТА: недоловим. 1560 01:04:21,800 --> 01:04:25,570 Дейвид Дж. Малан: Да, така че куб на х. 1561 01:04:25,570 --> 01:04:28,290 Така че х е променлива, което означава, че има някаква стойност. 1562 01:04:28,290 --> 01:04:30,190 За щастие, това е от тип цяло число. 1563 01:04:30,190 --> 01:04:34,280 И тъй като х е едно цяло число, това означава, че може да премине в куб. 1564 01:04:34,280 --> 01:04:39,500 И въпреки, че аз съм висш стойността на х със стойността 1565 01:04:39,500 --> 01:04:42,780 куб х, както е случая до този момент, по всяко време 1566 01:04:42,780 --> 01:04:46,150 има знак за равенство и линия на код, нещата в дясно 1567 01:04:46,150 --> 01:04:49,090 ще се изпълни, и после го възлага на 1568 01:04:49,090 --> 01:04:50,150 стойност в ляво. 1569 01:04:50,150 --> 01:04:52,950 Така че цел на операциите е, както се надяваме. 1570 01:04:52,950 --> 01:04:56,620 Така че тази работа? 1571 01:04:56,620 --> 01:04:58,410 Е, позволете ми да сляза тук. 1572 01:04:58,410 --> 01:04:59,970 Нека отваря терминален прозорец. 1573 01:04:59,970 --> 01:05:03,610 Нека правим увеличение, Enter. 1574 01:05:03,610 --> 01:05:07,140 "Присъщо декларация на функция" куб "е невалиден 1575 01:05:07,140 --> 01:05:13,700 C99 "Като настрана, c99 се отнася до езика C, тъй като е 1576 01:05:13,700 --> 01:05:16,790 определени през 1999 г., което е актуализация версия от 1577 01:05:16,790 --> 01:05:19,360 1989 г., което е актуализация в сравнение с оригинала. 1578 01:05:19,360 --> 01:05:21,740 Така че това, че всички средства. 1579 01:05:21,740 --> 01:05:24,250 >> И така, какво означава това, че "имплицитно декларация за 1580 01:05:24,250 --> 01:05:26,790 функция "куб" е невалиден? "Това е точно тук. 1581 01:05:26,790 --> 01:05:28,430 Това е точно там в линия 12. 1582 01:05:28,430 --> 01:05:30,460 ПУБЛИКАТА: недоловим. 1583 01:05:30,460 --> 01:05:30,730 Дейвид Дж. Малан: Какво е това? 1584 01:05:30,730 --> 01:05:32,470 ПУБЛИКАТА: Това не е преди. 1585 01:05:32,470 --> 01:05:33,540 Дейвид Дж. Малан: Това не е преди. 1586 01:05:33,540 --> 01:05:34,740 Така че това е нещо. 1587 01:05:34,740 --> 01:05:38,190 С е много глупаво, или C компилатори са много глупаво. 1588 01:05:38,190 --> 01:05:41,060 Те наистина само това, което ви казвам тях да направят. 1589 01:05:41,060 --> 01:05:44,770 А те, по-специално, да чете само кода си отгоре до долу, 1590 01:05:44,770 --> 01:05:45,620 ляво на дясно. 1591 01:05:45,620 --> 01:05:49,140 Така че, ако компилатора, звъня, чете кода си, ред 1, 1592 01:05:49,140 --> 01:05:50,120 разбира как да направите това. 1593 01:05:50,120 --> 01:05:50,940 О, тук идва основната. 1594 01:05:50,940 --> 01:05:53,000 Добре, нека вървим напред и да декларирате променлива х. 1595 01:05:53,000 --> 01:05:54,160 Позволете ми да изкара нещо. 1596 01:05:54,160 --> 01:05:55,890 Линия 7, какво по дяволите е куб? 1597 01:05:55,890 --> 01:05:58,230 Това не е обявена в stdio.h. 1598 01:05:58,230 --> 01:06:00,950 Той не идва с В. Нямам представа какво да правя. 1599 01:06:00,950 --> 01:06:03,960 И така звъня само спасява закъсали и излез с това съобщение за грешка. 1600 01:06:03,960 --> 01:06:05,850 Така че ние може да се определи това по няколко начина. 1601 01:06:05,850 --> 01:06:10,530 Ние можем да учим звъня куб е, като просто се движат, където 1602 01:06:10,530 --> 01:06:11,820 декларация. 1603 01:06:11,820 --> 01:06:14,640 Така че аз нарязани и че сте го поставили на върха на главната. 1604 01:06:14,640 --> 01:06:17,770 Сега осъзнавам, че точно защото основният вече не е на първо място, това е 1605 01:06:17,770 --> 01:06:19,150 все още изпълняват по подразбиране. 1606 01:06:19,150 --> 01:06:20,060 Основно е основният. 1607 01:06:20,060 --> 01:06:21,022 Това е името на функцията по подразбиране. 1608 01:06:21,022 --> 01:06:22,930 Това не е от значение, когато е в файл. 1609 01:06:22,930 --> 01:06:26,910 Но поне сега звъня е виждал куб, преди да го използвате. 1610 01:06:26,910 --> 01:06:28,500 Така че нека да видим дали звъня сега е по-щастлив. 1611 01:06:28,500 --> 01:06:31,410 Направете увеличение, тя съставя този момент. 1612 01:06:31,410 --> 01:06:33,060 >> Нека тече нарастване. 1613 01:06:33,060 --> 01:06:34,810 И наистина, тя изглежда да се работи. 1614 01:06:34,810 --> 01:06:36,810 Сега, вие може да дойде със сценарии в крайна сметка, когато 1615 01:06:36,810 --> 01:06:38,650 това не е възможно да се сложи на всяка функция 1616 01:06:38,650 --> 01:06:39,740 над всяка друга функция. 1617 01:06:39,740 --> 01:06:42,140 Ще се заби в този безкраен цикъл, в действителност, 1618 01:06:42,140 --> 01:06:43,480 когато този човек иска да бъде тук, но това 1619 01:06:43,480 --> 01:06:44,390 човек трябва да бъде там. 1620 01:06:44,390 --> 01:06:45,830 Така че това не винаги работи. 1621 01:06:45,830 --> 01:06:49,020 Така че, за щастие, C има по-елегантно решение. 1622 01:06:49,020 --> 01:06:50,790 Отивам да поставите този гърба, където си беше, само защото аз 1623 01:06:50,790 --> 01:06:53,390 предпочитате, като въпрос на принцип, че основната винаги да бъде 1624 01:06:53,390 --> 01:06:55,550 в горната част, защото това е хубаво да се види какво тази програма 1625 01:06:55,550 --> 01:06:56,920 прави по подразбиране. 1626 01:06:56,920 --> 01:06:58,950 И това, което аз ще направя тук, е да декларира това, което се нарича 1627 01:06:58,950 --> 01:07:00,250 прототип. 1628 01:07:00,250 --> 01:07:05,730 Отивам да заявя функция куб, като буквално 1629 01:07:05,730 --> 01:07:07,180 копиране и поставяне. 1630 01:07:07,180 --> 01:07:08,290 Всъщност, това не е буквално. 1631 01:07:08,290 --> 01:07:13,060 Така буквално копиране и вмъкване на ред 15 1632 01:07:13,060 --> 01:07:15,160 над линията 6. 1633 01:07:15,160 --> 01:07:17,010 Няма значение какво линия завършва на. 1634 01:07:17,010 --> 01:07:18,380 Това се случва да бъде на линия 4. 1635 01:07:18,380 --> 01:07:19,950 Но това не трябва да бъде преди главната. 1636 01:07:19,950 --> 01:07:21,150 Но забележете разликата. 1637 01:07:21,150 --> 01:07:24,100 Линия 4 завършва с точка и запетая, което означава, хей, 1638 01:07:24,100 --> 01:07:27,510 Звъня, вземете моята дума за това, че съществува функция 1639 01:07:27,510 --> 01:07:31,350 куб, който заема вътр и връща Int. 1640 01:07:31,350 --> 01:07:33,020 Но аз няма да ви кажа какво е още. 1641 01:07:33,020 --> 01:07:35,180 Просто знам, че обещавам да ви кажа, в крайна сметка. 1642 01:07:35,180 --> 01:07:38,490 И наистина, сега е добре, че това е по-долу. 1643 01:07:38,490 --> 01:07:41,275 >> Така че това е по-добре, защото тогава в горната част на 1644 01:07:41,275 --> 01:07:44,240 файл, можете да издърдорвам, бързо огън, един ред 1645 01:07:44,240 --> 01:07:46,470 всеки, какви са имената на вашите функции, каква е тяхната 1646 01:07:46,470 --> 01:07:49,120 входовете са, какви са техните изходи. 1647 01:07:49,120 --> 01:07:52,210 И за да бъде по-ясно, вход обикновено означава аргумент или 1648 01:07:52,210 --> 01:07:54,110 параметър, синоними. 1649 01:07:54,110 --> 01:07:56,890 Изход означава връщане стойност, това, което го прави 1650 01:07:56,890 --> 01:07:58,700 ръка обратно към мен. 1651 01:07:58,700 --> 01:08:03,420 Така че в този случай тук, куб е обявен в горната част, но 1652 01:08:03,420 --> 01:08:06,940 определено, иначе известни като изпълнени, на дъното. 1653 01:08:06,940 --> 01:08:09,620 Така че сега нека се върнем тук и отново да стартирате тази. 1654 01:08:09,620 --> 01:08:13,430 Така че сега ме пусна напред и изпълнете отново да пуснете отново увеличение. 1655 01:08:13,430 --> 01:08:16,500 И сега не изглежда да се работи добре. 1656 01:08:16,500 --> 01:08:19,450 Така че сега можем да вървим напред и фактор нещо като 1657 01:08:19,450 --> 01:08:23,720 бира пример в тази четвърта версия. 1658 01:08:23,720 --> 01:08:25,590 Така че нека превъртете надолу. 1659 01:08:25,590 --> 01:08:28,149 И забележите, че на този урок в сърцето си точно сега. 1660 01:08:28,149 --> 01:08:31,140 Фактът, че аз пеех същата строфа отново и 1661 01:08:31,140 --> 01:08:34,130 отново и отново, на една и съща линия на припева в песента, филц 1662 01:08:34,130 --> 01:08:36,439 Както и защо не мога да направя, че от фактор във функция? 1663 01:08:36,439 --> 01:08:38,470 И наистина, това трябва да бъде един от мотивацията. 1664 01:08:38,470 --> 01:08:40,960 Освен факта, че някой друг в света, може да искате 1665 01:08:40,960 --> 01:08:42,390 да използвате функцията куб - 1666 01:08:42,390 --> 01:08:44,560 това е една добра причина да вземе предвид нещо и напишете 1667 01:08:44,560 --> 01:08:45,720 собствена потребителска функция - 1668 01:08:45,720 --> 01:08:48,720 ако има парче код в програмата си, че просто прави 1669 01:08:48,720 --> 01:08:51,370 концептуален смисъл, че някак си искам да му се даде 1670 01:08:51,370 --> 01:08:53,740 име - като в този случай, хор - 1671 01:08:53,740 --> 01:08:57,380 тогава също така могат да пишат, че като отделна функция. 1672 01:08:57,380 --> 01:08:59,560 Не е нужно да напиша всичко в основната ако просто 1673 01:08:59,560 --> 01:09:02,609 чувства чиста, да се отделят и да му дадете име. 1674 01:09:02,609 --> 01:09:05,529 >> Така че в този случай, обърнете внимание, че имам коментар на върха 1675 01:09:05,529 --> 01:09:06,859 тази функция, която просто пее за 1676 01:09:06,859 --> 01:09:08,630 брой бутилки. 1677 01:09:08,630 --> 01:09:10,609 Забележете, че тук не трябва да се обадя тези 1678 01:09:10,609 --> 01:09:12,520 неща вход и изход. 1679 01:09:12,520 --> 01:09:16,090 В действителност, този път аз току що се обади моят принос б за бутилка. 1680 01:09:16,090 --> 01:09:19,960 И забележи тук, невалидни подсказва какво? 1681 01:09:19,960 --> 01:09:21,309 Този рефрен - 1682 01:09:21,309 --> 01:09:22,660 ПУБЛИКАТА: Не го върне. 1683 01:09:22,660 --> 01:09:23,870 Дейвид Дж. Малан: Не връщат стойност. 1684 01:09:23,870 --> 01:09:26,800 И наистина, функции не трябва да се връщат стойности. 1685 01:09:26,800 --> 01:09:28,060 Те просто могат да направят нещо. 1686 01:09:28,060 --> 01:09:30,270 Те могат да имат така наречените нежелани реакции, които в този 1687 01:09:30,270 --> 01:09:33,109 случай е само един куп за отпечатване на екрана. 1688 01:09:33,109 --> 01:09:36,580 Така забележите, че този код тук, аз буквално открадна от 1689 01:09:36,580 --> 01:09:37,680 предишния пример. 1690 01:09:37,680 --> 01:09:39,930 Единствената разлика е, вместо да използвам като моя 1691 01:09:39,930 --> 01:09:42,890 променлива, аз съм сега с помощта б като моя променлива. 1692 01:09:42,890 --> 01:09:45,880 Така че аз имам б тук, имам б тук, имам б 1693 01:09:45,880 --> 01:09:47,109 минус 1 тук. 1694 01:09:47,109 --> 01:09:49,279 Но кодът е точно същото. 1695 01:09:49,279 --> 01:09:52,529 Но само за да ви покажа как можем да използваме това, пусни ме 1696 01:09:52,529 --> 01:09:56,780 напред и действително да промени това да бъде за контур. 1697 01:09:56,780 --> 01:10:03,850 за (INT I = I>, аз -). 1698 01:10:03,850 --> 01:10:06,230 >> Така че аз съм откраднал, че от предишния пример. 1699 01:10:06,230 --> 01:10:08,970 Преди това той е в линия 37, че щях да започна 1700 01:10:08,970 --> 01:10:10,640 пее тази досадна песен. 1701 01:10:10,640 --> 01:10:15,810 Но вместо това, аз съм просто сега ще се обадя хор от I. 1702 01:10:15,810 --> 01:10:16,870 Готово. 1703 01:10:16,870 --> 01:10:20,260 Така че сега във всяко повторение на този цикъл, наричат ​​това 1704 01:10:20,260 --> 01:10:22,220 функция, хор, че се случи да пиша. 1705 01:10:22,220 --> 01:10:24,110 Тя не е написана от някой друг преди години. 1706 01:10:24,110 --> 01:10:27,930 Но хор, междувременно, използва ФОРМАТ да отпечатате 1707 01:10:27,930 --> 01:10:29,840 на тези четири линии. 1708 01:10:29,840 --> 01:10:32,720 Но факта, че аз се обаждам хор отново и отново в 1709 01:10:32,720 --> 01:10:35,900 линия означава, че аз отивам да се получи, в самия край, 1710 01:10:35,900 --> 01:10:39,310 една и съща песен, тъй като имам до този момент. 1711 01:10:39,310 --> 01:10:42,130 Така че по-кратко, сега, ако погледнем назад в моя код, въпреки че 1712 01:10:42,130 --> 01:10:44,240 функционално това е еквивалентно на, забележете, че това е 1713 01:10:44,240 --> 01:10:46,020 започват да стават още по-разбираеми. 1714 01:10:46,020 --> 01:10:48,410 Аз не знам точно как GetInt 1715 01:10:48,410 --> 01:10:49,250 се изпълнява. 1716 01:10:49,250 --> 01:10:52,050 Честно казано, аз не знам как се изпълнява хор. 1717 01:10:52,050 --> 01:10:52,970 Но това няма значение за мен. 1718 01:10:52,970 --> 01:10:55,620 Не ми пука, защото сега мога да сортирате, като човек, прочетете 1719 01:10:55,620 --> 01:10:57,050 това от горе до долу. 1720 01:10:57,050 --> 01:10:59,950 И тъй като функциите са именувани според това, което те 1721 01:10:59,950 --> 01:11:02,910 направи, кодът е все по-четлив. 1722 01:11:02,910 --> 01:11:05,190 Нашите програми получават много по-сложно - 1723 01:11:05,190 --> 01:11:07,220 до края на семестъра, ще се пише стотици линии 1724 01:11:07,220 --> 01:11:10,970 код в езици като PHP и JavaScript и като - 1725 01:11:10,970 --> 01:11:13,550 ще откриете, че това е много по-лесно, отколкото да следите 1726 01:11:13,550 --> 01:11:14,080 какво сте направили. 1727 01:11:14,080 --> 01:11:15,810 И когато започнете да си сътрудничи с приятели или 1728 01:11:15,810 --> 01:11:19,010 партньори или колеги, вие ще бъдете в състояние да напиша много повече 1729 01:11:19,010 --> 01:11:22,910 масивни програми, като започне да упражнява тези основни 1730 01:11:22,910 --> 01:11:23,990 градивни блокове. 1731 01:11:23,990 --> 01:11:25,550 >> Така че с това каза, защо не сме го наричат ​​на ден? 1732 01:11:25,550 --> 01:11:27,190 И ние ще се видим в сряда. 1733 01:11:27,190 --> 01:11:33,611 Аплодисменти]