>> [Музички]
>> Дејвид MALAN: Во ред.
Добредојде назад.
Ова е CS50, а тоа е Недела Еден, продолжи.
Така една од причините ние сме биле поминува околу технологии како
Google стакло е дека тие доаѓаат со нешто познат како API-то, на
Пријава Програмирање интерфејс.
И она што тоа значи е дека со право датотеки и со право
документација, вие всушност може да напише софтвер за дури и уреди како овие.
>> И така она што го имаме на ум кон семестри крајот е, ако еден проект
вклучување, да речеме, на Google стакло може жалба, ќе видиме што можеме да направиме во
Услови за hooking ви со некои заем хардвер, како и на
јавно достапни API, така што ќе може всушност започнете создавање на софтвер
кој работи на истата Гугл стакло.
>> Друг уред дека ние сме биле играње со на крајот кои што мислевме дека би можеле да бидат
забава на крајот семестар е оваа мала работа тука.
Таа се вика скок движење, и она што си за да ја видите е технички на
реклама за уредот, но тоа не зборува за она што ова особено
уред е способен.
И тоа, исто така, доаѓа со API, преку кои може да се напише софтвер да
контрола на вашиот сопствен компјутер на начин сосема вака едноминутен филм тука.
>> [Видео репродукција]
>> [Крај видео репродукција]
>> Па токму сега, овој уред се случува со да се спроведе како мало USB
конектор дека можете да го приклучиш во вашиот компјутер, но јас не би бил изненаден
ако пред долго имаме овие видови на технологии во следната серија на компјутери
и Macs, така што ќе може, всушност, комуницирате со неа во
на начин како тоа.
Всушност, она што мислев дека сум се направи, исто така, е Јас го зафрла малку демонстрација
програма која доаѓа со овој софтвер.
Па јас сум се стави малку сензор пред мојот лаптоп.
>> И како што можете да видите, тоа веќе остварува дека мојата рака е таму
контролирање на неа.
И сите на оваа апликација го прави е по вода малку нешта како оваа.
Но може да се види дека, навистина, Имам пет прсти таму.
Ако можеме да се добие тоа да се направи сите 10, можете да си замислите уредни пијано
апликација или слично.
Значи, ако сакате да се излезе по класа денес и игра со тоа што се
добро, вие сте добредојдени да.
Толку повеќе за тоа кон крајот семестар.
>> Па неколку административни најави.
Еден, дали делот од овој петок на пладне на cs60.net/section.
Дека рачно е на курсот почетната страница од пребарувачот, како и.
Во меѓувреме, иако, supersections ќе дебитира оваа недела.
Supersections се еднократен работа, бидејќи тоа ни е потребно некое време да работат
дознаете кој е во кој дел и каде.
>> Па ова доаѓа недела, ќе има еден делот за оние кои се помалку удобно,
еден дел за оние поудобно.
И оние од вас некаде во помеѓу сте добредојдени да се оди на
едниот или на двата или не.
И двете од овие ќе се снима.
Тие ќе бидат во поголем аудиториум од делот нормално ќе биде внатре
Но Целта тука е да ви овозможат со некои удобност со проблемот постави еден,
со C, со CS50 апаратот, овој викенд, дури и пред да дознаете вашиот
формален дел задача.
Па ќе ги задоволат вашите ТФ и вашиот помал група на sectionmates во врска со
една недела време.
>> Работно време, пак, се случува.
Ги искористат предностите од нив вечерва или утре вечер, ако би сакал.
Проблемот сет 0 се должи во петокот.
Ова е еден ден подоцна од редовно-закажаното, во четвртокот.
Но со проблем сет 1, ќе видите дека тоа вклучува некои загревање
вежби со кој можете сами може да се прошири своите
Четврток рок до петок.
Проблемот сет 1, во меѓувреме, ќе дебитира на веб-страницата на курсот ова доаѓа
Петок, ако сакате да навивам со тоа како што го направив еднаш едно време доцна
Петок навечер во вашата соба.
>> Па cs50.net/appliance е местото каде што можете да добиете на CS50 апаратот
дека ние почна да го користи во понеделникот.
Ние ќе го користи малку повеќе денес.
Но остатокот увери дека проблемот поставите 1 спецификација ќе ви прошетка низ
токму на чекори што мора да се добие дека и трчање.
Па не се грижи за тоа дека пред Pset 1 ако не би.
>> Сите во право.
Па ние погледна во понеделникот на изворниот код, но во контекст на новата
програмски јазик, имено В И Ц, за разлика од нула, не е графички.
Тоа не е мозаик парчиња.
Тоа е повеќе англиски како синтаксата.
И има неколку чекори кои се вклучени во всушност пишување и водење на
програма во C, бидејќи покрај извор кодот вака, ти треба нешто
нарекува компајлерот.
И во однос на Едноставен, што се на компајлерот да направи за нас?
Да.
>> СТУДЕНТСКИ: Таа се конвертира го кодот дека ти пишувам за 0-ти и 1S.
>> Дејвид MALAN: Добро.
Значи, таа го претвора кодот кој ние пишуваме на 0-ти и 1S.
Таа се конвертира т.н. изворен код за да објектниот код, на последната на која изгледа
малку нешто како ова.
И тоа е вашиот процесор, мозокот внатрешноста на вашиот компјутер, дека поради
луѓето кои го создадоа оние компјутери, знаете што тие секвенци
од 0-ти и 1S средина.
>> Можеби тоа значи печати.
Можеби тоа значи прилог.
Можеби тоа значи одземање.
Можеби тоа значи прикаже графички.
Постојат предефинирани шаблони на битови дека светот одлучи да значи
некои работи.
Но во најголем дел во овој курс, ние ќе работат на повисоко ниво, и
ние ќе земе здраво за готово дека постојат работи како компајлери кои можат да
направи нашиот изворен код функција во начинот на кој ние имаме намера.
>> Па на програмата ние напиша првата минатата недела а потоа почна да пристаниште, па да
зборува, да степена во овој минатото Понеделник, беше ова.
Кога зелено знаме кликнато, велат здраво.
Ова беше, се разбира, напишано во Скреч.
И јас тврдеше дека еквивалент програма во C изгледаше малку
нешто како ова.
>> Значи она што сме мислеле дека би го сторила во прв е, ајде да одгатнат што изгледа, на прв
поглед, очигледно, како прилично таинствени, синтакса, но ќе почне да се забележи
моделите доста брзо.
Она што ние, исто така, ќе го стори денес е обезбеди ви со ментална модел за некои
канонски, некои стандардни конструкции во програмирање.
А потоа ние всушност ќе добијат нашите раце валкани со некои примери како добро.
>> Така и за оние од вас поудобно, сфатат дека ова недела, а потоа следната
недела многу добро може да биде малку на преглед.
Но особено кога на хакерите издание на проблемот сет 1 излегува на
веб-сајт се разбира во петокот, јас мислам дека ќе најдете дека дури и како ви се пополни во
некои празни места во текот на следната недела или две, ќе почнат да се добие уште
соочат со предизвикот и се судрите нови и понови нешта.
>> Па ајде да се закачам оваа програма, освен неколку линии во исто време.
Во самиот врв, имаме она што е технички нарекува
препроцесори директива.
Ова е само една линија на кодот кој вели за да го вклучите содржината на фајл,
наречен стандард I / N, стандарден влез - или, жал, стандардот I / O, стандард
влез / излез,. часот, во внатрешноста на мојата сопствена програма.
>> Значи со други зборови, ако јас го напишав овој Програма со едноставни текст едитор како
gedit, поедноставно еквивалент на нешто како Microsoft Word, дека
настава, # вклучуваат stdio.h, е само ќе кажам на компајлерот, го зграпчувам
содржината на таа друга датотека, stdio.h, и ставете ги во право тука.
>> Сега, зошто е гајле?
Што ние тврдиме е внатре од оваа датотека наречен stdio.h, кои се чуваат
некаде на мојот хард диск, или во овој случај, некаде во CS50 апаратот?
Некој друг ја стави таму за мене.
Но она што е во него?
>> Да, па тоа е објава на функција наречена printf.
Па printf потсетува на функција која прикажува зборови и знаци и
броеви на екранот на мојот наддавање.
Но јас не го пишувам.
CS50 не го пишувам.
Некој години го напишал, и тие во суштина ни даде рецепт за тоа
во датотека наречена stdio.h.
Така што првата линија само ми дава пристап да функционира дека некој друг
напиша години, меѓу кои се printf.
>> Сега, на следната линија, ќе одам да се бранува моите рака во, барем до следната недела.
Но, за сега, знам дека int главната (празно) е суштина еквивалент на ова
жолта загатка парче кога зелено знаме кликнато.
Светот, пред неколку години, одлучи дека ако сте пишување програма во
јазик наречен C, ќе почнете да вашата програма со линија
што личи тоа.
Во само околу една недела, тоа ќе се направи смисла што int е, што празнина е.
Но, за сега, само мислам на тоа бидејќи ова жолта загатка парче.
>> Сега следно, имаме кадрава голема заграда по од друг близок кадрава голема заграда,
така да се каже.
И ние ќе ги видите овие во текот на програми во C, како и
Вклучите Javascript-и PHP.
И овие само капсулирало поврзани линии на код.
Отворен кадрава голема заграда суштина вели, тука доаѓа некои код.
И затворениот кадрава голема заграда, што е искосени во друга насока, само
значи, тоа е тоа за релевантните код.
>> Па сочни линија во оваа прва Програмата е последен, printf,
цитат-unquote, здраво светот.
И јас го повикував на нешто помеѓу цитати она што минатиот пат?
Па тоа е стринг.
И низа е само techie термин за низа од
карактери, збор, фраза.
Дури и една буква може се двојно цитираше.
Но, тоа е секвенца од нула или повеќе ликови.
>> Обратна коса црта-N, сепак, изгледа малку чудно.
Но, тоа едноставно значи нешто едноставно со компјутер.
Што е обратна коса црта-n?
Нова линија.
Па тоа е само посебен редослед на ликови кои светот одлучи
средства се стави ред во право, таму, затоа што на компајлерот, всушност, ќе добиете
збунет, обично, ако, многу разбирливо, но погрешно, само
започне притискање на Enter да се стави нови линии во вашиот код.
Што треба да биде малку повеќе експлицитна со обратна коса црта-n.
>> И ќе видиме има неколку други такви шеми за специјални карактери.
На пример, ако си сакал да ги споделите вашите ум талкаат во корнер случај,
да претпоставиме дека сакам да се печати двојни наводници на екранот за
која било причина, што би се чини дека да биде малку проблематично, нели?
Затоа што ако јас се стави наводници во средината на "Здраво, свет", за што
Причината, зошто, кои се чини потенцијално проблематични?
Не го скрши на стрингот.
>> На компајлерот е само програмата.
А програма како компајлер е само ќе да ја прочитате вашата код врвот до дното,
лево кон десно.
И ако гледа три двојни наводници, наместо на две деца, тоа не се случува да се знае
ако мислиш дека нешто кон лево треба да биде стринг, или нешто што треба да
право, или целата работа.
Тоа е двосмислена, и така она што еден типичен компајлерот ќе направите е само да навивач надвор,
и да ви даде некои порака за грешка, и ве натера да се справи со проблемот.
>> Па со оглед на тоа обратна коса црта-n значи нова линија, што би вашите инстинкти сега
почне да биде ако си сакал да вклучуваат нешто аномално како двојни
цитирам во внатрешноста на оваа инаку цитирана стринг?
Обратна коса црта-двојни наводници.
И така ние ќе ја видите оваа вид на шема премногу.
>> Ако сакате да се направи нешто малку чудни, ќе најдете дека
решенија често го следат моделот, и обратна коса црта
означува бегство низа.
И тоа само значи нешто посебно дека ние треба да ги претставуваат во
поинаков начин.
Што се однесува како да претставуваат обратна коса црта, добро, ние ќе
се вратам на тоа.
Но одговорот, исто така, е, всушност, малку очигледна.
>> Па ајде сега се воведат некои други програмски конструкции
што го виде во Скреч.
Сте веројатно зема здраво за готово веќе ако веќе сте го нурна во
Проблемот постави 0.
Но, ајде сега се воведе на синтаксата во C за овие инаку прилично интуитивна
идеи, барем некои од нив.
>> Па овој поим на една состојба или гранка, а претходно ние
претставен со код кој изгледаше како овој од левата страна во Скреч -
ако x е помалку од Y, тогаш кажете го тоа -
наместо сега во C - дозволете ми да брус во на наједноставен случај -
ние сме едноставно се случува да се каже, ако, отворете заграда, нешто не е вистина - на
Рационален израз се случува да одам каде што реков состојба -
блиску заграда, тогаш направи она што е во внатрешноста од оние големите загради.
>> Значи тука, исто така, на тркалезните загради се вид на како гребење на
Форма на буквата У мозаик парчиња.
Го направи она што е внатре во овие големи загради.
Во овој случај, коса црта коса црта.
И ќе забележите ова е напред коса црта, не обратна коса црта.
Напред коса црта, напред коса црта, за оние кои сте програмирани
пред, само значи -
тоа е само коментар.
А коментар не е на линија на код, сама за себе.
Тоа е линија на англиски што вие, човечки, имаат напишано себе си да се
можеби ве потсетам да се направи нешто, да објасни за себе, да му се објасни
некој друг, она што ти го кодот прави.
Тоа е само описни коментар.
>> Сега, се разбира, ние може да има двонасочна вилушка во патот само со тоа, некој
три-начин вилушка на патот со тоа ова, и ако продолжиме со ова
модел, може да имаат четири начин, пет-насоки, шест начин вилушки на патот ако
што треба да се справи, навистина, дека многу услови.
А потоа забележите паралелизам тука -
ако (состојба), друго, ако (состојба), и само оној кој е малку
чудно е последниот, кој е само што друго.
Но, повторно, ова е идентична, концептуално, со она што ние го направивме
веќе, иако на синтаксата ќе потрае малку се користи за добивање.
>> Сега, во овој пример, постојат некои други чудни синтакса.
Гледаме printf повторно, отворен заграда, и блиску заграда.
И во внатрешноста на постои цитирана стринг.
На загради, во контекст на printf, одат на левата страна
и право на што?
Што ние ја опишуваат која се цитирани стринг како поопшто?
>> Па тоа е аргумент.
Секое време имаш некоја функција, како printf, а потоа отворен paren и
во близина paren и нешто внатрешноста на тоа, без разлика дали тоа е стринг, или
цел број, или нешто друго, нешто во помеѓу оние загради се нарекува
аргумент.
>> И аргумент само влијае на функцијата однесување.
Во овој случај, тоа е прилично јасно како.
x <y е она што се помина во, така да се каже, како аргумент.
И printf се случува да се печати токму тоа.
Бидејќи сигурно, лицето години кои спроведуваат printf немаше поим
она што човечки наследници беа случува да го користите printf за.
Па затоа аргументи постои, да влијае врз однесувањето по функцијата
е напишано.
>> Сега, Булова изразување.
Ние сме виделе овие пред во Скреч.
Излезе во C можете исто така да "или" нив заедно, така да се каже.
Две вертикални решетки значи дека овој блок на код, ова го направите ова, ќе
изврши ако првиот услов е вистина или вториот услов е вистина.
Па дури и покрај тоа што не би можеле да имаат направено ова во нула, можете да навистина
го прават тоа во нула, и исто така можете да изразат себе си поинаку -
ако првиот состојба, а вториот состојба се вистинити, тогаш направи она што е
внатрешноста на тркалезните загради.
>> И само како настрана, причината е двојно го симболот и двојно
вертикална лента, ќе видиме на крајот дека еден вертикална лента и
една симболот всушност имаат различни што значи во C. Значи сега за сега,
дека дуплирање на симболи е намерна.
>> Па ајде да се воведе, накратко, оваа други малку на синтакса.
Тоа сосема не се носат во текот на Нула, но тврдам дека можам
спроведување на поимот на ако друго, ако друго, ако на друго место, ако друго успех, користејќи
нешто што се нарекува прекинувач изјава.
А единствената причина зошто ова навистина постои е само да ви даде, програмер, а
малку поинаков начин на решавање на некои проблем, иако логично тоа
не ви даде какви било нови способности.
>> Со тоа мислам ова.
Кога ќе се каже прекинувач, а потоа празно место, а потоа и загради, во внатрешноста
од која оди израз -
и ова може да биде малку не-очигледно во прв, но тоа не е аргумент,
технички, бидејќи прекинувач не е во функција.
Значи сега за сега, само да се претпостави, дека ние сме користење загради во различни места
за различни причини.
>> Па прекинувач на израз значи можам стави променлива во внатрешноста на тие
загради каде што вели изразување.
А потоа, ако таа променлива -
Претпоставувам дека тоа се вика X, и тоа е само цел број -
Јас тогаш може да наведеме во мојот слајд тука нешто како ова.
Ако x е мојот променлива, и јас сакате да направите нешто ако x
е еднаква на 1, можам да го направите тоа.
>> Ако јас наместо сакате да направите нешто ако x е 2, можам да го направите тоа.
Друго, ако сакам да се направи нешто друго целосно, јас може да има стандардно случај во
кој случај јас го направите ова друга работа.
Па во таа смисла, тоа е еквивалентно на ако x е еднаква еднаква на 1, друго, ако на друго место,
но Јас се спомене овој сега само затоа што ние ќе го види повторно.
Но, за сега, само знам дека тоа постои.
>> Сите во право.
Па овие последниве неколку се малку повеќе комплекс на прв поглед, но тие не го
нешто прилично јасна.
А за јамка во C е парче од код кој само не нешто повторно и
повторно и повторно.
И само досадни нешто во врска со тоа е тоа е дека тоа е малку криптичната
да се изразат во овој циклични шема, но светот стандардизирани на
на следниот начин.
>> Кога користите за телефонска линија, имаш пар загради повторно.
И ќе забележите дека две semicolons во таму.
Овие две запирки одвоени три различни изрази во внатрешноста на
загради.
Една од нив е т.н. initializations.
Една од нив е т.н. состојба.
И еден е т.н. надградби.
>> Погледна во апстрактното, ова е сосема не-очигледно, па ајде да погледнеме
на конкретен пример.
Во Скреч имавме повтори блок.
И овој блок рече повторува 10 пати, велат "Здраво, свет". Дозволете ми да тврдат за
сега, и ние ќе се вратам на тоа, и ова, исто така, ќе добиете повеќе запознаен со
можете пред долго, еквивалент Ц код може да се каже дека ова -
А за успех и простор, пар загради, забележуваат semicolons во
таму, кој одвои три различни работи, иницијализација,
состојба, и ажурирање.
>> И да се погоди она што првиот се прави.
Int i = 0.
Во однос груба лаик, она што е дека тоа за нас, веројатно?
Па је.
Тоа е прогласување на променлива наречена I, и тоа е тоа даваат она што вредност?
0.
Па тоа е создавање на променлива наречена јас, чување на вредност 0 во неа.
Тоа е т.н. иницијализација.
>> Добро, сега јас тврдеше дека пред дека средниот нешто, јас
<10, е услов.
Па што е тоа?
Па, она што за телефонска линија прави кога програма со за телефонска линија се работи, е
секој пат кога компјутерот тече низ овој циклус, од врвот до дното, врвот до
дното, исто како вие момци не кога броење себе и седнува,
повторно и повторно и повторно, на компјутерот се случува
да се провери таа состојба.
И ако јас е помал од 10, тоа ќе го направат тоа повторно.
Ако јас е помал од 10, тоа ќе го направат тоа повторно.
Ако јас е помал од десет, тоа ќе го направат тоа повторно.
Така што се чини дека укажуваат на тоа дека се надевам дека ќе се менува.
Во спротивно, би имале бесконечна јамка.
И навистина, јас се менува, затоа што Последното нешто по точка-запирка таму
е малку криптичната синтаксата на i + +.
Но оние од вас кои го направиле тоа пред, тоа само значи
сосема едноставно што?
>> СТУДЕНТИ: [INTERPOSING ГЛАСОВИ].
>> Дејвид MALAN: Додај 1 да се з.
Прираст јас.
Па видовме Скреч загатка парче за тоа, всушност.
Тоа не изгледа како јас + +, но дека само значи, сосема едноставно, прираст на
вредност можам од 1 секој пат кога ќе го направите тоа.
Значи буквално, ќе почнете со иницијализацијата јас на 0.
Тогаш проверете ја вашата состојба.
Е 0 помалку од 10?
Да.
Ние одиме низ јамката.
>> Следното нешто тврдам на компјутерот одам да направите е тоа се случува
на i прираст.
Па јас сега 1.
Ја проверува состојбата.
Е 1 помалку од 10?
Се разбира.
Па тоа го прави повторно.
Тогаш тоа наголемува i + + до 2.
Е 2 помалку од 10?
Да.
И повторно и повторно и повторно.
И на крајот, бидејќи на плус-plussing, ние се да i изнесува 10.
Е 10 помалку од 10?
Па, очигледно не.
И тоа е точката во која на за телефонска линија само ќе престане.
И ако имате повеќе кодот на екран долу, компјутерот
продолжува да работи таа код наместо тоа.
>> Значи, повторно, иако тоа се случува да се изгледаат и се чувствуваат малку чудно во
прво, секако, за оние од вас кои никогаш програмиран пред тоа, тоа
буквално ја намалува концептуално на она што е инаку многу
јасна загатка парче во Скреч.
>> Сите во право, јас ветив дека таму ќе да има и други аналози во Скреч.
Таму е ова еден премногу.
И ние го виде тоа накратко последен пат.
Но се сеќавам засекогаш блокира во Скреч?
Тоа само прави нешто вечно?
Јас тврди дека може да спроведе ова на овој начин.
А ти всушност може да се спроведе овој во еден куп различни начини.
>> Но додека јамка е само поинаков начинот на C на изразување на себеси.
На крајот на денот, не можете да направите ништо со време јамка што ќе
не може со за телефонска линија.
Па тие се на крајот на ден функционално исто.
Но тоа ви овозможува да се изразат малку поинаку во
на следниот начин.
>> Со додека јамка, тоа е она што е во заграда тоа е проверуваат повторно и
повторно и повторно.
И штом тој израз е лажно, тогаш јамка запира извршувањето,
и компјутерот продолжува да работи без оглед на другите кодот
имате во вашата датотека.
>> Но она што е интересно овде е дека јас буквално ја внеле точно.
И вистински е еден вид на Булова вредност, вистински или лажни вредност.
Па може вистински некогаш стане false ако јас сум буквално
тоа хард-кодирани во мојата програма?
Па нема.
Тоа е малку чудно што Го направив ова.
Но вистинито е вистина.
Нема плус-plussing.
Нема употреба на променливи во тука.
Значи бидејќи јас хард-кодирани додека е точно, ова јамка е секогаш ќе оцени
повторно и повторно и повторно.
>> Значи колку пати е Здраво светот случува да се печати на екранот?
Засекогаш.
Бесконечен број на пати додека батерија умира или некои други надворешни
Настанот се случува.
Значи ова не е веројатно најдобрата програма да се напише, бидејќи ако на корисникот
никогаш не можат да се откажат од вашата програма, тоа е веројатно не она што се наменети.
>> Но, понекогаш, програми треба да имаат бесконечна јамка.
На пример, ако вашиот компјутер има часовникот на тоа, тоа сигурно ќе биде
убаво ако вашиот часовник тоа не го задржи ажурирање себе засекогаш, иако еднаш
втор или еднаш една минута или нешто слично.
Па дури и бесконечна петелки немаат свое место.
>> Сите во право.
И на крај, оваа.
И овој е малку поинаква функционално, и ние ќе се вратам на
ова веројатно во Pset 1.
Но, има друг вид на јамка нарекува направите додека јамка.
И единствената разлика тука помеѓу направи додека јамка и, да речеме, додека јамка,
е дека состојбата се проверува не пред да се изврши код, но по
се изврши на кодот.
Па на врвот за додека јамка, додека правите додека
проверува тоа на дното.
>> И тоа само значи дека додека јамка обично ќе изврши повеќе пати
или помалку пати отколку додека јамка?
Потенцијално повеќе пати, бидејќи не додека јамка е јасно велејќи го направите ова,
само по која точка ќе провери ако состојбата внатрешноста на
загради е вистина.
>> Па ќе видиме ова повторно веројатно во Pset 1.
Ако некогаш сакате да се направи нешто на барем еднаш, а потоа можеби и малку повеќе
пати, ова е добра изградба да го користите.
Но додека јамка, пак, ќе провери неговата состојба во прв план.
И тоа е тоа за петелки во C, дали време, време, и за петелки.
И повторно, тие мапираат прилично убаво назад да се нула, освен овој не
доста имаат иста аналогни во Скреч.
>> Па, како за сега, променливи?
Значи ова е како јас прогласена за променлива синтаксички пред некој ден.
Јас имав int, за што јас тврди е цел број.
Јас тогаш имаше променлива наречена контра, а потоа точка-запирка.
Значи она што е оваа линија код правиш?
Ова е, доста едноставно, прогласувајќи променлива -
тоа е, барајќи од компјутер, дај ми го некои меморија, дај ми некои делови - во
кој може да се сместат што?
На инт.
И точка-запирка само значи крајот на линијата на кодот.
>> Сега, втората линија е веројатно прилично guessable.
Што е контра = 0; правиш?
Тоа е давање 0 за да се спротивстави.
И така ова е друга работа тоа е малку досадни
наспроти, да речеме, алгебра.
Додека во алгебра, знак за еднаквост значи еднаквите, тука во C, еднаквите
знак значи задача.
Па тоа значи стави она што е на десната во она што е на левата страна.
И ќе видиме уште еден симбол, е еднаква на еднаквите, кога сакаме да се тестира
за квалитет, малку annoyingly.
>> Но, ова е малку неефикасни.
Тоа е вид на досадни дека имам да декларирате променлива и
тогаш тоа даде вредност.
Па C, всушност, ни овозможува да ја поедностави оваа и само го прават тоа сите одеднаш.
Можете да го прогласи променлива на левата страна.
Сеуште можете да го стори задача на право од страна на ставање дека знак за еднаквост во
средината.
Па на крајот на денот, овие две се еквивалент, но оваа една, искрено,
е веројатно подобро навика да се влезе само затоа што е малку помалку
код, тоа е малку полесно да се чита, и тоа само затегнува
вашиот код, така да се каже.
>> Било какви прашања досега на петелки, на променливи, на услови, на
Booleans, или технички или концептуално?
Сите во право.
Па сега овој следната добива малку поинтересна.
И ова е пример јас го постави минатата време дека само мапи на гребење пример
во текот на В
>> Па во функција.
Во однос на Едноставен, што е функција?
Мора да биде похрабри со вашиот одговор.
Што е функција?
>> СТУДЕНТСКИ: Дали нешто.
>> Дејвид MALAN: Што е тоа?
>> СТУДЕНТСКИ: Дали нешто.
>> Дејвид MALAN: Дали нешто.
OK.
Ќе започне таму.
Така функција прави нешто.
Па тоа е парче од код кој е суштина спроведува на друго место дека
навистина прави нешто.
Сега, она што е интересно за функција е дека тоа може да потрае влез,
и тоа може да произведе излез.
И ајде да всушност се Погледнете во ова.
>> Па човекот зад завесата беше намерно пред еден миг.
Тука имаме маса.
Но, да претпоставиме дека ова всушност претставува голема кутија.
Значи ова е т.н. црна кутија.
И воопшто, во дизајн, во компјутер науката, црни кутии само погледнете
парчиња на функционалноста дека некој има имплементирано, а вие не го стори
мора да знаат или грижа како тоа е спроведува под хауба.
Можете само грижа дека оваа црна кутија, што ние сега ќе почнеме нарекувајќи
функција, не нешто.
>> Така, на пример, ако оваа црна кутија на на сцената тука претставува printf, на
функција, знам од претходните примери дека printf трае еден или повеќе
аргументи, а првата од оние аргументи треба да биде стринг, како
"Здраво, свет". Па, ако јас сум лицето пишување на програмата, и сакам
да го користите printf, Јас, на пример, може да се земе парче од празна хартија тука и
црн фломастер и да пишува на него -
Јас погрешно напишани "свет" -
H-Е-Л-Л-О.
>> Па јас ќе го земе мојот црн фломастер и јас ќе пишувам, толку големи и читливо што можам за
овој лист хартија, "Здраво, светот", а сега тврдам ова е мојот аргумент.
Ова е стринг претставен со парче бела хартија.
И мојот влез сега на функција printf ќе биде ова.
Па јас сум повикувајќи printf, минувајќи тој аргумент како влез до него.
>> И сега, јас не знам како лицето кое напиша printf тоа го правеше години, но
Јас знам од неговата документација која нејзината цел во животот е да се печати она што јас
обезбеди на тоа како влез.
И така, иако оваа институција е непознат за мене
под капакот на моторот, сега Гледам, ох, тоа се прави.
Таа има печатени нешто на екранот.
И сега контролираат на програмата, доколку има беа повеќе линии на код, ќе
сега се врати за мене.
И така фактот дека Колтон -
благослови своето срце, се крие тука под маса пред сите вас -
е намерно во тоа јас не знам и јас не се грижат како printf е
имплементирани.
Јас само знам, пак, од своите документација, она што го прави тоа и како можам
сум би требало да го користам.
>> Сега, да се потсетиме дека printf би можеле да добијат малку пософистицирани.
Повторно, ние сме само зборуваме за еквивалент на мислење блок Скреч е.
Но јас, исто така, го направи ова последен пат.
Сакав да ја направам мојата здраво програма малку подинамичен, а не само тешко
код нешто како "светот", а дефинитивно не е тешко код нешто
произволни како D-А-В-I-Д во програмата.
Сакав да побара од корисникот за неговата или нејзината име, а потоа направи нешто со
дека стринг кој тие ги обезбедуваат.
>> Значи има нешто малку различен тука. printf, пред еден миг,
не, навистина, да се направи нешто, но тоа не се врати ништо за мене.
Нели?
Колтон не ме предаде ништо назад, без парче хартија.
Имаше само пропратен ефект.
Мојата обезбедување на "Здраво, свет" како аргумент да Колтон резултираше со
пропратен ефект на зборот, некои зборови, се појавува на екранот.
>> getstring, сепак, е малку различни. getstring е исто така
функционира, но тоа се враќа некои вредност.
Тоа не само што имаат естетски ефект.
Тоа всушност ми дава, лицето повик или со користење на функцијата,
нешто назад.
Значи во овој случај, getstring е нарекува со getstring отворен
paren, во близина paren.
Дали getstring, според тоа, се никакви аргументи или влез?
Не, тоа не чини.
Нејзината цел во животот е само за да добие стринг.
Нема потреба повеќе детали од тоа.
Па дозволете ми да оди напред и да се преправаме дека, повторно, ова црната кутија не е printf,
но getstring, и остави ме, лицето пишување на оваа програма, јавете се или користете
getstring од само пишување Г-Е-Т-С-Т-Р-И-Н-Г, отворен paren, во близина
paren, getstring.
>> Сега, јас немам идеја како CS50 персонал спроведува getstring, но знам дека
ако чекам доволно долго, ќе стори нешто под хауба, можеби користејќи
некои променливи, можеби користење на некои услови, можеби користејќи некои петелки,
можеби користење на некои функции, можеби користење -
само се обидува да го одложи - можеби користење некои други програмски карактеристики.
Но ако чекам доволно долго - во реалноста, во компјутерот, тоа се случи
супер брз -
ако чекам доволно долго, оваа функција getstring се случува да добиете низа
од корисникот, кој е веројатно пишување тоа надвор на нивниот тастатура, и
тогаш, кога ќе getstring е направено добивање оние ликови од корисникот
и чување на нив во низа, што функција, getstring, се случува да имаат
Подгответе се за мене некои излез што сум ќе се добие по пат на
задача оператор.
>> И ако одам, навистина, во излез тука, Obosi има великодушно
учествувал, без да се знае тоа во унапредат, со пишување на неговото име кон овој
променлива, што ја претставува стринг.
Сега, операторот за доделување на средства, дури и иако ова може да се чувствуваат малку
непотребни, јас всушност не треба да ја направам мојата сопствена копија од оваа.
Бидејќи на левата рака страна - Whoops! -
забележите дека Јас во суштина имаат низа името на левата страна.
Па јас сум исто така, ќе се направи мојата копија од оваа.
И ова е малку бела лага, затоа што ние ќе видиме во една недела или две е
време дека конците не се всушност она што се чини дека се.
>> Но, за сега, тука е и повратната вредност.
Тука е мојата копија од него, по користење на задача оператор.
И сега, она што сакам да правите следно?
Сега имаме вториот на две линии на код.
Па јас сега сакате да го повикате printf.
Да се ​​преправам дека сега на црно кутија е повторно да се биде
printf и не getstring.
>> Printf овој пат ќе се се земе како многу аргументи?
Па изгледа, тоа е како два.
Има две запирки во таму, но еден од оние запирки, тоа е
внатрешноста на цитати.
Така, првиот аргумент е буквално ќе биде ова.
H-Е-Л-Л-О, запирка, проценти с, обратна коса црта-n.
И сега јас сум обезбедување не еден аргумент, но два аргументи да printf.
>> И што е printf требало да се направи со овие два влезови откако ќе ги помине во
како аргументи?
Тоа би требало да се земе втора од нив, кои се јавив името, па
Вториот парче хартија напишав надвор пред еден миг се нарекува име.
Тоа се случува да го приклучиш на вредност во на таа променлива во случаеви,
% S, така што, повторно, во само еден миг на време, ќе видиме пропратен ефект на
ја нарече printf, при што ние сега види не "Здраво, свет", туку "hello,
Obosi. "
>> Толку голем аплауз за двете од нашите волонтери, од кои само една знаеше
ова ќе се случува.
Сите во право.
Па, можеби, едноставно како што беше, Секако, ако веќе сте запознаени
со такви, се надевам дека никогаш нема да заборавиме дека особено визуелна на тоа како
функции работат.
>> Па таму е повеќе од само getstring.
Внатрешноста на CS50 библиотека, има цела група на функции, од кои сите
се капитализираат само да се направи јасна дека ние напиша овие функции.
Обично, во Ц, речиси секоја друга функција ќе се користи е мали букви.
Но ние намерно користат големи букви само за да го направи јасно дека овие
се обука тркала на сорти кои ние ќе користат за само неколку недели дека
поедностави процесот на добивање на влез од корисникот.
>> Библиотеката CS50 не прави ништо дека себе си не можеше да стори од страна на
само со користење на C кодот од Oldschool учебник.
Но, повторно, ние ги користат како за обука тркала на сорти за само неколку
недели, така што можеме да се ослободиме од комплексноста дека наскоро ќе се разбере
себе за правење на нешто како релативно јасна како добивање
влез од корисникот.
>> Па знам дека ќе имаат пристап да getchar, GetDouble -
двојно.
What's - и потоа GetFloat.
Што е со подвижна запирка?
Ајде да започне таму.
>> СТУДЕНТСКИ: [нечујни].
>> Дејвид MALAN: Да.
Тоа е голем број со децимална точка.
Па со оглед на тоа int е цел број, што е само број со 0 до 9,
некои број на повторувања од него, плови е нешто
со децимална точка.
И двојно, пак, е исто така број со децимална точка, но повеќе
броеви по децималната точка, потенцијално.
>> Па ние ќе се вратам на ова пред долго.
Но обично, секој од овие видови на податоци, секоја од овие типови на променливи
дека една библиотека како нашата можат да се вратат ви, користете различни броеви на битови да
запази информацијата.
Типично, привлечност, која само значи еден карактер, користи 8 бита.
И тоа е, всушност, во согласност со нашите бајт на волонтери минатата недела, кои
дојде и претставуваше една ASCII карактер во исто време.
Па привлечност е 8 бита.
>> А плови случува да биде 32 битови, обично.
И двојно, како што може да се погоди, е всушност 64 бита, што е само повеќе,
што значи дека може да имаат поголеми броеви или поголема точност.
Но, повторно, повеќе за тоа друг пат.
GetLongLong, пак, иако глупаво име, е навистина само еден
цел број кој е двапати толку голема, двојно долго, потенцијално, како редовен
цел број, 64 бита, наместо на 32.
И GetString ние сме биле користење.
>> Но излегува, во CS50 библиотека, која се спроведува, како што ќе видиме, во
форма на две датотеки, од кои една се нарекува cs50.h, има две други
типови на податоци во него.
Booleans не постојат во C. Можете може да симулираат нив со само користење на 0-ти и 1S
во текот на вашата програми.
Но, ние во CS50 библиотека направивме на симболите "вистинската" и "лажни"
да го претставува 1 и 0, па вие не го стори мора да се тешко кодот нешто
буквално како 1 и 0.
Но ќе видиме оние повторно.
>> Стринг, исто така, не постои.
И тоа е причината зошто јас спомнав тоа е малку бела лага за сега.
Но ние ќе лупам назад дека слој пред долго.
Но, за сега, стринг е секвенца од карактери.
>> Во меѓувреме, во C, вие навистина имаат различни типови на податоци.
Забележуваме овие се мали букви.
Па функции те видов пред еден миг се функции напишани од страна на CS50 дека
ќе се врати на вас вредност што паѓа во една од овие категории.
>> Неколку измамник листови само да се засади семето тука. printf не само
земе% s како променливи.
Таа ги зема% d децимална цели броеви, или% би работат како добро.
% F е подвижна запирка вредности. % C е за char, ако сакате само да го приклучиш еден
карактер во отпочнете елемент низа како што сме правеле, можете да го користите% c.
>> А потоа, малку annoyingly,% LLD е за долго, долго децимална цел број,
кој едноставно значи ако ви треба навистина голем број и сте користење на нешто
наречен долго долго, кој ќе дојде назад кон во pset, можете да го користите% LLD да
кажам printf, приклучок во навистина голем целобројни тука по пат на својата втора или
некои други аргумент.
>> И на крај, јас ветив дека има неколку други бегство
секвенци кои printf поддржува.
Видовме обратна коса црта-n.
Обратна коса црта-R може да се види.
Тоа е вид на старата школа работа.
Ако некогаш сте се користи вистински машина години Пред и ќе влечат по чудак
кои не само што ротира на тркалото за да се движат постава, исто така, се пресели на
целата работа на целиот пат назад во текот на на левата страна, добро, обратна коса црта-R само
во суштина се движи курсорот назад на почетокот на линијата
без да се движи надолу.
Но, повторно, повеќе за тоа, можеби, во иднина.
>> Обратна коса црта-понуда, обратна коса црта-двојни наводници, обратна коса црта-обратна коса црта е
решение за малечки загатката Јас се алудира погоре.
И обратна коса црта-0 е всушност доста интересно.
Но, ние ќе се вратам на дека пред долго.
>> Па дозволете ми да одат во, сега, CS50 апаратот, и ајде да всушност се направи
брзо се загрее со еден од примерите ние не веќе, а потоа се движи кон
нешто малку посложени.
Значи, ако јас се отвори мојата програма наречен gedit -
ова е мојот графички уредувач.
И можам да го правам тоа -
дозволете ми да го затвори тој прозорец таму -
по пат на оваа икона долу тука, gedit, во долниот-лев
агол до менито.
>> Одам да се оди напред и да ги унапредат и спаси овој пример во, да речеме, Џон
Харвард папка.
Папка Џон Харвард е само неговиот дом директориумот каде сите негови фајлови живеат
од стандардните.
И јас одам да се спаси ова како фајл наречен здраво-0.c.
И јас ја одбрале ова име само така линии со код примерок на
Се разбира го веб-сајтот и во YouTube видеа на интернет.
>> Па сега јас ќе одам да почнат да пишувам мојата прва програма.
Дозволете ми да зумирате за читливоста.
И јас одам да се оди напред и да каже int Главната празнина, која е исто како што
жолта загатка парче што започнува на програмата.
Имам добивано и во навика во текот на години на отворањето на мојата кадрава голема заграда, тогаш
исто така, го затвораат, а потоа ќе се вратам на каде што јас сакам да ја ставам код, само
затоа што тоа ми помага да се задржи сето балансирано, особено како мојата
програма добива долго.
>> И сега, овде, јас ќе одам да се оди напред и да каже, printf, цитирам unquote,
Здраво светот, обратна коса црта-n, во близина понуда, блиску заграда, точка-запирка.
Па јас сум само повторување сè сме е земајќи здраво за готово досега.
Сега ќе одам да одзумирате.
>> И ова терминален прозорец долу тука, она што сум дозволено да се направи во оваа црно
и бело прозорецот?
Она што можам да го користите за?
Значи ова е местото каде што јас се кандидира команди и каде можам да ги собере работите.
И јас одам да го чува едноставна.
Одам да се користи програмата наречен создавам, што не е
технички компајлерот.
На компајлерот вика ѕвекот, но ние ќе се вратам на тоа во
недела или две е време.
>> За сега, јас сум само ќе напишеш направи здраво-0, Но, оние од вас кои биле
споредување во вашиот ум она што јас само чука на она што треба да се внесе може
знаете веќе што го направив нешто во ред тука.
Сега, тука е јасно некои грешки.
Пред јас дури и се погледне во она што се, било мисли за тоа што го направив погрешно?
>> СТУДЕНТИ: [INTERPOSING ГЛАСОВИ].
>> Дејвид MALAN: Да.
Јас сум недостасува хедер датотека на библиотеката.
Било која од овие. Ж датотеки се вика насловот додадени фајлови, и тие колективно
припаѓаат на нешта наречени библиотеки.
Библиотеки се само парчиња на код дека другите луѓе напиша.
Па стандард [? јас?] библиотека е колекција на датотеки кои содржат код
дека другите луѓе напиша.
>> Па јас сум недостасува тоа.
Па зошто сум јас добивам грешка?
Па, дозволете ми да дојдете назад во мојата терминален прозорец тука.
И, за жал, во C, како и во многу програмски јазици, особено
ако сето тоа е ново за вас, грешката пораки се прецизни, но тие се исто така
доста криптичната.
И грешка тука, во црвена, е "Имплицитно наведува библиотека функција
printf со тип ", а потоа тоа свитоци до следната линија ", int const char *,
... "Тоа само добива навистина Најголемиот брзо.
>> Но, она што треба да започне да се направи, ако, повторно, нови на сето ова, е само да се
почнете да барате клучни зборови.
Јасно, јас не може да се разбере половина на зборовите гледам само уште.
Ќе, иако, во време од една недела.
Но гледам printf.
И дека треба да почнат, пред долго, да се освежиш сеќавањето, сите во право, printf.
Нешто не е во ред со printf.
Никако не можев да се пишува тоа во ред?
Не, тоа не изгледа како - ох.
Не можам да го користам ако јас не учат на компајлерот дека тоа постои.
И така, повторно, отидете со вашите инстинкти, дури и ако не го разбираат
вистинските пораки за грешка.
>> И навистина, решението е да се само вклучуваат тоа на врвот на датотеката
како што, resaving моето досие со Контрола-S или менито File.
И ако јас сега се врати долу тука, Одам да се расчисти ова.
Контрола-L е само убав начин да го исчистите екранот.
А потоа јас ќе одам да напишете "направи здраво 0 "Enter, и сега јас се уште ја видите
криптичната секвенца од симболи, но ние ќе се вратам на тоа.
Тоа е она Направете го прави за вас.
Тоа е автоматизирање на процесот на преземање прилично досадни команда вклучуваат
Ѕвекот, вистинските компајлерот.
Но, фактот дека добив нема грешки значи дека оваа работа треба да работат.
>> Па јас сум сега ќе да се направи - дозволете ми да зумирате повторно -
./hello-0 Enter, и навистина, гледам "Здраво, свет". Па ајде сега подобрат
оваа некогаш толку малку само да се реплицираат мерките што се наменети.
Одам да ја преименувате оваа со Save As да hello1.c.
И сега ќе одам да декларирате променлива наречен име, така Стринг име,
и јас одам да се стави во него вредноста на понуда-unquote
Д-А-В-I-Д крупен цитат запирка.
И сега ќе одам да го замени "свет" со она што случаеви за низа?
% S.
>> А сега, колку аргументи треба да printf ја искористам оваа време?
Па две.
Па одам надвор од цитати.
Јас тип "име", откако запирка.
Но јас го направив нешто друго не е во ред тоа време.
Но, ајде да се претпостави дека не сум сфатат дека уште.
Дозволете ми да одам до тука.
>> И известување, исто така, јас сум добивање малку досадно на отчукување на "направи здраво 0" на сите
време "да" и сето тоа.
Значи, што се испоставува, во Линус можете да често хит на стрелка нагоре за вашите
тастатура, и ти всушност може да дојдете низ сите команди кои јас сум
извршена претходна само сега.
Значи, ако го направам тоа, нагоре, нагоре, има направи здраво 0.
Не сакам тоа.
Јас само сакам да го промени тоа да здраво 1 овој пат, Enter.
На крајот, кои ќе те спаси некое време.
>> Сите во право.
За жал, не е грешка.
Па дозволете ми да скролувате горе.
Ова изгледа како да сум навистина заклани оваа програма.
Мислам, мојот Бог, тоа е две линии на код, и нејзините 10 линии на грешки.
Но, изгледа на врвот еден во прв план.
Употреба на непријавена идентификатор стринг.
Никако не можев да значи стандард i N?
Не јас не.
Мислев стринг.
>> Но каде е стринг променлива тип прогласи, ДД велиме?
Па тоа е во CS50 библиотеката.
Па тоа не е доволно, во овие први неколку недели, само за да го користите
она Ц ни дава.
Јас сум исто така, ќе одат нагоре тука, и јас може да го стави над или под, но јас ќе
само го чувам азбучен да го задржи нешта уредно.
Одам да го вклучите cs50.h, кој е пре-инсталиран за
вас на CS50 апаратот.
И тоа е со отворен код, па дури и луѓе на интернет може да го користат на нивните
своите компјутери.
Но тоа доаѓа со CS50 апаратот.
>> Па сега дозволете ми да се врати и да го прекомпајлирате ова со направи здраво 1.
По ѓаволите.
Уште една грешка.
Дозволете ми да дојдете до првото, иако.
Оваа една е малку посложен.
Мулти-карактер карактер константа.
Тоа не е ми помага.
Но известување, ѕвекот е барем малку малку пристоен, при што со малку
зелени коректорски знак симбол, тоа е велејќи тука е местото каде што се зафркнав.
Зошто е тоа посочувајќи, со таа мала зелена стрелка, со една понуда следната
на мое име?
>> Па тоа е една од работите што само се користи за да се, особено ако сте биле
програмирање во Python, или JavaScript, или други јазици, каде што овој детал
не е важно.
Во C, тоа не е важно.
Ако сте за прогласување на низа, што е низа од 0 или повеќе знаци,
вие всушност мора да користат двојни наводници.
Па јас всушност треба да го промените ова назад да се отвори понуда, во близина понуда, со
двојни наводници.
Единечен наводник имаат свое место, но само кога сте користејќи индивидуални
карактери, но повеќе за тоа друг пат.
За сега, двојни наводници се неопходни.
>> Па сега, дозволете ми да се вратам на моето терминал прозорецот, направи здраво 1.
И кој е убеден?
Е оваа програма сега се случува да ги собере правилно?
OK.
Па три од нас мислат тоа.
Сите во право.
Enter.
А тоа всушност не.
Па нема грешки ова време, дури и иако оваа програма е добивано и малку
посложени.
Ако јас сега направи точка коса црта здраво 1, Enter, тоа се случува да се каже "Здраво, Дејвид."
>> Но, ајде да го стори третиот итерацијата на овој, каде што
Програмата е навистина динамичен.
Дозволете ми да оди напред и промена на датотеката име, само за конзистентност со
додадени фајлови: ќе имаат на располагање да ви потоа онлајн.
Enter.
И сега ќе одам да одат во и не чување "Давид" хард кодирани тука.
Што можев да сторам за да многу едноставно подобрување на оваа програма?
>> Јас може да се нарече getstring.
Тоа може да биде малку не-очигледно она што е за да се случи, па ќе одам
всушност да додадете друга линија, printf, и да каже име, дебелото црево, во близина понуда, само
да се даде на корисник брза на екранот.
И сега јас ќе одам да си тука, и јас сум случува да се користи мојата тастатура кратенка.
Одам да се оди нагоре, нагоре, и промена здраво 1 до здраво 2, Enter.
И за среќа, јас сум прави напредок.
>> И сега ќе одам да одат нагоре до точка коса црта здраво и
промени тоа до 2, Enter.
И сега мојата програма -
Јас ќе зумирате - е добивање на малку поубав.
Име ќе биде, да речеме Роб овој пат, Внесете, здраво, Роб.
Можеме да го направи тоа повторно.
Име, Лорен, Enter.
Име, Јосиф, Enter.
Име, ајде да се обидеме да биде тешко, Enter.
Eh.
Тоа не е навистина бубачка.
Па тоа е само малку грди.
Па можеби и ние може да го реши овој во иднина, не сега.
>> Но колку ќе ти е инстинктивно одат за решавање на
тој конкретен предизвик?
Тоа само изгледа глупаво.
Како да се избегне работи во потрага глупаво?
Па ние не можеше да стори, во ред, слушнав неколку на нештата, состојба и јамка.
Ние би можеле да ги користат, еден, состојба, да се провери она што е должината на стрингот
корисникот ни ја даде?
И ако е 0, тоа е само цитирам unquote, тие само притиснете Enter, потоа
можеби и јас треба да се развикам нив и да ги поттикне повторно.
Но како да е ги поттикне повторно?
Па, јас исто така слушнав јамка, и можев го направи тоа повторно и повторно и повторно
се прашува корисникот за истото.
>> Добро, ајде да направиме еден друг пример со користење на различни
функција во CS50 библиотека.
Дозволете ми да го затвори оваа датотека.
Дозволете ми да се создаде нов.
И јас ќе го наречеме adder.c, само затоа што тоа е лесно да се направи едноставни аритметички,
иако ова ќе биде комплетно underwhelming со она што можете да направите
со било кој современиот компјутер.
>> Но, дозволете ми да оди напред и сега -
Научив мојот лекција последен пат - вклучуваат cs50.h, вклучуваат stdio.h, int
Главната празнина, која, за сега, јас ќе само преземе во врска слепа вера, но ние ќе се претпостави
дека ќе се разбере она што тоа значи дека пред долго.
И јас одам да се каже нешто како "ми даде int".
>> И сега, како можам да се добие int?
Сакам на крајот да декларирате променлива наречен x од тип int и
чување во него цел број од корисникот.
Така што беше еден залак.
Но, ако некој сака да предложи, како можам да се изјаснам како цел број наречен X?
Int x.
>> Па тоа навистина е толку едноставно.
Ми даде Инт.
Наречи го тоа х.
Сега јас го користам задача оператор.
И како можам да чува од остави вредноста на корисникот?
Не сакам да се јавам getstring, очигледно, туку getint.
Никакви аргументи?
Бр.
Така што е отворен paren, во близина paren веднаш, а потоа и
точка и запирка завршува на линијата.
>> Сега дозволете ми да го направите ова повторно.
Ми даде уште една Инт.
Овој пат јас ќе сторам int, ајде да го нарекуваат Y, е еднаква на getint.
И сега дозволете ми да се направи нешто супер-едноставни како некои математика.
Па printf, збирот на% d е случаеви за Инт.
И% d, период, обратна коса црта-n.
>> Сите во право.
Така што не е всушност математика.
Но, ако јас сакам да кажам збирот на овој вредност плус оваа вредност е еднаква на оваа
друга вредност, како многу аргументи во Вкупно јас треба да се даваат printf,
на крајот?
Па четири, нели?
Оваа низа и потоа три вредности.
Значи x е првиот Сакам да бидам вклучени во првиот до% d.
y ќе биде следниот.
>> И сега јас вид на сакаат да се каже z, но z не постои.
Но тоа не е голема работа.
Затоа што ќе направиш инстинктивно, особено ако сте имале
графики калкулатор, она што го пишувате?
Како за х плус y?
Па тоа не е вистински променлива.
Тоа е само збир на два други променливи.
И тоа е совршено легитимно.
Ц секако го разбира едноставни аритметички вака.
>> Точка и запирка, спаси.
Сега дозволете ми да одат надолу тука и напишеш направи ехидна, Enter.
Нема грешка, па тоа е напредок премногу.
Напишеш ехидна.
И друга тастатура кратенка, ако почнете да се досадуваат
со сите команди -
ако почнете внесување на команда, како dot намалување на реклама, и тоа е каде што
здодевност клоци, обично може да погоди Јазичето за да имаат компјутер завршиме
одморам на фразата за вас, ако тоа не е двосмислена она што ќе дојде по рекламата.
>> Па дозволете ми да оди напред сега и ќе притиснете Enter.
Ми даде int, 1, 2, и за среќа, тоа е 3.
Но како и секогаш, тестирање на програми не треба да се намали на
само да го обидува еднаш.
Дозволете ми да се обиде корнер случај, како негативни 1, дај ми 1, и дека еден
проверки, како и.
И јас веројатно ќе сакате да направите некои повеќе ригорозни тестирање, но јас сум прилично
удобно со, каде што е во.
>> Па, сега ајде да се обидеме друга програма дека овој пат користи
малку други синтакса.
Дозволете ми да се создаде новата датотека.
Ќе му се јавам овој conditions0.c да се редат со некои примерок кодот онлајн.
И дозволете ми да оди напред и да прават вклучуваат cs50.h, вклучуваат
stdio.h, во главниот празнина -
OK.
Таму ќе одиме.
Ние си имаме стандардна boilerplate.
>> И овој пат ќе одам да се каже printf, "Би сакал int, ве молиме", само за да
направи брза малку повеќе пријателски.
И сега сакам да се добие int од корисникот.
Одам да го наречеме N ова време, само бидејќи n звучи како број.
getint, и сега, што прават Сакам да се направи со неа?
Па, ако n е - а јас ќе зумирате -
ако n е поголема од 0, сакам да го направите следново -
printf "Ти зедов позитивен број." Друго, јас ќе одам да напишеш printf "Ти
скинале негативни
број. "Сите во право.
Значи оваа програма, иако јас го направив тоа брзо, изгледа право синтаксички.
Дозволете ми да се обиде ова.
Направи услов 0.
Чини да се кандидира.
Состојба 0, внесете.
Нека си го даде int од 50.
Јас зедов позитивен број.
Ајде да ја обидат повторно.
Состојба 0.
Негативна 50.
Јас зедов негативен број.
>> Но сега, дозволете ми да земете она што ние ќе продолжиме повикувајќи корнер случај, што е повеќе
интересен случај кој мислите дека може да ви даде некои проблеми, 0.
Сега, јас сум прилично сигурен дека ова е еден од оние агол случаи каде нула е
ниту позитивно, ниту негативно, па ми програма, иако во синтаксички
коригираат - го компајлира, таа работи - не е логично точни.
Значи она што е едноставен фикс тука ако сакам да се открие, ако сакам да се справи со n
еднакво 0 одделно?
>> Па ако n е еднакво на 0, тогаш сакам да кажам нешто како printf "Ти зедов 0".
Дозволете ми да се обиде на оваа сега.
Дозволете ми да се вратиме тука, јасно мојот прозорец, и прекомпајлирате.
Hm.
Една грешка произведуваат.
Но, јас не сакате да се провери ако n е еднаква на 0.
>> Значи, повторно, уште една глупава работа да се навикнеш на, знак за еднаквост е
операторот за доделување.
Значи ова е всушност грешка во тоа, технички, иако на компајлерот
заштитени мене од мене, би технички биде копирање 0 во n, која
не е она што сакам.
Сакам да се тестираат за еднаквост со еднаква еднакви.
И така што сега може да биде мојата подобро решение.
>> Дозволете ми да всушност resave ова како, да речеме, conditions1, да биде нов и подобрен.
Па сега ако јас го прекомпајлирате ова, тоа ќе го направи услови -
Whoops - направи conditions1 точка коса црта conditions1, Внесете, "Би сакал int,
те молам. "Јас одам да си напред и тип 50.
Тоа е сеуште добар.
Негативна 50, сеуште добар.
0, и тоа, навистина, откриени дека јас зедов 0.
>> Така што повеќе да јас сега се прави со ова?
Па, ние сигурно може да направи повеќе сложени работи.
Но, она што јас би сакал да предложам е дека ние се стави крај на оваа белешка овде.
Ако ние се повлече до ова, ќе видиме, можеби, омилен цртан филм на твое
сè до денес можеби ќе никогаш не сте разбрале.
И тоа е за квалитетот на смеа што треба да се добие со CS шеги.
Па тоа е за право.
>> Но повеќе убедливо, мислев дека сум ни даде малку закачка за в понеделник.
Па ние сме започнале да го користат цели броеви.
Ние сме наведени да плови.
Ние дури и од двојки, кои, пак, да ви даде броеви
по децимална поени.
>> Но излегува дека плови и двојки, и, навистина, компјутери,
во основа, не можат да ги изразат некои вредности прецизно.
Ние знаеме од математика класи кои можете да има неограничен број на броеви по
децимална точка.
А ти дури и може да се стави вертикална лента да се каже овие трае вечно.
>> За жал, не можете да навистина направи тоа во компјутерот.
И така агол случаи се јавуваат.
На пример, да претпоставиме дека сте прави нешто финансиски.
Што го правиш по математика со процентите, и
со долари и центи.
И оние центи не нужно замена.
Па, излегува дека фракции на пени да почнете да додадете до кога
моделирани со компјутерскиот систем во таков начин што умен
луѓето можат да ги искористат предностите.
>> И оние од вас кои не го виделе, би сакале да ви даде 30 секунди закачка на
прекрасен филм познат како канцелариски простор, која ќе наслика слика на
проблем, ние ќе се справи со Првото нешто што во понеделникот.
Ако можеме да се подигне на обемот малку, јас да ви даде 30
секунди на канцелариски простор.
>> [Видео репродукција]
>> -Мислам, ти, ти не се покажува и можеш да се задржи вашата работа.
>> -Всушност, јас сум се промовирани.
>> -Можев да програмираат вирусот кој би рипувате тоа место надвор голема време.
>> -Па, како тоа функционира?
>> -Секој пат кога има некој банкарски трансакции каде камата се пресметани, и таму
илјадници на ден, компјутерот завршува со овие делови од гласовите.
>> -Но, јас не одам да прават ништо нелегално.
>> -Нелегален?
Samir, ова е Америка.
>> -Ние треба да се колнам во Бога.
>> -Ако никој не знае за ова но нас, во ред?
Нема членови на семејството, без девојки, никој.
>> -Се разбира.
>> -Договорено.
>> T-Дон грижете се, човече.
Јас нема да кажам на никого или.
>> [Крај видео репродукција]
>> Дејвид MALAN: Значи ова, тогаш, е CS50, тоа беше канцелариски простор, и тоа ќе се сите
да има смисла во понеделникот.
Те видат тогаш.
>> Наратор: На следниот CS50, Роб прилагодување за да се биде надвор од
Харвард оброк план.