[Музички] Ова е CS50-- Харвард воведување Универзитетот на интелектуална претпријатија на компјутерски науки и уметноста на програмирање. И моето име е Дејвид Malan, и Јас бев само размислување ова утро, тоа е неверојатно 20 години и денес бидејќи јас последен пат седеше каде што вие момци се направи сега. Тоа беше во 1996 година. Бев втора година, а јас бев преземање CS50 за прв пат. И јас не слегол до нервните да го земе себе Новак година, делумно затоа што од времето. Компјутерски науки за мене беше вид на се допаѓа, meh. Бев малку geek расте нагоре, но јас навистина не имате било какви интелектуални интерес во она што се појави да биде само еден куп на луѓе програмирање на сите на време. И јас се плашев да бидам искрен. Се разбира компјутерски науки и повеќе генерално имале и до одреден степен, се уште има оваа репутација на полето на пазете се, само затоа што толку многу од нас се запознаени со тоа и не е сигурен за тоа. И навистина не беше се додека не купивме оваа класа дека сафомор fall-- па дури и тогаш, јас само запишани бидејќи professor-- една од моите први ментори, Брајан Kernighan сега Princeton-- ми дозволи да се помине класа пропадне. И навистина, тоа е зошто денес ние им овозможи и поттикнување на студентите да се земе оваа класа са / unsat. И само тогаш, од страна на крајот на семестарот не сфаќам како, Леле, ова не е толку непознато поле. Всушност, ова беше многу зајакнување на теренот, и повеќе возбудливо, особено подоцна, како што се курсеви во Драмски уметности 101 и Латинска А а потоа на крајот град училиште археологијата, Дали јас навистина почне да се види раскрсниците на ова поле, компјутерски науката, со економијата, природните науки, уметноста, медицината, и слично. И така тоа е она што е толку уредни за компјутерски науки во крајна линија, како што се надеваме дека ќе see-- е неговата применливост на овие други области, и како може да се некои од денешните и семестар идеи и практични вештини Вратете се на свој домен, а всушност се истражуваат оваа раскрсница на либерални уметности и науки. Значи 73% од вас, ако минатата година е некаква индикација, никогаш се разбира CS порано. Значи, ако, како мене, ќе се чувствувате малку исплашени, или искрено не сте баш сигурен зошто сте дури и тука. Можеби сте само го следеле некои пријатели во текот на Сандерс во моментов. Тоа е сосема во ред. Целта тука е да се поврземе вас и да ве уверам дека ако не се погледне лево и десно, си оди за да се види соученици со како малку или колку искуство што ќе се може да имате. И навистина, ние ќе делиме некои статистички податоци, денеска за тоа што демографијата на класа барање обично изгледа. И како што додаде reassurance-- и ова значи, бидејќи отидов во текот неколку години ago-- во Наставната програма на курсот е this-- дека она што на крајот прашања во овој курс не е толку многу каде што ќе се Регистрација во однос на своите соученици, но каде што, во 11 недела, на крајот на семестар, да завршат во однос на себе во недела 0, што е каде што сме денес. И тоа е она што сфатив пред сите тие години. И знам многу класи кажам ова, но тоа е особено точно во компјутерската наука. На крајот на денот, оваа област е непознато како што беше за мене и може да биде за вас, е навистина само за решавање на проблемот. И како такво, тоа не имаат овој применливост да се добие други области. И всушност, ако ние се обидовме да го дестилираат што значи тоа, ова е за решавање на проблемот во својата суштина, ако смеам. Има input-- така што и е во тоа што се обидуваш да се реши. Има излез, што се надевам решение за тој проблем. И тогаш, како што би велат во компјутерски науки, има оваа црна кутија во средината во која вие не мора да треба да се грижи за тоа како тоа функционира. Ти и самиот крајот можеби се спроведе она што го пишува во кутија. Но, за денешниот цели и повеќе генерално во животот, сите што се грижат за е дека овие проблеми се решени. И она што на овој курс е во крајна линија за е истражување пресекот на овие влезови и излези, и овие т.н. алгоритми, како што наскоро ќе видиме, кои ја спроведуваат она што е под таму, хауба. Но, овие влезови и овие outputs-- што тоа всушност значи? Па, на крајот на денот, ние треба на некој начин за прикажување на информации. Ова е особено точно во компјутер, кои како фенси и сложен, како што може да се чини, е прилично глупава уред. Таа ги зема electricity-- без разлика дали од кабел или батерија како input-- а потоа го произведува некои preprogramed одговори на екранот. Но, како да се добие од почеток до крај таму? Па, што е проблем да се реши? Па, можеби и ние би можеле, во на почетокот на секој семестар, се обиде да преземе посетеност во соба се допаѓа ова. Па јас може да се направи, како еден, два, три. Или, ако јас го направив да вид на се следи на myself-- да ги пратите на things-- Јас брзо би можеле да работат надвор од прсти. Па јас само може да се направи хаш marks-- еден лице, два, три, четири, пет, шест, седум, осум. И сите ние имаме веројатно направи тоа, без разлика на вашите раце или на парче хартија. И ова е всушност само нешто што се нарекува унарен notation-- каде што, ако имате само една буква во вашето писмо, еден или хаш белег во овој случај, за секој влезот кој сакате да се избројат, ќе треба да се спушти еден од овие letters-- еден од овие знаци. Во ред. Тоа е во ред и добри и не е толку комплициран. Но, компјутерите не се сите дека многу посложена. Всушност, повеќето од вас веројатно знаат дури и ако не сте навистина смета она што ова значи, дека компјутери само што разбираат нули и ones-- т.н. бинарен систем. Ние, луѓето, од друга страна, се толку многу пософистицирани доколку како што се разбере нули преку топло. Но, дури и ако бинарни е, на прв поглед, не се сите толку познати, се испоставува дека е исто како и системи и идеите кои ние веќе знаеме. Така на пример, сметаат дека ова. Ова е само низа од симболи. И на сите вас, кога гледајќи во него, веројатно мислам 123-- ништо навистина интересно таму. Но зошто е овој број, 123? Овие се само хиероглифи на screen-- само шеми дека некој може да го привлекоа или напишале. Но, ако сте како мене, Веројатно се сеќавате од основно училиште дека има вид на колони или места тука. Има место за еден и Десет место и сто е место. И причината поради која ова е 123 и не е само модел на три симболи е затоа што, се разбира, ако ние имаат еден во место стотици, го направите математика 100 пати еден, а потоа две од десет е место. Значи тоа е 10 пати 2, а потоа три на своето место и тоа е 1 пати 3. И кога ќе додадете сите овие горе, на Се разбира, ќе добиете 100 плус 20 плус 3. Па почнавме со само еден модел на symbols-- на alphabet-- но потоа одбележан значење излез тоа по пат на овие колумни. Па, излегува дека компјутери навистина не се сите што се разликува од вас и мене. Но, наместо да го користите моќта на 10, така да се speak-- 1, 10, 100, 1000, 10.000 место и така forth-- тие, всушност, само го користите моќта на 2-- така еден, 2, 4, а потоа ако се стави повеќе цифри, 8, 16, 32, 64, 128, и така натаму. И така ова е како компјутер ќе претставува број 0, Исто како и ние луѓето. 0, 0, 0-- и веројатно може да се погоди она што модел на нули и единици, ако може само компјутер зборува 0 или 1-- што модел ќе се претставуваат бројот и ние, луѓето знаат како 1? Yeah-- 0, 0, 1. Во ред. Значи 0, 0, 1 е како ние ги претставуваме 1, така што би можеле да бидат склони потоа да ја претставува број 2, ако имате место четири и местото двете е како на едно место, може да се каже, добро, ако имавме 1 во своето место, и сега сакаме да брои до 2, можеби да го направите ова и да го оставите ова да биде нула. Но, се разбира, тоа не е како од децималниот систем работи или. Ако се стави цифра во и двете од овие столбови, имаш да се направи на аритметиката. Значи она што го направив број случајно само претставуваат? Така, тоа е 3, бидејќи 2 пати 1 плус 1 пати 1, се разбира, ни дава три. Па ова ќе биде два. Малку вид на flips, така да се каже, бидејќи 0 станува еден, слично на 9 улоги во текот на и станува 0 време на носење на 1. Ова тогаш ќе биде три се разбира. Four-- Уште една интересна работа се случува, каде што оние превртам и носење на 1, така да се каже. Значи ова, се разбира, е 4. Но, ако брзо напред сега, што е најголем број се случува да биде дека компјутерот може да претставуваат? Така, тоа е само седум во овој случај, нели? Затоа што имаат еден во четири, еден во два, еден во еден. Значи тоа е 4 плус 2 плус 1. Така што ви дава седум. И навистина, тоа ќе изгледа на прв поглед дека компјутерите можат да се избројат не повеќе од тоа. Но, тоа секако не е точно. Што ние луѓето го прават кога сакаме да се смета како повисока од 999? Само го носат еден и само додадете четвртата цифра на левата страна. И така навистина би можеле. Ние би можеле да имаат осум е место и местото на 16-ти е, и 32 е местото, 64, 128-- и вие може само да продолжи да оди натаму до бесконечност. Значи овие нули и ones-- т.н. бинарни system-- се она што компјутерски научник би генерално се јавите малку, или во бинарна цифра. Но, сега, како да се добие од концепт или графика од овие работи на вистински компјутер? Се чини дека скокнеш еден чекор тука. Па, само влез на крајот на денот, на мојот лаптоп тука е овој проток на електрична енергија. Дури и ако тоа е долго пат откако сте размислувале за или никогаш не размислувале за како електрична струја, има електрони течат во или надвор, и тоа е мојот вид на влез. Значи, ако тоа е сето она што ние сме добива како влез тука, што да правиме со тие информации? Па, ние може да се размислува на нула, како само отсуство на електрична енергија. Ништо не е flowinw, ништо не е се движи, ништо не се случува. Тоа е само стандардно state-- нула. Но, ако постои тече струја, зошто не ние само произволно, но на глобално ниво постојано, повик дека еден. Па едноставно со тоа што нема власт, имаме нула, да власт, имаме one-- нема моќ, да власт. На тој начин, со користење на нешто повеќе физички или електронски ние започне да го имплементира овој поим на нешто или се една или нула. Всушност, ние само може да го направи овде. Па еве, јас не се три, но осум светилки, од кои секоја има своја прекинувачот. И така, ако сакав да претставуваат бројот седум тука, Јас би можеле да го вклучите овие три светилки. И навистина, во внатрешноста на мојот компјутер е милиони, милијарди работи кои се само помала од онаа, наречен транзистори, прекинувачи, која што ја вклучите или исклучите. Значи овие се релативно big-- big-- прекинувачи во внатрешноста на мојата laptop-- многу, многу, многу, многу повеќе прекинувачи. Но, сите тие го прават е токму that-- се претвори нешто, да се претвори нешто надвор. И како такво, компјутерот може да претставува, со оние милиони или милијарди на транзистори, многу, многу нули и единици. И таму е друг уред сепак тоа Ви овозможува да ја запази информацијата на долг рок, така што кога ќе се повлече приклучете го, да не го загуби. Но, тоа е приказна за друг ден. Па што да правиме со овие делови? Можеме да само да се земе од притисокот на me-- можеби некој сака да дојде до тука и да понудат до демо? Видов прв оваа страна. Како се викаш? MADAY: Maday. Дејвид MALAN: Maday, ајде до. Мило ми е што те запознав. MADAY: Убаво да ви се исполнат. Дејвид MALAN: Ајде на овој начин. Јас не ќе мора да ви усна нагоре. Во ред. Па еве, имаме, notice-- еден, two-- ние ќе се уреди кои out-- еден, два, четири, осум, 16, 32, 64, 128. Ова е намерно. Има осум бита here-- бинарни digits-- нули и единици. И малку е корисна единица на measure-- како на корисни единица мерка врз себе. Обично сакате најмалку осум од овие работи, a.k.a. бајт. Значи имаме бајт на битови тука. Значи, ако сакаме да ви предизвик со тоа, на пример, како се најават, во бинарен, оваа вредност here-- 42. Сакате да се земе прободе во тоа? MADAY: [Беззвучен]. Дејвид MALAN: Да, само притиснете го мали бели прекинувачи во предниот дел. И сакате да се пишува од 42 години, и за посегнување ова е CS50 стрес топката ако се ова. Во ред. Па имате 32. Ние се случува да треба 42. Значи тоа е осум, па тоа е 40. И excellent-- многу убаво направено. Ти благодарам. [Аплауз] Во ред. Значи имаме уште еден стрес топче. Ајде да го направиме ова уште еднаш, ако може. Една друга волонтер? Слободен стрес топче, бесплатен стрес топче. ДОБРО. Овде во средината на теренот, Дали сакате да се сруши? Во ред. Знам. Таму ќе одиме. Значи броевите here-- доаѓаат надолу. Како се викаш? DAVEY: Дејви. Дејвид MALAN: Дејви. ДОБРО. Качи, Дејви. Мило ми е што те запознав. И она што се случува да имате spell-- ако може да се провлекува и таму за само една moment-- е бројот 50. Но, но, но, но, но, тие се основно училиште магнети со причина. Само што влегов малку потешко, во ред? Има уште осум. Во ред. Значи она што го имаме таму? Имаме 32. Ница. 32 плус 16 ни дава 48-- толку блиску. И прекрасно. Честитки до Дејви, како и. [Аплауз] Во ред. Значи можеме да го направите тоа на целиот ден, и тоа не се сите дека многу повеќе интересни и повеќе предизвик. Но, тоа е навистина point-- е како релативно едноставен што е, на крајот на денот, што е компјутер го прави тоа за да ја запази информацијата, за чување на влезови и на крајот чување или претставува излези. Но, бројките сами по себе не се сето тоа интересно. Па луѓето, пред неколку години, одлучи, знаеш што? Тоа би било убаво ако компјутерите не се само калкулатори за аритметички операции, но, всушност, може да ги правите нештата како обработка на текст, или e-mail, или повеќе модерна инкарнации на овие видови на технологии. И така на светот одлучи арбитрарно, туку универзално, дека ако сакате да го зачувате во главниот град буквата А во компјутер, знаеш што? Ајде само сите се согласуваат да ги чувате некои модел на нули и ones-- bits-- што на крајот претставува децимален број 65. Ние само ќе се договорат за тоа. 66 ќе претставува Б, 67 ќе претставува C, и таму е гроздовете на други модели на нули и единици или основни броеви, кои би претставувале други букви уште. Значи, ако сте вид на ментално апсорбира тоа за момент, Јас намерно да постават преку Јас, каде H 72 и јас е 73. Ако компјутерот тогаш, во контекст на програма за обработка на текст или e-mail, откри под хауба да имаат Овие модели на bits-- модел на битови што претставува 72, потоа 73, па 33-- што би можело тоа да се пишува во таа програма? Значи здраво, а потоа нешто. Ние не мора да знаете, но навистина 33-- не на табелата earlier-- беше едноставно фантастичен точка. Така беше 72 H, 73 Јас, 33 се случува да биде извичник уште. Но, тоа е во ред и добро, и во фактот што во денешно време, наместо само користење седум или осум битови, благодарение на нешто наречен Уникод наспроти на ASCII назад во текот на денот, ние всушност може да претставува дури и повеќе интересни ликови од само овие оригиналниот текст на англиски пристрасни букви. Но, исто така, може да претставува дури и neater работи како бои. Ако некогаш сте слушнале акроним RGB, црвена, зелена, сина, кои само значи дека секој компјутер обично се користи три сета на bits-- одреден број на битови кои претставуваат голем број за колку црвена сакате, друг сет на битови за колку зелени сакате, а друг во собата број за колку сини што го сакате. Па голем број значи многу црвена, мал број значи дека нема црвена боја. И така овие се вид на средни вредности тука. Па да ми даде некои црвени, дај ми некои зелена, и да ми даде малку сино. И ако се меша овие три нијанси на боја заедно, во овој случај, ќе го добиете овој лигави сенка на кафеава или жолта. Но тој модел на осум плус осум плус eight-- така 24 bits-- од лево кон десно, е како компјутер ќе се претставуваат дека одредена боја. Сега ова е само една точка на екранот. Ако се погледне навистина во близина на вашиот телевизор на вашиот компјутер, ќе видите точките или пиксели. И ако имате целата мрежа на пиксели, хоризонтално и вертикално, имате слики. И тогаш, ако се земе на сликата, а потоа се мијат покажеш друга слика, уште слика, друга слика, друга слика, навистина брзо, вие се разбира имаат филмови. И така се забележи каде почнавме. Почнавме со овие нули и единици. Работевме од таму да децимални броеви, како ги претставуваат. Сега имаме букви од азбуката. Но и во други контексти, чекај, ние може да се користи уште неколку парчиња и претставуваат бои. Веднаш штом ќе имаат способност да ги претставува бои, ќе имаат способност да ги претставуваат фотографии и анимирани GIFs и други такви карактери на екранот. И кога имате еден куп на слики летање од страна на човекот одеднаш, тоа изгледа како филмови, и така да се видеа, како и. Значи со користење на овие многу едноставен примитивците правиме имаат начин на претставување на крајот на сите овие форми на медиумите. И ние сме апстрахирани повторно и повторно и повторно, се додека не се од најниското ниво на ова највисоко ниво. Така што ни го дава овој општа идеја на апстракција. Но почнавме тука. Еве сега, ние може да претставуваат во компјутер нашите влезови со нули и единици, нашите резултати во нули и единици, но она што се случува во внатрешноста на кутијата? Тоа е каде што компјутерски науката станува интересно. Тоа е каде што, всушност, ја носите вашата умови да се има да се решат проблемите. Ние сега може да се предвиди, за остатокот на семестарот, да. Знам како бинарни дела. Се сеќавам како ASCII или Unicode-- мапирање на letters-- дела. И тоа сигурно се издвојува на разумот дека ние може да претставува црвена и зелена и сина, и претставуваат мултимедија, како и. Но, ова е интересни работи. Тоа е она што го прави некој способни за решавање на проблемите. И еден таков проблем ние сакаме да се направи, навистина, е преземање посетеност, или тоа алгоритамски. И повторно, би можел да го направите тоа. Јас може да се направи еден, два, три, четири пет, шест, седум, осум и девет. И можев да го запишам надолу за да ги пратите на тоа. Но тоа е само како ќе претставуваат информации. Или би можел да го направите ова faster-- два, четири, шест, осум, десет, 12, 14, 16, 18, 20, 22-- таа се чувствува како два пати како што е брз, но тоа е се уште случува да се земе во целина многу време. Но, се покажа, ако се уште се потпора друг resource-- и навистина компјутери овие денови имаат повеќе процесори или мозоци. Излегува компјутери може да направи многу работи одеднаш, и навистина, ние во оваа соба, може да претставува токму тоа. Така, тоа е малку социјално непријатно, но ако сакате хумор мене за само процес од три чекори, да ме прашуваат сите во место има само да застане за момент. Стани. Така што мислам за себе, број one-- па секој во оваа соба, освен на луѓето кои не задолжува, се размислува број еден. Така што е вашиот број во моментов. Тоа е првиот чекор, или како компјутерски научник или програмер обично ќе направи, ние ќе да почне пребројување на нула. Ако најмалиот број што можеме претставуваат со овие светилки е нула, со само оставајќи ги сите надвор, јас како и само почнете сметано од нула, наместо еден. И така тоа е она што компјутерски научници направи. Значи чекор нула, да застане и да мислам на број еден. Следниот чекор е this-- пар натпреварот со некој кој стои и додадете броеви заедно. Прекрасно. Така што во овој момент во времето, буквално секој учесник мисли на бројот 2, освен за едно чудно лице, ако имаме непарен број на луѓе во соба. И сега третиот чекор тука ќе се this-- еден од вас треба да седнат. Еден од вас треба да седнат, а ако се уште стои, вратете се на чекор еден. Во ред. Во ред. Така се повеќе и повеќе луѓе треба да се седи долу. Забележете дека ова е предизвикана на loop-- некој вид на циклус. Некои од вас треба да биде чудно заглавени, вратете се назад и напред меѓу еден чекор и два, еден и два, еден и два. Во ред е. Нашиот прв бубачка. Ние ќе се справи со тоа. Во ред. Дозволете ми да се обиде да го поттикне работите заедно. Во теорија, само едно лице стои како и секој продолжува да го спарите надвор. Но, дозволете ми да ги забрзаат работите со луѓе се уште стои. Што бројот мислиш на? 46. ДОБРО. Оди напред и да седнат. Вие момци се уште стои. Кој уште стои? Што бројот мислиш на? ДОБРО. Па ние ќе се вратам на вас. Во грбот? Што е тоа? 22. Добро некој друг до top-- је? 34. ДОБРО. Овде на мојот right-- тука? 132, многу убаво. 22? ДОБРО. И кој уште стои? Тука? 46, многу убаво. 72. Не можам да го одложи многу подолго. Да? 30, убаво. Тука? 23? 23. И мислам дека е секој освен вас момци, без притисок. Ох почекај. 28? Само осум. ДОБРО. Само осум. Тука? 30. 23. 24. 18. Ова е најлошата имплементација на овој алгоритам било кога. ДОБРО. Значи некој друг? Некој друг? ДОБРО. Уште едно. 16? ДОБРО. 16. Во ред. Значи, ако јас не се пропушти некој во сјајот тука, кога ќе притиснете Enter, што ќе видиме, алгоритамски, на вкупниот број на луѓе во Сандерс. Затоа што, повторно, тоа е како сите како што седна, помина надвор вашиот број на некој друг, на некој друг, на некој друг, така што во теорија, На крајот, само една непријатна лице треба да се остави да стои. Но, тоа е во ред. Ние изрече работите рачно. Тоа е особено тешко да се види во овој простор. И вкупниот број на луѓе Сметаме дека има тука е 546. Вкупниот број бев раце од страна на наставата соработници, кој го направи стариот училиште бавен начин, беше 820. [Се смее] [Аплауз] Во ред е. Па сигурно тогаш, постојат овие грешки. И тоа е во ред. И така се сетам на овој првиот пат кога нешто ви пишувам не мора да работат. Ова ми се случи и тука. Но, ајде да разгледаме како да применувате оваа идеја за нешто може да се гледа пред, за кое ова е старата школа технологија here-- навистина голема книга телефон. И да претпоставиме дека овој телефон книга има 1.000 страници и 1.000 имиња и броеви по азбучен ред во него. Па, ние би можеле да вид на се однесуваат на сличен Идејата на оваа многу физички проблеми, само ме користи. Јас само вид на измамени од проширува на сите вас со многу, многу различни процесори или мозоци извршување на некои алгоритам. Но, ако тоа е само малку стари мене, јас се уште може потпора дека иста суштина на една идеја на поделба и освојување на тој проблем повторно и повторно, при што половина од вас, половина од вас, половина од вас, половина од вас, теоретски чуваат седнува, додека бевме оставени, теоретски, со само едно лице. Значи во оваа старата школа technology-- ние не треба оваа map-- ова старата школа технологија, ние би можеле да почнете да барате некој како Мајк Смит, една страница во време. И гледам дека не, Мајк не е овде. Јас сум уште во делот А. На крајот, јас се наоѓам себеси во делот Б. И ова е algorithm-- чекор-по-чекор инструкции. Почеток на страницата на почетокот и една во исто време, да се погледне за Мајк Смит. Дали е ова correct-- ова алгоритам или пристап? Да, тоа е точно. Ако Мајк е тука, на крајот Ќе се дојде до него. Но, тоа не е ефикасен. Тоа е очигледно многу бавно. За да можам да се потпора на исто twosies пријде. Јас може да се направи вид на две деца, четири, шест, осум, 10, 12. Тоа е два пати побрзо. Јас ќе одам да се дојде до Мајк побрзо, ако тој е таму. точно е тоа? Да, но слушнав little-- бр. Сега слушнав бр. Да. Има бубачка потенцијално. Можеби Мајк само случајно се сендвич меѓу две страни, бидејќи јас сум летање преку Оваа две во исто време. Па барем ние треба некои вид на условна поправам. Јас треба да се каже, еј, ако јас се погоди некој кој име почнува со T наместо на една S, Подобро да се зголеми двојно назад барем една страница. Значи кабриолет во прв, но исправиме. Но, никој од нас не се случува да се погледне за Мајк Смит преку 1.000 страница телефон резервира една страница во време. Што е нормален човек ќе го направи? Ви се случува да одат на С, ако знаеше каде што S е. Може да оди приближно на средината или малку искривена кон крајот. И јас со нетрпение овде и Јас сум во правец М. Но она што го знаеме за овој проблем сега, дека ние не мора да знаете пред да со сите од нас само се брои еквивалентно? Па, Мајк е јасно ќе да биде во оваа половина од книгата ако тој е тука на сите, бидејќи тоа е сортирана. И така можете многу dramatically-- [Бори] Знам. [Аплауз] Тоа е, всушност, навистина лесно, ако го прават тоа по 'рбетот таму. Но, тогаш може да се фрли половина од проблемот далеку. Сега, јас сум лево со истото problem-- најдете Мајк Смит во телефонски book-- но сега на телефон книга започнува во М и оди до Ш, но тоа е половина како голем. Но, тоа е она што е импресивен. Исто како и во теорија, момци, кога сите што седна само половина во еден момент, проблемот доби половина толку голема, половина толку голема, повторно и повторно. Така стана овој проблем истиот проблем, но половина толку големи. Сега е проблем од 250 страница. Веднаш штом ќе се реализира, ох, јас сум во делот Т случајно. Сум отишол предалеку. Јас може да се фрли дека половина на телефонот книга далеку. Сега, јас сум се сведува на четвртина од проблемот. И може да се повтори, повторувам, Повторете се додека, во теорија, ти си замина со само една страница. И ако Мајк е на оваа страница, Јас сега може да се реши овој проблем. Но, колку брзо никако не можев да се реши тоа? Во првиот случај, тоа ме зеде како Можеби 1.000 чекори да се најде Мајк Смит. Тоа може да се преземат me-- Јас зедов телефонот книга и почнав да барам една страница во еден момент, и Мајк може да биде 1.000 страници подоцна. Вториот пристап можеби ме носи 500 чекори, бидејќи јас сум летање преку две во исто време. И третиот пристап, иако, тоа е особено моќна. Но, ајде да се разгледа она што, всушност, направи со овој трет пристап. Ќе се она што јас ќе се јавам само овие изјавите тука, едно по едно време. Земам телефон книга. Отворете до средината на телефонот книга. Погледни на имиња. И тогаш работите се малку повеќе интелектуално интересно, Ако пак во едноставна. Ако Смит е меѓу имиња на тој тековната страница, тогаш направи нешто условно. Тоа е како да вилушка во патот. Повик Мајк. Ако Мајк е меѓу имињата на оваа страница, наречена Мајк. Но, само ако се редат четири линија дрво, ако сакате, е точно. Одговорот на тоа прашање е да. Друго, ако Смит е во почетокот на book-- со други зборови, ако јас сум во правец М и јас сум во потрага за некој да лево, тогаш што треба да направите е нешто многу слични. Јас тогаш треба да се отвори до средината на левата половина од книгата. Така одат лево, а потоа вратете се на чекор два. Се погледне на имиња таму. Значи со други зборови, го прават истото, но на проблем и тоа е се преполови. Знаеш што друго? Ако Смит е подоцна во книгата врз основа на страница Јас сум во потрага на, отворен за средината на десната половина на книгата а потоа се врати повторно на чекор два, else-- таму е четврта можност тука. Мајк или тука или на лево односно во право или не постои. И тука ние подобро да се разгледа ова. И всушност, ако некогаш сте имале вашиот компјутер само се сруши на вас, тоа е понекогаш, но не секогаш, резултат на само еден човечки програмер не реализација, о пука, има всушност ова четврто сценарио. И ако не го пишувам кодот да се справи со тоа сценарио, понекогаш не знаете што може да се направи на компјутерот. И навистина програма може да се сруши. Но, во овој случај, јас мислев за тоа, и јас, рече, друго се откажат, затоа што тоа е четвртиот логично можно сценарио. Сега, ајде да додадете некои речник, така што може да почне да фрли околу условите што инаку се доста интуитивен. Сите од работите Тукушто осветлени во жолто тука, Јас сум само се случува на функции или процедури. Тие се само вид на активности. Па ги собереш, се отворени, погледнете на, јавете се отворени, отворен, quit-- овие се само акции, или ќе нив, повеќе формално, функции. Во меѓувреме, сега со жолта боја, Сум истакна работи that-- ајде да почне повикувајќи ги условите или гранки. Тоа се одлуки точки каде може да оди на овој начин, на овој начин, или некој друг правец уште. Така тие ќе бидат услови. А сега ова е малку познавач. Ајде да се јавите на овие прашања Булова изрази, по некој со презиме bool. И Булова израз е само нешто тоа е точно или неточно, да или не. Така, тоа е прашањето чиј одговор ќе грижат за, со цел да се во состојба направи decision-- се врати одговор, и потоа оди лево или десно, или нешто сосема друго. А потоа и на крај, овие линии here-- се врати на чекор две, врати се назад на чекор two-- можевме спроведување на оваа идеја во различни начини. А потоа и оние од вас со програмирање искуство може да се направи или може да се замисли тоа поинаку. Но, за денешниот цели, тоа е Самата идеја што е важно. Ова е поттикнување на она што ние генерално ќе се јави на loop-- некој вид на циклус, бидејќи тоа е што ми направи нешто повторно. А сега, ајде да се разгледа колку е добар овој алгоритам е. Тоа е точно. Ако Мајк е во книгата, тоа е една од овие четири scenarios-- повторно и повторно И повторно, ние ќе го најде. Но колку е добар е тоа? Па, ние немаме да биде премногу формални тука. Но, ајде да заговор нешто, x и y, за да се добие чувство на обликот на овој проблем. На x-оската е тука големината на мојот проблем. И тие на y-оската тука ќе биде време да се реши. Па можеби ова е бројот на страници. Можеби ова е секунди или страница turns-- сеедно. Сепак сакате да се брои е што ќе ја претставува оваа слика. И тоа првиот алгоритам, јас ќе одам за да се опише само како права линија. Ако има n страници книгата телефон, тогаш тоа може да ме земе како многу како n чекори да се најде Мајк. Ако Веризон или телефон на компанијата додава уште една страница на следната година, тоа може да ме земе уште еден step-- уште една единица на време да се најде Мајк. Па таму е само овој еден на еден сооднос. Тоа е патека права линија. Во меѓувреме, тој втор algorithm-- ако сум ќе двајца во time-- две, четири, шест, осум или double-- минува низ страниците два пати во исто време, две во исто време, тоа е сепак права линија. Има сега една до две односот, но само малку пониски. Значи, ако има оваа многу страници на табелата тука во жолта, дека може да ме земе овој многу чекори или секунди, во спротивно ќе ме земе двојно повеќе на црвената линија. Но, на зелена линија е вистинскиот готова брза. Тоа е она што ние обично јавете се на logorithm-- најавите на n, каде што n е бројот на страници. Но, тоа е во форма што е важно денес, бидејќи ние немаме да ни помислувај на заговор поени. Размислете за екстремно сценарио. Да претпоставиме дека Веризон утре удвојува број на страници во тој телефон книга, од 1.000 до 2.000. Во првиот алгоритам, јас може да се трошат екстра 1.000 чекори во потрага по Мајк, само затоа што Verizon двојно се зголеми големината на книгата. Вториот algorithm-- тоа би можело да да ме дополнителни 500 чекори. повеќе од 1.000 страници, одам двајца во time-- уште 500 чекори да се најде Мајк. Но, таа трета алгоритам е вид на магично. Verizon дуплира бројот страници од 1000 до 2000, но колку повеќе чекори прави ме однесе да се погледне за Мајк? Тоа е само еден, бидејќи јас само може да солза на телефонот книга уште еднаш од проблеми со 2.000 страница на 1.000 страница проблем, и Voila. Сум се направени голем залак од него. И ако одите навистина екстремен, Претпоставувам дека телефонот книга Компанијата имаше нешто лудо како книга телефон 4 милијарди страница. Па колку чекори може да се земе да се најде Мајк Смит во 4 милијарди страница книга телефон? Тоа е голем број, но само 4 милијарди долари за да 2000000000-1000000000 за да се 500 милиони евра, 250 million-- уште звучи како големи броеви, но јас сум многу брзо добивање на помали вредности. И всушност, ако го направите математика право, јас само може да се подели 4 милијарди од околу 32 пати пред Јас се сведува на само еден. Значи, ако тоа именик беа 4 долго милијарди страници, не е голема работа. Во рок од неколку секунди, а можеби и 32 секунди, би можел да го подели на половина и на крајот се најде Мајк или заклучи дека тој не е таму. И тоа е суштината на algorithm-- добар алгоритам. И тоа е една од целите на класа како ова, се обидувам да дознаам како можам решавање на проблемот не е само правилно, како што секогаш знаеше како да го направи еден страница во time-- но правилно и добро. Како да се дизајнира добар решенија за проблемите? Значи, да се земе еден миг тука и да ви даде чувство сега на CS50 текот itself-- воведе членови на персоналот неколку курсот. Непосредно пред 02:00, ние ќе земе кратка пауза така што оние од вас кои може да се трговски патка надвор и да се погледнеме некои други класа и види го остатокот од овој онлајн. Но, за сега, дозволете ми да се воведе CS50, самата класа, а особено она што е ново. Така, минатата пролет, ние помина доста time-- персоналот на курсот и I-- размислување за тоа што е CS50 ние сакаме да биде, и да се вратам на првата принципи, така да се каже, да се разгледа што е тоа што сакате овој курс за да изгледа и да биде како за своите студенти. И така што ќе видите во проблемот поставени на нула, како и, на покана да ги погледне во тоа URL, кој ги сумира некои од мотивите зад следниве карактеристики на есента 2016 година. Па како може да се береше класи од TL: судбина DR, денес на програмата, како и од каталогот разбира, оваа година во CS50, сте се очекува да присуствува само на today-- така заврши работата добро done-- и последното предавање на 21-ви ноември. И ти си добредојдена, но не се очекува да посетуваат оние предавања во средината, затоа што она што го правиме оваа година, е снимање во реално време материјал на курсот. Значи се што ќе остане сегашните и инкорпорирани најдобро што can-- актуелните настани и разговори, кои луѓе би можеле да да се има во индустријата во светот, но што тој материјал на располагање, како резултат на тоа, дури и earlier-- заедно со целиот текст записници и Searchability и линкови до други ресурси. И навистина, ние сме биле тврдејќи дека за некое време а ние сега верувам дека ова, дека ние може да се создаде, дигитално, повеќе извонредно, повеќе привлечни образовни искуства, за разлика од на собирање тука некои 23 пати лично, слух некој ми се допаѓа едноставно зборуваме за компјутерски науки, за разлика од ангажирање поактивно. Па ќе видиме во силабусот на предметот е скица на семестарот тука, заедно со предавања кога ќе се снима, на кои сте добредојдено, но не се очекува, и кога тие ќе да бидат објавени на веб-страницата на курсот. И она што ние ќе направиме тука Среда, почнувајќи од следната недела, е многу повеќе интимно, со само оние луѓе кои сакаат да учествуваат, е т.н. прошетка низ, каде што и шефови на курсот всушност, ќе се направат работите малку поинтимна овде во оркестарот дел, се уште има некои технологија и прошетка низ тековната недела проблем во собата, и ви нудиме particularly-- ако меѓу оние кои се помалку comfortable-- сè повеќе и повеќе насоки кои можеби ќе сакате или потребни за предизвик на недела. И слично, за оние кои не можат посетуваат оние во лице, не е голема работа. Таму ќе бидат водени од страна на сличен начин еден висок претставник на персоналот на курсот, Zamalya, истата можност вградени во проблемот поставува себе. Проблем поставува оваа година ќе биде објавен во петок и повеќе не се седум дена подоцна, но 10 дена later-- намерно се преклопуваат едни со проблемот во собата, со цел подобро да се приспособат, се надеваме, одлив и прилив во распоредот на студентите, особено кога midterms или атлетика или академици или extracurriculars имаат тенденција да доаѓаат и си одат особено средината на семестарот. Тоа треба да ви даде малку повеќе дискреционо право да одлучи дали пред се вчита вашата недела со CS50 или назад оптоварување наместо тоа на следниов викенд. Па гледам да силабусот на предметот е тука за распоред на истите. И ќе забележите премногу меѓу промените оваа година, за оние кои се повеќе запознаени со програмирање во минатото, ние ќе започнеме семестар ние ќе денес во нула, се фокусира посебно на јазик наречен C, а потоа не се транзиција на PHP, туку на јазик наречен Пајтон кон крајот на семестарот во контекст на веб програмирање, заедно со SQL и JavaScript, HTML, CSS, и уште повеќе. И во одговор на најчесто поставуваните прашања, тоа е навистина случај дека CS не е толку страшно како што некогаш мислев дека е, но тоа е многу работа како што јас го слушнав тоа би можело да биде. Но, тоа е да се каже дека тука се и некои статистички податоци од Паѓаат 2015 студент тело, при што хоризонтална сини линии претставуваат просечниот број на часови пријавени. И ќе видите во просек шест од 10 до 12-- можеби 16 или па и така натаму, но со висок варијанса да биде јасно. И така сфаќаат дека таму не е само студентите поудобно и помалку удобно во текот, но соодветна поддршка структура за да се добие оние студенти во текот на семестарот успешно. Навистина, во одговор на најчесто поставуваните прашања, треба да ќе се земе CS50 како прва година? Апсолутно. И всушност, јас не жалам не ја нашол патот или најде ново поле дека првата година, како и. И треба да се CS50 со други курсеви, секако, well-- и општи совети ние би можеле им даде на студентите, кои CS50 е веројатно не е вид на класа или интро класа кои треба да се преземат со три други или четири други p-собата класи. Но, ако сте земајќи две други p-сет класи, нешто друго, и CS50, апсолутно податлив. Имав многу студенти во минатото направиле тоа доста успешно. И да го добиете кон тоа заврши успешно линија, го курсот имаат sections-- различни патеки за студентите помалку удобно, поудобно, и некаде помеѓу, при што во текот на Првиот проблем во собата, ќе биде побарано да се опише. И ако вие сте меѓу оние кои се помалку удобно, тоа е вид на нешто што едноставно, а знам. И навистина, тоа е се растечкиот демографски во CS50 за неколку години. Од минатата есен за На пример, 58% од класата што е опишано себеси како меѓу оние помалку удобно, со 9% кај оние кои се повеќе удобно, а потоа другите ученици има во црвена себеси се опишуваат како што е некаде помеѓу. И ќе видите тука теми целокупната и распоред на делови, од кои сите се нудат во лице, реално време, со текот на неверојатни персоналот на наставата соработници и асистенти разбира, некои од нив ќе се сретнат во само еден миг. Делови себе, како што ќе видиме, ќе се понеделник и вторник и среда, со цел да се овозможи да се нурне во по ангажирање, ако така изберете, во текот на предавање, претходно таа недела. А потоа на работното време, што Секако, со секој изминат година, биле не помалку од предизвик за курсот. И оваа година, ние не сме планирање само да се одржи канцеларија hours-- еден на еден можности за помош студентите во среда четврток и во недела, последниот од оние се во попладневните часови од страна на дизајнот за да се намали некои од стрес, кој секогаш се јавува со доцна во ноќта P-settting со рок looming-- но на работното време, исто така, ќе им бидат понудени во понеделник и вторник и Среда и петок и сабота, благодарение на нашите пријатели во HSA. CS50 сега има свој простор за студентите и кадарот CS50, на врвот на планината Обурн Стрит 67, право таму на плоштадот Харвард. Визијата за што е тоа што е CS50 TFS и CAS во текот на неделата, доста во текот на поголемиот дена, ќе бидат таму за поддршка. Значи, ако имаш некои прашање на p-сет или ќе се чувствувате малку блокирани или малку збунет, и подлец, имаш еден час или половина час помеѓу класите, особено во square-- може да ви поп и го имаат тоа прашање одговори на имаат таа конфузија clarified-- многу во духот, сте запознаени, од математика оддел е математика прашања центар, но доста околу часовникот на [? Gcal?] Дека ние ќе ја објавите на интернет. Туторство е исто така достапна за оние студенти, слободно од курсот свој кадар, ако би сакал повеќе интимна еден на еден, или само две или три соученици, кои работат со еден од членовите на персоналот на курсот. И навистина, овие тука се само некои од членовите на персоналот на курсот, неколку од нив испишан се сретнат во само еден миг. Всушност, CS50 е главата настава колеги, и се разбира главата асистент, и наставник, може да дојде на до, им овозможи на нив да се каже здраво. [Аплауз] ЗВУЧНИК 1: [Беззвучен]. [Аплауз] ЗВУЧНИК 2: [Беззвучен]. [Аплауз] ЗВУЧНИЦИ 3: [Беззвучен]. [Аплауз] Дејвид MALAN: И ни овозможи да се донесе на одборот на две од CS50 МОСТ висок претставник на персоналот, Роб и Zamayla, како и. [Аплауз] Навистина и Роб и Zamayla се со нас за толку долго, што бев во можност да се оди во архивата CS50 е и да се најде тоа многу SD снимки од нив учествуваат на себе фаза пред неколку години. ROB: [Беззвучен]. [Аплауз] ZAMAYLA: [Беззвучен] [Аплауз] Дејвид MALAN: Ви благодарам. Така што во прилог на овие членовите на тимот тука, CS50 има тим од речиси 100 членови на персоналот, од кои сите ќе бидат достапни за делови и работното време и многу повеќе. И како Роб вели дека е премногу, тоа е најзначајните ремонт на CS50 во 10 години Сум бил во [Беззвучен]. [Беззвучен] фокусирани особено во обезбедување на поддршка структура, кастри далеку многу најголемиот дел и тоа е се акумулирани во 10 години на повторната развој на проблем поставува на курсот. Значи оваа година, не само во класа, но исто така, во форма на проблеми на курсот сетови, треба да се најдат работи за се повеќе рационализација, нокти, многу повеќе податлив од во изминатите години, како што фрли некои од багаж што е развиена од страна на природата на развојот на годината по година и процесирањето. Па нови и подобрени почнува денес. Ќе се состанат некои повеќе од вработените се разбира надвор во [Беззвучен] во 2:30, каде што служат, како традиција, торта. Има малку повеќе торта од тоа, но ќе Среќавајте Ерин и Tobias и други уште. И дозволете ми да ви даде турнеја пред да чуеме од некои други членови на персоналот во класата, од она што го чека, како и. Всушност, ние секогаш ќе започне CS50 е семестар оваа сабота, со она што се нарекува CS50 мозаик ден. Таа не треба ништо да се направи со компјутерски науки по себе, но со околу проблемот решавање на поопшто. И ако така одберете да се причестуваат, на некои од покани, може да се гледа на вратата паднал или на сцената тука, тоа е можност во тимови на две или три или четири, за учество загатки и пица и награди и more-- оваа сабота, Stay tuned за повеќе. Ќе најдете исто така дека секој Петок, во оган и мраз, се CS50 донесе целиот куп на студентите на ручек, да се направи голем класа се чувствуваат поблиски, и, генерално, ги собере најинтересните и пријатели од индустријата да се зборува за она што тие го се до од дипломирањето. Слично на тоа, оваа година, ќе се инаугурира првиот CS50 50 кодирање contest-- на средината на семестарот можност да им овозможи на сите на одлучат во основа, да имаат Предизвикот на wits против соученици, повторно во тимови од по две или три или четири, користејќи само дека програмирањето такт дека тогаш ќе мора под појас по само шест или седум недели на класата, како и учество во овој вид на конкуренција online-- ако сакате да брус вашиот сопствен вештини сè повеќе и повеќе во тој предизвик. На крајот на семестарот е т.н. CS50 Hackathon-- можност која започнува во 7,00 Премиерот завршува во 7,00 часот, а на патот 12 вечерните часови, во која да се нурне во финалето project-- на курсот можност да се дизајнира и спроведување на повеќето ништо од интерес да ви со вашето учење водство колеги. Околу 9:00 AM правиме обично служи пица, 1:00 AM, Филип, а на неколку од нас кои се уште се разбуди во 5:00 часот, се шатл bussed одредување на патот кон IHOP за појадок. А потоа и неколку дена подоцна е т.н. CS50 fare-- крајот на семестарот изложба во прослава на колку далеку толку многу на CS50 студенти доаѓаат од недела нула сите на патот до недела, и имајќи предвид дека 73% од оние кои соученици и твое оваа година имаат не презеле класа CS порано. Всушност, да се reemphasize како многу, тука е уште неколку лица од персоналот е CS50. ЗВУЧНИЦИ 4: [Беззвучен]. ЗВУЧНИЦИ 5: [Беззвучен]. ЗВУЧНИЦИ 6: [Беззвучен]. ЗВУЧНИЦИ 7: [Беззвучен]. ЗВУЧНИЦИ 8: [Беззвучен] ЗВУЧНИЦИ 9: [Беззвучен]. ЗВУЧНИЦИ 4: [Беззвучен]. ЗВУЧНИК 10: [Беззвучен]. ЗВУЧНИК 11: [Беззвучен]. ЗВУЧНИК 12: [Беззвучен]. ЗВУЧНИК 13: [Беззвучен] ЗВУЧНИК 14: [Беззвучен]. ЗВУЧНИК 13: [Беззвучен]. ЗВУЧНИК 15: [Беззвучен] ЗВУЧНИК 16: [Беззвучен]. ЗВУЧНИК 11: [Беззвучен] ЗВУЧНИЦИ 5: [Беззвучен]. Дејвид MALAN: Некои од тимот самите шопинг класи. Но, ако тие членови на персоналот CS50 се тука, може да дојде во за само еден миг. CS50 е TFS и CAS и [? вработените?] членови here-- овие се само неколку на faces-- од кои само видов, и неколку other-- и уште неколку други уште. Зошто не можеме да одиме напред и да се овозможи вие момци на пет минути пауза. Ако треба да патка до продавница часови, тоа е во ред. А во пет минути, ќе продолжи, Гледано во првите Scratch-- на нашите програмски јазик, да ги исполнуваат персоналот на курсот тука некои повеќе, и да се фокусира на крајот на проблем во собата нула. Па ние ќе се врати во пет минути. [Аплауз] Во ред. Значи ние сме назад. И во нашата останатите време денес, целта е да се на ниво на полето за играње во однос на некои терминологија, во однос на некои идеи. Бидејќи навистина, како на некои од топ листите порано, таму се случува да биде спектар на нивоа на искуство во оваа класа, некои од чии студенти имаат преземени некои програмски пред тоа, од кои некои не се. И така со овој првиот проблем постави и на овој прв јазик имаме можност да се започне да се земе здраво за готово по денешната некои заеднички вокабулар и идеја. И ние ќе го направите тоа по пат на Првиот languages-- на курсот во прилог на C и Python и JavaScript и SQL и HTML и CSS, ние ќе се фокусира на почетокот и само за проблем во собата нула на овој графички јазик, наречен Нула, развиен од страна на МИТ Media Lab по патот, да им помогне на учениците и децата особено се изразуваат algorithmically-- на некој начин повеќе во согласност со она што ние може да се нарече компјутерската размислување. И тоа е корисна јазик, бидејќи многу брзо следната недела во една недела, ние транзиција на повеќе традиционални и таинствениот јазик наречен Ц, што е чисто текстуални. Само го користите вашиот тастатура цел да се напише упатства како овие на екранот. Но, дури и ако никогаш не сум видел програмски јазик пред тоа, во само обѕрне ова, сите тоа да биде криптичната, што веројатно може да се претпостави дека најверојатно отпечатоци Здраво светот. Но, има многу синтаксички надземни таму. Постои чуден хаш симбол или хаш таг до врвот. Има голема заграда на агол, некои загради, кадрави загради, полу-colon-- има само толку многу визуелни синтаксата што добива во начинот на кој. Започнуваме на курсот со Нула, па како да се добие минатото на сите оние интелектуално неинтересни одвлекување на вниманието, и да се фокусираат наместо на идеи. Всушност, ова може да биде порано. Ова, за тоа, недела ќе биде сноп. Ова, во овој графички јазик нула, е како ќе се спроведе истата program-- програма што кога се работи, едноставно вели Здраво светот. И, што е убаво за нула е дека тоа е овој графички програмирање животната средина, кој го користи мозаик парчиња или блокови, кои блокирам само заедно ако тоа го прави логичка смисла да го стори тоа. И со нула може да се развие анимации и интерактивни игри и уметноста, и било кој број на работи кои може да се замисли во свој ум, и да ги имплементира едноставно влечење и пуштање мозаик парчиња. И навистина, ќе имаат способност да го изразат некои од исти идеи дека јас само споменати момент пред во контекст на Мајк Смит и пребарување на телефонски book-- работи како функции, само акции, работи како јамки кои го прават тоа работи повторно и повторно, променливи, што е нешто што ќе се воведе, но тоа е познато можеби од algebra-- само некој вид на случаеви за чување на некои вредност можеби треба later-- Булова изрази, каде што тие да не или вистина лажни прашања од порано. Условите се оние вилушки во road-- оние гранки, така да се каже. А потоа, тука се и некои познавач карактеристики ќе видиме дури и денес, наречен низи и теми и настани, кои ние ќе потоа се враќате во текот време во различни јазици. Но, гребење ни овозможува да се истражуваат сите од нив. Значи тука во нула, оваа пурпурна блок е она што функција е обично Ќе изгледа како. Оваа пурпурна сложувалка кој има некои збор како на пример, кој е на акција, и тогаш тоа може да има аргумент или parameter-- на некој начин од овој вид на измената она што го прави тој блок така што тоа не е однапред одредена од МИТ што вели овој пурпурна блок. Всушност, вие ќе ја видите во момент дека јас сум во можност да напишеш зборовите како здраво светот, или Здраво Дејвид, или здраво Zamayla, или она што го сакате, со аргументот за тој мозаик piece-- белата кутија таму. Во меѓувреме, ако сакам јамка, ние ќе се види дека има мозаик парчиња кои изгледа малку портокал се допаѓа ова. И нивниот облик вид укажува на тоа дека нешто се случува повторно и повторно во еден циклус. Значи, ако јас заврши со поздрави светот блок со вечно блокира во нула, тоа е само случува да се задржи велејќи здраво светот засекогаш, буквално. Во меѓувреме, има уште еден вид на јамка во Скреч дека ќе see-- повторување block-- каде што, ако знае однапред колку пати сакате јамка за да се изврши ограничен број на пати во вас fact-- може да се каже дека со внесување на голем број или дури и приклучување во променлива, како x или y како што ќе видиме. Всушност, променливи како Јас во овој случај, кој е заедничко име за целобројна променлива која само продавници на number-- цел број може да биде, да го користите овој портокал блок тука за да се постави променлива како да сум на нула. Еве еден пример во зелено на Булова израз во Scratch. Иако ова изгледа како математика формула, нееднаквости математика вака навистина се Булова изрази. Ова е точно или неточно. I е помалку од 50. Тоа е или да или не одговор или точно или неточно. И ние генерално ќе се јави оние Булова изрази. И тоа не мора да биде 50. Тоа може да биде помалку од x y, поголема од y, еднаква на y-- било кој број на други може да му се поставуваат прашања. Сега, на прв поглед, ова може да изгледа одненадеж потполно храбар тука, и тоа е. Но, концептот мудар, доста познати од порано. Ако X е помалку од y, од каже колку. Друго, ако x е поголема од y, а потоа го каже тоа. Друго да се каже x е еднаква на y. Значи имаме пример таму на трета scenario-- на третото место possibility-- x е или поголем од, помалку од или еднаков на. Значи имаме три начин вилушка во патот. И ќе забележите што е кул here-- нула, се чини, има само една загатка парче, во овој случај, ако друго блок. А сепак тоа не е доволно за да ви значи да имаат само две начин вилушка во патот. Можете да оди лево или десно, но она што за тоа трето сценарио? Што ако x е еднаква на y? Не е голема работа. Земете еден мозаик парче, се стави уште еден во него да се создаде семантички еквивалентни на, ако, на друго место ако else-- и сега ќе имате три начин вилушка во патот. И како што ќе видиме, Нула мозаик парчиња може да се протегала и растат, така што како да ставам повеќе работи во нив. Вие не треба да се вклопи што е во својот стандардната големина. Тоа е нешто што ние ќе наскоро да видат што се нарекува низа. Тоа е како list-- некој начин на складирање на повеќе парчиња на информации во променлива, а не само број. Овие ќе видиме претставник на нешто што се нарекува мулти-Threading. Всушност, сите ваши Macs и компјутери, овие денови поддршка на мулти-Threading, што значи дека може буквално прават повеќе работи во исто време. Можете да имате Microsoft Word нагоре во преден план, кои работат на некои есеј. Може да имаат интернет пребарувач во отворот на позадина Г-пошта или Фејсбук или слично. Вашиот компјутер може да се направи повеќе работи денес, бидејќи тоа е повеќе нишки, и програми тие се во особено, исто така се мулти-навој. Има нешта наречени настани како и во светот на нула, и потоа, тука е начинот на кој премногу, да се направи нашите сопствени парчиња мозаик ако работите всушност не постои однапред. Значи, да ги мотивира ова на следниов начин. Пред неколку години, кога јас за првпат се откриени нула, кога бев всушност град студент на МИТ, ние се имаа за задача да се направи домашна задача. И јас implemented-- кои, во ретроспектива, беше многу лоша одлука, бидејќи тоа е најмногу infuriating песна во светот да се слуша за осум часа додека работел на вашиот homework-- но нешто што го нарекува Оскар време, што можеби е позната песна. CS50s поседуваат Јордан Хајаши, еден од нашите повеќе високи членови на персоналот, ја надгради за 2015 година и сега 2016 година, бидејќи во тоа време, Имав се што само ќе во канта за ѓубре на Оскар. Сега ние ја поддржуваме рециклирање и компостирање. Но, за да наслика слика на она што можеме да го направите тука и да ги мотивира некои од примерите на пониско ниво, ние може да се добие една друга доброволно да дојде точно на до и да игра мојот прв домашна задача на сите времиња? Качи. Како се викаш? HENRY: Хенри. Дејвид MALAN: Хенри, ајде до. Качи. Упатат и да е, и ќе видите во еден момент, Одам да се оди напред и да ја погоди зелено знаме во горниот десен агол, што значи се оди. Иконата за малку гости знак се случува да се каже стоп, и тоа е моментот кога ќе почнете да и прекинување на програмата. Мило ми е што те запознав. Во ред. Значи ние си оди за да ги видите упатствата на екранот во само еден миг. И само со играње на оваа игра за неколку seconds-- ми верувате, ние не се случува да сакаат да играат сите на патот до end-- ќе да се добие чувство на она што програмата го прави тоа. И повеќе од само се фокусираат на Хенри се добри или лоши во оваа игра, фокусот и како бил имплементиран од мене првично, а потоа од страна на Јордан. Со други зборови, каде што се променливи? Каде се јамки? Каде се функции? И ние ќе се види дали ние не ги гледаме оние кои се под хауба. Само кликнете и влечете за ѓубре на соодветната корпа. [Музички] Во ред. Тоа е многу добра. Зошто не можеме да го запре таму. Ти благодарам. Алал да му е на Хенри. Ти благодарам. [Аплауз] Замислете дебагирање таа програма. Ако има проблем две минута song-- но исто така она што се случува тука навистина? Толку комплицирано како што тоа би можело да почне да се чини да се добие во текот на времето, навистина се повеќе и повеќе работи почнаа да паѓаат, што е интересно во врска со овој вид на example-- и ќе видиме неколку others-- е дека ако гледам минатото на комплексноста или софистицираност на игра, таму е многу едноставен зграда блокови кои play-- сите на кои, ако ги дестилираат на оние градежен материјал, се многу достапни и применливи кон себе. На пример, тоа е е некое време, но јас сум прилично сигурен дека она што првично го правеше кога со што оваа игра за прв пат јас бев целосно како одолговлекува. Јас не се фокусира на сите на логика или парчиња од сложувалката, Се фокусирав на графика и наод на улица пост и корпата за ѓубре и сето тоа. Но, тоа беа потребни состојки во прв план. И уште еднаш ќе заврши одложување и поставувањето рамка за сеопфатна, Решив да, дозволете ми да се направи една парче ѓубре паѓа од небото. И ние ќе се види на гребење поддржува нешта наречени sprites-- знаци кои може да имаат различни костими за да можат изгледа различно. И така јас се стави ѓубре костимот на една таква фигура. И јас само е потребно да падне од небото. И така излегува, нула, како и повеќето програмски јазици, поддржува случајни броеви или технички pseudocode случајни броеви, така што со влечење и намалувањето на одредени парчиња мозаик, Јас бев во можност да се ѓубре дојде од левата страна во прв план. И тогаш следниот пат кога таа падна, од право, а потоа од средината на теренот. И сите играта не е само има ѓубре паѓа од небото. Вие не може да се укаже на тоа или кликнете на неа. Вие не може да ги отвори корпата за ѓубре. Вие не може да направи ништо. Но, тоа беше чекор бебе кон мојата крајна визија. И после тоа, јас, всушност, спроведува некој вид на сензори, така што ако го притиснете и повлечете го на парче ѓубре во текот на конзерва ѓубре, Оскар капакот ќе се отвори и затвори. Ништо нема да се случи во корпата, но најмалку капакот ќе се отвори и затвори. Па тогаш провери, чекор два на два. И тоа е она што се случува да биде клучот во двете проблем во собата нула и во програмирање поопшто, е да се се овие многу намерно чекори бебе. Бидејќи не само што ќе ви овозможи да се чувствувам искрено постигнато многу повеќе quickly-- тоа е Најлошото нешто во светот да се обиде да ги спроведе сите на Оскар време, тогаш часа подоцна погоди зелено знаме, и ништо не работи како што се очекуваше бидејќи кога ќе се направи уште почнуваат да се debug или да смена на таа програма? Тоа е само огромно. И така навистина прегрнување оваа идеја за преземање steps-- чекори бебе повторно и again-- градење нешто што е, на крајот, навистина импресивен и сложени, но во првиот, не е скоро колку толку. Всушност, ајде да го направите тоа. Дозволете ми да оди напред and-- себе Изгребете постои на интернет во Scratch.MIT.edu, и ќе биде кажано како многу повторно проблем поставени на нула, спецификација за која е веќе на веб-сајт е CS50. Но, тоа е она што Изгребете самото тоа е. И таму е навистина само три основни области. Во горниот лев агол има е т.н. фаза. Ова е нула. костим стандардно е мачка. И ова е правоаголна светот кои може да се move-- горе, долу, лево, право и некои други работи. Во средината тука се нашите категории или за нашата палета на мозаик парчиња, и различни бои значи различни нешта. И ако ѕиркаат наоколу, ќе видите работи како јамки и услови и променливи и други состојки. И тогаш овде е област на скрипти. Ова е местото каде што може да drag and drop оние мозаик парчиња се прават работите. Значи, да се направи една таква работа. Дозволете ми да оди напред and-- и знам каде е. Па јас ќе одам веднаш да кликнете на каде што знам работите се подготвени да биде, но укажува и кликнете и ѕиркаа наоколу се неизбежни. Значи, кога зелено знаме кликнато, што сакам да направам? Одам да го направите тоа. Одам да го повлечете овој пурпурна мозаик парче, се поздрави за две секунди, и дозволете ми да зумирате. И јас одам да го промените ова да биде она што сакам да be-- Здраво светот за две секунди е во ред. Сега, јас ќе одам да кликнете на зелено знаме, или ако навистина сакате, Јас целосно може да ја скенираат и потоа се врати. Тоа само ќе го задржи што е во еден прозорец. Зелена flag-- Здраво светот. Во ред. Не се сите толку интересно. Па дозволете ми да оди напред и да го направите тоа. Дозволете ми да се обиде уште еден. Кога зелено знаме clicked-- ајде направи нешто како звук. И ќе забележите дека од кутијата за бесплатно ќе го добиете звук мачка, како што е самовила стандардно. Па сега дозволете ми да оди напред и да хит на зелено знаме сега. [Слатко] AW. Тоа е симпатична. Јас сум програмирање. Па што сум направил? Ова е еквивалент на програмата. Тоа е очигледно супер едноставен. Тоа навистина не се толку многу напор и МИТ го поголемиот дел од работата, но јас го нарекувам функција. Го употребив функција. Јас го направив некоја акција, само со користење на дека еден пурпурна загатка парче. Па, ако сакате да го направите три мјаукања во ред? Дозволете ми да оди напред и да прават два и три. И ќе забележите дека кога ќе се лебдиш во близина загатка парче, се појавува малку бела линија вид на магнет, и тоа ќе пукне заедно кога ќе се прости. Ајде да видиме што се случува тука. [Слатко] Има бубачка. Јас само слушаат meow. Зошто тоа би можело да биде? Да? Да. Ние навистина не го слуша, но тоа е добра интуиција. Сите тие се игра во исто време. Зошто? Па, компјутерот е само ќе да се направи она што го кажете тоа да се направи. Значи, ако се каже, пофални звук, игра звук, игра звук, но не го кажам да игра до ќе завршиш, да игра додека не завршиш, тоа се случува да свират преку програмата навистина брзо и не само што ќе го каже да се направи. Па јас всушност треба да се поправи ова во неколку начини. Јас само може да го направите ова, да се ослободи од тоа. Дозволете ми да се обиде оваа друга загатка piece-- игра звук meow додека не се направи, а потоа повлечете три овие и притиснете Play. [Слатко] Тоа не е навистина very-- you-- благодарам многу природно. Па зошто да не нека I-- ми да оди да се контролира тука. Ница. Чекај една секунда, а сега да се навратам на звуци, и игра на звукот додека не се направи, а потоа дозволете ми да почека една секунда. И тогаш дозволете ми да оди и да добијат еден повеќе звук, и тука ќе одиме. [Слатко] А малку повеќе физички, но ова не е многу ефикасен. Како што му е здодевно, сите ќе бидат накратко, со кликнување и назад и навистина се дуплираат мојата work-- доста копирање и вметнување. Всушност, ако ги контролирам кликна или десно кликна, Јас би можеле да имаат само копирани и атипичен. Што ќе биде подобро да се изгради да се користи? Што идеја од пред тоа? Да, па јамка. И всушност, ако ние појдов наоколу, ние може да се најдат токму тоа. Дозволете ми да одам на настани или подобро контрола. Значи repeat-- јас не сакате да биде 10 пати. Тоа се случува да се добие досадно брзо. Но, ќе повторам три пати. Дозволете ми да се врати на звук и репродуцирате звукот додека не е направено. Дозволете ми да се врати за контрола на и само почекајте една секунда. И информации, можеби дека тоа не одговара, но повторно, ако магнетно тоа го дозволуваат предвремени во место, тоа ќе се зголеми за да се пополни. Што е тоа игра сега? [Слатко] ДОБРО. Ница. И тоа е она што ќе се вика програма со која е исто така точно. Тоа meowed три пати прилично се разбира, но тоа е подобро дизајниран. Јас сум со користење на помалку вишок. Јас не го копирате и залепите ништо. Јас само се користи подобра идеја. Сега, ова сè уште не е на сите дека интересна со нула не прави било што. Значи, да се направи нешто друго наместо тоа. Да направиме нешто засекогаш. И знаете што? Движење чини интересно. Ајде да го преселат 10 чекори и хит претстава сега. ДОБРО. Па ние да вид на влечење го назад, и тој е се уште работи, бидејќи тој го прави ова засекогаш. Значи јамка прави она што го кажува да се направи, Но, ова не е толку интересно. Ајде да го направиме ова. Дозволете ми да кажам контрола блок, и да го користите еден на тие услови за прв пат. Така, тоа е ќе се движи од 10 steps-- 10 точки, 10 пиксели на screen-- тогаш тоа се случува да прашам ова прашање. Ако нешто не е точно, тогаш се нешто во овој блок. Значи излегува сензори има цела куп на Булова expressions-- прашања за да не или вистина лажни form-- дозволете ми да го направите тоа. Ако touching-- а потоа има оваа мала паѓачкото мени. Можам да го параметризирање. Ако допира edge-- ајде се направи такво нешто. Значи, ако се допира edge-- дозволете ми да се врати во движење. И зошто не ние само се сврти за 180 степени? Во ред. Така засекогаш, се движат од 10 чекори. Ако сте го допирате работ, да се претвори 180 степени. И тоа не е крај на програмата затоа што ти си во засекогаш го блокира, па затоа се случува да се оди повторно и повторно и повторно и повторно. Па ајде да видиме што се случува. ДОБРО. А малку кабриолет, но вид на ладно. И ние може да го додадете ова некои смешни работи дека не се сите кои интелектуално интересно. Но, ако се погоди оваа мала микрофон button-- Уф. Дозволете ми да се исчисти ова. Дозволете ми да се подобри тоа како тие би рекле на телевизија. Исчистете дека до, зачувување и сега оди до скрипти. И сега, дозволете ми да оди на звук. Дозволете ми да го даде името. Ќе му се јавам оваа Уф. И сега игра звук Уф. Забележете таа се појавува во малку паѓачкото мени. Ајде да видиме. [Уф] [Се смее] Но, ние може да го промени својот т на мува. Ние може да биде двојно досадни. [Уф] Или ако се направи тоа како 1.000 чекори на time-- ДОБРО. Значи ние се случува да го оставиме тоа сам. Значи, повторно, градење blocks-- јас започна со нешто супер едноставен, а потоа се додава функција, додаде функција, додаде функција. И јас веќе не треба да се грижите како прв од оние карактеристики беше имплементиран како што продолжи да слој работи на врвот. Така, всушност, дозволете ми да се направи уште еден друг тука. Дозволете ми да оди напред и да се отвори датотеката што Јас го донесов во однапред, наречен овци. Така што има малку поинаков лик кој изгледа вака. И дозволете ми да се види дали не можам направи нешто со помош на шалтер во овој case-- т.н. променлива. Одам да се оди напред и под Events-- дозволете ми да добие зелено знаме кликнато. Тогаш дозволете ми да одат на податоци, што знам од само поигрува пред тоа, е местото каде што се променливи. И јас одам да се оди напред и повлечете ова. Значи променлива наречена шалтер, како и Одам да се иницијализира на нула. Јас може да го наречеме anything-- x или y или z-- но во програмирање, повикува на нешто во семантички корисен начин, како контра, што го опишува она што е, тоа е многу полесно да се чита вашиот код подоцна. Дозволете ми да оди напред и да се засекогаш блокира тука. И дозволете ми да оди на изглед страница и да направите Кажи блок. Но, она што е кул за променливите е јас не треба да напишете само во нешто како здраво светот, што ние веќе направено, јас наместо да одат на податоци и повлечете променлива ми, па дури и иако формата сосема не изгледа како тоа треба да одговара, тоа ќе се зголеми за да се пополни. И јас само ќе кажам за еден шалтер second-- spoiler-- тој се случува да се брои. Ние ќе го кажам за една секунда. Тогаш јас ќе одам да се оди и мора да чека за една секунда, па тоа не се брои до премногу брзо. А потоа и на крај, промена контра од one-- со други зборови, Интервалот на контра од страна на еден дополнителна вредност и да го направите ова засекогаш. Па овците исто така, како програмер, тече од 0. И ако ние се чека доволно долго, тој ќе го стори тоа засекогаш. Но, тоа не е точно точно, бидејќи Всушност, како што ќе се открие во една недела, цели броеви и компјутери поопшто, технички имаат само finite-- добро, повеќе компјутери, кога тие претставуваат цели броеви, имаат само ограничен број на битови. Оние светилки таму само може да се смета толку високо пред да си надвор од светилки. И компјутер исто така, има само толку многу меморија, има само толку многу транзистори, така што само може да се смета толку висока. Значи излегува дека овците, Мислам, може да смета на 2 милијарди или нешто прилично голема. Значи ние не се случува да се чекаат за тоа да се случи. Но, на крајот некои бубачки ќе се случи што може да има некои многу реалниот свет последици. Но, надвор од овци, кои само воведува променлива. Ајде да одиме напред и да се отвори нешто не сум направил во однапред тука се нарекува миленичиња Cat-- Миленичиња мачка овде. И ќе забележите тука тоа е неколку блокови, но кога зелено знаме ќе биде кликнато, засекогаш на следниов начин. Ако сте допирање на глувчето pointer-- така покажувачот на екранот, на arrow-- игра звук meow а потоа чекаат две секунди. И само го прават тоа засекогаш. Само постојано чекаат да се види дали pointer-- ако мачката е допирање на покажувачот. Па јас хит игра. Ништо не се случува. Но, како што го движите курсорот во текот на мачка, [Слатко] И ако јас се движат подалеку, не фаќање на мачка повеќе. Па така некои условен логика вгнездени во внатрешноста на јамка. Како за овој пример, намерно наречен Не Миленичиња мачката? Што е ова се случува да направам? [Слатко] Зошто не треба да миленичиња мачка? [Слатко] ДОБРО. Значи ова е пример за ако друго. Тоа е момент на одлука и поради тоа што седи во јамка, тие се и да се провери. Дали е ова точно? Дали е ова точно? Дали е ова точно? Дали е ова точно? И на крајот, една од тие се случува да се применуваат и така ќе слушнете или meow или татнежот на лавот во тој случај. Па, ајде да се направи малку повеќе фенси еден дека не сум направил однапред too-- теми. Значи темата е само еден нешто што компјутерот може да се направи. Значи програма мулти-навој е програма што може да се направи повеќе работи одеднаш. И сите овие примери досега имале само една скрипта, така да се speak-- една програма, како овој овде. Но забележите оваа програма има две sprites, два лика. Една од нив е птица. Една од нив е мачка. И ќе забележите кога ќе кликнете на овие долу лево, тие имаат свои сопствени скрипти или програми поврзани со нив. И двете од овие програми, информации, почетокот со кога clicked-- зелено знаме ајде да погледнеме на cat-- кога зелено знаме кликнато. И така, навистина, кога ќе се погоди играат сега, две работи се случува да се случи одеднаш. Мачката и птицата се и се случува да работат истовремено да се создаде овој ефект. И можете да си замислите што се случува. Има јамка и птицата и мачката се во еден циклус. Птицата е само бие како Бев пред кога реков Уф. Но мачката јасно има предност. Има уште една сензори блок што укажува на мачка намерно на птици во овој случај. За да можеме да ги разграничат, гледајќи преку овие блокови, што се случува. Но, клучна состојка тука е еден. Птица, така што оваа игра не е целосно boring-- или овој animation-- започнува во случаен насока. И компјутерот е подигање број помеѓу 90 и 180 Во суштина, така што тоа е малку различни анимација секој пат. А потоа забележите тука, ако мачка е допирање на птица, а потоа игра лавот четири sound-- татнежот. Но, во меѓувреме во птица палета, имаме ова. Засекогаш, ако не ја допира мачка, само да се движат три чекори. А потоа, тука е уште една загатка парче. Ако сте на работ, скокаат. Значи птицата е само вид на чување на свој бизнис, само летаат наоколу и бие, и тоа е навистина мачка која имаше условен логика да се утврди дали се фатени птица. Во ред. Значи, да се направи еден друг тука, ова се нарекува Здраво Здраво Здраво. И ова овде само прави ова во вечно јамка. Но notice-- како да се запре ова многу досадни програма? Хит на тастерот space. Затоа што ако го направам тоа, левата рака program-- забележите дека тоа е постојано listening-- е клучот простор печатот. Ако просторот бар притисне, и ако е така, она што не го прави тоа? Тоа го прави многу честа техника. Го поставува променлива еднаква на некоја вредност. Но, тоа го менува таа вредност. [? Значи изглед?] врз основа на shape-- I со променлив дека јас напиша однапред наречен Исклучен, што само вели да или не. Е звукот исклучен или не? Точно или неточно? И известување, сакам да кажам дека ако this-- пригушени е нула, тогаш промените на една, на друго место во собата исклучете го тонот на нула. Па само флип вредност од нула до еден. Јас би можеле да имаат done-- ја промените од два до три и три до две или четири до пет или четири на шест. Но, тоа не е важно кои броеви јас го користам, толку долго како што се задржи менувањето спротивното. И повеќето секој програмер би само изберете нула и one-- лажни и вистински, исклучување и on-- да го претставува ова. И ова е сеуште работи. Ако јас хит тастерот space [ПЕЧАТ ЗВУЦИ] На програмата се уште во тек. Затоа што има оваа друга скрипта во која се вели, засекогаш го направите следново. Ако пригушени променлива е еднаква на zero-- па ако не сте исклучен е logic-- ако тоа е лажна или не, а потоа играат на звук, затоа што не си исклучен. Треба да се игра на звукот, а потоа мислам hi hi hi за две секунди а потоа чекаат, и направете го тоа повторно и повторно и повторно. И така на овој начин имаме начин за луѓе to-- за програми за да комуницирате. И тие не треба да се се како датум како и сите други. Всушност, ѕиркаа around-- не каламбур intended-- некој потроши огромна сума на време на интернет спроведување PokemonGo во Scratch. Таа дури geolocates во Кембриџ или Allston тука. Значи, ако сакате да се види она што премногу луѓе можете да направите е this-- многу фенси мени. Кликнете тука. Ова е мене со моите стрелките сега. Одам да се оди по ова. Кликнете. И сега ќе кликнете на PokeBall. Мислам, дека сте треба да кликнете на PokeBall. Во ред. Па јас направив тоа. Можам да одам овде. А тоа лице спроведува некои повеќе PokeBalls над here-- три PokeBalls. Ние ќе ја објавите линк до оваа онлајн, така да може да игра. Но известување има само некои основни градежни блокови. Тоа изгледа многу познавач, и тоа е. Ова е импресивен и повеќе отколку што би обично се очекува, секако за проблем во собата нула. Јас немам идеја колку долго ова лице поминато на интернет. Но, сето тоа е само еден циклус. Има звук игра. Има некој вид на јамка слуша за тоа дали јас сум притискање на стрелка нагоре или надолу arrow или лево и десно, а потоа, ако е така, тоа е поместување дека одреден број на пиксели. А потоа, ако јас кликнете на уште една самовила, има некој вид на, ако услов е таму. Да, ова е добивање премногу напорен. Ние ќе се запре. Тоа е за сите оние основни градежни блокови. Нема други состојки други од оние што ја погледна веќе. А сепак тука, дозволете ми да се направи еден конечниот збир на примери што создава слика премногу на она што можете да го направите тука. Тука е многу едноставна програма со која само не this-- кашлица, кашлица, кашлица. И само врз основа на она што ние сме погледна досега, каде е очигледно можност за подобрување. Оваа програма е точно. Тоа кашлање три пати, што е она што се наменети. Но, тоа е лошо спроведени. Тоа е лошо дизајниран. Зошто? Да. Тоа не е еден циклус. И тоа не е толку многу дека тоа не е еден циклус, тоа е дека има многу на вишок. Таму е копирани и атипичен код, така да се каже. И решение веројатно е навистина еден циклус. Значи, дозволете ми да оди напред и подобрување на тоа. И јас одам да го повлечете овие овде. Дозволете ми да оди напред и да се повтори блок, промените ова во три. Одам да се фрлаат некои од овие блокови. И ќе забележите дека тоа е прилично интуитивна. Можете да drag and drop и работи се појавуваат и исчезнуваат на крајот. И јас само може да го повлечете овој овде и сега имам почиста верзија уште. Но знаеш што? Има оваа можност веднаш abstraction-- да се започне да се дефинира нов речник дека МИТ не го очекувале. Има почекаме и да се повторува и секогаш и ако, Но, што ако сакам да се воведе зборот кашлица како блок? Што ако сакам загатка парче чија цел во животот е да се плаќа? Па, ајде да погледнеме на оваа верзија тука, што не сум направил како што следи. Магично, Имам креирано оваа загатка парче тука, кој гребење ви овозможува да направите. И навистина C и Python и го вклучите Javascript-се ќе ви овозможи да го направите ова, како и. Можете да креирате сопствени парчиња кои ви се јави она што го сакате. Во овој случај, кашлица чувствува како разумна дефиниција. А потоа со овие парчиња надолу тука може да се дефинира што значи тоа. Се повлекуваат и од оваа палета here-- повеќе blocks-- овој голем пурпурна блок, каде што чука со кашлица како што е името на мојата нова загатка парче. И тогаш јас сум велејќи дека секој пат кога корисникот го нарекува овој нов кашлица загатка парче, направи да речеме и да чекаат. И така до тука во мојот повтори блок, Јас само може да се плаќа три пати. И јас би рекол, особено Ако сега се скрие овој детал. Кому му е гајле како се спроведува кашлица? Сите што се грижат за како програмер што можам да кашла. Не ми е гајле како велат се спроведува. Јас само се грижат дека мачка може да се каже нешто. Јас може да се апстрактни далеку дека детали и само се фокусираат на она што е на екранот овде. Но, можам да ја искористам оваа еден чекор понатаму. Забележете дека овде, имам спроведува циклус три пати. Но, што ако наместо тоа да го имате овој верзија? А, што ако, наместо во оваа верзија тука, Јас само ги променам моите загатка парче да се аргумент и влез се до? И тоа може да биде влез голем број како три. Па сега, ако сум пишување програма и јас сакам мачката да кашла, Јас всушност може да се каже од сложувалката парче колку пати да кашла, бидејќи на дното тука, познавач верзија на овие сопствени мозаик парчиња ми овозможува да се каже дека кашлица всушност се на input-- го аргумент се допаѓа ова. И знаете што? Можеби и јас се реализира, почекајте една минута. Кашлањето е same-- тоа е во основа истата идеја како кивање. Тоа е само поинаков збор на екранот. Јас може да се апстрактни далеку понатаму и спроведување оваа финална верзија на кашлица, која на прв поглед е начинот на кој повеќе комплекс во потрага. Но, забележи она што го направив. Имам сега generalized-- genericized really-- оваа загатка парче да се нарече каже зборот n пати. И сега имам две нови мозаик парчиња овде се дефинира кашлица n пати. И она што не функционираат на кашлица? Што прави мојот сопствен мозаик парче? Тоа само ги повикува да речеме блок, поминува во зборот сакам да кажам, донесување на бројот на пати, сакам да кажам. Бидејќи сега може да се спроведе кивнете со едноставно велејќи achoo, во овој случај, некои број на пати. И така јас сум дели и дели. И повторно, клучот овде не е како јас го спроведува, но факт дека ако јас само буквално се движат на овие надвор од екранот, изгледа како едноставна, ако не прилично мојата програма сега изгледа. Бидејќи тоа го прави она што вели, јас сум апстрахирани далеку она што е внатре дека црната кутија. тоа се случува да биде пурпурна кутија тука, но јас сум попречена далеку она што е внатре бидејќи јас не се грижат како тоа функционира. Јас само се грижат сега дека таа работи. И навистина, во проблем поставени на нула, тоа е токму вид на слоеви на идеи ќе имаат можност да се истражуваат. Тоа е токму можноста да се применуваат за решавање на проблеми техники, на она што е веројатно непозната средина. И дали не сум програмиран пред или програмирани пред тоа, ќе најдете дека има малку нешто во оваа средина за секого. И со проблем во собата еден во рок од една недела, ние ќе се transitioned на фокусирање на повисоко ниво јазик наречен C-- односно пониска ниво јазик наречен C-- тоа е дури и повеќе моќен, дури и покрај тоа што е малку повеќе криптичната на прв поглед. И ќе се реализира по денешната TL: DR, дека овој проблем во собата има пократка прозорецот на време од идните, едноставно затоа што треба да го најдете доста достапни. И не треба да се грижите доколку додадете класа доцна. Ние ќе се обрати дека пред долго. И пред да се одложи за торта, ајде заврши со само две минути изглед на она што те чека тука во CS50. [Музички] Во ред. Тоа е тоа за CS50. Ние ќе се видиме наскоро. сега се служи торта. [Музички] ЗВУЧНИК 17: Дали сте слушнале на пауза, Главен? ЗВУЧНИК 18: Можеби има повеќе под хаубата.