[МУЗИКА] Це CS50-- Harvard введення університету до інтелектуальної підприємств інформатики і мистецтво програмування. А мене звуть Девід Малан і Я просто подумав сьогодні вранці, це було дивно 20 років сьогодні так як я в останній раз сидів, де ви, хлопці, тепер робити. Це був 1996. Я був на другому курсі, і я приймав CS50 в перший раз. І я навіть не встав нерв взяти його сам перший рік, почасти через часу. Інформатика мені був ніби як, Мех. Я був трохи виродка зростає , Але я насправді не є будь-які інтелектуальні інтерес до того, з'явилися щоб бути просто ціла купа люди програмування весь час. І мені було страшно, якщо чесно. Курс і інформатика докладніше як правило, мали і в якійсь мірі, до сих пір має таку репутацію поля до стережіться, якщо тільки тому, що багато хто з нас не знайомі з ним і впевнені в ньому. І це насправді не було, поки я не робив покупки цей клас, другокурсник fall-- і навіть тоді, я тільки вступив тому що professor-- один з перших моїх наставників, Брайан Керніган тепер в Princeton-- дозволив мені взяти клас пас потерпіти невдачу. І справді, ось чому сьогодні ми дозволяємо і заохочувати студентів прийняти цей клас сидів / unsat. І тільки потім, на кінець семестру я зрозумів, як, нічого собі, це не був таким незнайомим поле. Насправді, це було дуже розширення прав і можливостей області, і більш збудливо, особливо пізніше, як я взяв курси Драматичне мистецтво 101 і Латинської A а потім в кінці кінців, Неповна середня археологія, я дійсно починаю бачити Перетину цього поля, комп'ютер наука, з гуманітарними науками, природничі науки, мистецтво, медицина, тощо. І так це те, що просто так акуратний про комп'ютерної науки в кінцевому рахунку, як ми сподіваємося, що ви будете 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, 10000 місце і так 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-- так званий бінарний сістема-- це те, що комп'ютерний вчений буде як правило, називати трохи, або двійковий розряд. Але тепер, як же ми отримуємо від концепція або графіки цих речей до фактичного комп'ютера? Ми, здається, пропускаючи крок тут. Ну, єдиний вхід в кінці дня, на мій ноутбук тут цей потік електроенергії. Навіть якщо це було давно час, так як ви думали про або ніколи не думали про як працює електрику, є електрони, що протікають в систему або поза, і це мій вид введення. Так що, якщо це все, що ми отримувати в якості вхідних даних тут, що ми можемо зробити з цією інформацією? Ну, ми могли б думати про якість нуля тільки відсутність електрики. Ніщо не flowinw, нічого рухатися, нічого не відбувається. Це просто за замовчуванням state-- нуль. Але якщо є електрика тече, чому ми просто не довільно, а на глобальному рівні послідовно, називаємо це один. Так просто не маючи ніякої влади, у нас є нуль, так влада, ми маємо одно-- ніякої влади, та влада. І таким чином, використовуючи щось більше фізичний або електронний ми починаємо реалізовувати це поняття щось або як один або нуль. Справді, ми могли б просто зробити це тут. Так ось, у мене є не три, а вісім лампочок, кожна з яких має свій власний комутатор. І тому, якщо я хотів би представити число сім тут, Я міг би включити ці три лампочки. І справді, всередині мій комп'ютер мільйони, мільярди речей, які просто менше, ніж, звані транзистори, перемикачі, які ви просто вмикати і вимикати. Таким чином, вони big-- щодо big-- перемикачі всередині моєї laptop-- багато, багато, багато, багато інших комутатори. Але всі вони роблять це саме that-- включити щось, поверніть щось геть. І як такий, комп'ютер може являти собою, з цими мільйонами або мільярдами транзисторів, багато і багато нулів і одиниць. І є інші апаратні засоби, які до сих пір дозволяє зберігати інформацію про довгострокову перспективу, так що, коли ви тягнете плагін, ви не втратите його. Але це історія для іншого дня. Отже, що ми можемо зробити з цими бітами? Ми могли б просто взяти тиск з me-- може хтось хоче приїхати тут і піднесе демо? Я бачив цю руку в першу чергу. Як вас звати? Мадай: Мадай. DAVID Маланки: Мадай, давай вгору. Приємно познайомитись. Мадай: Приємно познайомитися. DAVID Маланки: Давай так. Я не доведеться губи тебе. Добре. Так ось, у нас є, notice-- один, two-- ми будемо редагувати що out-- один, два, чотири, ,, Вісім, 16 32 64, 128. Це зроблено навмисно. Там о восьмій біт here-- двійковий digits-- нулі і одиниці. І трохи корисна одиниця measure-- не так корисна, одиниця виміру на себе. Як правило, ви хочете, по крайней мере, вісім з цих речей, а.к.а. байт. Таким чином, ми маємо байт бітів тут. Так що, якщо ми хочемо, щоб кинути виклик вам, наприклад, виклавши, в двійковій системі, це значення here-- 42. Хочете прийняти удар на що? Мадай: [нерозбірливо]. 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, де Н 72 і I 73. Якщо комп'ютер, то, в контексті програма для обробки текстів чи електронної пошти, виявили під капотом, щоб мати ці моделі bits-- візерунка бітів, що представляють 72, потім 73, потім 33-- що могло б це заклинання в цій програмі? Так що привіт, а потім щось. Ми не обов'язково знати, але насправді 33-- не так на графіку earlier-- був просто знак оклику. Таким чином, 72 був H, 73 я, 33 відбувається щоб бути знак оклику досі. Але це все прекрасно і добре, і насправді в даний час, а не просто використовувати сім або вісім біти, завдяки чомусь називається Unicode в протилежність щоб ASCii назад в той же день, ми насправді можемо уявити ще більше цікаві персонажі, ніж просто це оригінальний англійська зміщена літери. Але ми також можемо уявити навіть акуратніше такі речі, як кольору. Якщо ви коли-небудь чули акронім RGB, червоний, зелений, синій, що просто означає, що комп'ютер як правило, використовує три набори bits-- деяка кількість бітів, які представляють собою число за скільки червоного ви хочете, інший набір бітів для скільки зелений ви хочете, і інший набір номер для скільки синього ви хочете. Так що велике число означає багато червоний, невелике число означає, що немає червоного кольору. І так це свого роду від середнього значення тут. Так дайте мені якісь червоні, дайте мені деякі зелений, і дай мені трохи синього кольору. А якщо змішати ці три відтінки кольори разом, в цьому випадку, ви отримаєте цей темний відтінок жовтого або коричневого кольору. Але ця картина вісім плюс вісім плюс eight-- так 24 bits-- зліва направо, як комп'ютер представлятиме цей конкретний колір. Тепер це просто точка на екрані. Якщо дивитися дуже близько на екрані телевізора ваші комп'ютер, ви побачите точки або пікселі. І якщо у вас є ціла сітка пікселів по горизонталі і вертикалі, у вас є зображення. І потім, якщо ви берете зображення, а потім мити показати себе інший образ, інший образ, інший образ, інший образ, дуже швидко, ви, звичайно, є фільми. І ось зверніть увагу, де ми почали. Ми почали з цих нулів і одиниць. Ми працювали звідти в десяткову числа, як ми уявляємо їх. Тепер у нас є букви алфавіту. Але в інших контекстах чекати, ми можемо використовувати дещо більше бітів і представляють кольори. Як тільки у вас є здатність представляти кольору, у вас є можливість представляти фотографії та анімаційні картинки та інші подібні символи на екрані. І коли у вас є цілий букет Зображення обльоту людини відразу, це виглядає як кінофільми, і таким чином ви отримуєте відео, а також. Таким чином, використовуючи ці дуже прості примітиви ми робимо є спосіб представлення в кінцевому рахунку, всі ці види засобів масової інформації. І ми знову відведеної Бо не знову і знову, поки ми отримати від найнижчого рівня на цьому високому рівні. Так що дає нам це загальна ідея абстракції. Але ми почали тут. Ось тепер, ми могли б представляють в комп'ютері наші входи з нулів і одиниць, наші виходи в нулів і одиниць, але те, що відбувається всередині коробки? Ось де комп'ютер наука стає цікавим. Ось де ви насправді принести ваш власні уми, щоб винести рішення проблеми. Тепер ми можемо передбачити, для Інша частина семестру, так. Я знаю, як бінарні роботи. Я пам'ятаю, як Ascii або Unicode-- відображення на letters-- робіт. І це, безумовно, варто зрозуміло, що ми може представляти червоний і зелений і синій, і являють собою мультимедіа, а також. Але це цікавий матеріал. Це те, що робить хтось здатних вирішувати проблеми. І одна з таких проблем ми хотіли б зробити, насправді, бере участь, або роблячи це алгоритмічно. І знову ж таки, я міг би зробити це. Я міг би зробити один, два, три, чотири п'ять, шість, сім, вісім дев'ять. І я міг би написати його вниз, щоб стежити за ним. Але це тільки як би я представляти інформацію. Або я міг би зробити це faster-- два, чотири, шість, вісім, десять, 12, 14, 16, 18, 20, 22-- він відчуває, як в два рази так швидко, але це як і раніше збирається зайняти багато часу. Але виходить, якщо ми використовувати ще ще resource-- і дійсно комп'ютери в ці дні є кілька процесорів або мозок. Виявляється, комп'ютери можуть робити багато речей відразу, і насправді ми, в цій кімнаті, може представляти саме це. Так що це трохи соціально незручно, але якби мене гумор всього за три кроки процесу, нехай я прошу всіх на місці там просто встати на мить. Встаньте. Так що думати про себе, номер одно-- так що все в цій кімнаті, крім тих людей, які не зробили зобов'язують, думають номер один. Так що ваш номер прямо зараз. Це перший крок, або як вчений або програміст як правило, буде робити, ми будемо щоб почати відлік з нуля. Якщо найменше число ми можемо представляють з цими лампочками дорівнює нулю, шляхом просто залишаючи їх все геть, я міг би також просто почати відлік нуль замість одного. І ось що комп'ютерні вчені роблять. Так крок нуль, встати і думати про номер один. Наступним кроком є ​​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-- це старі технології школи, ми могли б почати шукати для кого-то як Майк Сміт, одну сторінку за один раз. І я бачу, що немає, Майк чи не тут. Я до сих пір в розділі A. Зрештою, я вважаю, я в розділі B. І це algorithm-- крок за кроком інструкції. Початок о сторінці початку і одного в той час, зверніть увагу на Майка Сміта. Чи є це correct-- це алгоритм або підхід? Так, це правильно. Якщо Майк тут, в кінці кінців Я повернуся до нього. Але це не так ефективно. Це, очевидно, дуже повільно. Так що я можу використовувати самі Ті ж twosies наближаються. Я можу зробити те два, чотири, шість, вісім, 10, 12. Це в два рази швидше. Я збираюся дістатися до Mike швидше, якщо він там. Це правильно? Так, але я почув little-- НІ. Тепер я почув, звідки немає. Так. Там є помилка потенційно. Може бути, Майк просто випадково отримує затиснутою між двома сторінками, тому що я лечу через це два одночасно. Таким чином, по крайней мере, нам потрібні вид умовного виправлення. Я повинен сказати, агов, якщо я вдарив когось, чий ім'я починається з T замість S, Я краще загнути принаймні, одну сторінку. Так глючить спочатку, але можна виправити. Але ніхто з нас не буде шукати Майк Сміт через 1000 сторінок телефону в замовити одну сторінку за один раз. Що нормальна людина збирається робити? Ви збираєтеся йти на S-х років, якби ви знали, де S'S. Ви можете піти приблизно до середини або злегка зміщені в бік кінця. І я дивлюся вниз тут і Я в розділі M. Але що ви знаєте про цю проблему в даний час, що ми не обов'язково знати, перш ніж з усіма нами просто вважаючи себе що те ж саме? Ну, Майк явно збирається бути в цій половині книги якщо він взагалі тут, тому що він впорядкований. І таким чином ви можете дуже dramatically-- [Задихаючись] Я знаю. [Оплески] Це насправді дуже легко, якщо ви робите це вниз по хребту там. Але ви можете кинути половина від вирішення проблеми. Тепер, я залишився з тим же problem-- знайти Mike Smith в телефон book-- але тепер телефонна книга починається з M і йде до Z, але це удвічі менше. Але це те, що вражає. Так само, як в теорії, ви, хлопці, коли Ви всі програли тільки половину, в той час, проблема є вдвічі менше, вдвічі менше, знову і знову. Таким чином, ця проблема стала Та ж проблема, але вдвічі менше. Тепер це проблема 250 стр. Як тільки я розумію, про, я в розділі T випадково. Я зайшов занадто далеко. Я можу кинути, що половина книги телефону геть. Тепер, я вниз до чверть цієї проблеми. І ви можете повторити, повторити, повторюватися до тих пір, в теорії, ви не залишилося тільки з однієї сторінки. І якщо Майк знаходиться на цій сторінці, Тепер я можу вирішити цю проблему. Але як швидко я вирішити цю проблему? У першому випадку, це зайняло у мене як може бути 1000 кроків, щоб знайти Mike Smith. Це, можливо, взяли me-- Я взяв телефонну книгу і я почав шукати одна сторінка в той час, і Майк може бути 1000 сторінок пізніше. Другий підхід може бути бере мене 500 кроків, тому що я лечу через два одночасно. І третій підхід, хоча, це особливо потужним. Але давайте розглянемо, що ми насправді зробив з цією третьою підходом. Я є те, що я буду називати тільки ці заяви, по одному за раз. Підніміть телефонну книгу. Відкрити в середині телефонної книги. Подивіться на імена. І тоді все стає трохи більш інтелектуально цікавим, якщо до сих пір просто. Якщо Сміт є одним з Імена на цій поточній сторінці, потім зробити щось умовно. Це схоже на розвилці доріг. Зателефонуйте Майк. Якщо Майк серед імен на цій сторінці, називається Mike. Але тільки зробити лінію чотири, якщо лінія дерево, якщо ви будете, правда. Відповідь на це питання, так. Інакше, якщо Сміт раніше в book-- Іншими словами, якщо я перебуваю в розділі M і я шукаю когось лівий, то що я повинен робити щось дуже схожі. Тоді я повинен відкрити до середини лівій половині книги. Так ідіть ліворуч, а потім повернутися до кроку два. Подивіться на імена там. Отже, іншими словами, зробити те ж саме, але з проблеми, яка була в два рази. Ви знаєте, що ще? Якщо Сміт у книзі пізніше заснований на сторінці я дивлюся, відкритий для середини права половина книги а потім знову повернутися до другого кроку, else-- є четвертий можливість тут. Майк або тут, або вліво або вправо чи ні. І тут ми краще розглянути це питання. І справді, якщо ви коли-небудь мав ваш комп'ютер просто аварії на вас, що іноді, але не завжди, Результат просто людини програміст не розуміючи, про стріляти, є насправді це четвертий сценарій. І якщо ви не пишете код для обробки цього сценарію, Іноді ви не знаєте, що комп'ютер може зробити. І справді програма може привести до збою. Але в цьому випадку, я думав, про це, і я сказав, ще кинути палити, тому що це четвертий логічний можливий сценарій. Тепер, давайте просто додати деякі словниковий запас, тому ми може почати, щоб кинути навколо термінів, в іншому досить інтуїтивно. Всі речі, які я просто виділені жовтим кольором тут, Я просто до функції або процедури. Вони просто вид дій. Так що забрати, відкритий для, подивіться на, телефонуйте, відкрито, відкрито, quit-- це тільки дії, або ми будемо називати їх більш формально, функції. Тим часом, в даний час в жовтому кольорі, Я виділив речі that-- давайте просто почати називати їх умови або філії. Це точки прийняття рішення, де Ви могли б йти цим шляхом, таким чином, або деякий інший напрямок досі. Так що ті будуть створені умови. І тепер цей трохи вправнішим. Давайте назвемо ці питання Логічні вирази, після того, як хтось з прізвищем Bool. І це логічне вираз це просто щось що це не істинним або хибним, так чи ні. Так що це питання, відповідь на вас піклуватися про те, щоб в стані зробити decision-- отримати назад відповідь, а потім йти вліво або вправо, або щось то зовсім інше. І тоді, нарешті, ці Лінії here-- повернутися до другого кроку, повернутися до етапу two-- ми могли б реалізувати цю ідею по-різному. І тоді ті з вас досвід програмування міг би зробити або може собі робити це по-іншому. Але для сьогоднішніх цілей, це просто ідея, що має значення. Це те, що индуцируя ми зазвичай називаємо loop-- якийсь цикл, тому що це змушує мене зробити щось знову. Так що тепер, давайте просто розглянемо наскільки добре цей алгоритм. Це вірно. Якщо Майк в книзі, це один з ці чотири scenarios-- знову і знову і знову, ми знайдемо його. Але наскільки добре це? Ну, ми не маємо щоб бути занадто формальним тут. Але давайте просто сюжет щось, х і у, щоб отримати почуття форми цієї проблеми. На осі абсцис тут розмір моєї проблеми. І вони у-вісь тут буде час, щоб вирішити. Так що, можливо, це кількість сторінок. Може бути, це секунди або сторінка turns-- би там не було. Однак ви хочете порахувати це то, що ця картина буде представляти. І це перший алгоритм, я збираюся описати, як тільки по прямій лінії. Якщо є п сторінок телефонна книга, то вона може взяти мене так багато а п кроків, щоб знайти Майк. Якщо Verizon або телефонної компанії додає ще одну сторінку в наступному році, це може зайняти мені ще один step-- ще одна одиниця часу, щоб знайти Майк. Таким чином, є тільки це один до одного відношення. Це нахил прямої лінії. У той же час, що другий algorithm-- якщо я збирається два на два time--, чотири, шість, вісім, чи double-- пройшовши через сторінки в два рази в той час, два в той час, це все-таки пряма. Там зараз один до двох відношення, але тільки трохи нижче. Так що, якщо є це багато сторінок на графіку тут в жовтому, які могли б взяти мене це багато кроків або секунд, в іншому випадку він збирається взяти мене вдвічі більше, ніж на червоній лінії. Але зелена лінія є реальним винос. Це те, що ми в цілому викликати logorithm-- журнал п, де п число сторінок. Але це форма, яка має значення сьогодні, тому що ми не маємо навіть думати про побудову точок. Подумайте про те крайньому випадку. Припустимо, що Verizon завтра подвоює кількість сторінок в цій телефонній книзі, від 1000 до 2000 осіб. У першому алгоритмі, я може витрачати додаткові 1000 кроки шукає Майк, тільки тому, що Verizon в два рази розмір книги. Другий algorithm-- це може візьміть мене додаткові 500 кроків. більше 1000 сторінок, я ходжу два за time-- ще 500 кроків, щоб знайти Майк. Але третій алгоритм це свого роду магічне. Verizon подвоює число сторінок від 1000 до 2000, але скільки ще кроків робить він взяти мене шукати Майк? Це всього лише один, тому що я можу просто розірвати телефонній книзі ще раз від Проблема 2000 цю сторінку 1000 сторінок проблема, і вуаля. Я взяв масивний шматок з нього. І якщо ви йдете дійсно екстремальний, Припустимо, що в телефонній книзі компанія повинна була щось божевільний, як телефонна книга 4 млрд стор. Ну, скільки кроків це може зайняти щоб знайти Майка Сміта в 4 мільярди сторінка телефонної книги? Це велике число, але все 4 млрд 2 млрд до 1 млрд до 500 млн, 250 million-- ще звучить як великих чисел, але я дуже швидко отримувати менші значення. І справді, якщо я роблю математику Добре, я можу тільки розділити 4 мільярди приблизно на 32 раз, перш ніж Я отримую вниз тільки один. Так що, якщо телефонна книга була 4 довгі мільярдів сторінок, не склало великих труднощів. Протягом декількох секунд, може бути, 32 секунд, я міг би розділити його навпіл і в кінцевому підсумку знайти Майк або зробити висновок, що він не існує. І це суть algorithm-- хороший алгоритм. І це одна з Цілі класу, як це, намагається з'ясувати, як я вирішити проблему не тільки правильно, як я завжди знав, як зробити це один сторінка на time--, але правильно і добре. Як мені створити хороший вирішення проблем? Так що давайте момент тут і дати вам сенс зараз з CS50 курс ввести в тому: співробітники в декількох курсу. Незадовго до 2:00, ми будемо коротку перерву так що ті з вас Хто такі можуть ходити по магазинам качка, і взяти подивитися на якийсь інший клас і дивитися на решті частини цього онлайн. Але зараз, дозвольте мені представити CS50, сам клас, і, зокрема, що є новим. Таким чином, навесні ми провів зовсім небагато time-- Персонал Курс і я-- мислення про те, що саме ми хочемо бути CS50, і повернутися до першого принципи, так би мовити, щоб розглянути, що саме ми хочемо цей курс, щоб виглядати і бути як для своїх студентів. І ви побачите в завданні встановити нуль, а, запрошення щоб поглянути на що URL, який узагальнює деякі з мотивацій позаду наступні характеристики падіння 2016 року. Так як ви можете почерпнути від TL: роздатковий DR, навчальний план сьогодні, а також від каталог, звичайно, в цьому році в CS50, ви тільки повинні відвідувати тому роботу раз сьогодні добре done-- і остання лекція 21 листопада. І ви вітаються, але не очікується відвідувати ці лекції в середині, тому що ми робимо В цьому році, стрілянина в реальному часі матеріалу Курсу. Так що все залишиться струму і включити як найкраще ми can-- поточні події і розмови, які люди могли б бути маючи в промисловості в світ, але робить цей матеріал доступні, в результаті, навіть earlier-- в комплекті з повним текстом стенограми і можливість пошуку і посилання на інші ресурси. І справді, ми були стверджуючи, що протягом деякого часу і ми вважаємо, що це в даний час, що ми можемо створити, в цифровому вигляді, більш захоплюючий, більш привабливим освітній досвід, на відміну щоб зібрати тут близько 23 разів особисто, почувши хтось любить мене просто говорити про інформатику, на відміну від більш активного залучення. Таким чином, ви будете бачити в навчальний план Курсу ескіз семестру тут, поряд з тим, коли лекції будуть буде знято, до якого ви вітаються, але не очікував, і коли вони будуть буде випущений на веб-сайті курсу. І що ми будемо робити тут Середовища починаючи з наступного тижня, є набагато більш тісно, ​​з тільки ті люди, які хочуть брати участь, це так звана прогулянка, де я і керівники Курсу буде насправді робити речі трохи більше інтимне тут в оркестрі розділ, до сих пір деякі технології і пройти через Проблема набору поточного тижня, і запропонувати вам particularly-- якщо серед тим менше comfortable-- все більше рекомендації, які ви могли б хотіти або потреба кинути виклик тижні. І точно так само, для тих, хто не може бути присутнім на тих, хто особисто, не склало великих труднощів. Там буде так само на чолі один із старших співробітників Курсу, Zamalya, та ж можливість вбудованого в завданню самих множин. Проблема встановлює в цьому році буде випущений по п'ятницях і більше не робити сім днів по тому, але 10 днів later-- навмисно перекривається з кожною проблемою встановити, з тим, щоб краще пристосувати, ми сподіваємося, припливи і відливи в студентських розкладі, особливо коли з легкої атлетики або проміжних виборах або академіки або extracurriculars як правило, приходять і йдуть особливо в середині семестру. Це повинно дати вам трохи більше свій розсуд, щоб ви передній завантажити свою тиждень з CS50 або задньої навантаження це на наступний уїк-енду замість. Так що дивіться, щоб навчальний план Курсу тут його графіка. І ви помітите, теж серед зміни в цьому році, для тих, хто більше знайомі з програмування в минулому, ми почнемо семестр як ми будемо сьогодні в порожньому місці, зосередити увагу насамперед на мові називається 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, на вершині 67 Mount Auburn Street, прямо в Гарвардській площі. Бачення якого є те, що CS50-х ТФ і центри сертифікації протягом тижня, в значній мірі протягом більшої днів, буде там для підтримки. Так що якщо у вас є деякі Питання про р-безлічі або ви відчуваєте себе трохи заблокований або трохи заплутався, і, чорт забирай, у вас є час або півгодини між класами, особливо в square-- ви можете поп і є це питання відповів від того, мають цю плутанину clarified-- дуже в дусі, ви знайомі, з математики власні математичні питання центр відділу, але в значній мірі навколо годинника в [? Гкал?], Що ми розмістимо на сайті. Репетиторство також доступна для тих, студенти, вільно від Курсу власний персонал, якщо ви хочете більш інтимний один на один, або тільки два або три однокласники, працюючи з одним із співробітників цього курсу. І дійсно, вони тут просто деякі із співробітників Курсу, деякі з яких ви будете зустрічаються в мить. Насправді, CS50 власного керівник навчання співробітник, і голова звичайно помічник, і Наставником, може прийти на вгору, дозволяють їм сказати привіт. [Оплески] СПІКЕР 1: [нерозбірливо]. [Оплески] СПІКЕР 2: [нерозбірливо]. [Оплески] Виступаючий 3: [нерозбірливо]. [Оплески] DAVID Маланки: І дозвольте нам принести на борт два з CS50 самих старших співробітників, Роб і Zamayla, а також. [Оплески] Справді, як Роб і Zamayla були з нами так довго, що я був в стані йти в архіви CS50 в і знайти цю саму SD кадри з них беруть участь на самих етапі кілька років тому. БОР: [нерозбірливо]. [Оплески] ZAMAYLA: [нерозбірливо] [Оплески] DAVID Маланки: Дякую. Таким чином, на додаток до них Члени команди тут, CS50 має команду майже 100 співробітники, всі з яких будуть доступні для секцій і офісні годинники та багато іншого. І, як Роб говорить, що теж, це найзначніший ремонт з CS50 в 10 років, що Я був в [нерозбірливо]. [Нерозбірливо] зосереджені особливо в забезпеченні структури підтримки, підрізування геть багато основна частина, яка була накопичений за останні 10 років итеративной розробки на проблемні набори Курсу. Так що в цьому році, не тільки в класі, але також у вигляді завдання Курсу набори, ви повинні знайти речі бути більш обтічний, триммер, багато більш керованим, ніж в минулі роки, як ми проливають деякі з багажу, що це розроблений характер розвивається року після того, як рік і ітерації. Таким чином, новий і покращений починається сьогодні. Ви зустрінете ще деякі з Персонал звичайно знаходиться поза в [нерозбірливо] о 2:30, де ми служимо, як традиції, торт. Там трохи більше торт ніж це, але ви будете зустрічаються Erin і Тобіас і інші досі. І дозвольте мені дати вам тур, перш ніж ми чуємо від деяких інших співробітників в класі, про те, що так само чекає. Насправді, ми завжди починаємо CS50-х Семестр У найближчу суботу, з тим, що називається CS50 Puzzle день. Вона не має нічого спільного з комп'ютерні науки самі по собі, але про проблему рішення в цілому. І якщо ви так вирішите взяти участь, за деякі з запрошень, Ви, можливо, бачили двері впав або на сцені тут, це можливість в командах двох або трьох або чотирьох, взяти участь для головоломок і піци і призи і more-- в цю суботу, стежте за багато іншого. Ви знайдете також, що кожен У п'ятницю, в Вогонь і лід, CS50 чи принести ціла купа студентів на обід, щоб зробити великий клас відчувати себе більш інтимне, і взагалі звести воєдино Випускники і друзі з промисловості говорити про те, що вони мають був до моменту закінчення. Крім того, в цьому році, ми ознаменувати перший коли-небудь CS50 50 кодування contest-- в середині семестру можливість дозволити кожному на вибрати в основі, щоб мати виклик дотепність проти однокласників, знову в командах з двох або трьох або чотири, використовуючи тільки що програмування здоровий глузд, що ви після цього маєте під Ваш пояс всього лише після шести або семи років тижнів класу, а також участь в цьому виді змагань online--, якщо ви хочете, щоб відточити свій власний навички все більше в цей виклик. В кінці семестру так званий CS50 Hackathon-- можливість, яка починається о 7:00 PM закінчується о 7:00 ранку, і по шляху 12 вечірні години, в яких пірнати в остаточному project-- Курсу можливість розробки та реалізувати більшість нічого цікавого Вам з вашим вченням керівництво стипендіата. Близько 9:00 ранку ми зазвичай робимо служити піца, 1:00 AM, Філіпа, і мало хто з нас які до сих пір прокидаються о 5:00 ранку, є шатл шинний вниз Дорога до IHOP для сніданку. А потім через кілька днів це так званий CS50 fare-- кінець семестру в виставці святкування, як далеко так багато з CS50 студентів прийшли з нульовий тижня аж до тижня, і маючи на увазі, що 73% з них однокласники і за вами в цьому році ніколи не брав клас CS раніше. Насправді, щоб ще раз підкреслити, як багато, тут це кілька осіб з персоналу CS50 в. Виступаючий 4: [нерозбірливо]. СПІКЕР 5: [нерозбірливо]. СПІКЕР 6: [нерозбірливо]. СПІКЕР 7: [нерозбірливо]. СПІКЕР 8: [нерозбірливо] СПІКЕР 9: [нерозбірливо]. Виступаючий 4: [нерозбірливо]. СПІКЕР 10: [нерозбірливо]. СПІКЕР 11: [нерозбірливо]. СПІКЕР 12: [нерозбірливо]. СПІКЕР 13: [нерозбірливо] СПІКЕР 14: [нерозбірливо]. СПІКЕР 13: [нерозбірливо]. СПІКЕР 15: [нерозбірливо] СПІКЕР 16: [нерозбірливо]. СПІКЕР 11: [нерозбірливо] СПІКЕР 5: [нерозбірливо]. DAVID Маланки: Деякі команди самі торгові класи. Але якщо ці члени персоналу CS50 тут, може прийти на на мить. CS50-х ТФ і центри сертифікації і [? персонал?] Члени here-- це лише деякі з них з faces-- один з яких ви просто бачив, і кілька other-- і кілька інших до сих пір. Чому б нам не піти далі і дозволити ви, хлопці, п'ять хвилинну перерву. Якщо вам потрібно, щоб качка магазин класи, це прекрасно. А через п'ять хвилин ми резюме, поглянути на Scratch-- першої нашої мови програмування, познайомитися Співробітники Курс тут дещо більше, і зосередитися в кінцевому рахунку, з проблеми встановити нуль. Таким чином, ми повернемося через п'ять хвилин. [Оплески] Добре. Таким чином, ми повернулися. А в нашому інші Час сьогодні, мета щоб вирівняти ігрове поле в термінах деякої термінології, з точки зору деяких ідей. Тому що справді, відповідно до деякі з діаграм більш ранніх, там буде цілий ряд рівні досвіду в класі, деякі з яких студенти мають прийняті деякі програми перед тим, деякі з яких не мають. І ось з цієї першого завдання встановити і з цим першою мовою у нас є можливість почати приймати як належне після того, як сьогодні деякий загальний словниковий запас і ідея. І ми будемо робити це шляхом перший languages-- Курсу на додаток до C і Python і JavaScript і SQL і HTML і CSS, ми будемо спочатку сконцентрувавши увагу і тільки для проблем встановити нуль на цьому графічному мовою, називається Подряпини, розроблена в MIT Media Lab'S вниз по дорозі, щоб допомогти студенти і діти особливо виразити себе algorithmically-- таким чином, більш відповідає тому, що ми могли б назвати обчислювальні мислення. І це корисно, тому що мова дуже швидко на наступному тижні в тиждень один, ми перехід до більш традиційний і аркан мову називається З, що є чисто текстуально. Ви тільки використовувати клавіатуру в Для того щоб написати інструкції як вони на екрані. Але навіть якщо ви ніколи не бачили мова програмування, перед тим, в просто глянувши на це, все це бути загадковим, ви можете здогадатися, що ймовірно, друкує Hello World. Але є багато синтаксичний над головою є. Існує дивна хеш символ або хеш-тег нагорі. Там в кутові дужки, деякі круглі дужки, фігурні дужки, напів-colon-- там просто так багато зорових образів синтаксис, який стає на шляху. Ми починаємо курс з Подряпини, з тим, щоб отримати повз всіх тих, хто інтелектуально нецікаві відволікання, і замість цього зосередитися на ідеях. Насправді, це може бути і раніше. Це, для цього, тиждень буде після. Це, в цьому графічному мова Царапина, як ви б реалізувати той же program-- програму, яка при запуску, просто говорить привіт світ. І що приємно про Подряпини що саме це графічне програмування середовище, яке використовує шматочки головоломки або блоки, що тільки зчіплюються разом якщо він має логічний зміст зробити це. І з нуля ви можете розвинути анімації та інтерактивних ігор і мистецтво, і будь-яку кількість речей, які ви можете собі уявити в своєму власному розумі, і реалізувати їх просто перетягуючи шматочки головоломки. І справді, ми будемо мати можливість щоб висловити деякі з тих же ідей що я щойно згадав мить назад в контексті Майк Сміт і телефонний book-- речі як функції, просто дії, такі речі, як петлі, які роблять речі знову і знову, змінні, що є то, що ми будемо вводити, але це, можливо, знайомі з algebra-- просто якась заповнювач зберігати деяке значення, яке ви могли б потрібні later-- логічні вирази, де ті, так ні, або правда помилкові питання з раніше. Умови ті вила в road-- ті галузі, так би мовити. І тоді є деякі вправнішим Особливо ми побачимо, навіть сьогодні, звані масиви і потоки і Події, які ми потім повернемося через час на різних мовах. Але Царапина дозволяє нам для вивчення всіх з них. Так що тут в порожньому місці, це фіолетовий блок, що функція, як правило, буде виглядати. Це фіолетовий шматок головоломки, що є деякі слово, як, скажімо, що це дія, а потім він може мати аргумент або parameter-- якимось чином від виду призначеної для користувача настройки то, що блок робить так що це не зумовлені MIT каже, що цей фіолетовий блок. Насправді, ви побачите в той момент, коли я в змозі надрукувати слова як привіт світ, або привіт Девід, або привіт Zamayla, або те, що я хочу, в аргументі для цієї головоломки piece-- білий квадрат там. У той же час, якщо я хочу цикл, ми будемо бачити, що є шматочки головоломки, які виглядати трохи помаранчевого кольору, як це. І їх форма роду передбачає, що щось знову і знову відбувається в циклі. Так що якщо я обернути привіт світ блок сказати з назавжди блокувати в порожньому місці, це просто буде продовжувати говорити привіт світ назавжди, в буквальному сенсі слова. У той же час, є ще тип циклу в порожньому місці що ми будемо see-- повторення block--, де, якщо ви знати заздалегідь, скільки разів Ви хочете, щоб виконати цикл кінцеве число раз в fact-- вас можна вказати, що, запровадивши в ряді або навіть закупорки в змінної, як х або у, як ми побачимо. Насправді, як змінні Я в цьому випадку, який є загальною назвою для ціла змінна, що просто зберігає number-- ціле число, може бути, використовувати цей помаранчевий блок тут встановити змінну, як я до нуля. Ось приклад в зелені поля Логічний вираз в порожньому місці. Навіть якщо це виглядає як математика формула, математичні нерівності, як це насправді є булевими виразами. Це або істинним, або хибним. Я менше, ніж 50. Це або так чи ні відповіді або істинним або хибним відповіддю. І ми зазвичай називаємо ці логічні вирази. І це не повинно бути 50. Це може бути х менше, ніж у, більше, ніж у, рівний y-- будь-яку кількість інших може бути задані питання. Тепер, на перший погляд, це може виглядати раптом зовсім сміливими тут, і це. Але концепція мудрий, це досить добре знайомі з раніше. Якщо х менше у, ніж, скажімо, як багато. Інакше, якщо х більше ніж у, то кажуть, як багато. Інакше сказати, х одно у. Таким чином, ми маємо приклад там третього scenario-- тільки третій possibility-- х є або більше, менше або дорівнює. Таким чином, у нас є три способи роздоріжжі. І зауважте, що це круто here-- Царапина, здавалося б, має тільки одну головоломку частина, в даному випадку, в блоці, якщо інше. І тим не менше, що, здавалося б, припускають, що ви можете є тільки два шляхи розвилки доріг. Ви можете піти наліво або направо, але що щодо третього сценарію? Що робити, якщо х одно у? Нічого страшного. Візьміть один шматок головоломки, покласти інший усередині нього створити семантичний еквівалент в разі, якщо ще, else-- і тепер ви мати свій тристоронній роздоріжжі. І, як ми бачимо, подряпина головоломки може бути розтягнутий і рости, так що а втиснути більше матеріалу в них. Вам не потрібно, щоб відповідати все, що в його розміру за замовчуванням. Це те, що ми будемо незабаром см називається масивом. Це як list-- якимось чином зберігання декількох фрагментів інформації в змінної, а не просто номер. Це ми бачимо представника щось, зване многопоточность. Насправді, всі ваші Маков і ПК в ці дні Підтримує багатопоточність, а це значить, ви можете в буквальному сенсі робити кілька речей одночасно. Ви можете мати Microsoft Word вгору в на передньому плані, працюючи на якомусь есе. Ви можете мати браузер у фоновому режимі відкриття G поштою або Facebook або тощо. Ваш комп'ютер може зробити кілька речей сьогодні, тому що це багато-, і програми, вони знаходяться в в Зокрема, також багатопоточний. Там в речі, названі події, як а в світі нуля, а потім є спосіб теж, щоб зробити наші власні головоломки, якщо речі насправді не існує заздалегідь. Так що давайте мотивують це наступним чином. Кілька років тому, коли я вперше виявлений на порожньому місці, коли я був насправді аспірантом в Массачусетському технологічному інституті, ми самі були поставлено завдання зробити домашнє завдання. І я implemented-- який, в ретроспективі, було дуже погане рішення, тому що це сама сказ пісня в світі щоб слухати протягом восьми годин під час роботи на homework-- але щось я назвав Оскар Час, який, можливо, знайома пісня. CS50s власний Jordan Hayashi, один з наші старші співробітники, підвищило його до 2015 року і Тепер 2016, так як назад в день, У мене було все, що тільки збирається в кошик для сміття Оскара. В даний час ми підтримуємо переробку і компостування. Але щоб намалювати картину про те, що ми можемо зробити тут і мотивувати деяких нижні приклади рівня, ми могли б отримати один інший Робота на громадських засадах, щоб просто прийти на вгору і грати мій перший домашнє завдання будь-коли? Піднімайся. Як вас звати? ГЕНРІ: Генрі. DAVID Маланки: Генрі, давай вгору. Піднімайся. Голова так чи інакше, і ви побачите в даний момент, Я збираюся йти вперед і вдарив зелений прапор у верхній правій руці кут, що означає йти. Значок знак трохи зупинки збирається сказати стоп, і це при запуску і зупинити програму. Приємно познайомитись. Добре. Отже, ми збираємося, щоб побачити інструкції на екрані в мить. І просто грати в цю гру для декількох seconds-- повірте мені, ми не будемо хотіти грати всі шляхи до end-- ви будете отримати уявлення про те, що робить програма. І більше, ніж просто зосередитися на Генрі бути добрим чи поганим в цій грі, фокус і як вони були реалізовані мною спочатку, а потім Йорданії. Іншими словами, де змінні? Де петлі? Де функції? І ми побачимо, якщо ми не бачимо ті, під капотом. Просто натисніть і перетягніть сміття до відповідного бункер. [МУЗИКА] Добре. Це дуже добре. Чому б нам не зупинити його там. Дякую. Вітаємо Генрі. Дякую. [Оплески] Тільки уявіть собі цю програму налагодження. Якщо є проблема двох й хвилині, але так song-- що тут відбувається насправді? Як складно, як може здатися починають здаватися, щоб отримати протягом довгого часу, насправді все більше і більше речі почали падати, що цікаво про цей вид example-- і ми побачимо, деякі з них others-- в тому, що якщо ви дивитися повз складності або витонченість гри, є дуже просте будівлю блоки, play-- все з яких, якщо ви відігнати їх тим, будівельні блоки, дуже доступні і реалізованими їм самим. Наприклад, це було деякий час, але я упевнений, що я спочатку зробив, коли що робить цю гру в перший раз я був повністю як тягнули. Я не зосередитися на всіх на логіка або шматочки головоломки, Я зосередився на графіку і знаходження вулиця пост і сміттєвий бак і все це. Але це були необхідною умовою інгредієнти в першу чергу. І як тільки я закінчив відкладати і виклавши загальні рамки, Я вирішив, дозвольте мені зробити один частина падіння для сміття з неба. І ми побачимо, до подряпин підтримує речі, звані sprites-- символів, які можуть мають різні костюми на так що вони виглядають по-різному. І тому я ставлю сміття костюм на одному з таких спрайту. І я просто потребував падати з неба. І так виходить, до подряпин, як і більшість мов програмування, підтримує випадкові числа або технічно псевдокод випадкових чисел, так що за допомогою перетягування скинувши певні частини головоломки, Я був в змозі мати сміття приходять зліва на перший погляд. І тоді наступного разу, він впав, з право, а потім з середини. І все ж гра була просто є сміття, які падають з неба. Ви не могли б вказати на неї або натиснути на неї. Ви не могли відкрити сміттєвий бак. Ви нічого не могли зробити. Але це був крок дитини до моєї кінцевої бачення. І після цього, я насправді реалізований якийсь зондування, так що якщо ви зробили натисніть і перетягнути на шматок сміття по банку мотлоху, Оскар кришка буде відкриватися і закриватися. Нічого не трапиться зі сміттям, але по крайней мере, кришка буде відкриватися і закриватися. Таким чином, перевірте, крок два з двох. І це те, що буде ключ в обох завданню встановити нуль і в програмуванні в більш загальному плані, є приймати ці дуже умисні кроки дитини. Тому що воно не тільки дозволить вам відчувати себе чесно досягнуто багато іншого quickly-- це найгірше в світі щоб спробувати реалізувати всі Оскар часу, потім годинами пізніше вдарив зелений прапор, і нічого не працює, як очікувалося тому що, коли Ви навіть почати налагодження або усунути цю програму? Це просто переважною. І так дійсно освоюють цю ідею приймати steps-- кроки дитини знову і again-- побудова то, що це, врешті-решт, дійсно вражає і складний, але по-перше, не так сильно. Насправді, давайте зробимо це. Дозвольте мені йти вперед і-- Подряпини себе існує в Інтернеті за адресою Scratch.MIT.edu, і ви будете, як сказав багато разів в завданні встановити нуль, специфікація для який вже знаходиться на веб-сайті CS50 в. Але це те, що само по собі є подряпин. І є насправді просто три основні області. У верхньому лівому куті є це так званий етап. Це Подряпини. костюм за замовчуванням є кішка. І це прямокутний світ які ви можете move-- вгору, вниз, вліво, право і деякі інші речі. В середині тут наші категорії або наші піддони головоломки, і різні кольори означають різні речі. І якщо ви пошукайте, ви побачите речі, такі як цикли і умови і змінні та інші інгредієнти. А потім тут є область скриптів. Це де я можу перетягнути ці шматочки головоломки, щоб робити речі. Так давайте зробимо одну таку річ. Дозвольте мені йти вперед і-- і я знаю, де це. Так що я збираюся негайно натиснути на де я знаю, що все готові бути, але вказуючи і натиснувши і колупатися неминучі. Тому, коли зелений прапор клацнув, Що я хочу зробити? Я збираюся зробити це. Я збираюся перетягнути цей фіолетовий головоломки частина, скажімо привіт протягом двох секунд, і дозвольте мені збільшити. І я збираюся змінити це щоб бути тим, що я хочу, щоб be-- привіт світ протягом двох секунд нормально. Тепер, я збираюся натиснути зелений прапор, або якщо я дійсно хочу, Я можу в повноекранному режимі, а потім повернутися. Він буде просто тримати все в одному вікні. Зелений flag-- привіт світ. Добре. Не всі, що цікаво. Отже, дозвольте мені йти вперед і робити це. Дозвольте мені спробувати ще. Коли зелений прапор clicked-- давайте зробити щось на зразок звуку. І зверніть увагу, що з коробка безкоштовно ви отримуєте звук кота, як спрайт за замовчуванням. Так що тепер дозвольте мені йти вперед і вдарив зелений прапор прямо зараз. [Нявкання] Ав. Це чудово. Я програмування. Так що я зробив? Це еквівалент програми. Це, очевидно, супер просто. Це насправді не приймати все, що багато зусилля і MIT зробив велику частину роботи, але я називається функцією. Я використовував функцію. Я зробив якусь дію, використовуючи тільки що один фіолетовий шматок головоломки. Ну, якщо я хочу зробити три нявкає поспіль? Дозвольте мені йти вперед і робити два і три. І зауважте, що коли ви парити поруч шматок головоломки, з'являється маленька біла лінія свого роду магнітним способом, і вона лопне разом, коли ви відпускаєте. Давайте подивимося, що тут відбувається. [Нявкання] Там є помилка. Я чую тільки одне нявкання. Чому це може бути? Так? Так. Ми насправді не чути, але це хороша інтуїція. Вони всі грають в той же час. Чому? Ну, комп'ютер просто буде робити те, що ви скажете їй зробити. Так що, якщо ви говорите, відтворення звуку, відтворення звуку, відтворення звуку, але ви не говорите це грати до ви закінчите, грати, поки ви не закінчите, це буде дути через програма дуже швидко і не тільки те, що ви скажете їй зробити. Так що я насправді потрібно виправити це кількома способами. Я міг би просто зробити це, щоб позбутися від цього. Дозвольте мені спробувати цю іншу головоломку piece-- грати звук мяу поки не зроблено, а потім перетягнути три ці та натисніть кнопку відтворення. [Нявкання] Це насправді не very-- спасибі you-- дуже природно. Так чому ж не i-- нехай мені йти, щоб контролювати тут. Ніцца. Зачекайте одну секунду, а тепер дозвольте мені повернутися звуки і відтворювати звук, поки не зроблено, а потім дозвольте мені почекати одну секунду. А потім дозвольте мені піти і отримати один більше звуку, і тут ми йдемо. [Нявкання] Трохи більш природним, але це не дуже ефективно. Як мені стає нудно, все буде Коротше кажучи, натиснувши назад і вперед і дійсно дублюючи моє work-- досить багато копіювання і вставки. Дійсно, якщо я керую або натиснув правою клавішею натиснув, Я міг би просто скопіювати і вставити. Що було б краще побудувати використовувати? Яка ідея від раніше? Так, так що петля. І справді, якщо ми понишпорив, ми могли б знайти саме те, що. Дозвольте мені йти на події або, вірніше, контролю. Так repeat-- я не хочуть, щоб це було в 10 разів. Це збирається дратувати швидко. Але я буду повторювати три рази. Дозвольте мені повернутися до звуку і грати звук, поки це не зроблено. Дозвольте мені повернутися до контролю і просто чекати одну секунду. І зауважте, ви можете думаю, що це не підходить, але знову ж таки, якщо магнітним ви дозволите оснастки на місці, вона буде рости, щоб заповнити. Що він грає зараз? [Нявкання] ДОБРЕ. Ніцца. І це те, що можна було б назвати програма, яка також правильно. Він нявкав три рази досить природно, але це краще розроблені. Я використовую менше надмірності. Я не скопіювати і вставити що-небудь. Я просто використовував краще представлення. Тепер, це ще не все, що Цікаво, з нуля не робити що-небудь. Так що давайте робити щось ще замість цього. Давайте робити щось назавжди. І ви знаєте, що? Рух здається цікавим. Давайте йому рухатися 10 кроки і вдарив грати прямо зараз. ДОБРЕ. Ну ми можемо вид опору його назад, і він як і раніше працює, тому що він робить це назавжди. Таким чином, цикл робить що він говорить робити, але це не все, що цікаво. Давай зробимо це. Дозвольте мені додати блок управління, і використовувати одну з цих умов в перший раз. Так що це буде рухатися 10 steps-- 10 точок, 10 пікселів на screen-- то це буде поставити це питання. Якщо щось правда, то робити щось всередині цього блоку. Так що виходить зондування має цілий зв'язка булевої expressions-- питання так ні чи правда помилкова form-- зробимо це. Якщо touching-- і потім є це маленьке меню, що випадає. Я можу параметризрвані його. Якщо торкаючись до edge-- давайте зробити щось на зразок цього. Так що, якщо ви торкаєтеся edge-- дозвольте мені повернутися до руху. А чому б нам не просто розвернутися на 180 градусів? Добре. Так назавжди, рухатися 10 кроків. Якщо ви зворушливі край, поворот на 180 градусів. І це ще не кінець програми тому що ви в назавжди блокувати, так що збирається йти знову і знову і знову і знову. Отже, давайте подивимося, що станеться. ДОБРЕ. Трохи глючний, але вигляд прохолодного. І ми можемо додати до цього якісь дурні речі що не все, що інтелектуально цікаво. Але якщо ми цей маленький хіт Мікрофон button-- Уч. Дозвольте мені очистити це. Дозвольте мені поліпшити це як вони б сказали по телевізору. Очистіть, що вгору, Зберегти і Тепер йти до скриптів. А тепер дозвольте мені перейти до звуку. Дозвольте мені дати йому ім'я. Я буду називати це Ouch. І тепер грати звук Ouch. Зверніть увагу на те, що з'являється в трохи меню, що випадає. Давайте подивимося. [ОЙ] [Сміється] Але ми можемо змінити т Його на льоту. Ми можемо бути в два рази дратує. [ОЙ] Або, якщо ми робимо це, як 1000 кроків за time-- ДОБРЕ. Отже, ми збираємося залишити це один поодинці. Так знову ж, будівництво blocks-- I почав з чимось супер простий, а потім я додав функцію, додана можливість, додана можливість. І я більше не потрібно турбуватися про як перший з цих функцій був реалізований як я як і раніше нашаровувати речі на вершині. Так що насправді, дозвольте мені зробити одне інше тут. Дозвольте мені йти вперед і відкрити файл, Я приніс заздалегідь, називається Овець. Так що він має трохи інший символ, який виглядає наступним чином. І дозвольте мені побачити, якщо я не можу зробити щось за допомогою лічильника в цьому case-- так звану змінну. Я збираюся йти вперед і під Events-- дозвольте мені отримати зелений прапор клацнув. Тоді дозвольте мені перейти до даних, які я знаю, від просто грав раніше, де змінні. І я збираюся йти вперед і перетягнути це. Так що змінна називається лічильник, і Я збираюся ініціювати його до нуля. Я можу назвати його anything-- х або у або z--, але в програмуванні, називаючи щось в семантично корисний спосіб, як лічильник, який описує, що це таке, це набагато легше читати ваш код пізніше. Дозвольте мені йти вперед і отримати назавжди заблокувати тут. І дозвольте мені перейти до зовнішності сторінки і зробити блок Say. Але що це круто про змінних я не потрібно просто ввести щось як привіт світ, який ми вже зроблено, я можу замість того, щоб перейти до даних і перетягнути мою змінну, і навіть хоча форма не зовсім виглядати він повинен відповідати, вона буде рости, щоб заповнити. І я просто скажу, лічильник для одного second-- spoiler-- він збирається розраховувати. Ми будемо говорити про це протягом однієї секунди. Тоді я піду і є його чекати протягом однієї секунди, так що це не вважається занадто швидко. І потім, нарешті, змінити лічильник по одно-- іншими словами, приріст лічильника на одиницю додаткове значення і зробити це назавжди. Так що вівці теж, подібно програміст, вважає від 0. І якщо ми будемо чекати досить довго, він зробить це назавжди. Але це не зовсім вірно, тому що справді, як ми виявимо в тиждень один, цілі числа і комп'ютери в більш загальному плані, технічно є тільки finite-- добре, а комп'ютери, коли вони представляють собою цілі числа, тільки кінцеве число бітів. Ці лампочки там може розраховувати тільки настільки висока перш ніж ви з лампочок. І комп'ютер теж, тільки має так багато пам'яті, тільки має так багато транзисторів, так що він може розраховувати тільки така висока. Так виходить, що вівці, Я думаю, що, може розраховувати на 2 млрд або щось досить великий. Таким чином, ми не будемо чекати, поки це станеться. Але врешті-решт якась помилка буде відбуватися які можуть мати деякі дуже реальний світ відгалуженнях. Але за овець, що просто вводить змінну. Давайте йти вперед і відкрити то, що я зробив заздалегідь тут називається улюбленця Cat-- Pet Кота тут. І зауважте, тут це мало блоки, але коли зелений прапор клацнув, назавжди, виконавши такі дії. Якщо ви доторкаючись до миші pointer--, щоб курсор на екрані, arrow-- гра звук мяу а потім почекайте дві секунди. І як раз зробити це назавжди. Просто постійно чекати щоб побачити, якщо pointer-- якщо кішка чіпає покажчик. Так що я вдарив грати. Нічого не відбувається. Але, як я перемістити курсор над кішкою, [Нявкання] І якщо я перемістити його в сторону, не гладить кішку більше. Таким чином, деякі умовна логіка вкладеними всередині циклу. Як про це прикладі, навмисно називається Чи не погладити кішку? Що це буде робити? [Нявкання] Чому ви не гладите кішку? [Нявкання] ДОБРЕ. Так що це приклад, якщо в іншому місці. Це точка прийняття рішення і тому що він сидить в петлі, вони обидва отримувати чек. Це правда? Це правда? Це правда? Це правда? І врешті-решт, один з ті, збирається подати заявку і тому ви чуєте або мяу або рев лева в цьому випадку. Що ж, давайте робити трохи більше фантазії одного що я зробив заздалегідь too-- ниток. Таким чином, потік є лише одним річ, що комп'ютер може зробити. Так многопоточної програма являє собою програму що може зробити кілька речей одночасно. І всі ці приклади до сих пір мали тільки один сценарій, так speak-- одна програма, як це тут. Але зверніть увагу, ця програма має два спрайту, два символи. Одним з них є птах. Одним з них є кішка. І зверніть увагу, коли я натискаю на них вниз зліва, кожен з них має свої власні сценарії або програмне забезпечення, пов'язані з ними. І обидва ці програми, повідомлення, початок з тим, коли зелений прапор clicked-- давайте подивимося на cat-- коли зелений прапор клацнув. І так насправді, коли я вдарив грати зараз, дві речі, які будуть відбуватися одночасно. Кішка і птах обидва буде працювати одночасно для створення цього ефекту. І ви можете собі уявити, що відбувається. Там є петля і птиця і кішки знаходяться в петлі. Птах просто підстрибуючи, як Я був раніше, коли я сказав Уч. Але кіт явно має перевагу. Там інша чутливий блок що вказує кішку навмисно щоб птиці в цьому випадку тут. Таким чином, ми могли б дражнити один від одного, дивлячись через ці блоки, що відбувається. Але ключовий інгредієнт тут один. Птах, так що ця гра не повністю boring-- або це animation-- починається в довільному напрямку. І комп'ютер набирає число від 90 до 180 по суті, таким чином, що це злегка різні анімації кожен раз. І зверніть увагу на те тут, якщо кіт чіпає птицю, то грати лева чотири sound-- рев. Але поки в пташину палітра, у нас є це. Назавжди, якщо не торкаючись кота, просто продовжувати рухатися три кроки. А потім ось ще шматок головоломки. Якщо ви перебуваєте на краю, підстрибувати. Таким чином, птах просто вид звертаючи уваги свій власний бізнес, просто літати навколо і підстрибуючи, і це дійсно кішка, яка була умовною логіки щоб визначити, чи є він зловив птицю. Добре. Так давайте зробимо один інший тут, це одна з яких називається Привіт Привіт Привіт. І цей тут просто робить це в назавжди петлі. Але notice--, як ми зупиняємо це дуже дратує програма? Натисніть пробіл. Тому що, якщо я можу це зробити, ліва рука program-- зверніть увагу, що це постійно listening-- є ключовим простір преса. Якщо пробіл натиснута, і якщо так, то що він робить? Це робить дуже поширену техніку. Вона встановлює змінну рівною деякому значенню. Але вона перемикає це значення. [? Так що зовнішній вигляд?] заснований на shape-- I є змінна, що я писав заздалегідь під назвою Приглушений, який просто говорить: так чи ні. Приглушений звук чи ні? Правда чи неправда? І зауважте, я кажу, якщо this-- приглушені дорівнює нулю, то змінюється на один, інакше встановити німого його до нуля. Таким чином, просто переверніть значення від нуля до одиниці. Я міг би змінити його done-- від двох до трьох і від трьох до двох або від чотирьох до п'яти або чотирьох до шести. Але це не має значення які цифри, які я використовую, до тих пір, поки я змінюючи його протилежність. І більшість будь-який програміст міг би просто вибрати нуль і одно-- брехня і правда, викл та on--, щоб представити це. І це все ще працює. Якщо я знову натиснути пробіл [SEAL ЗВУКИ] Програма все ще працює. Тому що цей інший сценарій що говорить, назавжди зробити наступне. Якщо приглушений змінна дорівнює zero-- так що якщо ви не приглушений є logic--, якщо воно помилкове чи ні, а потім відтворювати звук, тому що ви не приглушений. Ви повинні грати звук, а потім думаю привіт привіт привіт протягом двох секунд а потім чекати, і зробити це знову і знову і знову. І ось таким чином ми маємо шлях для люди, метою яких для програм, щоб взаємодіяти. І вони не повинні бути, як датувати інші. Насправді, тикаючи around-- НЕ каламбур intended-- хтось витратив величезну кількість час в Інтернеті, що реалізує PokemonGo в порожньому місці. Він навіть geolocates вас в Кембридж чи Олстон тут. Так що якщо ви хочете, щоб побачити, що люди занадто може зробити, це дуже this-- фантазії меню. Натисніть тут. Це я з моїми клавішами зі стрілками в даний час. Я збираюся піти після цього. Натисніть. І тепер ви клацніть PokeBall. Я маю на увазі, я думаю, що ти повинен натиснути PokeBall. Добре. Так що я зробив це. Я можу піти тут. І ця людина реалізований ще трохи PokeBalls над here-- трьох PokeBalls. Ми опублікуємо посилання на цю сторінку онлайн, так що ви можете грати. Але зверніть увагу: є тільки деякі основні будівельні блоки. Це виглядає набагато вправнішим, і це. Це вражає і багато іншого ніж ми, як правило, очікувати, звичайно, для завдання встановити нуль. Я поняття не маю, як довго ця людина провів в Інтернеті. Але це всього лише петля. Там є звук гри. Там якась петля прослуховує чи я я потрапивши стрілку вгору або вниз на стрілка або лівий і правий, а потім, якщо це так, він рухається це деяка кількість пікселів. І потім, якщо я натискаю на інший спрайт, є свого роду, якщо стан там. Так, це стає занадто інтенсивним. Ми збираємося зупинитися. Це все ті основні будівельні блоки. Там немає інших інших інгредієнтів ніж ті, які ми розглянули вже. І все ж тут, зробимо один останній набір прикладів що малює картину занадто про те, що ви можете зробити тут. Ось дуже проста програма, яка просто робить this-- кашель, кашель, кашель. І грунтуючись лише на те, що ми розглянули досі, де це очевидно можливість для поліпшення. Ця програма є правильним. Він кашляє три рази, який є те, що я мав намір. Але це погано реалізується. Це погано сплановані. Чому? Так. Це не петля. І це не так багато що це не петля, це те, що є багато надмірності. Там копіюється і вставити код, якщо можна так висловитися. І рішення, ймовірно, дійсно петля. Отже, дозвольте мені йти вперед і поліпшити це. І я збираюся тягнути їх сюди. Дозвольте мені йти вперед і отримати повторення блок, змінити це на три. Я збираюся викинути деякі з цих блоків. І ви побачите, що це досить інтуїтивно. Перетягнути і речі з'являються і зникають в кінці кінців. І я можу просто перетягнути це тут, і У мене тепер є більш чисту версію досі. Але ви знаєте, що? Там ця можливість тепер для abstraction-- щоб почати визначати новий словник що MIT не очікували. Там чекати і повторіть і на віки віків, і якщо, але що, якщо я хочу представити слово кашель як блок? Що робити, якщо я хочу шматок головоломки чия мета в житті кашель? Що ж, давайте подивимося на цю версію тут, який я зробив такий спосіб. Чарівно, я створив цей шматок головоломки тут, який Царапина дозволяє робити. І справді С і Python і JavaScript є збирається, щоб дозволити вам зробити це, а також. Ви можете створити свій власний частини, які ви називаєте те, що ви хочете. У цьому випадку, кашель відчуває як розумне визначення. А потім з цими частинами вниз тут ви можете визначити, що це означає. Я перетягнуті з ця палітра here-- більш blocks-- цей великий фіолетовий блок, де я надрукував від кашлю як ім'я мого нового паззл. І тоді я кажу кожен раз, коли користувач називає цей новий шматок головоломки кашель, зробити слово і чекати. І ось тут, в моєму повторному блоці, Я можу тільки кашель в три рази. І я б сказав, особливо якщо тепер ви приховати цю деталь. Хто дбає, як реалізується кашель? Все, що я дбаю про якість програміст, що я можу кашель. Мене не хвилює, як кажуть, реалізується. Я просто все одно, що кіт може сказати щось. Я можу абстрагуватися від деталей і що акцентувати увагу тільки на те, що на екрані тут. Але я можу зробити ще один крок вперед. Зверніть увагу на те, що тут, у мене є реалізований контур в три рази. Але що, якщо замість того, щоб я хапаю цю версію? А що, якщо замість того, щоб У цій версії тут, Я просто змінити свій шматок головоломки, щоб прийняти аргумент і вхід до себе? І що вхід може бути число, наприклад три. Так що тепер, якщо я пишу програму і я хочу, щоб кішка кашляти, Я можу насправді сказати головоломки шматочках, скільки разів кашель, тому що на дні тут, любитель версія цих користувальницьких головоломки дозволяє мені вказати, що кашель фактично приймає input-- приймає аргумент, як це. І ви знаєте, що? Може бути, я розумію, зачекайте хвилину. Кашель є same-- це принципово та ж ідея, як чхання. Це просто різні слово на екрані. Я можу абстрагуватися від далі і реалізувати ця остання версія кашель, який на перший погляд шлях більш складний вид. Але зверніть увагу на те, що я зробив. У мене зараз generalized-- узагальненого really-- цей шматок головоломки щоб назвати слово сказати п раз. І тепер у мене є дві нові частини головоломки тут визначають кашель п раз. А що функція кашлю робити? Що робить моє замовлення шматок головоломки робити? Це просто викликає блок скажімо, передаючи слова я хочу сказати, проходячи в кількості раз я хочу сказати. Тому що тепер я можу реалізувати чханні, просто кажучи Achoo, У цьому випадку, кілька разів. І тому я відводами і укладанні. І знову ж таки, ключ тут не як я реалізував його, але той факт, що якщо я просто в буквальному сенсі перемістити їх з екрану, Подивіться, як просто, якщо не красива моя програма зараз виглядає. Тому що це те, що він каже, я відведеної далеко, що знаходиться всередині цього чорного ящика. це трапляється фіолетову коробку тут, але я перешкоджали далеко, що всередині тому що я не хвилює, як це працює. Я просто все одно тепер, що це працює. І справді, в завданню встановити нуль, це точно вид нашарування ідей, які ви будете мають можливість досліджувати. Це саме можливість застосовувати методи вирішення проблем, до того, що, ймовірно, незнайомому середовищі. І чи є ви не запрограмований перед тим або запрограмоване перед тим, ви побачите, що є дещо в цьому середовищі для всіх. І з проблемою встановити один протягом тижня, ми будемо переходили до зосередження на більш високому рівні мови під назвою C-- або, скоріше, нижчу рівень мови називається C--, що ще більш потужний, навіть якщо це трохи більше загадковим на перший погляд. І ви зрозумієте, що на сьогоднішній TL: DR, що ця проблема встановити має більш короткий вікно часу, ніж майбутні, просто тому що ви повинні знайти його досить доступною. І не хвилюйтеся, якщо Ви додаєте клас пізно. Ми будемо вирішувати, що до тих пір. І перш ніж ми закрию для торта, давайте закінчити всього лише дві хвилини погляду на те, що чекає вас тут в CS50. [МУЗИКА] Добре. Ось це для CS50. Ми побачимо вас найближчим часом. Торт тепер служив. [МУЗИКА] СПІКЕР 17: Ви чули з творчої відпустки, начальник? СПІКЕР 18: Може бути, є більше під капотом.