1 00:00:00,000 --> 00:00:03,353 >> [За възпроизвеждане на музика] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 DAVID Malan: Здравейте, всички. 4 00:00:06,050 --> 00:00:07,777 Това е supersection CS50 е. 5 00:00:07,777 --> 00:00:09,860 Целеви раздели няма да започне още една седмица. 6 00:00:09,860 --> 00:00:11,580 И така, днес, аз съм тук with-- 7 00:00:11,580 --> 00:00:12,122 >> MARIA: Maria. 8 00:00:12,122 --> 00:00:14,163 DAVID Malan: --to всъщност да разгледаме проблема 9 00:00:14,163 --> 00:00:16,110 зададете една, на курса първите седмици на материал, 10 00:00:16,110 --> 00:00:19,780 да сте ориентирани с CS50 IDE, малко на Linux, операционната система, която е 11 00:00:19,780 --> 00:00:22,290 работи на IDE, както и разгледаме някои от прехода 12 00:00:22,290 --> 00:00:25,730 от Scratch да C водеща до проблем зададете една. 13 00:00:25,730 --> 00:00:28,340 >> Така че, без повече приказки, в проблем зададете една, 14 00:00:28,340 --> 00:00:30,520 започваш да бъде въведена CS50 IDE, която 15 00:00:30,520 --> 00:00:33,230 е този уеб-базирани програмиране среда, която ние използваме, за 16 00:00:33,230 --> 00:00:34,280 да пишат програми. 17 00:00:34,280 --> 00:00:37,280 Той е проектиран да изглежда много напомня на типичен компютър 18 00:00:37,280 --> 00:00:39,430 система, работеща операционна система, наречена Linux. 19 00:00:39,430 --> 00:00:42,440 Но това е в т.нар облака, което означава всички в класа 20 00:00:42,440 --> 00:00:45,100 всъщност може да има своя собствена сметка и да го използвате, както добре. 21 00:00:45,100 --> 00:00:48,950 >> Така че повечето от вас вероятно никога не са използвали на Linux среда, преди или може би 22 00:00:48,950 --> 00:00:50,447 дори и на командния ред среда. 23 00:00:50,447 --> 00:00:52,280 И на командния ред среда е различна. 24 00:00:52,280 --> 00:00:53,200 Всичко е текстова. 25 00:00:53,200 --> 00:00:54,730 Това е всички команди от клавиатурата. 26 00:00:54,730 --> 00:00:59,480 И това не е Mousing, никакви икони, без диалог прозорци, никакви менюта. 27 00:00:59,480 --> 00:01:00,212 Това е чисто текст. 28 00:01:00,212 --> 00:01:01,920 Така че на първо, той вид на чувства като стъпка 29 00:01:01,920 --> 00:01:04,434 назад по отношение на сложност. 30 00:01:04,434 --> 00:01:06,600 Но това завършва е много по-мощен, със сигурност, 31 00:01:06,600 --> 00:01:08,510 за компютърен учен, в крайна сметка. 32 00:01:08,510 --> 00:01:09,540 >> Така че нека да разгледаме. 33 00:01:09,540 --> 00:01:13,850 Тук съм в CS50.io, чрез която можете да влезете в CS50 IDE. 34 00:01:13,850 --> 00:01:17,414 И много прилича на Scratch, има три основни области на този екран. 35 00:01:17,414 --> 00:01:20,080 Така че от гледна точка на ляво, имаме какво ще бъде файловия браузър. 36 00:01:20,080 --> 00:01:22,413 А има и тази папка в отгоре, което е точно сега празна 37 00:01:22,413 --> 00:01:24,690 тъй като аз се отървах от всичките ми файлове преди supersection. 38 00:01:24,690 --> 00:01:27,599 И това е мястото, където ние ще спести C файлове, които пишем. 39 00:01:27,599 --> 00:01:30,890 В горната дясна част, имаме място, където всички от нашия код ще се писмено. 40 00:01:30,890 --> 00:01:34,610 И наистина, ако щракнете върху този плюс, това ще ме изберат New File. 41 00:01:34,610 --> 00:01:38,310 И тук мога да започнете да пишете C код или, Наистина, всеки брой на други езици. 42 00:01:38,310 --> 00:01:42,670 >> И след това в долната част, където казва jharvard @ ide50-- и твоя воля 43 00:01:42,670 --> 00:01:45,080 кажа нещо малко different-- какво е този, наречен? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Терминален прозорец. 46 00:01:49,310 --> 00:01:49,570 Да. 47 00:01:49,570 --> 00:01:51,810 Така терминален прозорец е т.нар командния ред 48 00:01:51,810 --> 00:01:55,540 интерфейс, чрез който можете да си взаимодействат с операционната система. 49 00:01:55,540 --> 00:01:58,220 И за сега, ние ще направи много малко използване на this-- 50 00:01:58,220 --> 00:02:01,170 просто да се съберат, за да погледнете съобщения за грешки, които виждаме, 51 00:02:01,170 --> 00:02:02,347 и да тичам нашите програми. 52 00:02:02,347 --> 00:02:04,680 Но в крайна сметка, ние ще да се направи много повече, както добре. 53 00:02:04,680 --> 00:02:07,490 И дори можете да инсталирате софтуер и администриране на вашето работно място 54 00:02:07,490 --> 00:02:09,066 в рамките CS50 IDE, както добре. 55 00:02:09,066 --> 00:02:10,440 Но повече за това някой друг път. 56 00:02:10,440 --> 00:02:12,689 >> Така че нека да вървим напред и да пиша много проста програма, просто 57 00:02:12,689 --> 00:02:15,064 да мине през загряване на hello.c, което е може би 58 00:02:15,064 --> 00:02:16,480 най-простият програма можем да пиша. 59 00:02:16,480 --> 00:02:18,330 Аз вече отвори нов раздел. 60 00:02:18,330 --> 00:02:24,310 Отивам да вървим напред и да казват включва стандартна io.h. 61 00:02:24,310 --> 00:02:25,325 Тогава INT главната (недействителни). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 И тогава ФОРМАТ ("Здравей, свят" наклонена черта п, в близост цитат, 64 00:02:35,200 --> 00:02:39,480 близки скоби и запетая. 65 00:02:39,480 --> 00:02:39,990 >> Всичко е наред. 66 00:02:39,990 --> 00:02:41,700 Така че сега забележите прозореца ми е неозаглавен. 67 00:02:41,700 --> 00:02:44,840 Така че аз съм много бързо ще да отидете до файла, Save. 68 00:02:44,840 --> 00:02:46,910 И това е важно, че Аз наричам това не "здравей". 69 00:02:46,910 --> 00:02:49,243 Така че много често срещана грешка, особено в проблем зададете една, 70 00:02:49,243 --> 00:02:52,530 е случайно обадете програма "вода" или "алчни" или "Марио" 71 00:02:52,530 --> 00:02:53,890 или "кредит" или други подобни. 72 00:02:53,890 --> 00:02:55,970 Но всъщност искате да направите уверете, че имате разширението на файла 73 00:02:55,970 --> 00:02:58,928 защото това е единственият начин, че съставител и също редактор код 74 00:02:58,928 --> 00:03:00,710 знае, че ти си всъщност написването C код. 75 00:03:00,710 --> 00:03:02,280 Така че нека да вървим напред и да кликнете върху Запазване. 76 00:03:02,280 --> 00:03:05,710 >> И сега, твърде, какво CS50 IDE е направил за нас е, че е също 77 00:03:05,710 --> 00:03:07,120 синтаксис подчерта всичко. 78 00:03:07,120 --> 00:03:08,822 Така че това е направено всичко, много колоритен. 79 00:03:08,822 --> 00:03:10,780 И цялата цел на че не е функционален. 80 00:03:10,780 --> 00:03:14,290 Това е просто да се направи очите ми за концептуално различни парчета 81 00:03:14,290 --> 00:03:15,310 на тази програма. 82 00:03:15,310 --> 00:03:17,570 Така че нека да вървим напред и да съставят това. 83 00:03:17,570 --> 00:03:19,490 И мога да компилирате този в няколко начина. 84 00:03:19,490 --> 00:03:22,010 И в една седмица, старата школа начин направихме 85 00:03:22,010 --> 00:03:26,250 тя е буквално в команда line-- "трясък hello.c." 86 00:03:26,250 --> 00:03:27,596 И тогава аз удари Enter. 87 00:03:27,596 --> 00:03:29,720 И нищо не изглежда да се случи в терминален прозорец. 88 00:03:29,720 --> 00:03:32,654 Но това, което е направил промяна в IDE? 89 00:03:32,654 --> 00:03:35,320 Когато отново, IDE просто означава, Интегрирана среда за разработка. 90 00:03:35,320 --> 00:03:38,360 Това е един луксозен начин на казвайки това интегрирано развитие 91 00:03:38,360 --> 00:03:40,620 среда за разработка на софтуер. 92 00:03:40,620 --> 00:03:42,477 И така, какво се е променило в ПС? 93 00:03:42,477 --> 00:03:44,310 Какво забелязахте това е различно, Мария? 94 00:03:44,310 --> 00:03:47,100 >> MARIA: Забелязах нещо под IDE50 папка тук. 95 00:03:47,100 --> 00:03:47,850 >> DAVID Malan: Да. 96 00:03:47,850 --> 00:03:50,230 Така че тук не само имаме ли "hello.c." 97 00:03:50,230 --> 00:03:53,120 Ние също имаме "a.out", което е вид тъпо име за дадена програма. 98 00:03:53,120 --> 00:03:56,430 Но в действителност, това е името по подразбиране за програма, когато просто компилирате кода си 99 00:03:56,430 --> 00:03:59,110 и не казвайте на компилатора какво файл за изход. 100 00:03:59,110 --> 00:04:01,790 Така че, ако искам да изпълня този, I Трябва да кажете на compiler-- 101 00:04:01,790 --> 00:04:05,340 или по-скоро, аз трябва да кажете на работното пространство, че аз 102 00:04:05,340 --> 00:04:09,780 искате да стартирате програмата, наречена "a.out." 103 00:04:09,780 --> 00:04:10,550 Enter. 104 00:04:10,550 --> 00:04:12,474 А има и "здравей, свят. "Сега" ./ ". 105 00:04:12,474 --> 00:04:13,390 всъщност е важно. 106 00:04:13,390 --> 00:04:16,050 Въпреки че обикновено ние само напишете имената на командите, 107 00:04:16,050 --> 00:04:19,060 когато това е програма, вие сте писмено, вие не искате да кажете "./" 108 00:04:19,060 --> 00:04:22,460 защото това изрично указва Linux че искате да стартирате програма, наречена 109 00:04:22,460 --> 00:04:26,930 "a.out", който е в това, когато дот означава тази директория, че аз съм в момента 110 00:04:26,930 --> 00:04:31,600 в, което се случва, да бъде нарича работно пространство, "a.out. 111 00:04:31,600 --> 00:04:35,410 Защото, ако аз просто каза "a.out," Enter, Отивам да се получи "a.out команда не 112 00:04:35,410 --> 00:04:38,035 намерено ", защото computer-- защото аз измислил "a.out;" 113 00:04:38,035 --> 00:04:40,910 тя не дойде с computer-- не знае къде да го търсим, 114 00:04:40,910 --> 00:04:43,590 макар и да е прав под носа ми, така да се каже. 115 00:04:43,590 --> 00:04:44,090 ДОБРЕ. 116 00:04:44,090 --> 00:04:49,910 Така че можем да променим това, за да да бъде "трясък -o здравей hello.c." 117 00:04:49,910 --> 00:04:53,030 И ако аз натиснете влиза, каква програма е това ще изход за мен? 118 00:04:53,030 --> 00:04:55,710 Какво е името на файла? 119 00:04:55,710 --> 00:04:57,500 Да, в гърба. 120 00:04:57,500 --> 00:04:58,479 Това е вярно. "Здравей." 121 00:04:58,479 --> 00:05:00,520 Така "здравей" ще бъде Името на програмата 122 00:05:00,520 --> 00:05:04,610 защото сме използвали т.нар аргумент командния ред, който е само на 123 00:05:04,610 --> 00:05:08,120 начин за промяна на поведението на компилаторът да всъщност изход 124 00:05:08,120 --> 00:05:09,450 специфично име на файла. 125 00:05:09,450 --> 00:05:12,400 И наистина, ако съм я увеличите навън и погледнете тук, 126 00:05:12,400 --> 00:05:17,430 сега имам не само "a.out" и "hello.c", но и "здравей", както добре. 127 00:05:17,430 --> 00:05:22,410 Така че сега мога да направя "./hello," Enter. 128 00:05:22,410 --> 00:05:23,640 А има и "здравей, свят". 129 00:05:23,640 --> 00:05:25,640 Но и това lastly-- сега ще бъде на конгреса 130 00:05:25,640 --> 00:05:27,590 ние използваме в целия семестър, typically-- 131 00:05:27,590 --> 00:05:30,070 е, че може да се каже просто "да здравей." 132 00:05:30,070 --> 00:05:33,370 И наистина, той казва, че е нагоре към днешна дата, защото тя вече съществува. 133 00:05:33,370 --> 00:05:37,860 Нека да вървим напред и да се премахне, с командата RM, както "a.out" - 134 00:05:37,860 --> 00:05:39,644 и да кажа "премахнете обикновен файл a.out?" 135 00:05:39,644 --> 00:05:41,810 Това просто означава, вие сте Наистина ли искате да го изтриете? 136 00:05:41,810 --> 00:05:42,880 Отивам да кажа да. 137 00:05:42,880 --> 00:05:46,690 И тогава аз отивам да се премахне "здравей", но не "hello.c." 138 00:05:46,690 --> 00:05:49,920 Отивам да кажа "да", изрично, но "у" е достатъчен, както добре. 139 00:05:49,920 --> 00:05:52,140 >> И сега, ако забележите I Типове ls-- които, изземване, 140 00:05:52,140 --> 00:05:55,540 означава list-- него са изброени всички на файловете в моята папка. 141 00:05:55,540 --> 00:05:57,850 И наистина, ако съм я увеличите навън и погледнете горния ляв, 142 00:05:57,850 --> 00:05:59,730 тя потвърждава, че това, което е в тази папка, дори 143 00:05:59,730 --> 00:06:04,990 макар че той е обозначен като IDE50 тук а не на работното пространство, това е просто "hello.c." 144 00:06:04,990 --> 00:06:09,152 Така че сега тук, ако аз да "направи здравей," Enter, 145 00:06:09,152 --> 00:06:12,360 сега виждам много по-дълга команда, но по-сложни и управление, което се случва 146 00:06:12,360 --> 00:06:13,940 да бъдат полезни в идните седмици. 147 00:06:13,940 --> 00:06:16,720 И сега мога да кажа "./hello." 148 00:06:16,720 --> 00:06:19,257 >> Така че нека да бърза обиколка някаква друга Linux команди. 149 00:06:19,257 --> 00:06:21,840 Тогава защо не можем да се върнем назад и погледнете реално C по- 150 00:06:21,840 --> 00:06:25,020 като цяло, прехода от Scratch до C, а след това да сключва с един поглед 151 00:06:25,020 --> 00:06:27,305 при първия проблем определен в C. Добре. 152 00:06:27,305 --> 00:06:30,430 Така че аз ще отида напред и просто чиста до работното място ми с Control-L просто 153 00:06:30,430 --> 00:06:31,429 да запазите екрана чист. 154 00:06:31,429 --> 00:06:33,520 Но това не е функционален да повлияе на друго мнение. 155 00:06:33,520 --> 00:06:35,820 >> Спомнете си, че сме виждали няколко команди сега. 156 00:06:35,820 --> 00:06:39,900 Така че сме виждали трясък, които обикновено ви няма да се налага да изпълни ръчно вече. 157 00:06:39,900 --> 00:06:41,650 Вместо Ще използваме грим. 158 00:06:41,650 --> 00:06:45,290 Но ние също така видя ли, което показва списък на файловете в моята директория. 159 00:06:45,290 --> 00:06:48,750 И сега защо се е there-- има две файлове предприятието, "здравей" и "hello.c." 160 00:06:48,750 --> 00:06:52,240 Защо има звезда или звездичка след "здравей"? 161 00:06:52,240 --> 00:06:54,900 Какво означава, че, въз основа от това, което видяхме в една седмица? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Какво мислиш? 164 00:07:00,400 --> 00:07:02,742 Какво означава звездата означават? 165 00:07:02,742 --> 00:07:04,614 >> MARIA: For-- програмата "здравей"? 166 00:07:04,614 --> 00:07:05,530 DAVID Malan: "Hello *". 167 00:07:05,530 --> 00:07:06,330 Да. 168 00:07:06,330 --> 00:07:07,760 О да? 169 00:07:07,760 --> 00:07:08,639 О, изпълнима. 170 00:07:08,639 --> 00:07:09,180 Това е вярно. 171 00:07:09,180 --> 00:07:10,890 Така че това означава, че "здравей" е изпълним. 172 00:07:10,890 --> 00:07:13,430 Така че наистина, това е защо Мога да направя "./hello." 173 00:07:13,430 --> 00:07:13,930 Всичко е наред. 174 00:07:13,930 --> 00:07:15,179 И така, какво друго мога да направя тук? 175 00:07:15,179 --> 00:07:17,290 Е, оказва се, че мога също да създавате директории. 176 00:07:17,290 --> 00:07:20,924 Така че нека да вървим напред и да се създаде, например, "pset1" директория. 177 00:07:20,924 --> 00:07:23,590 И спецификацията проблем зададете ще трябва да направите точно това, 178 00:07:23,590 --> 00:07:25,260 така че не трябва да се помни и днес. 179 00:07:25,260 --> 00:07:27,340 Но "защитен режим pset1" Изглежда да има никакво въздействие. 180 00:07:27,340 --> 00:07:30,540 Но отново, без съобщение за грешка като цяло е добро нещо. 181 00:07:30,540 --> 00:07:34,060 Така че, ако напишете "LS" now-- ах, сега Имам един изпълним файл, наречен 182 00:07:34,060 --> 00:07:36,570 "здравей" на файл C, наречена "hello.c." 183 00:07:36,570 --> 00:07:40,860 И тогава наклонена черта, така че да говори, означава, че това е директория. 184 00:07:40,860 --> 00:07:42,510 >> Така че наистина, сега искам да го отворите. 185 00:07:42,510 --> 00:07:45,730 И аз не кликнете два пъти върху него, като в GUI, графична среда. 186 00:07:45,730 --> 00:07:48,550 Аз вместо да каже "сд pset1." 187 00:07:48,550 --> 00:07:49,640 Enter. 188 00:07:49,640 --> 00:07:53,100 Нищо интересно изглежда да има случило, освен моето малко промпт 189 00:07:53,100 --> 00:07:57,300 here-- това е метод за информиране на Линукс ми къде съм, така че какво папка е отворена. 190 00:07:57,300 --> 00:08:00,080 Това е просто ми казваше изрично за разлика от графично. 191 00:08:00,080 --> 00:08:05,100 И ако аз написали "ли," Защо виждам друг подкани веднага, мислите ли, 192 00:08:05,100 --> 00:08:07,269 когато аз се изброят съдържанието на pset1? 193 00:08:07,269 --> 00:08:09,310 MARIA: Може би не има нещо там. 194 00:08:09,310 --> 00:08:09,630 DAVID Malan: Да. 195 00:08:09,630 --> 00:08:11,510 Така че тогава ние не трябва явно създал нещо там 196 00:08:11,510 --> 00:08:13,150 защото аз току-що създадената директория. 197 00:08:13,150 --> 00:08:17,690 Сега, ако аз исках да се създаде file-- за Например, аз може да създадете нов файл. 198 00:08:17,690 --> 00:08:20,190 И тогава аз да отида в Запазване и го запишете като, 199 00:08:20,190 --> 00:08:23,090 като: "mario.c", ако сте прави стандартната издание на pset един. 200 00:08:23,090 --> 00:08:27,610 И тогава, като всеки Mac или PC, просто изберете папка "pset1, Save. 201 00:08:27,610 --> 00:08:28,740 И сега файлът е празен. 202 00:08:28,740 --> 00:08:31,160 Но нека да я увеличите отново за секунда. 203 00:08:31,160 --> 00:08:32,470 Нека да направим ли тук. 204 00:08:32,470 --> 00:08:34,470 Сега ние виждаме "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> Така че има няколко други команди, които са си струва да помним над time-- 206 00:08:37,850 --> 00:08:41,200 ясен, или Control-L е това, което съм бил удря; защитен режим сме виждали; 207 00:08:41,200 --> 00:08:45,240 RM, които сме виждали, както и, което е за премахване или изтриването на файл. 208 00:08:45,240 --> 00:08:49,310 Пазете можете да also-- и ако се вгледате в онлайн уроци, ще RM-RF 209 00:08:49,310 --> 00:08:52,630 е много често срещан начин да се каже изтриете папка, която има неща в него. 210 00:08:52,630 --> 00:08:54,280 Просто бъдете супер, супер внимателни. 211 00:08:54,280 --> 00:08:58,780 -rf означава рекурсивно изтриете каквото и да е 212 00:08:58,780 --> 00:09:01,150 която се опитвате да изтриете и насила го изтриете. 213 00:09:01,150 --> 00:09:04,630 Така рекурсивни средства, ако това е папка с папка с папка с папка, 214 00:09:04,630 --> 00:09:05,690 изтриете всички от тях. 215 00:09:05,690 --> 00:09:08,680 И насила означава дори не да ме питаш да или не, аз съм сигурен? 216 00:09:08,680 --> 00:09:11,960 Така че това е супер опасен начин за изтриване на много неща бързо. 217 00:09:11,960 --> 00:09:17,210 Но beware-- твърде често прави безстрашна Студент случайно изтриване, да речем, pset 218 00:09:17,210 --> 00:09:18,000 една, например. 219 00:09:18,000 --> 00:09:19,833 >> МАРИЯ: И ако те просто направя -r, те ще 220 00:09:19,833 --> 00:09:21,870 да ги питам за всеки един файл. 221 00:09:21,870 --> 00:09:22,790 >> DAVID Malan: Кое е по- умерено дразнещо. 222 00:09:22,790 --> 00:09:23,480 >> MARIA: Да. 223 00:09:23,480 --> 00:09:25,813 >> DAVID Malan: Значи затова толкова много от нас, самостоятелно включена, 224 00:09:25,813 --> 00:09:27,070 съм в навик за използване на -rf. 225 00:09:27,070 --> 00:09:27,861 Но това е опасно. 226 00:09:27,861 --> 00:09:29,010 Така че купувача се пази. 227 00:09:29,010 --> 00:09:31,050 И тогава СрН е вид Интересното е кръстен. 228 00:09:31,050 --> 00:09:33,600 Така че това е командата ход, който се чувства малко странно 229 00:09:33,600 --> 00:09:37,260 защото вие наистина може да го използвате за преместване на файлове от едно място на друго. 230 00:09:37,260 --> 00:09:39,970 Например, да предположим, че аз побъркани. 231 00:09:39,970 --> 00:09:43,660 Да предположим, че съм създал нов файл за pset. 232 00:09:43,660 --> 00:09:46,320 И аз го запише като "greedy.c." 233 00:09:46,320 --> 00:09:49,970 Но предполагам, че случайно го спаси в IDE50-- така в моя самия работен плот 234 00:09:49,970 --> 00:09:51,580 а не в pset1. 235 00:09:51,580 --> 00:09:53,960 >> Можете да видите, колкото горе вляво. 236 00:09:53,960 --> 00:09:55,284 Има "greedy.c." 237 00:09:55,284 --> 00:09:56,450 И има няколко решения. 238 00:09:56,450 --> 00:09:58,324 Така един, мога да използвам супер-удобен за потребителя начин 239 00:09:58,324 --> 00:09:59,740 просто плъзгане и го пуснете. 240 00:09:59,740 --> 00:10:01,910 И това всъщност ще решите този проблем. 241 00:10:01,910 --> 00:10:04,967 Но днес, ние се опитваме да погледнем най-мистериозните но мощни начини 242 00:10:04,967 --> 00:10:05,550 за постигане на това. 243 00:10:05,550 --> 00:10:07,880 Така че нека да предприеме "LS" в pset1. 244 00:10:07,880 --> 00:10:09,690 И аз само вижте "mario.c." 245 00:10:09,690 --> 00:10:13,450 Нека да вървим напред и да направим "сд ..". 246 00:10:13,450 --> 00:10:15,320 Така CD отново е промяна директория. 247 00:10:15,320 --> 00:10:18,130 ".." Означава това, което, все пак? 248 00:10:18,130 --> 00:10:21,100 Последния път, когато каза "сд pset1 ", за да отидат в pset1. 249 00:10:21,100 --> 00:10:24,360 Така че, когато казвам "сд ..", това, което правя аз? 250 00:10:24,360 --> 00:10:24,910 Наопаки. 251 00:10:24,910 --> 00:10:25,150 Да. 252 00:10:25,150 --> 00:10:26,750 >> Така че това ще т.нар родител. 253 00:10:26,750 --> 00:10:29,730 Отидете едно ниво нагоре, като излизане от дадена папка. 254 00:10:29,730 --> 00:10:30,500 Така Enter. 255 00:10:30,500 --> 00:10:31,900 И наистина, погледнете какво го е направил. 256 00:10:31,900 --> 00:10:37,070 Това ми се премества само в работното пространство, вместо на в pset1, който е в работно пространство. 257 00:10:37,070 --> 00:10:39,710 И сега, ако аз написали "LS", има цял куп неща. 258 00:10:39,710 --> 00:10:41,650 В има "greedy.c". 259 00:10:41,650 --> 00:10:48,720 Така че сега нека да използваме СрН буквално премести "greedy.c" в pset1. 260 00:10:48,720 --> 00:10:51,120 И така, много от Linux команди работят точно по този начин. 261 00:10:51,120 --> 00:10:54,470 Те вземат без аргументи, или те вземат един аргумент или те отнеме от две команди 262 00:10:54,470 --> 00:10:55,449 аргументи и така нататък. 263 00:10:55,449 --> 00:10:57,240 И в този случай, това е буквално прави това, което 264 00:10:57,240 --> 00:11:01,670 той казва, макар и succinctly-- премести greedy.c в pset1. 265 00:11:01,670 --> 00:11:02,310 Enter. 266 00:11:02,310 --> 00:11:03,310 Нищо не изглежда да се случи. 267 00:11:03,310 --> 00:11:06,180 Но ако аз направя ли отново, алчни е отишъл. 268 00:11:06,180 --> 00:11:12,437 И ако го направя "сд pset1", Enter, и след това Това ли отново, сега е на мястото си. 269 00:11:12,437 --> 00:11:14,270 Като настрана, ако за някои reason-- особено 270 00:11:14,270 --> 00:11:16,194 ако имате интермитентна мрежова свързаност 271 00:11:16,194 --> 00:11:18,360 или сте се разхождат кампус с вашия лаптоп капак 272 00:11:18,360 --> 00:11:20,180 затворени и след това да го отворят отново и вашето работно място 273 00:11:20,180 --> 00:11:21,730 Изглежда някак извън синхрон, не е голяма работа. 274 00:11:21,730 --> 00:11:23,646 Просто рестартирайте браузъра си, прозорец, и тя трябва да 275 00:11:23,646 --> 00:11:26,339 RESYNC така, че лявата страна файлов браузър изглежда точно 276 00:11:26,339 --> 00:11:27,380 като терминален прозорец. 277 00:11:27,380 --> 00:11:27,921 Не се притеснявай. 278 00:11:27,921 --> 00:11:31,460 Когато се съмнявате, презаредете страницата, така че Докато сте съхранили файловете вече. 279 00:11:31,460 --> 00:11:31,960 ДОБРЕ. 280 00:11:31,960 --> 00:11:34,710 Така СрН може да се използва и за преименуване на файлове. 281 00:11:34,710 --> 00:11:36,760 И нека да разгледаме най- тази последна команда тук. 282 00:11:36,760 --> 00:11:39,950 Така suppose-- и това е супер обща, също в началото на деня. 283 00:11:39,950 --> 00:11:46,400 Някои студенти понякога създават файл нарича, нека say-- това, което е още една? 284 00:11:46,400 --> 00:11:47,730 Like "WATER.C." 285 00:11:47,730 --> 00:11:51,080 Така че аз просто ще крещи, за Няма причина, във всички капачки. 286 00:11:51,080 --> 00:11:53,190 Но това не е най- правилното име на файла 287 00:11:53,190 --> 00:11:56,660 дори и само заради нашия проблем зададете спецификация не ти казах 288 00:11:56,660 --> 00:11:59,430 за да запишете файла като всички капачки "WATER.C." 289 00:11:59,430 --> 00:12:01,320 Вместо това, ние очакваме "water.c" с малки букви. 290 00:12:01,320 --> 00:12:03,140 И в действителност, това е проблематично, защото check50, 291 00:12:03,140 --> 00:12:04,370 програма започваш да се срещнат в проблем 292 00:12:04,370 --> 00:12:07,350 зададете една, която автоматично проверява коректността на кода си 293 00:12:07,350 --> 00:12:11,615 ще ти крещя, ако това не е така намери "water.c" във всички малки букви. 294 00:12:11,615 --> 00:12:12,712 >> Така че аз трябва да поправя това. 295 00:12:12,712 --> 00:12:14,920 Толкова много различни начини за направите това, първият от които 296 00:12:14,920 --> 00:12:18,330 ще бъде да контролирате клик или десния бутон на мишката името на файла и просто смяна Rename. 297 00:12:18,330 --> 00:12:19,740 Totally глоба да го направя. 298 00:12:19,740 --> 00:12:21,820 Но отново, днес, нека го направим малко по-сложен. 299 00:12:21,820 --> 00:12:26,680 Нека използваме СрН да се промени "WATER.C" да "water.c." 300 00:12:26,680 --> 00:12:30,690 Така че можете да използвате и първият аргумент да го преименувате на втория аргумент 301 00:12:30,690 --> 00:12:34,455 ако на втория аргумент не, е в Всъщност, име на директория или папка. 302 00:12:34,455 --> 00:12:35,120 >> Всичко е наред. 303 00:12:35,120 --> 00:12:39,560 И накрая, малко trick-- така че аз съм в моята директория работно място в момента. 304 00:12:39,560 --> 00:12:43,660 Ако искам да отида в pset една, Със сигурност мога да напишете "сд pset1." 305 00:12:43,660 --> 00:12:47,260 Но това е толкова досадно за писане "pset1" или вече имена на файлове или имена на папки 306 00:12:47,260 --> 00:12:47,980 все още. 307 00:12:47,980 --> 00:12:51,960 Така че много често в Linux, това, което можете да направите, е да започнете да пишете "PSE" 308 00:12:51,960 --> 00:12:56,100 и просто да се отегчиш, удари Tab, и нека Фигурата на компютъра го за вас. 309 00:12:56,100 --> 00:12:58,190 Super полезно да се получи в този навик. 310 00:12:58,190 --> 00:13:01,079 Единственият улов е, ако имате множество файлове или папки, започващи 311 00:13:01,079 --> 00:13:02,870 с буквата "р", или "PS", може да се наложи 312 00:13:02,870 --> 00:13:05,525 да въведете още няколко преди компютър знае какво да прави. 313 00:13:05,525 --> 00:13:06,820 >> MARIA: Ние обичаме комбинации. 314 00:13:06,820 --> 00:13:08,695 >> DAVID Malan: Тази воля ви спести много време. 315 00:13:08,695 --> 00:13:11,930 И също така, както казахме в лекция, вие може да се придвижите нагоре в историята, нагоре и надолу, 316 00:13:11,930 --> 00:13:15,461 да се намери наскоро екзекутиран команди, както и. 317 00:13:15,461 --> 00:13:15,960 Всичко е наред. 318 00:13:15,960 --> 00:13:20,904 Така че сега, нека да насочим вниманието си обратно до една проста програма, здравей свят. 319 00:13:20,904 --> 00:13:22,195 Така че ние сме съставили това точно. 320 00:13:22,195 --> 00:13:24,050 И сега защо не вземем разгледаме видовете данни 321 00:13:24,050 --> 00:13:26,776 и след това преминаване от някои съответстваща Scratch блокове да C. 322 00:13:26,776 --> 00:13:27,400 MARIA: Awesome. 323 00:13:27,400 --> 00:13:30,031 Така че сега, че сте започнали писането на програми в C, 324 00:13:30,031 --> 00:13:32,530 ние ще започнем да говорим за типове данни и променливи. 325 00:13:32,530 --> 00:13:37,570 Така че някои типове данни, които сте бихте искали да знаете от сега 326 00:13:37,570 --> 00:13:39,400 са тези, които са подчертани в синьо. 327 00:13:39,400 --> 00:13:42,420 Така че ние имаме инт първо, което означава цяло число. 328 00:13:42,420 --> 00:13:46,075 И който държи цели числа, както ти може да има толкова guessed-- 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 и всички други числа че можеш да се сетиш. 330 00:13:47,950 --> 00:13:48,730 >> DAVID Malan: И също е отрицателно. 331 00:13:48,730 --> 00:13:50,220 >> МАРИЯ: А също и отрицателните, Аха. 332 00:13:50,220 --> 00:13:51,450 И 0. 333 00:13:51,450 --> 00:13:54,250 Тогава ние имаме плувки, които са числа с плаваща запетая. 334 00:13:54,250 --> 00:13:58,360 Така че това е всичко, реалните числа че имат знака след десетичната запетая. 335 00:13:58,360 --> 00:14:03,960 Така 5.0, 5.2, и дори по- цифри след десетичната точка, 336 00:14:03,960 --> 00:14:05,620 както и, а също така и отрицателните. 337 00:14:05,620 --> 00:14:07,530 Тогава ние имаме Чар, който е герой. 338 00:14:07,530 --> 00:14:10,240 Затова мисля, че ние говорихме за това в лекция днес. 339 00:14:10,240 --> 00:14:15,682 Но ние имаме писма, за example-- A, Б, C-- които да се съхраняват като знак. 340 00:14:15,682 --> 00:14:18,390 Но тогава ние имаме много повече символи които да се съхраняват като знак. 341 00:14:18,390 --> 00:14:22,380 И тези, които се съхраняват като ASCII. 342 00:14:22,380 --> 00:14:25,280 >> И тогава имаме булев, които са Булев тип. 343 00:14:25,280 --> 00:14:29,067 И тези, които се оцени като True или Фалшиви или 1 и 0, съответно. 344 00:14:29,067 --> 00:14:31,650 DAVID Malan: И припомни, че BOOL идва от CS50 библиотеката. 345 00:14:31,650 --> 00:14:33,300 Така че това не е вграден в C, но това е супер полезно 346 00:14:33,300 --> 00:14:34,850 да има понятието за истина и лъжа. 347 00:14:34,850 --> 00:14:36,990 И въпреки че може think-- забавно факт. 348 00:14:36,990 --> 00:14:43,700 А BOOL технически нуждае колко бита, наистина, за да представляват True False сравнение? 349 00:14:43,700 --> 00:14:47,910 Колко бита мислиш ли, че ще ви е необходимо, максимално? 350 00:14:47,910 --> 00:14:48,790 Да, само един. 351 00:14:48,790 --> 00:14:52,077 Така се оказва, че C Не мога да ви дам само един бит. 352 00:14:52,077 --> 00:14:54,160 Най-малката единица мярка можете да получите е осем. 353 00:14:54,160 --> 00:14:57,090 Така че това е малко разточителни те сте като се използва цялата байт или осем бита, 354 00:14:57,090 --> 00:14:58,340 да представлява Вярно или невярно. 355 00:14:58,340 --> 00:15:01,807 Но това е просто начина, това е осъществява в С от библиотеката CS50. 356 00:15:01,807 --> 00:15:04,890 MARIA: и след това тези, които ние сме Няма да говорим за така обстойно 357 00:15:04,890 --> 00:15:08,060 полето now-- двойна, това е за по-големи плувки. 358 00:15:08,060 --> 00:15:09,811 Long дългосрочен и краткосрочен също за цели числа. 359 00:15:09,811 --> 00:15:10,643 DAVID Malan: Наистина. 360 00:15:10,643 --> 00:15:13,190 В хакер издание на pset една, ние всъщност използват дълго, дълго. 361 00:15:13,190 --> 00:15:15,801 Но за стандартното издание, тя не трябва да бъде необходимо. 362 00:15:15,801 --> 00:15:16,300 MARIA: Cool. 363 00:15:16,300 --> 00:15:17,361 ДОБРЕ. 364 00:15:17,361 --> 00:15:20,110 Така operators-- трябва да сте вероятно са запознати с повечето от тях. 365 00:15:20,110 --> 00:15:22,620 Освен +; изваждане, -. 366 00:15:22,620 --> 00:15:24,070 За умножение, ние имаме *. 367 00:15:24,070 --> 00:15:25,900 Така че не Х, че ние обикновено се използват. 368 00:15:25,900 --> 00:15:27,840 Division, имаме наклонената черта. 369 00:15:27,840 --> 00:15:31,380 И по модул е ​​нашият последен оператор, който ние ще говорим за момента. 370 00:15:31,380 --> 00:15:35,610 Това е оператор, който ни позволява да вземе остатъка от деление. 371 00:15:35,610 --> 00:15:40,630 Така че, ако имаме 4% 2, 4, разделена с 2 е 2 и остатък 0. 372 00:15:40,630 --> 00:15:41,740 Така 4% 2 е 0. 373 00:15:41,740 --> 00:15:42,950 4% 3 е 1. 374 00:15:42,950 --> 00:15:44,870 4% 5 е 4, тъй като може да се досети. 375 00:15:44,870 --> 00:15:48,860 И не забравяйте, когато се използват всички тези операторите да използват правилата PEMDAS. 376 00:15:48,860 --> 00:15:54,060 >> DAVID Malan: Така че да е ясно, ако направя 4% 2, защо е, че 0, по-точно? 377 00:15:54,060 --> 00:15:57,480 >> MARIA: Тъй 4, разделено на 2 е 2 и остатък 0. 378 00:15:57,480 --> 00:16:00,752 Така че по модул ни дава, че останалата част като противопоставя на резултата от разделянето. 379 00:16:00,752 --> 00:16:02,960 DAVID Malan: И наистина, това, което ние ще намерим този полезен 380 00:16:02,960 --> 00:16:05,640 е, че в някои проблеми това не е задължително един, 381 00:16:05,640 --> 00:16:08,040 ако искате да имате ефект на ограничаване на себе си 382 00:16:08,040 --> 00:16:10,720 до поредица от номера като 0 през нещо, 383 00:16:10,720 --> 00:16:13,904 можете да използвате модул да обгърне по-рано от 2 млрд като 384 00:16:13,904 --> 00:16:16,320 или стойността на 4000000000, че ние говорихме за в лекция. 385 00:16:16,320 --> 00:16:16,870 >> MARIA: Да. 386 00:16:16,870 --> 00:16:19,429 И дори в "алчни" бихме могли. 387 00:16:19,429 --> 00:16:21,345 DAVID Malan: Да, в проблем зададете една, както добре. 388 00:16:21,345 --> 00:16:22,520 MARIA: Да, хубаво. 389 00:16:22,520 --> 00:16:24,340 DAVID Malan: Добър намек. 390 00:16:24,340 --> 00:16:25,750 MARIA: Съжалявам. 391 00:16:25,750 --> 00:16:28,590 Булева expressions-- така за булеви оператори, 392 00:16:28,590 --> 00:16:31,770 ние ще говорим за всичко от тези, които виждате тук. 393 00:16:31,770 --> 00:16:35,310 Така че в момента, ние имаме две равни признаци, изброени за равни. 394 00:16:35,310 --> 00:16:38,650 Така че това са за сравнение. 395 00:16:38,650 --> 00:16:40,830 Досега сме виждали само един знак за равенство. 396 00:16:40,830 --> 00:16:44,870 Това е, когато ние присвоите стойност на променлива. 397 00:16:44,870 --> 00:16:50,160 Така че, ако сме виждали инт п = 5, а след това ние сме възложени 5 до променлива п. 398 00:16:50,160 --> 00:16:55,600 Но ако искаме да използваме за == За сравнение, ние можем да се провери, ако п == 5. 399 00:16:55,600 --> 00:16:58,310 И ако п == 5, а след това е вярно. 400 00:16:58,310 --> 00:17:01,950 >> Така булеви оператори ни позволи, в общи линии, 401 00:17:01,950 --> 00:17:04,670 за да се оцени Булева изрази, до Вярно или невярно. 402 00:17:04,670 --> 00:17:07,819 Така че не equals-- Имаме марка и равни удивителен. 403 00:17:07,819 --> 00:17:14,240 Така че ние също може да се провери, ако п не е равно 5-- така п! = 5. 404 00:17:14,240 --> 00:17:17,640 По-малко от по-малко от или равно на, по-голяма от, по-голямо от или равно на, 405 00:17:17,640 --> 00:17:20,720 и след това имаме логическото И и логическото OR. 406 00:17:20,720 --> 00:17:24,060 И тези, които ни позволяват да се оцени множество булеви изрази заедно 407 00:17:24,060 --> 00:17:27,930 всъщност да идват заедно като едно цяло Булев израз. 408 00:17:27,930 --> 00:17:34,970 Така че, ако искаме да намерим брой, да кажем, която е по-голяма от 5, но по-малко от 15 409 00:17:34,970 --> 00:17:39,810 В същото време, ние ще използва И логично оператор, за да видите, ако п е 410 00:17:39,810 --> 00:17:42,937 по-голяма от 5 && N-малко от 15. 411 00:17:42,937 --> 00:17:44,770 DAVID Malan: И тук, също, че е много лесно 412 00:17:44,770 --> 00:17:47,290 в началото на деня до случайно използвате само един амперсанд 413 00:17:47,290 --> 00:17:48,572 или единична вертикална лента. 414 00:17:48,572 --> 00:17:51,280 И се надяваме, компилаторът ще крещи на вас, защото те всъщност 415 00:17:51,280 --> 00:17:52,530 има съвсем различно значение. 416 00:17:52,530 --> 00:17:55,660 За тези, любопитни, те са използвани за побитови операции, 417 00:17:55,660 --> 00:17:57,197 работещи на отделни битове. 418 00:17:57,197 --> 00:17:58,780 Но пък искате двойката от тях тук. 419 00:17:58,780 --> 00:18:01,560 И супер важно е, че първо една, знака за равенство, 420 00:18:01,560 --> 00:18:05,270 която е оператор на половете като за разлика от оператора за присвояване. 421 00:18:05,270 --> 00:18:08,552 >> МАРИЯ: И вертикалната лента е разположен между изтриване и връщане. 422 00:18:08,552 --> 00:18:09,260 DAVID Malan: Да. 423 00:18:09,260 --> 00:18:11,420 На една типична американска клавиатура. 424 00:18:11,420 --> 00:18:13,190 >> MARIA: Да. 425 00:18:13,190 --> 00:18:15,890 Така че нека да скочи направо в условни конструкции. 426 00:18:15,890 --> 00:18:18,300 В Scratch, вие сте Вече видяхме, най-вероятно, 427 00:18:18,300 --> 00:18:22,730 ако изявления, които ви позволяват да проверете дали нещо е вярно, тогава 428 00:18:22,730 --> 00:18:23,660 правя нещо друго. 429 00:18:23,660 --> 00:18:28,410 Така че може да са искали да проверите дали вашият спрайт е 430 00:18:28,410 --> 00:18:31,410 докосва някой друг спрайт или на границата на вашия екран. 431 00:18:31,410 --> 00:18:35,520 И тогава може да са искали да завършите играта или правя нещо друго. 432 00:18:35,520 --> 00:18:40,000 Така че синтаксиса за това е "ако (състояние)." 433 00:18:40,000 --> 00:18:46,820 Така че, ако си спрайт докосва нещо, След това се е вътре фигурните скоби. 434 00:18:46,820 --> 00:18:48,980 >> Тогава ние имаме, ако иначе отчети. 435 00:18:48,980 --> 00:18:54,080 Else ни позволява да направим нещо Ако условието, че 436 00:18:54,080 --> 00:18:55,870 проверите в началото не е вярно. 437 00:18:55,870 --> 00:19:01,530 Така че, ако на спрайт докосва гранично направите това, друго правя нещо друго. 438 00:19:01,530 --> 00:19:04,030 Така че по друг начин да направим нещо друго. 439 00:19:04,030 --> 00:19:07,530 Тогава ние имаме кратък пример за това. 440 00:19:07,530 --> 00:19:11,551 Така че, ако (military_time <12), ние Искам да ФОРМАТ "Добро утро!" 441 00:19:11,551 --> 00:19:13,300 Иначе ние ще ФОРМАТ "Добър вечер!" 442 00:19:13,300 --> 00:19:14,860 Basic например. 443 00:19:14,860 --> 00:19:15,680 >> DAVID Malan: Добро. 444 00:19:15,680 --> 00:19:16,760 >> MARIA: Cool. 445 00:19:16,760 --> 00:19:18,560 Така че сега ние имаме ключ отчети. 446 00:19:18,560 --> 00:19:21,960 Превключете отчети като цяло могат да ни позволи да направим много и също нещо 447 00:19:21,960 --> 00:19:25,070 че ние просто говорихме за с, ако отчети. 448 00:19:25,070 --> 00:19:29,440 Например, в момента имаме обща форма на отчета за превключване 449 00:19:29,440 --> 00:19:33,870 която ни позволява да се вземат променлива, наречена н а 450 00:19:33,870 --> 00:19:37,670 и го сравни с много различни стойности, които ние тук 451 00:19:37,670 --> 00:19:40,010 призоваха constant1, constant2. 452 00:19:40,010 --> 00:19:41,150 Ние може да има много повече. 453 00:19:41,150 --> 00:19:42,930 И тези, които се наричат ​​случаи. 454 00:19:42,930 --> 00:19:46,280 >> Така че, ако имаме превключвател statement-- и това работи 455 00:19:46,280 --> 00:19:50,580 само за integers-- имаме променлива в този случай това е п. 456 00:19:50,580 --> 00:19:53,840 Ако променливата е N равна на constant1, ние 457 00:19:53,840 --> 00:19:59,720 ще изпълни някои фрагмент от кода или нещо, което искаме да направим. 458 00:19:59,720 --> 00:20:01,280 И тогава ние ще счупи. 459 00:20:01,280 --> 00:20:04,820 Така почивката означава, че отчета за превключване 460 00:20:04,820 --> 00:20:08,120 ще спре, ако изпълняващата п е равно на constant1, 461 00:20:08,120 --> 00:20:09,752 и след това програмата ви ще продължи. 462 00:20:09,752 --> 00:20:11,835 Тя ще излезете вън от превключите изявление и това ще 463 00:20:11,835 --> 00:20:13,520 продължи да прави нещо друго. 464 00:20:13,520 --> 00:20:17,204 >> Ако, обаче, п не е равно constant1, тогава калъф за constant2 465 00:20:17,204 --> 00:20:17,870 ще бъдат проверени. 466 00:20:17,870 --> 00:20:21,750 Така че, ако п е равно constant2, че друг фрагмент от кода ще се изпълни. 467 00:20:21,750 --> 00:20:23,850 И тогава тя ще ти счупя ако това е равна на нея. 468 00:20:23,850 --> 00:20:27,580 И тогава можем да имаме also-- не непременно, though-- случай на неизпълнение, 469 00:20:27,580 --> 00:20:32,290 което ще се случи, ако п не е равно някой от случаите, които сте изброени. 470 00:20:32,290 --> 00:20:35,400 И в случай на неизпълнение, ние също не се нуждаят от почивка задължително 471 00:20:35,400 --> 00:20:39,271 защото отчета за преминаване ще знаете че тя трябва да приключи, след като по подразбиране 472 00:20:39,271 --> 00:20:40,270 случай, ако случаят е такъв. 473 00:20:40,270 --> 00:20:42,140 >> DAVID Malan: Но стилистично, ние винаги го сложи там. 474 00:20:42,140 --> 00:20:42,540 >> MARIA: Да. 475 00:20:42,540 --> 00:20:42,710 >> DAVID Malan: Да. 476 00:20:42,710 --> 00:20:44,750 Така че особено когато започвате, особено ако сред тези, по-малко 477 00:20:44,750 --> 00:20:47,458 удобно, бих лично Просто Препоръчваме остана с ИС 478 00:20:47,458 --> 00:20:51,564 и IFS-иначе и ако-иначе-ако-иначе и така нататък, ако само 479 00:20:51,564 --> 00:20:53,480 защото те са малко по- по-ясна. 480 00:20:53,480 --> 00:20:56,142 Това е хубава оптимизация, или понякога дори естетически го 481 00:20:56,142 --> 00:20:57,350 прави кода по-разбираемо. 482 00:20:57,350 --> 00:20:59,599 И всъщност, вероятно средата на семестъра ще видим проблем 483 00:20:59,599 --> 00:21:02,504 зададете, когато тя просто изглежда по-добре и по-лесно да се чете за хората 484 00:21:02,504 --> 00:21:03,670 с помощта на превключвател изявление. 485 00:21:03,670 --> 00:21:05,460 Но не се притеснявайте за придържайки се към тази твърде рано. 486 00:21:05,460 --> 00:21:05,680 >> MARIA: Да. 487 00:21:05,680 --> 00:21:08,840 Ако имате много, ако степента отчети, тя просто не може да е много разбираемо. 488 00:21:08,840 --> 00:21:10,965 Тя не може да бъде много бързо за вас да мине през него. 489 00:21:10,965 --> 00:21:13,230 Така че може да преминат отчети да бъде много полезен, както добре. 490 00:21:13,230 --> 00:21:17,900 И също така, не remember-- не правим забравяйте да сложите на почивките в там. 491 00:21:17,900 --> 00:21:20,330 >> DAVID Malan: Не забравяйте това. 492 00:21:20,330 --> 00:21:24,890 >> MARIA: Защото тогава може да падне чрез един от случая. 493 00:21:24,890 --> 00:21:27,930 Така че нека да кажем, че при constant1 не са имали изявление прекъсване в нея. 494 00:21:27,930 --> 00:21:31,920 След това ние може да падне чрез вътре случай constant2. 495 00:21:31,920 --> 00:21:35,070 И ние не искаме да правим, че ако вече сме достигнали случай constant1 496 00:21:35,070 --> 00:21:37,830 и това е равно на п. 497 00:21:37,830 --> 00:21:45,100 >> Така, например, ако имаме променлива N, че съдържа редица клас, 498 00:21:45,100 --> 00:21:48,990 и ние искаме да видим какво е това клас is-- ако п е равно на 50, 499 00:21:48,990 --> 00:21:51,957 отиваме да отпечатате "CS50 е Въведение в компютърните науки I. " 500 00:21:51,957 --> 00:21:53,040 След това ние ще се счупят. 501 00:21:53,040 --> 00:21:53,920 И това е. 502 00:21:53,920 --> 00:21:55,950 Ако, обаче, п е равно до 51, отиваме 503 00:21:55,950 --> 00:21:58,494 да отпечатате "CS51 е Въведение да Computer Science II. " 504 00:21:58,494 --> 00:21:59,910 След това, отново, ние ще се счупят. 505 00:21:59,910 --> 00:22:05,080 Въпреки това, ако след това ще се постави 124, 61, всеки друг номер, който може да се сетиш, 506 00:22:05,080 --> 00:22:06,890 или програма не върви да признае това. 507 00:22:06,890 --> 00:22:09,010 Така че това ще каже: "Съжалявам, че съм не са запознати с този клас. " 508 00:22:09,010 --> 00:22:10,009 И то се случва да се счупи. 509 00:22:10,009 --> 00:22:12,847 DAVID Malan: Така че можете да видите наистина на ако, иначе ако, иначе идея тук. 510 00:22:12,847 --> 00:22:15,430 Това е просто различен синтаксис за изразяване на точно същата идея. 511 00:22:15,430 --> 00:22:17,690 >> MARIA: Точно така. 512 00:22:17,690 --> 00:22:19,480 Сега имаме нашите трикомпонентни оператори. 513 00:22:19,480 --> 00:22:24,900 Така трикомпонентни оператори имат три parts-- условие, 514 00:22:24,900 --> 00:22:27,220 нещо да се направи, ако това условие е вярно, 515 00:22:27,220 --> 00:22:29,730 и след това нещо да се направи ако това условие не е верен. 516 00:22:29,730 --> 00:22:33,400 Така че виждате, общо взето, синтаксиса на това тук. 517 00:22:33,400 --> 00:22:37,792 Имаме въпросителния знак, и След the-- какво ние наричаме това? 518 00:22:37,792 --> 00:22:38,750 DAVID Malan: The дебелото черво. 519 00:22:38,750 --> 00:22:39,100 MARIA: Colon. 520 00:22:39,100 --> 00:22:39,599 Благодаря. 521 00:22:39,599 --> 00:22:41,880 Извинете. 522 00:22:41,880 --> 00:22:45,800 Така че нека да разгледаме нашия пример за видим дали можем да придаде смисъл на this-- 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 Така че тук ние виждаме нашия Булев оператор == че сравнява променлива class_num 525 00:22:52,580 --> 00:22:53,100 50. 526 00:22:53,100 --> 00:22:55,150 Така class_num магазини цяло число. 527 00:22:55,150 --> 00:22:58,180 И ако това число се равнява на 50, а след това ние сме 528 00:22:58,180 --> 00:23:02,810 ще съхранява "David Malan" вътре професор низ. 529 00:23:02,810 --> 00:23:05,912 Ако номерът клас не равнява на 50, "не David Malan" 530 00:23:05,912 --> 00:23:07,120 ще бъде професорът. 531 00:23:07,120 --> 00:23:08,630 >> DAVID Malan: Благодаря. 532 00:23:08,630 --> 00:23:12,110 И така, това изглежда еквивалентна на какво, бихте ли казали, на пръв поглед? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> MARIA: За мен това изглежда като, ако иначе отчети. 535 00:23:19,960 --> 00:23:20,709 >> DAVID Malan: Да. 536 00:23:20,709 --> 00:23:24,020 И в действителност, това е един вид от доста един лайнер, 537 00:23:24,020 --> 00:23:27,520 така да се каже, за изпълнение точно логиката на друго, ако- 538 00:23:27,520 --> 00:23:29,010 но прави всичко в една стъпка. 539 00:23:29,010 --> 00:23:29,860 >> MARIA: Точно така. 540 00:23:29,860 --> 00:23:30,360 Да. 541 00:23:30,360 --> 00:23:33,520 Така че, ако иначе отчети мощ заемат много място. 542 00:23:33,520 --> 00:23:36,283 Те може да са твърде дълъг за нещо толкова просто като това. 543 00:23:36,283 --> 00:23:38,350 Така че това може да бъде много накратко и много хубаво. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 Така че сега отиваме в гледаш изпълняващата нещо отново и отново, 546 00:23:46,820 --> 00:23:50,060 така проверка за обуслови няколко пъти 547 00:23:50,060 --> 00:23:53,510 и след това продължава да се направи нещо докато това условие е вярно. 548 00:23:53,510 --> 00:23:56,740 Така че това ни води добре в докато примки. 549 00:23:56,740 --> 00:23:59,270 >> Вляво, имаме нашата първа линия, докато. 550 00:23:59,270 --> 00:24:03,840 Така че, докато нещо не е вярно, направи нещо отново и отново. 551 00:24:03,840 --> 00:24:08,850 Така че не забравяйте да забележите, че нашите условие тук е валидиран в горната част. 552 00:24:08,850 --> 00:24:14,150 Като има предвид, с втората ни loop-- ние наричаме че да не се прави, докато loop-- правим нещо, 553 00:24:14,150 --> 00:24:15,890 След това ние проверяваме за състояние. 554 00:24:15,890 --> 00:24:17,980 И ако това условие продължава да е вярно, 555 00:24:17,980 --> 00:24:20,150 ние се върна и да направя това нещо отново. 556 00:24:20,150 --> 00:24:23,360 Така че основната разлика е, когато условието се проверява за. 557 00:24:23,360 --> 00:24:29,260 И кодът никога не може да бъде изпълнена, ако условието не е 558 00:24:29,260 --> 00:24:30,430 Вярно с веригата на време. 559 00:24:30,430 --> 00:24:33,050 Като има предвид, с направи-време линия, имаме кода 560 00:24:33,050 --> 00:24:35,380 че винаги е изпълнен най-малко веднъж. 561 00:24:35,380 --> 00:24:37,470 И след това, докато условието продължава да е вярно, 562 00:24:37,470 --> 00:24:39,960 ние можем да се върнем и да превъртите отново вътре. 563 00:24:39,960 --> 00:24:43,625 Така че, защо мислиш, че щяхме да използваме а да не се прави линия, докато над една линия, докато? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Право. 566 00:24:48,720 --> 00:24:52,600 Така че, ако искаме да промпт потребителя за някакъв вход, 567 00:24:52,600 --> 00:24:55,400 ако искаме да ги питам да въведете своето име, 568 00:24:55,400 --> 00:24:57,342 ние искаме да поне да поиска от тях веднъж. 569 00:24:57,342 --> 00:24:59,050 И ако те влизат това име, че не сме 570 00:24:59,050 --> 00:25:00,740 Ще ги питам отново защото ние вече го знаем. 571 00:25:00,740 --> 00:25:02,656 Но ако те не се вписват тяхно име, или ако те 572 00:25:02,656 --> 00:25:05,787 въведете нещо, което е очевидно не име, 573 00:25:05,787 --> 00:25:08,120 ние все още искате да продължите с молба за за тяхното име. 574 00:25:08,120 --> 00:25:10,710 >> DAVID Malan: И в лекция имахме една като този с получите положителен INT 575 00:25:10,710 --> 00:25:13,550 Например, когато няма какво да провери на първо, защото не трябва дори 576 00:25:13,550 --> 00:25:14,190 намерила едно цяло число. 577 00:25:14,190 --> 00:25:16,680 Така че ние искаме да направим this-- получите инт от user-- 578 00:25:16,680 --> 00:25:18,860 след това да го провери, може би, отново и отново и отново. 579 00:25:18,860 --> 00:25:21,030 >> MARIA: Точно така. 580 00:25:21,030 --> 00:25:22,060 За loops-- OK. 581 00:25:22,060 --> 00:25:25,842 За вериги може да ни позволяват да правите почти точно същото нещо, както добре. 582 00:25:25,842 --> 00:25:27,300 Това всъщност е точно същото нещо. 583 00:25:27,300 --> 00:25:30,190 Така че няма нищо, което можете да правите с вериги за 584 00:25:30,190 --> 00:25:32,840 че няма да бъде в състояние общо с докато примки. 585 00:25:32,840 --> 00:25:36,900 Но за вериги може да изглежда малко малко по-сложно синтактично 586 00:25:36,900 --> 00:25:39,730 защото те имат три части вътре какво 587 00:25:39,730 --> 00:25:42,990 беше преди точно състояние с докато примки. 588 00:25:42,990 --> 00:25:48,260 Така първата част, които можете море, най-лявата, ние имаме "инт джуджета = 0." 589 00:25:48,260 --> 00:25:51,490 Така че това е мястото, където ние инициализира нашата променлива. 590 00:25:51,490 --> 00:25:55,210 >> Тогава ние имаме и запетая и "джуджета <7." 591 00:25:55,210 --> 00:25:57,100 Така че това е мястото, където се състояние, в действителност. 592 00:25:57,100 --> 00:26:00,170 Така че това е, което ние ще трябва постави само в това време loop-- 593 00:26:00,170 --> 00:26:01,880 "докато джуджета <7." 594 00:26:01,880 --> 00:26:05,380 Ето, че отива в средата на нашия за цикъл. 595 00:26:05,380 --> 00:26:07,190 Така "dwaves <7." 596 00:26:07,190 --> 00:26:11,350 И тогава нашата последна част е "джуджета ++" което е мястото, където ние актуализираме нашата променлива. 597 00:26:11,350 --> 00:26:15,470 Така че важното да осъзнаят е, че това 598 00:26:15,470 --> 00:26:22,010 ще мине през това за цикъл седем пъти и изпълни седем пъти. 599 00:26:22,010 --> 00:26:24,020 Така че ние имаме седем джуджета, и всички те са 600 00:26:24,020 --> 00:26:26,020 Ще кажете: "Аз съм тук, да ви помогне, Snow White " 601 00:26:26,020 --> 00:26:28,860 защото те са готови да помогне на Снежанка. 602 00:26:28,860 --> 00:26:33,600 >> С докато примки, ние бихме направили инициализация и актуализирането 603 00:26:33,600 --> 00:26:37,490 не в състоянието, отново, но преди или вътре в контура, докато 604 00:26:37,490 --> 00:26:40,210 за да се уверите, че we-- защото винаги се нуждаем от тези части. 605 00:26:40,210 --> 00:26:42,835 Така че, за да се уверите, че имаме тях, ние нямаше да ги добавя още 606 00:26:42,835 --> 00:26:44,580 , просто не вътре в скобите. 607 00:26:44,580 --> 00:26:47,288 >> DAVID Malan: А, така че изглежда like-- в лекцията, например, 608 00:26:47,288 --> 00:26:50,250 Аз почти винаги се използва, като, аз и п и доста скучни променливи. 609 00:26:50,250 --> 00:26:53,050 Тя изглежда като можете да използвате по- хитро име променливи, също. 610 00:26:53,050 --> 00:26:56,300 >> MARIA: Да, това е действително много хубаво да се използва малко по-описателни променливи 611 00:26:56,300 --> 00:26:59,400 защото особено ако някой друг е четене вашата code-- може би сте грейдер 612 00:26:59,400 --> 00:27:00,940 или ако сте си сътрудничат с somebody-- 613 00:27:00,940 --> 00:27:03,481 искате да се уверите, че те разберем това, което правиш. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> ДОБРЕ. 616 00:27:06,400 --> 00:27:11,435 Така че това е нещо много funky-- за контур във вътрешността на за цикъл. 617 00:27:11,435 --> 00:27:13,060 Аз не знам дали сме виждали преди. 618 00:27:13,060 --> 00:27:13,830 Вероятно не. 619 00:27:13,830 --> 00:27:17,750 Но всъщност ние можем да имаме this-- така контури вместо вериги. 620 00:27:17,750 --> 00:27:25,130 Така че не всеки иска да ходи може би мен през какво става тук? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 DAVID Malan: Ще взема хладно оръжие. 623 00:27:29,490 --> 00:27:29,970 MARIA: Cool. 624 00:27:29,970 --> 00:27:30,636 DAVID Malan: OK. 625 00:27:30,636 --> 00:27:34,690 Така че, spoiler-- искаме да отпечатате неща това е в долния десен ъгъл 626 00:27:34,690 --> 00:27:35,190 там. 627 00:27:35,190 --> 00:27:35,450 >> MARIA: Точно така. 628 00:27:35,450 --> 00:27:35,710 Да, да. 629 00:27:35,710 --> 00:27:38,043 >> DAVID Malan: Така че ние сме просто сложи това примерно извеждане там. 630 00:27:38,043 --> 00:27:42,590 Така че мога да се направи извод от най-горната линия, която сте 631 00:27:42,590 --> 00:27:45,680 итерации през редовете най-външния контур, така да се каже. 632 00:27:45,680 --> 00:27:48,107 И ти итерации над колони с вътрешния цикъл. 633 00:27:48,107 --> 00:27:50,190 И интуитивно, това трябва да се надяваме, че има смисъл 634 00:27:50,190 --> 00:27:52,070 защото по природа на всяка програма, които сме виждали 635 00:27:52,070 --> 00:27:55,570 преди, ФОРМАТ, което е най- функция ние използваме, в крайна сметка, 636 00:27:55,570 --> 00:27:58,190 има възможност за отпечатване на неща по същество, ред по ред. 637 00:27:58,190 --> 00:27:59,960 Подобно, след като веднъж сте изведен нов ред, има 638 00:27:59,960 --> 00:28:02,876 не удвояване назад и отпечатване на нещо по-висока в екрана, поне 639 00:28:02,876 --> 00:28:04,530 не се използва ФОРМАТ като този. 640 00:28:04,530 --> 00:28:07,750 >> И така, в тази връзка, той прави чувството, че най-външния контур 641 00:28:07,750 --> 00:28:10,930 трябва да се позовава на редовете защото за всеки даден ред, 642 00:28:10,930 --> 00:28:13,650 започваш да искаш да разпечатате XXXXX, и след това 643 00:28:13,650 --> 00:28:15,520 преминете към следващия ред, XXXXX. 644 00:28:15,520 --> 00:28:17,317 Така редове са на първо място. 645 00:28:17,317 --> 00:28:19,150 И след това в рамките на всеки ред, да печатате колони. 646 00:28:19,150 --> 00:28:21,160 Ако сте се опитали да го направя на противоположна, то вероятно не би 647 00:28:21,160 --> 00:28:21,690 излезе като имате намерение. 648 00:28:21,690 --> 00:28:22,190 >> MARIA: Да. 649 00:28:22,190 --> 00:28:24,950 Ние просто не можех да се върна в предишния ред с ФОРМАТ. 650 00:28:24,950 --> 00:28:27,658 >> DAVID Malan: И това, което е интересно на днешния разговор за обхвата, 651 00:28:27,658 --> 00:28:31,600 всъщност, е, че ред е инт която е обявена в най-горната линия. 652 00:28:31,600 --> 00:28:34,030 Но забележете, че тя все още е вътре, така да се каже, 653 00:28:34,030 --> 00:28:35,982 фигурните скоби, че непосредствено следва, 654 00:28:35,982 --> 00:28:38,440 въпреки че това не е технически в рамките на тези фигурни скоби. 655 00:28:38,440 --> 00:28:41,750 Така ред е в обхват за цялост на фрагмент от кода, 656 00:28:41,750 --> 00:28:44,690 както вътре, така на външния контур за и във вътрешността на вътрешната за контур. 657 00:28:44,690 --> 00:28:48,050 Но от друга страна, когато е колона по обхват? 658 00:28:48,050 --> 00:28:49,810 Променливата колона? 659 00:28:49,810 --> 00:28:51,310 Да, само в рамките контур. 660 00:28:51,310 --> 00:28:54,280 И това е ОК, защото ние не достъп то извън нейните фигурни скоби. 661 00:28:54,280 --> 00:28:57,280 Всичко, което правим, е за печат на нова Онлайн в самия край там. 662 00:28:57,280 --> 00:28:58,670 Така че в действителност е OK. 663 00:28:58,670 --> 00:29:03,740 >> Така че това има ефект, тя изглежда като, за правене на три реда и четири колони. 664 00:29:03,740 --> 00:29:04,370 >> MARIA: Точно така. 665 00:29:04,370 --> 00:29:06,270 Така че първо ние преминаваме през първата ни ред. 666 00:29:06,270 --> 00:29:10,520 И точно в нашия първи ред, ние правим четири колони вътре в първия ред. 667 00:29:10,520 --> 00:29:11,980 Така че ние разпечатате четири Х. 668 00:29:11,980 --> 00:29:15,800 И тогава можем да излезете на линия за, тъй като вече сме разпечатан четири Х. 669 00:29:15,800 --> 00:29:17,100 И ние отпечатате нов ред. 670 00:29:17,100 --> 00:29:19,920 И тогава ние проверете същия процес за още две редици 671 00:29:19,920 --> 00:29:21,170 да се направи общо три. 672 00:29:21,170 --> 00:29:23,530 >> DAVID Malan: И това е да се отбележи, че е само един артефакт на шрифта, фактът, 673 00:29:23,530 --> 00:29:25,680 че продукцията на пробата Така изглежда много по-висок, 674 00:29:25,680 --> 00:29:27,520 като че ли е по- редове от колони. 675 00:29:27,520 --> 00:29:29,824 Но това е само защото Х е по-висок, отколкото е широка. 676 00:29:29,824 --> 00:29:32,740 Това е всичко, което се случва там, плюс бялото пространство между линиите. 677 00:29:32,740 --> 00:29:33,281 >> MARIA: Точно така. 678 00:29:33,281 --> 00:29:34,792 Готино. 679 00:29:34,792 --> 00:29:35,750 DAVID Malan: Добре. 680 00:29:35,750 --> 00:29:39,830 Така че един бърз поглед на проблем зададете една, предприеме някакви въпроси, а след това се отложи? 681 00:29:39,830 --> 00:29:40,330 Всичко е наред. 682 00:29:40,330 --> 00:29:43,164 Така че в проблем зададете една, има три първични предизвикателства, в крайна сметка. 683 00:29:43,164 --> 00:29:44,955 Но първо, вие ще откриете че проблемът избран 684 00:29:44,955 --> 00:29:47,900 спецификация, както с много на psets тази есен, ще ходиш 685 00:29:47,900 --> 00:29:50,691 през няколко подгряващи упражнения, ви посоча няколко ресурси 686 00:29:50,691 --> 00:29:52,440 че вие ​​може или не може вече не са го виждали. 687 00:29:52,440 --> 00:29:54,440 Например, CS50 има набор от шорти, 688 00:29:54,440 --> 00:29:56,481 които са кратки клипове, не за разлика от това, но 689 00:29:56,481 --> 00:29:58,460 са много тема specific-- може би пет минути, 690 00:29:58,460 --> 00:30:02,360 10 минути в дължина на вериги или относно условията или на алгоритми 691 00:30:02,360 --> 00:30:04,125 или по-късно теми за напреднали, както и. 692 00:30:04,125 --> 00:30:06,000 И ние като цяло вграждане тези на проблема 693 00:30:06,000 --> 00:30:07,950 комплекти, така че студентите имат ресурсите, с които 694 00:30:07,950 --> 00:30:10,840 да преразгледа материал, който може да има вече излезе в лекция или секция. 695 00:30:10,840 --> 00:30:13,220 Но този път тя е по-фокусиран и още на върха на пръстите си. 696 00:30:13,220 --> 00:30:15,928 >> Ние също така са склонни да се вгради в проблем определя нещата наречените реални тестове. 697 00:30:15,928 --> 00:30:20,790 Така че почти всички от примерите да направя в лекция, на сцената тук, ние също 698 00:30:20,790 --> 00:30:24,565 са заснети от камера в преминете на по-бавно, 699 00:30:24,565 --> 00:30:28,760 по-интимна репетиция с мен на моя лаптоп от същия кодекс, ред по ред 700 00:30:28,760 --> 00:30:31,427 така че в клас, ние често ще обезмаслено чрез нещо или някого 701 00:30:31,427 --> 00:30:33,260 ще се намеся с отговори на един въпрос. 702 00:30:33,260 --> 00:30:35,820 Но това не означава непременно мивка в за всеки в публиката. 703 00:30:35,820 --> 00:30:38,230 Така че вие ​​ще намерите код за сваляне за повечето от примерите 704 00:30:38,230 --> 00:30:40,950 , което правим тук, в лекция, така че да може да минеш през нея на свой собствен темп 705 00:30:40,950 --> 00:30:43,580 и назад или напред, или пропуснете напълно, ако искате. 706 00:30:43,580 --> 00:30:45,356 >> Има няколко често Warm-Up въпроси, които 707 00:30:45,356 --> 00:30:47,105 ви помоля да сортирате на засили този материал 708 00:30:47,105 --> 00:30:50,250 и се уверете, че сте удобен преди да продължите с останалата част от pset. 709 00:30:50,250 --> 00:30:51,700 И след това, разбира се, е самият pset. 710 00:30:51,700 --> 00:30:53,450 И едно от нещата, ние много съзнателно 711 00:30:53,450 --> 00:30:57,202 направя в CS50 е почти всеки безинтересно или интелектуално безинтересно 712 00:30:57,202 --> 00:30:58,910 механична стъпка, която може да се наложи да се направи 713 00:30:58,910 --> 00:31:00,519 почти винаги е много добре документирана. 714 00:31:00,519 --> 00:31:03,560 В течение на срока, ние ще започнете да задавате въпроси по реторични 715 00:31:03,560 --> 00:31:06,187 като си спомня как да направим това или онова? 716 00:31:06,187 --> 00:31:08,520 Но като цяло, ще откриете, че наборите проблемни можете да получите 717 00:31:08,520 --> 00:31:10,269 чрез механиката на нещо, така че 718 00:31:10,269 --> 00:31:14,160 интересните, интелектуални предизвикателства в крайна сметка се остави да те ученика. 719 00:31:14,160 --> 00:31:17,390 >> С това каза, Zamyla, на които ние отглеждани позовавайки днес в лекция, 720 00:31:17,390 --> 00:31:20,190 е една от нашите дългогодишни служители член, който също така притежава Запознай 721 00:31:20,190 --> 00:31:24,520 по конкретни проблеми като Марио pset и алчни, макар и не поливате през тази година. 722 00:31:24,520 --> 00:31:26,540 И това е в тези, Запознай, че тя често 723 00:31:26,540 --> 00:31:29,450 предлага някои съвети и трикове за как да се процедира, никога не ви казвам, 724 00:31:29,450 --> 00:31:31,810 точно какво да правят, но rather-- като състояние, 725 00:31:31,810 --> 00:31:35,200 ако will-- който ви дава най-малко един Няколко идеи, така че тя е до вас, 726 00:31:35,200 --> 00:31:37,830 в крайна сметка, да се реши как да се обръщат към тях. 727 00:31:37,830 --> 00:31:41,200 >> MARIA: Нещо като на високо равнище, разбиране на логиката на това, 728 00:31:41,200 --> 00:31:42,220 ние ви молим да се направи. 729 00:31:42,220 --> 00:31:42,485 >> DAVID Malan: Точно така. 730 00:31:42,485 --> 00:31:44,190 И, всъщност, е Zamyla Запознай са предназначени 731 00:31:44,190 --> 00:31:46,190 За да отговорите на най-често задаван въпрос от къде 732 00:31:46,190 --> 00:31:48,610 направя аз започнах, особено когато тези дълги спецификациите 733 00:31:48,610 --> 00:31:51,960 малко обезсърчително дал целия текст и образи, които те имат в тях. 734 00:31:51,960 --> 00:31:54,890 >> Така water.c, ще откриете след като сте го завършили, 735 00:31:54,890 --> 00:31:56,920 всъщност е относително проста. 736 00:31:56,920 --> 00:31:58,882 Абсолютно сме един куп от вас ще се взриви 737 00:31:58,882 --> 00:32:01,840 главите си срещу стената, опитващи да разбера защо това не е съставянето 738 00:32:01,840 --> 00:32:03,450 или защо не е тичане правилно. 739 00:32:03,450 --> 00:32:05,040 Но след като сте готови с него и след като веднъж сте 740 00:32:05,040 --> 00:32:07,620 прекара известно време се боря с всеки на буболечки, които може да имат, 741 00:32:07,620 --> 00:32:09,490 вие ще откриете, че това е много кратка програма. 742 00:32:09,490 --> 00:32:11,770 Това може да бъде направено само за няколко реда код, повечето от които 743 00:32:11,770 --> 00:32:15,030 сме виждали тук, в лекция вече, ако ви прибера правилните градивните елементи. 744 00:32:15,030 --> 00:32:16,810 >> И тъй като ние предлагаме тук, че ще ходи да попитам 745 00:32:16,810 --> 00:32:22,250 можете да определите колко минути някой се къпех на територията на колежа. 746 00:32:22,250 --> 00:32:24,779 Ние зададени в проблема задаване на скоростта на потока на водата 747 00:32:24,779 --> 00:32:27,320 в подобно, душ с ниска поток главата, който много прилича на клип Зайнфелд 748 00:32:27,320 --> 00:32:29,180 видяхме вчера или обратното него. 749 00:32:29,180 --> 00:32:30,971 И след това просто трябва да направя малко на математиката, 750 00:32:30,971 --> 00:32:34,710 really-- аритметика, използвайки C да кажа ни колко, приблизително, бутилки с вода 751 00:32:34,710 --> 00:32:37,720 е, че еквивалентна на, ако сме като п-минутен душ. 752 00:32:37,720 --> 00:32:41,389 >> Сега, в mario.c, това се случва да бъде малко по-дълъг програма. 753 00:32:41,389 --> 00:32:42,930 Той все още няма да бъде толкова дълго. 754 00:32:42,930 --> 00:32:45,130 Само няколко линии с дължина над water.c. 755 00:32:45,130 --> 00:32:48,230 Но това ще бъде възможност да пресъздаде старата школа Mario 756 00:32:48,230 --> 00:32:50,670 пирамида от Супер Марио Brothers или някои последващи. 757 00:32:50,670 --> 00:32:53,510 Това няма да изглежда толкова хубава или като колоритен като че един там. 758 00:32:53,510 --> 00:32:56,468 Ние просто ще използвате малки Hashtags като имаме тук на екрана 759 00:32:56,468 --> 00:32:58,120 използване на ASCII текст. 760 00:32:58,120 --> 00:33:00,362 Но това ще се сближат и съща идея. 761 00:33:00,362 --> 00:33:02,570 И това ще бъде упражняват тази на пръв поглед 762 00:33:02,570 --> 00:33:04,720 изглежда доста просто simple-- отпечатате прост пирамида. 763 00:33:04,720 --> 00:33:07,345 Но има няколко характеристики тук, че са интересни. 764 00:33:07,345 --> 00:33:12,400 Забележете, че най-дясната ръба пирамидата всъщност има широка два. 765 00:33:12,400 --> 00:33:14,570 Така че има две еднакви колони височина, които 766 00:33:14,570 --> 00:33:16,804 прави го изискват малко малко мисъл да се направи 767 00:33:16,804 --> 00:33:19,720 Сигурни ли сте, че точно така се получи, тъй като за разлика от просто перфектно ъглова 768 00:33:19,720 --> 00:33:20,220 линия. 769 00:33:20,220 --> 00:33:23,340 Така, че е малко на случая в корнер но отговаря на действителната игра. 770 00:33:23,340 --> 00:33:27,610 >> И тя също не-очевидно на пръв поглед как да отпечатате бялото пространство. 771 00:33:27,610 --> 00:33:29,430 Така че, когато погледнем в примерен резултат here-- 772 00:33:29,430 --> 00:33:32,440 и тя също е в spec-- него вид прилича на правоъгълник, 773 00:33:32,440 --> 00:33:35,120 но диагонал на правоъгълник е отрязана, 774 00:33:35,120 --> 00:33:37,320 и това е само бели пространства, така да се каже. 775 00:33:37,320 --> 00:33:40,100 И така на често задавани въпрос тук е винаги, добре, 776 00:33:40,100 --> 00:33:43,302 как мога да се движи на Hashtags над надясно? 777 00:33:43,302 --> 00:33:44,760 Или как да отпечатам празните пространства? 778 00:33:44,760 --> 00:33:46,860 И това е действително по-лесно отколкото повечето ученици мислят. 779 00:33:46,860 --> 00:33:47,360 Нали така? 780 00:33:47,360 --> 00:33:51,620 Можете да го сближат визуално чрез просто потегля пространството лента, веднъж или два пъти 781 00:33:51,620 --> 00:33:52,700 или три пъти. 782 00:33:52,700 --> 00:33:56,260 >> И така, въпреки че с ФОРМАТ ние почти Винаги разпечатате низ или инт 783 00:33:56,260 --> 00:33:59,950 или думи като "Здравей, свят "или поредица от думи, 784 00:33:59,950 --> 00:34:03,560 можете да отпечатате само цитат, пространство, край на цитата. 785 00:34:03,560 --> 00:34:06,320 И това действително ще даде можете бяло пространство там. 786 00:34:06,320 --> 00:34:08,330 Така че имайте това предвид и не overthink това. 787 00:34:08,330 --> 00:34:10,570 Вие наистина трябва да реши ред по ред по ред, 788 00:34:10,570 --> 00:34:14,280 а не за разлика вашата например преди малко, колко от тези, 789 00:34:14,280 --> 00:34:18,420 колони трябва да бъдат бели пространства и колко от тях трябва да бъде Hashtags. 790 00:34:18,420 --> 00:34:21,560 Това ще отнеме малко време, но това е в крайна сметка логически пъзел на видове. 791 00:34:21,560 --> 00:34:22,060 >> MARIA: Да. 792 00:34:22,060 --> 00:34:25,060 Но логиката на става ред по ред ще бъде много полезно тук. 793 00:34:25,060 --> 00:34:25,810 DAVID Malan: Да. 794 00:34:25,810 --> 00:34:28,976 Мисля, примерен код можете gave-- дори макар че не беше пълна програма. 795 00:34:28,976 --> 00:34:34,247 Все още трябва инт и основният и недействителни и #include stdio.h, 796 00:34:34,247 --> 00:34:35,580 много от нещата, от лекция. 797 00:34:35,580 --> 00:34:37,629 Но градивните елементи изглежда да е там. 798 00:34:37,629 --> 00:34:39,920 И след това на последно място е нещо, малко по-алгоритмично. 799 00:34:39,920 --> 00:34:43,210 Така се оказва, че всеки път, когато отидат в CVS или всеки магазин 800 00:34:43,210 --> 00:34:47,810 и някой ви ръце на сметки или монети като промяна касиер, 801 00:34:47,810 --> 00:34:50,620 Оказва се, че те, хората, независимо дали те го знаят или не, 802 00:34:50,620 --> 00:34:53,300 Вероятно използвате това, което е наречено алчен алгоритъм, 803 00:34:53,300 --> 00:34:58,170 при което, ако се дължи, да речем, $ 21 в климата, защото по някаква причина 804 00:34:58,170 --> 00:35:01,580 сте купили нещо много евтино с много голям законопроект в CVS, 805 00:35:01,580 --> 00:35:05,910 това ще бъде наистина досадно, ако касиер ти даде 21 сингъла, или, по-лоши 806 00:35:05,910 --> 00:35:07,629 все пак, един куп монети. 807 00:35:07,629 --> 00:35:10,670 По-скоро това, което всеки разумен човек е Вероятно ще направя, е, че ще 808 00:35:10,670 --> 00:35:14,224 да вземете $ 20, а след това за $ 1-сметката, и те предаде само две сметки в този случай. 809 00:35:14,224 --> 00:35:17,390 MARIA: Така че те се стреми да минимизира промяната, която те дават обратно към вас. 810 00:35:17,390 --> 00:35:17,850 DAVID Malan: Точно така. 811 00:35:17,850 --> 00:35:19,540 И същата сделка с монети, както добре. 812 00:35:19,540 --> 00:35:23,040 Ако сте се дължи, да речем, $ 0.50, надявам се не искаш 50 стотинки. 813 00:35:23,040 --> 00:35:25,500 Вие искате вместо две квартали, например. 814 00:35:25,500 --> 00:35:27,540 Сега, това не се предположи, че касата има 815 00:35:27,540 --> 00:35:29,940 достатъчно от всяка деноминация, която той или тя може да искате да ви дам. 816 00:35:29,940 --> 00:35:32,148 Но ние ви позволяват да се предположи, колкото по проблема. 817 00:35:32,148 --> 00:35:35,590 И целта, в крайна сметка, е да приложи в C код алчен алгоритъм. 818 00:35:35,590 --> 00:35:37,344 Така потребителят се оставя да пишете в колко 819 00:35:37,344 --> 00:35:40,510 промените, той или тя се дължи на долара и центове, някакъв вид плаваща запетая 820 00:35:40,510 --> 00:35:41,590 стойност вероятно. 821 00:35:41,590 --> 00:35:45,530 И тогава ще трябва да се направи на математиката и разбера алгоритмично, добре, 822 00:35:45,530 --> 00:35:49,020 колко монети мога да дам можете минимално да ви дам 823 00:35:49,020 --> 00:35:50,270 точно тази сума на климата. 824 00:35:50,270 --> 00:35:53,470 Но има и ще бъде няколко трудни части тук, нали? 825 00:35:53,470 --> 00:35:56,236 Както има цяла неточност въпрос. 826 00:35:56,236 --> 00:35:56,860 MARIA: Точно така. 827 00:35:56,860 --> 00:35:59,114 Така че с плаваща точка ценности имат неточности. 828 00:35:59,114 --> 00:36:00,780 Знаете ли да говорим за това в лекция днес? 829 00:36:00,780 --> 00:36:02,340 >> DAVID Malan: Направихме Последният път, в лекция. 830 00:36:02,340 --> 00:36:03,506 Ние говорихме за неточност. 831 00:36:03,506 --> 00:36:08,840 А вие не искате да мамят потребителя на колко промени, той или тя се дължи. 832 00:36:08,840 --> 00:36:11,290 И така помагалото, в проблемната определя спецификацията, 833 00:36:11,290 --> 00:36:15,990 даде някои мисли, в крайна сметка, за да се как може да се смекчат тези неясноти 834 00:36:15,990 --> 00:36:17,280 грешки, потенциално. 835 00:36:17,280 --> 00:36:21,050 Тя може да бъде избегната, разбира се, за входовете, за които говорим. 836 00:36:21,050 --> 00:36:23,590 И, всъщност, pennies-- може би ще се отложи до Zamyla, 837 00:36:23,590 --> 00:36:25,136 Мисля, че за трикове там. 838 00:36:25,136 --> 00:36:27,760 Така че в крайна сметка, вие ще откриете прогресия на проблеми през тази седмица, 839 00:36:27,760 --> 00:36:30,700 първият от които е доста малък, след среда, след това малко по-голям. 840 00:36:30,700 --> 00:36:33,200 Но всички от тях използват сградата пресечки от миналата седмица, 841 00:36:33,200 --> 00:36:35,280 от тази supersection, проблем зададете спецификация 842 00:36:35,280 --> 00:36:36,710 Ви излага на безброй ресурси. 843 00:36:36,710 --> 00:36:41,000 Но все пак, ако изобщо се борят, особено сред тези, които по-малко удобни 844 00:36:41,000 --> 00:36:42,917 без предварителни фон, дойде на работното време 845 00:36:42,917 --> 00:36:44,958 в понеделник и вторник и Сряда и четвъртък. 846 00:36:44,958 --> 00:36:46,950 Отидете на CS50 Обсъдете чрез сайт на курса, 847 00:36:46,950 --> 00:36:49,080 чрез което можете да говорите с персонал и съученици. 848 00:36:49,080 --> 00:36:51,670 >> Но в крайна сметка, мисля, че най-добър съвет е просто да започнете рано. 849 00:36:51,670 --> 00:36:54,711 Това не е от вида на класа, която ви би трябвало да започнат в сряда psets 850 00:36:54,711 --> 00:36:56,640 нощ, или по-лошо в четвъртък вечер. 851 00:36:56,640 --> 00:36:59,067 >> MARIA: Най-добрият ми съвет е да са започнали от понеделник. 852 00:36:59,067 --> 00:36:59,900 DAVID Malan: понеделник. 853 00:36:59,900 --> 00:37:02,490 Така че, ако не сте започнали already-- не. 854 00:37:02,490 --> 00:37:04,732 Но дори и ако не понеделник, а след това във вторник. 855 00:37:04,732 --> 00:37:05,690 Колкото по-рано толкова по-добре. 856 00:37:05,690 --> 00:37:08,605 И това е причината, поради която Разбира се има толкова много късни дни е 857 00:37:08,605 --> 00:37:10,535 да ви дам малко на психологически натиск 858 00:37:10,535 --> 00:37:13,684 да започне по-рано, но все пак нека нещата се изплъзват, когато нещата отнемат повече 859 00:37:13,684 --> 00:37:14,350 отколкото очаквате. 860 00:37:14,350 --> 00:37:17,950 >> МАРИЯ: И вие искате да се възползвате от работно време, колкото можете, също. 861 00:37:17,950 --> 00:37:20,291 >> DAVID Malan: Всякакви въпроси? 862 00:37:20,291 --> 00:37:20,790 Всичко е наред. 863 00:37:20,790 --> 00:37:22,930 Е, защо да не отлага тук? 864 00:37:22,930 --> 00:37:23,487