[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. Мы будем видеть Вас в понедельник. [Аплодисменты]