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