[Фоновими шумами] Це працює? PATRICK REBESCHINI: Ми можемо приступити до роботи. ДОБРЕ. Відмінно. Давайте розпочнемо. Так що це моє найбільше задоволення вітати всіх вас тут сьогодні для першої лекції , Ну, Введення для обчислювальної техніки та програмування. Також відомий як CS50 або криничної, CPSC 100, офіційно тут в Єльському університеті. Таким чином, ми не могли бути більш схвильовані вітати всіх вас тут. Мене звуть Патрік Rebeschini. Я керівник інструктор класу. Я тут, що представляє групу близько 60 співробітників який буде працювати з вами протягом семестру. Це число майже 60 з нас. Проте, по незвичайній рівень зобов'язань що ми вкладаємо в це клас, робить CS50 класової в Єльському університеті, який пропонує найбільший рівень підтримки всім вам. І ми не могли бути більш пишатися пропонуючи цей клас тут ще раз. Насправді, як ви скоро випробувати, CS50 набагато більше, ніж клас. Це співтовариство. І ви будете частиною найближчим часом цієї спільноти. Це другий рік, Yale пропонує цей клас. Ми будуємо на крайнощі успіх в минулому році, де вперше, тут в цьому університеті, магістрант асистент навчання були прийняті в класах. Все почалося з цей клас в минулому році. Так що, як ви знаєте, клас вчать спільно з Гарвардським університетом. Для того, щоб цей курс ми relying-- ми можемо розраховувати на великий досвід Девід Малан і команда Гарварда. Так що Девід викладає CS50 для добре, 10 років. І щороку він був розсуває кордони і покращуючи досвід в класі. Знову ж таки, ми не могли бути більш щасливі продовжити цю співпрацю з ними. Насправді, один з найцікавіших частин, Я буду говорити про виконання цього класу в даний час, як в Гарварді, і тут в Єльському університеті, це дійсно неймовірно взаємний розвиток ідей, спрямованих на поліпшення досвід навчання для всіх вас. Таким чином, в результаті цієї великої співробітництво між двома університет, CS50 з гордістю оголосити про випуск нової версії в цьому році з помітними змінами. Девід все скажуть нам про них зараз. Так please-- це істота сказав, будь ласка, приєднуйтесь до мене і ласкаво просимо, щоб дати великий круглий оплески вітати Давида і Гарвардська команда тут в Єльському університеті. [Оплески] DAVID Маланки: Дякую. Дякую. Це CS50, Гарвардського університету і впровадження Єльського університету до інтелектуальної підприємств інформатики і мистецтво програмування. А що це означає, що цей курс в кінцевому рахунку, про рішення проблем. Дійсно, багато хто з вас, можливо, вийшли з середньої школи або провели останні пару років цікаво, що деякі з ваших друзів в минулому році або в інших класах. І тим не менше, реальність немає, незалежно від того, що ми робити в кінці дня в цьому класі, це буде про рішення проблем. І як такий, можливо, прийняти деякі впевненість в тому, що 73% студентів, що прийняти цей клас, як тут в Єльському університеті, а також в Гарварді, ніколи не брав клас CS раніше. Так що якщо ви сидите тут в глядачі сьогодні цікаво чому ви сидите тут в аудиторії сьогодні, або, може бути, ви просто слідували поряд з деякими друзями, або, можливо, ви були трохи цікаво, що інформатика і програмування, розуміють, що більшість ваших однокласників зліва і праворуч від вас дуже багато в тій же демографічної. І справді, якщо ми подивимося нарешті статистики рік в рамках студентського органу CS50, як тут і в Гарварді, 58% студентів описують себе як менш комфортно. 9% зручнішим. А потім 33% десь посередині. І немає ніякого формального визначення що означає, що ці відра. Ви начебто знаєте, що ви менш комфортно, якщо ви. Ви відчуваєте себе трохи ніяково с, можливо, перебуваючи в класі. Ви не зовсім впевнені, якщо комп'ютер наука клас в кінцевому рахунку, для вас, і зрозуміти, що ви в дуже хорошій компанії. І дійсно, градація, і оцінка, а зворотний зв'язок, і все, що Структура підтримки в класі в кінцевому рахунку, дуже індивідуалізовані. Більше, ніж більшість будь Інший клас з дизайну. І справді, що в кінцевому підсумку питання в цьому класі не так багато, де ви в кінцевому до відносно інших, але де ви, в тиждень 11 або в минулому, і по відношенню до себе в тиждень 0 тут наш перший. Так що ж це значить? Ну, це означає, що з цих 73% Студенти в минулому році, що ніколи не брав клас CS перед тим, на початок семестру вони були втручаються в мові називається Подряпини, які ми самі бачитиме тут сьогодні. І до кінця семестр, якби вони пішли через весь цей перелік проблем. Починаючи з мови називається C. Реалізація, що на перший погляд, відбувається щоб бути трохи складним завданням для деякі, але досить приємно, як тільки ви отримати Супер Маріо підстрибуючи вгору і вниз піраміди реалізовані, хоча, тільки з то, що називається ASCII-арт. Реалізація останнього год--, що студенти в минулому році, то зробив після цього було реалізувати їх власний шифр Цезаря і шифр віженера. Так що алгоритми шифрування з якими ви могли б скремблювання інформацію, а потім розшифровувати інформація для передачі секретних повідомлень. Гра 15. Якщо ви пам'ятаєте дитинства або будь-якої прихильності партії, ця маленька пластикова гра, де ви рухатися число вгору, вниз, вліво і вправо щоб спробувати отримати їх в порядку, насправді здійснення цієї гри і вирішуючи логіку, необхідну там. А потім ми бавилися судово-медичної експертизи в минулому році. Таким чином, до середини семестру, студенти, які ніколи не використовували свої клавіатури Для цієї мети перш, були написання програмного забезпечення відновити, так би мовити, JPEGs або фотографії що ми повинні були випадково видалений з цифрової карта пам'яті з камери. Відновлення секретних повідомлень зсередини растрового зображення, та інші подібні типи графіки, а також. Потім ми перейшли до надання весь клас словник. Просто дійсно великий текстовий файл з 150000 англійських слів. І кожен був кинутий виклик щоб якось читати, якщо можна так висловитися, ці слова в пам'ять. У пам'яті комп'ютера. А потім відповідати на питання форми, чи є це слово? Чи є це слово? Чи є це слово? Насправді просто реалізації перевірка орфографії. І тоді кожен виклик інший з великою board-- лідер дошки, щоб побачити, хто міг використовувати найменшу кількість пам'яті, в найменшу кількість часу на насправді перевірка орфографії великих документів. Ми перейшли від потім реалізації одні власний веб-сервер. Так що не робить веб-сторінки на мовах як HTML і CSS, якщо ви знайомі. Але насправді реалізації сервер, слухає в Інтернеті запитів від браузерів а потім у відповідь на ці прохання. Тоді реалізації наших власних електронної торгівлі, як веб-сайт, де студенти могли купувати і продавати акції. Малюнок в майже реальному часі біржові котирування від Yahoo Finance. І дозволяє студентам бачити як їх портфель розвивається. А потім, нарешті, місиво вгору з Google News і Google Карти, згідно з яким студенти на термін за термінами закінчення мав можливість натискати, і круглі, і пошук на карті Google. А потім побачити все новинні статті, проксимальний до цих конкретних областях. Так що дійсно відбувається від нуля до 60 років. І по шляху мати те, що ми мали У минулому році під назвою, хакер доповнення. Це піднімає планку далі для тих з вас, який міг би дуже добре мати хороший кількість досвіду, перебуваючи в цьому 9% зручнішим. Так розумію, що є дуже високі стелі навіть в тих, виклики для студентів виходячи з іншої фон. Тому що в кінці на наступний день, ми в кінцевому рахунку, зосереджені досить просто на цьому. Але що робить це значить, рішення проблеми? Отже, давайте припустити, що ми переганяти це так. Таким чином, рішення проблем насправді тільки цей вид зображення. Так що у вас є входи в якоїсь проблеми, то, що ви насправді хочете, щоб вирішити. Мета полягає в тому, щоб отримати виходи, рішення цієї проблеми. А потім в середина що ми будемо називати чорний ящик. Вам не обов'язково знати або навіть все одно, що знаходиться всередині цього чорного ящика. Всі ви знаєте, що, коли Ви годуєте вхід в нього, ви сподіваємося отримати вихід або розчин з нього. І хоча сьогодні ми будемо дивитися як на входах і виходах, ми будемо довгостроковій перспективі, і над Курс усього семестру, зосередити увагу на те, що всередині цієї коробки. І в цьому буде лежати щось звані алгоритми. Крок за кроком інструкції для насправді рішення деяких завдань. Але те, що приклад деяких входів? Так що, може бути, проста річ на початок кожного навчального року, хтось може знадобитися взяти участь. Таким чином, ми могли б зробити один, два, три, чотири, п'ять, шість, і як би я продовжую слід цієї інформації. Я міг би просто піти на один, два, три, чотири, п'ять, шість. І просто використовувати вид однозначних цифр. Або я міг записати це трохи більш тривалий термін. І як я уявляю все люди в цій кімнаті? Ну, я міг би зробити щось на зразок, добре. Я бачу один чоловік. Добре. Я бачу іншої людини, A третя особа, і так далі. Але ніхто не вважає таких людей, як це. Так що в буквальному сенсі, більшість з нас, якщо ми навіть збирається зробити що-небудь взагалі, , Ймовірно, буде йти один два три чотири, можливо отримати трохи фантазії, п'ять, шість, сім, вісім, дев'ять, десять і так далі. І це насправді Система називається унарний. Uno, як UNO маючи на увазі одне, де ви тільки одна буква алфавіту. Ви тільки що отримали цей хеш-знак. І я, для підвищення ефективності, просто звернув ці хеш-знаки, в кінцевому рахунку, , Як прямі. Але я міг би втягнувши їх а маленькі палиці цифри. де представляти одна людина, один вхід, Я просто намалювати палицю фігура або хеш-тег. Але це не все, що виразно. Якщо все у мене є ці хеш знаки, не кажучи вже дотримуватися цифри, як я міг би уявити щось на зразок числа 15? Або 15 осіб в кімнаті? Я міг би зробити щось на зразок 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. Це просто не дуже добре масштабується. У міру того як входи стають великими, ми потрібна краща система, ніж це. І виходить, що система, які використовують комп'ютери не всі, що різні від того, що ви і я знаю. Насправді, більшість людей в цій кімнаті, навіть якщо ви серед тих, менш зручно, не обов'язково знати як ваш Mac або PC дійсно працює, ви, ймовірно, принаймні, чули, що під капотом 0 і 1-х. Так звана бінарна система. Так насправді, комп'ютери мають більш тільки хеш-знаки в їх словниковий запас, але не так багато з словниковий запас, як ми, люди. Справді, ми, люди не використовують двійкову. Bi означає 2, 0 і 1. Але десяткової, Дека що означає 10, від 0 до 9. Таким чином, у нас є набагато більш виразним можливості в нашому звичайному людському світі. Але я б стверджувати, що ці системи, бінарний і десятковий, і все між ними і за її межами, є насправді все добре знайомі. Наприклад, розглянемо цей приклад тут, 123. Так що це насправді, звичайно ж, номер ми знаємо, як 123. Але все, що я просто малював просто це малюнок символів, гліфи, так би мовити. Сортування фігур на дошці крейдою. Але чому ми відразу і інтуїтивно зрозуміти це як 123? Ну, якщо ви були схожі мене в початковій школі, ви, напевно, зрозуміли, що це 1s стовпець, це стовпець 10s, Це стовпець 100S. І чому це корисно? Ну, це проста арифметика ви зараз зробити, щоб отримати з шаблону символів до ряду ми розуміємо інтуїтивно. Те, що в 100 разів більше 1, а потім 10 раз 2 і 1 раз 3, який, звичайно, тільки 100, і це 20, і це по-третє. І тому, якщо ми додамо ці together-- ах. Так що в цьому полягає роду міркування за чому цей набір символів означає, що щось реальне і числовий. Що ж, комп'ютери роблять ту ж саму річ, але вони тільки можуть розраховувати як високо як єдине ціле. У той час як я був в стані розраховувати як високо як три. І справді, якби я продовжував йти я міг доходити до дев'яти в цій системі. Комп'ютери мають тільки нулі і ті, в їх алфавіті. Так що ж це значить? Ну, це просто означає, що якщо комп'ютер хоче представляти, скажімо, число 0, можливо з використанням трьох characters-- трьох літери алфавіту, так би мовити, це як комп'ютер являє собою 0. Так що не все так страшно досі. Це саме те, що ми, люди будуть робити. І справді, більшість з нас просто ігнорувати провідні нулі в будь-якому випадку. Комп'ютер, якщо він хоче щоб зберегти номер 1, Виявляється, збирається зробити це. І комп'ютер для зберігання число 2 цієї статті не збирається зробити унарна систему, які я згадував раніше. Це насправді збирається це зробити. І це, ймовірно, де шаблон починається щоб стати менш очевидним для більшості людей. Це 2 це 3. Цікаво, що це тепер 4. І тепер це дійсно як видається, мабуть, загадковим, але це не так, якщо ми вважаємо, то, що насправді означає двійковий. Це означає, що у вас є два літери вашого алфавіту. Так що два можливих символів для кожного заповнювача. Так що насправді означає, що ми збираємося потребувати 1s місце або 2s місце, 4с місце, а потім 8 і 16, 32 і 64. І яка різниця є? Як це 1, 2, 4, 8, 16, 32, 64. І перш, ніж у нас було 110, 100000, 10000. Що таке подібність є? А що картина? Так. Слухач: Повноваження 2 замість повноважень 10. DAVID Маланки: Так. Повноваження 2 замість повноважень 10. І тому, якщо я хотів зберегти йти, 8, 16s і т.д. forth-- але тепер, якщо у вас є такого роду підказку, тепер двійкова система насправді досить проста. Чому ця модель 0 ' в світі комп'ютерів 0? Ну, тому що це в 4 рази більше 0, 2 раз 0, 1 раз 0 і ви отримаєте 0. Чому це номер 1? Ті ж міркування, але тепер ми є 1 в 1 колонці. Чому це 2? Ми маємо 1 в стовпці 2s. А як же тоді робити я представляю кажуть, в двійковій системі число 7? Скажи голосніше. СТУДЕНТ: Три 1s. DAVID Маланки: Три 1s. Таким чином, 1, 1, 1, тому що нам просто потрібно 4 плюс 2 плюс 1 дає мені 7. Добре. Так звідти як же ми представляють 8 з 3-ма наповнювачів? Так. СТУДЕНТ: 1, 0, 0, 0. DAVID Маланки: Так 1, 0, 0, 0. І тим не менше, може бути, я як би технічно потрібно додати ще один заповнювач до дошки. Якщо я хочу, щоб відповідати, що я насправді потрібно зробити щось на зразок цього. Так що я насправді потрібно використовувати прямо зараз 8s колона, і це нормально. Але цікаво, що в обчисленні що це буде коштувати нам що-небудь. Вам потрібно більше оперативної пам'яті в вашому комп'ютері прямо зараз. Вам потрібно більше пам'яті тому що вам потрібно щось фізичний для зберігання, що додатковий біт, так би мовити. Бінарні цифри. І справді все, що сталося тут, як і в десятковій системі числення, якщо ми будемо продовжувати додавати номери вгору і вгору і вище, ми йдемо від 5 до 6 до 7 до 8 це як несучий 1, в буквальному сенсі. А потім все інше сходить до нуля. Але як же ми насправді представляють собою ці речі фізично в комп'ютері? Ну, врешті-решт, єдиний фізичний вхід відбувається в мій комп'ютер тут це кабель живлення, так електрику або електрони від стіни. І так як я отримую від чогось фізична, як, що насправді представляючи ідею, як це замість цього. Ну, що ми могли зробити? Ми могли б вважати, що, все в порядку, може бути, якщо електрику тече Я міг би зберегти його і утримати її. І якщо я тримаю на в якийсь електрику, що тільки збирається довільно являти собою 1. І якщо я махнути і там нічого немає, Ви знаєте, що це просто буде довільно являти собою 0. Так що, якщо щось є, 1. Якщо нічого не там, 0. Або ви можете зробити це трохи більше візуально. Ось 0. Там нічого цікавого поточної з приводу задньої частини мого телефону. Але якщо я дозволю трохи трохи електроенергії текти, незважаючи на те, що це трохи яскравий тут, мій ліхтарик продовжував. Тому я зберігати заряд і Ergo, цей телефон в даний час являє собою 1. Так що 0: 1. Так що з 1 iPhone, як високо я можу розраховувати, використовуючи такий підхід? Я маю на увазі 1. Це не все, що переконливими. Так що ще ми могли зробити? Ну давайте подивимося, є хто-небудь на їх телефон прямо зараз, що я міг запозичити? Той, хто має телефон з ліхтариком вбудований? Чи можу я взяти? Мені не потрібно це розблокована. Добре. Дякую. Дозвольте мені взяти це. Добре. Так що, якщо я тепер прокручувати вгору і тут, Що я тепер представляючи? Так. Таким чином, це три, тому що це в 1s колонка, це знаходиться в 2з колонці. Таким чином, 1 плюс 2 дорівнює 3. І потім, якщо ми намагаємося отримати дійсно creative-- ой, спасибо. Дуже попереджуючий. Добре. Тепер у мене є три iPhone'ов. Добре. А тепер this-- я не буду робити далі, ніж це. Що я тепер представляє? Просто сімок. Але мені потрібно було фізично більше пам'яті в цьому випадку. Але це все, що є. Ви можете думати, що відбувається on-- спасибі you-- всередині вашого телефону а просто бути перемикач, це будучи включений і виключений. І якщо ви коли-небудь чули слово транзистор. Або, якщо ви коли-небудь чув, маркетинг говорити Intel всередині, який говорить з типом обладнання що всередині вашого комп'ютера. Intel робить процесори, центральні блоки обробки, які, як мозок всередині вашого комп'ютера. І ці процесори і речі, вони пов'язані щоб мати багато і багато крихітних перемикачів. Мільйони, мільярди комутаторів який може або бути включена або виключена. Так комп'ютери, на щастя, як наші Маков і ПК, може розраховувати на порядок вище, ніж 7 або 8 тому що вони мають набагато більше, ніж три або чотири біта. Шлях більше, ніж еквівалент три ліхтариків, що ми просто не було. Але тепер це починає діставати досить швидко нецікаві. Якщо тепер я хочу, щоб насправді бути в змозі щоб зробити щось більш цікаве, Я хочу, щоб мати можливість стрибати до чогось на кшталт цього. Так ASCII, це не дуже корисно акронім, але американський стандартний код для обміну інформацією. Це просто означає, кілька років тому ми, люди вирішили, Ви знаєте, що ми хочемо, щоб бути в змозі зробити більше з комп'ютерами, ніж просто цифри. Ми не хочемо, щоб вони просто бути дорогими калькуляторів, ми хотіли б мати можливість робити такі речі, як обробка текстів, хоча і дуже просто. Пізніше ми мали електронну пошту та інші подібні засоби масової інформації. І тому світ вирішив кілька років тому відповідно до цієї системою ASCII, знаєш, що? У деяких типах програми в будь-який час ви см еквівалент числа 65, як набір бітів. І ми могли б зробити математика тут на дошці. Структура бітів, які складають 65. Не думайте про нього, як 65 в десятковій системі. Думайте про це як завгодно, але на глобальному рівні, послідовно, як капітал А. І тоді світ вирішили, ви знаєте, що? Давайте візьмемо інший набір бітів. І якщо ми коли-небудь побачити номер 66, давайте просто Припустимо, що це є капітал B. Перенесемося в H і я, якщо ви бачите, 72 або 73, що повинні бути Н і I, відповідно. І так до тих пір поки весь світ погоджується на це. Так що, коли ви отримаєте електронною поштою, або ви отримаєте файл на флешку, або щось на зразок that-- коли це Ви бачите, що набір бітів, Ви знаєте, що це повинно бути це лист або будь-якої іншої буквою. Але це залежить від конкретних умов, прав. Програма електронної пошти може інтерпретувати ці речі, як персонажів, але графічний калькулятор або Калькулятор може представляти або інтерпретувати ці речі, звичайно ж, як букви. Так що з цим сказав, швидкий невеликий огляд. Це може бути, три символу адреса електронної пошти, який був посланий мені. Під капотом все це в 0s і 1s, але ми не хвилює. Ми збираємося почати абстрактні вище 0 і 1 на листи. І якщо я бачу зразок 0 і 1, що насправді представляють собою 72, натяк, натяк, 73, а потім 33, що повідомлення? СТУДЕНТ: [нерозбірливо] DAVID Маланки: Так що якщо ви думаєте тому тільки хвилину назад, HI було послання, яке я намагався спілкуватися, тому що тут Н 72, Я 73, і тепер 33-- ви не захотіли обов'язково знати про це заздалегідь, але виходить, якщо ви насправді побачити більше діаграми і системи що людство, узгоджених років тому, це просто знак оклику. І справді, є зразок символи і цифри для кожного символу що ви могли б мати на вашій клавіатурі. Добре. Давайте абстрактні далі. Якщо ми не хочемо, щоб просто такі речі, як цифри і букви, ми насправді хочемо реалізувати графіку. Ну, якщо ви коли-небудь почув абревіатуру RGB. Це свого роду датовані тепер, але це все ще свого роду там. RGB червоний, зелений, синій. І це просто система сказати, ви знаєте, що, давайте використовувати три набору бітів. Набір з 8 бітів, інший набір з 8 біт, і інший набір з 8 бітів. І давайте використовувати ці біти зберігати, як багато червоного ми хочете на нашому екрані, то скільки зелений ми хочемо, щоб на нашому екрані, і скільки синього ми хочемо, щоб на нашому екрані. І це просто означає, що якщо ви мають lot-- велика кількість червоного, це означає, що дають мені багато корисного. Якщо у вас є велика кількість для зелений, дайте мені багато зеленого кольору. І якщо у вас є тільки трохи синього або невеликого числа, як 33, дайте мені трохи синього кольору. І якщо вам трапиться, щоб об'єднати тих, три величини, так би мовити, Ви отримуєте this-- ви навряд можете побачити на проектор тут, але це каламутне відтінок жовтого або коричневого кольору. Але це сказати, що за допомогою рисунок 8 плюс 8 плюс плюс 8-- що зразок з 24 бітів як комп'ютер буде зберегти цей відтінок жовтого в одному Маленька точка піксель на екрані. Таким чином, ми перейшли від 0 і 1 в десятковій системі цифри на букви алфавіту. Або більш цікавим, кольорові плями. Ну, що, звичайно, потім йде далі? Ну, що таке зображення, яке ви побачити на Facebook або отримати по електронній пошті? Або як? Що таке визначення технічно образу? Так. Що таке зображення складається з якщо ви дивитися дійсно близько на екрані? Так. Це просто ціла купа пікселів. Насправді, якщо ви берете ноутбук може бути, пізніше, і виглядають дуже тісно в залежності it-- про те, як дорого ноутбук і як висока якість екран, Ви могли б дуже добре бачити все маленькі точки на екрані. І ці точки або пікселі, а це значить, що є 24 біта, що представляють кожен піксель в тому, що фотографії, які ви бачите на Facebook, або що ви просто взяли на вашому iPhone останнім часом. І ось як ми отримуємо до речей, як графіки. Ну, що таке відео? Відео являє собою набір графічних обльоту екрані знову і знову і знову. А так відео насправді, просто шаблони бітів, що представляють сітки, рядки і стовпці точок, обльоту зображення на екрані, після того, як зображення, після зображення, а.к.а. Фільми. Так ось саме для входів і виходів. Все, що ми маємо зараз це Припущення, що ви знати, що, якщо ми хочемо, щоб комп'ютер представляти інформацію, ми маємо систему це робити. Ми можемо зробити це з 0s і 1s в кінці дня. Але ми можемо абстрактно, так що говорити, на вершині, що з тим, щоб представляти більш цікаві речі. І тут на в CS50, так і в комп'ютерні науки в більш загальному плані, ми тепер стоїмо на плечах всіх тих, хто був до нас, хто зрозумів, що з. А тепер просто припустимо, що комп'ютери можуть являти собою входи і виходи. Але тепер давайте насправді зробити щось з ними. Так що алгоритм просто набір інструкцій, крок за кроком, для вирішення якоїсь проблеми. І що, можливо, одна з таких проблем буде. Так що це стара школа технології, телефонна книга. І всередині телефонної книги є ціла купа імен та номерів. І ці імена, як правило, сортуються в алфавітному порядку. Так що, якщо я хотів знайти кого-то в це телефонна книга, як Майк Сміт, що типова людина збирається робити? Ну, ви могли б просто відкрити це, дивіться на першій сторінці. Я не бачу Майка Сміта. Поверніть на другу сторінку, Я не бачу Майка Сміта. І просто продовжувати йти і йти. Чи є це крок за кроком підхід правильним? Так. Це свого роду нерозумно, вірно. Це неефективно, вірно. Тому що це буде тривати вічно щоб дістатися до Майка, але це правильно. Тому що, якщо Майк тут Я дійсно його знайде. Так що це трохи більше розумна людина збирається робити? Вони могли б ще відкрити на фронт, і, можливо, літати через телефонну книгу дві сторінки одночасно. Два, чотири, шість, вісім. Я не можу насправді фізично зробити це дуже добре. Але в теорії, це повинно бути в два рази швидше, дві сторінки одночасно. Чи є цей алгоритм правильно? СТУДЕНТ: [нерозбірливо] DAVID Маланки: Не обов'язково. Добре. Чому це застереження? СТУДЕНТ: Тому що він може бути на одному сторінок, які ви пропуску. DAVID Маланки: Так. Так що навіть якщо я все ближче і ближче. Що робити, якщо він просто випадково, через погану удачі, затиснутою між двома сторінками що я лечу над? Так що нам потрібно виправити для цього. Ми насправді потрібно то кажуть, почекайте хвилину, може бути, якщо ми занадто далеко, може бути, якщо ми потрапили в розділ T, для T приходить після того, як Сміт, то ми повинні принаймні, удвічі назад принаймні, одну сторінку. Так можна виправити, але є умовний питання там. Так що це в два рази швидше, але ви можете повинні загнути тільки трохи. Але ніхто в його кімнаті, навіть якщо ви насправді не використовувати телефонні книги більше, збирається почати з самого початку. Що ти збираєшся робити шукає Майка Сміта? Ви збираєтеся йти приблизно в S-х років. Або, якщо ви насправді не мають шпаргалку на папері, ви збираєтеся йти по крайней мере, приблизно до середини. І, звичайно ж, не передня частина книги. Ви збираєтеся дивитися вниз. І математично ви, ймовірно, збирається побачити розділ M, який знаходиться приблизно в середині. І тоді ви збираєтеся розуміють, що це правда? Де Майк? СТУДЕНТ: [нерозбірливо] DAVID Маланки: Так. Так що він з цього боку. Так що ви можете зробити? Ну, прямому і переносному сенсі Ви можете розірвати цю проблему в два рази один раз? І тоді знайте, що ви можете кинути це половина від вирішення проблеми. А тепер ми залишилися з принципово та ж проблема, але це удвічі менше. І ось тепер, що це набір інструкцій? який алгоритм для знаходження Майка Сміта? Це точно те ж саме. Тепер це трапляється М розділ і це розділ Z, але фундаментальна формула залишається такою ж. Перейти приблизно до середини, дивитися вниз, о, штопати його. Зараз я перебуваю в розділі T, Я зайшов занадто далеко. Але тут теж може вам застосувати цю ж логіку. Вкидання половина проблеми геть і тепер ми пішов з проблемою, що це чверть розміру. І ми можемо повторити, і ми можемо повторити, і ми не можемо повторити, поки теоретично є тільки одна сторінка зліва на який Майк або є, або немає. Так що ж такого потужного про цю ідею? Я маю на увазі в кінці кінців, це досить інтуїтивно. Ніхто не збирається почати на початок телефонної книги і фліп 1000 сторінок, щоб знайти Майка Сміта. Майже всі в цій кімнаті збирається зробити приблизно такий алгоритм зберегти для розривання. І ось чому ми робимо це? Що ж, розглянемо ефективність. Розглянемо, наскільки краще це Алгоритм був розбиваючи його вниз на складові частини. Отже, що ж я в перший раз робити? Я взяв телефонну книгу. І вчений, і програміст, в більш загальному плані, виявляється, збирається щоб почати відлік все в 0. Чому? Ну, це трохи дивно що ми, люди, розраховувати, як правило, починаючи з першого. Тому що найменше число ми можемо ясно уявити на основі навіть на нашій старій початкової школи з математики? Ну, це було 0, то чи це в десяткового або двійковій формі. І так ви будете бачити в світі обчислювальної техніки і програмування, Зокрема, ми починаємо вважаючи все від 0. Так що я взяв книгу крок телефону 0. Я збираюся відкрити до Середина телефонної книги. І це дійсно вираз того, що я зробив. А потім другий крок був подивитися на імена. Крок третій трохи відрізняється концептуально. Я задавав собі питання. Якщо Сміт серед імен, Я збираюся прийняти рішення. Якщо він серед імен, то я буду називати Майк. І я збираюся прийняти рішення заснований на тому, що частина інформації. Проте, якщо немає, якщо Сміт раніше в цій книзі зліва, Я збираюся відкрити до середини лівій половині книги. А потім ось кмітливості, Я збираюся повернутися до кроку два. Я збираюся роду стояти на власних плечах і просто повторити минулу роботу я зробив. Але робота у мене залишилося це менше, і менше, і менше. Але вона як і раніше буде працювати. Але якщо Майк, замість того, пізніше в книзі справа, Я збираюся відкрити до середини правій частині книги, потім поверніться до кроку два. Але є насправді четвертий сценарій. Майк ні тут, або тут, або тут, ілі-- СТУДЕНТ: Не існує. DAVID Маланки: Не існує. І справді, якщо ми не очікуємо це четвертий і останній сценарій наша програма може бути глючить або недоліки в деякому роді. В іншому випадку, кинути в тому випадку, ми не знайшли Майка взагалі. І справді, якщо ви коли-небудь помітив, ваш комп'ютер висить, або все Раптово слова або якийсь інший програма просто несподівано завершує роботу, а іноді ти помилка повідомлення буквально що. Ця програма несподівано завершує роботу. Це може бути по ряду причин. Але іноді це щось так просто, як це. людина програміст який писав, що програмне забезпечення не розумів, що, ах, є вперед, що може статися насправді. І якщо ви не пишете код захопити цей четвертий сценарій, це дійсно несподіване іноді що комп'ютер може реально зробити. Тепер давайте апелювати Деякі з цих речей. Так жовтим кольором тут, я висунули на перший план терміни що відтепер ми просто викликатиме функції. Функції в світі програмування точно так само як дії, заяви дій. Так що забрати, відкритий для, подивіться на, телефонуйте, відкрито, відкрито, кинути палити. Це функції, процедурі, дію, будь-яку кількість синонімів буде працювати, як добре. Тепер те, що ці речі зараз в жовтий колір? Якщо інакше, якщо інакше, якщо інакше, це те, що ми будемо називати умови в програмуванні, або галузі, рішення вказує, якщо ви будете. Але як ви знаєте, яка вилка в дорозі, щоб прийняти, так би мовити? Нам потрібно виділити умови вправо там, які вони да, питань немає. Ці справжні помилкові питання. Сміт серед імен? Сміт раніше в книзі? Сміт пізніше в книзі? Це питання до який є так, чи ні, або що те ж саме вірно, або брехня, або що те ж саме, один або нуль відповідь. А між тим є тільки один останній шматок. Це тут є якийсь ефект? Будь або не програмувати перед тим, як би ви описати те, що крок сім і 10 роблять? Що ви сказали? СТУДЕНТ: Рекурсивний крок. DAVID Маланки: Рекурсивний крок. Так, по суті. Це технічно ітеративний тут, якщо ви знайомі. Але ми повернемося до цього. Але він робить щось ясно. Знову ж таки, це индуцируя цикл, цикл, правильно. Ви в буквальному сенсі йти повернутися до якоїсь більш ранній стадії. І так насправді, це буде реалізувати якийсь цикл. Але ви не збираєтеся, щоб отримати застряг в цьому нескінченно, не так. Тому що, якщо ви постійно перевіряти це Майк тут, або вліво, чи ні, в кінці кінців, він не збирається бути там. І ви можете просто кинути палити взагалі згідно з цією останньому рядку. Так ось саме для словника. І це було те, що ми б як правило, викликати код псевдокоду. Це не є фактичним мовою. Це просто дуже лаконічний англійська, але він спілкується точку. Там немає офіційної структури тут. Ви просто використовувати його кілька слова, але, як ясні слова як ви можете повідомити вашу ідею. Тепер, як добре, що алгоритм і наскільки краще це? Ну, ми не повинні потрапити в Специфіка чисел або що-небудь так. Але ми можемо подивитися на Форма цього розчину. Так що, якщо ми просто зробити деякі ху сюжет тут, на горизонтальній осі тут. Давайте просто називати розмір проблеми. І вчений буде як правило, використовують як платник ЄП змінної. Таким чином, п сторінок, або російські люди в кімнаті, або все, що ви намагаєтеся підрахувати. А потім по вертикальній осі на вліво, що було б час, щоб вирішити. Так скільки секунд робить це візьміть мене, щоб знайти Майка Сміта? Або скільки кроків це займе? Скільки поворотів сторінки це займе? Так ось, скільки це коштує мене вчасно, щоб вирішити проблему. І ми могли б зробити перший Алгоритми нахилу, якщо ви будете, як тільки цієї прямої в червоному. І я буду називати його п. Чому п? Чому саме цей один одному з відносин? Ну, якщо Verizon або незалежно від телефонної компанії додає ще одну сторінку в телефонна книга в наступному році, що може підштовхнути Майк один більше крок ближче до кінця, в залежності від того, де ця сторінка. І тому ефект може просто буде додати ще одну секунду. Або ще одна сторінка повороту. Один до одного відношення. На противагу цьому, другий алгоритм. Наскільки швидше було те, що інтуїтивно? Де я пішов дві сторінки за один раз? Так. СТУДЕНТ: [нерозбірливо] DAVID Маланки: Так. Так що це буде в два рази швидше. І ми б намалювати, що тут в залежності від масштабу. Він як і раніше являє собою пряму лінію, але нижче, ніж червона лінія. Тому що для деякого числа сторінок, якщо потрібно ви це багато кроків з Перший алгоритм, він збирається прийняти вас половину як багато кроків з другої. І тому жовта лінія описуючи другий алгоритм тільки збирається бути нижче нього. Але що насправді є потужним думати про третьому, остаточному, і дивно найбільш інтуїтивний Алгоритм, який має таку форму. Технічно ми називаємо це логарифмічна крива. Вхід за основою 2 п в цьому випадку. Але це не має ніякого значення. Що важливо насправді принципово різна форма, що вона має. І ви можете розглянути питання, наскільки набагато коротше, ця лінія насправді в довгостроковій перспективі. Він постійно зростає. Він не згладжуються відмінно. Але вона стає все так набагато повільніше оскільки проблема стає все більше і більше. І ви можете думати про це way-- якщо Verizon не просто додати одну сторінку в наступному році, але двійники кількість сторінок в телефонній книзі, перший алгоритм може прийняти в два рази більше кроків. Якщо це 1000 сторінок це рік, 2000. сторінок в наступному році, Майк може бути, що набагато далі. Так щоб 1000 додаткових кроків, щоб знайти його. другий алгоритм може бути тільки 500 більше Кроки, щоб знайти його, тому що знову ж таки, Я лечу через нього два одночасно. Але як щодо третього алгоритму? Якщо Verizon подвоює Розмір телефонної книги в наступному році від 1000 до 2000 сторінок, скільки ще кроків мій третій алгоритм збирається взяти? Так, це всього лише один. І це потужна ідея. Ви можете взяти 1000 сторінок укус з цієї проблеми відразу. А тепер, якщо ви вважаєте, дурний сценарій, але це частково говорить про Потужність такого роду intuition-- якщо телефонна книга була, як, чотири мільярди сторінки, відчуває себе, як насправді велика проблема. І справді, це може візьміть мене чотири мільярди сторінки Виявляється, щоб знайти Майка Сміта в тому, що у випадку з першим алгоритмом. Але скільки б це кроки прийняти в третьому алгоритмі щоб знайти Майка серед чотирьох мільярд шматочків паперу? Таким чином, чотири мільярди ви розірвали навпіл. Ви отримуєте два мільярди. Тоді один мільярд, то 500 мільйонів, 250 мільйонів, 125 million-- але відчуває, як це збирається зайняти деякий час. Я, можливо, буде потрібно 32 пальців підрахувати, що високі. Але це дійсно так всього лише 32 сторінок сліз. Ви можете перейти від чотирьох млрд на одну сторінку розділяє вихідне число сторінок в половині 32 рази поки не залишиться тільки що одна сторінка. Тепер, звичайно, я обманюю тут. Це не означає, що ми просто бути свого роду нерозумно повністю з першими двома алгоритми. Я обманював в якомусь сенсі, або насправді я використовуючи припущення. Що було правдою про телефонній книзі в своєму первісному вигляді, що дозволило мені навіть використовувати цей третій алгоритм? Так? АУДИТОРІЯ: Це був алфавітний. DAVID Маланки: Це був алфавітний, вірно? Якби це було тільки у випадковому порядок, це марна трата часу, вся ця розмова. Я повинен дивитися на кожен сторінка, якщо це у випадковому порядку щоб знайти Майка Сміта, перш ніж я можна зробити висновок, що він там чи ні. І тому кут ми різали то, що у мене є Передбачається, що хтось ще цей випадок зробив роботу для мене. І так, що в кінцевому рахунку запрошує питання, ну, трохи зачекайте. Як сортувати 1000 сторінки імен та номерів? Це насправді інше Проблема, щось ми повернемося в майбутньому. Але коли ви думаєте про веб-сайтах як Facebook і Google для Gmail і такі речі, як Google, власні пошукові індекси, коли у вас є мільйони чи мільярди фрагменти даних, які зберігаються в ці дні, searching-- і не кажучи вже про сортування цих problems-- в кінцевому рахунку, завдання сама по собі. І справді, це, тобто просто одна з тих проблем, що ми будемо дивитися. Отже, тепер давайте момент і подивіться на CS50 сама по собі і дати вам почуття що в магазині в цьому семестрі. Справді, якщо ви ще не зробили цього, дійсно, подивіться на цей URL. І, як Патрік натякав щоб, в цьому році ми що робить значні інвестиції все чим більше в підтримку Курсу структура з точки зору ТСП і центри сертифікації, робочі години, Розділи доступності та цифрові матеріали в Інтернеті, а також. Дійсно, з точки зору Курсу лекції, ми тут сьогодні. І очікування цього рік офіційно курсу будуть присутні на сьогодні, курс-х остання лекція, і курс приблизно в середині семестру з кожної лекції між ними доступні в цілому в другій половині дня в п'ятницю онлайн, як для студентів Єльського університету і студентів Гарварда в цьому році. Дійсно, один з фундаментальні зміни в що ми в прийнятті Гарвардська парадигма дуже як ми робили тут в останній раз рік і в даний час в цьому році, так що подібним чином, ми як і раніше знімати більшість лекцій Курс в Кембриджі але зробити їх доступними раніше ніж у нас в минулому так що ті з вас, якщо you-- хотів би, наприклад, отримати фору за матеріалами на перший уїк-енд, а ніж другий уїк-енд, ви будете мати Доступ до цих видів матеріалів, пошук, вбудований, hyperlinkable на відповідні ресурси все раніше. З точки зору тим, щоб дати вам почуття trajectory-- Курсу і деякі з цього може бути жаргоні Зараз, але не надовго, будьте впевнені. Ми почнемо сьогодні, в кінцевому рахунку, з дивлячись на одному програмування мова називається на порожньому місці. Ми будемо надалі перехід на наступному тижні щось називається C а потім, дивлячись на іншу будівлю блоки для вирішення проблем, речі, звані масиви і алгоритми, як ми використовуємо пам'ять в нашу користь і недолік, і такі речі, як структури даних, а потім у напрямку до хвостової частини клас, дивлячись на машинного навчання і, дивлячись на інший мова називається Python, як веб працює, як Інтернет більш як правило, працює, протоколи, як HTTP, Мови для баз даних, таких як SQL, JavaScript для Інтернету, і в кінцевому рахунку, пов'язуючи всі ті разом. І так насправді, на Кінець дня, вам не вчитиметься в цьому класі нуля або C або Python або SQL або JavaScript. Ви замість того, щоб в більш загальному дізнатися інформатика і основи їх, і ви будете навчитися програмувати в будь-якій кількості ці мови шляхом. Так що насправді, одна з цілей курсу в кінці щоб зняти всі Курсу навчальні диски з цим останні тижні так що після цього, ви можете повернутися до вашого власного fields-- будь то або НЕ комп'ютерні науки або машинобудування, в природному науки, мистецтво, гуманітарні науки, або beyond-- і привести деякі з цього Ідея звичайно в і в цьому полі ідеї та практичні навички в свій власний домен для того, щоб вирішити проблеми в ньому. Що ми будемо робити тут, в той час в більшості четвергах після сьогоднішнього дня це з керівниками ході провідних що ми будемо називати проходжень проблемних наборів Курсу. Так що кожного тижня, коли ми поставили проблему, ми будемо ходити через у місці як це виклики Курсу, пропонуючи вам кілька порад і прийоми і методи проектування. Але якщо ви не в змозі щоб ті особисто, розуміють ті ж ресурси будуть вбудовані одним з Курсу асистенти в завданню самих множин, а також. Проблема встановлює в цьому році, на відміну від в минулому році, на основі зворотного зв'язку, як і раніше буде випущений по п'ятницях. Але замість того, щоб через подальшу п'ятницю, тим самим даючи вам всього сім днів, буде ефективно через 10 днів по тому. І справді, це буде означати, що вони будуть перекриватися на вихідні. Але ми сподіваємося, що в цьому році особливо це буде дозволяють студентам краще пристосувати Припливи і відливи в їх розкладі, будь то вчені або extracurriculars або легкої атлетики або середньостроковий сезон. Ви можете або з передньої завантаженням або заднім завантаженням ваша тиждень упором на CS50 на основі фактичної навантаження, звичайно, вашої власної тижня. Проблема самі набори охоплюватиме цілий ряд мов, хоча ми сфокусуємось переважно на ранніх стадіях на C перш ніж зосередитися в подальшому на більш рівень, більше веб-орієнтованих мов. А потім пару часто задаються here-- ви повинні взяти клас як CS50 в якості першого року? Так що абсолютно. І справді, це не так обов'язково щось ви повинні відкласти до тих пір, поки ви вирізати Ваші зуби на інших типах класів. Але, скоріше, розглянути що для багатьох студентів, включно зі мною назад в той же день, це дуже незнайоме поле, особливо якщо ви ніколи не приймати CSA AP або щось подібне, що в середній школі. Але розумію, що на ранній стадії, будь то цей курс або якийсь інший вступний курс, Тепер це дійсно найкращий час, Я думаю, щоб знайти якийсь новий шлях або якийсь новий академічний інтерес, а також. А потім брати з іншими courses-- тому одним з ключових відмінностей тут в порівнянні з Гарварда, що тільки ми приймати чотири курси в семестр в Гарварді з якоїсь причини. І ви, хлопці, насправді тягнути від близько 36 курсів в цілому протягом ваших чотирьох років, що означає, як правило, чотири або п'ять класи. І я думаю, що це цілком справедливо сказати, і відмовляємося CS50, відповідно до проекту, є ймовірно, не тип класу що ви повинні, як правило, взяти з собою чотири інших курси в цілому п'ять тому що psets є дизайн досить інтенсивно. Насправді, я теж дізнався це ще в день. Я б не став описувати CS50 і інформатика, програмування а так само важко, як це це якраз забирає багато часу. Це не та річ, де після обіду, ви може повернутися до гуртожитку зал, сісти і почати зосередивши увагу на PSET мислення, все в порядку, Я збираюся вибуху на це сьогодні ввечері, а потім рухатися до мого наступного питання на наступний день. Іноді ви просто врізався в стіну. У вас є помилки в коді. Вам не обов'язково знати як вирішити ту чи іншу проблему. І одна з ключових особливостей програмування для себе і по сей день це ви тільки частково повинні прийняти крок назад іноді, спати на ньому або думати про нього протягом від бігу підтюпцем або будь-якої іншої діяльності, а потім повернутися до нього свіжим. І вам просто потрібно ці вікна часу. І справді, ось чому ми подовжили кількість часу доступні для проблемних наборів в цьому році, а також, згідно з цим URL Я терплю раніше, щоб Що нового в цьому семестрі, обрізається проблема встановлює таким чином, щоб Чи не вони принципово не менш суворий, а не винесення не менше, але є набагато менше, вступна, набагато менше біганиною, що вам потрібно робити в передній частині кожного безлічі проблем, як ви побачите, перш ніж ви можете насправді занурюватися в м'ясо його. Так розумію, що ті і інші зміни на горизонті щоб краще пристосувати студентів, але в кінцевому рахунку, щоб переконатися, що є винос насправді якомога вище. Таким чином, в той час як більше роботи, ніж це може бути в типовому класі, ми сподіваємося, що віддача для ви і для вас їжі додому а також навички та ідеї за допомогою якого ви виходите тим більш переконливим в результаті. І, щоб ви і це there-- є одним з ключових винос, як згадано Патрік earlier-- є Структура підтримка курсу. Так що не тільки CS50 є один з найбільші штаби курсу в університетському містечку. Вона також має один з Найбільш магістрант. Дійсно, в минулому році CS50 був першим класом мати вищу викладацький склад. І свідченням цього успіху тепер робити багато інших курси в рамках Єльського CS Тобто, що, як добре. А для студентів, зокрема, будуть ці ТКС і курсу помічники буде підтримувати в цілому мережу допоміжних ресурсів, серед них розділів або декламації, щотижневі можливості мати більш інтимні обговорення і огляди матеріалів цільових для різних треків, для студентів менш комфортно, більш комфортно, або десь посередині. Вони будуть слідувати за наявності лекції по кілька днів щотижня по понеділках і вівторках. А потім офіс hours-- один на один можливості за допомогою курсу КАН і ТП буде по середах і четвергах і неділях в декількох раз, всі з яких будуть розміщені на веб-сайті Курсу, навіть більше, ніж в минулому році, а також. Але те, що ключ до CS50, якщо не по загальному визнанню, трохи незвично, це культура звичайно, що ми намагалися культивувати, як в Кембриджі протягом багатьох років а тепер зовсім недавно в Нью-Хейвені. І справді, придумуючи цей Суббота, якщо ви ще не чули, це CS50 головоломка День, який має нічого не робити з комп'ютерної науки але повністю призначена для відправки повідомлення, що комп'ютерна наука про рішення проблем. І справді, якщо ви хочете, щоб партнер з одним або двома або трьома друзями і сформувати команду для CS50 Головоломка день, подивіться на рекламу, які знаходяться на виході. А ще через три години піци і головоломки і призи чекають. І дійсно, для перший раз в цьому році, вона не буде проводитися спільно з Гарвард. Він буде тут незалежно один від одного в Єльському університеті. Так що стежте за ті, якщо у вас немає. Більшість щоп'ятниці в семестр ми намагаємося зробити великий клас відчувати себе маленьким і принести близько 50 студентів на обід з співробітниками Курсу, з випускниками, друзями від промисловості говорити про те, що життя, як після того, як клас як CS50 і протягом літа і після закінчення школи. Так що стежте за Запрошення до цього. Вперше коли-небудь в цьому році ми провести перший в історії CS50 кодування Конкурс, додатковий вибір в можливості в середині семестру, після того, як всі ми мали приблизно через шість або сім тижнів програмування в C під їх поясами, щоб конкурувати, якби ви так виберіте-- знову на teams-- намагається вирішити стільки проблем як ви можете в програмуванні з ваші друзі проти інших. І до хвоста семестру будуть чартери деякі автобуси, насправді витратити деякий час в Кембриджі, якщо ви хочете хотіли б приєднатися до нас, для так звані CS50 Hackathon. О 7 годині вечора ми почнемо. Близько 9 години вечора, ми будемо мати піцу. Близько 1:00 ранку, ми будемо мати буріто. І хтось ще не спить на їзди на автобусі додому близько 5:00 ранку, ми заїжджати для млинців на IHOP на шляху home-- 12-годинний можливість занурити себе з однокласниками і співробітниками в остаточному проекті Курсу, яка є можливість виходять далеко за рамки Звичайно безлічі проблем в і розробка і здійснення найбільш нічого для вас інтерес, що в кінцевому підсумку буде ознаками тут в Громад. Перший в історії CS50 ярмарок була останній рік, виставка з вичерпаним семестру або свято, що кожен в класі було досягнуто, особливо ті, знову-таки, хто пішов з ні до чого, від нуля до 60, не мають ніякого попереднього фону і експонування, в кінцевому рахунку, то для всієї університетського містечка і, якщо в Інтернеті, щоб світ побачив, як добре. Тепер, ці ось лише деякі з TAs і центри сертифікації, що робить можливим CS50. Дозвольте мені запросити будь-якого з цих співробітників хто тут, щоб вийти на сцену, а також керівники Курсу, щоб запропонувати деякі слова натхнення, а також. ANDI: Привіт, хлопці. Чи можете ви, хлопці, чуєте мене? Спасибі, що приєдналися до нас з цього питання симпатичний, дощовий четвер у другій половині дня. Мене звуть Анді. Я молодший в Берклі. А разом з Стеліос і влітку, ми будемо ваше вчення три голови помічники для цього майбутнього року. Так що, я думаю, шоу hands-- скільки з вас не мають ні найменшого наміру бути CS майор, ні насправді глибоко дайвінг в інформатиці як однієї з основних тут? Дивовижний. Це геніально. Так що я насправді глобальні справи і когнітивна наука мажор. Я буквально прийшов Yale з наміром що ніколи не маючи дивитися на число коли-небудь знову в моєму житті. Коли я приїхав в Єльському університеті, це було то, що ніколи не був на моєму радарі. Я хотів би дізнатися про поезію. Я хотів би дізнатися про міжнародні відносини. Я хотів би дізнатися про акварельні малюнки. Так, ми пропонуємо клас на акварельні малюнки. Але я ніколи не був зацікавлений у чому-небудь STEM пов'язані між собою. Але тоді я старше отримав, тим більше я зрозумів, що кожне поле дійсно в деяких сенс використовує комп'ютерні науки, або якщо не комп'ютерні науки, обчислення. Насправді, для моєї глобальної Справи дипломний проект, ми використовуємо аналітику даних аналізувати теракти для Боко Харам в Нігерії. І так як ви можете бачити, незалежно що головна ви в кінцевому підсумку переслідують або те, що ваші інтереси тут в Єльському університеті є, програмування і основи з будь-якої навички супер корисно. І CS50 дійсно добре обладнаний для вид кредитувати багато своїх ресурсів Вам, незалежно від того, наскільки комфортно ви або як ви зацікавлені в реалізації класу. Літо збирається трохи поговорити трохи про те, що ви, хлопці, збирається дізнатися про цього року. ЛІТО: Привіт всім. Я Літо Ву. Я молодший в Морзе. І я насправді почав як CS50 студент сам. Так що три роки тому, я був на рік розрив. Я ніколи не брав CS клас у середній школі, але я думав, що в свій вільний час, було б здорово, щоб дізнатися, як код. Так що я зробив швидкий пошук Google, шукав те, що було доступно в Інтернеті, і побачив це відео з ляльками і ді-джеї і прохолодний веб-сайтів. Я був, як я хочу дізнатися, як зробити це. Так що я взяв курс, і я просто закохалася в нього. Але я пам'ятаю, так що ревнувати діти, які могли б бути присутніми на Hackathon, бути присутнім головоломка день, відвідувати офіс годин, отримати допомогу від ТП особисто. І тому я ніколи не думав, що я хотів би отримати шанс щоб бути тут залучені в курс, який вперше отримав мене цікавить в комп'ютері наука і є причиною того, чому Я комп'ютерні науки головним сьогодні. Тому я попереджаю вас, цей клас збирається розтягнути вас. Це буде вам виклик. Але це також буде навчити вас, як робити речі що ви ніколи не представляли ви могли б. Стеліос: Привіт всім. Мене звуть Стеліос. Я молодший в Branford Коледж і головний CS. Я теж з Афін, Греція. Я дійсно з нетерпінням чекаю для задоволення всіх вас, чаті з вами в розділі, в офіс годин, в п'ятницю обіди. Я дуже радий, тому що ми вклали стільки зусиль в створення унікальної підтримки структура для всіх вас щоб зробити ваш досвід роботи з курс найкращого. І я сподіваюся, що хоча більшість Ви, ймовірно, не прийнято CS Звичайно, перш ніж, я сподіваюся, що це CS50 для вас це те, що викликає інтерес далі проводити комп'ютер наука в майбутньому, як це було зроблено з таким багато людей в минулому. Так що спасибі вам за те, тут, радий бачити вас. Джейсон Хіршхорна. ЯСОН Hirschhorn: Привіт всім. Мене звуть Джейсон Хіршхорна. Я живу в силлиманит. І я пішов до Гарварду як старшокурсник і спеціалізувався в області соціальних досліджень і minored в інформатиці. І одна з моїх головних ролей тут щоб підтримати цей чудовий персонал так як вони підтримують вас всіх. Насправді, це далеко не все з них. Є 55 магістрантів і випускників тут, щоб підтримати вас всіх. І я вважаю, один з кращих частини курсу для вас все стає працювати з вони, знайомлячись з ними, отримувати, щоб побачити їх, як в CS50 і за її межами CS50 в цьому семестрі і для багатьох семестрів, щоб прибути. Так що, сподіваюся, ви будете брати Звичайно ж, тому що ми сподіваємося, ви отримати, щоб взаємодіяти з чудовий персонал у нас на сцені. СПІКЕР: Ну, дозвольте мені закінчити кажучи це буде весело. DAVID Маланки: Ну, завдяки всієї нашої команди. Дозвольте мені тьмяне світло і дозволяють ще деякі з нашої команди, як з Кембриджа і Нью-Хейвені, щоб сказати привіт, як ці хлопці спилювати. І після цього ми будемо переходити до перший з наших зобов'язань по програмуванню з цією мовою називається Скретч. Так що спасибі команді. Давайте тьмяне світло і почути від деяких інших. [Оплески] [Відеовідтворення] -The Місія CS50, щоб ви більш комфортно з абсолютно новим способом мислення, цього обчислювального мислення. -Він Зробив комп'ютерні науки Цікаво, що щось я не дуже розумію, було можливо, поки я не взяв клас. -Я Був схожий, стій. Я дійсно переводячи свої думки в комп'ютер прямо зараз. -навіть Якщо у вас немає ніякого фону в галузі інформатики або будь-який досвід, це насправді клас для вас. -Так Я безумовно хочу мої студенти просто захопитися інформатики. Не тільки програмування, але думати, як комп'ютерний вчений насправді, що я хочу спробувати навчити мого новачка. -CS50 Важко і нагородження. -An Досвід. -Extravaganza. -Він Привезе нас до наступного рівня. [МУЗИКА] -The ТФ є, як мені здається, Lifeblood курсу. -Я Радий мати мої студенти Я допомагаю є що аха момент, щоб зрозуміти, що вони насправді намагаються зробити, щоб з'ясувати, як зробити PSET. -CS50 Безумовно жорсткий курс. Але на відміну від будь-якого іншого Звичайно, насправді в Єльському університеті, він має такий великий, підтримку спільноти. -Ти Зовсім потрібно знати що-небудь про кодування, щоб бути в змозі взяти курс. -Це Дивно спостерігати, як далеко люди приходять в один семестр. -Ти Не одна сидить в ваша кімната навчитися коду, але це було більше, ніж просто клас. Це був досвід. -Кращий Спосіб дізнатися концепції і обробляти їх є вчити інших. -Яка Телефон розкол? [МУЗИКА] -А Це CS50. [МУЗИКА] -Це CS50. -Got Проблему? Tear його навпіл. [МУЗИКА] Викинути. DAVID Маланки: Добре. Так що давайте tackle-- в трохи трохи, між іншим, це була ця традиція якоїсь причини протягом 10 років щоб служити торт на початку і кінця CS50. Так що чекає вас в кінці Сьогодні, на додаток до навчальних планів, буде деякий пиріг, а також, і персонал звичайно, щоб сказати привіт. Перехід Але тепер, давайте до перший з наших мов, де ми витратимо насправді тільки тиждень і один проблема встановити на цьому домені, до подряпин. І ви знайдете, якщо ви маєте запрограмований раніше, багато з ідей і можливості вам знайомі. Але ви виявите, що це весело по шляху щоб точно з'ясувати, як перевести деякі з ідей, які ви вже знаєте в цій конкретній середовищі щоб дійсно справити враження на сім'ю і друзі з вашою роботою, яка може виходити в інтернет, якщо ви цього хочете, після цього. І якщо у вас є немає попередній досвід і серед більшості студенти менш зручні, розуміють, що багато хто з ідей, які ми просто досліджували з reality-- речей як телефонні книги і відвідуваності і так forth-- переклад досить красиво до комп'ютера, але якщо ви не використовуєте, Спочатку, мова, як це. Так що це програма, написана на мові, званому С. І ми витратимо зовсім небагато часу в C, в кінцевому рахунку. Але шанси, це буде виглядати трохи загадковим вам на перший погляд. Насправді, є багато дивно синтаксис, круглі дужки, кутові дужки, фігурні дужки, лапки і крапкою з комою. І справді, якщо ви поринете в Програмування в перший раз дивлячись і намагаються створити матеріал як це, якщо чесно, ти так загруз так часто в просто нерозумно дрібницях, що не має нічого інтелектуально цікаво про це. Але уявіть собі, якщо ви могли б створити це ж program--, який, як можна було б припустити, свого роду, ймовірно, друкує "Привіт, світ", так чи інакше. Ми можемо переганяти ту ж саму ідею в тільки дві частини головоломки, якщо ви будете. Дійсно, Царапина цікаво тому що це це графічна мова. Ви можете перетягнути ці шматочки головоломки, які тільки інтерлок якщо він має логічний зміст зробити це. І тому в порожньому місці, ми скоро побачимо, це як ви б реалізувати той же Програма, за допомогою всього двох частин головоломки що в значній мірі робити те, що вони говорять. Але ми побачимо в мить, що деякі будівельних блоків, які ми яких йшлося раніше і кілька більш все, що в кінцевому рахунку, збираються складати деякі з наших ранніх програм. Ми будемо мати речі як functions-- просто дії, які роблять щось, як сказати привіт, світ. Ми будемо мати петлі, речі, які викликають цикли знову і знову, так само, як ми зробив хвилину назад з пошуком Майк Сміт. Змінні, як в алгебрі, якщо ви є х або у, які можуть зберегти номер. Ну, в програмі, ви можете насправді зберігати більше, ніж просто цифри. Ви можете зберігати слова і пропозиції і графіки і інші речі до сих пір. Логічні вирази, просто questions-- так чи ні, істинним або хибним. Умови, при ухваленні рішення на основі цих так / ні відповідей. А потім більш вигадливі речі, як масив і теми і події і будь-яку кількість інших особливості, але всі з яких карта дуже красиво дуже дружні блоки, як це. Це буде функцією, фіолетовий шматок головоломки, які як раз говорить то, що його ім'я is-- в даному випадку, скажімо. А потім часто, є білий ящик, який вам можна ввести в систему або перетягнути якусь цінність в. І ось що в цілому називається аргументом або параметр. Це спосіб зміни її Поведінка за замовчуванням головоломки частина або функцію так, щоб вона щось на замовлення для вас, як кажуть, привіт, світ або привіт, Енді або привіт, Джейсон або якийсь інший пропозиція замість цього. Якщо ви хочете сказати, що lot-- буквально forever-- ви можете взяти інший паззл називається назавжди і просто затиснутий два разом, як це. І це цикл, як картина передбачає, значить просто сказати привіт, світ назавжди, знову і знову і знову. Або, якщо ви тільки хочете зробити це кінцеве число раз, як і в 50 разів, там буде ще одна головоломка частина для that-- повторити 50 разів. У той же час, якщо ви хочете щоб мати змінну цією мовою ми збирається грати, Ви можете використовувати помаранчевий блок, як це. І ця змінна я довільно називається I для цілого числа. І я просто встановити його рівним 0. І тому, можливо, я, в цьому case-- це переменная-- представляє чиюсь рахунок в грі. Ви починаєте з нуля, і кожен раз, коли ви зробити мета або щось подібне, Ви отримуєте один додатковий пункт. Ви можете задати питання в порожньому місці. Якщо ми перетягнути головоломки штук в хвилину, як це, Ви можете задавати питання, як, добре, я менше, ніж 50? Може бути, вам потрібно 50 очок, щоб виграти. І таким чином це було б питання, яке ви хочете запитати. Або, в більш загальному плані, ви Можна сказати, це х менше у, де є дві змінні залучені? Тепер це одне багато більше, на перший погляд, але насправді не все, що складніше. Це просто поєднання умов і змінних і логічних виразів, щоб запитати три questions-- становить х менше у? Якщо це так, скажімо так. Скажімо, х менше у. В іншому випадку, якщо х більше Y, інакше х повинна дорівнювати у. І в той час як з Майк Сміт, там були чотири сценарії, тут в світі чисел, х є або менше, більше або дорівнює. Все у нас є три розвилки. А тут ще вправнішим шматочки головоломки, як це для таких речей, як масиви, де ми знаходимося матиме можливість зберігати інформацію. Ми збираємося, щоб побачити блоки, які дозволяють нам реалізувати кілька потоків, інша особливість, яку ми будемо використовувати, і то і щось називають подіями. Але перш ніж ми перейдемо до того, що пункт і створити навіть, в кінцевому рахунку, наш власний користувальницький шматочки головоломки, давайте насправді відкрити саму програму. Так що це на порожньому місці. Вона доступна на scratch.mit.edu. І ви завжди можете грати Зараз чи пізніше, а також. Це відбувається з автономної версією. Для людей, які не роблять обов'язково мають великий Інтернет, Ви можете завантажити те саме програмне забезпечення, а також. І там дійсно тільки три компоненти цього програмного забезпечення. У верхньому лівому кутку екран є свого роду етап що Царапина, який за замовчуванням виглядає як кіт, живе всередині. Він може рухатися вгору, вниз, вліво і вправо і робити будь-яку кількість інших речей, і може виглядати будь-яку кількість способів на основі на костюми, які ви призначаєте йому. Але це те, що ми називаємо спрайт, свого роду символ. І ви можете мати кілька персонажі, як ми скоро побачимо. В середині тепер всі ці головоломки штук і ці категорії або піддони його. Так прямо зараз, я натиснув на Motion. І ось я бачу, все з руху, пов'язані з головоломки або блоки, тому функції, які мають робити з виходом вгору, вниз, вліво або вправо або деякі інші операції. Але якщо я натиснув на Looks, ви міг бачити речі, як блок скажімо що ми бачили тільки хвилину назад. І якщо я натискаю на контролі, ви побачите такі речі, як повторення і назавжди і якщо блок, ми бачили хвилину назад. І так ви знайдете що ми просто подряпати поверхню деяких з шматочки головоломки разом, але це все досить інтуїтивно і точка і натисніть. Справді, Царапина була розроблена для молодших школярів щоб допомогти дати їм вихід для творчого мислення. І все ж дивно, це чудовий сходинкою точно з ідеями, які ми збираємося вивчити в C і Python і JavaScript, так само. З правого боку, в кінці кінців, тут це, так званий область сценаріїв. І це тільки з чистого аркуша яку ви почнете писати програму. І я буду саме це. Тепер, я знаю, де речі тому що я зробив це кілька разів. Але я знаю, що під категорія Події, Тобто цей блок here-- коли зелений прапор клацнув. І зверніть увагу, якщо я зменшення і назад в тут на сцені, Скретч живе в межах цього маленький прямокутний світ, на вершині якої є зелений прапор і червоний знак зупинки. Так що йди і зупинити, відповідно. І ось, що я хочу зробити коли цей зелений прапор натиснута? Що ж, дозвольте мені перейти до того, що здається категорію. І дозвольте мені йти вперед і перетягнути це. І зауважте, як тільки він отримує близько, вони свого роду магнітними властивостями. Так що, якщо я тепер відпустити, вона зафіксувалася разом красиво і чисто. І я збираюся йти вперед і щось на зразок Привіт, світ протягом двох секунд. Дозвольте мені зменшити масштаб і натисніть зараз зелений прапор, і сказати, привіт, світ. Добре. Так що це все прекрасно і добре. Не всі, що цікаво. Давайте зробимо це трохи симпатичніше. І я знаю, що в Просування, Царапина відбувається прийти з деякими милі речі, як це. Так грати звук мяу поки не зроблено. Так давайте зробимо це. [Мяу] Оу, це чудово. І якщо я натисну його again-- [Мяу] І знову. [Мяу] Але я продовжую необхідності реанімувати нуля. Але я можу зробити краще, ніж це. Чому я не можу просто перетягнути три з них. І тепер це в три рази чарівні. [Нявкання] Добре, насправді, це трохи моторошним. Так що нам потрібно щось між ними є. Якщо я йду до контролю, це виглядає є насправді чекати блок. І тому зверніть увагу, якщо я наведіть курсор миші на there-- і дозвольте мені зробити це трохи більше. Якщо я парити, це буде щоб зафіксуватися. Так що чекайте одну секунду, зачекайте одну секунду. Давайте знову вдарив зелений прапор. [Нявкання] Добре, трохи більш природним, але не дуже ефективно. Так що це правильно, якщо моя програми Мета була мяу три рази. Але це не дуже добре розроблений. Я як би скоротити деякі кути. Я трохи лінивий. Що відчуває like-- що мені здається, щоб було зроблено погано, ви б сказати? Так? Так, в середині. АУДИТОРІЯ: Використовується більш пам'яті, ніж вам потрібно тому що ви використовуєте так багато різних лінії. DAVID Маланки: Так, так що більше ліній. І це не обов'язково буде пам'ять, хоча це можна було б розглядати як таким чином. Але це definitely-- є надмірність. І я в буквальному сенсі вид потягнув і скинули одні і ті ж речі. І якщо ви начебто extrapolate-- якщо це не очевидно here-- добре, як би Я нявкати 30 раз? Я хотів би перетягнути, як, більше 30 пар головоломки. І, звичайно ж, є кращий спосіб. І ми вже бачили кращий шлях. Що б інтуїтивно бути краще? Так, просто використовувати цикл. Ні копіювання і вставки. І дійсно, в будь-який час це семестр, якщо ви починаєте знайти себе перетягуванням, або дійсно функції копіювання і вставки, небезпечна звичка, тому що це просто не дуже ремонтопрігодни. Наприклад, якщо я хочу змінити звук до чогось ще, Я повинен змінити це зараз в трьох місця замість одного. Тому що насправді, якщо я розірвати цей away-- я просто хочу, щоб розчепити це так. Дозвольте мені захопити повторний блок, і потім натисніть три, три типи, кинути деякі з них геть просто відпустити. А потім помітили не виглядає, як він підходить, але магнітним способом, це відбувається не тільки оснащення на місці але рости, щоб відповідати формі. Так що це добре. А тепер, якщо я натискаю грати. [Нявкання] Дуже добре. Добре. А тепер це дуже легко змінити, теж, тому що я можу просто змінити один номер в одному місці. Але це теж не все, що цікаво. Давайте насправді є Подряпини не нявкають, але рухатися. Дозвольте мені перейти до Motion і рухатися 10 кроків всередині of-- вигуками, дозвольте мені це виправити. Дайте мені його рухатися 10 steps-- насправді, давайте не будемо робити повторювати. Дозвольте мені захопити блок управління, і виконайте наступні дії назавжди. Назавжди, рухатися 10 кроків. І натисніть кнопку Play. ДОБРЕ. Так що, на щастя, він зупиняється. В іншому випадку, діти отримали б дуже засмучений коли вони начебто втрачають свою кішку. Але, принаймні, я можу перетягнути його назад в екран. Але це не все, що великий з гри або анімації. Було б непогано, якщо можливо він відскочив від краю. Так що ж нам робити? Яка конструкція ми повинні мати Подряпина вирішите відмов, як ви думаєте, навіть якщо ви ніколи не бачив Подряпину раніше? Так, в спині. ГЛЯДАЧІ: Вам потрібен якщо блок чи якщо щось. DAVID Маланки: Так, так що деякі вид, якщо блок чи якщо щось. Так що насправді, у нас є один з них тут. Так if-- так що дозвольте мені отримати позбавитися від руху. Дозвольте мені збільшити, так це більше. Так як про це. Назавжди, якщо Sensing-- ми не бачили це раніше. Мені потрібно логічне вираз. І виходить, якщо ви торкаєтеся що? Якщо дотик до краю, Що я хочу зробити? Ну, якщо я повернуся до руху, Виявляється, про, я можу розвернутися. Дозвольте мені перетягнути це тут. Чому б мені не йти вперед і розвернутися на 180 градусів? А тепер, дозвольте мені просто рухатися в кінці. Я міг би поставити на рух початок або кінець. Але за логікою речей, кожен раз, коли я рухаюся, я хочу перевірити, я доторкнувшись до краю? Чи можу я доторкнувшись до краю? Чи можу я доторкнувшись до краю? Так що логічно я обертаюся якщо це так. Так що давайте вдарив гру. ДОБРЕ. Так що це трохи глючить, так би мовити. І це помилка просто помилка в комп'ютерній програмі. Але принаймні він працює. І справді, я можу піти сюди. І дозвольте мені зробити це не 10 кроків за час, але все це анімація. Це все мультфільм або навіть фільм. Дозвольте мені рухатися 20 кроків за один раз. Так що в 20 разів, як багато речей, які відбуваються один раз, або в два рази більше, і в цьому випадку. І він рухається швидше. Дозвольте мені змінити 30. 100. 1000. І це відбувається дуже швидко. І це is-- так, добре. Так що тепер ми просто балуватися з нею. Добре, таким чином глючить. Але ми можемо витягти його з шляху сюди. Але ми можемо зробити більше задоволення з цим теж. Як щодо this-- він з ніг на голову. Але виявляється Scratch-- і є насправді, У мене не відмовляємося, не академічний значення, що я збираюся робити. Але якщо я відкриваю мікрофон, давайте зупинити його і зробити щось на зразок цього. Ой! [Сміх] Це було чудово. Дякую. Тепер, це те, що мій голос виглядає, коли я кричу Уч. Я не думаю, що ми зловили ваш сміх. Все добре. Дозвольте мені зберегти це як "Ой". Давайте збережемо це як "Уч". А тепер ми повернемося до Scripts. А тепер я need-- давайте подивимося, звук. О, грати звук Ouch. Так що, якщо я доторкнувшись до краю, дайте мені Перша п'єса Уч, а потім розвернутися. А тепер давайте поставимо його в середині. [СКАЗАТИ "АЙ"] У два рази швидше. ДОБРЕ. Але це в буквальному сенсі робити те, що я говорю. Так що це насправді правильно, це просто трохи дратує швидко. Тому давайте додамо щось цікавіше це. Дозвольте мені насправді відкрити той, який я зробив заздалегідь, влучно назвав улюбленця Кот, який робить це. Ось сценарій тут. Що це збирається робити в англійських термінів? Що це розроблено, щоб зробити? Так, підемо some-- так? ГЛЯДАЧІ: Коли ви погладити кішку, вона нявкає. DAVID Маланки: Так, так що, коли ви погладити кішку, це буде нявкати. Отже, іншими словами, є тепер назавжди цикл досі, в поєднанні з умовою, комбінований з логічним виразом, в поєднанні з парою функцій, ефект з яких після того, як я граю ця програма, немає нічого відбувається, поки я не підведіть курсор все ближче і ближче і ближче і-- [Мяу] Тоді як гладити кішку. [Мяу] Тільки як тільки ви насправді перемістити курсор над ним. Тепер, я також прискорив не гладили кіт, який робить це замість цього. [Нявкання] Таким чином, він просто постійно нявкає. [Нявкання] Але якщо я отримую занадто close-- [Нявкання] [Рев] Так як же це працює? Тепер я просто є двосторонній розвилка. Якщо торкаючись покажчик миші, потім відтворювати звук лев. Інакше просто грати звук мяу, а потім чекати три секунди, так що це частково робить він дуже спокійно. Добре. Так що це об'єднання ще кілька ідей, до сих пір. Давайте подивимося на цей приклад Я збитими під назвою теми. А це в корені відрізняється тим, що вона використовує характерною рисою багатьох мова програмування під назвою нитки, здатність програми в буквальному сенсі зробити дві речі одночасно. Справді, в ці дні, якщо ви використовуєте Google Docs або Microsoft Word, і вашого документа постійно бути перевірки правопису навіть, як ви type-- або ви Натисніть Ctrl-P або Control-P і друкувати щось, це друк в той час як ви продовжуєте друкувати. Програми сьогодні дійсно може зробити кілька речі відразу, так само, як в порожньому місці тут. Так ось, у мене є два спрайту Тепер, птиця і кішка. І якщо я натискаю на кожному з ті символи по одному за раз, Я бачу прямо зараз пташиний скрипти в правому верхньому куті. Тепер я бачу кішки. Пташине, кішки. Таким чином, кожен з них має свій власний сценарій. Але зверніть увагу, який шматок головоломки вони обидва починаються з? Коли зелений прапор клацнув. І птах, коли зелений прапор клацнув. Так що, коли я натискаю зелений прапор, обидва цих сценаріїв або програм збираються працювати паралельно. І ви помітите, що птах просто бездумно відбиваючись від краю. Кішка явно була запрограмована стратегічну перевагу. і-- [Рев] Добре. Так кіт зловив птаха в цьому випадку. Чому так? Ну, зауважте спочатку ми просто птах просто бездумно йти в цьому вихідне місце розташування, а потім назавжди, якщо не торкаючись кота, просто рухатися. І якщо ви на краю, підстрибувати. І просто рухатися. І якщо ви на краю, підстрибувати. Але кішка, тим часом, має деяку додаткову логіку що говорить this-- по-перше, просто так що це не повністю упередженим проти птиці, зверніть увагу, що я використовували зелений шматок головоломки є що насправді вибирає випадкове число. Особливістю багатьох мов, щоб дати Ви випадкових або псевдовипадкових чисел. Так що в даному випадку кіт спочатку вибирає випадкове число між, наприклад, 90 градусів і 180 градусів, по суті, так що є трохи розходяться. А потім назавжди, якщо ви торкаєтеся птах, відтворювати звук лев. В іншому випадку, просто вказують на птицю. Направте до птаха. Точка до птаха, яка є паззл до себе в цьому випадку. Ну, ми можемо зробити ще одну річ тут. Дозвольте мені відкрити програму заходів тут. І тут ми знову маємо два спрайту, які виглядають як ці два ляльками тут. І що цікаво тут це. Помаранчевий хлопець має це набір головоломки тут. Назавжди зробити following-- якщо пробіл натиснута, потім сказати, Марко, і потім транслювати подію. А між тим, синій хлопець тут має this-- коли ви отримуєте подія, кажуть Polo. Так що виходить в порожньому місці і на інших мовах, Є способи для двох програм або два сценарії, в даному випадку, щоб спілкуватися з тим, що, коли я натисніть пробіл, він говорить Марко. А інший чує, що, таким чином, щоб кажуть, і каже Polo у відповідь. Так що ви можете писати програми, які насправді взаємодіють таким чином. І якщо я роблю це один замість того, щоб, Я навіть можу додати змінні, використовуючи тільки один спрайт в цьому випадку. Це один особливо дратує. [SEAL гавкіт] Тепер зверніть увагу на право у нас є деяка додаткова логіка тут. Як зупинити цю печатку гавкати? [SEAL гавкіт] Схоже, що на правій руці сторона це те, що грає звук. Але це тільки граючи звук, якщо те, що це правда? Якщо в переменная-- помаранчевий block-- приглушений дорівнює нулю. Як змінити приглушений бути 1, це означає, правда, зробити це приглушені? Мабуть, інший сценарій, я можу натисніть пробіл, і тепер він зупиняється. Таким чином, ми можемо мати цей взаємозв'язок через скрипти, а також, , Просто розділяючи змінну через два, як це. Тепер, це не все, що цікаво. Давайте йти вперед і робити це і об'єднати багато з цих ідей за допомогою цієї програми тут. Перед тим, як зробити це, хоча, як щодо одного добровольця? Дозвольте мені зняти напругу мене, тому що я насправді не грати в цю гру. Давайте мати когось ми не бачили раніше. Ви повинні бути зручними приходити на сцену тут, на камеру. ОК, давай вгору. Дуже хоробра. Як вас звати? Ідріс: Ідріс. DAVID Маланки: На жаль? Ідріс: Ідріс. DAVID Маланки: Ідріс, приємно зустрітися з вами. Піднімайся. А тепер, на свій мобільний телефон, ви граєте Покемон GO? Ідріс: Ні. DAVID Маланки: Справді? Ідріс: Так. DAVID Маланки: OK. Добре. Що ж, приємно зустрітися з вами. Приходь. Я теж не розумію. Таким чином, ми подумаємо разом, як грати в цю, що хтось насправді пішов і реалізований в порожньому місці шляхом зміни кішку по суті різні персонажі все разом. І якщо я весь екран це тут, ми будемо щоб побачити наступну гру разом. Завантаження, як і раніше завантажується. Давай. Дозвольте мені зробити це. Давай. Ця гра настільки велика, що він розбився. Приготуватися. Спробуйте ще раз. Давай. Добре. Там ми йдемо. ДОБРЕ. Зелений прапор. Так що тут ми йдемо. [МУЗИКА] Виберіть середній рівень тут. Натисніть на синій хлопець там. Добре. І ви можете використовувати стрілку keys-- вгору, вниз, вліво, вправо. Тепер давайте розглянемо, як ми робимо this-- а потім піти після того, як персонажа там. Так. А тепер натисніть його за допомогою миші. О так. Перемістити. Де стрілка? Тут ви йдете. Так натисніть тут. Так. Добре. Так що тепер, як мені сказали у вас є Poke м'яч, що якщо натиснути її, він буде робити це. Дуже добре. У практиці на сьогоднішній день, я знайшов цю версію гри насправді не дуже складно. Так що якщо ви хочете йти знову тут, спуститися до цього Poke м'яч. А потім поверніть направо. Спробуйте натиснути на нього. О, насправді, це магазин, мабуть. ОК так близько, що. Ніколи не робив цього раніше. Може підійти до цієї речі тут. О, там ви йдете. Зачекайте, є один там. О, є ще один. ДОБРЕ. вниз Так, натисніть кнопку. Добре, це дуже мило. Добре, дуже добре зроблено. Ця гра не дуже важко. ДОБРЕ. Вітаю. Тут ми маємо CS50 стрес м'яч для вас. Але подумайте на мить, що деякі з їжі додому є. Легше, ніж реальною грі, мабуть. Але все, що ми збираємося тут є характер що, ймовірно, має якийсь петлі, пов'язані з ним. Це не кішка. Це замість того, щоб цей персонаж. І що петля просто постійно кажучи, якщо стрілка вгору натиснута, якщо стрілка вниз натиснута, якщо стрілка вліво або вправо, утримуючи стрілка натиснута, рухатися вгору або вниз або вліво або вправо. Або якщо є інший шматок головоломки є що говорить, коли торкаєтеся інший спрайт, при торканні одного з персонажів до кулі Poke, якщо дотик, потім зробити це. Так що всі ідеї, ми використовували досі насправді можуть просто бути застосовані в даному конкретному контекст, щоб грати в цю гру, а також. Дозвольте мені йти вперед і тягнути до однієї інший тут, насправді. Дозвольте мені йти вперед і тягнути до, скажімо, це. Це те, що ми ремікси. Зроблено одним з наших студенти в Кембриджі, а потім я пройшов і змінив в значній мірі кожен екземпляр Гарварда Йель на цей раз. хто хотів би конкурувати з Ivies тут в іншому накопиченні всіх цих ідей? Злазь, так. Як вас звати? ДІНА: Dina. DAVID Маланки: Адіна? ДІНА: Dina. DAVID Маланки: Dina, давай вниз. Добре, Діна. Так що ця гра стає все важче і важче, тому що в цій грі, є змінні використовуються, а також які постійно відстежують на якому рівні ви перебуваєте в грі. Так приємно зустрітися з вами. Прийде сюди. І тому мета тут полягає в сортуванні з зробити свій шлях через лабіринт що цей студент реалізований. І як раз, щоб встановити сцену, кожен з цих картинок на екрані є його власним спрайт, його власний характер. Так що це були за замовчуванням кішки, але студент змінив їх на різні логотипи Ivies тут. І тоді ви побачите, що тільки за допомогою умов і петлі і функції і багато іншого, ви отримаєте це. [МУЗИКА] [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Так, добре. Так, продовжуйте йти. Перший рівень дуже легко. Ви просто повинні піти туди. Але знову ж таки, вважають, що це просто петля для прослуховування стрілки keys-- вгору, вниз, вліво, вправо. А тепер чутливий блок. Дуже добре. [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Дуже добре. [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Дуже добре. Досить просто, малиновий. Добре. Levels-- ем-ой. [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] І знову ж таки, в них три з Гарварда гребені, ви просто логіку кажучи, якщо на краю, сильний удар. [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Добре, що ви робите, цікавішим, ніж чому. Дуже добре. Дуже добре. Ой-ой. [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Я думаю, ви повинні пожертвувати собою. [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Швидко! [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Ніцца. Все добре. Ви отримаєте його. Так Так! Дуже добре. [Радісної] [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Nice! [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Зрозумів. Давай! По-друге, щоб останній рівень. [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Добре. [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Так. Правильне використання змінних тут. [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Так. [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Ніцца. [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Все добре. Ми добралися, щоб дістатися до кінця. Там. О! [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Може працювати сьогодні пізно, але це буде варто. [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Ти можеш це зробити! Так! [Радісної] [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Це один з дуже важко. [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Ми дамо вам ще два життя. Ви можете зробити це? [МУЗИКА - MC HAMMER, "U CAN NOT торкатися  ЦЕ "] Добре. Як про великому колі оплесків, проте. Ви дісталися до другої до останнього рівня. Дякую. [Оплески] Так що це тільки сказати, скільки ви може робити з цими видами речей. І розуміють також, що, коли шматочки головоломки НЕ exist-- і справді, це буде один повноважень з першою проблемою Набори і beyond-- є насправді створити свій власний. І це всього лише фрагмент коду одного з прикладів ви будете мати можливість грати з онлайн, де якщо ви не вбудували в порожньому місці щось на зразок кашлю шматок головоломки, ви можете зробити це самостійно. А так все це і багато іншого чекає. І як раз, щоб намалювати остаточний картина насправді те, що вперед в магазині для класу для вас, заснований на деяких з фотографій однокласників минуле, дозвольте мені тьмяне світло в останній раз і показати вам CS50. [МУЗИКА] Добре. Ось це для CS50. Торт тепер служив. [МУЗИКА]