1 00:00:08,119 --> 00:00:11,630 [Powered by Google Translate] David J. малая: Усё правільна, гэта 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 Я збіраюся набраць 617-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 David J. малая: Так ён сказаў на 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 David J. малая: Мы будзем націсніце 1 для чацвярых. 19 00:00:59,590 --> 00:01:03,610 CS50: Наступны шатл сыходзіць у гэтую самую хвіліну ў PM 1:10 і 20 00:01:03,610 --> 00:01:09,820 Затым у 1:20 вечара, 1:30, 1:40 вечара. 21 00:01:09,820 --> 00:01:12,030 Гэта CS50. 22 00:01:12,030 --> 00:01:15,570 >> David J. малая: Так што гэта голас 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 у C. І вы на самой справе бег, увёўшы Shuttle Хлопчык на 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 >> Напрыклад, там, версія СМС 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 варта А і В, дзе А і B паходжання з'яўляецца 48 00:02:18,350 --> 00:02:19,070 пункт прызначэння - 49 00:02:19,070 --> 00:02:21,030 Напрыклад, Boylston касмічнай 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 з API-інтэрфейсы, інтэрфейсы прыкладнага праграмавання. 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 Так, напрыклад, гэты API Shuttle Boy старонцы тут, якія 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 Такім чынам, вы можаце папрасіць Shuttle Boy для ўсіх дадзеных на ўсіх 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 Хлопчык сам 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 >> Але зноў жа, гэта ўсяго толькі адна з некалькіх уласных API, 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 Я, чалавек, зрабіў сабе так, што ў лекцыі і пасля 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 Цяпер, З, шматрадковага каментары, успомнім, што на лініі 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 David J. малая: Добра, добра. 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 Так Printf, адным з найбольш распаўсюджаных з іх выкарыстаць, вядома, 142 00:06:14,300 --> 00:06:15,840 на ранняй стадыі, з гэтай бібліятэкі ёсць. 143 00:06:15,840 --> 00:06:19,290 Калі я выключаю, што радкі кода, Clang будзе крычаць 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 Мы не паведаміў кампілятару, што выглядае Printf 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 дражняць адзін ад аднаго, што Int і тое, што пустэча. 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 David J. малая: Цалкам дакладна. 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 David J. малая: проста зменіце яго менш. 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 2. коскі. 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 David J. малая: Back туды? 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 >> David J. малая: ініцыялізацыя. 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, таму што я паказаў 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 памяці, дастатковы аб'ём аператыўнай памяці, каб адпавядаць шэрагу, а затым пакласці 213 00:08:53,660 --> 00:08:56,130 нумар 0 у тым, што кавалак памяці. 214 00:08:56,130 --> 00:08:59,100 І як у бок, наколькі вялікая Int звычайна, па меншай меры ўнутры 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 David J. малая: 32 біт. 218 00:09:01,670 --> 00:09:04,890 Значыць, мне 32 біт, інакш вядомы як 4 байта, 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 прырашчэнне, якое ў дадзеным выпадку я + +. 230 00:09:33,840 --> 00:09:35,580 Цяпер, яна не павінна быць я + +. 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 David J. малая: Гэта будзе свайго роду бясконцы цыкл, 236 00:09:44,060 --> 00:09:47,720 калі нам пашанцуе пасля негатыўнага 2000000000 або каля таго. 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 І я збіраюся сабраць яго ўручную з дапамогай Clang на дадзены момант. 259 00:10:40,030 --> 00:10:44,880 І я збіраюся сабраць гэта як buggy1.c, Enter. 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 David J. малая: Так. 264 00:10:54,240 --> 00:10:55,420 Так што гэта на самай справе называецца a.out. 265 00:10:55,420 --> 00:10:57,480 Так Нагадаем калі вы проста запусціце Clang, дзе Clang з'яўляецца 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 Так бо калі я Ls - 269 00:11:05,030 --> 00:11:05,510 упс. 270 00:11:05,510 --> 00:11:07,680 І я didn't - чорна-белы пытання некаторыя з 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 Аўдыторыя: Захаваць. 279 00:11:26,620 --> 00:11:27,390 David J. малая: Ратуйце маю файл. 280 00:11:27,390 --> 00:11:31,520 Так што лёгка вырашаецца, націснуўшы Control S, ці збіраецца 281 00:11:31,520 --> 00:11:33,450 Файл, Захаваць як і ў большасці праграм. 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 David J. малая: А, добра. 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 >> David J. малая: Цалкам дакладна. 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 David J. малая: Толькі адна радок. 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 Дазвольце мне ісці наперад і паўторна запусціць Clang. 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 Як я магу сказаць Clang на самай справе даць мне імя файла 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 David J. малая: ОК, так што я магу на самой справе ўзяць вельмі 340 00:13:47,810 --> 00:13:51,000 зручны ярлык і проста напісаць зрабіць buggy2. 341 00:13:51,000 --> 00:13:53,840 Я не ўдакладняюць. C у гэтым выпадку, і націсніце Enter. 342 00:13:53,840 --> 00:13:58,530 І тое, што робіць робіць, ён кампілюе buggy2.c для мяне 343 00:13:58,530 --> 00:14:00,260 Clang просяць гэта зрабіць. 344 00:14:00,260 --> 00:14:05,100 У прыватнасці, ён называе Clang, ён працуе Clang выкарыстанні нашмат больш, 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 >> Карацей кажучы, Clang гэта кампілятар. 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 Ls ў двукоссях там? 368 00:15:00,020 --> 00:15:01,710 David J. малая: OK. 369 00:15:01,710 --> 00:15:05,880 Калі я набраў Ls ў двукоссі, што было мне рабіць некаторыя магіі 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 Мы зробім гэта цяпер - Суда ням-у абнаўленне 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 Так працуе Суда абнаўленне ням, як мы кажам вам, каб зрабіць у 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 David J. малая: Добры пытанне. 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 ступені, слова BOOL. 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 David J. малая: Добры пытанне. 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 І тады яна выконвае адпаведныя каманды Clang, 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 Clang, так што я не прыйдзецца ўводзіць яго сабе. 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 Appliance, вы 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 гадоў, Ad-платы прыкладна на 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 вельмі добра на пошук у Google. 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 David J. малая: Самае смешнае аб гэтым сайце, калі 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 шмат чаго трэба зрабіць, гэта 4:00 раніцы, вы вычарпаныя, і вы 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 І праявы гэтага, на жаль ўключаць Студэнцкая 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 Англійская, проста выдатна, псевдокод. 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 PSET 3, PSET 4, PSET 5, 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 David J. малая: Гэты сайт быў вялікім. 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 Свет Scratch. 640 00:25:47,260 --> 00:25:49,860 І ў свеце Scratch, у нас ёсць гэтая патрэба часам 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 David J. малая: Добра. 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 мець прырашчэнне, мы на самай справе трэба 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 = 0; I < 701 00:28:30,020 --> 00:28:33,480 ой, 10; я + +). 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 Дазвольце мне запусціць цыкл, і цяпер Enter. 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 Мне не хапае прырашчэння. 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 >> David J. малая: Добра. 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 меры робіць Clang спыніць скардзіцца. 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 "Пераменная 'я' не ініцыялізаваны пры выкарыстанні тут". Добра, 754 00:30:21,130 --> 00:30:22,340 гэта даволі відавочна. 755 00:30:22,340 --> 00:30:25,510 Initialized проста азначае, паклаўшы яе роўнай каштоўнасці. 756 00:30:25,510 --> 00:30:30,820 І мы не зрабілі гэтага, таму дазвольце мне паспрабаваць роўная 0. 757 00:30:30,820 --> 00:30:35,030 Зараз давайце паспрабуем гэта зноў і зноў запусціць Clang. 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 любое прырашчэнне. 763 00:30:47,030 --> 00:30:48,780 Так як жа я магу зрабіць прырашчэнне? 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 >> David J. малая: Так што гэта дакладна не Int. 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 Але цяпер, ведаю, што ёсць гэты трэці тып, вядомы як DO- 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 Дазвольце мне на самай справе змяніць гэтую сітуацыю да DO-цыклу. 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 я = 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 Так што я буду выкарыстоўваць Printf для гэтага. 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 Е ("Дзякуй, я гэта% D", I). 848 00:34:18,929 --> 00:34:21,350 Так што гэта простая праграма запытвае ў карыстальніка Int, 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 "Выкарыстанне неаб'яўленай ідэнтыфікатар" я "". Гэта дзіўна. 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 >> David J. малая: Цалкам дакладна. 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 І калі вы робіце нешта накшталт гэтага, дзе вы аб'яўляеце Int 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-C-O-P-E. Гэта ўжо не ў правільным кантэксце. 874 00:35:35,030 --> 00:35:37,940 Так што цяпер няма я, так што гэта як бы ў нас не было нават 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 David J. малая: Так. 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 калі Clang спыняе крычаць. 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 "GetInt" недапушчальны ў C99. "Што гэта такое? 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 David J. малая: Так. 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 "Дайце мне Int." Я дам яму 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 David J. малая: Прабачце? 920 00:37:07,830 --> 00:37:08,570 Залы: Вы далі яму радок. 921 00:37:08,570 --> 00:37:08,990 David J. малая: Так. 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 Відавочна, што гэта не Int. 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; I <10; + + я, і я 951 00:38:19,245 --> 00:38:26,370 зрабіць Printf зорак, як гэта, і затым зачыніце хлопец, і цяпер 952 00:38:26,370 --> 00:38:30,410 Printf я цяпер - 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 David J. малая: Так што гэта яшчэ адзін няправільны ідэнтыфікатар, 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 Калі п менш за 1, то я проста буду крычаць на карыстальніка, 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 David J. малая: поспех, вось і ўсё. 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 Цяпер у мяне ёсць бясконцы запас, або па крайняй меры 4000000000 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 Такім чынам, мы збіраемся, каб проста вярнуць 1 на дадзены момант. 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 п, колькасць карыстальнікаў набралі, выканайце наступныя дзеянні, каб 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 Цяпер, гэта ў значнай ступені тыдні адзін матэрыял зараз, з Printf. 1087 00:43:47,520 --> 00:43:51,770 Такім друку "% D бутэлек піва на сцяне". Друк "% D 1088 00:43:51,770 --> 00:43:54,990 бутэлек піва. "" Вазьміце адну ўніз, перадаваць яго ". для друку 1089 00:43:54,990 --> 00:43:58,880 "% D бутэлек піва на сцяне". Так што гэта яшчэ% D, але 1090 00:43:58,880 --> 00:44:02,770 заўважыць, што аргумент Printf мяняецца. 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 David J. малая: Так, гэта пойдзем адмоўным. 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 Калі ласка, увядзіце, 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 David J. малая: Так, так не я, таму што прыйшло ў галаву, 1126 00:45:26,510 --> 00:45:29,350 Мне ведаеце што, я пытаюся ў карыстальніка п, і тады я 1127 00:45:29,350 --> 00:45:33,580 мяркуючы ў роўнай п, а затым я мяняю я, але я ніколі не 1128 00:45:33,580 --> 00:45:34,590 дакранаючыся п раз. 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 наперад і раздрукаваць тую ж песню, праходзячы п да Printf як 1135 00:45:56,180 --> 00:46:00,210 Другі аргумент, і п - 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, п пачынаецца на 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 бутэлек піва на сцяне ". Канца, таму што я і зрабіў 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 David J. малая: О, усё ў парадку. 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 David J. малая: Так, гэта займае менш месцы, дакладна? 1164 00:46:59,530 --> 00:47:02,900 У той час як версія, якая выкарыстоўваецца 32 біт для п, а потым яшчэ 1165 00:47:02,900 --> 00:47:07,680 32 біта для мяне. 1166 00:47:07,680 --> 00:47:10,060 Версія другая выкарыстоўвае толькі 32 біта для п, так што 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 Аўдыторыя: Вы павінны выкарыстоўваць дадатковыя радкі кода пры п -. 1172 00:47:25,240 --> 00:47:26,090 >> David J. малая: Добра, вядома. 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 >> David J. малая: Так. 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 Як "Дзякуй за гульню 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 Той факт, што вы мутаваў ці змяніўся п на кожным 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 як і я, толькі выгляд у прынцыпе, гэта, напэўна, добры 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 Кампутар, як, двума гігабайтамі аператыўнай памяці ў гэтыя дні, 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 гігабайтам аператыўнай памяці, 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 , А не проста сказаць дужках з, як "бутэлька" 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 або "бутэльку", тым самым выкарыстоўваючы гэтыя запаўняльнікі% сённяшніх. 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, а затым 1, або 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 >> David J. малая: Цалкам дакладна. 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 David J. малая: Так, так, верагодна, 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 вы можаце проста выкарыстоўваць коску і зрабіць гэта ў С. Усе 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 1 ўніз, перадаваць яго, 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 David J. малая: 2 і 1. 1347 00:54:46,190 --> 00:54:48,180 Гэта не 1, а не 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 David J. малая: "Бутэлькі", так і для двух бутэлек. 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 David J. малая: "Бутэлька", адмысловая. 1360 00:55:20,430 --> 00:55:25,160 >> Добра, давайце маштаб, вярнуцца сюды, паўторныя зрабіць, 1361 00:55:25,160 --> 00:55:28,590 паўторныя 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 David J. малая: Ах, выдатная кропка. 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 неяк спрабаваў атрымаць доступ да памяці, аператыўнай памяці ў кампутары, 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 >> David J. малая: "Бутэлькі", таму што ў агульным выпадку, 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 Вось так. 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 бутэлькі, 1 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 (Я == 1)? 1418 00:57:39,900 --> 00:57:47,820 "Бутэлька", інакш "бутэлькі". String s2 атрымлівае (я == 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 Так што C мае некаторыя цэтлікі, як гэта. 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 Так што, калі я роўная 1, а затым пайсці далей і называюць гэта "бутэлькі". І 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; Printf х% й, новая лінія, х. 1487 01:01:13,670 --> 01:01:16,780 Так што я друкую хутка, але накшталт знаёмыя рэчы цяпер. 1488 01:01:16,780 --> 01:01:18,830 Тады я буду рабіць X + +. 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 Так што я мог бы выкарыстаць тое, што завецца функцыяй ваеннапалонных, але я не 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 Так што я кубатуры значэнне, памножыўшы яе на сябе зноў 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 Тут, у якой гэтая рэч вымярэння кубатуры множання ліку 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 і піша Printf, так што астатняй свет можа яго выкарыстоўваць, 1516 01:02:33,120 --> 01:02:36,160 Чаму б нам не сесці і напісаць функцыю, называецца кубам 1517 01:02:36,160 --> 01:02:39,250 , Што робіць гэта вымярэння кубатуры для нас, таму мы не павінны ўручную 1518 01:02:39,250 --> 01:02:41,500 ажыццяўленне паняцце кубатуры значэння тут? 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 Гэтая функцыя будзе вяртаць Int. 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, Char, дробны, лагічны, радок. 1542 01:03:32,260 --> 01:03:34,260 А зараз я збіраюся прытрымлівацца Int, таму што я хачу, 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 David J. малая: Так, так кубе х. 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 І таму х INT, гэта азначае, што я магу перадаць яго ў куб. 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 David J. малая: Што гэта? 1584 01:05:30,730 --> 01:05:32,470 Аўдыторыя: Гэта не раней. 1585 01:05:32,470 --> 01:05:33,540 David J. малая: Гэта не раней. 1586 01:05:33,540 --> 01:05:34,740 Дык вось у чым справа. 1587 01:05:34,740 --> 01:05:38,190 З выглядам дурны, ці кампілятараў з'яўляюцца свайго роду дурным. 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 Так што, калі кампілятар, Clang, чытае ваш код, лінія 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 І так Clang проста спыняецца і выходзіць з паведамленнем пра памылку. 1600 01:06:03,960 --> 01:06:05,850 Такім чынам мы можам выправіць гэта ў некалькі спосабаў. 1601 01:06:05,850 --> 01:06:10,530 Мы можам навучыць Clang, што куб з'яўляецца проста перасоўванне якіх 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 Але па крайняй меры цяпер Clang бачыў куба, перш чым выкарыстоўваць яго. 1610 01:06:26,910 --> 01:06:28,500 Такім чынам, давайце паглядзім, калі Clang з'яўляецца шчаслівым цяпер. 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 Clang, паверце мне на слова, што існуе функцыя 1639 01:07:27,510 --> 01:07:31,350 называецца кубам, які прымае і вяртае Int 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 David J. малая: не вяртае значэння. 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 -). 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 Але замест гэтага, я проста хачу, каб зараз называюць хорам я. 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 Але хор, тым часам, выкарыстоўвае Printf для друку 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 [Апладысменты]