[Powered by Google Translate] [ROCK MUSIC]
[MUSIC - "Щасливі разом" Черепахи]
DAVID Малан: Сьогодні ми почнемо наше дослідження
Основи інформатики та наше введення,
Тепер, в мистецтві програмування, які, який
Тільки один приклад.
Але в тому ж дусі вирішення проблеми, знаємо, що
Традиційний День Puzzle CS50 є завтра.
Якщо ви ще не RSVPed до цієї події, ви можете піти в
cs50.net/rsvp.
Ви можете принести команди з двох, трьох або чотирьох.
Вам буде оскаржена з проблемами, як той, який ви бачили
там на самому початку.
Всі нові проблеми в цьому році, якщо ви взяли участь в минулому році, і ви
будуть мати можливість потім, щоб виграти деякі казкові призи.
Серед них, Wii і деякі подарункові сертифікати і т.п.,
Весь той час, бовтаючись з CS50 студентів та однокласників
і піцу і Facebook.
Так про це завтра, якщо ви хотіли б.
>> У цьому і полягає CS50, для тих з вас приєднатися до нас для
перший раз.
І знайте, що цей курс особливо мають намір отримати
Вас через цей курс, щоб її кінцева мета, в який момент ви
буде мати не тільки розуміння цих
Основи інформатики, але ви повинні будете
це дуже практичний набір навичок, які потім можна забрати в
власний відділ, будь то технічних наук,
прикладна математика, природничі науки, природничі
наука, або тому подібне.
Дійсно, те, що так здорово про комп'ютерній науці ці
днів в тому, що це саме так, застосовні до
всі види полів.
І хоча сьогодні, ми будемо тільки подряпати поверхню
дуже традиційний мова програмування, відомої як C, ми будемо
Замість дивитися на те, що називається Scratch, щось з
яких ця історія печива любов була реалізована одна з ваших
попередників в минулі роки, щоб розповідати історії, створювати ігри,
для створення інтерактивного мистецтва, і фактично почати, щоб обернути наш
умів навколо деяких з фундаментальних конструкцій,
лежать в основі програм, але в контексті, як ви побачите, що це
набагато менш страшно, що набагато менше таємницею, ніж ви побачите
незабаром.
І розумію, теж, для тих з вас тільки що приєдналися до нас ця
семестру, фрази, за якими ми закінчили лекцію в середу,
це не так важливо, де ви в кінцевому підсумку по відношенню до вашого
Однокласники в цьому класі, але де ви, до кінця семестру
У тиждень 11, в остаточному підсумку по відношенню до себе прямо в той же день.
>> Отже, без подальших церемоній, це також варто відзначити, що
тих, хто менш зручні, ті десь між ними, є
Крім того, в конструкції цього, звичайно, не в будь-який недолік
VIS-A-VIS тим більш зручними
вступ у цьому класі.
Як ви побачите в протягом тижня, щоб прибути, у нас різні
треків для різних задній фон, розділи для тих,
менш комфортно, більш зручні, ті, десь
між ними.
Як ви побачите в ці вихідні і на наступному тижні, дві версії
Найбільш проблема набору в стандартному виданні і хакерських так
що ви все можете самостійно вибрати по шляху, з яким ви
Найбільш зручними.
>> Отже, сьогодні ми заглибимося в цю програмуванню
мову під назвою Scratch.
Це графічний мову програмування, і все ж вона має
ж функції, деякі з мов високого рівня ми будемо
досліджувати пізніше в семестр, в тому числі і C
JavaScript і PHP.
Але це відбувається, щоб дозволити нам уникнути деяких відволікаючих
на ранній стадії синтаксису, такі речі, як крапка з комою, дужки,
та інші таємні деталі, які, на перший погляд, просто не
на всіх інтелектуально цікава і, як правило, отримують в
шлях від деяких фундаментальних розуміння.
З точки зору зараз структура підтримки вперед, зрозумів, що це
Інструмент, CS50 Обговорити, який буде пов'язаний з курсу
сайт пізніше сьогодні, є інтернет-форумі обговорення в
яких ви зможете ставити питання один одному і
персоналу, і це також інструмент, як ми побачимо на наступному тижні,
які ми будемо використовувати досить integratedly в
робочий час, а також.
Дійсно, години роботи почнуться в понеділок, і, чесно кажучи, перший
тиждень в неробочий час досить низький ключ.
>> Я не думаю, що ви знайдете Подряпини все, що доступно.
Це досить очевидні, як ми побачимо, і так, що
ми будемо використовувати це на сьогоднішній день є витяг деяких з
Основні ідеї, які, потім, зберігаються протягом всього
Інша частина семестру.
Але, починаючи з понеділка, о 8:00 вечора за 11:00 вечора буде
Прийомні години в Annenberg над мозком перерви.
Секціонування два почнеться цього вечора, так що вже в цьому
вихідні, перейдіть на cs50.net/section, і ви будете
бути поставлено ряд питань.
Серед них, як би ви описали вашу
рівень комфорту на сьогоднішній день?
Там немає жорсткого, швидкого правила щодо того, хто, в якому відро.
Це просто така штука, що ви, мабуть, знаєте, якщо ви
Серед тих, хто менш комфортно чи ні.
>> І тепер, покрокові керівництва.
Специфікація проблема набору на цьому тижні, як стандартних,
і хакерських видання, так, зараз на cs50.net як зараз.
І ви побачите, що перший з цих видань,
Standard Edition щотижня, супроводжуються те, що ми
дзвоніть код керівництві сесії на чолі з одним з
викладанні курсу стипендіатів для Вас через, забезпечують
Поради по, і ви отримаєте вниз, особливий шлях, коли мова йде
для початку ці проблеми множин.
Таким чином, з кожною з цих проблемних встановлює, якщо ви ніколи не бажаючих
для себе, де я можу почати, ви починаєте з цим
покрокові керівництва.
І справді, дозвольте мені представити Zamyla Чан, це
викладання році людина, яка буде керувати кожним
одного з цих проходжень.
Zamyla?
>> [Оплески]
ZAMYLA CHAN: О, привіт, всім.
Мене звати Zamyla.
Я молодший навчався на інженера в Winthrop будинку.
Але я намагаюся і встановити за багато комп'ютерні науки курси, як я
може, саме тому я дуже радий бути ведучим цього
рік покрокові керівництва.
Проходження, для мене були невід'ємною частиною мого CS50
досвід.
У керівництві для кожної р-безліч, ми пройдемо
Проблема встановлені разом, дивитися на проблеми, вид
розділити їх на керовані укусів.
Я дам вам поради, методи, для отримання
до кінця і приступити до роботи.
Я сподіваюся побачити всіх вас на покрокові керівництва.
Якщо ви не можете зробити це в обличчя, то
будь ласка, мелодію в Інтернеті.
>> DAVID Малан: Відмінно.
Спасибі, Zamyla.
Так розумію, що покрокових посібників, дійсно, в п'ятницю
вдень, але це навмисно дизайну, так що
навіть якщо ви не хочете відвідувати заняття в п'ятницю
Вдень, відео буде все швидше більш
у вихідні дні.
Так розумію, що cs50.net буде все в Zamyla
покрокові керівництва.
І що є сьогоднішня дата і час, 3:00 PM
Harberd Hall, 104.
І деякі з навчанні стипендіатів також підготували
деякі зауваження для вас заочно, щоб дати вам трохи
точки зору про те, що їх досвід та вступ до
виходячи з CS50 був.
Таким чином, якщо ми могли б тьмяне світло на мить, я даю вам
Деякі із співробітників CS50 в.
>> JACKSON Steinkamp: Я взяв CS50 в минулому році, на першому курсі в
впасти, і це абсолютно підірвав мій розум.
Я ніколи не брав ніякої програмування класів і колись,
і ніколи не прийшов з будь-якого комп'ютера науки
досвіду.
І тільки я почув шум з приводу класу і
вирішив прийняти його.
>> JULIA Мітельман: Це було дійсно весело, дуже цікавим.
Я до сих пір, і по сей день -
Я тільки недавно побачила в мене є дискета, що Давид дав нам
на наш перший день лекцій.
Я повісив його на стіну.
Це, напевно, трохи гальмівної, але я висів на моїй
стіни в класі в якості нагадування про те, як прохолодно було.
>> TRAVIS DOWNS: Це так ніяково.
>> JACKSON Steinkamp: Комп'ютерні науки є те, що ви
повинні спробувати, навіть якщо ви не з тих,
традиційної науки.
Це власний досвід, і CS50 буде переконатися, що ви
підтримується також через нього з його ціла армія TFS.
>> ALI Нама: Я прийняв це як на першому курсі, і тому я зробив багато
нових друзів.
Я також познайомився з цим всю концентрацію і
Весь інженерній школі, і я дуже рекомендую його
і вітати Вас на нашому CS50 сім'ї.
>> Янів YACOBY: CS50 тільки навчить вас, як використовувати інструменти
, Які є широко доступними.
Вам просто потрібен ноутбук, необхідно веб-браузер, і ви
потрібно навчитися писати код, і ви дійсно можете побудувати
акуратні речі.
>> KAREN XIAO: Це так здорово мати можливість зробити щось
і є люди використовують його, а люди це бачать, і це
Що я дійсно люблю про це.
>> Тім Маклафлін: - почуття спільності, я думаю, в цьому
звичайно, більше, ніж будь-який інший курс я взяв до цих пір.
Ви не просто з іншого -
Ви не заповненням іншим вимогам.
Ви не просто збирається лекції і збирається розділі.
Але ви робите тонни речей, які все
програмування та все про технології, але це не
дійсно відчуваю, що клас більшу частину часу.
>> TRAVIS DOWNS: І в перший день, вони роздали торт, і
Я був миттєво розпроданий.
>> JACOB PRITT: Безкоштовні солодощі та піцу.
>> ZAMYLA CHAN: - незалежно від ваших інтересів рівні, я думаю,
що CS50, ви будете мати задоволення, і ви будете інтелектуально
стимулюється.
>> MARK GROZEN-СМІТ: Це завжди вечірці в класі, і це
вечірка щоночі працюють над вашим р-безліч.
>> JACKSON Steinkamp: Кожен раз, коли ви закінчите проблема набору, ви
буде почувати себе, як ви закінчили проект.
>> MELISSA NIU: Це був перший рік, і я зробив покупки.
У мене були чотири класи готові, і я був в Annenberg.
І я наткнутися на одного, і він говорить, агов, я роблю покупки
цього класу називають CS50, і ви повинні піти зі мною.
Закінчилося тим, що, що осінь, а після цього класу, я
подумав, що я збираюся неповнолітнього в CS.
Але от я, через три роки, ще навчаючись комп'ютера
наука і фактично роблять це в якості основної, і я любив кожну
Момент його.
>> ROB Боуден: я поняття не маю.
>> ALI Нама: Давайте подивимося.
>> MELISSA NIU: Божевілля.
>> Виступаючий 1: Я відчуваю, що я був би дуже кліше.
Я просто кажу, начебто, дивний.
>> Янів YACOBY: Доступність.
>> JACOB PRITT: Безкоштовні солодощі та піцу.
>> TRAVIS DOWNS: Не можу відмовити класу, який роздає торт.
>> Тім Маклафлін: Енергетика.
>> Vipul Шехават: Essential.
>> ROB Боуден: Дозвольте мені придумати відповідь.
Я думаю, що є щось.
О, боже.
Так, Роб мене звуть Боуден, і це CS50.
>> [Оплески]
DAVID Малан: Гаразд, давайте почнемо малювати картину
напрямки, в яких ми можемо піти, і давайте познайомимося
ця концепція відома як тут псевдокод.
Так псевдокоді це не програмування
Мова сам по собі.
У цьому немає нічого технічних сама по собі, але це всього лише свого роду
загальний спосіб виразити себе досить точно,
алгоритмічно досить, досить процедурно, але без
турбуючись про те, яку мову ви вираженні
себе дюйма
Це деякі моделі англійської мови та мов програмування з
яке вам пощастило бути знайомим, так що ми можемо почати
написання такого роду речі, як ми йдемо.
І справді, Йосип, я можу позичити вам на сцену, щоб бути
писец тут?
Я пішов вперед тут заздалегідь і забув надіти
на деяких шкарпеток сьогодні, і це буде серед наших більш
смішні приклади.
>> Тепер, ти мені потрібен тут.
Я зроблю шкарпетки частина.
Отже, у нас є трохи блокнота.
Це буквально TextEdit в Mac.
Ми насправді не збирався написати працюючу програму, але
ми тільки збираємося почати накидати на основі псевдокод
по деяким порадам ви надаєте мене тут.
Так ось мій купу шкарпеток будинку.
У мене немає шкарпеток, коли я прокидаюся вранці, і ми тепер
потрібно написати програму, алгоритм роду, з яким
щоб отримати ці шкарпетки на ногах.
І на цьому шляху, давайте подивимося, якщо ми спіткнутися, або зіткнутися,
деякі з ідей, які ви будете мати, щоб почати
думати про набагато більш серйозно, при програмуванні
щоб ваші програми не поводяться зовсім по призначенню.
>> Так що я сиджу тут.
У мене є купа шкарпеток.
Що перше, що розумне людська істота буде
робити, якщо метою є покласти на пару шкарпеток?
Хтось дав мені один крок, і тільки один крок.
Так?
АУДИТОРІЯ: Зігніть вниз.
DAVID Малан: нагнутися, ладно.
Крок другий.
АУДИТОРІЯ: Підніміть свій носок.
DAVID Малан: Підніміть свій носок.
Отже, невелике двозначності тут, і це є одним з перших
каменем спотикання, що ми повинні свідомо
зустрічаємося тут.
Це трохи неоднозначним, так забрати свій носок.
Добре, я візьму це одне, а комп'ютер, розуміють, всього
біт, не матиме такого роду людського інстинкту просто
вибрати найближчий до вас.
Ми збираємося мати, щоб почати, незабаром, висловлюючи
себе більш точно.
>> Гаразд, другий крок, це забрати ваші шкарпетки.
Ми візьмемо його.
Крок третій.
У задній частині.
АУДИТОРІЯ: Знайти підходящу пару.
DAVID Малан: Знайти підходящу пару.
Отже, це добре.
Я повинен був вибрати цей носок.
Таким чином, метою є знайти підходящий носок, зараз, але те, що
що це значить?
Розумного людської істоти, як і в середу, коли я тільки
знав, як знайти Mike Smith в телефонній книзі, тільки вид
пішов зі своїм інстинктам.
Але тут, це очевидно, що це носок тут, але комп'ютер
Не буде так інстинктивно.
Комп'ютер буде мати набір бітів, як ми
обговорюватися в середу, і ті
організовано якось в пам'яті.
Але справа в тому, що комп'ютер має тільки здатність
дивитися на речі по одній за раз, і справді, навіть ми
люди - навіть якщо він відчуває, як я подивився вниз і розкол
Секунду опісля я знаю, де носок, мій мозок і очі
Імовірно зробив швидкий знежирене тих шкарпетках, а потім замкненому
на кожне питання.
>> Таким чином, якщо ми будемо все більш цілеспрямованими тепер, як комп'ютер,
Як мені знайти цього підходящу пару?
Ну, у нас є для перебору.
Ми повинні, можливо, цикл по цій мішанині шкарпетки
підлога якої я кажу щось на зразок ДЛЯ КОЖНОГО носок, підняти його
вгору, а якщо ж форму і розміри, як і інші одиниці, то
точка, точка, точка, ми будемо продовжувати цю історію.
Таким чином, для кожного носка, тому я піднімаю це.
Я перевіряю це одно це.
Це не так, тому я відклав боку.
Тоді я ітерації знову.
Це один рівними?
Ні, це не так, тому я відклав її вбік.
Чи є це?
Ні.
Цей?
Ні, і так далі.
І, нарешті, сподіваюся, я буду зіткнутися з цією носок тут.
Так що, якщо це той же форми, розміру, візьміть його.
>> А тепер, що б бути наш наступний крок тут?
Так?
АУДИТОРІЯ: Визначити праве від лівого.
DAVID Малан: Добре, визначити праву і ліву, так
На щастя, такого роду робіт.
Трохи симетричний, або я просто носити їх таким чином.
Гаразд, я визначив права.
І тепер, перш ніж ми почнемо, дозвольте мені зазначити, що Йосип
робили тут як свого роду розбираються програміста.
Отже, ще раз, немає ніяких один із способів зробити це, але тільки за межами
Нумерація рядків, Йосип вже почали це робити
начебто відступу.
Дійсно, це дуже поширена конвенції в галузі програмування,
яким Коли ви робите щось ітераційний, цикл стилю, як
Ми подразумевающее з англійської фрази "для кожного
шкарпеток, "конвенція в псевдокоді і, як ми побачимо,
нормальні мови програмування, це просто абзац.
Натисніть пробіл кілька разів, натисніть клавішу Tab і т.п.,
так що вкладені під "Для кожного носка" є шматок
Речі, які ви повинні зробити в результаті цього циклу.
Так от все, що передачі семантично.
Тепер Між тим, "Якщо це такої ж форми і розміру,"
Те, що "Візьміть його" з відступом надалі просто означає, що
це єдина річ, яку ви повинні зробити, якщо ця умова,
якщо це галузь, яка розвилці доріг, насправді правда.
>> Так що тепер тут, ми знаходимося на четвертому етапі, визначити праву і ліву.
Я визначені права.
Дайте мені Крок п'ятий.
І технічно, ми могли б дійсно назвати
для кожної речі -
Ви, ймовірно, слід нумерувати всі рядки, якщо
ми збираємося це зробити.
Йосип: [нерозбірливо]
DAVID Малан: [нерозбірливо]?
Гаразд, добре, добре, ми зробимо це ваш шлях.
Гаразд, так що крок п'яти років, як ми це робимо правий носок?
Як ми можемо перейти до наступного, тут?
Так?
АУДИТОРІЯ: Підніміть праву ногу.
DAVID Малан: Підніміть праву ногу, ладно.
Крок шість?
Швидко.
Так.
АУДИТОРІЯ: Знайти відкритий кінець носка.
DAVID Малан: Добре, знайти відкритий кінець носка.
Так добре.
Так от, якщо чесно, дуже поширений інстинкт буде просто
покласти на правий носок, але це теж досить неоднозначно.
Якщо комп'ютер або людина точно знає, що це означає,
він не буде виконувати, що, так от, у мене є
знайдено відкриття акції.
Крок сім?
АУДИТОРІЯ: натисніть пальцями ніг.
DAVID Малан: Touch пальці.
Отже, тепер ми йдемо -
Гаразд, я збираюся взяти деякі вільності тут.
Спасибі.
Крок вісім?
Покладіть на носок.
Гаразд, так що тепер я, думаю, що ми досить близько, щоб сортувати прийняти
цього будинку.
Гаразд, так що це йде вгору.
Я візьму деякі вільності з тим, що це означає насправді.
Поставте шкарпетку.
Гаразд, тепер кроці дев'ять?
АУДИТОРІЯ: Покладіть ногу.
DAVID Малан: Спасибо.
Крок дев'ять, поклав ногу, і тепер ми можемо повторити.
Таким чином, очевидно, тепер ми можемо йти в крок 10 і сказав виявлення
залишив носок, але це мабуть вже зробили.
>> І таким чином, я можу сортувати, повторіть ці кроки.
Але такого роду виникає питання.
До цього останній раз ми хотіли повторити щось, ми
зробив це багаторазово, знову і знову, для
Кожний цикл, так би мовити.
Чи має сенс використовувати цикл для того, щоб обробляти як
лівий і правий носок?
Тому що він відчуває, як ці операції є в значній мірі
ідентичними, за винятком того, що один починається тут і одне
Тут починається?
У нас цикл, або ж ми просто продовжувати писати кроків
10, 11 і 12?
АУДИТОРІЯ: Loop.
>> DAVID Малан: Добре, так циклі.
Я насправді сказав би просто продовжувати йти.
Так чому ж це так?
Ну, це насправді перший з наших неочевидним
проектних рішень, а насправді, одна з метрик, з якими
ми починаємо оцінювати, для себе і для вас,
Якість програми, наскільки добре розроблена вона є.
Ви зробили мінімальну кількість роботи, необхідної для
отримати роботу швидше за все, або у вигляді
Ваш час або в термінах часу роботи комп'ютера?
Скільки операцій робить це бере, щоб виконати?
Так що, можливо, це можливість для циклу, оскільки
Як тільки я почала копіювання і вставки, як Йосип ефективно
почнуть робити в момент, ти ніби витрачати
час, і ти поводишся подвійно виразні.
>> Але в той же час, це дійсно тільки два спеціальні
випадках, вліво і вправо.
І якщо раніше, я міг би мати 10 або 20 або більше шкарпетки
купа, це безперечно має сенс не є 50 ліній
Код кажучи перевірити цей носок, потім наступний,
Потім наступний.
Ось, це трохи менше, очевидно, і я б запропонував
що ми могли б піти в будь-яку сторону.
Ми можемо або, що цикл, хоча він тільки петлі
в два рази, або ми можемо просто скопіювати і вставити трохи
Тут для того, щоб отримати роботу.
Але ця програма глючить, так би мовити.
Він може мати деякі помилки, помилки, або кутовий випадках, так
говорять, що ми дійсно не чекали.
Нічого пішло не так на цей раз, але що пішло не так
При виконанні цієї програми?
АУДИТОРІЯ: Ви не маєте будь-які шкарпетки.
>> DAVID Малан: Так не могло бути і шкарпетки існує взагалі.
Так що давайте вважати, що кут випадок.
Таким чином, якщо ми могли б прокрутити назад до першого кроку, так що крок один був
нахилитися, так що перевірку.
Крок другий, забрати свій носок, а потім знайти відповідні носок,
визначити права.
Ми ніби як зробили цілу купу припущень, і це,
чесно кажучи, чому програма іноді краху.
Якщо ви програміст, зробив деякі припущення, як
звичайно, там буде шкарпетки або напевно є відбувається
щоб залишити пам'ять у комп'ютері, звичайно, там збирається
бути дискового простору залишилося на жорсткому диску -
Ну, а якщо ви робите ці припущення, і це не так,
У самому справі, реальність, яка знає, що іноді комп'ютер
збираєтеся робити?
А іноді, коли ви отримуєте обертовий куля пляжі або
замерзлі вікна і т.п., ось саме тому, що деякі
Програміст не припускав, ці так звані випадки кутку.
Що ще могло піти не так у цій програмі?
Так?
>> АУДИТОРІЯ: Вам не доведеться праву ногу і ліву ногу.
DAVID Малан: Гаразд, не може мати як праву ногу і
Ліва нога, і тому ця програма не може бути універсально
застосовні.
Інші?
Залу: Ви могли б узяв сироту носок.
DAVID Малан: я б узяв сироту носок, так
незбіжних носок, який просто не має братів і сестер, тому що в мене
втратив його, він розривається, це в митті ще, і тому подібне.
Так що, теж, насправді не були оброблені.
Так?
Залу: Ви, можливо, вже шкарпетки.
DAVID Малан: Я, можливо, вже шкарпетки.
Я насправді не перевірити.
Якщо у вас немає шкарпеток, потім поступлю
лінії один і два.
А це може статися.
Ви засинаєте з вашими носками, тощо, так
, Що теж дуже розумним кутом випадок.
А може бути, один іншого?
Аудиторія: носок навиворіт.
DAVID Малан: Так носок навиворіт, так що ми зробили жодної помилки
перевірки, коротше кажучи.
Ми не перевіряли, якщо держава світу так, як ми очікували.
Ми не перевіряли, якщо ми насправді знайшов те, що ми шукаємо.
>> І хоча це є свого роду смішний приклад
за участю шкарпетки, врешті-решт, це саме те,
роду мислення необхідно мати при написанні програм,
навіть у подряпин, а також в C, в JavaScript, в PHP,
тому що в противному випадку, ваші програми будуть проявляти
еквівалента, що обертання пляжний волейбол або просто дати
неточні результати.
Так що велике спасибі тут, щоб наші писарем Джозефа.
[Оплески]
>> DAVID Малан: Добре, так в чому ж, в
Дійсно, комп'ютерна програма?
Ну, давайте кинемо швидкий погляд на
Представник тут.
Отже, це програма, написана на мові, званому C. З
досить старий ці дні, але багато нові мови будуються
на ньому.
Дійсно, PHP, один з веб-орієнтованих мов, які ми будемо
використовувати ближче до кінця семестру, сама по собі має те, що називається
перекладач, програма, яка написана на C, але про це
У багатьох тижнів.
Але в цій програмі, а це що означає написати
Програма, хоча і дуже простий.
У нас є деякі досить загадкові синтаксису, але ви можете
напевно, здогадалися, навіть якщо ви ніколи не програмували раніше, що
це робить програма.
В самом деле, я не знаю, що Printf є, але, звичайно, друкувати
викликає в уяві ідею друкувати щось.
А так да, ця програма в кінцевому рахунку, буде роздрукувати
слова «Hello, World».
>> Тепер, чи є у вас Mac або PC або Linux комп'ютері, шанси
, По крайней мере, якщо ви завантажили деякі вільно
доступно програмне забезпечення, ви могли писати програми на
свій ноутбук протягом досить довгого часу тепер.
У Mac OS, наприклад, є така програма під назвою
Термінал, який поставляється з Mac, які, як правило, у вашій
Утиліти папку, і вона взагалі відкривається чорно-
білому або білі і чорні вікна, на якому у вас є
підкажуть, на якому можна вводити команди.
Так що це насправді нагадують те, що комп'ютери
було раніше графічний користувальницький
інтерфейси, GUI, прийшли разом.
Тепер, в Windows, у вас є аналогічний механізм у вигляді
з командного рядка.
>> Але те, що я збираюся зробити, так це відкрити, скажімо,
TextEdit знову, так само програми ми використовували для
псевдокоді хвилину тому, і я збираюся йти вперед і
написати свою першу програму.
Включити stdio.h, що б це ні коштів, Int основний
порожнеча, що б це ні коштів, а потім в середині тут,
Е ("Hello, World."). І тоді близько цитати,
закрити хлопець, крапка з комою.
Тепер я збираюся йти вперед і просто натиснути Command-S. Я збираюся
йти вперед і зберегти це як hello.c, тому конвенції в
світ програмування C є ім'я файлу з точкою.
Я збираюся просто покласти в домашній каталог Джона Гарварда,
Тут, натисніть кнопку Зберегти, і тепер я збираюся перейти до цього
вікно терміналу, який знову це чорно-білі рядки
де я можу виконувати команди.
>> Я можу запускати програми, ввівши своє ім'я, а не
подвійному клацанню значків в звичайному сенсі.
Але справа в тому, про C в тому, що мова, як З першого
приходить в такому вигляді, то, що називається початковим кодом.
Те, що виглядає трохи як англійська мова, але це
Виразно менш, як англійський, ніж псевдокод Йосипа
Хвилину тому.
Це трохи більш складних.
Здається слідувати деяким візерунками або правил.
Той факт, що у мене є фігурні дужки, крапки з комою, лапки,
кутові дужки, відчуває, як комп'ютер прийшов з цією
роду мову.
Але якщо я піду, зараз, це вікно терміналу, я можу запустити
команда, яка збирається перетворити вихідний код
так званий об'єктний код.
Це збирається конвертувати Англійська-подібний синтаксис для нулів
і ті, ті ж самі види з нулів і одиниць, ми
говорили про середовище.
Тепер, я збираюся виконати команду називають Clang.
Докладніше про це в найближчі тижні, але це програма з
який я можу перетворити hello.c в цілу купу
з нулів та одиниць.
>> Тепер, я виконати цю команду.
Я біг Clang, а потім я сказав собі працювати на цьому файлі
називається hello.c, який я створив хвилину тому, і
ніщо, здається, сталося.
Але насправді, якщо б я понишпорив мій домашній каталог, я хотів би бачити
що це нерозумно ім'ям a.out програма існує в даний час.
Це просто ім'я за замовчуванням для програми при запису в
С. Ми можемо змінити це в кінцевому підсумку, але a.out є
Назва програми я просто перетворюються на нулі й одиниці.
А тепер, що це нулі і одиниці, мій Mac, в даному випадку, або
вашого ПК з Windows, можна зрозуміти ті біти, ті,
нулів і одиниць.
І тому, коли я вдарив Enter, я бачу "Hello, World!"
>> Але це трохи баггі.
Я не зовсім сказати "привіт, світ: повітря: - jharvard". Повітря
ім'я мого комп'ютера.
Jharvard це ім'я облікового запису, так що я чітко
виключити з програми?
Якісь рядки.
Я не потрапив в еквіваленті Enter або повернення каретки,
і це, знову ж таки, свідчить той факт, що комп'ютери можуть
тільки те, що ви говорите їм зробити.
І те, що я не говорив комп'ютера рухатися
курсор на наступний рядок -
ну, це, звичайно, не збираюся просто зробити це
самовпевнено для мене.
Так що, якщо я повертаюся до моєї програмі, і я кажу \ п -
Таким чином, \ п, як ми скоро побачимо, це шлях
представляють дивні речі, як символи нового рядка, речі
які могли б бути результатом
удару клавішу введення.
Але зараз, просто знаю, що удари Enter ключ буде
просто зробити наш код виглядає дивним, так що світ вирішив, ви знаєте,
що, щоб тримати речі красивіше, щоб тримати його в одному рядку, давайте
просто сказати \ п представляє нову лінію.
Дозвольте мені збережіть свій файл, поверніться у вікно терміналу, і
повторні a.out, Enter.
Тим не менш помилки, але навіщо?
>> АУДИТОРІЯ: [нерозбірливо]
DAVID Малан: Так, так що мені потрібно перекомпілювати.
Таким чином, для компіляції програми просто означає, перетворити його з джерела
код, об'єктний код, вихідний код нулів і одиниць.
Тепер, сам факт, що я вдарив зберегти в цьому TextEdit не має
, Що стосуються тих нулів і одиниць, тому що в першу чергу необхідно
Скажіть Clang агов, я змінив ці рядки коду,
вихідний код.
Вам необхідно відновити a.out.
Ніщо, здається, сталося, але в комп'ютері,
в командному рядку, так що говорити, коли нічого не відбувається,
Зазвичай це означає, що все добре.
Коли щось трапляється, це означає,
Ви зіпсували, взагалі.
>> Отже, давайте тепер переходимо до a.out, та й зараз, у мене є "привіт,
світу ".
А тепер, що про ці нулів і одиниць?
Де, власне, такі?
Ну, я не можу дійсно просто якась копатися дуже
ефективно.
Дозвольте мені відкрити TextEdit.
Ось a.out.
Дозвольте мені йти вперед і відкрити це, і це, мабуть, те, що моя
Програма виглядає.
Так що я відкрив, не hello.c, але a.out.
Але це насправді не те, що моя програма насправді.
Зрозуміло, що це свого роду буквених символів.
Я не бачу ніяких нулів і одиниць, але це
a.out, тому що це програма.
Нулі й одиниці - але TextEdit, як випливає з назви, це
так само, як Блокнот на Windows, це просто текстовий редактор, так що це
заплутаною всі ці нулі і одиниці, як
якби вони були, то які?
ASCII символів.
>> Так згадаємо у середу, ми просто прийшли до цього
довільне відображення цифр, або бітів, на листи, що містять
алфавіт і знаки пунктуації тощо.
Таким чином, TextEdit, що це текстовий редактор спотворюючи
ці моделі з нулів та одиниць, які повинні бути
друк слова, як "привіт, світ". Це їх відображення
як ASCII, і саме тому він виглядає трохи брудним.
Тепер, є деякі натяки на правильність тут.
Зверніть увагу, якщо я виділити, є натяк насправді "привіт,
світу ", так що десь у цій програмі
пропозиція, яку я написав.
Але давайте йти вперед і тепер бачимо з іншою програмою.
Це не той, який ми будемо використовувати, що часто, але він також поставляється з
Mac і буде всередині CS50 приладу.
Дозвольте мені йти вперед і відкрити за допомогою програми під назвою XXD.
>> Назад в день, більшість програм були названі досить загадково:
і тому тенденція продовжується.
Але-B означає плюнути цю програму в двійковому вигляді.
Не запустити його.
Показати мені, як нулі і одиниці, і це C
Програма, яку ми тільки що написали.
Тепер, я, як людина тут, я чесно не знаю, що
ці різні візерунки з нулів і одиниць представляють.
Назад в день, я, з моїм перфокарт і т.п., буде
насправді потрібно подивитися, що ці різні моделі
01111000, насправді являють.
Або ще гірше, я повинен був би зробити штампування або створення
з цих моделей з нулів та одиниць.
Але зараз, прийняти на віру, що процесор, Intel всередині, так
говорити, всередині все наші комп'ютери в ці дні, знає,
як інтерпретувати ці нулі й одиниці.
А деякі нулі й одиниці означають друку.
Деякі нулів і одиниць означає відтворення звуку.
Деякі нулів і одиниць означає приймати користувальницький введення з клавіатури.
Там всі види різних моделей, але ми, на щастя,
як люди, тільки в загальних рисах потрібно турбуватися про програмування на
це досить високому рівні.
А в інших класах CS ви можете поринути глибше і подивитися
на речі, як ці нулі і одиниці, або ще
іншого ще.
>> Отже, тепер давайте перетворимо це.
Давайте рухатися дуже швидко від C і рухатися до чогось
трохи більше втішливі, трохи більш цікавою, в тому, що
ми можемо повернути нашу анімацію, звуки і т.п.,
ясно, уникнув нас в цьому
досить примітивний інтерфейс.
Так це ж програму в C може бути представлена ​​зараз в цьому
Мова програмування називається подряпин наступним чином.
Це еквівалент цієї програми привіт світ написані на
цей стиль паззл мовою під назвою Scratch.
Отже, дозвольте мені йти вперед і відкривати цю програму.
Він знову закликав до подряпин.
Це у вільному доступі, і це те ж саме ми
розпочалася сьогодні на.
>> Так що тут Scratch, і він розбивається на кілька
різних частин.
На самому верхньому правому куті, у нас є так звані стадії, і
Дійсно, там печиво
виконується тільки трохи назад.
І на цьому етапі, що називається спрайт, символів або
об'єктів або осіб.
Це дійсно не має значення, як ви думаєте про них, але вони
є програмованими, рухомих речей, і в цьому випадку, це
програми, що наш студент написав має кілька пряників
печиво, пару кругових печиво, цілий букет
серця, цілу купу очок.
Через це, він або вона може запрограмувати кожну з цих
окремі символи окремо.
>> Отже, що це означає для програмування цих персонажів?
Добре, дозвольте мені йти вперед і натисніть на цю лівій руці печиво
і перейдіть до лівої верхньої тут.
У верхньому лівому мого екрану в даний час є
так звані сценарії області.
Це свого роду чистий аркуш, на початковому етапі, на якому я можу
перетягнути шматочки головоломки, що, відверто кажучи, зробити
саме те, що вони говорять.
На самому верху цієї стопки шматочки головоломки є слово
Коли Зелений прапор Натиснув, і якщо ви раніше не помічали,
так, як я почав, що печиво пісня була натискання, в буквальному сенсі,
зелений прапор.
Так що паззл в лівому верхньому кутку є означає, що при
людські кліки зелений прапор, продовжив робити
Наступні речі.
>> Тепер, що ж вони печиво продовжити робити?
Я дійсно не знаю, як інтерпретувати це, але
печиво мабуть встановити його канавці до нуля, то вона чекала
трьох секунд, потім він змінив свої групи в одну, то
почекав секунду, потім вона змінила свою
паз назад до одного.
І тоді це насправді виглядає трохи помилка, не повинно
повинні змінити свій паз знову і знову, якщо це не
змінюється в іншому місці, але це ряд кроків, це те, що
диктувати поведінку даного печива.
Так що давайте насправді прокрутити назад і не дивитися на те,
настільки складного немає.
Дозвольте мені йти вперед і перейдіть в меню Файл, Новий,
і отримати чистого аркуша.
>> Так що тепер, я дійсно є порожня область сценарій, порожня сцена,
з нашої нуля спрайтом за замовчуванням, а в лівому верхньому
на екрані у мене піддон всіх своїх
доступних частин головоломки.
І ми не будемо пройти через майже що багато з цих речей
сьогодні, тому що, знову ж, більшість з них очевидні, але ми будемо
спробувати класифікувати їх і вказати на схожість
з цими мовами майбутнього, до якого ми будемо пірнати.
А в лівому верхньому кутку ось перша Коли Зелений прапор натискання
так що дозвольте мені перетягнути цей тут, зменшити небагато.
І якщо я натискаю на зелений прапор, нічого не відбувається, тому що
Я не надавав ніякого логіці, будь-яка заява, так би мовити, в
, Що зелений прапор, так що дозвольте мені йти до
Категорії сюди.
Я в даний час в контрольній категорії.
Я замість цього збирається спуститися на категорію виглядає, і
є ціла купа речей, які говорять, що тут Скажіть,
Подумайте, зміна кольору, Switch костюма.
>> Так що ви можете робити дурниці з костюмами і
звуки тощо.
Дозвольте мені йти вперед і просто сказати Скажіть, а зараз помітила, як я перетягнути
і відмовитися від цього шматочка, він захоче, щоб замкнутися
у відповідну форму.
Тому, коли я йду вперед і відпустив мою миша, вони замикають
разом, і тепер, якщо я йду сюди і натисніть зелений прапор,
Кішка ж насправді привітатися, тому що це те, що всередині
цієї білої коробці.
Ми незабаром побачимо, що це біле поле те, що називається
Аргумент, або параметр.
Це спосіб зміни поведінки, в даному випадку,
паззл, але якщо я хочу сказати саме те, що я сказав,
до, скажімо привіт, світ, тепер я можу повернутися сюди,
Натисніть кнопку Play, і "привіт, світ" є те, що сказав.
>> Таким чином, ми в буквальному сенсі програмування зараз.
Це ще не все, що переконливих програми, але принаймні
це трохи більш переконливим, ніж те, що виглядає, по крайней
перший погляд, начебто цього.
І ми можемо дуже швидко отримати все більш виразним
тому що в Scratch, як і в інших мовах, є всі
роду заяви, а не тільки говорити чи щось роздрукувати, але
Ви можете робити речі, як очікування, як ми тільки що бачили
печиво, деяка кількість секунд.
Ви можете грати звуками в середовищі нуля тільки
як ви можете в нормальних звукових програм гра комп'ютера.
Ви можете перевірити, що називається логічних виразів.
Так що тепер, давайте почнемо додати до нашого інструментарій деякі терміни
що насправді ставиться до прикладу, що Йосип і я
Тут зі шкарпетками.
Таким чином, заяви просто констатацією факту.
Зробіть це.
Директива для спрайту, або мені людину, щоб зробити щось.
Логічний вираз є те, що має значення,
так званого істинного значення, що це або нуль або один, помилкової або
Правда, включений або вимкнений, немає чи да.
Не має значення, наскільки ви думаєте про це, але це
двійковий держави.
Як Nate обговорюється у відео в середу, два
різні речі.
>> Таким чином, в Scratch, логічні вирази трапитися, щоб подивитися
як ці сині об'єкти тут, і в цьому випадку питання
Знак означає, що ви задаєте питання.
Є кішки, або спрайту, доторкаючись до миші?
Так що це тільки один з прикладів подряпин блоку, який збирається
, Щоб ми могли перевірити так чи ні, це миша торкаючись
спрайту на екрані?
І це може бути корисно, якщо ви дійсно хочете, щоб робити речі
за допомогою миші.
На додаток до логічних виразів, у нас є речі
начебто миші, так що ви можете виявити, що вид
питання.
Ми можемо зробити математику, якщо ви насправді хочете, і є
насправді більш переконливим використовує для цього не тільки чистим
арифметики, як ми побачимо.
Псевдо випадковості і робить вашу програму здається, думають,
або вести себе по різному в залежності від деяких, здавалося б випадкових величин,
а то у нас такі речі, як логічні вирази як AND.
Так що якщо ви дійсно хочете, щоб перевірити два значення, ми побачимо в
Подряпина, що ми дійсно можемо перевірити, якщо це
Правдиві й це правда.
Наприклад, у випадку мої шкарпетки, я міг би в
самому кінці задав питання, якщо не носок на праву і шкарпеток
включений, кинути палити.
Ви все зробили за день, так що було б
можливість для цього.
>> Так що давайте йти вперед і спробувати зібрати деякі з них разом
і йдемо в пару прикладів більш
переконливими, ніж цей.
Отже, дозвольте мені йти вперед тут і відкрити деякі приклади
, Який завжди буде на веб-сайті курсу, а також і
відкрити hello2.
Таким чином, в hello2 тут, у нас є програма, яка робить кілька
речі, але це не робить це настільки ефективно, наскільки ми могли.
Так от він каже: "привіт, світ" протягом однієї секунди, а потім чекає
на секунду.
А потім робить це знову, а потім робить це знову.
Так що, якщо я натискаю на зелений прапор, Scratch говорить: "Здрастуй, світ.
Здрастуй, світ.
Здрастуй, світ ». І це, очевидно, кандидат в даний час для
поліпшення.
>> Що таке незначне поліпшення, сподіваюся, ми можемо
Тепер зробити, якщо до подряпин підтримує концепцію?
Свого роду цикл.
Деякі види повторення, зараз, було б добре, тому дозвольте мені
насправді спробувати.
Дозвольте мені насправді піти і перемістити це.
Таким чином, повідомлення може відокремити блоки так само легко, як ви можете додати в
прикріпіть їх.
Відпусти мене під контролем, прокрутіть вниз тут, і дійсно,
Тобто цей шматок головоломки тут, повтор і назавжди і
Якщо назавжди.
Таким чином, є ряд способів вираження циклічних конструкцій
У Scratch.
Той, який я, ймовірно, хочете тут не назавжди, тому що я тільки
хочемо, щоб це сталося три рази, але, ймовірно, повторити.
Отже, дозвольте мені повторити перетягнути сюди, і перетягніть його, та
Тепер замість того щоб сказати "привіт, світ" три окремих рази,
Дозвольте мені перетягнути цей паззл тут.
І хоча вона не вписується, програма розумний
достатньо, щоб зрозуміти воно буде рости, щоб заповнити, так що це
форму, що матерія і не абсолютний розмір.
Дозвольте мені змінити повторень до трьох, а тепер відпустив мене
вперед і перетягніть Зачекайте одну секунду там же.
Це буде вистачати в а, і тому зараз я збираюся перетягнути
ці хлопці тут і просто викинути їх, тому що я
не потребують їх більше.
Дозвольте мені масштаб і натисніть зелений прапор зараз, і ми маємо
ту ж програму, але, як я і передбачав раніше, краще
розроблений, тому що ви можете собі уявити, як погано це програма
отримали б, звичайно, естетично, якщо б вам довелося
почати копіювання і вставка, копіювання і вставка, або
перетягуванням ж штопати речі знову і знову.
>> Тепер, просто говорю речі на екрані, друк
Екран, насправді все не так цікаво, так давайте відкриємо
третій дисперсія тут.
А тепер, як ви побачите, це буде швидко дратувати -
[MEOW]
DAVID Малан: - але це теж мило.
[MEOW]
DAVID Малан: Добре, так краще, і ми, безумовно, може використовувати це
ж перехід відривів до цього в цикл
структури, але давайте зробимо його ще більш цікавим.
>> Дозвольте мені йти вперед і відкривати 1/4 дисперсія тут, де я
приймати речі один крок вперед.
Таким чином, у відповідності з цим, нерозумно, хоча це на перший
погляд, те, що ця програма збираєтеся робити?
Це буде нявкати раз.
Чому?
Ну, один є, наскільки я знаю, завжди менше, ніж два.
Там немає поняття випадковості тут.
Я буквально жорстко один і два, але це
Наприклад, зараз у насправді з допомогою логічного виразу.
Багато чого подобається, як Йосип зробив у своєму псевдокоді, відступи, якщо
Ви знайдете шкарпетки потім виконайте такі дії, тут ми маємо
Якщо один вираз менше, ніж два, то -
а насправді у нас навіть є трохи відступів,
де фіолетові злегка відступом праворуч -
Тоді ви будете грати звук няв.
Тепер, в цьому випадку, що один завжди менше, ніж два, так що це
це свого роду марна трата стані.
Але ми зможемо, як ми побачимо, для підключення інших речей в
ці заповнювачі, де один і два зараз.
Отже, давайте просуватися до прикладу п'яти з цих декількох
вітань і подивитися на те, що ця програма буде робити.
>> Так що тепер, в англійському реченні, як робить це
Програма себе вести?
АУДИТОРІЯ: нявкає половину часу.
DAVID Малан: половина Meow за часом, так що це спосіб
передачі дуже проста ідея.
Хоча ми, трапляється, використовуючи деякі нерівності тут
в деяких номерах, це дійсно тільки комуністичної програми
До речі, точний спосіб, сказати, якщо монета впаде орлом, перейдіть
попереду і нявкати.
Або навпаки, якщо монета впаде хвости, не нявкають.
І в цьому випадку, як ми можемо висловити це?
Ми вибираємо випадкове число від 1 до 10, і якщо це
число менше 6, йти вперед і нявкання.
І як же це сюди потрапили?
Ну знову, зауважте, просто перетягнувши і
речі клацання.
>> Отже, тепер давайте подивимося, якщо це випадковість працює.
Дозвольте мені йти вперед і натисніть зелений прапор.
[MEOW]
DAVID Малан: Добре.
[MEOW]
DAVID Малан: Добре.
Гаразд, добре, так що ми отримали голови, голови, хвости ефективно.
Хвости.
[MEOW]
DAVID Малан: Heads.
[MEOW]
DAVID Малан: Відмінно.
Це завжди ніяково, коли тільки статистично ви отримуєте поганий
бігати, і все це головах, і програма насправді не
працювати як можна було б сподіватися.
Але на цей раз він працював, і ми, здається, є, якби ми зробили
це нескінченне число разів, 50% шансів.
Тепер знову ж таки, не все, що цікаво, тільки роблячи кішок
няв, так що давайте подивимося, якщо ми не можемо просунути цю трохи далі
тут, в шостій версії.
Отже, тепер у нас є дійсно дратує версії -
[Нявкати кожні кілька секунд]
DAVID Малан: - і це те, що відомо, взагалі, як
нескінченний цикл.
>> Так нескінченний цикл у цьому випадку погано себе почуває.
Це безперечно збираюся почати звучання погане, і ще нескінченне
Петлі не завжди погано.
Чи можете ви пригадати контекст, в комп'ютерних програмах, де потрібно
насправді хочете нескінченний цикл?
Так?
АУДИТОРІЯ: Якщо ви хочете, щоб перевірити стан.
DAVID Малан: Добре, якщо ви хочете продовжувати перевіряти стан?
Як що?
АУДИТОРІЯ: [нерозбірливо]
DAVID Малан: Добре, добре, так що якщо у вас кілька програм, деякі
вид домашньої автоматизації річ, де ви хочете, щоб постійно
Монітор щось випадку.
Чи є світло?
Є світло, тому що, може бути, у вас є таймер, і
Ви хочете, щоб піти, вам доведеться щось робити
знову і знову.
І справді, говорячи про таймери, кожен з вас, хто
Годинник на комп'ютері або цифровий годинник, це
нескінченний цикл.
Він продовжує оновлювати часу, тому що він постійно
перевірка і перевірка та перевірка є час змінилося,
і якщо так, о, мій бог.
Годинник, нарешті, змінився.
Він повинен показувати, що цінність для вас.
Таким чином, у той час як більшу частину часу нескінченні цикли є помилкою,
або принаймні поганим рішенням дизайну, іноді вони не роблять
мають свою цінність.
>> Ну, давайте рухатися далі тут, щоб hello7.
Так що тепер програма буде отримати трохи більш інтерактивним.
Дозвольте мені збільшити тут, і знову, це те, що приємно
Про Scratch.
І ми будемо використовувати це, щоб бути ясним, Scratch, тільки сьогодні і в
Проблема наступного тижня встановлені.
Але в понеділок, ми зануритися в С. У цій програмі, це так,
назавжди, в наступному.
Якщо торкатися покажчик миші - тепер, хто
контексту тут?
Ну, і зауважив, що хто обраний тут внизу
Справа знаходиться кішка, спрайт один, так що ці сценарії, це
Програма, ставиться до нього спеціально.
Так що, якщо кішка дотику покажчика миші, то це буде
щоб грати в цю вниз і чекати дві секунди, і
потім повторити до нудоти.
>> Так що давайте йти вперед і вдарив гру.
Нічого не відбувається, але якщо я хочу, щоб погладити
Кішка тепер, я можу просто.
[MEOW]
DAVID Малан: чарівні.
[MEOW]
DAVID Малан: Гаразд, менше дратує, але також отримує нудно,
так що давайте рухатися далі і подивитися, якщо ми не можемо вводити
трохи більше логіки.
Це був приклад сім.
>> Тут у приклад вісім, ми збираємося
ввести ELSE стані.
Так багато, як буквальне розвилці доріг, в яких ви можете піти
вліво або ви можете йти прямо, стан, при програмуванні
мову, як Scratch, або, як ми побачимо, C, може дозволити вам
йдуть в одному напрямку або іншому через IF ELSE побудувати.
Так що цілком буквально, якщо дотики покажчика миші, це
гратиме якийсь звук, інакше він буде грати цю друга
звук, нявкання.
Тепер, якщо ви можете укласти з назви ці звуки, ви можете
напевно, здогадалися, що ця програма призначається, щоб викликати в уяві
ідеї.
Ця кішка нявкає щасливо.
[MEOW]
DAVID Малан: на щастя, але не
дуже хотів бути порушені.
[Реве]
DAVID Малан: Отже, тепер у нас є кіт, який буде кричати на вас.
>> Гаразд, добре, один останній приклад з кішками тут, і
Давайте відкритої версії дев'яти цьому тут.
Отже, тепер у нас є наступна самим дратівливим звуком, що я міг
знайти, тому ми повинні моржа або морського лева, хто збирається
виконайте такі дії.
[SEAL БАРК]
DAVID Малан: Добре, так це триватиме, поки ви з'ясувати, як
ця програма працює.
Тому цього разу, ця тварина має два сценарії, і що
Тут цікаво те, що ці сценарії збираються виконувати
паралельно.
Таким чином тому, що вони обидва починаються з одним зеленим прапором натисканні
Це як піти, як це, і обидві програми розпочнеться показ цього
одного разу навіть якщо вони цикл назавжди.
Таким чином, у верхній сценарій, у мене є логіка.
Які функції, які забезпечують там?
[SEAL БАРК]
АУДИТОРІЯ: [нерозбірливо]
DAVID Малан: Якщо це що?
[SEAL БАРК]
АУДИТОРІЯ: Якщо приглушених до нуля, він збирається продовжувати грати
звучало. [SEAL БАРК]
DAVID Малан: Гаразд, добре.
Так що, якщо приглушені, незалежно від цього, ця помаранчева річ дорівнює нулю,
Тоді грати звук морського лева і думати: "О,
привіт, "протягом двох секунд.
Тепер, я не знаю, що це приглушені, але нулю викликає в уяві
Ідея помилкової чи ні.
Так що, якщо приглушені є помилковим, так що якщо не відключений,
продовжувати грати звук.
Гаразд, добре, як ми можемо відключити цю річ?
>> Ну, давайте подивимося на другий сценарій там.
Другий сценарій говорить встановлений приглушених до нуля.
Зверніть увагу, що це також помаранчеві, так що подряпин робить це колір
блоки в той же відтінок, якщо це свого роду
логічно пов'язані між собою.
Так само, як приглушені поповнити був помаранчевим, так відключений тут
згадані в помаранчевому блоці.
Але це значення змінної, так як в
Алгебра, у вас є х, у і г, в програмуванні у вас є
змінних, але вони в цілому -
давайте паузу на мить і зрозуміти, як
щоб зупинити цей гавкіт.
Як мені це зробити?
[SEAL БАРК]
DAVID Малан: Добре.
Він зупинився. Добре.
>> Так само, як в алгебрі у вас є змінні х, у, г, а в
програмування, що мають такі змінні, як х, у, г, як правило,
несхваленням, тому що вони зовсім не виразно.
Вони не мають ніякого смислового значення взагалі, так що в більшості
Мови програмування, змінні можуть мати повну
Опера імена або слова чи фрази, як приглушені, не кажучи
що вони роблять.
Таким чином, це другий сценарій також слухав назавжди, і він сказав,
якщо ключ, Космічні клавіші клавіатури, є
натисканні знак питання.
Так що стан з логічного виразу, що це
збирається відповісти на питання, або правдиво чи брехливо,
то у мене всередині нього, якщо простір натисканні клавіші
Якщо приглушені дорівнює нулю, встановлені приглушені до одного, ELSE встановити приглушених до нуля.
Таким чином, це інший розвилці доріг, і зверніть увагу, як я
вкладеними два, якщо умови, є способом перевірки є
Пробіл натиснутою, тому що якщо це так, я або хочуть йти цим
так чи так.
І як я можу Інвертувати значення приглушені?
Я повинен перевірити це нуль?
Якщо так, то це одне, інше зробити це нуль тому перемикання
своїх двох держав.
>> Гаразд, у нас є то деякі з цих фундаментальних
конструкціями.
У нас є логічні вирази, і розумію, теж, ці
Не все, що незнайомі.
У самому справі, ось швидкий скріншот з Гарвардського курсу CS50
торговий інструмент, і будь-який веб-сайт, що там є прапорців
і падіння падіння, дійсно, все це час, використовують
Логічних виразів.
У цьому випадку тут, якщо ви встановите прапорець поруч із
Звичайно більше або дорівнює 4,5, або ж поруч з
факультет, ви вказуєте логічне вираження.
Покажіть мені курсів, для яких цей вираз істинно.
Або мають рацію, не конфліктує з курсів я
приймати, якщо це перевірили, то так, ви хочете перевірити
що умова, що ви хочете, щоб його ігнорувати.
Таким чином, логічні вирази є свого роду все навколо, але коли
ми ставимо їх в умови, якщо чи умови, якщо
Ельсес, або ми можемо навіть імітувати глибокий
рівнів, IF ELSE IF ELSE -
так що це свого роду потрійний держави.
Ви можете йти по цьому шляху або так чи так.
Ми можемо зберегти вкладення речей, щоб піти в різних напрямках.
>> Так подряпина ці петлі, як Forever.
Вона має наступні функції, такі як Повторити 10, деякі
кінцеве число раз.
У нас є можливість зараз, щоб встановити змінні, тому в даному випадку
Я оголосив, наприклад, змінна звані шкарпетки.
Я ініціалізується в 0, і це ще один напрямок
ми могли б взяти тут з Йосипом, якому, можливо, я
просто відстежувати, скільки шкарпеток у мене є, і припинити
програми, коли значення цієї змінної дорівнює 2.
Це був би ще один спосіб роду узагальнення, що
проблеми і робити щось знову і знову.
Ну, давайте йти вперед і тепер ввести пару нових речей.
Так що ті з вас, до програмування досвід буде
Відомо, що багато мов мають масиви або вектори або
списки, і дійсно, подряпина щось подібне до цього, теж.
Отже, давайте подивимося, якщо ми не можемо взяти речі на наступний рівень тут.
Якщо у мене є можливість, то тепер, з цими шматочки головоломки, щоб
щось додати, наприклад, слова або числа, змінної, я можу
починають накопичуватися речі.
І це насправді дуже до речі такі речі, як гри,
рольових ігор, де ти ніби ходити
деякі фантазії світу, збираючи речі, збираючи речі,
заробляти очки, і тому подібне.
Ви можете слідкувати за якийсь інвентар, і
Дійсно, це те, що один з наших колишніх студентів тут зробили з
те, що називається Fruitcraft RPG.
>> Отже, дозвольте мені йти вперед і відкривати цю річ тут, і в
Fruitcraft, у нас є цей світ догори на вершину.
Отже, дозвольте мені йти вперед і натисніть зелений прапор.
Зверніть увагу на лівий верхній є свого роду інвентаризацію.
Це здійснюється в подряпинам як те, що ми називаємо масиву або
список, і тепер у нас є ця маленька анімація.
Так само, як ми почали раніше з цією історією любові печиво,
і тоді ми просунулися на кішок і морських левів, тепер ми можемо
речі, які є ще більш інтерактивним.
І цей маленький блакитний хлопець, я можу почати рухатися навколо його
трохи тут як вдома.
Так це виглядає, як ніби він отримав вихід тут, тому я використовую
клавіші зі стрілками, вгору, вниз, вліво-вправо.
І тепер я зовні, так нехай те, що я потрапив сюди.
Схоже, помаранчеві, і дійсно, як тільки я торкаюся
помаранчевий, він отримує гепнувся в моєму інвентарі.
Якщо я йду сюди, щоб вишні, тепер у мене є дещо
решта в моєму інвентарі.
І це все красиво і мило, але думати про те, як тепер, це
реалізований.
Ну, у нас це поняття списку, і це очевидно
паззл, що ви тільки що сказали, що ви хочете додати до цього, додайте
апельсина, додати вишні.
Тепер, те, що ця маленька синя хлопець робить?
Ну, він спрайту.
І мабуть, помаранчевий і вишні -
вони самі були окремі спрайт.
І, використовуючи умови в логічні вирази,
Студент був, ймовірно, в змозі висловити Якщо синій хлопець
торкаючись вишні потім додати слово вишня його
інвентаризації, а потім і приховати вишні спрайту.
Таким чином, під капотом, там, ймовірно, як і раніше є вишня
спрайт там.
Ми тільки що сказали, щоб він став ефективним невидимим.
>> Тепер, якщо я продовжувати йти сюди, ми також можемо це зробити
проксимального річ, куди я можу піти і прочитати знак.
Таким чином, якщо сині хлопець торкаючись знак, ми можемо це сказати блоку
так само, як кішки говорив з нами в словах, привіт, раніше, "Got
деякі фрукти?
Принесіть його до фруктів місце ". Гаразд, так і тепер, мабуть,
У мене є напрямки.
Я можу піти сюди, щоб плоди місце, вирівняти себе в порядок
з дверима.
Так от, я тут.
Я можу підійти до людини за стійкою.
Він виявляє, що я поряд з ним, тому він не повинен бути
зовсім однаково зворушливо, і я виграв.
Так що у нас є Fruitcraft RPG.
>> Таким чином, ми можемо зробити речі ще більш просунутий, ніж це.
Ми можемо додати звуки.
Ми можемо додати псевдо випадковості.
Ми можемо додати складності.
Дозвольте мені йти вперед тут, і замість того, робити це сам,
Дозвольте мені показати вам одну з більш складних уявлень
ми отримали в минулому році від певних якийсь Блейк.
Може в нас є один доброволець, який зручно з'являтися на
камера і є для граєте в гру?
Як щодо прямо там?
Піднімайся.
Гаразд, так що гра, яку ви тільки що несвідомо
зголосилися грати -
[Оплески]
DAVID Малан: - це щось з минулого називається
"Frogger". Як тебе звуть?
RENDA: Ренді.
DAVID Малан: Redna?
RENDA: Це як Бренда з б.
DAVID Малан: Добре, Ренді.
Давид.
Дуже приємно.
>> Так от в "Frogger", і якби ми могли збільшити гучність тільки
небагато, ви це маленьке
Зелена жаба на дні.
Ви можете використовувати вліво, вправо, вгору і вниз, і ваша мета полягає в
перейти вулицю, перетнути річку, і доторкнутися до лілії
у верхній частині.
Aw.
Ще один т -
повтор, все гаразд?
Давайте хіт зупинки.
Ніхто не бачив цього.
[Оплески]
DAVID Малан: Так.
Дуже добре зроблено.
Відмінно, спасибі.
>> Так що не було Frogger. Тепер, коли ви знаєте, що у Вас є
отримав собі в ще один волонтер для різних
гра представлений іншим студентом.
Ви хочете, щоб прийти на вгору?
Як тебе звуть?
RICHARD: Річард.
DAVID Малан: Річард.
Все в порядку, Річард, давай вгору.
[Оплески]
DAVID Малан: у вас є щось, що буде звучати
знайомий найближчим часом, так що тут ваші вказівки.
Таким чином, в даний час деякі шматочки головоломки збираються для прокрутки вгору
з екрану, які виглядають як зліва
або вправо вгору або вниз.
Ви будете мати, щоб вразити стрілки таким чином,
, Що відповідає тим шматочки головоломки шикуються в чергу з
заповнювачів на вершині.
Тому, коли ви бачите стрілку вліво, і він на одній лінії з лівого
стрілку, натисніть ліву стрілку.
Ви можете почати.
[MUSIC - "сильніше" Kayne WEST]
DAVID Малан: Все правильно, великий вибух оплесків для Річарда.
[Оплески]
DAVID Малан: Дуже добре зроблено.
Спасибі.
[Оплески]
>> DAVID Малан: Так весело і, мабуть, свого роду
страхітливо, як це може бути, щоб здійснити те, як
здавалося б, складні, як це, розумієш, що студент
не ставив перед собою і просто написати це все відразу.
Замість цього, ви можете зламати проблема, як здавалося б, складні
як це в набагато менших шматків, і це теж
буде темою.
Найгірше, що ви можете зробити в написанні програми в більшості будь
мову, щоб сісти, стати дійсно збуджений, написати
всю цю чортову річ, а потім просто сподіваюся, що це працює,
раз, коли ви закінчили писати.
Швидше за все, процес програмування як правило, повинні
дуже навмисним, дуже ітераційний, в якому ви просто
встановлені дуже маленькі кроки для себе, маленькі шматочки
Ви хочете, щоб відкусити, і так, що у вас є ці розсудливості
чеки, мало віхи ви можете зустрітися.
А потім побудувати на вершині тих, для створення більш
складні речі досі.
>> Так, наприклад, як ми могли б йти про
здійснення такої гри?
Ну, чесно кажучи, я б, звичайно, почати з тільки що
підтримка одного ключа одночасно.
Давайте просто реалізувати підтримку зі стрілкою вліво.
Таким чином, студент повинен був якимось чином створити в Photoshop, або в
Подряпина себе за допомогою маленького графічного редактора,
стрілкою, яка виглядає як один в лівому верхньому кутку є, просто
сірі рамки.
Тоді студент повинен був з'ясувати, що ж, у координата
покласти його, куди покласти його у вікно.
0, 0, тут, так що ви повинні з'ясувати кількість
пікселів, або точок, щоб компенсувати те, що стрілка від
у верхній частині екрана.
А потім одного разу, що знаходиться в місці, ваша програма насправді не
нічого робити, так що ви тоді потрібен другий спрайт, для
Наприклад зеленою стрілкою, який також вказує ліворуч, та ви
Потім необхідно, щоб почати писати кілька сценаріїв для цього.
>> А ви помітили, напевно, що ці речі стали приходити в
різних швидкостях, а кольори були в різних
місцях, і це тому, що студент використовував небагато
псевдо випадковості.
І псевдо-випадковість, я просто означає вибрати номер
між чимось і чимось, тому що ви можете
починають карті речей, як якщо число від одного до
п'ять, ну, давайте зробимо річ зеленого кольору.
Якщо це між 6 і 10, давайте зробимо паззл
замість червоного.
До тих пір, поки у вас є спосіб створення свого роду
випадковістю, ви можете приймати рішення, грунтуючись на тому
випадковість.
І я постійно говорю псевдовипадкових тому що є
маленький брудний секрет.
Комп'ютери не можуть придумати випадкових чисел.
Вони можуть робити тільки те, що вони сказали, тому що
вони техногенних пристроїв.
Вони не можуть просто вгадати число, як ми, люди,
відчуваю, що ми можемо.
Комп'ютер повинен зробити щось математичне, пробуджуючи
Ілюзія математичні числа, іноді з використанням
Поточний день час як внесок у з'ясування того, що
Число повернутися, але про це іншим разом.
А зараз просто знаю, що ми можемо створити псевдо випадковості.
>> Тому, як тільки у мене є здібності до стрілку вліво, щоб почати
з'являються в різний час і з різною швидкістю, то
Я можу повернутися і додати деякі з них, якщо умови.
Якщо це спрайт торкаючись іншого, і стрілки вліво
клавіша була натиснута -
так три умови в цьому випадку.
Я можу використовувати, що і блок, можливо, в цьому випадку -
Тоді я хочу, щоб йти вперед і збільшити рахунок.
І на вершині, у нас є рахунок, у нас є Awesome,
Круто, добре, і Бу.
Так що мабуть п'яти змінних, що цей студент
використовується для відстеження цих різних показників.
Коротше кажучи, кінцевим результатом є дивним.
Це весело, це цікаво грати, це залучення, але це не
де студент почав.
Він або вона почалася набагато менший набір кроків.
>> Так що деякі інші блоки, які ми можемо
переплетення в цих програмах?
Ну, ось це інше поняття у більшості мов,
Подряпина серед них, відомий як потоки.
Таким чином, комп'ютер може насправді дійсно не зробити кілька речей
Час, принаймні, не зазвичай.
Швидше за все, комп'ютер зазвичай має тільки один процесор, і навіть
хоча комп'ютери супер швидко і може, таким чином,
створити ілюзію робити кілька речей одночасно -
перевіряючи свою пошту, отримувати миттєвий
Повідомлення, друк документ -
дійсно, комп'ютер просто стрибати від друку на IMing
до електронної пошти, тому і назад і вперед і назад так швидко, що ми
повільним кмітливі люди просто не розуміють, що це насправді
запуску цих програм трохи за один раз.
Тепер, це трохи білого лежать в ці дні, тому що, в даний час,
багато наших комп'ютери є так звані багатоядерні, так що ви
один процесор, але кілька ядер, які ніби як
наявність декількох процесорів.
>> І тому іноді, комп'ютери дійсно може зробити кілька речей
в той час, але в цілому в рамках програми, програми
покладатися на ці речі називаються потоками.
Таким чином, потік зразок мініатюрної програми, яка може
існують поряд з іншою мініатюрний програми і може працювати
Паралельно, або принаймні може працювати в ілюзії, що
вони працюють одночасно.
Так подряпин підтримує ці речі називаються потоками.
Ви можете мати кілька сценаріїв виконання відразу ж, як ми
зробив з морський лев, і це дозволяє нам насправді
тобто взаємодія між цими спрайтів.
Дозвольте мені йти вперед тут і потягніть вгору, скажімо, потоків і
грати в цю наступним чином.
У нас є два спрайту, кожна з яких ми побачимо,
має тільки один сценарій.
І ви помітите, як видається, деякі розвідки в
Кішка в цьому, тому що він стає ближче -
[Реве]
DAVID Малан: - і ближче до маленької птиці.
>> Отже, як птах операційної?
Що ж, давайте подивимося на птицю в першу чергу.
Птах сценарію сказав, коли зелений прапор натискання, перейдіть на х
дорівнює негативною 115 і у дорівнює 150.
Так що я просто зрозумів, випадкове місце, де я хотів
Птах, щоб почати, і я просто гепнувся його там за замовчуванням.
Тоді назавжди, якщо не торкаючись кішки, так що це інша
вид циклічної конструкцією, але та ж ідея, зробити це знову і
знову і знову.
До тих пір, поки ви не торкайтеся до кішці, перемістити три кроки, і
якщо ви знаходитесь на краю, відскік, де це свого роду
відображення в тому сенсі, більярд.
Так от, як птах рухається навколо вигляді
здавалося б, випадково, але це тільки тому, що він відскакуючи
Стіни в цьому випадку.
>> Тепер кішка, між тим, це свого роду обман.
Кішка, коли зелений прапор натискання, так, починається в
деякі місця, випадковому місці -
принаймні частково у відповідності з вибором
випадковий зелений блок там -
, А потім назавжди, якщо торкатися до птаха, грати лева звук,
а потім зупинити сценарій.
Так що, коли я сказав, припинити або до виходу, тобто головоломки
шматок в подряпин, що буде просто вбити програму на що
момент, тому що це свого роду логічно зробити.
Але з іншого боку, ось, зверніть увагу на те, що станеться.
Точка в сторону птиці і один крок.
Так що цей момент до птаха це свого роду перевага кішки
є в тому, що це самонаведення на рухому птицю, і ми можемо
Зараз роблять цю програму ще цікавішою.
Замість переміщення на один крок за один раз за цикл процесора, на
вдарити дзвінком, так би мовити, дозвольте мені йти вперед і
рухатися, скажімо, п'ять кроків, в той час, як кішка.
Виберіть пункт Виконати, і тепер він дійсно вважає його швидко.
Якщо ми подвоїмо цю далі 10 кроків, вона як би йде
Право на нього.
Тепер ми можемо дати птахові,
Можливо, трохи переваг.
Підемо до птиці і сказати замість переміщення трьох кроків,
давайте рухатися йому 30 кроків.
Але він все одно був спійманий в кінці кінців.
>> Так от, у нас є дві теми.
Він поміщений в подряпин з двома сценаріями і два
спрайт, але ідея на інші мови, що ви можете
писати, по суті, дуже багато програм, як це і є
їх працювати по-справжньому, або мислимо, паралельно.
>> Тепер, є також ця концепція в програмуванні відомо як
подій, і це те, що ми не побачимо в C,
мову, відомий як С. Ми побачимо ближче до кінця семестру
в веб-програмуванні, коли ми введемо JavaScript і
Поняття будівля веб-сторінок, які є динамічними і взаємодіяти
з користувачами.
Таким чином, в цьому випадку, у нас є дуже простий приклад двох
спрайт, хлопчик і дівчинка, кожен з яких мають свої відповідні
теми, але чомусь ці два взаємо-зв'язок шляхом
того, що називається подіями.
Отже, дозвольте мені йти вперед тут і збільшити на сценарій хлопчика,
який виглядає наступним чином.
При натисканні зелений прапор, назавжди зробити наступне.
Якщо ключ простір, або пробіл, натискання, скажімо,
Марко протягом двох секунд, це чисто естетична на
екран, маленький пухирець мови, але потім в ефір.
>> Таким чином, трансляція інший подряпин шматок, що це
Представник класу функціональність в програмуванні
, Що дозволяє різним програмам, різні теми,
Інтер-зв'язок, щоб хоч якось відправити
повідомлення, одне на інше.
Переходячи папірець в класі є свого роду низьких технологій
еквівалентні.
Таким чином, трансляція події.
Я можу відправити це повідомлення, і слова події
є абсолютно довільним.
Подряпини іноді це падіння падіння, так що я просто підійшов
з випадковим словом, як подія, тому що зараз, що хлопчик робить
коли я натискаю на ключ, він передає цю подію.
І якщо я тепер подивіться на сценарій дівчини, її сценарій
супер просто, тому що все, що їй потрібно зробити, це не діє, коли
зелений прапор кнопки.
Вона призначена для дій, коли вона отримує цитата, кінець цитати,
"Подія", і в цей момент, вона слухає, отже, для
так звані події знову і знову.
Як тільки вона одержує цьому випадку вона буде кричати
Polo протягом двох секунд.
>> І тому ви, можливо, може вивести з цього, що саме
Наступний результат буде.
Дозвольте мені клацніть зелений прапор.
Нічого не відбувається, тому що мені потрібно робити?
АУДИТОРІЯ: Space Bar.
DAVID Малан: Space Bar.
Хлопчик говорить Марко Поло каже дівчина.
Але це не жорстко як такої.
Це взаємо-зв'язок між скриптів, так що тепер ми
є можливість зробити ще більш складні програми, в яких
ці двоє якось між спілкуванням.
>> Отже, у яких напрямках ми можемо прийняти це?
Ну, в задачу безліч 0, дійсно, мета полягає в тому, щоб
весело провести час з нуля.
Для хакером видання, ви будете отримувати задоволення, а не з більш
складна версія подряпин називається BYOB, зборки
Власні блоки, але ідея та ж.
Ви зможете -
Так, це було навмисно.
Він прийшов з Берклі.
BYOB це версія хакер видання цього, але обидва
, Демографії, Standard Edition та хакерських видання, так
Мета під рукою протягом найближчого тижня насправді просто пірнути в
глибоко, щоб ваші руки брудні з програмуванням, і зробити
щось цікаве, щось зробити інтерактивним, щоб
щось художнє, зробити щось весело насправді
продемонструвати, так що до кінця тижня, ви будете мати проект,
не тільки для вашого першого CS50 PSET, але ви повинні будете
дещо, що ви можете показати в Annenberg до
друзів або навіть сім'ї, завантаживши його на сайт Массачусетського технологічного інституту.
І так, як я сказав у середу ми очікуємо, що 90% класу,
загалом, робити стандартні видання.
Зрозумійте, що є також це вихід для тих з вас, хто
в іншому випадку могли знайти собі трохи нудно з основами
і дійсно хочете вивчити і виробити бачення у вас вже
Тобто з попереднього фон в цьому більш дружнім
навколишнього середовища.
>> Отже, дозвольте мені підтягнути ще один приклад, що один з наших колишніх
Тут студенти зробили і трохи розповісти щось через пісню.
Це так само, як це грає, думаю про те, як ви йдете з приводу
реалізації цієї програми за допомогою саме цих же
будівельні блоки, трохи псевдо-випадковість, а
Трохи знайому пісню.
Якби ми могли збільшити гучність трохи?
[MUSIC - "це Raining Men" Weather Girls]
>> DAVID Малан: Ось саме для CS50.
Ми будемо бачити Вас в понеділок.
[Оплески]