>> [МУЗИКА]
>> Това е CS50-- Харвард въвеждане университет
да интелектуалеца предприятия на компютърните науки
и изкуството на програмиране.
И моето име е Дейвид Малан и Тъкмо си мислех тази сутрин,
това е било удивително 20 години днес тъй като миналата седнах където вие правите сега.
>> Беше 1996.
Аз бях второкурсник, и аз бях като CS50 за първи път.
А аз дори не бе намерила смелост да го вземе сам първокурсник година,
отчасти защото на времето.
Компютърни науки към мен е нещо като, MEH.
Бях малко на онази расте нагоре, но не го направих наистина
има някаква интелектуална интерес към това, което изглежда
да бъде просто един куп хора програмиране през цялото време.
>> И аз бях уплашен, за да бъда честен.
Разбира се и компютърни науки Колкото по- обикновено имаше и до известна степен,
все още има тази репутация на поле, за да пазете се, ако само, защото толкова много от нас
не са запознати с него и сигурни за това.
И това наистина не беше, докато не пазарували този клас, който второкурсник fall--
и дори след това, аз само се записва защото professor--
една от първите ми наставници, Brian Kernighan сега в Princeton--
ми позволи да взема прохода на класа се провали.
И наистина, това е защо Днес ние се даде възможност и да се насърчи
студенти да приемат този клас седяха / Ненасит.
>> И само тогава, от края на семестъра
разбрах, като, уау, това Не беше такава непозната поле.
В действителност, това е много възможности поле,
и по-вълнуващо, особено по-късно,
като взех курсове в Драматични изкуства 101 и Латинска А
и след това евентуално град училище археология,
Наистина ли да започне да се види кръстовища на това поле, компютър
наука, с хуманитарните, естествените науки, изкуствата, медицина,
и подобни.
И така, това е, което е просто така чист за компютърни науки
в крайна сметка, като се надяваме, че ще see-- е неговата приложимост
за тези други области, и как можете да отнеме известно на днешното и на семестъра се
идеи и практически умения обратно към вашия собствен домейн,
и всъщност посещаваните пресичане на свободни изкуства и науки.
>> Така че 73% от вас, ако последната година е някакъв показател,
никога не са участвали в курс CS преди.
Така че, ако, като мен, вие сте Чувствам се малко по-
уплашен, или честно казано не сте много сигурен защо си още тук.
Може би просто последвано някои приятели над да Sanders точно сега.
Това е напълно наред.
Целта тук е да се закача ви и да ви уверя,
че ако се погледне към ляво и в дясно,
започваш да видите съученици с по-малко или най-много опит
че вие ​​сами може да се наложи.
И наистина, ние ще споделим някои статистически данни по-късно днес
за това какво демографията на класа обикновено изглежда така.
>> И като добавя 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, разбира се, ни дава три.
Така че това ще бъде два.
Битът вид обръща, така да се каже, като 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.
DAVID Малан: Maday, хайде нагоре.
Приятно ми е да се запознаем.
MADAY: Приятно ми е да се запознаем.
>> DAVID Малан: Хайде този начин.
Аз няма да се налага да ви устните нагоре.
Добре.
Така че тук, ние имаме, notice-- един, two-- ние ще редактирате че out-- една, две, четири,
осем, 16, 32, 64, 128.
Това е умишлено.
Има осем бита here-- двоичен digits-- нули и единици.
И малко е полезно устройство на measure-- не толкова полезни, мерна единица
към себе си.
Обикновено искате най-малко осем от тези неща, а.к.а.
един байт.
Така че ние имаме един байт на бита тук.
>> Така че, ако искаме да ви предизвикателство с, например, разясни, в двоичен,
тази стойност here-- 42.
Искате ли да се отнеме хладно оръжие по това?
>> MADAY: [недоловим].
DAVID Малан: Да, просто натиснете на малки бели стрелки в предната част.
И вие искате да обяснят от 42, и за грайфери
е този CS50 стрес топка, ако се получи това.
Добре.
Така че имате 32.
Отиваме да се наложи 42.
Така че това е осем, така че това е 40.
И excellent-- много добре направено.
Благодаря.
>> [Аплодисменти]
Добре.
Така че ние имаме още един стрес топка.
Нека да направим това още веднъж, ако ние може.
Един друг доброволец?
Безплатна стрес топка, безплатен стрес топка.
ДОБРЕ.
Над тук в средата, искате ли да слезе?
Добре.
Знам.
Ето.
>> Така че цифрите here-- идват по надолу.
Как е името ти?
>> DAVEY: Дейви.
>> DAVID Малан: Дейви.
ДОБРЕ.
Хайде нагоре, Дейви.
Приятно ми е да се запознаем.
И това, което ние ще трябва spell-- ако бихте могли да се задържат там
само за един moment-- е броят 50.
Но, но,, но и действа, но това са началното училище магнити има причина.
Просто имам малко по-трудно, нали?
Има още осем.
Добре.
И така, какво имаме там?
Ние имаме 32.
Ница.
32 плюс 16 ни дава 48-- толкова близо.
И прекрасно.
Честито на Дейви, както добре.
>> [Аплодисменти]
>> Добре.
Така че ние можем да направим това по цял ден, и тя не получи всичко, което много по-
интересно и по-голямо предизвикателство.
Но това е наистина най-point-- е как сравнително прост
това е, в края на деня, това, което е компютър прави за съхранение на информация,
за съхранение на суровини и в крайна сметка съхранява или представляват тези изходи.
Но номера не са достатъчен всичко, което интересно.
>> Така че хората, преди няколко години, реши, знаете ли какво?
Би било хубаво, ако компютрите не са били само
калкулатори за аритметика операции, но в действителност може да
направя неща, като текстообработка, или електронна поща, или по-модерни въплъщения
на тези видове технологии.
И така светът реши произволно, но универсално,
че, ако искате да съхраните столицата буква А на компютър, знаете ли какво?
Нека просто всички са съгласни да се съхранява някои модел на нули и ones--
bits--, че в крайна сметка представлява десетичната номер 65.
Ние просто ще всички са съгласни с това.
>> 66 ще представлява B, 67 ще представлява C,
и има букети от други модели на нули и единици, или базови номера,
че ще представлява други писма на едно място.
Така че, ако ви вид психически усвои тази за момент,
Аз умишлено поставени А през I, където H 72 и I е 73.
Ако компютър след това, в контекста на текстообработваща програма или електронна поща,
разкри, под предния капак, за да имат тези модели на bits-- модел
на битовете, представляващи 72, след това 73, след 33--
какво може тази магия в тази програма?
>> Така здрасти, и след това нещо.
Ние не винаги знаем, но наистина 33-- не на графиката earlier--
Беше просто удивителен знак.
Така че 72 е Н, 73 е I, 33 случва да бъде удивителен знак все още.
Но това е всичко, фин и добър, и в действителност в днешно време, отколкото
просто използвайте седем или осем бита, благодарение на нещо
наречен Unicode, за разлика да Ascii назад в деня,
ние всъщност може да представлява още по- интересни герои, отколкото просто
тези оригиналния английски предубедени писма.
Но ние също може да представлява дори спретнат неща като цветове.
>> Ако някога сте чували акронима RGB, червен, зелен, син, че
просто означава, че един компютър обикновено използва три комплекта bits--
някои броя на битовете, които представляват номер за колко червени искате,
друг набор от битове за колко зелен искате,
и друг набор номер за колко синьо искате.
Така че голям брой означава много червено, малък брой означава, че няма червено.
И така, това са вид на средните стойности тук.
>> Така че ми даде някакъв червен, дайте ми малко зелено, и ми даде малко синьо.
И ако се смесват тези три нюанса на цвят заедно, в този случай,
можете да получите този тъмен нюанс на жълт или кафяв.
Но този модел на осем плюс осем плюс eight-- така 24 bits--
от ляво на дясно, е как един компютър ще представлява този конкретен цвят.
Сега това е само една точка на екран.
Ако се вгледате наистина отблизо телевизора си компютър, ще видите точки или пиксели.
И ако имате цяла мрежа от пиксела, хоризонтално и вертикално,
имате изображения.
И след това, ако сте приели изображение и след това измиване
покаже себе си друг имидж, още имидж, още една картинка, друго изображение,
много по-бързо, вие, разбира се, има филми.
>> И така забележи там, откъдето започнахме.
Ние започнахме с тези нули и единици.
Работихме от там да е десетична номера, как можем да ги представляват.
Сега имаме букви от азбуката.
Но в друг контекст чакат, ние можем да използваме още няколко бита и представляват цветове.
Веднага след като имате способност да представлява цветове,
Вие имате възможността да представляват фотографии и анимирани GIF файлове
и други подобни символи на екрана.
И когато имате един куп образи, плаващи от човека наведнъж,
тя изглежда като филми, и за да можете да получите видео, както добре.
>> Така че използването на тези много прости примитиви, които правим
има по пътя на представляващ в крайна сметка всички тези форми на медии.
И ние сме абстрахира отново и отново, и отново, докато ние
получите от най-ниското ниво за това най-високо ниво.
Така, че ни дава тази обща представа за абстракция.
Но ние започнахме тук.
>> Ето сега, можем да представлява в компютър
нашите входа с нули и единици, нашите резултати в нули и единици,
но това, което става вътре в кутията?
Това е, когато на компютъра науката става интересно.
Това е, когато вие всъщност донесе си собствени умове да носят за решаване на проблемите.
Сега можем да се предвиди, за почивка на семестъра, да.
Знам как бинарни творби.
Спомням си как Ascii или Unicode-- картографирането на letters-- произведения.
И то със сигурност се откроява да се разсъждава, че ние
може да представлява червено и зелено и синьо, и представлява мултимедиен както добре.
Но това е най-интересното.
Това е, което прави някой способен да решаване на проблемите.
>> И един такъв проблем сме искали да направим, наистина,
е като посещаемост, или Правейки това алгоритмично.
И отново, че може да направи това.
Мога да направя едно, две, три, четири пет, шест, седем, осем и девет.
И мога да го напиша надолу, за да следите това.
Но това е само как ще представляват информацията.
Или мога да направя това faster-- две, четири, шест, осем, десет, 12, 14, 16, 18, 20,
22-- тя се чувства като на два пъти по-бързо, но тя все още е
ще отнеме цяло много време.
>> Но се оказва, ако ние се наберат още още resource-- и наистина компютри
тези дни имат множество процесори или мозъка.
Оказва се, компютрите могат да направим много неща наведнъж,
и наистина ние, в тази стая, може да представлява точно това.
>> Така че е малко по-социално неудобно, но ако бихте хумор мен
само за процес от три стъпки, нека ме питат всеки на мястото има само
да се изправи за миг.
Стани.
Така че мисля за себе си, номер one-- така че всеки в тази зала,
с изключение на хората, които не са да задължи, мислите номер едно.
Така че това е вашият номер точно сега.
Това е първата стъпка, или като компютърен учен или програмист
обикновено ще направим, ние ще да започне преброяване на нула.
Ако най-малкият брой можем представлява с тези крушки
е равна на нула, като просто ги остави всички на разстояние, че може и просто
започне броенето от нула е вместо един.
И така, това е, което компютърни учени правят.
Така стъпка нула, да се изправя и мисля за номер едно.
Следващата стъпка е this-- двойка с някой стоене
и добавете номера заедно.
Чудесен.
>> Така че в този момент във времето, буквално всички участващи
се мисли за номер 2, с изключение на за един странен човек, ако имаме
нечетен брой хора в помещението.
И сега третата стъпка тук ще се this-- един от вас трябва да седне.
Един от вас трябва да седне, и ако все още стои,
върнете се към стъпка едно.
Добре.
Така че все повече и повече хора трябва да бъде в седнало положение.
Забележете, че това е индуцирана а loop-- някакъв цикъл.
Някои от вас трябва да бъде опасно остана, връщане назад и напред между една стъпка
и две, едно и две, едно и две.
Това е добре.
Първата ни бъг.
Ние ще се справим с това.
Добре.
Нека се опитаме да подтикне неща заедно.
>> На теория, само един човек е застанал като всеки продължава да сдвоите разстояние.
Но нека да ускори нещата с хората, все още стои.
Какво номер мислиш за?
46.
ДОБРЕ.
Давай напред и да седне.
Вие, момчета, които все още стоят.
Кой още стои?
Какво номер мислиш за?
ДОБРЕ.
>> Така че ние ще се върне при вас.
В гърба?
Какво е това?
22.
OK някой друг до top-- така ли?
34.
ДОБРЕ.
Ето тук на моя right-- до тук?
132, много хубаво.
22?
>> ДОБРЕ.
И кой още стои?
Над тук?
46, много хубаво.
72.
Не мога да се забави много по-дълго.
Да?
30, хубаво.
Над тук?
23?
23.
>> И мисля, че това е всеки с изключение на вас, момчета, не налягане.
О, чакай.
28?
Само осем.
ДОБРЕ.
Само осем.
Тук долу?
30.
23.
24.
18.
Това е най-лошия изпълнението на този алгоритъм някога.
ДОБРЕ.
Така че някой друг?
Някой друг?
ДОБРЕ.
Още едно.
16?
ДОБРЕ.
16.
Добре.
Така че, ако не съм пропуснал някой в блясъка тук, когато се удари Enter,
ще видим, алгоритмично, на Общият брой на хората в Сандърс.
Защото отново, това е така, сякаш всеки както ти седна, преминал номера си на разстояние
на някой друг, на някой друг, на някой друг, така че на теория,
в края на краищата, само една неудобна човек трябва да се остави стоене.
Но това е добре.
Ние ускори нещата ръчно.
Това е особено трудно да се види в този интервал.
>> А общият брой на хората ние смятаме, че сме тук, е 546.
Общият брой бях ръка от учебни сътрудници,
кой го е направил старото училище бавен начин, е 820.
>> [СМЕЕ СЕ]
>> [Аплодисменти]
>> Това е добре.
Така че със сигурност след това, там са тези грешки.
И това е добре.
И така, мисля, че обратно на това първия път, когато нещо
пишете, не е задължително да работи.
Това се е случило с мен, както и тук.
Но нека сега разгледаме как можем да прилага същата тази идея за нещо
може да сте виждали преди, което е този стар училище технология here--
наистина голяма книга на телефона.
И предполагам, че този телефонен указател има 1000 страници и 1000 имена
и номера по азбучен ред вътре в него.
>> Е, бихме могли вид прилага подобна Идеята за този много физически проблем,
просто ме използват.
Аз просто вид изневери от деблокирането на всички вас
с много и много различни процесори или мозъците изпълняващи някои алгоритъм.
Но ако това е само малко стария ми, аз все още може да
наберат, че една и съща същност на една идея на разделяне и завладяване, че проблем
отново и отново, като половината от вас, половината от вас, половината от вас, половината от вас,
теоретично съхраняват в седнало положение, докато ние останахме, теоретично,
само с един човек.
>> Така че в този стар училище technology-- не го правим
нужда от това map-- това старото училище технология,
ние може да започне да се оглежда за някой Харесва Майк Смит, една страница в даден момент.
И виждам, че не, Майк не е тук.
Аз все още съм в раздел А.
В крайна сметка, аз намирам себе си в секцията B.
И това е една algorithm-- стъпка по стъпка инструкции.
Започнете в страницата за начало и един в момент, търсят Майк Смит.
Това correct-- това алгоритъм или подход?
>> Да, това е вярно.
Ако Майк е тук, в крайна сметка Ще стигнем до него.
Но това не е ефективно.
Това е очевидно много бавно.
Така че мога да впрегнете Същите twosies подхождат.
Мога да направя нещо като две, четири, шест, осем, 10, 12.
Това е два пъти по-бързо.
Отивам да се стигне до Mike по-бързо, ако той е там.
Правилно ли е?
Да, но чух little-- не.
Сега чух никой.
Да.
Има грешка потенциално.
Може би Майк просто случайно попадне сандвич между две страници,
защото аз съм лети в това по две наведнъж.
Така че най-малко имаме нужда от някои вид на условно оправя.
Аз трябва да кажа, хей, ако удари някой, чието
име започва с Т вместо S, По-добре да се удвои обратно поне една страница.
Така бъги в началото, но поправим.
Но никой от нас не ще да се търси Майк Смит през 1000 страница телефон
Книга една страница в даден момент.
Какво е един нормален човек ще правим?
Ще отида на S-те години, ако знаеше, където S-те години.
Може да отидете грубо към средата или леко наклонен към края.
И аз гледам надолу тук и Аз съм в раздела M.
Но какво знаеш за този проблем сега,
че ние не знае непременно преди с всички нас просто се брои
еквивалентно?
Е, Майк е ясно ще да бъде в това половината от книгата
ако той е тук на всички, защото това е сортиран.
>> И така, вие можете много dramatically--
>> [Задъхва]
>> Знам.
>> [Аплодисменти]
>> Това всъщност е много лесно, ако можете да го направите по гръбначния стълб там.
Но след това можете да се хвърлят половината от проблема далеч.
Сега, аз съм останал с една и съща problem-- намери Майк Смит в телефонен book--
но сега телефонния указател започва в M и отива до Z, но е два пъти по-голям.
>> Но това е, което е впечатляващо.
Точно както в теорията, момчета, когато всичко, което седна само половината в момент,
проблемът има два пъти по-голям, два пъти по-голям, отново и отново.
Така че е станал този проблем на същия проблем, но два пъти по-голям.
Сега това е проблем на 250 страница.
Веднага след като си давам сметка, о, аз съм в раздела T случайно.
Аз бях отишъл твърде далеч.
Аз може да се хвърли, че половината от телефонния указател далеч.
Сега, аз съм надолу до тримесечие на проблема.
>> И вие може да се повтори, повтарям, повтаря, докато, на теория, ти си
остави само с една страница.
И ако Майк е на тази страница, Сега мога да се реши този проблем.
Но колко бързо е да го решим?
В първия случай, че ми отне като може би 1000 стъпки, за да намерят Майк Смит.
Това може да е било me-- Взех телефонния указател
и аз започнах да се оглеждам една страница в даден момент,
и Майк може да е 1000 страници по-късно.
>> Втори подход може би ми отнема 500 стъпки,
защото летя чрез две наведнъж.
И третият подход обаче, това е особено мощен.
Но нека да разгледаме какво всъщност направил с тази трета подход.
Ще имате това, което аз ще се обадя само на тях изявления тук, един по един.
Вземете телефонния указател.
Отваряне към средата на телефонния указател.
Погледнете имена.
И тогава нещата стават малко по-интелектуално интересен,
ако все още прост.
Ако Смит е сред най- Имената на който текущата страница,
След това направи нещо условно.
Това е като разклонение на пътя.
Обадете Майк.
Ако Майк е сред имената на тази страница, наречена Майк.
Но само, четвърти ред, ако линия дърво, ако щете, е вярно.
Отговорът на този въпрос е положителен.
>> Иначе, ако Смит е по-рано през book-- с други думи, ако аз съм в раздела M
и аз търся някой, който да отляво, след това какво да правя
е нещо много подобно.
Тогава трябва да се отвори към средата на лявата половина на книгата.
Така че отидете наляво, а след това върнете се към стъпка две.
Вижте имената там.
>> Така че, с други думи, да направи същото нещо, но върху един проблем, който е бил намален наполовина.
Знаеш ли какво друго?
Ако Смит е по-късно в книгата базирани на страницата гледам,
отворен към средата на дясната половина на книгата
и след това се върнете отново към стъпка две, else--
има четвърта възможност тук.
Майк нито тук, нито в ляво или надясно, или не съществува.
И тук ние по-добре помисли за това.
И в действителност, ако някога сте имали вашия компютър просто се блъсне в теб,
че е понякога, но не винаги, резултат на просто човешко програмист не
осъзнавайки, о стреля, има всъщност този четвърти сценарий.
И ако не се напише код да се справят с този сценарий,
понякога не знаете какво може да направи компютъра.
И наистина една програма може да се срине.
>> Но в този случай, аз мислех, за това, и аз казах, иначе се откажат,
защото това е четвъртият логически възможен сценарий.
Сега, нека просто да добавите някои лексика, така че ние
може да започне да хвърля около термини, които иначе са доста интуитивен.
Всичко от нещата, аз току-що подчертано в жълто тук,
Аз съм просто ще на функции или процедури.
Те са просто вид действия.
Така че вземете, отворени за, изглежда най-, обадете се, отворен, открит,
quit-- това са само действия, или ние ще ги наричат ​​по-официално, функции.
>> В същото време, сега в жълто, Аз бях подчерта неща
that-- нека просто започнете да се обадите тях условия или клонове.
Това са решения точки, където е може да отиде по този начин, по този начин,
или някаква друга посока все още.
Така че тези, които ще бъдат условия.
И сега това е малко по-сложен.
Нека да наречем тези въпроси Булеви изрази,
след някой с фамилия Булева.
>> И булева израз е просто нещо,
това е било вярно или невярно, да или не.
Така че това е въпрос, чийто отговор ви интересува, за да в състояние
направи decision-- се върна отговор, и после наляво или надясно, или нещо
съвсем друго.
>> И след това на последно място, те линии here-- датират
към стъпка две, се върна към стъпка two-- бихме могли да
прилагане на тази идея по различни начини.
И тогава тези от вас, с програмиране опит би направил
или да си представите прави това по различен начин.
Но за днешните цели, това е просто идеята, че има значение.
Това е предизвикване на това, което ние по принцип ще се обадя
а loop-- някакъв цикъл, защото това ме кара да се направи нещо отново.
>> Така че сега, нека просто да разгледа колко е добър този алгоритъм е.
Вярно е.
Ако Майк в книгата, това е един от тези четири scenarios-- отново и отново
и отново, ние ще го намерим.
Но колко е добра?
Е, ние не трябва да бъде твърде формално тук.
Но нека просто парцел нещо, х и у, за да получите
чувство на формата на този проблем.
>> На оста х тук е размера на проблема ми.
И те по ордината тук ще бъде времето за решаване.
Така че може би това е броя на страниците.
Може би това е секунди или страница turns-- каквото.
Въпреки това, което искате да разчитате е какво ще представлява тази картина.
И че първият алгоритъм, аз ще съм да се опише като само една права линия.
Ако има н страници в книгата на телефона, а след това
може да ми отнеме най-много както н стъпки, за да се намери Майк.
Ако Verizon или телефонната компания добавя още една страница на следващата година,
тя може да ме вземе още една step-- още една единица от време, за да се намери Майк.
Така че има само тази 12:59 съотношение.
Това е един наклон права линия.
>> Междувременно, че второто algorithm-- ако съм
Ще двама в time-- две, четири, шест, осем, или double--
става чрез страниците два пъти в даден момент, две в даден момент,
тя все още е права линия.
Има сега е един до два съотношение, но малко по-ниско.
Така че, ако има толкова много страници на графиката тук в жълто,
че може да ми отнеме това много стъпки или секунди,
в противен случай тя ще ме вземе два пъти повече от червената линия.
>> Но зелената линия е истинската храна за вкъщи.
Това е, което ние обикновено наричаме logorithm-- дневник
п, където п е броя на страниците.
Но това е формата, която има значение днес, защото ние нямаме
дори да мисля за заговор точки.
>> Помислете за екстремен сценарий.
Да предположим, че Verizon утре удвоява брой страници в които телефонен указател,
от 1,000 до 2,000.
В първия алгоритъм, I може да губите допълнително 1000
стъпки, които търсят Майк, просто защото Verizon удвоява размера на книгата.
Вторият algorithm-- тя може вземи ме допълнителни 500 стъпки.
още 1000 страници, отивам две по две time-- повече от 500 стъпки, за да намерят Майк.
>> Но тази трета алгоритъм е вид магически.
Verizon удвоява броя на страници от 1000 до 2000,
Но колко повече стъпки прави го вземе от мен да се търсят Майк?
Това е само един, защото мога просто разкъсване на телефонния указател още един път
от проблем с 2000 страница на 1000 страница проблем, и готово.
Аз бях взети масивна ухапване от него.
>> И ако отидете наистина изключителна, Предполагам, че в телефонния указател
компания имаше нещо толкова луд телефонен указател на 4 милиарда страница.
Ами колко стъпки да го взема да се намери Майк Смит в 4 милиарда
страница книга телефон?
Това е голям брой, но само 4 милиарда до 2000000000-1000000000, за да 500 милиона евро,
250 million-- още звучи като големи числа,
но аз съм много бързо Как да стигнем до по-малки стойности.
>> И в действителност, ако го направя по математика Добре, мога само да се разделят 4 милиарда
от около 32 пъти, преди да Получавам до само една.
Така че, ако това телефонния указател са 4 дълго милиард страници, не е голяма работа.
В рамките на няколко секунди, може би 32 секунди, бих могъл да го разделят на половина
и в крайна сметка намери Майк или заключим, че той не е там.
И това е същността на algorithm-- добър алгоритъм.
И това е една от най- цели на клас като този,
се опитвам да разбера как мога да решаване на проблема не само правилно,
като винаги съм знаела как да го направя един страница на time-- но правилно и добре.
Как да се изработи добър решения на проблеми?
Така че нека да отнеме малко време тук и ще ви даде усещане сега
на CS50 хода itself-- въведат членове на персонала на няколко курса.
Точно преди 2:00, ние ще вземе кратка почивка
така че тези от вас, които пазаруват може
патица навън и да вземе разгледаме някои друг клас
и догледа този онлайн.
Но за сега, нека представим CS50, самата класа,
и по-специално това, което е ново.
>> Така че изминалата пролет, ние прекарал доста time--
персонала на курса и I-- мислене за това, което е, което искаме CS50 да бъде,
и да се върне към първата принципи, така да се каже,
да се помисли какво е, което искаме Това, разбира се, за да изглеждат и да е
като за своите студенти.
И така, вие ще видите в проблем настроите нула, както и, покана
за да разгледаме, че URL, който обобщава
някои от мотивите зад следните характеристики на есен 2016.
>> Така че, както може би сте се възприема от TL: помагалото DR,
днес учебната програма, както и от каталога Разбира се, тази година в CS50,
от вас се очаква да присъстват само today-- така работата добре done--
и последната лекция на 21 ноември.
И вие сте добре дошли, но не се очаква да присъстват на тези лекции в средата,
защото това, което правим тази година, е стрелба
в реално време материала на курса.
Така че всичко ще остане ток и включена
като най-добре ние can-- текущите събития и разговорите, които хората биха могли
се налага в промишлеността в свят, но прави този материал
достъпно, като резултат, дори earlier-- пълен с пълен текст преписи
и възможностите за търсене и връзки към други ресурси.
>> И наистина, ние сме били твърдейки, за известно време
и сега ние вярваме, че това, че ние можем да създадем, дигитално,
по-въздействащо, по-убедителна образователен опит, за разлика
за събиране тук около 23 пъти в човек, като изслуша някой ме харесва
просто говорим за компютърни науки, за разлика от по-активно участие.
Така ще видите в учебната програма на курса скица на семестъра тук,
заедно с, когато лекции ще бъде заснет, за което сте
добре дошли, но не се очаква, и кога ще
да се публикува в интернет страницата на курса.
>> И това, което ние ще направим тук, на Сряда, започващи през следващата седмица,
е много по-интимно, само с тези хора, които искат да участват,
е така наречената разходка, където I и глави на курса
всъщност ще направи нещата по- малко по-интимна
тук в оркестъра раздел, все още има някаква технология
и разходка из текущата седмица проблем набор,
и ви предлагаме particularly-- ако сред тези по-малко comfortable-- още по-
насоки, които може да искате или необходимо за влизане на седмицата.
И по същия начин, за тези, които не могат присъства на тези в лице, не е голяма работа.
Там ще бъде водена по същия начин, като един от висши служители на курса,
Zamalya, същата възможност вграден в проблема определя себе си.
>> Проблем определя тази година ще бъдат освободени в петък
и вече не правя седем дни по-късно, но 10 дни later-- умишлено
припокриване с всеки проблем определя, така че по-добре да се настанят,
ние се надяваме, приливи и отливи в графици студентски,
особено когато изпити или атлетика или академици или extracurriculars
са склонни да идват и си отиват особено в средата на семестъра.
Това трябва да ви даде малко повече право на преценка дали сте пред
зареди си седмица с CS50 или обратно натоварване то върху вместо следната уикенда.
Така че изглежда да учебна програма на курса тук за графика от него.
И вие ще забележите също сред промените тази година,
за тези, които по-добре запознати с програмиране в миналото,
ние ще започнем семестъра като ние ще днес в Scratch,
фокусира особено върху езика наречен C, а след това не се преход
за PHP, но в по език, наречен Python към края на семестъра
в контекста на уеб програмиране, заедно с SQL и JavaScript,
HTML, CSS, и още повече.
>> И в отговор на въпроси, това е наистина е така
че CS не е толкова страшно, колкото аз веднъж Мислех, че е, но това е толкова много работа
както бях чувал, че може да бъде.
Но това е да кажа, че тук са някои статистика от есента 2015 г. студент тяло,
при което хоризонталните сини линии представлява средния брой часове
Отчетените.
И ще видите, средно шест до 10 до 12-- може би 16
или така и така нататък, но с висока вариация да бъде ясно.
И така осъзнават, че има не само студенти по-удобно и по-малко
удобно в хода, но съответна подкрепа
структура, за да получите тези студенти през семестъра успешно.
>> В действителност, в отговор на въпроси, трябва вземете CS50 като първа година?
Абсолютно.
И в действителност, аз не съжалявам тъй като не бяха намерени по моя начин
или намери ново поле че първата година, както добре.
И трябва да ви отнеме CS50 с други курсове, със сигурност като well--
и общите съвети бихме могли даде на студентите, че CS50 е вероятно
не от вида на класа или интро клас че трябва да се вземат с три
друга или четири други р-определени класове.
Но ако сте като две други р-комплект класове, нещо друго, и CS50,
абсолютно управляем.
Аз съм имал много ученици в покрай направили това доста успешно.
>> И за да получавате към това завърши успешно линия,
няма време да има sections-- различни писти за студенти
по-малко удобни, по-удобно, и някъде по средата,
при което в курса първият проблем набор,
Вие ще бъдете помолени да се опише.
И ако вие сте сред тези, които по-малко удобно, това е едно от нещата,
че просто по-скоро знам.
И наистина, че е бил на нарастващия демографски в CS50
за доста години.
>> Както от миналата есен за Например, 58% от класа
описано себе си като сред тези, по-малко удобни,
с 9% сред тези, по- удобен и след това
другите ученици там в червен себе си, описваща
като някъде по средата.
И ще видите тук темите цялостната и график на секции, всяка от които
Предлагат се в човек, в реално време, с курса
Удивително персонал на преподаване събратя и сътрудници Разбира се, някои от които
ще се срещнат в един момент.
>> Раздели себе си, както ще видите, ще да е понеделник и вторник и сряда,
така че да се позволи да се потопите след извършване, ако така
изберете, в курса лекция по-рано тази седмица.
И след работно време, което Със сигурност, с всяка изминала година,
са не по-малко от предизвикателство за курса.
И тази година, ние не планираме само да заемат съответната длъжност hours-- един
на един възможности за помощ за студенти в сряда четвъртък
и неделя, последният от тези, като в следобедните часове с дизайн
да намали някои от стреса, че неизменно възниква с късно вечер
р-settting с краен срок looming-- но работно време също ще бъдат предложени
в понеделник и вторник и Сряда и петък и събота,
Благодарение на нашите приятели в HSA.
>> CS50 сега има собствен пространство за студенти и персонал CS50,
на върха на планината Auburn Стрийт 67, точно там в Харвард Square.
Визията за което е, че CS50 е TFS и КО през седмицата,
почти през по-голямата дни, ще бъдат там за подкрепа.
Така че, ако имаш някаква въпрос на р-комплект
или ако се чувствате по-малко блокирани или малко объркан,
и чесало, имаш един час, или половин час между класове,
особено в square-- може да ви поп и имат този въпрос отговори
на са, че объркване clarified-- много в духа,
вие сте запознат, на математиката отдел собствената математически въпроси център,
но почти денонощно на [? Gcal?], Че ние ще публикуваме онлайн.
>> Частни уроци също е на разположение за тези, студенти, свободно от курса
собствен персонал, ако искате -интимна един по един,
или само два или три съученици, които работят с един от членовете на персонала на курса.
И наистина, тези тук са само някои от членовете на персонала на курса,
някои от които вие ще срещнат в един момент.
В действителност, CS50 собствена главата преподаване колега,
и разбира главата асистент, и наставник,
може да дойде по нагоре, позволи тях да кажа здрасти.
>> [Аплодисменти]
SPEAKER 1: [недоловим].
>> [Аплодисменти]
SPEAKER 2: [недоловим].
>> [Аплодисменти]
SPEAKER 3: [недоловим].
>> [Аплодисменти]
>> DAVID Малан: И ни позволи да донесе на борда двама от CS50 най-
висши служители, Роб и Zamayla, както добре.
>> [Аплодисменти]
>> В действителност, както и Rob Zamayla са с нас
за толкова дълго време, че аз бях в състояние да отиде в архивите CS50 е
и да намерят това много SD кадри от тях, участващи
върху себе си етап преди няколко години.
ROB: [недоловим].
>> [Аплодисменти]
ZAMAYLA: [недоловим]
>> [Аплодисменти]
DAVID Малан: Благодаря ви.
Така, в допълнение към тези членовете на екипа тук
CS50 разполага с екип от близо 100 членове на персонала, всички от които
ще бъде на разположение за секции и работно време и много повече.
И като Роб казва също, че това е най-значителен ремонт
на CS50 в 10-те години, че Аз съм бил в [недоловим].
[Недоловим] фокусира особено за осигуряване на носеща конструкция,
подстригване далеч много по-голямата част, че е било по-
натрупани след 10 години на повтарящи се събития
върху проблемните комплекти на курса.
>> Така че тази година, не само в клас, но също под формата на проблем на курса
комплекти, трябва да ви намерят неща бъде по-опростена, машинка за подстригване, много
по-лесно управляеми, отколкото през последните години, тъй като ние
хвърли на багажа, който е разработена от природата на развиващата година
след година и следващите стъпки.
Така на нови и подобрени започва днес.
>> Ще се срещнат с някои повече от персонал разбира се в [недоловим]
в 2:30, където ние служим, като традиция, торта.
Има малко повече торта от това, но ще
Запознайте се с Ерин и Тобиас и други все още.
И нека да ви дам обиколка, преди да чуе
от някои от другите членове на персонала в класа, на което очаква, както добре.
В действителност, ние винаги започне CS50 е семестър тази събота, на
с това, което се нарича CS50 Puzzle ден.
>> Това няма нищо общо с компютърни науки по себе си,
но с около проблем решаване на по-общо.
И ако решите да участвате, на някои от поканите,
може да си видял на вратата изпуснат или на сцената тук,
това е една възможност в екипи на две или три или четири,
да участват за пъзели и пица и награди и MORE-тази събота,
Останете на вълната за повече.
>> Ще откриете също, че всеки Петък, при Огън и лед,
се CS50 донесе куп студенти
на обяд, за да направи голям клас се чувстват по-интимен,
и като цяло да обедини възпитаници и приятели от промишлеността
да се говори за това, което са били до тъй като се дипломира.
По същия начин, тази година, ще можем откриването на първата по рода CS50 50
кодиране contest-- средата на семестъра възможност да се даде възможност на всички
за неучастие в базата, за да имат предизвикателство на акъла срещу съученици,
отново в отбори по двама или трима, или четири, като се използва само програмиране
разбирам, че тогава ще трябва в рамките колана си след само шест или седем
седмици за съответния клас, както и участващите в този вид конкуренция
online--, ако искате да усъвършенствате своя собствена умения още повече в това предизвикателство.
В края на семестъра се т.нар CS50 Hackathon--
възможност, която започва в 7:00 PM завършва в 7:00 AM, и по протежение на пътя
12 вечерни часове, в които да се потопите в окончателния project-- на курса
възможност за проектиране и приложат почти всичко от интерес
да сте с учението си насоки и паднаха заедно.
Около 9:00 правим обикновено служат пица, 01:00 AM,
Филип, и малцина от нас които все още са будни в 5:00 AM,
са трансфер целуна по път да ИХОП за закуска.
>> И след няколко дни по-късно е така наречената CS50 fare--
на края на семестъра изложба в празнуване на колко далеч толкова много
на CS50 студенти идват от седмица нула през целия път до седмица,
и като се има предвид, че 73% от тези, съученици и твое тази година имат
Никога не вземе клас CS преди.
В действителност, за да reemphasize толкова, тук е още няколко лица от персонала CS50 е.
SPEAKER 4: [недоловим].
SPEAKER 5: [недоловим].
SPEAKER 6: [недоловим].
SPEAKER 7: [недоловим].
SPEAKER 8: [недоловим]
SPEAKER 9: [недоловим].
>> SPEAKER 4: [недоловим].
>> SPEAKER 10: [недоловим].
SPEAKER 11: [недоловим].
SPEAKER 12: [недоловим].
SPEAKER 13: [недоловим]
>> SPEAKER 14: [недоловим].
>> SPEAKER 13: [недоловим].
SPEAKER 15: [недоловим]
SPEAKER 16: [недоловим].
>> SPEAKER 11: [недоловим]
SPEAKER 5: [недоловим].
DAVID Малан: Някои от екипа са сами пазаруване класове.
Но ако тези членове на персонала CS50 са тук,
може да дойде по нагоре само за миг.
CS50 на TFS и КО и [? персонал ?] членове here-- това са само някои от тях
на faces-- един от които просто Видях, и няколко other-- и няколко други
все още.
Защо не отидете напред и да се даде възможност вие, момчета, на пет минути почивка.
Ако трябва да се наведе, за да магазин класове, това е добре.
И след пет минути, ще се възобнови, като погледнете Scratch-- първият
на нашия език за програмиране, да отговаря персонала на курса тук още малко,
и се съсредоточи в крайна сметка на проблема определя нула.
Така че ние ще се върна след пет минути.
>> Добре.
Така че ние сме назад.
И в нашия оставащото времето днес, целта
е да създаде равни условия от гледна точка на някои термини,
от гледна точка на някои идеи.
Защото наистина, както на някои от класациите по-рано,
там ще бъде кръг от нива на опит в този клас,
някои от чиито ученици имат предприети някои програмиране и преди,
някои от които не са.
И така, с този първи проблем определя и с този първи език
имаме възможност да започнете да приемаме за даденост, след днес
някои общ речник и идея.
>> И ние ще направим това, като начин на първо languages-- на курса
в допълнение към С и Python и JavaScript и SQL и HTML и CSS,
ние ще се фокусира първоначално и само за проблем зададете нула
на този графичен език, наречен Scratch, разработен от Медия Lab на Масачузетския технологичен институт
надолу по пътя, за да помогне студенти и деца, особено
изразят себе си algorithmically-- по начин, по-последователно с това,
бихме могли да наречем изчислителна мислене.
>> И това е един полезен език, защото много бързо през следващата седмица в една седмица,
имаме преход към по- традиционна и тайнствена език, наречен
С, което е чисто описание.
Можете да използвате само клавиатурата в За да напишете инструкции
като тези на екрана.
Но дори и ако никога не сте виждали език за програмиране и преди,
само като погледна това, всички да го загадъчен,
Вероятно можете да се досетите, че вероятно отпечатва Hello World.
Но има и много синтактичен режийни там.
Там е странно хеш символ или хеш таг до върха.
Има ъглови скоби, някои скоби, фигурни скоби, полу-colon--
има само толкова много визуален синтаксис, който се изпречи на пътя.
Започваме хода с Scratch, така че да се получи
покрай всички тези интелектуално безинтересни отвличане на вниманието,
и вместо това се насочват на идеите.
>> В действителност, това може да бъде преди.
Това, за това, седмица ще бъде подир.
Това, в графичен език Scratch,
е как ще се приложи същата program-- програма, която, когато стартирате,
просто казва здравей свят.
И това, което е хубаво за Scratch е че това е това графично програмиране
среда, която използва пъзел парчета или блокове, че блокировка само заедно
ако го прави логически смисъл да го правят.
И с Scratch може да развиете анимации и интерактивни игри
и изкуство, и произволен брой неща, които можете да си представите в собствения си ум,
и ги прилага само чрез плъзгане и пускане пъзел парчета.
>> И наистина, ние ще имаме възможността да изразя някои от същите идеи
че току-що споменах момент Преди в контекста на Майк Смит
и търсене на телефонни book-- неща като функции, само на действия,
неща като електрически вериги, които правят неща отново и отново
променливи, което е нещо, което ще се въведе,
но това е запознат може би от algebra-- просто някакъв вид заместител
за съхраняване на някои стойност може да се нужда later-- булеви изрази,
където тези да не или истина фалшиви въпроси от преди.
Условията са тези вилици в road-- тези клонове така да се каже.
И след това има някои красиви функции, ще видим дори и днес,
наречени масиви и конци и събития, които ще след което посети над
време на различни езици.
Но Scratch ни позволява да проучи всички от тях.
Така че тук, в самото начало, това лилаво блок е това, което е функция е типично
ще изглежда.
Това лилаво пъзел парче, че има някои Думата като да речем, което е действието,
и след това може да има аргумент или parameter-- някакъв начин
от рода на персонализиране какво, че блок прави
така че това не е предварително определена от MIT какво казва този лилав блок.
Всъщност, вие ще видите в момент, че аз съм в състояние да въведете
думите като здравей свят, или здравей Дейвид, или здравей Zamayla,
или каквото си искам, в аргумента за които пъзел piece-- бялото поле
там.
В същото време, ако искам една линия, ние ще видим, че там е пъзел парчета, които
изглежда малко по-оранжево като този.
И формата си вид подсказва, че нещо се случва отново и отново
в един цикъл.
>> Така че, ако аз увийте кажа здравей свят блок с вечно блокира в Scratch,
това е просто ще продължим да казва здравей свят завинаги, съвсем буквално.
В същото време, има и друг тип на линия в Scratch
че ние ще see-- повторение block-- където, ако
знае предварително колко пъти искате примката, за да изпълни
краен брой пъти в теб fact-- да се уточни, че чрез въвеждане на редица
или дори да включите в една променлива, като х или у, както ще видим.
>> В действителност, променливи като Аз в този случай, който
е общо наименование за число променлива, която
просто съхранява number-- цяло число може да бъде,
за да използвате този оранжев блок тук, за да задаване на променливата като аз до нула.
Ето един пример в зелено на Булев израз в Scratch.
Въпреки че това изглежда като математика формула, неравенството по математика, като този
наистина са булеви изрази.
Това е било вярно или невярно.
I е по-малко от 50.
Това е било един отговор да или не или вярно или невярно отговор.
И ние като цяло ще се обадя тези булеви изрази.
И това не трябва да бъде 50.
Тя може да бъде по-малко от X Y, по-голяма от Y, равна y--
произволен брой други може да се задават въпроси.
>> Сега, на пръв поглед, това може да изглежда изведнъж доста смела тук, и това е.
Но концепция мъдър, това е доста познати от преди.
Ако X е по-малко от Y, отколкото казват повече.
Иначе, ако х е по-голямо от Y, тогава се каже толкова много.
Иначе казват, х е равно на х.
Така че ние имаме един пример там на трета scenario--
единствената трета possibility-- X е или по-голямо от, по-малко от, или равно на.
Така че ние имаме три начин разклонение на пътя.
>> И забележи какво е готино here-- Scratch, то ще изглежда, има само един пъзел
парче, в този случай, в случай друг блок.
И все пак, че би било да сте предполага да само да има два начина разклонение на пътя.
Можете да отидете наляво или надясно, но какво да кажем, че третият сценарий?
Какво става, ако х е равно на Y?
Не е голяма работа.
Вземете един пъзел парче, сложи още един вътре в него
за създаване на семантичен еквивалент на ако, иначе ако, else-- и сега
имаме си три начин разклонение на пътя.
И както ще видим, на Scratch пъзел парчета
може да се разтегне и да растат, така че като да се тъпча повече неща в тях.
Не е нужно да се поберат всичко в неговия размер по подразбиране.
>> Това е нещо, което ще скоро виж се нарича масив.
Това е като list-- някакъв начин на съхраняване на няколко вида информация
в променлива, а не само един брой.
Те ще видим представител на нещо, наречено многонишкова.
В действителност, всички от вашия Mac-ове и персонални компютри в наши дни
подкрепа многонишкова, което означава, че може буквално
направя няколко неща наведнъж.
Можете да имате Microsoft Word нагоре в преден план, работим по някои есе.
Може да имате браузър в откриването на фона
G-поща или Facebook или други подобни.
Вашият компютър може да направи няколко неща днес, тъй като е многонишковите,
и програми, те са в в специално също са многонишковите.
>> Има неща, наречени събития като добре в света на Scratch,
и след това има начин също да се направи нашите собствени парчета обичай пъзел, ако нещата
не съществува в реалност по-рано.
Така че нека да мотивира това, както следва.
Преди няколко години, когато аз първи открили Scratch,
когато бях всъщност е град студент в Масачузетския технологичен институт, ние
себе си задача бе да направи домашното.
И аз implemented-- които, в ретроспекция,
Беше много лошо решение, защото това е най-вбесяващо песента в света
да слуша в продължение на осем часа по време на работата на вашия homework--
но нещо се бях наречен Оскар Time, което е може би една позната песен.
>> CS50s притежават Йордания Хаяши, един от ни повече висши членове на персонала,
го е обновен за 2015 г. и Сега 2016 г., тъй като през деня,
Имах всичко, просто ще в кофа за боклук на Оскар.
Сега ние подкрепяме рециклиране и компостиране.
>> Но за да нарисува картината от това, което можем да направим тук
и да мотивира някои от примерите по-ниско ниво,
бихме могли да се получи един друг доброволец да дойде само по нагоре
и играе първата ми Задача за домашно някога?
Хайде нагоре.
Как се казваш?
>> ХЕНРИ: Хенри.
>> DAVID Малан: Henry, хайде нагоре.
Хайде нагоре.
Ръководителят така или иначе, и ще видим след малко,
Отивам да се продължи напред и удари зелен флаг в горния десен
ъгъл, което означава, отидете.
Иконата за малко знак стоп ще каже стоп,
и това е, когато започнете и спиране на програмата.
Приятно ми е да се запознаем.
Добре.
Така че ние ще видим инструкциите на екрана в един момент.
И само с игра на тази игра за няколко seconds-- ми доверие,
ние няма да искат да играят по целия път до end-- щете
се получи усещане за това, което програмата прави.
И повече от това просто да се съсредоточи върху Хенри е добро или лошо в тази игра, фокус
и как е бил реализиран от мен първоначално и след това от Йордания.
С други думи, когато променливите?
Къде са примките?
Къде са функциите?
И ние ще видим, ако ние не виждаме тези, под предния капак.
>> Просто кликнете и плъзнете боклук до съответния кофата.
>> [МУЗИКА]
Добре.
Това е много добре.
Защо не го спира дотук.
Благодаря.
Честито на Хенри.
Благодаря.
>> [Аплодисменти]
>> Само си представете, отстраняване на грешки, че програма.
Ако има проблем две та song-- но така
какво става тук наистина?
Толкова сложно, колкото той може да започнете да изглежда да получите в течение на времето,
Наистина все повече и повече неща започнаха да падат,
това, което е интересно за този вид example--
и ще видим няколко others-- е, че ако
погледнете миналото сложността или сложността на играта,
има една много проста сграда блокове, които play-- всички от които,
ако ги дестилират до тези, строителни блокове, са много достъпни
и приложими за себе си.
Например, това е било известно време, но аз съм
сигурен, че това, което първоначално е направил, когато като тази игра за първи път
Аз бях напълно като отлага.
Аз не се фокусира най-вече на логика или парчета от пъзел,
Аз се фокусира върху графиките и намиране уличната пост и кофата за боклук
и всичко това.
Но тези, които са предпоставка съставки на първо време.
И след като завърших протака и очертаване рамките на всеобхватна,
Реших, нека само да се направи една парче боклук падат от небето.
И ние ще видим Scratch поддържа неща, наречени
sprites-- символите, които могат имат различни костюми на така те
изглежда различно.
>> И така, аз слагам една кофа за боклук костюм за един такъв дух.
И аз просто се нуждаеше да падне от небето.
И така се оказва, Scratch, като повечето езици за програмиране,
подкрепя случайни числа или технически Псевдокод случайни числа,
така че чрез плъзгане и отпадане на някои парчета от пъзел,
Аз бях в състояние да имат боклука идват от ляво на първо време.
И след това следващия път, когато тя падна, от отдясно и след това от средата.
И всичко в играта е била само има боклук, падащи от небето.
Вие не може да ни насочи към него или кликнете върху него.
Вие не може да отвори коша за боклук.
Вие не може да направи нищо.
Но това беше стъпка бебе към моя крайната визия.
>> И след това, аз всъщност осъществява някакъв вид
на наблюдение, така че ако ви е кликнал и плъзнете върху парчето боклук
над кутията боклук, Оскар капак ще се отваря и затваря.
Нищо няма да се случи в кошчето, но най-малко на капака ще се отваря и затваря.
Така че след проверка, втора стъпка на две.
И това е, което ще бъде ключ и в двете проблем зададете нула
и в програмирането-общо е вземат тези много съзнателни стъпки на бебето.
Защото той не само да позволи чувствам честно постига много по-
quickly-- Това е най- най-лошото нещо на света
да се опита да приложи всички Оскар Time, След часа по-късно се появи на зеления флаг,
и нищо не работи както се очаква защото, когато правиш дори
започват да се трасира или да отстраняването на тази програма?
Това е просто поразителен.
>> И така наистина обхващащ тази идея на вземане steps-- стъпки на бебето отново
и again-- изграждане нещо, което е, в крайна сметка,
наистина впечатляваща и сложна, но На първо място, не е чак толкова много, така.
Всъщност, нека да направим това.
Нека вървим напред and-- самата Изтъркайте съществува в интернет на Scratch.MIT.edu,
и ще бъде разказана като много отново в проблем
настроите нула, в спецификацията който е вече на сайта на CS50 е.
>> Но това е, което Изтъркайте себе си е.
И там е наистина само три основни области.
В горния ляв ъгъл има е така нареченият етап.
Това е Scratch.
костюма по подразбиране е котка.
И това е правоъгълна света в които можете да move-- нагоре, надолу, наляво,
полето и някои други неща.
В средата тук са нашите категории или нашите палети на пъзел парчета,
и различни цветове означава различни неща.
И ако мушкам наоколо, ще видите неща, като линии и условия
и променливи и други съставки.
>> И след това тук е зоната на скриптове.
Това е мястото, където мога да влачите и пускате тези пъзел парчета, за да правят неща.
Така че нека да направим едно такова нещо.
Нека вървим напред and-- и аз знам къде е.
Така че аз ще се веднага кликнете върху където знам, нещата са готови да бъдат,
но отворите и кликнете и дълго обикаляне са неизбежни.
Така че, когато зелен флаг кликнали, какво искам да правя?
Отивам да се направи това.
Отивам да плъзнете това лилаво пъзел парче, поздрави за две секунди,
и нека да я увеличите инча
>> И аз отивам да се промени това да бъде това, което искам да be--
Здравей, свят в продължение на две секунди е добре.
Сега, аз отивам да натиснете зелен флаг, или ако наистина искам,
Аз пълно да го екран и след това се върна.
Тя просто ще се запази всичко в един прозорец.
Green flag-- здравей свят.
Добре.
Не всички, че интересно.
Така че нека да вървим напред и да направим това.
Нека се опитам още един.
Когато зелен флаг clicked-- позволим направя нещо като звук.
И забележи, че от кутията безплатно можете да получите
звук котка, както е спрайт по подразбиране.
Така че сега нека да вървим напред и да удари зеленото знаме сега.
>> [Мяукане]
>> Ужас.
Това е възхитителен.
Аз съм програмиране.
Така че това, което съм направил?
Това е еквивалентът на една програма.
Това е очевидно супер проста.
Тя наистина не се вземат всички, че много усилие и MIT направи голямата част от работата,
но аз виках функция.
Използвал съм функция.
Аз направих някои действия, като се използва само че едно лилаво пъзел парче.
>> Е, ако искам да направя три meows в ред?
Нека да вървим напред и да направи две и три.
И забележете, че когато навъртам наблизо пъзел парче,
Изглежда малко бяла линия сортиране на магнитно,
и ще щракне заедно, когато се пусне.
Нека видим какво се случва тук.
>> [Мяукане]
>> Има грешка.
Аз само чувам едно мяу.
Защо, че може да е?
Да?
Да.
Ние наистина не го чуе, но това е добра интуиция.
Всички те са играят по едно и също време.
Защо?
Е, компютърът е просто ще да направи това, което той каже да направя.
Така че, ако ви кажа, играта на звук, играе звук, играе звук,
но не го кажа, за да играят, докато сте готови, играе, докато сте готови,
това ще взриви чрез програмата много по-бързо
и не само това, което ви го кажа, за да се направи.
>> Така че аз всъщност трябва да се определи това в няколко начина.
Мога просто да направите това, да се отървете от този.
Нека се опитаме тази друга пъзел piece-- играе звук мяу докато направи,
и след това плъзнете три от тези и натиснете Пусни.
>> [Мяукане]
>> Това не е наистина very-- благодаря you-- много естествено.
Така че защо да не I-- нека отида да контролира тук.
Ница.
Изчакайте една секунда, а сега нека се върнем да звучи, и да играе звук, докато се направи,
и след това ме остави изчака една секунда.
И след това да ме пусне и да получите един повече звук, и тук и да отидем.
>> [Мяукане]
>> Малко по-естествено, но това не е много ефективен.
Както аз получавах отегчен, всичко да бъде то за кратко, като кликнете назад и напред
и наистина да дублира ми work-- почти копиране и поставяне.
В действителност, ако мога да контролирам кликнали или дясно щракване,
Аз може просто да копира и поставя.
Какво би било по-добре се конструира да се използва?
Какво идея от преди?
>> Да, така една линия.
И в действителност, ако ние мушкам наоколо, ние може да намерите точно това.
Пусни ме да събития или по-скоро контрол.
Така repeat-- аз не правя искам тя да бъде 10 пъти.
Това ще се безпокоя бързо.
Но аз ще се повтаря три пъти.
Нека се върнем към доброто и играе на звука, докато това е направено.
Нека се върнем към Control и просто изчакайте една секунда.
И предизвестие, може да се мисля, че това не се вписва,
но отново ако магнитно му позволиш щракване на място, то ще расте да се запълни.
Какво го играят сега?
>> [Мяукане]
ДОБРЕ.
Ница.
И това е, което ще се нарича програма, която също е вярна.
Той измяука три пъти сравнително естествено, но това е по-добре проектирана.
Аз съм с по-малко съкращения.
Не копирайте нищо.
Аз просто се използва по-добра идея.
>> Сега, това все още не е всичко, което Интересно с Scratch не прави
нищо.
Така че нека да направим нещо друго, вместо.
Нека да направим нещо завинаги.
И знаеш ли какво?
Предложение изглежда интересно.
Нека да го премести 10 стъпала и хит играта сега.
>> ДОБРЕ.
Ами можем вид на плъзгане го върна, и той все още е
ход, тъй като той прави това завинаги.
Така цикълът се справя това, което казва, да се направи,
но това не е всичко, което интересно.
Да го направим.
Нека добавя контролен блок, и се използва един на тези условия за първи път.
>> Така че това ще се движат 10 steps-- 10 точки, 10 пиксела на screen--
След това то се случва да зададем този въпрос.
Ако нещо е вярно, след това направете нещо вътре в този блок.
Така се оказва, наблюдение има цяло куп Булева expressions--
въпроси на ДА НЕ или истина невярна form-- нека направим това.
>> Ако touching-- и тогава там е това малко падащо меню.
Мога да го задаване на параметри.
Ако докосва edge-- позволим направи нещо такова.
Така че, ако докосва edge-- Нека се върнем към движение.
И защо не можем просто завърти на 180 градуса?
Добре.
Така завинаги, се движат на 10 стъпки.
Ако се докосва край, обърнат на 180 градуса.
И това не е края на програмата защото вие сте в една завинаги блокира,
така че ще отида отново и отново и отново и отново.
Така че нека да видим какво ще стане.
ДОБРЕ.
Малко по-бъгав, но някак страхотно.
>> И ние можем да добавим към това някои глупави неща че не всичко, което интелектуално
интересно.
Но ако ние се удари тази малка микрофон button-- ох.
Нека да се почисти това нагоре.
Нека да се подобри това като те биха казали по телевизията.
Почистете, че нагоре, Save, и Сега отидете до скриптове.
>> А сега, нека да продължа да звучи.
Нека му се даде име.
Ще се обадя на този ох.
И сега играе звук ох.
Забележете, че се появява в малко падащо меню.
Да видим.
>> [Ох]
>> [СМЕЕ СЕ]
Но ние можем да променим тона си в движение.
Ние можем да бъдем два пъти по-досадно.
>> [Ох]
>> Или ако го направи като 1000 стъпала на time--
>> ДОБРЕ.
Така че ние ще оставим, че едно самостоятелно.
Така че отново, изграждане blocks-- I започна с нещо супер проста,
и след това добавя функция, добавена функция, добавя функция.
И аз вече не трябва да се тревожи за как на първото от тези функции
се реализира като продължавам да слой неща отгоре.
Така че в действителност, нека да направим един друг тук.
Нека да вървим напред и да отворите файл, който Донесох предварително, наречен овце.
>> Така че има малко по-различна характер, който изглежда така.
И нека да видим дали не мога направи нещо, като се използва брояч
в този case-- т.нар променлива.
Отивам да се продължи напред и при Events-- нека да получите зелен флаг кликнали.
След това ме пусна да Data, което аз знам от просто играя наоколо преди,
е мястото, където променливите са.
И аз ще отида напред и плъзнете това.
>> Така че една променлива, наречена брояч, и Отивам да го инициализира с нула.
Мога да го наричат ​​anything-- х или Y или z-- но в програмирането,
вика нещо в семантично полезен начин, като брояч,
който описва какво е, това е много по-лесно да се чете кода си по-късно.
Нека да вървим напред и да получите а завинаги блокира тук.
И да ме пусне да погледите страница и да направя Say блок.
Но това, което е готино за променливи е I не е нужно да въведете само в нещо
като Здравей, свят, който вече сме направил, мога да вместо отидете на данни
и плъзнете променлива ми, и дори въпреки че формата не съвсем
изглежда като тя трябва да се побере, то ще расте да се запълни.
И аз просто ще кажа на гишето за един second-- spoiler-- той ще се брои.
Ние ще го кажа за една секунда.
Тогава аз ще отида и Трябва да го чакам за една секунда,
така че не се брои до прекалено бързо.
И след това на последно място, да промени брояч от one-- с други думи,
нарастване на тезгяха от един допълнителна стойност и да направите това завинаги.
>> Така че овцете също като програмист, се брои от 0.
И ако ние се изчака достатъчно дълго, той ще направи това завинаги.
Но това не е съвсем вярно, защото в действителност, тъй като ние ще открием една седмица,
числа и компютри по-общо, технически имат само finite-- добре,
вместо компютри, когато те представляват числа,
имат само ограничен брой битове.
Тези крушки там може само да разчита толкова висока
преди сте навън на електрически крушки.
И компютър твърде, има само толкова много памет,
има само толкова много транзистори, така че може само да разчита толкова висока.
>> Така се оказва, че овцете, Мисля, може да разчита на 2 млрд
или нещо доста голям.
Така че ние няма да чакаме това да се случи.
Но в крайна сметка някои бъг ще се случи че може да има някои много реален свят
разклонения.
Но отвъд овцете, че просто въвежда променлива.
Да вървим напред и да се отворят нещо, което прави по-рано
тук се нарича домашен любимец на Cat-- Домашни любимци Котката тук.
И забележи тук това е малко блокове, но когато зелен флаг
кликнали, вечно прави следното.
Ако сте докосване на мишката pointer-- така курсора на екрана,
на arrow-- игра звук мяу и след това изчакайте две секунди.
И просто правя това вечно.
Просто постоянно изчакайте за да види дали pointer--
ако котката се докосва показалеца.
>> Така че аз се удари игра.
Нищо не се случва.
Но тъй като аз преместите курсора над котката,
>> [Мяукане]
>> И ако го премине, не зоологическа котката вече.
Така че някои условно логика вплетена в една линия.
Какво ще кажете за този пример, умишлено наречено Не домашни любимци Котката?
Какво е това смяташ да правиш?
>> [Мяукане]
>> Защо трябва да не погали котката?
>> [Мяукане]
>> ДОБРЕ.
Така че това е един пример за ако друго.
Това е точка на решение и защото тя седи в контура,
те са едновременно получаване проверени.
Това истина ли е?
И накрая, един от тези, които ще се прилагат
и така ще чуете нито мяу или рев на лъв в този случай.
>> Е, нека да направим малко по-луксозен един че съм направил предварително too-- теми.
Така че една нишка е само един нещо, че един компютър може да се направи.
Така програма многонишковите е програма че може да направи няколко неща наведнъж.
И всички тези примери до този момент са имали
само един скрипт, така че да speak-- една програма като тази тук.
Но забележете тази програма има две спрайтове, два символа.
Един е птица.
Един от тях е котка.
>> И забележи, когато щракнете върху тях надолу лявото, те имат своите скриптове
или програми, свързани с тях.
И двете от тези, програми, известие, старт
с, когато зелено clicked-- флаг нека да погледнем на cat--
когато зелен флаг кликнали.
И така наистина, когато се удари възпроизвеждане сега, две неща ще се случат едновременно.
Котката и птицата са и двете ще работят едновременно
за да създадете този ефект.
И можете да си представите какво се случва.
Има една линия и птицата и котката са в една линия.
Птицата е просто подскачащи като Аз бях преди, когато казах, ох.
Но котката определено има предимство.
Има и друга наблюдение блок който сочи котката умишлено
да птицата в този случай тук.
Така че можем да дразни един от друг, като погледнете чрез тези блокове, което се случва.
Но ключовата съставка тук е един.
Птицата, така че тази игра не е напълно boring-- или този animation--
започва в произволна посока.
И компютърът е бране число между 90 и 180
по същество, така че това е малко по- различна анимация всяко време.
>> И след това забележите тук, ако котка се докосва птицата, а след това
играе пай четири sound-- рева.
Но междувременно в птичи палитра, ние имаме това.
Forever, ако не докосва котката, Просто продължи да се движи на три стъпки.
И след това тук е друг пъзел парче.
Ако сте на ръба, скача.
Така че птицата е просто вид отглеждането на собствен бизнес,
летенето и подскачащи, и това е наистина
котката, че е имал условна логика за да се определи дали тя е уловена птица.
Добре.
Така че нека да направим един друг тук, това се нарича Hi Hi Hi.
А това тук просто прави това в завинаги контур.
Но notice-- как да се спре това много досадно програма?
Хит пространството бар.
Защото, ако го направя, че, лявото program-- ръка
забележи, че е постоянно listening-- е ключов пространство преса.
Ако пространството лента натиснат, и ако е така, какво прави той?
Той прави много често срещана техника.
Той определя променлива, равна на някаква стойност.
Но тя превключва на тази стойност.
[? Така външен вид?] въз основа на shape-- I
има променлива, която аз пише в аванс, наречена
Спрени, който просто казва да или не.
Е звукът заглушен или не?
Истина или лъжа?
И известие, което казвам this-- ако заглушен е нула, а след това се промени до един,
друг определен ням го до нула.
Така че просто флип стойността от нула до един.
Бих могъл да done-- го промените две три и 01:57
или 04:56 или 05:56.
Но това няма значение какво числа I използват,
толкова дълго, колкото аз държа променящата го обратното.
>> И най-всеки програмист би просто изберете нула и one-- невярна и вярно,
изключване и on-- да представлява това.
И това все още работи.
Ако аз удари бар пространство отново
>> [SEAL SOUNDS]
>> Програмата все още се изпълнява.
Защото има този друг скрипт който казва, завинаги направете следното.
Ако заглушен променлива е равна на zero-- така че ако не сте заглушен
е logic-- ако това е фалшива или не, след това пуснете звука,
защото не сте заглушен.
Вие трябва да играе на звука и след това мисля, здрасти здрасти здрасти за две секунди
и след това изчакайте, и да го направя отново и отново и отново.
>> И така, по този начин имаме начин за хора to-- за програми, за да си взаимодействат.
И те не трябва да се се както от други.
В действителност, изпълзяват around-- не игра на думи intended--
някой прекарал огромно количество време на интернет прилагане
PokemonGo в Scratch.
Той дори ви geolocates в Cambridge или Allston тук.
Така че, ако искате да видите също това, което хората може да направите, е да this-- много фантазия меню.
Кликнете върху тук.
>> Това ми е с моите стрелките сега.
Отивам да отида след това.
Кликнете.
И сега, когато щракнете върху PokeBall.
Искам да кажа, мисля, че си трябвало да кликнете на PokeBall.
Добре.
Така и направих това.
Мога да отида тук.
И този човек изпълнява някои по- PokeBalls над here-- три PokeBalls.
>> Ние ще публикуваме линк към тази онлайн, така че можете да играете.
Но известие има само някои основни градивни елементи.
Тя изглежда много по-красиви, и това е.
Това е впечатляващо и по- отколкото бихме обикновено
очакваме, със сигурност за проблем зададете нула.
Нямам представа колко дълго този човек прекарва онлайн.
Но всичко това е само една линия.
Има един звук игра.
Има някаква линия слушане за това дали аз съм
удря стрелката нагоре или надолу стрелка или на ляво и на дясно,
и след това, ако е така, то се движи то някои брой пиксели.
И след това, ако щракнете върху друг спрайт, има
някакъв вид, ако състоянието там.
Да, това става твърде интензивен.
Отиваме да спре.
Това е всички тези основни градивни елементи.
Няма други съставки, други отколкото тези, които ние разгледахме вече.
>> И все пак тук, позволете ми да направя един краен набор от примери
че рисува картината твърде от това, което можете да направите тук.
Ето една много проста програма, която просто прави this-- кашлица, кашлица, кашлица.
И само въз основа на това, което след като видяхме досега,
където е очевидното възможност за подобрение.
Тази програма е правилна.
Това кашлица три пъти, което е това, което е предвидено.
Но това е добре приложени.
Това е лошо проектиран.
Защо?
Да.
Това не е една линия.
И това не е толкова много, че това не е една линия,
това е, че има много съкращения.
Там се копира и поставили код, така да се каже.
И решението вероятно е наистина една линия.
Така че нека да продължа напред и подобряване на това.
И аз отивам да плъзнете тези тук.
Нека да вървим напред и да се получи повторение блок, промените това до три.
Отивам да изхвърлите някои от тези блокове.
>> И вие ще забележите, че е доста интуитивен.
Можете плъзнете и капка и неща се появяват и изчезват в крайна сметка.
И аз може просто да плъзнете това в тук и сега имам по-чиста версия все още.
Но знаете ли какво?
Има тази възможност Сега за abstraction--
да започне да се определи нов речник че MIT не очаквахме.
Има изчакаме и повторете и завинаги и ако,
Но какво, ако искам да се въведе Думата кашлицата като блок?
Ами ако искам пъзел парче чиято цел в живота е да кашля?
>> Е, нека да погледнем на тази версия тук, който съм направил, както следва.
Магически, Аз създадох този пъзел парче тук,
които Scratch позволява да се направи.
И наистина С и Python и JavaScript са
ще ви позволи да направите това, както добре.
Можете да създадете свой собствен потребителски парчета, които ви наричат ​​това, което искате.
В този случай, кашлица чувства като разумно определение.
И след това с тези парчета надолу тук може да ви се дефинира какво означава това.
>> Аз влачат и спада от тази палитра here-- повече
blocks-- този голям лилав блок, където аз напечатани в кашлица
като името на новия ми пъзел парче.
И тогава аз казвам, че всеки път, когато потребител призовава тази нова кашлица пъзел парче,
направя да речем и за изчакване.
И така, тук в моя повторение блок, Не мога просто кашлица три пъти.
>> И бих казал, особено Ако сега се скрие този детайл.
На кой му пука как се изпълнява кашлица?
Всичко, което се грижи за като програмист, че мога да кашля.
Не ме интересува как кажа, е изпълнена.
Току-що е грижа, че котка може да се каже нещо.
Аз мога абстрактно далеч, че подробно и съсредоточи само върху това, което е на екрана тук.
Но мога да се възползвам от тази една стъпка напред.
>> Забележете, че тук, имам осъществява примката три пъти.
Но какво, ако вместо да вземете тази версия?
И какво, ако вместо в тази версия тук,
Аз просто си сменя пъзел парче да вземе аргумент и въвеждане на себе си рече?
И този вход може да бъде редица като три.
Така че сега, ако аз съм за написването на програма и аз искам котката да кашля,
всъщност мога да кажа пъзела парче колко пъти да кашля,
защото в дъното тук, а любител версия на тези обичай пъзел парчета
ми дава възможност да се уточни, че кашлица всъщност отнема
на input-- приема аргумент, като този.
И знаеш ли какво?
Може би аз осъзнавам, чакай малко.
Кашлицата е same-- това е фундаментално
същата идея като кихане.
Това е просто една различна Думата на екрана.
Аз мога абстрактно далеч допълнително и прилагане
тази последна версия на кашлица, която на пръв поглед
е много по-сложна търсите.
Но забележете, което съм направил.
Имам сега generalized-- genericized really-- този пъзел парче
да се нарече каже дума п пъти.
>> И сега имам две нови парчета от пъзел тук се дефинира кашлица п пъти.
И какво прави функцията за кашлица?
Какво прави ми обичай пъзел парче?
Тя просто нарича речем блок, преминаване в думата искам да кажа,
преминаване в броя пъти, което искам да кажа.
Защото сега мога да приложат кихане, като просто казва achoo,
В този случай, някои брой пъти.
>> И така, аз съм наслояване и нареждане.
И отново, ключът тук не е как мога да го реализира, но фактът,
че ако аз просто буквално се движат тези извън екрана,
погледнете колко е лесно, ако не доста ми програма сега изглежда.
Тъй като тя прави това, което казва, че съм отделил
далеч това, което е вътре, че черната кутия. то се случва да бъде лилаво кутия тук,
но съм възпрепятстван далеч какво има вътре защото не ми пука как тя работи.
Аз просто се грижи сега, че тя работи.
>> И наистина, в проблем настроите нула, това е точно това,
вида на наслояване на идеи, които ще имат възможност да се изследват.
Това е точно възможност да прилага за решаване на проблеми техники,
за това, което е може би един непозната среда.
И дали не съм програмиран преди или програмирана преди,
вие ще откриете, че има малко нещо
в тази среда за всички.
И с проблем зададете един в една седмица,
ние ще бъдат прехвърлени към фокусиране на по-високо ниво на езика, наречен
C-- или по-скоро по-ниска език ниво, наречено
C--, че е още по- мощен, въпреки че е
малко по-загадъчен на пръв поглед.
>> И вие ще разберете, на днешния TL: DR, че този проблем зададете има по-кратък
прозорец от време, отколкото бъдещи такива, просто защото трябва да го намерите доста
достъпен.
И да не се притеснява, ако добавите класа късно.
Ние ще отговори, че не след дълго.
И преди да се отложи за торта, нека завърши само с две минути поглед
в това, което ви очаква тук в CS50.
[МУЗИКА]
Добре.
Това е всичко за CS50.
Ние ще се видим скоро.
Сега се сервира торта.
[МУЗИКА]
SPEAKER 17: Чували ли сте на отпуск, началник?
SPEAKER 18: Може би има повече под капака.