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