1 00:00:00,000 --> 00:00:12,410 >> [Музички] 2 00:00:12,410 --> 00:00:12,830 >> Дејвид MALAN: Во ред. 3 00:00:12,830 --> 00:00:13,370 Добредојде назад. 4 00:00:13,370 --> 00:00:16,510 Ова е CS50, а тоа е Недела Еден, продолжи. 5 00:00:16,510 --> 00:00:20,050 Така една од причините ние сме биле поминува околу технологии како 6 00:00:20,050 --> 00:00:24,120 Google стакло е дека тие доаѓаат со нешто познат како API-то, на 7 00:00:24,120 --> 00:00:25,980 Пријава Програмирање интерфејс. 8 00:00:25,980 --> 00:00:28,830 И она што тоа значи е дека со право датотеки и со право 9 00:00:28,830 --> 00:00:32,850 документација, вие всушност може да напише софтвер за дури и уреди како овие. 10 00:00:32,850 --> 00:00:36,200 >> И така она што го имаме на ум кон семестри крајот е, ако еден проект 11 00:00:36,200 --> 00:00:39,310 вклучување, да речеме, на Google стакло може жалба, ќе видиме што можеме да направиме во 12 00:00:39,310 --> 00:00:42,220 Услови за hooking ви со некои заем хардвер, како и на 13 00:00:42,220 --> 00:00:46,500 јавно достапни API, така што ќе може всушност започнете создавање на софтвер 14 00:00:46,500 --> 00:00:48,630 кој работи на истата Гугл стакло. 15 00:00:48,630 --> 00:00:51,710 >> Друг уред дека ние сме биле играње со на крајот кои што мислевме дека би можеле да бидат 16 00:00:51,710 --> 00:00:53,910 забава на крајот семестар е оваа мала работа тука. 17 00:00:53,910 --> 00:00:56,860 Таа се вика скок движење, и она што си за да ја видите е технички на 18 00:00:56,860 --> 00:01:00,280 реклама за уредот, но тоа не зборува за она што ова особено 19 00:01:00,280 --> 00:01:01,240 уред е способен. 20 00:01:01,240 --> 00:01:05,550 И тоа, исто така, доаѓа со API, преку кои може да се напише софтвер да 21 00:01:05,550 --> 00:01:10,545 контрола на вашиот сопствен компјутер на начин сосема вака едноминутен филм тука. 22 00:01:10,545 --> 00:01:12,070 >> [Видео репродукција] 23 00:01:12,070 --> 00:02:08,002 24 00:02:08,002 --> 00:02:08,590 >> [Крај видео репродукција] 25 00:02:08,590 --> 00:02:11,190 >> Па токму сега, овој уред се случува со да се спроведе како мало USB 26 00:02:11,190 --> 00:02:14,290 конектор дека можете да го приклучиш во вашиот компјутер, но јас не би бил изненаден 27 00:02:14,290 --> 00:02:17,930 ако пред долго имаме овие видови на технологии во следната серија на компјутери 28 00:02:17,930 --> 00:02:20,510 и Macs, така што ќе може, всушност, комуницирате со неа во 29 00:02:20,510 --> 00:02:21,650 на начин како тоа. 30 00:02:21,650 --> 00:02:24,250 Всушност, она што мислев дека сум се направи, исто така, е Јас го зафрла малку демонстрација 31 00:02:24,250 --> 00:02:25,860 програма која доаѓа со овој софтвер. 32 00:02:25,860 --> 00:02:28,700 Па јас сум се стави малку сензор пред мојот лаптоп. 33 00:02:28,700 --> 00:02:32,420 >> И како што можете да видите, тоа веќе остварува дека мојата рака е таму 34 00:02:32,420 --> 00:02:33,400 контролирање на неа. 35 00:02:33,400 --> 00:02:37,900 И сите на оваа апликација го прави е по вода малку нешта како оваа. 36 00:02:37,900 --> 00:02:41,080 Но може да се види дека, навистина, Имам пет прсти таму. 37 00:02:41,080 --> 00:02:44,270 Ако можеме да се добие тоа да се направи сите 10, можете да си замислите уредни пијано 38 00:02:44,270 --> 00:02:45,390 апликација или слично. 39 00:02:45,390 --> 00:02:47,820 Значи, ако сакате да се излезе по класа денес и игра со тоа што се 40 00:02:47,820 --> 00:02:49,720 добро, вие сте добредојдени да. 41 00:02:49,720 --> 00:02:52,930 Толку повеќе за тоа кон крајот семестар. 42 00:02:52,930 --> 00:02:54,420 >> Па неколку административни најави. 43 00:02:54,420 --> 00:02:58,690 Еден, дали делот од овој петок на пладне на cs60.net/section. 44 00:02:58,690 --> 00:03:01,260 Дека рачно е на курсот почетната страница од пребарувачот, како и. 45 00:03:01,260 --> 00:03:04,010 Во меѓувреме, иако, supersections ќе дебитира оваа недела. 46 00:03:04,010 --> 00:03:07,800 Supersections се еднократен работа, бидејќи тоа ни е потребно некое време да работат 47 00:03:07,800 --> 00:03:09,470 дознаете кој е во кој дел и каде. 48 00:03:09,470 --> 00:03:12,280 >> Па ова доаѓа недела, ќе има еден делот за оние кои се помалку удобно, 49 00:03:12,280 --> 00:03:14,040 еден дел за оние поудобно. 50 00:03:14,040 --> 00:03:16,110 И оние од вас некаде во помеѓу сте добредојдени да се оди на 51 00:03:16,110 --> 00:03:17,850 едниот или на двата или не. 52 00:03:17,850 --> 00:03:19,150 И двете од овие ќе се снима. 53 00:03:19,150 --> 00:03:22,740 Тие ќе бидат во поголем аудиториум од делот нормално ќе биде внатре 54 00:03:22,740 --> 00:03:26,110 Но Целта тука е да ви овозможат со некои удобност со проблемот постави еден, 55 00:03:26,110 --> 00:03:29,910 со C, со CS50 апаратот, овој викенд, дури и пред да дознаете вашиот 56 00:03:29,910 --> 00:03:31,050 формален дел задача. 57 00:03:31,050 --> 00:03:34,700 Па ќе ги задоволат вашите ТФ и вашиот помал група на sectionmates во врска со 58 00:03:34,700 --> 00:03:36,350 една недела време. 59 00:03:36,350 --> 00:03:38,200 >> Работно време, пак, се случува. 60 00:03:38,200 --> 00:03:41,020 Ги искористат предностите од нив вечерва или утре вечер, ако би сакал. 61 00:03:41,020 --> 00:03:43,460 Проблемот сет 0 се должи во петокот. 62 00:03:43,460 --> 00:03:46,680 Ова е еден ден подоцна од редовно-закажаното, во четвртокот. 63 00:03:46,680 --> 00:03:50,410 Но со проблем сет 1, ќе видите дека тоа вклучува некои загревање 64 00:03:50,410 --> 00:03:52,770 вежби со кој можете сами може да се прошири своите 65 00:03:52,770 --> 00:03:54,660 Четврток рок до петок. 66 00:03:54,660 --> 00:03:58,410 Проблемот сет 1, во меѓувреме, ќе дебитира на веб-страницата на курсот ова доаѓа 67 00:03:58,410 --> 00:04:02,000 Петок, ако сакате да навивам со тоа како што го направив еднаш едно време доцна 68 00:04:02,000 --> 00:04:04,370 Петок навечер во вашата соба. 69 00:04:04,370 --> 00:04:07,660 >> Па cs50.net/appliance е местото каде што можете да добиете на CS50 апаратот 70 00:04:07,660 --> 00:04:09,040 дека ние почна да го користи во понеделникот. 71 00:04:09,040 --> 00:04:10,140 Ние ќе го користи малку повеќе денес. 72 00:04:10,140 --> 00:04:14,040 Но остатокот увери дека проблемот поставите 1 спецификација ќе ви прошетка низ 73 00:04:14,040 --> 00:04:16,490 токму на чекори што мора да се добие дека и трчање. 74 00:04:16,490 --> 00:04:22,120 Па не се грижи за тоа дека пред Pset 1 ако не би. 75 00:04:22,120 --> 00:04:22,660 >> Сите во право. 76 00:04:22,660 --> 00:04:27,180 Па ние погледна во понеделникот на изворниот код, но во контекст на новата 77 00:04:27,180 --> 00:04:30,895 програмски јазик, имено В И Ц, за разлика од нула, не е графички. 78 00:04:30,895 --> 00:04:32,270 Тоа не е мозаик парчиња. 79 00:04:32,270 --> 00:04:34,450 Тоа е повеќе англиски како синтаксата. 80 00:04:34,450 --> 00:04:37,140 И има неколку чекори кои се вклучени во всушност пишување и водење на 81 00:04:37,140 --> 00:04:41,650 програма во C, бидејќи покрај извор кодот вака, ти треба нешто 82 00:04:41,650 --> 00:04:42,890 нарекува компајлерот. 83 00:04:42,890 --> 00:04:46,682 И во однос на Едноставен, што се на компајлерот да направи за нас? 84 00:04:46,682 --> 00:04:47,650 Да. 85 00:04:47,650 --> 00:04:51,040 >> СТУДЕНТСКИ: Таа се конвертира го кодот дека ти пишувам за 0-ти и 1S. 86 00:04:51,040 --> 00:04:51,151 >> Дејвид MALAN: Добро. 87 00:04:51,151 --> 00:04:53,580 Значи, таа го претвора кодот кој ние пишуваме на 0-ти и 1S. 88 00:04:53,580 --> 00:04:57,730 Таа се конвертира т.н. изворен код за да објектниот код, на последната на која изгледа 89 00:04:57,730 --> 00:04:59,140 малку нешто како ова. 90 00:04:59,140 --> 00:05:02,860 И тоа е вашиот процесор, мозокот внатрешноста на вашиот компјутер, дека поради 91 00:05:02,860 --> 00:05:06,280 луѓето кои го создадоа оние компјутери, знаете што тие секвенци 92 00:05:06,280 --> 00:05:07,460 од 0-ти и 1S средина. 93 00:05:07,460 --> 00:05:08,640 >> Можеби тоа значи печати. 94 00:05:08,640 --> 00:05:10,265 Можеби тоа значи прилог. 95 00:05:10,265 --> 00:05:11,610 Можеби тоа значи одземање. 96 00:05:11,610 --> 00:05:13,350 Можеби тоа значи прикаже графички. 97 00:05:13,350 --> 00:05:16,870 Постојат предефинирани шаблони на битови дека светот одлучи да значи 98 00:05:16,870 --> 00:05:17,700 некои работи. 99 00:05:17,700 --> 00:05:20,760 Но во најголем дел во овој курс, ние ќе работат на повисоко ниво, и 100 00:05:20,760 --> 00:05:24,180 ние ќе земе здраво за готово дека постојат работи како компајлери кои можат да 101 00:05:24,180 --> 00:05:27,670 направи нашиот изворен код функција во начинот на кој ние имаме намера. 102 00:05:27,670 --> 00:05:31,660 >> Па на програмата ние напиша првата минатата недела а потоа почна да пристаниште, па да 103 00:05:31,660 --> 00:05:33,920 зборува, да степена во овој минатото Понеделник, беше ова. 104 00:05:33,920 --> 00:05:35,700 Кога зелено знаме кликнато, велат здраво. 105 00:05:35,700 --> 00:05:37,430 Ова беше, се разбира, напишано во Скреч. 106 00:05:37,430 --> 00:05:40,710 И јас тврдеше дека еквивалент програма во C изгледаше малку 107 00:05:40,710 --> 00:05:41,520 нешто како ова. 108 00:05:41,520 --> 00:05:45,050 >> Значи она што сме мислеле дека би го сторила во прв е, ајде да одгатнат што изгледа, на прв 109 00:05:45,050 --> 00:05:48,790 поглед, очигледно, како прилично таинствени, синтакса, но ќе почне да се забележи 110 00:05:48,790 --> 00:05:50,160 моделите доста брзо. 111 00:05:50,160 --> 00:05:53,770 Она што ние, исто така, ќе го стори денес е обезбеди ви со ментална модел за некои 112 00:05:53,770 --> 00:05:57,280 канонски, некои стандардни конструкции во програмирање. 113 00:05:57,280 --> 00:06:00,420 А потоа ние всушност ќе добијат нашите раце валкани со некои примери како добро. 114 00:06:00,420 --> 00:06:04,140 >> Така и за оние од вас поудобно, сфатат дека ова недела, а потоа следната 115 00:06:04,140 --> 00:06:05,940 недела многу добро може да биде малку на преглед. 116 00:06:05,940 --> 00:06:08,810 Но особено кога на хакерите издание на проблемот сет 1 излегува на 117 00:06:08,810 --> 00:06:12,330 веб-сајт се разбира во петокот, јас мислам дека ќе најдете дека дури и како ви се пополни во 118 00:06:12,330 --> 00:06:15,390 некои празни места во текот на следната недела или две, ќе почнат да се добие уште 119 00:06:15,390 --> 00:06:18,410 соочат со предизвикот и се судрите нови и понови нешта. 120 00:06:18,410 --> 00:06:21,310 >> Па ајде да се закачам оваа програма, освен неколку линии во исто време. 121 00:06:21,310 --> 00:06:24,140 Во самиот врв, имаме она што е технички нарекува 122 00:06:24,140 --> 00:06:25,950 препроцесори директива. 123 00:06:25,950 --> 00:06:30,510 Ова е само една линија на кодот кој вели за да го вклучите содржината на фајл, 124 00:06:30,510 --> 00:06:35,080 наречен стандард I / N, стандарден влез - или, жал, стандардот I / O, стандард 125 00:06:35,080 --> 00:06:38,670 влез / излез,. часот, во внатрешноста на мојата сопствена програма. 126 00:06:38,670 --> 00:06:41,670 >> Значи со други зборови, ако јас го напишав овој Програма со едноставни текст едитор како 127 00:06:41,670 --> 00:06:45,260 gedit, поедноставно еквивалент на нешто како Microsoft Word, дека 128 00:06:45,260 --> 00:06:50,970 настава, # вклучуваат stdio.h, е само ќе кажам на компајлерот, го зграпчувам 129 00:06:50,970 --> 00:06:56,080 содржината на таа друга датотека, stdio.h, и ставете ги во право тука. 130 00:06:56,080 --> 00:06:57,090 >> Сега, зошто е гајле? 131 00:06:57,090 --> 00:07:01,850 Што ние тврдиме е внатре од оваа датотека наречен stdio.h, кои се чуваат 132 00:07:01,850 --> 00:07:05,490 некаде на мојот хард диск, или во овој случај, некаде во CS50 апаратот? 133 00:07:05,490 --> 00:07:06,635 Некој друг ја стави таму за мене. 134 00:07:06,635 --> 00:07:09,910 Но она што е во него? 135 00:07:09,910 --> 00:07:13,020 >> Да, па тоа е објава на функција наречена printf. 136 00:07:13,020 --> 00:07:17,400 Па printf потсетува на функција која прикажува зборови и знаци и 137 00:07:17,400 --> 00:07:20,160 броеви на екранот на мојот наддавање. 138 00:07:20,160 --> 00:07:21,220 Но јас не го пишувам. 139 00:07:21,220 --> 00:07:22,230 CS50 не го пишувам. 140 00:07:22,230 --> 00:07:26,990 Некој години го напишал, и тие во суштина ни даде рецепт за тоа 141 00:07:26,990 --> 00:07:29,110 во датотека наречена stdio.h. 142 00:07:29,110 --> 00:07:33,240 Така што првата линија само ми дава пристап да функционира дека некој друг 143 00:07:33,240 --> 00:07:36,500 напиша години, меѓу кои се printf. 144 00:07:36,500 --> 00:07:39,450 >> Сега, на следната линија, ќе одам да се бранува моите рака во, барем до следната недела. 145 00:07:39,450 --> 00:07:43,620 Но, за сега, знам дека int главната (празно) е суштина еквивалент на ова 146 00:07:43,620 --> 00:07:46,310 жолта загатка парче кога зелено знаме кликнато. 147 00:07:46,310 --> 00:07:49,510 Светот, пред неколку години, одлучи дека ако сте пишување програма во 148 00:07:49,510 --> 00:07:53,150 јазик наречен C, ќе почнете да вашата програма со линија 149 00:07:53,150 --> 00:07:54,410 што личи тоа. 150 00:07:54,410 --> 00:07:57,650 Во само околу една недела, тоа ќе се направи смисла што int е, што празнина е. 151 00:07:57,650 --> 00:08:00,840 Но, за сега, само мислам на тоа бидејќи ова жолта загатка парче. 152 00:08:00,840 --> 00:08:04,550 >> Сега следно, имаме кадрава голема заграда по од друг близок кадрава голема заграда, 153 00:08:04,550 --> 00:08:05,240 така да се каже. 154 00:08:05,240 --> 00:08:07,430 И ние ќе ги видите овие во текот на програми во C, како и 155 00:08:07,430 --> 00:08:08,930 Вклучите Javascript-и PHP. 156 00:08:08,930 --> 00:08:11,345 И овие само капсулирало поврзани линии на код. 157 00:08:11,345 --> 00:08:14,600 Отворен кадрава голема заграда суштина вели, тука доаѓа некои код. 158 00:08:14,600 --> 00:08:17,590 И затворениот кадрава голема заграда, што е искосени во друга насока, само 159 00:08:17,590 --> 00:08:19,920 значи, тоа е тоа за релевантните код. 160 00:08:19,920 --> 00:08:22,970 >> Па сочни линија во оваа прва Програмата е последен, printf, 161 00:08:22,970 --> 00:08:25,080 цитат-unquote, здраво светот. 162 00:08:25,080 --> 00:08:30,670 И јас го повикував на нешто помеѓу цитати она што минатиот пат? 163 00:08:30,670 --> 00:08:31,285 Па тоа е стринг. 164 00:08:31,285 --> 00:08:35,309 И низа е само techie термин за низа од 165 00:08:35,309 --> 00:08:37,169 карактери, збор, фраза. 166 00:08:37,169 --> 00:08:39,380 Дури и една буква може се двојно цитираше. 167 00:08:39,380 --> 00:08:41,840 Но, тоа е секвенца од нула или повеќе ликови. 168 00:08:41,840 --> 00:08:43,650 >> Обратна коса црта-N, сепак, изгледа малку чудно. 169 00:08:43,650 --> 00:08:46,290 Но, тоа едноставно значи нешто едноставно со компјутер. 170 00:08:46,290 --> 00:08:48,060 Што е обратна коса црта-n? 171 00:08:48,060 --> 00:08:48,570 Нова линија. 172 00:08:48,570 --> 00:08:52,490 Па тоа е само посебен редослед на ликови кои светот одлучи 173 00:08:52,490 --> 00:08:56,880 средства се стави ред во право, таму, затоа што на компајлерот, всушност, ќе добиете 174 00:08:56,880 --> 00:09:02,280 збунет, обично, ако, многу разбирливо, но погрешно, само 175 00:09:02,280 --> 00:09:04,570 започне притискање на Enter да се стави нови линии во вашиот код. 176 00:09:04,570 --> 00:09:07,150 Што треба да биде малку повеќе експлицитна со обратна коса црта-n. 177 00:09:07,150 --> 00:09:10,540 >> И ќе видиме има неколку други такви шеми за специјални карактери. 178 00:09:10,540 --> 00:09:14,340 На пример, ако си сакал да ги споделите вашите ум талкаат во корнер случај, 179 00:09:14,340 --> 00:09:18,080 да претпоставиме дека сакам да се печати двојни наводници на екранот за 180 00:09:18,080 --> 00:09:21,840 која било причина, што би се чини дека да биде малку проблематично, нели? 181 00:09:21,840 --> 00:09:24,990 Затоа што ако јас се стави наводници во средината на "Здраво, свет", за што 182 00:09:24,990 --> 00:09:30,120 Причината, зошто, кои се чини потенцијално проблематични? 183 00:09:30,120 --> 00:09:32,180 Не го скрши на стрингот. 184 00:09:32,180 --> 00:09:34,700 >> На компајлерот е само програмата. 185 00:09:34,700 --> 00:09:37,210 А програма како компајлер е само ќе да ја прочитате вашата код врвот до дното, 186 00:09:37,210 --> 00:09:37,990 лево кон десно. 187 00:09:37,990 --> 00:09:41,850 И ако гледа три двојни наводници, наместо на две деца, тоа не се случува да се знае 188 00:09:41,850 --> 00:09:45,210 ако мислиш дека нешто кон лево треба да биде стринг, или нешто што треба да 189 00:09:45,210 --> 00:09:46,570 право, или целата работа. 190 00:09:46,570 --> 00:09:50,560 Тоа е двосмислена, и така она што еден типичен компајлерот ќе направите е само да навивач надвор, 191 00:09:50,560 --> 00:09:53,710 и да ви даде некои порака за грешка, и ве натера да се справи со проблемот. 192 00:09:53,710 --> 00:09:58,120 >> Па со оглед на тоа обратна коса црта-n значи нова линија, што би вашите инстинкти сега 193 00:09:58,120 --> 00:10:02,610 почне да биде ако си сакал да вклучуваат нешто аномално како двојни 194 00:10:02,610 --> 00:10:06,210 цитирам во внатрешноста на оваа инаку цитирана стринг? 195 00:10:06,210 --> 00:10:07,640 Обратна коса црта-двојни наводници. 196 00:10:07,640 --> 00:10:09,630 И така ние ќе ја видите оваа вид на шема премногу. 197 00:10:09,630 --> 00:10:12,490 >> Ако сакате да се направи нешто малку чудни, ќе најдете дека 198 00:10:12,490 --> 00:10:15,060 решенија често го следат моделот, и обратна коса црта 199 00:10:15,060 --> 00:10:17,150 означува бегство низа. 200 00:10:17,150 --> 00:10:20,320 И тоа само значи нешто посебно дека ние треба да ги претставуваат во 201 00:10:20,320 --> 00:10:21,060 поинаков начин. 202 00:10:21,060 --> 00:10:23,830 Што се однесува како да претставуваат обратна коса црта, добро, ние ќе 203 00:10:23,830 --> 00:10:24,550 се вратам на тоа. 204 00:10:24,550 --> 00:10:26,930 Но одговорот, исто така, е, всушност, малку очигледна. 205 00:10:26,930 --> 00:10:31,080 >> Па ајде сега се воведат некои други програмски конструкции 206 00:10:31,080 --> 00:10:31,915 што го виде во Скреч. 207 00:10:31,915 --> 00:10:34,790 Сте веројатно зема здраво за готово веќе ако веќе сте го нурна во 208 00:10:34,790 --> 00:10:36,060 Проблемот постави 0. 209 00:10:36,060 --> 00:10:40,950 Но, ајде сега се воведе на синтаксата во C за овие инаку прилично интуитивна 210 00:10:40,950 --> 00:10:42,300 идеи, барем некои од нив. 211 00:10:42,300 --> 00:10:45,570 >> Па овој поим на една состојба или гранка, а претходно ние 212 00:10:45,570 --> 00:10:49,330 претставен со код кој изгледаше како овој од левата страна во Скреч - 213 00:10:49,330 --> 00:10:52,200 ако x е помалку од Y, тогаш кажете го тоа - 214 00:10:52,200 --> 00:10:56,760 наместо сега во C - дозволете ми да брус во на наједноставен случај - 215 00:10:56,760 --> 00:11:01,235 ние сме едноставно се случува да се каже, ако, отворете заграда, нешто не е вистина - на 216 00:11:01,235 --> 00:11:04,190 Рационален израз се случува да одам каде што реков состојба - 217 00:11:04,190 --> 00:11:08,170 блиску заграда, тогаш направи она што е во внатрешноста од оние големите загради. 218 00:11:08,170 --> 00:11:11,020 >> Значи тука, исто така, на тркалезните загради се вид на како гребење на 219 00:11:11,020 --> 00:11:12,460 Форма на буквата У мозаик парчиња. 220 00:11:12,460 --> 00:11:14,890 Го направи она што е внатре во овие големи загради. 221 00:11:14,890 --> 00:11:16,790 Во овој случај, коса црта коса црта. 222 00:11:16,790 --> 00:11:19,720 И ќе забележите ова е напред коса црта, не обратна коса црта. 223 00:11:19,720 --> 00:11:21,440 Напред коса црта, напред коса црта, за оние кои сте програмирани 224 00:11:21,440 --> 00:11:23,370 пред, само значи - 225 00:11:23,370 --> 00:11:24,190 тоа е само коментар. 226 00:11:24,190 --> 00:11:26,630 А коментар не е на линија на код, сама за себе. 227 00:11:26,630 --> 00:11:30,200 Тоа е линија на англиски што вие, човечки, имаат напишано себе си да се 228 00:11:30,200 --> 00:11:33,540 можеби ве потсетам да се направи нешто, да објасни за себе, да му се објасни 229 00:11:33,540 --> 00:11:35,260 некој друг, она што ти го кодот прави. 230 00:11:35,260 --> 00:11:37,050 Тоа е само описни коментар. 231 00:11:37,050 --> 00:11:40,880 >> Сега, се разбира, ние може да има двонасочна вилушка во патот само со тоа, некој 232 00:11:40,880 --> 00:11:43,930 три-начин вилушка на патот со тоа ова, и ако продолжиме со ова 233 00:11:43,930 --> 00:11:47,570 модел, може да имаат четири начин, пет-насоки, шест начин вилушки на патот ако 234 00:11:47,570 --> 00:11:50,150 што треба да се справи, навистина, дека многу услови. 235 00:11:50,150 --> 00:11:52,010 А потоа забележите паралелизам тука - 236 00:11:52,010 --> 00:11:55,070 ако (состојба), друго, ако (состојба), и само оној кој е малку 237 00:11:55,070 --> 00:11:58,010 чудно е последниот, кој е само што друго. 238 00:11:58,010 --> 00:12:01,170 Но, повторно, ова е идентична, концептуално, со она што ние го направивме 239 00:12:01,170 --> 00:12:04,690 веќе, иако на синтаксата ќе потрае малку се користи за добивање. 240 00:12:04,690 --> 00:12:07,730 >> Сега, во овој пример, постојат некои други чудни синтакса. 241 00:12:07,730 --> 00:12:11,220 Гледаме printf повторно, отворен заграда, и блиску заграда. 242 00:12:11,220 --> 00:12:13,190 И во внатрешноста на постои цитирана стринг. 243 00:12:13,190 --> 00:12:17,060 На загради, во контекст на printf, одат на левата страна 244 00:12:17,060 --> 00:12:18,160 и право на што? 245 00:12:18,160 --> 00:12:22,190 Што ние ја опишуваат која се цитирани стринг како поопшто? 246 00:12:22,190 --> 00:12:23,320 >> Па тоа е аргумент. 247 00:12:23,320 --> 00:12:26,620 Секое време имаш некоја функција, како printf, а потоа отворен paren и 248 00:12:26,620 --> 00:12:30,330 во близина paren и нешто внатрешноста на тоа, без разлика дали тоа е стринг, или 249 00:12:30,330 --> 00:12:34,420 цел број, или нешто друго, нешто во помеѓу оние загради се нарекува 250 00:12:34,420 --> 00:12:35,110 аргумент. 251 00:12:35,110 --> 00:12:37,910 >> И аргумент само влијае на функцијата однесување. 252 00:12:37,910 --> 00:12:39,990 Во овој случај, тоа е прилично јасно како. 253 00:12:39,990 --> 00:12:44,480 x 00:12:47,720 И printf се случува да се печати токму тоа. 255 00:12:47,720 --> 00:12:51,590 Бидејќи сигурно, лицето години кои спроведуваат printf немаше поим 256 00:12:51,590 --> 00:12:55,000 она што човечки наследници беа случува да го користите printf за. 257 00:12:55,000 --> 00:12:58,610 Па затоа аргументи постои, да влијае врз однесувањето по функцијата 258 00:12:58,610 --> 00:12:59,450 е напишано. 259 00:12:59,450 --> 00:13:00,780 >> Сега, Булова изразување. 260 00:13:00,780 --> 00:13:02,470 Ние сме виделе овие пред во Скреч. 261 00:13:02,470 --> 00:13:06,680 Излезе во C можете исто така да "или" нив заедно, така да се каже. 262 00:13:06,680 --> 00:13:10,930 Две вертикални решетки значи дека овој блок на код, ова го направите ова, ќе 263 00:13:10,930 --> 00:13:15,350 изврши ако првиот услов е вистина или вториот услов е вистина. 264 00:13:15,350 --> 00:13:17,710 Па дури и покрај тоа што не би можеле да имаат направено ова во нула, можете да навистина 265 00:13:17,710 --> 00:13:20,580 го прават тоа во нула, и исто така можете да изразат себе си поинаку - 266 00:13:20,580 --> 00:13:25,300 ако првиот состојба, а вториот состојба се вистинити, тогаш направи она што е 267 00:13:25,300 --> 00:13:27,160 внатрешноста на тркалезните загради. 268 00:13:27,160 --> 00:13:31,210 >> И само како настрана, причината е двојно го симболот и двојно 269 00:13:31,210 --> 00:13:34,610 вертикална лента, ќе видиме на крајот дека еден вертикална лента и 270 00:13:34,610 --> 00:13:38,710 една симболот всушност имаат различни што значи во C. Значи сега за сега, 271 00:13:38,710 --> 00:13:41,840 дека дуплирање на симболи е намерна. 272 00:13:41,840 --> 00:13:45,070 >> Па ајде да се воведе, накратко, оваа други малку на синтакса. 273 00:13:45,070 --> 00:13:48,940 Тоа сосема не се носат во текот на Нула, но тврдам дека можам 274 00:13:48,940 --> 00:13:55,190 спроведување на поимот на ако друго, ако друго, ако на друго место, ако друго успех, користејќи 275 00:13:55,190 --> 00:13:56,760 нешто што се нарекува прекинувач изјава. 276 00:13:56,760 --> 00:14:00,820 А единствената причина зошто ова навистина постои е само да ви даде, програмер, а 277 00:14:00,820 --> 00:14:05,470 малку поинаков начин на решавање на некои проблем, иако логично тоа 278 00:14:05,470 --> 00:14:07,340 не ви даде какви било нови способности. 279 00:14:07,340 --> 00:14:08,530 >> Со тоа мислам ова. 280 00:14:08,530 --> 00:14:13,330 Кога ќе се каже прекинувач, а потоа празно место, а потоа и загради, во внатрешноста 281 00:14:13,330 --> 00:14:14,570 од која оди израз - 282 00:14:14,570 --> 00:14:18,010 и ова може да биде малку не-очигледно во прв, но тоа не е аргумент, 283 00:14:18,010 --> 00:14:20,680 технички, бидејќи прекинувач не е во функција. 284 00:14:20,680 --> 00:14:24,230 Значи сега за сега, само да се претпостави, дека ние сме користење загради во различни места 285 00:14:24,230 --> 00:14:25,250 за различни причини. 286 00:14:25,250 --> 00:14:29,310 >> Па прекинувач на израз значи можам стави променлива во внатрешноста на тие 287 00:14:29,310 --> 00:14:31,350 загради каде што вели изразување. 288 00:14:31,350 --> 00:14:33,090 А потоа, ако таа променлива - 289 00:14:33,090 --> 00:14:35,400 Претпоставувам дека тоа се вика X, и тоа е само цел број - 290 00:14:35,400 --> 00:14:38,900 Јас тогаш може да наведеме во мојот слајд тука нешто како ова. 291 00:14:38,900 --> 00:14:41,690 Ако x е мојот променлива, и јас сакате да направите нешто ако x 292 00:14:41,690 --> 00:14:43,480 е еднаква на 1, можам да го направите тоа. 293 00:14:43,480 --> 00:14:46,660 >> Ако јас наместо сакате да направите нешто ако x е 2, можам да го направите тоа. 294 00:14:46,660 --> 00:14:50,390 Друго, ако сакам да се направи нешто друго целосно, јас може да има стандардно случај во 295 00:14:50,390 --> 00:14:52,750 кој случај јас го направите ова друга работа. 296 00:14:52,750 --> 00:14:58,730 Па во таа смисла, тоа е еквивалентно на ако x е еднаква еднаква на 1, друго, ако на друго место, 297 00:14:58,730 --> 00:15:01,150 но Јас се спомене овој сега само затоа што ние ќе го види повторно. 298 00:15:01,150 --> 00:15:03,720 Но, за сега, само знам дека тоа постои. 299 00:15:03,720 --> 00:15:04,220 >> Сите во право. 300 00:15:04,220 --> 00:15:07,660 Па овие последниве неколку се малку повеќе комплекс на прв поглед, но тие не го 301 00:15:07,660 --> 00:15:09,385 нешто прилично јасна. 302 00:15:09,385 --> 00:15:14,410 А за јамка во C е парче од код кој само не нешто повторно и 303 00:15:14,410 --> 00:15:15,330 повторно и повторно. 304 00:15:15,330 --> 00:15:17,590 И само досадни нешто во врска со тоа е тоа е дека тоа е малку криптичната 305 00:15:17,590 --> 00:15:21,380 да се изразат во овој циклични шема, но светот стандардизирани на 306 00:15:21,380 --> 00:15:22,450 на следниот начин. 307 00:15:22,450 --> 00:15:25,760 >> Кога користите за телефонска линија, имаш пар загради повторно. 308 00:15:25,760 --> 00:15:27,570 И ќе забележите дека две semicolons во таму. 309 00:15:27,570 --> 00:15:34,380 Овие две запирки одвоени три различни изрази во внатрешноста на 310 00:15:34,380 --> 00:15:35,020 загради. 311 00:15:35,020 --> 00:15:37,170 Една од нив е т.н. initializations. 312 00:15:37,170 --> 00:15:38,830 Една од нив е т.н. состојба. 313 00:15:38,830 --> 00:15:40,210 И еден е т.н. надградби. 314 00:15:40,210 --> 00:15:43,240 >> Погледна во апстрактното, ова е сосема не-очигледно, па ајде да погледнеме 315 00:15:43,240 --> 00:15:44,630 на конкретен пример. 316 00:15:44,630 --> 00:15:46,720 Во Скреч имавме повтори блок. 317 00:15:46,720 --> 00:15:50,670 И овој блок рече повторува 10 пати, велат "Здраво, свет". Дозволете ми да тврдат за 318 00:15:50,670 --> 00:15:53,810 сега, и ние ќе се вратам на тоа, и ова, исто така, ќе добиете повеќе запознаен со 319 00:15:53,810 --> 00:15:57,345 можете пред долго, еквивалент Ц код може да се каже дека ова - 320 00:15:57,345 --> 00:16:02,320 А за успех и простор, пар загради, забележуваат semicolons во 321 00:16:02,320 --> 00:16:05,730 таму, кој одвои три различни работи, иницијализација, 322 00:16:05,730 --> 00:16:07,320 состојба, и ажурирање. 323 00:16:07,320 --> 00:16:08,840 >> И да се погоди она што првиот се прави. 324 00:16:08,840 --> 00:16:10,690 Int i = 0. 325 00:16:10,690 --> 00:16:15,120 Во однос груба лаик, она што е дека тоа за нас, веројатно? 326 00:16:15,120 --> 00:16:15,590 Па је. 327 00:16:15,590 --> 00:16:19,630 Тоа е прогласување на променлива наречена I, и тоа е тоа даваат она што вредност? 328 00:16:19,630 --> 00:16:20,220 0. 329 00:16:20,220 --> 00:16:24,280 Па тоа е создавање на променлива наречена јас, чување на вредност 0 во неа. 330 00:16:24,280 --> 00:16:26,420 Тоа е т.н. иницијализација. 331 00:16:26,420 --> 00:16:29,360 >> Добро, сега јас тврдеше дека пред дека средниот нешто, јас 332 00:16:29,360 --> 00:16:31,760 <10, е услов. 333 00:16:31,760 --> 00:16:32,730 Па што е тоа? 334 00:16:32,730 --> 00:16:36,560 Па, она што за телефонска линија прави кога програма со за телефонска линија се работи, е 335 00:16:36,560 --> 00:16:41,050 секој пат кога компјутерот тече низ овој циклус, од врвот до дното, врвот до 336 00:16:41,050 --> 00:16:43,740 дното, исто како вие момци не кога броење себе и седнува, 337 00:16:43,740 --> 00:16:47,090 повторно и повторно и повторно, на компјутерот се случува 338 00:16:47,090 --> 00:16:48,560 да се провери таа состојба. 339 00:16:48,560 --> 00:16:51,140 И ако јас е помал од 10, тоа ќе го направат тоа повторно. 340 00:16:51,140 --> 00:16:53,100 Ако јас е помал од 10, тоа ќе го направат тоа повторно. 341 00:16:53,100 --> 00:16:55,030 Ако јас е помал од десет, тоа ќе го направат тоа повторно. 342 00:16:55,030 --> 00:16:57,330 Така што се чини дека укажуваат на тоа дека се надевам дека ќе се менува. 343 00:16:57,330 --> 00:16:59,010 Во спротивно, би имале бесконечна јамка. 344 00:16:59,010 --> 00:17:02,590 И навистина, јас се менува, затоа што Последното нешто по точка-запирка таму 345 00:17:02,590 --> 00:17:05,569 е малку криптичната синтаксата на i + +. 346 00:17:05,569 --> 00:17:07,630 Но оние од вас кои го направиле тоа пред, тоа само значи 347 00:17:07,630 --> 00:17:08,609 сосема едноставно што? 348 00:17:08,609 --> 00:17:09,730 >> СТУДЕНТИ: [INTERPOSING ГЛАСОВИ]. 349 00:17:09,730 --> 00:17:10,740 >> Дејвид MALAN: Додај 1 да се з. 350 00:17:10,740 --> 00:17:11,819 Прираст јас. 351 00:17:11,819 --> 00:17:13,910 Па видовме Скреч загатка парче за тоа, всушност. 352 00:17:13,910 --> 00:17:18,230 Тоа не изгледа како јас + +, но дека само значи, сосема едноставно, прираст на 353 00:17:18,230 --> 00:17:24,040 вредност можам од 1 секој пат кога ќе го направите тоа. 354 00:17:24,040 --> 00:17:26,910 Значи буквално, ќе почнете со иницијализацијата јас на 0. 355 00:17:26,910 --> 00:17:29,520 Тогаш проверете ја вашата состојба. 356 00:17:29,520 --> 00:17:31,070 Е 0 помалку од 10? 357 00:17:31,070 --> 00:17:31,730 Да. 358 00:17:31,730 --> 00:17:32,910 Ние одиме низ јамката. 359 00:17:32,910 --> 00:17:35,150 >> Следното нешто тврдам на компјутерот одам да направите е тоа се случува 360 00:17:35,150 --> 00:17:35,910 на i прираст. 361 00:17:35,910 --> 00:17:37,080 Па јас сега 1. 362 00:17:37,080 --> 00:17:37,940 Ја проверува состојбата. 363 00:17:37,940 --> 00:17:39,290 Е 1 помалку од 10? 364 00:17:39,290 --> 00:17:39,930 Се разбира. 365 00:17:39,930 --> 00:17:41,030 Па тоа го прави повторно. 366 00:17:41,030 --> 00:17:43,580 Тогаш тоа наголемува i + + до 2. 367 00:17:43,580 --> 00:17:44,610 Е 2 помалку од 10? 368 00:17:44,610 --> 00:17:45,230 Да. 369 00:17:45,230 --> 00:17:46,670 И повторно и повторно и повторно. 370 00:17:46,670 --> 00:17:50,070 И на крајот, бидејќи на плус-plussing, ние се да i изнесува 10. 371 00:17:50,070 --> 00:17:51,675 Е 10 помалку од 10? 372 00:17:51,675 --> 00:17:52,990 Па, очигледно не. 373 00:17:52,990 --> 00:17:55,320 И тоа е точката во која на за телефонска линија само ќе престане. 374 00:17:55,320 --> 00:17:58,320 И ако имате повеќе кодот на екран долу, компјутерот 375 00:17:58,320 --> 00:18:01,620 продолжува да работи таа код наместо тоа. 376 00:18:01,620 --> 00:18:05,380 >> Значи, повторно, иако тоа се случува да се изгледаат и се чувствуваат малку чудно во 377 00:18:05,380 --> 00:18:07,830 прво, секако, за оние од вас кои никогаш програмиран пред тоа, тоа 378 00:18:07,830 --> 00:18:11,640 буквално ја намалува концептуално на она што е инаку многу 379 00:18:11,640 --> 00:18:14,330 јасна загатка парче во Скреч. 380 00:18:14,330 --> 00:18:19,130 >> Сите во право, јас ветив дека таму ќе да има и други аналози во Скреч. 381 00:18:19,130 --> 00:18:20,060 Таму е ова еден премногу. 382 00:18:20,060 --> 00:18:21,700 И ние го виде тоа накратко последен пат. 383 00:18:21,700 --> 00:18:23,530 Но се сеќавам засекогаш блокира во Скреч? 384 00:18:23,530 --> 00:18:25,490 Тоа само прави нешто вечно? 385 00:18:25,490 --> 00:18:27,470 Јас тврди дека може да спроведе ова на овој начин. 386 00:18:27,470 --> 00:18:29,740 А ти всушност може да се спроведе овој во еден куп различни начини. 387 00:18:29,740 --> 00:18:34,260 >> Но додека јамка е само поинаков начинот на C на изразување на себеси. 388 00:18:34,260 --> 00:18:37,080 На крајот на денот, не можете да направите ништо со време јамка што ќе 389 00:18:37,080 --> 00:18:38,360 не може со за телефонска линија. 390 00:18:38,360 --> 00:18:41,430 Па тие се на крајот на ден функционално исто. 391 00:18:41,430 --> 00:18:43,840 Но тоа ви овозможува да се изразат малку поинаку во 392 00:18:43,840 --> 00:18:44,850 на следниот начин. 393 00:18:44,850 --> 00:18:49,720 >> Со додека јамка, тоа е она што е во заграда тоа е проверуваат повторно и 394 00:18:49,720 --> 00:18:51,050 повторно и повторно. 395 00:18:51,050 --> 00:18:55,100 И штом тој израз е лажно, тогаш јамка запира извршувањето, 396 00:18:55,100 --> 00:18:57,890 и компјутерот продолжува да работи без оглед на другите кодот 397 00:18:57,890 --> 00:18:59,230 имате во вашата датотека. 398 00:18:59,230 --> 00:19:02,180 >> Но она што е интересно овде е дека јас буквално ја внеле точно. 399 00:19:02,180 --> 00:19:06,680 И вистински е еден вид на Булова вредност, вистински или лажни вредност. 400 00:19:06,680 --> 00:19:09,750 Па може вистински некогаш стане false ако јас сум буквално 401 00:19:09,750 --> 00:19:11,970 тоа хард-кодирани во мојата програма? 402 00:19:11,970 --> 00:19:12,470 Па нема. 403 00:19:12,470 --> 00:19:13,730 Тоа е малку чудно што Го направив ова. 404 00:19:13,730 --> 00:19:15,190 Но вистинито е вистина. 405 00:19:15,190 --> 00:19:16,320 Нема плус-plussing. 406 00:19:16,320 --> 00:19:17,820 Нема употреба на променливи во тука. 407 00:19:17,820 --> 00:19:22,740 Значи бидејќи јас хард-кодирани додека е точно, ова јамка е секогаш ќе оцени 408 00:19:22,740 --> 00:19:24,090 повторно и повторно и повторно. 409 00:19:24,090 --> 00:19:27,660 >> Значи колку пати е Здраво светот случува да се печати на екранот? 410 00:19:27,660 --> 00:19:28,170 Засекогаш. 411 00:19:28,170 --> 00:19:31,980 Бесконечен број на пати додека батерија умира или некои други надворешни 412 00:19:31,980 --> 00:19:32,730 Настанот се случува. 413 00:19:32,730 --> 00:19:35,880 Значи ова не е веројатно најдобрата програма да се напише, бидејќи ако на корисникот 414 00:19:35,880 --> 00:19:38,660 никогаш не можат да се откажат од вашата програма, тоа е веројатно не она што се наменети. 415 00:19:38,660 --> 00:19:41,070 >> Но, понекогаш, програми треба да имаат бесконечна јамка. 416 00:19:41,070 --> 00:19:44,050 На пример, ако вашиот компјутер има часовникот на тоа, тоа сигурно ќе биде 417 00:19:44,050 --> 00:19:48,130 убаво ако вашиот часовник тоа не го задржи ажурирање себе засекогаш, иако еднаш 418 00:19:48,130 --> 00:19:50,500 втор или еднаш една минута или нешто слично. 419 00:19:50,500 --> 00:19:53,690 Па дури и бесконечна петелки немаат свое место. 420 00:19:53,690 --> 00:19:54,360 >> Сите во право. 421 00:19:54,360 --> 00:19:55,190 И на крај, оваа. 422 00:19:55,190 --> 00:19:57,770 И овој е малку поинаква функционално, и ние ќе се вратам на 423 00:19:57,770 --> 00:19:59,460 ова веројатно во Pset 1. 424 00:19:59,460 --> 00:20:02,370 Но, има друг вид на јамка нарекува направите додека јамка. 425 00:20:02,370 --> 00:20:07,100 И единствената разлика тука помеѓу направи додека јамка и, да речеме, додека јамка, 426 00:20:07,100 --> 00:20:11,120 е дека состојбата се проверува не пред да се изврши код, но по 427 00:20:11,120 --> 00:20:12,080 се изврши на кодот. 428 00:20:12,080 --> 00:20:15,380 Па на врвот за додека јамка, додека правите додека 429 00:20:15,380 --> 00:20:16,560 проверува тоа на дното. 430 00:20:16,560 --> 00:20:21,370 >> И тоа само значи дека додека јамка обично ќе изврши повеќе пати 431 00:20:21,370 --> 00:20:24,630 или помалку пати отколку додека јамка? 432 00:20:24,630 --> 00:20:30,810 Потенцијално повеќе пати, бидејќи не додека јамка е јасно велејќи го направите ова, 433 00:20:30,810 --> 00:20:34,600 само по која точка ќе провери ако состојбата внатрешноста на 434 00:20:34,600 --> 00:20:35,980 загради е вистина. 435 00:20:35,980 --> 00:20:37,940 >> Па ќе видиме ова повторно веројатно во Pset 1. 436 00:20:37,940 --> 00:20:41,150 Ако некогаш сакате да се направи нешто на барем еднаш, а потоа можеби и малку повеќе 437 00:20:41,150 --> 00:20:43,350 пати, ова е добра изградба да го користите. 438 00:20:43,350 --> 00:20:46,970 Но додека јамка, пак, ќе провери неговата состојба во прв план. 439 00:20:46,970 --> 00:20:50,660 И тоа е тоа за петелки во C, дали време, време, и за петелки. 440 00:20:50,660 --> 00:20:54,700 И повторно, тие мапираат прилично убаво назад да се нула, освен овој не 441 00:20:54,700 --> 00:20:57,350 доста имаат иста аналогни во Скреч. 442 00:20:57,350 --> 00:20:58,880 >> Па, како за сега, променливи? 443 00:20:58,880 --> 00:21:02,600 Значи ова е како јас прогласена за променлива синтаксички пред некој ден. 444 00:21:02,600 --> 00:21:06,440 Јас имав int, за што јас тврди е цел број. 445 00:21:06,440 --> 00:21:09,690 Јас тогаш имаше променлива наречена контра, а потоа точка-запирка. 446 00:21:09,690 --> 00:21:11,070 Значи она што е оваа линија код правиш? 447 00:21:11,070 --> 00:21:14,540 Ова е, доста едноставно, прогласувајќи променлива - 448 00:21:14,540 --> 00:21:17,940 тоа е, барајќи од компјутер, дај ми го некои меморија, дај ми некои делови - во 449 00:21:17,940 --> 00:21:19,450 кој може да се сместат што? 450 00:21:19,450 --> 00:21:20,300 На инт. 451 00:21:20,300 --> 00:21:23,570 И точка-запирка само значи крајот на линијата на кодот. 452 00:21:23,570 --> 00:21:25,500 >> Сега, втората линија е веројатно прилично guessable. 453 00:21:25,500 --> 00:21:29,710 Што е контра = 0; правиш? 454 00:21:29,710 --> 00:21:31,690 Тоа е давање 0 за да се спротивстави. 455 00:21:31,690 --> 00:21:33,470 И така ова е друга работа тоа е малку досадни 456 00:21:33,470 --> 00:21:34,540 наспроти, да речеме, алгебра. 457 00:21:34,540 --> 00:21:39,110 Додека во алгебра, знак за еднаквост значи еднаквите, тука во C, еднаквите 458 00:21:39,110 --> 00:21:40,470 знак значи задача. 459 00:21:40,470 --> 00:21:45,380 Па тоа значи стави она што е на десната во она што е на левата страна. 460 00:21:45,380 --> 00:21:49,030 И ќе видиме уште еден симбол, е еднаква на еднаквите, кога сакаме да се тестира 461 00:21:49,030 --> 00:21:50,570 за квалитет, малку annoyingly. 462 00:21:50,570 --> 00:21:52,590 >> Но, ова е малку неефикасни. 463 00:21:52,590 --> 00:21:55,090 Тоа е вид на досадни дека имам да декларирате променлива и 464 00:21:55,090 --> 00:21:56,110 тогаш тоа даде вредност. 465 00:21:56,110 --> 00:21:59,380 Па C, всушност, ни овозможува да ја поедностави оваа и само го прават тоа сите одеднаш. 466 00:21:59,380 --> 00:22:01,330 Можете да го прогласи променлива на левата страна. 467 00:22:01,330 --> 00:22:04,590 Сеуште можете да го стори задача на право од страна на ставање дека знак за еднаквост во 468 00:22:04,590 --> 00:22:05,030 средината. 469 00:22:05,030 --> 00:22:08,740 Па на крајот на денот, овие две се еквивалент, но оваа една, искрено, 470 00:22:08,740 --> 00:22:11,840 е веројатно подобро навика да се влезе само затоа што е малку помалку 471 00:22:11,840 --> 00:22:15,040 код, тоа е малку полесно да се чита, и тоа само затегнува 472 00:22:15,040 --> 00:22:17,470 вашиот код, така да се каже. 473 00:22:17,470 --> 00:22:22,120 >> Било какви прашања досега на петелки, на променливи, на услови, на 474 00:22:22,120 --> 00:22:27,001 Booleans, или технички или концептуално? 475 00:22:27,001 --> 00:22:28,010 Сите во право. 476 00:22:28,010 --> 00:22:30,690 Па сега овој следната добива малку поинтересна. 477 00:22:30,690 --> 00:22:34,790 И ова е пример јас го постави минатата време дека само мапи на гребење пример 478 00:22:34,790 --> 00:22:35,820 во текот на В 479 00:22:35,820 --> 00:22:36,580 >> Па во функција. 480 00:22:36,580 --> 00:22:38,110 Во однос на Едноставен, што е функција? 481 00:22:38,110 --> 00:22:42,900 482 00:22:42,900 --> 00:22:44,350 Мора да биде похрабри со вашиот одговор. 483 00:22:44,350 --> 00:22:45,020 Што е функција? 484 00:22:45,020 --> 00:22:46,320 >> СТУДЕНТСКИ: Дали нешто. 485 00:22:46,320 --> 00:22:46,780 >> Дејвид MALAN: Што е тоа? 486 00:22:46,780 --> 00:22:48,000 >> СТУДЕНТСКИ: Дали нешто. 487 00:22:48,000 --> 00:22:48,710 >> Дејвид MALAN: Дали нешто. 488 00:22:48,710 --> 00:22:49,000 OK. 489 00:22:49,000 --> 00:22:49,590 Ќе започне таму. 490 00:22:49,590 --> 00:22:51,270 Така функција прави нешто. 491 00:22:51,270 --> 00:22:55,160 Па тоа е парче од код кој е суштина спроведува на друго место дека 492 00:22:55,160 --> 00:22:56,620 навистина прави нешто. 493 00:22:56,620 --> 00:23:00,180 Сега, она што е интересно за функција е дека тоа може да потрае влез, 494 00:23:00,180 --> 00:23:02,710 и тоа може да произведе излез. 495 00:23:02,710 --> 00:23:05,090 И ајде да всушност се Погледнете во ова. 496 00:23:05,090 --> 00:23:09,030 >> Па човекот зад завесата беше намерно пред еден миг. 497 00:23:09,030 --> 00:23:10,320 Тука имаме маса. 498 00:23:10,320 --> 00:23:13,010 Но, да претпоставиме дека ова всушност претставува голема кутија. 499 00:23:13,010 --> 00:23:14,940 Значи ова е т.н. црна кутија. 500 00:23:14,940 --> 00:23:19,800 И воопшто, во дизајн, во компјутер науката, црни кутии само погледнете 501 00:23:19,800 --> 00:23:22,510 парчиња на функционалноста дека некој има имплементирано, а вие не го стори 502 00:23:22,510 --> 00:23:26,140 мора да знаат или грижа како тоа е спроведува под хауба. 503 00:23:26,140 --> 00:23:28,960 Можете само грижа дека оваа црна кутија, што ние сега ќе почнеме нарекувајќи 504 00:23:28,960 --> 00:23:30,730 функција, не нешто. 505 00:23:30,730 --> 00:23:34,710 >> Така, на пример, ако оваа црна кутија на на сцената тука претставува printf, на 506 00:23:34,710 --> 00:23:38,040 функција, знам од претходните примери дека printf трае еден или повеќе 507 00:23:38,040 --> 00:23:40,910 аргументи, а првата од оние аргументи треба да биде стринг, како 508 00:23:40,910 --> 00:23:44,780 "Здраво, свет". Па, ако јас сум лицето пишување на програмата, и сакам 509 00:23:44,780 --> 00:23:50,460 да го користите printf, Јас, на пример, може да се земе парче од празна хартија тука и 510 00:23:50,460 --> 00:23:55,060 црн фломастер и да пишува на него - 511 00:23:55,060 --> 00:23:56,580 Јас погрешно напишани "свет" - 512 00:23:56,580 --> 00:23:59,560 H-Е-Л-Л-О. 513 00:23:59,560 --> 00:24:04,220 >> Па јас ќе го земе мојот црн фломастер и јас ќе пишувам, толку големи и читливо што можам за 514 00:24:04,220 --> 00:24:07,260 овој лист хартија, "Здраво, светот", а сега тврдам ова е мојот аргумент. 515 00:24:07,260 --> 00:24:09,740 Ова е стринг претставен со парче бела хартија. 516 00:24:09,740 --> 00:24:13,030 И мојот влез сега на функција printf ќе биде ова. 517 00:24:13,030 --> 00:24:18,250 Па јас сум повикувајќи printf, минувајќи тој аргумент како влез до него. 518 00:24:18,250 --> 00:24:22,110 519 00:24:22,110 --> 00:24:26,740 >> И сега, јас не знам како лицето кое напиша printf тоа го правеше години, но 520 00:24:26,740 --> 00:24:31,110 Јас знам од неговата документација која нејзината цел во животот е да се печати она што јас 521 00:24:31,110 --> 00:24:34,410 обезбеди на тоа како влез. 522 00:24:34,410 --> 00:24:40,630 И така, иако оваа институција е непознат за мене 523 00:24:40,630 --> 00:24:44,170 под капакот на моторот, сега Гледам, ох, тоа се прави. 524 00:24:44,170 --> 00:24:45,740 Таа има печатени нешто на екранот. 525 00:24:45,740 --> 00:24:49,070 И сега контролираат на програмата, доколку има беа повеќе линии на код, ќе 526 00:24:49,070 --> 00:24:51,070 сега се врати за мене. 527 00:24:51,070 --> 00:24:52,290 И така фактот дека Колтон - 528 00:24:52,290 --> 00:24:55,370 благослови своето срце, се крие тука под маса пред сите вас - 529 00:24:55,370 --> 00:24:59,530 е намерно во тоа јас не знам и јас не се грижат како printf е 530 00:24:59,530 --> 00:25:00,100 имплементирани. 531 00:25:00,100 --> 00:25:03,390 Јас само знам, пак, од своите документација, она што го прави тоа и како можам 532 00:25:03,390 --> 00:25:05,040 сум би требало да го користам. 533 00:25:05,040 --> 00:25:09,140 >> Сега, да се потсетиме дека printf би можеле да добијат малку пософистицирани. 534 00:25:09,140 --> 00:25:12,220 Повторно, ние сме само зборуваме за еквивалент на мислење блок Скреч е. 535 00:25:12,220 --> 00:25:14,230 Но јас, исто така, го направи ова последен пат. 536 00:25:14,230 --> 00:25:17,270 Сакав да ја направам мојата здраво програма малку подинамичен, а не само тешко 537 00:25:17,270 --> 00:25:19,740 код нешто како "светот", а дефинитивно не е тешко код нешто 538 00:25:19,740 --> 00:25:22,520 произволни како D-А-В-I-Д во програмата. 539 00:25:22,520 --> 00:25:27,510 Сакав да побара од корисникот за неговата или нејзината име, а потоа направи нешто со 540 00:25:27,510 --> 00:25:29,720 дека стринг кој тие ги обезбедуваат. 541 00:25:29,720 --> 00:25:32,690 >> Значи има нешто малку различен тука. printf, пред еден миг, 542 00:25:32,690 --> 00:25:35,860 не, навистина, да се направи нешто, но тоа не се врати ништо за мене. 543 00:25:35,860 --> 00:25:36,020 Нели? 544 00:25:36,020 --> 00:25:38,910 Колтон не ме предаде ништо назад, без парче хартија. 545 00:25:38,910 --> 00:25:40,320 Имаше само пропратен ефект. 546 00:25:40,320 --> 00:25:44,510 Мојата обезбедување на "Здраво, свет" како аргумент да Колтон резултираше со 547 00:25:44,510 --> 00:25:48,420 пропратен ефект на зборот, некои зборови, се појавува на екранот. 548 00:25:48,420 --> 00:25:51,350 >> getstring, сепак, е малку различни. getstring е исто така 549 00:25:51,350 --> 00:25:54,590 функционира, но тоа се враќа некои вредност. 550 00:25:54,590 --> 00:25:56,370 Тоа не само што имаат естетски ефект. 551 00:25:56,370 --> 00:26:00,230 Тоа всушност ми дава, лицето повик или со користење на функцијата, 552 00:26:00,230 --> 00:26:01,320 нешто назад. 553 00:26:01,320 --> 00:26:05,740 Значи во овој случај, getstring е нарекува со getstring отворен 554 00:26:05,740 --> 00:26:07,510 paren, во близина paren. 555 00:26:07,510 --> 00:26:11,370 Дали getstring, според тоа, се никакви аргументи или влез? 556 00:26:11,370 --> 00:26:12,340 Не, тоа не чини. 557 00:26:12,340 --> 00:26:14,460 Нејзината цел во животот е само за да добие стринг. 558 00:26:14,460 --> 00:26:16,910 Нема потреба повеќе детали од тоа. 559 00:26:16,910 --> 00:26:20,430 Па дозволете ми да оди напред и да се преправаме дека, повторно, ова црната кутија не е printf, 560 00:26:20,430 --> 00:26:25,160 но getstring, и остави ме, лицето пишување на оваа програма, јавете се или користете 561 00:26:25,160 --> 00:26:29,720 getstring од само пишување Г-Е-Т-С-Т-Р-И-Н-Г, отворен paren, во близина 562 00:26:29,720 --> 00:26:32,170 paren, getstring. 563 00:26:32,170 --> 00:26:36,920 >> Сега, јас немам идеја како CS50 персонал спроведува getstring, но знам дека 564 00:26:36,920 --> 00:26:41,240 ако чекам доволно долго, ќе стори нешто под хауба, можеби користејќи 565 00:26:41,240 --> 00:26:44,940 некои променливи, можеби користење на некои услови, можеби користејќи некои петелки, 566 00:26:44,940 --> 00:26:48,170 можеби користење на некои функции, можеби користење - 567 00:26:48,170 --> 00:26:52,290 само се обидува да го одложи - можеби користење некои други програмски карактеристики. 568 00:26:52,290 --> 00:26:55,350 Но ако чекам доволно долго - во реалноста, во компјутерот, тоа се случи 569 00:26:55,350 --> 00:26:56,270 супер брз - 570 00:26:56,270 --> 00:26:59,910 ако чекам доволно долго, оваа функција getstring се случува да добиете низа 571 00:26:59,910 --> 00:27:04,060 од корисникот, кој е веројатно пишување тоа надвор на нивниот тастатура, и 572 00:27:04,060 --> 00:27:08,090 тогаш, кога ќе getstring е направено добивање оние ликови од корисникот 573 00:27:08,090 --> 00:27:14,080 и чување на нив во низа, што функција, getstring, се случува да имаат 574 00:27:14,080 --> 00:27:17,990 Подгответе се за мене некои излез што сум ќе се добие по пат на 575 00:27:17,990 --> 00:27:19,470 задача оператор. 576 00:27:19,470 --> 00:27:25,390 >> И ако одам, навистина, во излез тука, Obosi има великодушно 577 00:27:25,390 --> 00:27:29,900 учествувал, без да се знае тоа во унапредат, со пишување на неговото име кон овој 578 00:27:29,900 --> 00:27:33,100 променлива, што ја претставува стринг. 579 00:27:33,100 --> 00:27:35,640 Сега, операторот за доделување на средства, дури и иако ова може да се чувствуваат малку 580 00:27:35,640 --> 00:27:38,790 непотребни, јас всушност не треба да ја направам мојата сопствена копија од оваа. 581 00:27:38,790 --> 00:27:40,700 Бидејќи на левата рака страна - Whoops! - 582 00:27:40,700 --> 00:27:45,760 забележите дека Јас во суштина имаат низа името на левата страна. 583 00:27:45,760 --> 00:27:48,280 Па јас сум исто така, ќе се направи мојата копија од оваа. 584 00:27:48,280 --> 00:27:50,990 И ова е малку бела лага, затоа што ние ќе видиме во една недела или две е 585 00:27:50,990 --> 00:27:54,100 време дека конците не се всушност она што се чини дека се. 586 00:27:54,100 --> 00:27:56,700 >> Но, за сега, тука е и повратната вредност. 587 00:27:56,700 --> 00:28:00,160 Тука е мојата копија од него, по користење на задача оператор. 588 00:28:00,160 --> 00:28:01,790 И сега, она што сакам да правите следно? 589 00:28:01,790 --> 00:28:04,080 Сега имаме вториот на две линии на код. 590 00:28:04,080 --> 00:28:05,640 Па јас сега сакате да го повикате printf. 591 00:28:05,640 --> 00:28:08,500 Да се ​​преправам дека сега на црно кутија е повторно да се биде 592 00:28:08,500 --> 00:28:10,210 printf и не getstring. 593 00:28:10,210 --> 00:28:12,200 >> Printf овој пат ќе се се земе како многу аргументи? 594 00:28:12,200 --> 00:28:14,890 595 00:28:14,890 --> 00:28:16,770 Па изгледа, тоа е како два. 596 00:28:16,770 --> 00:28:18,860 Има две запирки во таму, но еден од оние запирки, тоа е 597 00:28:18,860 --> 00:28:20,220 внатрешноста на цитати. 598 00:28:20,220 --> 00:28:23,190 Така, првиот аргумент е буквално ќе биде ова. 599 00:28:23,190 --> 00:28:31,850 H-Е-Л-Л-О, запирка, проценти с, обратна коса црта-n. 600 00:28:31,850 --> 00:28:36,560 И сега јас сум обезбедување не еден аргумент, но два аргументи да printf. 601 00:28:36,560 --> 00:28:39,530 >> И што е printf требало да се направи со овие два влезови откако ќе ги помине во 602 00:28:39,530 --> 00:28:42,050 како аргументи? 603 00:28:42,050 --> 00:28:45,360 Тоа би требало да се земе втора од нив, кои се јавив името, па 604 00:28:45,360 --> 00:28:48,660 Вториот парче хартија напишав надвор пред еден миг се нарекува име. 605 00:28:48,660 --> 00:28:53,550 Тоа се случува да го приклучиш на вредност во на таа променлива во случаеви, 606 00:28:53,550 --> 00:28:58,310 % S, така што, повторно, во само еден миг на време, ќе видиме пропратен ефект на 607 00:28:58,310 --> 00:29:04,180 ја нарече printf, при што ние сега види не "Здраво, свет", туку "hello, 608 00:29:04,180 --> 00:29:04,710 Obosi. " 609 00:29:04,710 --> 00:29:08,730 >> Толку голем аплауз за двете од нашите волонтери, од кои само една знаеше 610 00:29:08,730 --> 00:29:12,010 ова ќе се случува. 611 00:29:12,010 --> 00:29:12,990 Сите во право. 612 00:29:12,990 --> 00:29:16,480 Па, можеби, едноставно како што беше, Секако, ако веќе сте запознаени 613 00:29:16,480 --> 00:29:20,190 со такви, се надевам дека никогаш нема да заборавиме дека особено визуелна на тоа како 614 00:29:20,190 --> 00:29:21,220 функции работат. 615 00:29:21,220 --> 00:29:23,000 >> Па таму е повеќе од само getstring. 616 00:29:23,000 --> 00:29:26,020 Внатрешноста на CS50 библиотека, има цела група на функции, од кои сите 617 00:29:26,020 --> 00:29:29,510 се капитализираат само да се направи јасна дека ние напиша овие функции. 618 00:29:29,510 --> 00:29:33,610 Обично, во Ц, речиси секоја друга функција ќе се користи е мали букви. 619 00:29:33,610 --> 00:29:36,190 Но ние намерно користат големи букви само за да го направи јасно дека овие 620 00:29:36,190 --> 00:29:39,880 се обука тркала на сорти кои ние ќе користат за само неколку недели дека 621 00:29:39,880 --> 00:29:42,890 поедностави процесот на добивање на влез од корисникот. 622 00:29:42,890 --> 00:29:46,740 >> Библиотеката CS50 не прави ништо дека себе си не можеше да стори од страна на 623 00:29:46,740 --> 00:29:50,230 само со користење на C кодот од Oldschool учебник. 624 00:29:50,230 --> 00:29:53,310 Но, повторно, ние ги користат како за обука тркала на сорти за само неколку 625 00:29:53,310 --> 00:29:57,250 недели, така што можеме да се ослободиме од комплексноста дека наскоро ќе се разбере 626 00:29:57,250 --> 00:30:00,460 себе за правење на нешто како релативно јасна како добивање 627 00:30:00,460 --> 00:30:02,080 влез од корисникот. 628 00:30:02,080 --> 00:30:05,540 >> Па знам дека ќе имаат пристап да getchar, GetDouble - 629 00:30:05,540 --> 00:30:06,050 двојно. 630 00:30:06,050 --> 00:30:07,050 What's - и потоа GetFloat. 631 00:30:07,050 --> 00:30:07,600 Што е со подвижна запирка? 632 00:30:07,600 --> 00:30:09,382 Ајде да започне таму. 633 00:30:09,382 --> 00:30:10,600 >> СТУДЕНТСКИ: [нечујни]. 634 00:30:10,600 --> 00:30:10,790 >> Дејвид MALAN: Да. 635 00:30:10,790 --> 00:30:12,120 Тоа е голем број со децимална точка. 636 00:30:12,120 --> 00:30:15,930 Па со оглед на тоа int е цел број, што е само број со 0 до 9, 637 00:30:15,930 --> 00:30:18,940 некои број на повторувања од него, плови е нешто 638 00:30:18,940 --> 00:30:20,100 со децимална точка. 639 00:30:20,100 --> 00:30:26,090 И двојно, пак, е исто така број со децимална точка, но повеќе 640 00:30:26,090 --> 00:30:28,160 броеви по децималната точка, потенцијално. 641 00:30:28,160 --> 00:30:30,040 >> Па ние ќе се вратам на ова пред долго. 642 00:30:30,040 --> 00:30:34,560 Но обично, секој од овие видови на податоци, секоја од овие типови на променливи 643 00:30:34,560 --> 00:30:39,380 дека една библиотека како нашата можат да се вратат ви, користете различни броеви на битови да 644 00:30:39,380 --> 00:30:40,290 запази информацијата. 645 00:30:40,290 --> 00:30:43,910 Типично, привлечност, која само значи еден карактер, користи 8 бита. 646 00:30:43,910 --> 00:30:47,490 И тоа е, всушност, во согласност со нашите бајт на волонтери минатата недела, кои 647 00:30:47,490 --> 00:30:50,410 дојде и претставуваше една ASCII карактер во исто време. 648 00:30:50,410 --> 00:30:51,850 Па привлечност е 8 бита. 649 00:30:51,850 --> 00:30:54,430 >> А плови случува да биде 32 битови, обично. 650 00:30:54,430 --> 00:30:59,230 И двојно, како што може да се погоди, е всушност 64 бита, што е само повеќе, 651 00:30:59,230 --> 00:31:01,360 што значи дека може да имаат поголеми броеви или поголема точност. 652 00:31:01,360 --> 00:31:03,000 Но, повторно, повеќе за тоа друг пат. 653 00:31:03,000 --> 00:31:06,550 GetLongLong, пак, иако глупаво име, е навистина само еден 654 00:31:06,550 --> 00:31:10,770 цел број кој е двапати толку голема, двојно долго, потенцијално, како редовен 655 00:31:10,770 --> 00:31:12,940 цел број, 64 бита, наместо на 32. 656 00:31:12,940 --> 00:31:14,560 И GetString ние сме биле користење. 657 00:31:14,560 --> 00:31:18,870 >> Но излегува, во CS50 библиотека, која се спроведува, како што ќе видиме, во 658 00:31:18,870 --> 00:31:23,560 форма на две датотеки, од кои една се нарекува cs50.h, има две други 659 00:31:23,560 --> 00:31:24,770 типови на податоци во него. 660 00:31:24,770 --> 00:31:29,700 Booleans не постојат во C. Можете може да симулираат нив со само користење на 0-ти и 1S 661 00:31:29,700 --> 00:31:30,850 во текот на вашата програми. 662 00:31:30,850 --> 00:31:35,500 Но, ние во CS50 библиотека направивме на симболите "вистинската" и "лажни" 663 00:31:35,500 --> 00:31:38,580 да го претставува 1 и 0, па вие не го стори мора да се тешко кодот нешто 664 00:31:38,580 --> 00:31:39,810 буквално како 1 и 0. 665 00:31:39,810 --> 00:31:40,980 Но ќе видиме оние повторно. 666 00:31:40,980 --> 00:31:42,330 >> Стринг, исто така, не постои. 667 00:31:42,330 --> 00:31:44,520 И тоа е причината зошто јас спомнав тоа е малку бела лага за сега. 668 00:31:44,520 --> 00:31:46,660 Но ние ќе лупам назад дека слој пред долго. 669 00:31:46,660 --> 00:31:49,540 Но, за сега, стринг е секвенца од карактери. 670 00:31:49,540 --> 00:31:51,790 >> Во меѓувреме, во C, вие навистина имаат различни типови на податоци. 671 00:31:51,790 --> 00:31:53,200 Забележуваме овие се мали букви. 672 00:31:53,200 --> 00:31:56,960 Па функции те видов пред еден миг се функции напишани од страна на CS50 дека 673 00:31:56,960 --> 00:32:02,310 ќе се врати на вас вредност што паѓа во една од овие категории. 674 00:32:02,310 --> 00:32:06,730 >> Неколку измамник листови само да се засади семето тука. printf не само 675 00:32:06,730 --> 00:32:08,600 земе% s како променливи. 676 00:32:08,600 --> 00:32:13,490 Таа ги зема% d децимална цели броеви, или% би работат како добро. 677 00:32:13,490 --> 00:32:19,450 % F е подвижна запирка вредности. % C е за char, ако сакате само да го приклучиш еден 678 00:32:19,450 --> 00:32:23,510 карактер во отпочнете елемент низа како што сме правеле, можете да го користите% c. 679 00:32:23,510 --> 00:32:28,490 >> А потоа, малку annoyingly,% LLD е за долго, долго децимална цел број, 680 00:32:28,490 --> 00:32:31,050 кој едноставно значи ако ви треба навистина голем број и сте користење на нешто 681 00:32:31,050 --> 00:32:35,450 наречен долго долго, кој ќе дојде назад кон во pset, можете да го користите% LLD да 682 00:32:35,450 --> 00:32:40,700 кажам printf, приклучок во навистина голем целобројни тука по пат на својата втора или 683 00:32:40,700 --> 00:32:41,830 некои други аргумент. 684 00:32:41,830 --> 00:32:45,700 >> И на крај, јас ветив дека има неколку други бегство 685 00:32:45,700 --> 00:32:47,670 секвенци кои printf поддржува. 686 00:32:47,670 --> 00:32:49,160 Видовме обратна коса црта-n. 687 00:32:49,160 --> 00:32:50,510 Обратна коса црта-R може да се види. 688 00:32:50,510 --> 00:32:51,780 Тоа е вид на старата школа работа. 689 00:32:51,780 --> 00:32:55,920 Ако некогаш сте се користи вистински машина години Пред и ќе влечат по чудак 690 00:32:55,920 --> 00:32:59,810 кои не само што ротира на тркалото за да се движат постава, исто така, се пресели на 691 00:32:59,810 --> 00:33:03,730 целата работа на целиот пат назад во текот на на левата страна, добро, обратна коса црта-R само 692 00:33:03,730 --> 00:33:06,480 во суштина се движи курсорот назад на почетокот на линијата 693 00:33:06,480 --> 00:33:07,830 без да се движи надолу. 694 00:33:07,830 --> 00:33:09,780 Но, повторно, повеќе за тоа, можеби, во иднина. 695 00:33:09,780 --> 00:33:13,670 >> Обратна коса црта-понуда, обратна коса црта-двојни наводници, обратна коса црта-обратна коса црта е 696 00:33:13,670 --> 00:33:16,600 решение за малечки загатката Јас се алудира погоре. 697 00:33:16,600 --> 00:33:18,920 И обратна коса црта-0 е всушност доста интересно. 698 00:33:18,920 --> 00:33:21,470 Но, ние ќе се вратам на дека пред долго. 699 00:33:21,470 --> 00:33:25,640 >> Па дозволете ми да одат во, сега, CS50 апаратот, и ајде да всушност се направи 700 00:33:25,640 --> 00:33:28,930 брзо се загрее со еден од примерите ние не веќе, а потоа се движи кон 701 00:33:28,930 --> 00:33:31,160 нешто малку посложени. 702 00:33:31,160 --> 00:33:34,980 Значи, ако јас се отвори мојата програма наречен gedit - 703 00:33:34,980 --> 00:33:36,840 ова е мојот графички уредувач. 704 00:33:36,840 --> 00:33:38,460 И можам да го правам тоа - 705 00:33:38,460 --> 00:33:39,820 дозволете ми да го затвори тој прозорец таму - 706 00:33:39,820 --> 00:33:42,720 по пат на оваа икона долу тука, gedit, во долниот-лев 707 00:33:42,720 --> 00:33:44,170 агол до менито. 708 00:33:44,170 --> 00:33:48,670 >> Одам да се оди напред и да ги унапредат и спаси овој пример во, да речеме, Џон 709 00:33:48,670 --> 00:33:49,660 Харвард папка. 710 00:33:49,660 --> 00:33:52,690 Папка Џон Харвард е само неговиот дом директориумот каде сите негови фајлови живеат 711 00:33:52,690 --> 00:33:53,340 од стандардните. 712 00:33:53,340 --> 00:33:58,410 И јас одам да се спаси ова како фајл наречен здраво-0.c. 713 00:33:58,410 --> 00:34:01,260 И јас ја одбрале ова име само така линии со код примерок на 714 00:34:01,260 --> 00:34:04,210 Се разбира го веб-сајтот и во YouTube видеа на интернет. 715 00:34:04,210 --> 00:34:06,320 >> Па сега јас ќе одам да почнат да пишувам мојата прва програма. 716 00:34:06,320 --> 00:34:08,469 Дозволете ми да зумирате за читливоста. 717 00:34:08,469 --> 00:34:12,760 И јас одам да се оди напред и да каже int Главната празнина, која е исто како што 718 00:34:12,760 --> 00:34:14,900 жолта загатка парче што започнува на програмата. 719 00:34:14,900 --> 00:34:18,290 Имам добивано и во навика во текот на години на отворањето на мојата кадрава голема заграда, тогаш 720 00:34:18,290 --> 00:34:22,000 исто така, го затвораат, а потоа ќе се вратам на каде што јас сакам да ја ставам код, само 721 00:34:22,000 --> 00:34:24,630 затоа што тоа ми помага да се задржи сето балансирано, особено како мојата 722 00:34:24,630 --> 00:34:25,880 програма добива долго. 723 00:34:25,880 --> 00:34:29,239 >> И сега, овде, јас ќе одам да се оди напред и да каже, printf, цитирам unquote, 724 00:34:29,239 --> 00:34:34,330 Здраво светот, обратна коса црта-n, во близина понуда, блиску заграда, точка-запирка. 725 00:34:34,330 --> 00:34:38,100 Па јас сум само повторување сè сме е земајќи здраво за готово досега. 726 00:34:38,100 --> 00:34:39,270 Сега ќе одам да одзумирате. 727 00:34:39,270 --> 00:34:43,030 >> И ова терминален прозорец долу тука, она што сум дозволено да се направи во оваа црно 728 00:34:43,030 --> 00:34:44,389 и бело прозорецот? 729 00:34:44,389 --> 00:34:46,977 Она што можам да го користите за? 730 00:34:46,977 --> 00:34:49,770 Значи ова е местото каде што јас се кандидира команди и каде можам да ги собере работите. 731 00:34:49,770 --> 00:34:50,620 И јас одам да го чува едноставна. 732 00:34:50,620 --> 00:34:52,780 Одам да се користи програмата наречен создавам, што не е 733 00:34:52,780 --> 00:34:54,020 технички компајлерот. 734 00:34:54,020 --> 00:34:56,360 На компајлерот вика ѕвекот, но ние ќе се вратам на тоа во 735 00:34:56,360 --> 00:34:57,190 недела или две е време. 736 00:34:57,190 --> 00:35:03,410 >> За сега, јас сум само ќе напишеш направи здраво-0, Но, оние од вас кои биле 737 00:35:03,410 --> 00:35:07,050 споредување во вашиот ум она што јас само чука на она што треба да се внесе може 738 00:35:07,050 --> 00:35:10,180 знаете веќе што го направив нешто во ред тука. 739 00:35:10,180 --> 00:35:12,160 Сега, тука е јасно некои грешки. 740 00:35:12,160 --> 00:35:16,742 Пред јас дури и се погледне во она што се, било мисли за тоа што го направив погрешно? 741 00:35:16,742 --> 00:35:18,590 >> СТУДЕНТИ: [INTERPOSING ГЛАСОВИ]. 742 00:35:18,590 --> 00:35:18,840 >> Дејвид MALAN: Да. 743 00:35:18,840 --> 00:35:20,640 Јас сум недостасува хедер датотека на библиотеката. 744 00:35:20,640 --> 00:35:24,240 Било која од овие. Ж датотеки се вика насловот додадени фајлови, и тие колективно 745 00:35:24,240 --> 00:35:25,680 припаѓаат на нешта наречени библиотеки. 746 00:35:25,680 --> 00:35:28,030 Библиотеки се само парчиња на код дека другите луѓе напиша. 747 00:35:28,030 --> 00:35:32,140 Па стандард [? јас?] библиотека е колекција на датотеки кои содржат код 748 00:35:32,140 --> 00:35:33,330 дека другите луѓе напиша. 749 00:35:33,330 --> 00:35:34,820 >> Па јас сум недостасува тоа. 750 00:35:34,820 --> 00:35:36,520 Па зошто сум јас добивам грешка? 751 00:35:36,520 --> 00:35:40,840 Па, дозволете ми да дојдете назад во мојата терминален прозорец тука. 752 00:35:40,840 --> 00:35:44,310 И, за жал, во C, како и во многу програмски јазици, особено 753 00:35:44,310 --> 00:35:47,830 ако сето тоа е ново за вас, грешката пораки се прецизни, но тие се исто така 754 00:35:47,830 --> 00:35:48,620 доста криптичната. 755 00:35:48,620 --> 00:35:51,720 И грешка тука, во црвена, е "Имплицитно наведува библиотека функција 756 00:35:51,720 --> 00:35:57,660 printf со тип ", а потоа тоа свитоци до следната линија ", int const char *, 757 00:35:57,660 --> 00:36:00,220 ... "Тоа само добива навистина Најголемиот брзо. 758 00:36:00,220 --> 00:36:04,420 >> Но, она што треба да започне да се направи, ако, повторно, нови на сето ова, е само да се 759 00:36:04,420 --> 00:36:06,010 почнете да барате клучни зборови. 760 00:36:06,010 --> 00:36:08,770 Јасно, јас не може да се разбере половина на зборовите гледам само уште. 761 00:36:08,770 --> 00:36:10,140 Ќе, иако, во време од една недела. 762 00:36:10,140 --> 00:36:11,230 Но гледам printf. 763 00:36:11,230 --> 00:36:14,310 И дека треба да почнат, пред долго, да се освежиш сеќавањето, сите во право, printf. 764 00:36:14,310 --> 00:36:15,210 Нешто не е во ред со printf. 765 00:36:15,210 --> 00:36:16,580 Никако не можев да се пишува тоа во ред? 766 00:36:16,580 --> 00:36:18,130 Не, тоа не изгледа како - ох. 767 00:36:18,130 --> 00:36:21,350 Не можам да го користам ако јас не учат на компајлерот дека тоа постои. 768 00:36:21,350 --> 00:36:25,220 И така, повторно, отидете со вашите инстинкти, дури и ако не го разбираат 769 00:36:25,220 --> 00:36:26,510 вистинските пораки за грешка. 770 00:36:26,510 --> 00:36:30,240 >> И навистина, решението е да се само вклучуваат тоа на врвот на датотеката 771 00:36:30,240 --> 00:36:34,340 како што, resaving моето досие со Контрола-S или менито File. 772 00:36:34,340 --> 00:36:36,730 И ако јас сега се врати долу тука, Одам да се расчисти ова. 773 00:36:36,730 --> 00:36:39,150 Контрола-L е само убав начин да го исчистите екранот. 774 00:36:39,150 --> 00:36:44,870 А потоа јас ќе одам да напишете "направи здраво 0 "Enter, и сега јас се уште ја видите 775 00:36:44,870 --> 00:36:47,710 криптичната секвенца од симболи, но ние ќе се вратам на тоа. 776 00:36:47,710 --> 00:36:49,230 Тоа е она Направете го прави за вас. 777 00:36:49,230 --> 00:36:52,590 Тоа е автоматизирање на процесот на преземање прилично досадни команда вклучуваат 778 00:36:52,590 --> 00:36:54,050 Ѕвекот, вистинските компајлерот. 779 00:36:54,050 --> 00:36:57,460 Но, фактот дека добив нема грешки значи дека оваа работа треба да работат. 780 00:36:57,460 --> 00:37:00,630 >> Па јас сум сега ќе да се направи - дозволете ми да зумирате повторно - 781 00:37:00,630 --> 00:37:07,070 ./hello-0 Enter, и навистина, гледам "Здраво, свет". Па ајде сега подобрат 782 00:37:07,070 --> 00:37:12,105 оваа некогаш толку малку само да се реплицираат мерките што се наменети. 783 00:37:12,105 --> 00:37:15,370 Одам да ја преименувате оваа со Save As да hello1.c. 784 00:37:15,370 --> 00:37:20,300 И сега ќе одам да декларирате променлива наречен име, така Стринг име, 785 00:37:20,300 --> 00:37:23,420 и јас одам да се стави во него вредноста на понуда-unquote 786 00:37:23,420 --> 00:37:27,030 Д-А-В-I-Д крупен цитат запирка. 787 00:37:27,030 --> 00:37:31,150 И сега ќе одам да го замени "свет" со она што случаеви за низа? 788 00:37:31,150 --> 00:37:32,200 % S. 789 00:37:32,200 --> 00:37:35,040 >> А сега, колку аргументи треба да printf ја искористам оваа време? 790 00:37:35,040 --> 00:37:35,700 Па две. 791 00:37:35,700 --> 00:37:37,090 Па одам надвор од цитати. 792 00:37:37,090 --> 00:37:39,330 Јас тип "име", откако запирка. 793 00:37:39,330 --> 00:37:41,550 Но јас го направив нешто друго не е во ред тоа време. 794 00:37:41,550 --> 00:37:43,940 Но, ајде да се претпостави дека не сум сфатат дека уште. 795 00:37:43,940 --> 00:37:44,910 Дозволете ми да одам до тука. 796 00:37:44,910 --> 00:37:48,850 >> И известување, исто така, јас сум добивање малку досадно на отчукување на "направи здраво 0" на сите 797 00:37:48,850 --> 00:37:50,180 време "да" и сето тоа. 798 00:37:50,180 --> 00:37:53,270 Значи, што се испоставува, во Линус можете да често хит на стрелка нагоре за вашите 799 00:37:53,270 --> 00:37:56,850 тастатура, и ти всушност може да дојдете низ сите команди кои јас сум 800 00:37:56,850 --> 00:37:58,830 извршена претходна само сега. 801 00:37:58,830 --> 00:38:02,040 Значи, ако го направам тоа, нагоре, нагоре, има направи здраво 0. 802 00:38:02,040 --> 00:38:02,610 Не сакам тоа. 803 00:38:02,610 --> 00:38:05,450 Јас само сакам да го промени тоа да здраво 1 овој пат, Enter. 804 00:38:05,450 --> 00:38:07,620 На крајот, кои ќе те спаси некое време. 805 00:38:07,620 --> 00:38:08,150 >> Сите во право. 806 00:38:08,150 --> 00:38:09,520 За жал, не е грешка. 807 00:38:09,520 --> 00:38:10,980 Па дозволете ми да скролувате горе. 808 00:38:10,980 --> 00:38:13,120 Ова изгледа како да сум навистина заклани оваа програма. 809 00:38:13,120 --> 00:38:16,530 Мислам, мојот Бог, тоа е две линии на код, и нејзините 10 линии на грешки. 810 00:38:16,530 --> 00:38:18,800 Но, изгледа на врвот еден во прв план. 811 00:38:18,800 --> 00:38:21,640 Употреба на непријавена идентификатор стринг. 812 00:38:21,640 --> 00:38:23,270 Никако не можев да значи стандард i N? 813 00:38:23,270 --> 00:38:23,930 Не јас не. 814 00:38:23,930 --> 00:38:24,940 Мислев стринг. 815 00:38:24,940 --> 00:38:29,390 >> Но каде е стринг променлива тип прогласи, ДД велиме? 816 00:38:29,390 --> 00:38:30,730 Па тоа е во CS50 библиотеката. 817 00:38:30,730 --> 00:38:33,740 Па тоа не е доволно, во овие први неколку недели, само за да го користите 818 00:38:33,740 --> 00:38:34,860 она Ц ни дава. 819 00:38:34,860 --> 00:38:38,120 Јас сум исто така, ќе одат нагоре тука, и јас може да го стави над или под, но јас ќе 820 00:38:38,120 --> 00:38:40,340 само го чувам азбучен да го задржи нешта уредно. 821 00:38:40,340 --> 00:38:43,470 Одам да го вклучите cs50.h, кој е пре-инсталиран за 822 00:38:43,470 --> 00:38:44,900 вас на CS50 апаратот. 823 00:38:44,900 --> 00:38:47,640 И тоа е со отворен код, па дури и луѓе на интернет може да го користат на нивните 824 00:38:47,640 --> 00:38:48,450 своите компјутери. 825 00:38:48,450 --> 00:38:50,700 Но тоа доаѓа со CS50 апаратот. 826 00:38:50,700 --> 00:38:55,320 >> Па сега дозволете ми да се врати и да го прекомпајлирате ова со направи здраво 1. 827 00:38:55,320 --> 00:38:55,710 По ѓаволите. 828 00:38:55,710 --> 00:38:57,240 Уште една грешка. 829 00:38:57,240 --> 00:38:59,370 Дозволете ми да дојдете до првото, иако. 830 00:38:59,370 --> 00:39:00,630 Оваа една е малку посложен. 831 00:39:00,630 --> 00:39:03,830 Мулти-карактер карактер константа. 832 00:39:03,830 --> 00:39:04,890 Тоа не е ми помага. 833 00:39:04,890 --> 00:39:08,220 Но известување, ѕвекот е барем малку малку пристоен, при што со малку 834 00:39:08,220 --> 00:39:11,890 зелени коректорски знак симбол, тоа е велејќи тука е местото каде што се зафркнав. 835 00:39:11,890 --> 00:39:16,160 Зошто е тоа посочувајќи, со таа мала зелена стрелка, со една понуда следната 836 00:39:16,160 --> 00:39:18,290 на мое име? 837 00:39:18,290 --> 00:39:20,880 >> Па тоа е една од работите што само се користи за да се, особено ако сте биле 838 00:39:20,880 --> 00:39:23,980 програмирање во Python, или JavaScript, или други јазици, каде што овој детал 839 00:39:23,980 --> 00:39:24,560 не е важно. 840 00:39:24,560 --> 00:39:25,740 Во C, тоа не е важно. 841 00:39:25,740 --> 00:39:29,520 Ако сте за прогласување на низа, што е низа од 0 или повеќе знаци, 842 00:39:29,520 --> 00:39:32,280 вие всушност мора да користат двојни наводници. 843 00:39:32,280 --> 00:39:36,670 Па јас всушност треба да го промените ова назад да се отвори понуда, во близина понуда, со 844 00:39:36,670 --> 00:39:37,800 двојни наводници. 845 00:39:37,800 --> 00:39:41,610 Единечен наводник имаат свое место, но само кога сте користејќи индивидуални 846 00:39:41,610 --> 00:39:44,100 карактери, но повеќе за тоа друг пат. 847 00:39:44,100 --> 00:39:46,550 За сега, двојни наводници се неопходни. 848 00:39:46,550 --> 00:39:50,460 >> Па сега, дозволете ми да се вратам на моето терминал прозорецот, направи здраво 1. 849 00:39:50,460 --> 00:39:51,450 И кој е убеден? 850 00:39:51,450 --> 00:39:53,800 Е оваа програма сега се случува да ги собере правилно? 851 00:39:53,800 --> 00:39:58,250 852 00:39:58,250 --> 00:39:58,540 OK. 853 00:39:58,540 --> 00:39:59,780 Па три од нас мислат тоа. 854 00:39:59,780 --> 00:40:00,280 Сите во право. 855 00:40:00,280 --> 00:40:01,190 Enter. 856 00:40:01,190 --> 00:40:02,440 А тоа всушност не. 857 00:40:02,440 --> 00:40:05,130 Па нема грешки ова време, дури и иако оваа програма е добивано и малку 858 00:40:05,130 --> 00:40:05,840 посложени. 859 00:40:05,840 --> 00:40:10,110 Ако јас сега направи точка коса црта здраво 1, Enter, тоа се случува да се каже "Здраво, Дејвид." 860 00:40:10,110 --> 00:40:11,750 >> Но, ајде да го стори третиот итерацијата на овој, каде што 861 00:40:11,750 --> 00:40:13,380 Програмата е навистина динамичен. 862 00:40:13,380 --> 00:40:16,770 Дозволете ми да оди напред и промена на датотеката име, само за конзистентност со 863 00:40:16,770 --> 00:40:20,410 додадени фајлови: ќе имаат на располагање да ви потоа онлајн. 864 00:40:20,410 --> 00:40:21,620 Enter. 865 00:40:21,620 --> 00:40:25,510 И сега ќе одам да одат во и не чување "Давид" хард кодирани тука. 866 00:40:25,510 --> 00:40:28,826 Што можев да сторам за да многу едноставно подобрување на оваа програма? 867 00:40:28,826 --> 00:40:30,520 >> Јас може да се нарече getstring. 868 00:40:30,520 --> 00:40:33,240 Тоа може да биде малку не-очигледно она што е за да се случи, па ќе одам 869 00:40:33,240 --> 00:40:38,470 всушност да додадете друга линија, printf, и да каже име, дебелото црево, во близина понуда, само 870 00:40:38,470 --> 00:40:40,790 да се даде на корисник брза на екранот. 871 00:40:40,790 --> 00:40:42,980 И сега јас ќе одам да си тука, и јас сум случува да се користи мојата тастатура кратенка. 872 00:40:42,980 --> 00:40:47,680 Одам да се оди нагоре, нагоре, и промена здраво 1 до здраво 2, Enter. 873 00:40:47,680 --> 00:40:49,260 И за среќа, јас сум прави напредок. 874 00:40:49,260 --> 00:40:52,720 >> И сега ќе одам да одат нагоре до точка коса црта здраво и 875 00:40:52,720 --> 00:40:54,690 промени тоа до 2, Enter. 876 00:40:54,690 --> 00:40:55,650 И сега мојата програма - 877 00:40:55,650 --> 00:40:57,700 Јас ќе зумирате - е добивање на малку поубав. 878 00:40:57,700 --> 00:41:02,190 Име ќе биде, да речеме Роб овој пат, Внесете, здраво, Роб. 879 00:41:02,190 --> 00:41:03,260 Можеме да го направи тоа повторно. 880 00:41:03,260 --> 00:41:05,360 Име, Лорен, Enter. 881 00:41:05,360 --> 00:41:07,820 Име, Јосиф, Enter. 882 00:41:07,820 --> 00:41:11,596 Име, ајде да се обидеме да биде тешко, Enter. 883 00:41:11,596 --> 00:41:12,410 Eh. 884 00:41:12,410 --> 00:41:14,680 Тоа не е навистина бубачка. 885 00:41:14,680 --> 00:41:16,090 Па тоа е само малку грди. 886 00:41:16,090 --> 00:41:18,640 Па можеби и ние може да го реши овој во иднина, не сега. 887 00:41:18,640 --> 00:41:20,840 >> Но колку ќе ти е инстинктивно одат за решавање на 888 00:41:20,840 --> 00:41:21,990 тој конкретен предизвик? 889 00:41:21,990 --> 00:41:23,710 Тоа само изгледа глупаво. 890 00:41:23,710 --> 00:41:27,320 Како да се избегне работи во потрага глупаво? 891 00:41:27,320 --> 00:41:29,890 Па ние не можеше да стори, во ред, слушнав неколку на нештата, состојба и јамка. 892 00:41:29,890 --> 00:41:33,340 Ние би можеле да ги користат, еден, состојба, да се провери она што е должината на стрингот 893 00:41:33,340 --> 00:41:34,190 корисникот ни ја даде? 894 00:41:34,190 --> 00:41:37,100 И ако е 0, тоа е само цитирам unquote, тие само притиснете Enter, потоа 895 00:41:37,100 --> 00:41:38,930 можеби и јас треба да се развикам нив и да ги поттикне повторно. 896 00:41:38,930 --> 00:41:39,970 Но како да е ги поттикне повторно? 897 00:41:39,970 --> 00:41:44,230 Па, јас исто така слушнав јамка, и можев го направи тоа повторно и повторно и повторно 898 00:41:44,230 --> 00:41:47,010 се прашува корисникот за истото. 899 00:41:47,010 --> 00:41:48,880 >> Добро, ајде да направиме еден друг пример со користење на различни 900 00:41:48,880 --> 00:41:50,620 функција во CS50 библиотека. 901 00:41:50,620 --> 00:41:52,330 Дозволете ми да го затвори оваа датотека. 902 00:41:52,330 --> 00:41:53,510 Дозволете ми да се создаде нов. 903 00:41:53,510 --> 00:41:58,510 И јас ќе го наречеме adder.c, само затоа што тоа е лесно да се направи едноставни аритметички, 904 00:41:58,510 --> 00:42:00,890 иако ова ќе биде комплетно underwhelming со она што можете да направите 905 00:42:00,890 --> 00:42:02,250 со било кој современиот компјутер. 906 00:42:02,250 --> 00:42:03,750 >> Но, дозволете ми да оди напред и сега - 907 00:42:03,750 --> 00:42:10,680 Научив мојот лекција последен пат - вклучуваат cs50.h, вклучуваат stdio.h, int 908 00:42:10,680 --> 00:42:14,170 Главната празнина, која, за сега, јас ќе само преземе во врска слепа вера, но ние ќе се претпостави 909 00:42:14,170 --> 00:42:16,380 дека ќе се разбере она што тоа значи дека пред долго. 910 00:42:16,380 --> 00:42:21,030 И јас одам да се каже нешто како "ми даде int". 911 00:42:21,030 --> 00:42:22,140 >> И сега, како можам да се добие int? 912 00:42:22,140 --> 00:42:26,820 Сакам на крајот да декларирате променлива наречен x од тип int и 913 00:42:26,820 --> 00:42:29,240 чување во него цел број од корисникот. 914 00:42:29,240 --> 00:42:29,970 Така што беше еден залак. 915 00:42:29,970 --> 00:42:35,680 Но, ако некој сака да предложи, како можам да се изјаснам како цел број наречен X? 916 00:42:35,680 --> 00:42:36,310 Int x. 917 00:42:36,310 --> 00:42:37,430 >> Па тоа навистина е толку едноставно. 918 00:42:37,430 --> 00:42:38,240 Ми даде Инт. 919 00:42:38,240 --> 00:42:39,070 Наречи го тоа х. 920 00:42:39,070 --> 00:42:40,580 Сега јас го користам задача оператор. 921 00:42:40,580 --> 00:42:43,400 И како можам да чува од остави вредноста на корисникот? 922 00:42:43,400 --> 00:42:47,310 Не сакам да се јавам getstring, очигледно, туку getint. 923 00:42:47,310 --> 00:42:49,060 Никакви аргументи? 924 00:42:49,060 --> 00:42:49,350 Бр. 925 00:42:49,350 --> 00:42:51,870 Така што е отворен paren, во близина paren веднаш, а потоа и 926 00:42:51,870 --> 00:42:53,440 точка и запирка завршува на линијата. 927 00:42:53,440 --> 00:42:54,930 >> Сега дозволете ми да го направите ова повторно. 928 00:42:54,930 --> 00:42:57,070 Ми даде уште една Инт. 929 00:42:57,070 --> 00:43:01,850 Овој пат јас ќе сторам int, ајде да го нарекуваат Y, е еднаква на getint. 930 00:43:01,850 --> 00:43:05,060 И сега дозволете ми да се направи нешто супер-едноставни како некои математика. 931 00:43:05,060 --> 00:43:14,340 Па printf, збирот на% d е случаеви за Инт. 932 00:43:14,340 --> 00:43:20,030 И% d, период, обратна коса црта-n. 933 00:43:20,030 --> 00:43:20,360 >> Сите во право. 934 00:43:20,360 --> 00:43:21,670 Така што не е всушност математика. 935 00:43:21,670 --> 00:43:25,500 Но, ако јас сакам да кажам збирот на овој вредност плус оваа вредност е еднаква на оваа 936 00:43:25,500 --> 00:43:29,320 друга вредност, како многу аргументи во Вкупно јас треба да се даваат printf, 937 00:43:29,320 --> 00:43:30,520 на крајот? 938 00:43:30,520 --> 00:43:31,420 Па четири, нели? 939 00:43:31,420 --> 00:43:33,790 Оваа низа и потоа три вредности. 940 00:43:33,790 --> 00:43:37,560 Значи x е првиот Сакам да бидам вклучени во првиот до% d. 941 00:43:37,560 --> 00:43:39,270 y ќе биде следниот. 942 00:43:39,270 --> 00:43:42,030 >> И сега јас вид на сакаат да се каже z, но z не постои. 943 00:43:42,030 --> 00:43:43,190 Но тоа не е голема работа. 944 00:43:43,190 --> 00:43:45,440 Затоа што ќе направиш инстинктивно, особено ако сте имале 945 00:43:45,440 --> 00:43:47,820 графики калкулатор, она што го пишувате? 946 00:43:47,820 --> 00:43:48,760 Како за х плус y? 947 00:43:48,760 --> 00:43:50,200 Па тоа не е вистински променлива. 948 00:43:50,200 --> 00:43:51,820 Тоа е само збир на два други променливи. 949 00:43:51,820 --> 00:43:53,170 И тоа е совршено легитимно. 950 00:43:53,170 --> 00:43:56,630 Ц секако го разбира едноставни аритметички вака. 951 00:43:56,630 --> 00:43:58,450 >> Точка и запирка, спаси. 952 00:43:58,450 --> 00:44:02,080 Сега дозволете ми да одат надолу тука и напишеш направи ехидна, Enter. 953 00:44:02,080 --> 00:44:04,100 Нема грешка, па тоа е напредок премногу. 954 00:44:04,100 --> 00:44:04,890 Напишеш ехидна. 955 00:44:04,890 --> 00:44:07,100 И друга тастатура кратенка, ако почнете да се досадуваат 956 00:44:07,100 --> 00:44:08,760 со сите команди - 957 00:44:08,760 --> 00:44:12,650 ако почнете внесување на команда, како dot намалување на реклама, и тоа е каде што 958 00:44:12,650 --> 00:44:16,020 здодевност клоци, обично може да погоди Јазичето за да имаат компјутер завршиме 959 00:44:16,020 --> 00:44:20,510 одморам на фразата за вас, ако тоа не е двосмислена она што ќе дојде по рекламата. 960 00:44:20,510 --> 00:44:23,950 >> Па дозволете ми да оди напред сега и ќе притиснете Enter. 961 00:44:23,950 --> 00:44:27,490 Ми даде int, 1, 2, и за среќа, тоа е 3. 962 00:44:27,490 --> 00:44:29,900 Но како и секогаш, тестирање на програми не треба да се намали на 963 00:44:29,900 --> 00:44:30,820 само да го обидува еднаш. 964 00:44:30,820 --> 00:44:35,560 Дозволете ми да се обиде корнер случај, како негативни 1, дај ми 1, и дека еден 965 00:44:35,560 --> 00:44:36,210 проверки, како и. 966 00:44:36,210 --> 00:44:38,870 И јас веројатно ќе сакате да направите некои повеќе ригорозни тестирање, но јас сум прилично 967 00:44:38,870 --> 00:44:40,630 удобно со, каде што е во. 968 00:44:40,630 --> 00:44:43,110 >> Па, сега ајде да се обидеме друга програма дека овој пат користи 969 00:44:43,110 --> 00:44:44,620 малку други синтакса. 970 00:44:44,620 --> 00:44:46,100 Дозволете ми да се создаде новата датотека. 971 00:44:46,100 --> 00:44:51,050 Ќе му се јавам овој conditions0.c да се редат со некои примерок кодот онлајн. 972 00:44:51,050 --> 00:44:55,550 И дозволете ми да оди напред и да прават вклучуваат cs50.h, вклучуваат 973 00:44:55,550 --> 00:45:00,320 stdio.h, во главниот празнина - 974 00:45:00,320 --> 00:45:01,030 OK. 975 00:45:01,030 --> 00:45:01,850 Таму ќе одиме. 976 00:45:01,850 --> 00:45:03,010 Ние си имаме стандардна boilerplate. 977 00:45:03,010 --> 00:45:08,170 >> И овој пат ќе одам да се каже printf, "Би сакал int, ве молиме", само за да 978 00:45:08,170 --> 00:45:10,030 направи брза малку повеќе пријателски. 979 00:45:10,030 --> 00:45:11,620 И сега сакам да се добие int од корисникот. 980 00:45:11,620 --> 00:45:15,010 Одам да го наречеме N ова време, само бидејќи n звучи како број. 981 00:45:15,010 --> 00:45:18,140 getint, и сега, што прават Сакам да се направи со неа? 982 00:45:18,140 --> 00:45:21,640 Па, ако n е - а јас ќе зумирате - 983 00:45:21,640 --> 00:45:25,930 ако n е поголема од 0, сакам да го направите следново - 984 00:45:25,930 --> 00:45:36,060 printf "Ти зедов позитивен број." Друго, јас ќе одам да напишеш printf "Ти 985 00:45:36,060 --> 00:45:37,870 скинале негативни 986 00:45:37,870 --> 00:45:39,650 број. "Сите во право. 987 00:45:39,650 --> 00:45:44,410 Значи оваа програма, иако јас го направив тоа брзо, изгледа право синтаксички. 988 00:45:44,410 --> 00:45:45,010 Дозволете ми да се обиде ова. 989 00:45:45,010 --> 00:45:46,890 Направи услов 0. 990 00:45:46,890 --> 00:45:47,710 Чини да се кандидира. 991 00:45:47,710 --> 00:45:49,230 Состојба 0, внесете. 992 00:45:49,230 --> 00:45:51,910 Нека си го даде int од 50. 993 00:45:51,910 --> 00:45:53,160 Јас зедов позитивен број. 994 00:45:53,160 --> 00:45:54,230 Ајде да ја обидат повторно. 995 00:45:54,230 --> 00:45:54,930 Состојба 0. 996 00:45:54,930 --> 00:45:56,260 Негативна 50. 997 00:45:56,260 --> 00:45:57,290 Јас зедов негативен број. 998 00:45:57,290 --> 00:46:00,350 >> Но сега, дозволете ми да земете она што ние ќе продолжиме повикувајќи корнер случај, што е повеќе 999 00:46:00,350 --> 00:46:04,702 интересен случај кој мислите дека може да ви даде некои проблеми, 0. 1000 00:46:04,702 --> 00:46:07,940 Сега, јас сум прилично сигурен дека ова е еден од оние агол случаи каде нула е 1001 00:46:07,940 --> 00:46:12,330 ниту позитивно, ниту негативно, па ми програма, иако во синтаксички 1002 00:46:12,330 --> 00:46:15,440 коригираат - го компајлира, таа работи - не е логично точни. 1003 00:46:15,440 --> 00:46:21,050 Значи она што е едноставен фикс тука ако сакам да се открие, ако сакам да се справи со n 1004 00:46:21,050 --> 00:46:23,840 еднакво 0 одделно? 1005 00:46:23,840 --> 00:46:32,980 >> Па ако n е еднакво на 0, тогаш сакам да кажам нешто како printf "Ти зедов 0". 1006 00:46:32,980 --> 00:46:33,990 Дозволете ми да се обиде на оваа сега. 1007 00:46:33,990 --> 00:46:38,320 Дозволете ми да се вратиме тука, јасно мојот прозорец, и прекомпајлирате. 1008 00:46:38,320 --> 00:46:38,690 Hm. 1009 00:46:38,690 --> 00:46:39,770 Една грешка произведуваат. 1010 00:46:39,770 --> 00:46:41,630 Но, јас не сакате да се провери ако n е еднаква на 0. 1011 00:46:41,630 --> 00:46:44,230 1012 00:46:44,230 --> 00:46:47,720 >> Значи, повторно, уште една глупава работа да се навикнеш на, знак за еднаквост е 1013 00:46:47,720 --> 00:46:48,910 операторот за доделување. 1014 00:46:48,910 --> 00:46:52,240 Значи ова е всушност грешка во тоа, технички, иако на компајлерот 1015 00:46:52,240 --> 00:46:56,450 заштитени мене од мене, би технички биде копирање 0 во n, која 1016 00:46:56,450 --> 00:46:57,590 не е она што сакам. 1017 00:46:57,590 --> 00:47:00,950 Сакам да се тестираат за еднаквост со еднаква еднакви. 1018 00:47:00,950 --> 00:47:03,390 И така што сега може да биде мојата подобро решение. 1019 00:47:03,390 --> 00:47:07,810 >> Дозволете ми да всушност resave ова како, да речеме, conditions1, да биде нов и подобрен. 1020 00:47:07,810 --> 00:47:10,480 Па сега ако јас го прекомпајлирате ова, тоа ќе го направи услови - 1021 00:47:10,480 --> 00:47:16,960 Whoops - направи conditions1 точка коса црта conditions1, Внесете, "Би сакал int, 1022 00:47:16,960 --> 00:47:18,760 те молам. "Јас одам да си напред и тип 50. 1023 00:47:18,760 --> 00:47:19,660 Тоа е сеуште добар. 1024 00:47:19,660 --> 00:47:21,200 Негативна 50, сеуште добар. 1025 00:47:21,200 --> 00:47:24,920 0, и тоа, навистина, откриени дека јас зедов 0. 1026 00:47:24,920 --> 00:47:28,200 >> Така што повеќе да јас сега се прави со ова? 1027 00:47:28,200 --> 00:47:32,280 Па, ние сигурно може да направи повеќе сложени работи. 1028 00:47:32,280 --> 00:47:37,240 Но, она што јас би сакал да предложам е дека ние се стави крај на оваа белешка овде. 1029 00:47:37,240 --> 00:47:41,680 Ако ние се повлече до ова, ќе видиме, можеби, омилен цртан филм на твое 1030 00:47:41,680 --> 00:47:43,326 сè до денес можеби ќе никогаш не сте разбрале. 1031 00:47:43,326 --> 00:47:46,550 1032 00:47:46,550 --> 00:47:49,520 И тоа е за квалитетот на смеа што треба да се добие со CS шеги. 1033 00:47:49,520 --> 00:47:51,060 Па тоа е за право. 1034 00:47:51,060 --> 00:47:54,900 >> Но повеќе убедливо, мислев дека сум ни даде малку закачка за в понеделник. 1035 00:47:54,900 --> 00:47:56,430 Па ние сме започнале да го користат цели броеви. 1036 00:47:56,430 --> 00:47:57,510 Ние сме наведени да плови. 1037 00:47:57,510 --> 00:48:00,120 Ние дури и од двојки, кои, пак, да ви даде броеви 1038 00:48:00,120 --> 00:48:01,390 по децимална поени. 1039 00:48:01,390 --> 00:48:04,230 >> Но излегува дека плови и двојки, и, навистина, компјутери, 1040 00:48:04,230 --> 00:48:08,470 во основа, не можат да ги изразат некои вредности прецизно. 1041 00:48:08,470 --> 00:48:12,840 Ние знаеме од математика класи кои можете да има неограничен број на броеви по 1042 00:48:12,840 --> 00:48:13,510 децимална точка. 1043 00:48:13,510 --> 00:48:16,460 А ти дури и може да се стави вертикална лента да се каже овие трае вечно. 1044 00:48:16,460 --> 00:48:18,810 >> За жал, не можете да навистина направи тоа во компјутерот. 1045 00:48:18,810 --> 00:48:20,400 И така агол случаи се јавуваат. 1046 00:48:20,400 --> 00:48:23,120 На пример, да претпоставиме дека сте прави нешто финансиски. 1047 00:48:23,120 --> 00:48:25,700 Што го правиш по математика со процентите, и 1048 00:48:25,700 --> 00:48:27,030 со долари и центи. 1049 00:48:27,030 --> 00:48:29,230 И оние центи не нужно замена. 1050 00:48:29,230 --> 00:48:34,120 Па, излегува дека фракции на пени да почнете да додадете до кога 1051 00:48:34,120 --> 00:48:37,250 моделирани со компјутерскиот систем во таков начин што умен 1052 00:48:37,250 --> 00:48:39,100 луѓето можат да ги искористат предностите. 1053 00:48:39,100 --> 00:48:42,650 >> И оние од вас кои не го виделе, би сакале да ви даде 30 секунди закачка на 1054 00:48:42,650 --> 00:48:48,290 прекрасен филм познат како канцелариски простор, која ќе наслика слика на 1055 00:48:48,290 --> 00:48:51,205 проблем, ние ќе се справи со Првото нешто што во понеделникот. 1056 00:48:51,205 --> 00:48:53,960 Ако можеме да се подигне на обемот малку, јас да ви даде 30 1057 00:48:53,960 --> 00:48:55,495 секунди на канцелариски простор. 1058 00:48:55,495 --> 00:48:55,770 >> [Видео репродукција] 1059 00:48:55,770 --> 00:48:59,000 >> -Мислам, ти, ти не се покажува и можеш да се задржи вашата работа. 1060 00:48:59,000 --> 00:49:00,620 >> -Всушност, јас сум се промовирани. 1061 00:49:00,620 --> 00:49:03,240 >> -Можев да програмираат вирусот кој би рипувате тоа место надвор голема време. 1062 00:49:03,240 --> 00:49:04,430 >> -Па, како тоа функционира? 1063 00:49:04,430 --> 00:49:06,782 >> -Секој пат кога има некој банкарски трансакции каде камата се пресметани, и таму 1064 00:49:06,782 --> 00:49:10,160 илјадници на ден, компјутерот завршува со овие делови од гласовите. 1065 00:49:10,160 --> 00:49:12,030 >> -Но, јас не одам да прават ништо нелегално. 1066 00:49:12,030 --> 00:49:12,660 >> -Нелегален? 1067 00:49:12,660 --> 00:49:15,075 Samir, ова е Америка. 1068 00:49:15,075 --> 00:49:16,570 >> -Ние треба да се колнам во Бога. 1069 00:49:16,570 --> 00:49:19,070 >> -Ако никој не знае за ова но нас, во ред? 1070 00:49:19,070 --> 00:49:21,920 Нема членови на семејството, без девојки, никој. 1071 00:49:21,920 --> 00:49:22,700 >> -Се разбира. 1072 00:49:22,700 --> 00:49:23,320 >> -Договорено. 1073 00:49:23,320 --> 00:49:24,280 >> T-Дон грижете се, човече. 1074 00:49:24,280 --> 00:49:25,640 Јас нема да кажам на никого или. 1075 00:49:25,640 --> 00:49:26,504 >> [Крај видео репродукција] 1076 00:49:26,504 --> 00:49:30,030 >> Дејвид MALAN: Значи ова, тогаш, е CS50, тоа беше канцелариски простор, и тоа ќе се сите 1077 00:49:30,030 --> 00:49:31,465 да има смисла во понеделникот. 1078 00:49:31,465 --> 00:49:33,940 Те видат тогаш. 1079 00:49:33,940 --> 00:49:37,880 >> Наратор: На следниот CS50, Роб прилагодување за да се биде надвор од 1080 00:49:37,880 --> 00:49:39,130 Харвард оброк план. 1081 00:49:39,130 --> 00:49:56,160