[Играет музыка] Джейсон Хиршхорн: ОК, все. Добро пожаловать в раздел. Это CS50, наш очень Первый супер раздела. Как вы все знаете, на следующей неделе регулярные разделы начнет, но на этой неделе мы все вместе. Существует сам. Меня зовут Джейсон. Я преподаватель информатики. У нас есть Энди, кто тут глава ТА CS50. И Scaz, профессор Брайан Scassellati, он профессор в области компьютерных наук. Мы являемся CS50 руководители в Йельском университете. Вы всегда можете связаться с нам heads@cs50.yale.edu. Мы будем на лекциях. Мы будем в рабочее время. Если когда-либо, что мы можем сделать для вас все, что вы должны, не стесняйтесь обратиться к нам. Так что мы будем делать сегодня? Или до этого, что идет на этой неделе? Так приемные часы: понедельник, вторник, Среда, четверг и, с 8:00 до 11:00. Там же график на сайте. Разделы, как я уже упоминал, начинают следующей неделе. И вы найдете на этой неделе, что Время вашего раздел, в какой день это, и кто ваш ТА. Проблема Set 1 производится при четверг на полдень, в пятницу в полдень с конца дня. Да, у вас есть девять дней поздно. И есть девять домашних заданий. А может использовать только один в конце дня за проблемы набора. Да, в сущности, все проблемы наборы из-за пятницу в полдень. Вот и все. Все, что детали на программе. Каждую пятницу, у нас есть обеды. Мы хотели, чтобы этот большой Конечно чувствовать себя немного меньше. Таким образом, вы всегда можете RSVP. Бесплатный обед с коллегами одноклассники и сотрудники. cs50.yale.edu/rsvp. Все эти вещи, которые У меня на экране, и больше, вы можете найти cs50.yale.edu или cs50.harvard.edu, если вы идете в Гарварде и смотреть это онлайн. Кроме того, на этих веб-сайтов, там тонна ресурсов для вас. Каждый лекция не только видео лекции, но также отмечает,. Кто-то будет смотреть лекции и делать заметки для вас. Таким образом, вы можете просто заплатить внимание в ходе лекций, или вы можете использовать свои заметки / Наши отмечает дополнить свои собственные заметки. Есть горки в Интернете. Источник code-- все Дэвид переходит в лекции, или Scaz переходит лекции, что Исходный код доступен онлайн а также, как как и я, упомянул видео. Разделы, также, все будет снят. Все эти слайды будут доступны. Все, что код будет быть доступны для вас. Есть шорты на сайт, где Сотрудники CS50 провести пять до 10 минут, проходящие через темы для вас. Некоторые из тех, вы уже встречаются в проблемных множеств. Офисные часа, как я упомянул, понедельникам через четвергам, с 8:00 до 11:00. CS50 исследование представляет собой фантастический ресурс. Есть проблемы практики, образец слайдов, известные ошибки что студенты любят бежать в, для каждого существу тему мы будет охватывать в этом процессе. И, наконец, на этом слайде По крайней мере, Reference50 которая дает вам информацию на все функции C Вы могли когда-либо возможно надеюсь использовать и многие, многие другие. Опять же, точка точка точка на в нижней части экрана это указывает, что есть даже больше ресурсов на этих двух сайтах: cs50.yale.edu, cs50.harvard.edu. Итак, что мы делаем сегодня? Ну, во-первых, я собираюсь дать вы посмотрите на ресурсы. Уже сделал это один. Посмотри на нас. Теперь, мы собираемся перейти на типы данных и операторы в С Затем Энди придет сюда и перейти библиотек C, Е (), функция, с которой вы уже знакомы или быстро станет очень знакомые. И вы также перейти условные и петли. И, наконец,, Scaz пойдут на CS50 ID. Если вы не нырнул в уже в задаче Набор 1, а также как использовать Команды терминала и полезные а затем дать вам несколько демо и практика кодирования в CS50 ID. Прежде, чем я прыгнуть в эту Содержание на этой стороне, Кто-нибудь есть какие-либо вопросы до сих пор? Отлично. ХОРОШО. Изменение передач. [Переключения передач] Это был я сдвига передачи в ручном автомобиле. Так типы данных в C, вы не можете просто переменная х и он будет на линии 10, целое число, может быть, номер 1, в строке 20, десятичное число 10,5, а затем пару строк позже строка, я люблю CS50. В C, переменные могут быть только Одно дело, и только одна вещь. И поэтому вы должны дать им типы. И на этой доске, мы есть список типов. Есть символы, которые для обозначения знаков. Так вот одна буква А, B, C, Д. Это также может быть пространство, или, что также может быть новая линия характера. Есть целые числа, которые просто номера, вся numbers-- или целые rather-- но нет знаков после запятой. Для знаков после запятой, у нас есть чисел с плавающей запятой. Числа с плавающей точкой являются числа знаков после запятой. Тогда есть жаждет, которые существенно больше числа. Вы заметите, что долго 8 в то время как INT 4. Я вернусь к этому в секунду. Это потому, что жаждет может хранить еще больше, чем целые Int может хранить. Двухместный длинный поплавок. И, наконец, у нас есть Строка, которая является типом что вы, вероятно, использовали раньше. Если включить хэштегом # includeCS50.h в исходном файле, то вы можете использовать строковый тип. Это на самом деле не построен в С. Есть несколько других типов, а также. Но это являются главными с который вы будете использовать, и столкнуться. С, как, опять я упомянул, каждый переменная-- его может быть только один тип и один тип только. Это потому, что С является статически типизированный язык, в отличие динамически типизированных языках где, если вы создаете переменную Вы можете изменить то, что хранится в это, как вы идете в вашей программе. Сюда на правой руке сторона, у меня есть разные размеры из этих типов данных в байтах. Таким образом, характер 1 байт. Это 8 бит. И это означает, что из-за 8 биты есть восемь 0 и 1. Мы видели эти демо в первый неделю с того, что бинарные ламп. С 8 бит или 1 байт, мы можем представлять числа от 0 до 255. Правильно. Если все 8 бит 0, это 0. Если первый бит равен 1, это число , и так далее, все, вплоть до 255. И вот почему для символов, которые можно есть, по существу до 255 из них, но это много, чтобы охватить все символы мы должны использовать. Для целых чисел, вы можете иметь 0 и то у вас есть 2 к 32 минус 1. Те, как много вариантов у вас есть для целых чисел. Для долго, у вас есть 0 до 2 до 64 минус 1. Таким образом, вы должны много, много, Дополнительные параметры для длинных. Строки, это знак вопроса потому что это кульминация позже. Да. Я мог бы рассказать все это на краю своих мест, как то, что, что знак вопроса? Это кульминация. Мы в конечном счете охватить размер Строки и говорить больше о строках. Потому что на самом деле строка один из учебных колес мы надеваем в этом Конечно, в начале а затем снять позже на, потому что строки в C фактически являются указателями в символьных массивов. Но, опять же, это Скалолаз на потом. Прежде чем я перейду по любым вопросам, комментарии, вопросы по этому поводу? слайда ХОРОШО. Я должен быть фантастическим, который объясняет. Кроме того, когда вы программируете, Вы собираетесь использовать эти операторы. Действительно простые признаки того, что может сделать простой операции, с которой вы, вероятно, уже хорошо знакомы. Например, в правой сторона, мы видим добавить. Чтобы добавить, вы просто сделать знак плюс. И поэтому вы, возможно, придется двух переменных х и у. Вы можете сделать X + Y в коде. Может быть, вы хотите сказать, вас, целью которых есть номер 7 и 3, Вы хотите, чтобы сохранить, что в переменной называется сумма. Вы можете сделать Int для типа, пространство сумма, название переменной = 7 + 3; Что бы, что магазин в сумме? Кто угодно? Если бы я был в сумме = 7 + 3. Что будет храниться в сумме? Вы можете просто кричать его. АУДИТОРИЯ: 10. Джейсон Хиршхорн: 10! Вот именно. Что о сумме в = 7 - 3, Я просто использовать эту тире знак. Что будет храниться? АУДИТОРИЯ: 4. Джейсон Хиршхорн: 4. Сумма, вероятно, неправильно название переменная, но 4 будет храниться. Для умножения в С, используйте маленький Звезда характер, вы не используете х. Чтобы разделить, использовать вперед Slash не символ разделения. И по модулю, используйте символ процента. Итак, давайте скажем, я хочу, чтобы увидеть INT г = 7% 3, что будет храниться в г? Так, что по существу просить что же по модулю делать? Кто-нибудь знает, что делает модулю? Да. у 4. СПИКЕР 1: Это остаток. Джейсон Хиршхорн: Это Остальная когда вы разделите. Так 7 делится на 3 2 1 остаток. Так 1 будет храниться. Вы сделали вычитание, но это, как это работает. Это то, что оператор по модулю делает. Это займет несколько делит его на другой номер и возвращается к вам остаток. Итак, еще раз, 7% 3 дает 1, поскольку 7 делится на 3 2 1 остаток, и возвращает остаток. Что о давайте вернемся на один шаг до этого знака деления. Если бы я сделал 7 / делится на 3 делает Кто-нибудь знает, что это вернется? СПИКЕР 2: 2. Джейсон Хиршхорн: Почему 2, а не 2.333? СПИКЕР 2: Я думаю, что это сокращает от после целого числа. Джейсон Хиршхорн: Так это точно. В C, если вы деление два числа, разделенные 7 3, он получает ответ, который в этом случае 2.3333 навсегда и он находит, что десятичную точку и рубит все от после запятой и он просто возвращает вам 2. Так что, если я сделал 8 делится на 3. Это на самом деле, мы знаем, что для возврата 2,666, но рубит все от в десятичной, обрезает все, и просто возвращает вам 2. Так 6 делится на 3, 7 делится на 3, 8 делится на 3, все собираемся вернуться к вам 2. Кто-нибудь знает, или предположение, о том, как я мог на самом деле получить полный ответ, если я хочу что десятичной? Да. Преуспевать. СПИКЕР 3: Используйте поплавок? Джейсон Хиршхорн: Что вы имеете в виду? СПИКЕР 3: Потому что вы сказали, Поплавок для чисел [неразборчиво] Джейсон Хиршхорн: Верно. Так, что это совершенно верно. 7 представляет собой целое число. Но если бы я хотел, чтобы превратить это в число с плавающей точкой, Я бы хранить, что а 7,0, так как компьютер действительно stupid-- мы увидели, что с PB и J example-- это будет только делать то, что вы говорите это. Так что, если вы пишете 7, думаю, что это целое число. Если вы пишете 7.0, хотя мы знаете, эти вещи эквивалентны, он рассматривает, что подобно число с плавающей точкой. Так что, если вы сделали 7.0 делится на 3 или разделенная на 3,0, было бы говорить, хорошо, теперь мы имеем дело с поплавками. Я вернусь к вам 2.333333 навсегда. Но на самом деле не навсегда, потому что как мы видели также в лекции, эти числа с плавающей точкой не совсем точным. Так что, если вы хотите, что десятичной, или частью этого десятичной то вы должны use-- один из них должен быть числом с плавающей точкой и компьютер должен понять что это с плавающей точкой вы дело, не является целым числом. Любые вопросы по этой таблице на правая, так далеко? Или ваша левая сторона, ваш слева, с левой стороны. Да. СПИКЕР 4: Хорошо. Для как обычный целые числа, вы бы write-- Вы должны были бы написать плавать? Джейсон Хиршхорн: Да, так. Ну, если вы хотите создать переменная это поплавок, Вы должны сказать поплавок г равна кое-что. СПИКЕР 4: Хорошо. Джейсон Хиршхорн: Но если бы я хотел, чтобы сделать 7 разделенный на 3 и получить, что десятичной, Я хотел бы сделать поплавок г = 7,0 / 3,0; а что даст мне плавающей точкой номер. СПИКЕР 4: Хорошо. Джейсон Хиршхорн: Если бы я сделал что-то вроде INT г = 7 / на 3, что даст мне число, потому что те все целые числа. Имеет ли это смысл? СПИКЕР 4: Да. Джейсон Хиршхорн: ОК. Отлично. Любые другие вопросы о этой таблице? В самом деле? Я так взволнован. ХОРОШО. Таким образом, некоторые другие вещи, которые вы будете использовать, часто в условиях или петель, эти типы operators-- эти типы логических выражений. И, как мы узнали, == является то, что вы использовать, чтобы проверить, если две вещи равны. Так вот я проверяю, если х == у, давайте снова считать, что х 7 лет 3. Так что, если я написал 7 == 3, то, что бы, что вернуться ко мне? Это правда или ложь? АУДИТОРИЯ: Ложь. Джейсон Хиршхорн: ОК. Я чувствую, что каждый может получить это. Таким образом, все, что бы это вернуть? АУДИТОРИЯ: Ложь. Джейсон Хиршхорн: Ложь. Отлично. 7 не равно 3. Так 7 == 3 вернется ложным. Вы есть не знак равенства, так что если я Проверено 7! = 3, то что бы это вернуть? АУДИТОРИЯ: Правда. Джейсон Хиршхорн: Правда. Отлично. Кто-то был очень решительным в спина и ценю это. Тогда у вас есть меньше, чем оператор, меньше или равно оператора, больше, чем оператор, больше или равным оператора. Так что еще здравомыслие проверка. Если бы я был 7 больше чем или равно 3. Что бы это вернуть? АУДИТОРИЯ: Правда. Джейсон Хиршхорн: Правда. Да. Это задней комнате, задняя сторона комнаты, фантастическое. Вы можете комбинировать эти выражения, если вам нравится, а также, с логическим и который && Или логическое ИЛИ который || ||. И вот теперь вы можете проверить два вещи together-- Это смешно? Почему это смешно? Так что, если я хотел, я могу сказать, это 7 больше, чем 3 и 2 меньше, чем 4? Ну, если 7 больше чем 3, что это правда. 2 меньше, чем 4, что это правда. Так все это дело будет возвращена истина. Если я тестировал 7 больше, чем 3 и-- Я просто выбирая случайных чисел here-- 4 меньше, чем 2, хорошо, что это ложь. Так истинным и ложным ложных. А можно пойти дальше, и вы, как объединить многие условия вместе, как вы хотите. Кто-нибудь есть какие-либо вопросы, комментарии, проблемы до сих пор? И я вижу, некоторые из вас съемке Из меня на экране, который я ценю. Надеюсь, это не Snapchat. Надеюсь, это для ваших заметок. Но все они собираются будет доступна онлайн. Таким образом, вы не должны сфотографировать это. Как я уже говорил, все будут доступны в Интернете для вас. ХОРОШО. Я собираюсь получить сцены, так же никого хочу сказать что-нибудь прежде чем это произойдет? Вопросов? [Реле ГОЛОСА] Джейсон Хиршхорн: О, остановиться. Вы, ребята, слишком хорошо. ХОРОШО. Я собираюсь пометить вне. Пойдем. ANDI Пэн: Мы собираемся сделать неловко микрофон изменение в настоящее время. Джейсон Хиршхорн: Я собирается снять это. ANDI Пэн: Цените поддержку, ребята. Ты слышишь меня? Это хорошо? Отлично. Красивая. Позвольте мне просто подвернуть, что в. ХОРОШО. Итак, я собираюсь сделать, как гигант Информация сваливать на вас, ребята, прямо сейчас. И не беспокойтесь, если вообще вы не не после каждого мало линию, что Я собираюсь показать вам. Как сказал Джейсон, все полностью онлайн. Просто мы собираемся, чтобы попытаться ввести все с понятиями покрыта В некоторых из этих горок. Так что просто следовать. Не беспокойтесь, если вы не понимаете все; Однако, если в любой момент Вы чувствуете себя потерянным, поднимите рука, мы не будем останавливаться, не стоит беспокоиться. Круто. Поэтому я думаю, то, что Дэвид уже вроде упоминал в лекции и Джейсон вид ссылался до сегодняшнего дня это то, что библиотека. Таким образом, в программировании, мы должны эти вещи называются библиотеки. Где, по существу, все они просто набор функций, то есть по сути просто код, который уже были написаны кто-то еще, что мы все можем использовать в наших программах. Так как же нормальная Библиотека работа, верно? Вы входите в дверь библиотеки. У вас есть все эти книги, которые вы можете вытащить и вы можете получить доступ к информации в этих книгах. То же самое в программировании. У вас есть библиотека, которая уже были написаны другими людьми. И то, вы можете, программистом или студента, может получить доступ к этой библиотеке через хэштегом #include. Например, в C мы есть три C-- наиболее обычно используется три стандарта C libraries-- ввода / вывода библиотеки, строка библиотека, и математическая библиотека. Таким образом, внутри ваш первый пара проблема устанавливает, Это будут три что вы в первую очередь с помощью. Так как Давид уже объяснил в лекции, стандарт ввода / вывода библиотеки, или стандартный ввод / вывод библиотека именно это и делает. Это позволяет, в коде, для ввода ничего от пользователя и вывода, что на экран, по существу, печати на экран. И так каждый раз при использовании каких-либо функций, Например функция Е (), который мы собираемся перейти на следующий слайд, убедитесь, что включают в себя стандарт ввода / вывода Библиотека, иначе вы не собираетесь быть в состоянии использовать функцию Е (). Потому что вы, как программист никогда не писал эту функцию, вы используете только кто-то Код-либо в вашем собственном коде. Имеет ли это смысл все? Круто. И тогда мы, по существу получить на библиотека string.h и math.h библиотека, .h просто означает библиотеку, другие библиотеки, которые вы в конечном итоге использовать в коде. Тем не менее, для целей этой библиотеки, мы также have-- этого class-- у нас также есть то, что называют библиотеку CS50, cs50.h, где мы, Ваш прочтение создали многие важные и полезные функции. Так что вы, как программист может контрейлерных от то, что мы уже написали, так что эта функция доступна для вас для Вашего пользования. Я буду охватывающих несколько функции обычно используется, но знаю, что это все googleable онлайн. Не стесняйтесь, подтянуть библиотеку CS50 и то у вас есть все функции там. Да. СПИКЕР 5: Так что, если вы не были с помощью программного обеспечения, что предоставляется нам класс, делает, что означает, что мы должны были бы загрузить и найти этот заголовок файла себя и сказать компьютер, где это? ANDI Пэн: Большой вопрос. В точку. Так как если вы не физически присутствует в библиотеке, нет никакого способа для вас на самом деле пойти и открыть его. Таким образом, одно и то же с Программирование на С, вы должны убедиться, что вы используете наш Прибор, потому что библиотека уже были включены в него. А потом, когда вы хэштегом #include, библиотека там. Да. Хороший вопрос. Все хорошо? Круто. Все в порядке. Итак, мы собираемся, чтобы ударить, существу, то, что первая функция, которая Мы, как программисты собираетесь использовать в нашем коде. Это называется функция Е (). Так, функция Е (), как я уже сказал в последний слайд, входит в стандартную I / O, стандартный ввод / вывод, библиотека. Поэтому убедитесь, что все, что вы using-- ой, дайте мне захватить лазер pointer-- всякий раз, когда вы используете функция Е (), Вы должны включить стандартный ввод / вывод библиотеки или еще, при компиляции, Вы собираетесь получить ошибку потому что компьютер будет как, о, я не знаю, где Е () является, ты не говоришь мне, где Е () является. Ну Е () входит в Standard I / O, так что, когда вы используете Е (), убедитесь, что иметь, что Линия над коде. Так, например, Е () вот функция. Все это делает что-то для печати в скобках для пользователя. Хотели бы кто-нибудь принять удар на каком эта строка кода справа здесь будет распечатать? Следовательно, ответ находится на экране. Кто угодно? ВЕРДИ: Нижняя. ANDI Пэн: Верди, почему бы тебе не пойти вперед и сказать всю заявление? ВЕРДИ: Здравствуйте, меня зовут Энди, и я 20 лет. ANDI Пэн: Ах, милые. Таким образом, в этой линии мы собираемся распечатать, Привет, меня зовут Энди, и я 20 лет, который на самом деле является настоящим заявлением. Синтаксис. Так пара синтаксических вопросов, которые Вы, ребята, хотите, чтобы убедиться, что вы знаете. Цитаты. Двойные кавычки рассказать компьютер, все, что внутри собирается быть напечатаны. Все внутри банки просто, как именно вы будете набирать его, за исключением Обычно в конце концов, мы собираемся хотите включить hash-- о sorry-- тире п. Так тире п. Кто-нибудь хочет сделать предположение на то, что делает, что к нашему коду? Да. СПИКЕР 6: Ставит его на новой линии. ANDI Пэн: Точно. Таким образом, все это делает позволяют все, что происходит после этого, после этого заявления, для печати на новой строке. Так что, когда вы пишете ваши код не случайно есть вещи, прикрепил к концу что вы не хотите. Это все становится аккуратно напечатан одну строку и тогда мы начинаем на следующей строке. Кто-нибудь помнит, что это запятой делает, когда мы кодирования? Да. СПИКЕР 7: Заявление. ANDI Пэн: К сожалению? СПИКЕР 7: Есть ли в конечном заявление? ANDI Пэн: Да. Таким образом, в C, или какого-либо программирования язык, точка с запятой обозначает конец программирования линии. Так, например, в английском языке мы используем период сказать, О, это конец приговор. В программировании, то же самое, у нас есть точка с запятой, чтобы обозначить конец строки. Часто, когда вы начиная программировать, Вы понимаете, что вы забудьте добавить точку с запятой а затем попробуйте запустить свой Код и она не работает. И вы, как Ах, я не знаю, почему, она должна работать. Скорее всего, вы, вероятно, забыл точка с запятой или скобка или что-то где-то. Так, что это важно, чтобы помнить. Круто. Ладно, поднятием рук, как многие люди здесь когда-либо приняты А.П. Компьютерные науки или запрограммирован в Java, прежде чем, когда-либо? ХОРОШО. Прекрасный. Это не будет применяться то, но в Java, вы есть нечто, называемое System.out.println которые не существуют в C. Таким образом, в C, когда вам Чтобы добавить в переменных во что-нибудь Вы хотите распечатать, есть специфический синтаксис мы собираемся использовать. Это называется placeholding-- существу добавить заполнители на месте целого числа или переменной что мы хотим распечатать. Итак, как вы, ребята, можете видеть, что мы включены новый заголовок файла библиотеки здесь. Библиотека CS50. И, содержащаяся в пределах этого CS50 библиотеке общая функция, которую мы будем использовать в нашем курсе называется GetInt (). Хочет ли кто-нибудь принять удар на что GetInt (), возможно, будет делать. АУДИТОРИЯ: [неразборчиво] ANDI Пэн: К сожалению. Вас не слышу. Мэдди, кто. Мэдди: О, это побуждает Вы для целого. ANDI Пэн: Точно. Таким образом, это функция, другой функция, которая уже было написано кем-то другим что мы можем призвать в настоящее время. Все это является побудить вас, как пользователя, для ввода, что вы хотите в качестве кода работает и сохраняет whatever-- в этом случае мы GetInt () - ING, так что означает, что мы получение целое. И мы собираемся хранить что в другое целое число что мы только что сделали под названием возраста. Это имеет смысл для всех? Круто. Так что теперь мы сохранили этот целое, что мы побудили от пользователя, в этой переменной, мы создано типа Int называется возраст, мы можем идти вперед и место что функция в нашей Е (). Таким образом, синтаксис обычно на Е () является что там, где в реальных физических линия вы хотите, чтобы включить эту целое, вы что символ прямо, Символ процента, при этом тип переменной, что вы хотите. Таким образом, в этом случае возраст является целым числом. Таким образом, вы будете включать % я, потому что это целое число. И тогда после вашего Заявление, что вы собираетесь сделать запятую и Имя переменной. Так вот, мы собираемся, чтобы распечатать из, Привет, меня зовут Энди, и я пустые лет. Hashta-- или sorry--, возраст с любой I вход. Так что, если бы я был на ввод 20 для моего GetInt () здесь, было бы распечатать ту же самую вещь. Но, если бы я хотел, чтобы что-то входного еще, как возможно 40 или 45 лет, то вы увидите, что отражение соответственно в коде. Таким образом, это является примером о чем-то, в котором он печатает и выглядит Вы как будто это одно и то же, но под капотом компьютер есть на самом деле очень разные вещи происходит. Круто. Все в порядке. Так что, если мы хотим несколько переменных? Довольно легко. То же самое. У нас также есть новые функции здесь называется GetString (), также включены в библиотеке CS50, что все это делает предложит пользователю для строки, которая просто набор символов, так как приговор или как имя. Таким образом, в этом случае, мы бы два заполнители% S для струнного и% I для целого числа. И мы собираемся следовать что двух переменных мы хотим включены в порядке, что они появляются в предложении. Так, например, меня зовут пустым, я хочу там имя, так что я собираюсь иметь имя первым. А потом после этого, я хочу, возраст, хотят иметь возраст секунду. И поэтому, если я хотел, чтобы ввести, Привет, меня зовут Энди, и я 20 лет. Если я вводятся Энди и 20, Точное же самое будет печатать; Однако, теперь у нас есть двухэтажное переменные имени, а также Int. Да. СПИКЕР 8: было бы возможность работать, если вы перешли имя и возраст, в конце, что? ANDI Пэн: Да. Это действительно хороший вопрос. Так Короче говоря, нет. Потому что имя и то, что age-- тип переменной имя? СПИКЕР 8: Строка. ANDI Пэн: А что тип переменной возраст? СПИКЕР 8: Целое. ANDI Пэн: Так вот у нас есть заполнитель для строки и числа, не так ли? Так что, если вы были, чтобы перейти них компьютер не будет знать. Это происходит для проверки строки, и если вы попытаетесь дать ему Int, это будет, как ждать я запутался, вам сказал мне, что я должен быть выделения памяти для Int. И вот здесь, когда он ожидает целое и вы даете ему имя и строка вместо это также будет очень запутанной, это не будет работать именно так, как вам это нужно. Так вот, называя и синтаксис очень важно для выполнения кода. Все хорошо? Да. Мэдди. Мэдди: Вот, я знаю, мы смотрели на примерах в классе, где они просят что ваш возраст, что ваше имя. Вот, это было бы его doesn't-- если мы должны были выполнить этот код, он не будет просить за это? Но вы просто ввода двух чисел а затем она будет работать, как, что? ANDI Пэн: Да, именно так. Так что, если вы хотели за это дисплей, пожалуйста, введите свой возраст, вы можете просто добавить функцию Е () что говорит, пожалуйста, введите свой возраст, над ним. Это хороший вопрос. Да. СПИКЕР 9: Так, уже будет включены в GetInt () [неразборчиво]. ANDI Пэн: Нет, на самом деле это не так. Таким образом, все это делает только побуждает пустой экран чтобы пользователю ввести что-то. Если вы хотите, если вы хотите, чтобы напечатать что-то, что говорит пользователю, как, пожалуйста, дайте мне свой возраст, то вам придется Е () сами. Потому что каждый использует это функция для различных вещей, Вы могли бы быть хранения возраст, Вы могли бы быть хранения адрес, Вы могли бы быть хранения телефонных номеров. И так это действительно до индивидуальные использования ваших парней за то, что вы хотите, чтобы сказать. Да. СПИКЕР 10: Так, только для разъяснения, где сделать вам ввести название возрасте так, что она показывается в месте% S? ANDI Пэн: Как и в пользователь? СПИКЕР 10: Да, как как я сделать it-- где я положил Энди, и где я могу положить 20? ANDI Пэн: Да. Так что, если вы были на самом деле запустить этот код, Я на самом деле не выполнив Код, это только здесь, прямо сейчас. Если бы я был для запуска кода, я бы скомпилировать код, сделать файл, запустить код, и тогда бы только два места для меня, чтобы ввести его. Да. Вы, ребята, будете видеть, когда вы играете с этим кодом сами. Все права мы будем двигаться в следующем разделе, что мы будем покрытия сегодня. Мы собираемся пойти по тому, что условные утверждения. Так что, если вы, ребята, помните, и вспомнить из лекции, условные операторы, Все они представляют собой набор инструкций к компьютеру в которая, если некоторое условие истинно, Вы выполняете код внутри этого состояния. Таким образом, в основном Scratch-- большой темой с сегодняшнего дня является то, что вы, ребята, уже все видел логику все что мы покрытия. И все, что мы делаем, перевод что-то что было очень интуитивным в Царапины, и трудно его кодирования в синтаксисе мы будем использовать для класса, который С. Так логично, все это было блок является то, что кусок кода прямо там. Да. ХОРОШО. Мы также попасть в, если ... еще заявление, которое является лишь дополнительным слоем сложности в заявлении, если где компьютер занимает взглянуть на это и видит, если это условие истинно, делать все внутри этих двух кронштейнов, else-- так вроде как по умолчанию, если это не соответствует condition-- это сделать. Это как развилки. Если идет дождь снаружи, я положил на дождь куртку, иначе ничего я еще не поставил на дождь куртку. Что логика ли смысл всех? Круто. Все в порядке. Так как жесткий примере это, что мы хотели бы видеть в C если я хотел, чтобы создать Переменная называемые домашние часов. И если домашняя часов меньше чем пять, я говорю Жизнь прекрасна. Это замечательно. Тем не менее, говорят, что борьба real-- что то, что мы все в этот понедельник днем до Наука Хилл вероятно, делает прямо now-- АУДИТОРИЯ: [смеется] ANDI Пэн: Они, как мы будет, спасибо вам за это. То, как мы бы жестко это в С if-- давайте предположим, у нас уже есть переменная типа INT называется домашней часов прямо здесь. Если домашняя часов меньше, чем пять Е (), Жизнь прекрасна. Помните держать / п, потому что Вы хотите новую строку после. Остальное печати, борьба реальна. Понимает ли все, как Я перешел из этого блока в этот блок кода? Круто. Все в порядке. Так что теперь мы собираемся, чтобы взглянуть на несколько операторов, если вообще. Итак, давайте предположим, что Целью этой программы было, мы предложит пользователю для сорта. Мы строку, используя GetInt () для класса, и они вводят значение, и вы хотите, чтобы отобразить какой тип класса они получили. Так что, если бы я был разработать программу, я значит, как правило, во всех наших глазах, 90-100 является А, 80-90 является B, и так далее, и так далее. Что не так с этим кусок кода, который это не делать то, что я хочу это делать. Да. СПИКЕР 11: Они имеют более низкие пределы, но они не имеют верхних пределов. ANDI Пэн: Точно. Слышал все, что она сказала? Там будет верхняя пределы, но не ниже пределов. К сожалению, наоборот, нижние пределы, верхние пределы не. Так вы хотели бы принять удар на говоря что бы быть напечатаны на этот Экран, если бы я, чтобы запустить этот код. СПИКЕР 11: ошибка? ANDI PENG: ошибка? Великий думаю, не совсем правильно. Кто-нибудь есть еще один удар? Да, Аарон. Аарон: Если вы положили в нечто большее, чем 90, было бы показать все оценки, которые вы получили. Было бы показать вам получил A, Вы получили B, вы получили С. ANDI Пэн: Да. Вот именно. Так, что бы замечательно. Тем не менее, они взаимно Эксклюзивный, я думаю. Если бы я был запустить этот кусок кода. А потом давайте просто сказать, я вводится сорт 95. Так 95 теперь хранится в ИНТ называется сорт. И так С языка который работает наверху донизу, так что это всегда работать до дна. Так что придет сюда, читать, если сорт больше или равна 90, Е (), вы получили А. Великий, я есть 95, это больше, чем 90. Это будет печатать, Я получил А. Это будет взглянуть на это, если это будет говорят, хорошо 95 также больше, чем 80, он собирается напечатать вы также получили Got В-восклицательный знак, и так далее, и так д. Итак, как мы можем видеть, это общая ошибка что может произойти, когда мы написание кода, чтобы высматривать. Любой, какие-либо вопросы по Поэтому, что происходило? Отлично. ХОРОШО. Итак, как мы это исправить, очевидно, следующий логический вопрос. Ну, у нас есть эти красивые вещи, названные если еще, если еще If Else отчетности. Таким образом, вы можете видеть, если вы хотели изменить эту проблему, Вы хотели, чтобы каждый из Условия взаимоисключающие, Вы бы добавьте еще ... если заявление. И это из course-- думать о них, как лестницы, или, как ступеньки на ladder-- Вы можете добавить как многие из них, как вы хочу столько условий, как вы хотите. Так вот, если я вводится класс будет 95. Если оценка больше, чем 95, Е (), я получил А. Великого. Это происходит, чтобы увидеть, если еще ... и это будет знать, О, нет, Я уже исполнилось первый еще. Я знаю-- или первый if-- Я знаю, что Я не должен смотреть на любой из них потому что один из них уже было верно. Так что собирается бежать сверху вниз. Как только первая истинно, то он собирается пропустить над всеми остальными из еще ... IFS. Имеет ли это смысл? Так, в этом случае у вас есть различные уровни проверки и как только один из них является ложным, Остальные также, они даже не проверить. Круто. Все в порядке. Таким образом, это является примером другой вроде условного оператора мы видим реже, но мы увидим их и использовать их. И они часто более эффективным для некоторых случаев. Таким образом, мы имеем то, что называется переключатель заявлении. Поэтому, прежде чем мы рассмотрели, что еще более еще Заявление, ПЧ ... Else. Здесь, у нас есть какие называется переключатель заявления. Так что, когда мы используем переключатель отчетность является ключевым? Таким образом, в заявлении переключателя, вы Обычно, как правило, на самом деле вам может только входные числа для вашего переменная, вы проверяете. Так что, если я хотел, чтобы проверить, если определенный number-- например сорт, если бы я получил 90. Я хочу, чтобы увидеть, если это А, B, или C. Я мог бы случай здесь. Тем не менее, дело имеет будет другой постоянной. Таким образом, в этом смысле, Переключатель заявление может только проверить равенство двух чисел. Это не проверяет что-нибудь еще. Так это то, что очень осторожны, когда вы используете этот. Так вот, если бы я хотел, чтобы проверить, если мой класс 90 равна 90 или 80 или 70 или 60, а затем распечатать соответствующая оценка, Я бы мог написать, что в распределительном заявление. Так что придет сюда, проверка это целое число, равное этой постоянной? Если нет, то собирается пропустить. Это равно постоянной два, и так далее, и так далее, пока вы не нажмете по умолчанию, если ни один из них не равны. Как только один из них устанавливается равным, он собирается сделать это строка кода и перерыв. Это означает, что это собирается удар бежать, перерыв, и только полностью пропустить в нижней части кода. Так что в этом смысле, какие функции как ПЧ-то, если еще, если заявление. Так вот конкретный пример для вас, ребята. Итак, давайте предположим, что я хотел, чтобы создать переменную с именем году основал. И я хочу, чтобы подсказать пользователю ввести год, что их школа. Так что я могу создать переключатель заявление здесь. И давайте просто сказать, я ввода 1636. Этот код здесь увидите переключатель Год основания равна 1636, который. Это происходит, чтобы увидеть дело 1636, о тех, равны, Е () Разве ты не должен в этой школе, на севере? Потому что мы предполагаем, что они не иди сюда, если они идут в Гарвард, разбить и пропустить до конца. Если бы я был на ввод 1701, который Я полагаю, все мы вход, было бы пропустить этот случай, пришел до двух случае, который является 1701, и печать Добро пожаловать в Йельском университете! Перерыв, пропустить до конца. Иначе вы, вероятно, этот курс онлайн, в котором case-- удивительный прием чтобы Yale-- он собирается идти к печати по умолчанию, Привет Интернет! И сломать. Да. СПИКЕР 12: Можно ли использовать еще вместо дефолта там? ANDI Пэн: Нет, потому что так, что вся эта функция Переключатель построен, синтаксис вам нужно использовать, кейс по умолчанию. Это как если еще, если это одним это кейс по умолчанию. Да. СПИКЕР 13: Вы, возможно, уже сказал, что это, но вы можете иметь более двух случаях? ANDI Пэн: Да, вы могли бы есть столько дел, как вы хотите. Думайте об этом как раз нравится бесконечно добавления на. СПИКЕР 14: Если вы включается с 1701 1636, это не реально сделать разница не так ли? Это просто будет его проверке. ANDI Пэн: Это очень хороший вопрос. И мы будем касаться это позже, но только знаю, что это переключатель утверждение infinitely-- это более эффективным, чем него, и если иначе, если он работает, потому что используя другой тип функции, позволяет, по существу, только прыгать прямо к случае вам нужно быть в. Да. СПИКЕР 14: Прохладный. Спасибо. ANDI Пэн: Да СПИКЕР 14: А вы не могли сделать случаи, как и более. ANDI PENG: Нет Так, это то, что ограничения о Переключатель утверждение, что у вас есть иметь постоянные только, только целые числа. Да. ХОРОШО. Так что это то, что вам Ребята будут сталкиваться менее часто, но я просто хотел, чтобы ввести его в дело. Мы имеем здесь то, что называется тройной оператор. Где, по существу, это просто как если заявление составлен в одну линию. Вот, я пойду на следующей строке следующая страница, потому что это легче увидеть. Таким образом, мы все видели это право? Это довольно легко следовать. Если бы я хотел, чтобы сделать переменную строка с именем s, если определенное количество Я даю это меньше, чем 100, я Чтобы назначить низко к строке, еще я хочу, чтобы назначить высокий. Это здесь делает ту же самую вещь эти восемь строк кода делают. Так вот, я хочу создать переменная строкой. И это состояние я проверки, если число меньше 100, то вы присвоить значение низкое, еще присвоить значение высокой. Эти слайды не будет онлайн, не беспокойтесь если вы, ребята, не получить это вниз. Это просто более простой способ, более эффективный способ написания кода. ХОРОШО. Так что теперь мы собираемся Введите то, что для большинства людей , как очень, очень запутанной вещь, чтобы думать о на первый взгляд. В разделе петли. Таким образом, сегодня мы будем говорить три типа циклов. Мы собираемся начать с время цикл, то говорить о дел в то время как петли, а затем говорить о для петель. Так по существу, для более визуальные ученики там, у нас есть, по существу, графический описание того, что делает то время как цикл. Таким образом, в программировании, вы бы начать и введите петлю в определенной точке. Вы проверяете состояние. И если условие истинно, Вы выполняете код внутри. И вы вернетесь вокруг, и вы проверить. Если это все-таки правда, что вы держать работает Этот код по кругу в цикле. Тем не менее, второй, что состояние становится ложным, Вы собираетесь сломать и закончить цикл. А это, по существу, Синтаксис вы собираетесь использовать. В то время как определенное условие правда это сделать, если это не так, Вы собираетесь перейти в конец и двигаться вперед с вашей программой. ХОРОШО. Кто-нибудь есть пример на то, что потенциально может случиться если я пытаюсь запустить этот кусок кода? Кстати, SAJ-- это Scaz, Анди, Jason-- мы подписать наши письма, Любовь, Сай. Это мы. ХОРОШО. Кто-нибудь есть пример, или идея о том, что это было бы напечатать? Вид вопрос с подвохом. Так вот, помните, состояние мы проверка это пока так. Таким образом, хотя это правда, то это в печать, я люблю Сай! Есть ли точка, в которой мы бы изменить что-либо в противном случае, чтобы? Без прав? Так здесь, у нас есть встречается, что, вероятно, будет подслушивания много Ваши программы, бесконечный цикл. Вы увидите, что если вы запустить этот кусок кода, это просто будет держать печать, я люблю Сай! В то время как мы ценим поддержку, мы не хотим, компьютеры к краху, потому что вы держать печать Я люблю Сай! Так что пожалуйста, пожалуйста избежать бесконечного цикла потому что это никогда не собирается оценить ложь и вы никогда не собираетесь для прерывания цикла. И вы собираетесь всасывается в навсегда. Круто. ХОРОШО. Второй тип контура мы будем говорить о сегодня это сделать, пока петли, в то время как петли делать. И это называется делать, пока цикл потому что у вас есть сделать и какое-то время. Так что это очень похоже на какое-то время цикл, но немного отличается. Здесь вы собираетесь делать все внутри этого в то время как некоторое условие истинно. Так что, если бы я был C и компьютер я текли этот кусок кода, Я взглянуть на вершине. Я иду в C, я говорю это сделает. А потом я проверить, а это Правда, я должен повторить его. Но в то время это неверно, то я двигаться вперед и я никогда не вернуться к этой петли снова. Может кто-нибудь принять удар в чем разница между этой петлей и одним мы просто смотрел на практически. Да. СПИКЕР 15: Состояние приходит после, а не раньше? ANDI Пэн: Точно. Так она сказала, что состояние приходит после, а не до. В конечном счете, разница между этим и время цикла является то, что вы только собираетесь сделать все это внутри, независимо от или не ваше состояние правда, и затем проверьте состояние. Таким образом, в этом случае, вы always-- таким образом, Вы всегда убедившись, все внутри работает, по крайней мере однажды проверяя если вы хотите, чтобы работать снова. А вот пример , когда мы будем использовать его. Так, например, если бы я хотел, чтобы иметь переменная типа Int назвал возраст, и я хочу, чтобы подсказать пользователь для их возраста, Я собираюсь сделать Е () Ваш возраст? возраст = GetInt (), которая побуждает пользователя. И некоторые люди будут действительно раздражает. И вы не хотите ошибки в ваших Программа кого-то, как ввод, О, я отрицательно 4 лет или любой другой. В этом случае, если они сделать это, это оценивает истина, что означает, что я собираюсь должны продолжать идти назад и делать это. Таким образом, это будет держать Re-запроса пользователя чтобы дать вам как настоящий Количество возраст, и это продолжать идти назад и переделать это, пока они не дают вам реальный возраст больше чем один, или не равен нулю. Так намекнуть, намек. Это будет очень, очень полезно для одного из ваших проблем Pset. Да. СПИКЕР 16: Упс, извините. ANDI Пэн: Да. СПИКЕР 16: Есть ли, не быть мудаком, но-- ANDI Пэн: Не беспокойтесь. СПИКЕР 16: --are есть различные правила, или ты просто забыть поставить цитату? ANDI Пэн: О, да. К сожалению, это полностью моя плохо. Это было определенно Предполагается, что цитата. Хороший улов. Это было бы не работать. ХОРОШО. Таким образом, последний тип цикла мы поговорим о и, наконец, вид наиболее Комплекс для цикла. Не волнуйтесь, если вы не знаю, что это значит. Это довольно запутанной на первый взгляд. Мы пойдем в течение, например. Все, что происходит в цикле является то, что у вас есть три заявления что вы собираетесь включить. Таким образом, для определенной вещи, вы собирается инициализировать переменную. Вы собираетесь добавить условие которые этот цикл будет продолжать работать. А потом, в конце цикл, вы идете, чтобы обновить его. Вы можете обновить переменную что вы хотите, чтобы отслеживать. Таким образом, мы, как правило, используют для петель, когда мы хочу, чтобы запустить цикл для А определенное количество раз и мы уже знаем, О, я хочу этот цикл, чтобы выполнить, как в 10 раз, то вы do-- я пойду пример на следующей странице. Так вот, например, в пустом, если вы хотел что-то, чтобы повторить 10 раз, все, что вам сказать, было Повторить 10 раз, я люблю Сай! который является более приемлемым демонстрация поддержки для нас вместо бесконечного цикла. Здесь, как вы бы переход к C и записи что для int-- я собираюсь создать или объявить переменную типа Int имени я. Я собираюсь инициализации это 0, так что я = 0; и это будет мое состояние. Так я меньше 10. А потом на end-- последнее утверждение вы придется это обновление что происходит с переменной I в конце ваш цикл. Так что это своего рода заблуждение, потому что различные части этой линии происходят в разное типы цикла. Но я пойду больше псевдокод пример, что и, возможно, объяснить это просто немного лучше. Так вот. Это цикл мы только что видели. По существу в псевдокоде, то, что что происходит в этой программе, сначала я создаю я, его инициализации 0. Я проверяю, чтобы увидеть, если я это меньше, чем 10, и в этом случае первый раз это потому что 0 меньше, чем 10. Таким образом, цикл будет работать. А потом я собираюсь напечатать эту строку. И тогда в конце этой строки, прямо здесь, я собираюсь сделать приращение я, я ++, Все это означает, увеличивая его на единицу. Так я теперь 1. Потому что когда-то был 0, если я увеличить это, теперь 1. А потом я собираюсь вернуться к началу цикла и я проверить состояние. Это состояние по-прежнему верно? Да, 1 по-прежнему меньше, чем 10. Так что это в печать это снова, пойти и затем увеличить ввода, и проверить состояние непрерывно, непрерывно, пока вы в конечном итоге не получите до точки, где я 10. Вы собираетесь печатать это 10 раз а затем я намерен равняться 10. Вы собираетесь, чтобы проверить состояние. Есть 10 менее 10? Нет, это неверно. Таким образом, этот цикл не будет бежать, он собирается сломать, и вы собираетесь продолжать с вашим кодом. Итак, как вы, ребята, можете видеть, это это действительно отличный пример петли можно запрограммировать, что работает в течение определенного количества раз. Каждый ясно? Да. СПИКЕР 17: Как насчет приращения в геометрической прогрессии, он отличается кодирование? ANDI Пэн: Вы can-- мы пойдем из-за этого на следующем слайде. Хороший вопрос. Является anyone--, прежде чем я двигаться on-- кто вообще запутался, потому что это очень тяжело понятие. Не беспокойтесь, если you're-- ОК. Круто. Все в порядке. Просто вообще слайд. Это в то время как петля делает то точно такой же вещь для цикла было. Это просто написано по-разному. Вы, ребята, можете ознакомится слайды в удобное для Вас позже. Но точно знаю, что есть несколько способы написать то же самое произойдет с различными петлями. ХОРОШО. Так, в настоящее время мы получаем в вопрос о том, если есть цикл внутри цикла. Мы входим в режиме реального Первоначальный тип вещи здесь. Если вы хотите, чтобы делать вещи кратное раз внутри других вещей что делать вещи несколько раз, вам хотят, что называется вложенным цикл. Для тех из вас, кто впервые видите это и получить очень путать, все, что мы делаем здесь оказывает цикл где у нас есть переменная подряд. Но внутри него, у нас также есть другое цикл колонны переменного называется. И я настоятельно рекомендую всем вам которые путают сначала держать track-- обратить на это, нарисуйте это. Не пытайтесь просто причине через него, рисовать его. В твоей голове, в этой части бумага, или что-то, записи ряд, отслеживать то, что ряд равен. Написать колонку, отслеживать что колонна равна. И следить за то, что печать с каждой итерации. Каждая итерация этого цикла, каждая итерации этого цикла увеличения, просто держать следуя логике. И я гарантирую вам, Вы будете любить то, что вы видите, потому что это тоже очень применим для ваших проблемных множеств. Круто. Все в порядке. Так самое главное что вы, ребята, вероятно, все думать о прямо сейчас, Ваши Проблемные указан 1с, которые из-за четверг / пятницу. В программе water.c, СОВЕТ Вы будете иметь чтобы побудить пользователя для входа. В программе mario.c Вы будете иметь использовать вложенный цикл, который является для цикла внутри для цикла, печатать блок пирамиды, по существу, как что Марио прыгать через. И тогда в вашем greedy-- или, возможно, Внесения изменения, если какие-либо из вас, ребята когда-либо слышал о that-- Вы будете иметь, чтобы быть очень осторожны первых чисел с плавающей точкой. Помните, плавающие десятичных и целые числа, не то же самое. Следите, один из которых есть что. И вы собираетесь использовать условные операторы, а также. Ладно, последнее дело. Я получил пару минут осталось. Стиль. Так что это то, что не на самом деле влияет на эффективность, или фактический пробег вашего кода. Тем не менее, это влияет нас Ваши грейдеры, как ваши читатели. Это влияет себя, если вы пытаясь найти проблему. Это влияет на читаемость кода. Так стиль, как, когда вы пытаетесь стиль эссе для английского, если вы не имеют пункты, у вас есть все доброе из перемешаны вместе на одной линии, это делает его очень трудно для кого читать ваше эссе, даже если Ваши пункты логически звук. То же самое в программировании. Вы можете иметь ужасно неясным код, который будет охватывать Scaz, и он все еще может работать и функционировать. Но для нас, как ваши прекрасные ТП, которые будут читать и оценивать ваши PSets, это не очень красиво. Поэтому, пожалуйста, ради нас и себя, когда вы пытаетесь исправить проблема в коде, и вы пытаетесь прочитать свой собственный код, убедитесь, что вы будете следовать некоторым соглашениям что мы собираемся перейти на. Итак, сначала. Дайте переменные значимые имена. Если вы хотите сохранить целое называется возраст, пожалуйста, назвать это возраст. Не называйте это высота. Когда вы пытаетесь хранить возраст в высоту, Он делает все очень запутанным для нас. Мы не хотели бы быть в замешательстве. Вы не хотели бы быть в замешательстве. Никто не любит быть в замешательстве. Если вы собираетесь создать что-то, назвать это что-то значимое. Тем не менее, в течение цикла, одного характер переменных, как правило, хорошо. И в течение цикла, если вы хотите просто я, и J, K, не стесняйтесь, чтобы просто сделать это. В соответствии инициализации. Так что это значит? Это означает, что технически, теоретически, Вы можете начать и создать несколько переменных в одной строке. Так, например, я могу создать целое число называется scaz_age, и целое, называемое andi_age = 20, и целое называется jason_age на той же линии. И я могу также назначить только один из их и не другие до значений. Мы просим вас, пожалуйста, не делайте этого. Потому что здесь вы существенно создано три переменные, но только один из них на самом деле имеет значение. А потом, когда мы пытается читать ваш код, или если вы пытаетесь исправить проблема в коде, это очень запутанным, чтобы следовать. Так что для вашего удобства чтения, для наш читаемость, не делайте этого. Последовательные фигурные скобки. Некоторые люди любят, чтобы поместить их Фигурные скобки в разных местах. Это действительно не имеет значения. Просто убедитесь, что вы последовательны в своих собственный код от того, где вы хотели бы поставить их. В соответствии расстояние. Если поставить пробел после цикл, всегда делают это. Не просто нравится вид сделать это в некоторые места, не делают это в других. Просто быть последовательным. Во-вторых, если кто-нибудь хотел бы чтобы просмотреть Руководство CS50 стиль, мы официально имеют стиль руководства, что говорит вам все из этих конвенций, плюс больше. Это онлайн. Это как cs50.net/style~~pobj или что-то вроде того. Вы можете Google это. Последовательность является ключевым. Так что не волнуйтесь, что другие люди делают, просто убедитесь, что вы соответствует в пределах вашего собственного кода. Кто-нибудь есть какие-либо вопросы по этому поводу? Да. СПИКЕР 18: Таким образом, правильное дело делать с инициализации просто иметь их все в отдельную линия, это то, что вы говорите? ANDI Пэн: Так что я редко такое бывает. Но если вы хотите, чтобы, если вы хотите чтобы быть как сохранение места в коде, или что-то, вы можете сделать это. Мы просим, ​​чтобы вы просто не инициализировать одно, а другие не. Так что, если вы хотите сделать Int scaz_age, INT andi_age, INT jason_age, это нормально. Только не инициализировать один а не другие все. Вопросов? Все в порядке. Я собираюсь пройти выключение микрофон, и лазерный указатель, и эстафету Scaz в этой точке. Это неловко. Вот. Брайан SCASSELLATI: Спасибо. Как это для звука? Звук хороший? , Отлично. ХОРОШО. Так, привет всем. Я собираюсь попробовать работать через практический пример с вас. И мы собираемся использовать CS50-х среда разработки, то, что называется Интегрированная среда разработки. И вы видели это показано в лекции. И в задаче Набор 1, вы будет иметь возможность чтобы использовать его, и поиграть с это и привыкнуть к ней, потому что мы собираемся использовать его до конца семестра. Таким образом, в этом IDE, вы есть то, что выглядит как очень традиционной файловой браузере набок. У вас есть часть до топ, где вы собираетесь чтобы увидеть исходный код, ваш CFile, код, который вы пишете. И вниз дно, вы будете есть окно терминала которые вы будете использовать, чтобы как скомпилировать программу и запустить или выполнить программу. ХОРОШО. Так что просто дать нам немного фундамент, в этом окне терминала, Вы будете используя набор команд что стандартные команды до большинство Unix или Linux систем. И поэтому, если вы когда-либо использовали любая форма Unix, Ubuntu, или любой из других ароматизаторов, они собираются, чтобы посмотреть знакомы. Если у вас нет, не беспокойтесь. Там нет ничего сложного о них. Они просто с помощью другой Синтаксис, другая имен Конвенция, чем вы видели раньше. Таким образом, чтобы перечислить файлы в пределах конкретного каталога, они собираются использовать Команда называется LS, или список. Если вы хотите, чтобы увидеть все со всеми подробностями, Вы будете использовать команду Аргумент строка с Ls -l. И покажу вам все Более подробно, в том числе разрешений для файла. Чтобы изменить каталог, Вы будете использовать команду CD. И вы сможете изменить каталог и идти к вашей домашней директории. Вот только компакт-диск всего Сам, компакт-диск с двумя точки вернет вас на один Уровень к предыдущему каталогу. И вы также можете компакт-диска на подкаталог, набрав в кд и имя этого подкаталога. Вы также можете создавать новые каталоги. И мы собираемся идти через это всего за минуту. Но только, чтобы положить все на экране. Так что вы можете видеть их. Вы также будете иметь возможность для работы с файлами непосредственно из командной строки. Вы сможете скопировать их, перемещать их, или удалить их, то есть, фактически, чтобы удалить их. CS50 IDE дает вам полный Сила аргументов командной строки. И это означает, что вы также можете сделать очень опасные вещи. ХОРОШО. Например, вы можете удалить, или, что удаление, файл, не спрашивая для подтверждения. И вы можете даже удалить recursively-- это тире г flag-- весь каталог и все его содержимое. ХОРОШО. Они перечислены в красный, потому что вы следует думать, "опасность" каждый раз, Вы видите эти вещи. ХОРОШО. Все в порядке. Теперь, наконец, вещи, которые являются будет очень ценным для вас, есть несколько хороших трюки знать, как вы навигации через этот окне терминала. Во-первых, вы можете очистить экран в в любое время, просто набрав в ясно. И вы увидите, мне сделать, что довольно часто. Вы также можете просто отображать текст файла набрав более и затем имя файла. Затем Вы сможете прокручивать назад и вперед с, что как раз с пробела и стрелки. Если у вас есть, как мы делали сегодня в лекции, программа, которая работает непрерывно в бесконечном цикле, вы может остановить эту программу от выполнения набрав в управлении, что удерживая Control-C. И вы, возможно, придется сделать это несколько раз. Компьютер получает далеко впереди вас. И иногда необходимо дать ему пару попыток прежде, чем это будет на самом деле прийти до конца. Вы также сможете Сортировать по командам что вы только что ввели, используя клавишу вверх, Стрелка, а затем клавишу со стрелкой вниз. И то, что наиболее полезно есть вместо вводить из длинных имен файлов, Вы сможете использование Tab для автозаполнение несколько инструкций. Теперь мы собираемся, чтобы продемонстрировать все те, всего на секунду. Так что, если вы не помните, им, не волнуйтесь. Это вещи, которые вы будете подобрать и использовать, как мы идем вместе. ХОРОШО. Таким образом, в отличие от C-- Scratch-- С компилируемый язык. Это означает, что мы собираемся взять источник file-- это текст, который вы пишете, команды, которые вы пишете, тем Е () заявления, петли, все else--, и мы собираемся взять этот файл и передать его в программе называется компилятор. Компилятор будет принимать что текст, который вы написали и перевести его в двоичные инструкции что ваш компьютер на самом деле происходит использование. Это называется объект или исполняемый файл. Если вы посмотрите на этот файл, вы собираетесь чтобы увидеть код, который вы написали. Если вы посмотрите на этот файл, вы собираетесь чтобы увидеть случайную последовательность символов что не имеет смысла вообще. Это потому, что это двоичный код. Это не означало, чтобы вы читать. Тем не менее, в любое время вы хотите, чтобы запустить что-то, что вы собираетесь чтобы быть запущен этот объектный файл. Так что, когда мы работаем с ними файлы, мы напишем файл в C. Мы затем скомпилировать его, используя Команда, как макияж, который будет вызывать компилятор лязг для языка C. И будет производить объект подать, как вне, или в данном случае, имя, мой файл, что я положил в. Все в порядке. Итак, давайте на самом деле попробовать это. Так что я пришел с, например что я хотел попробовать. И одна из вещей, которые очаровывает меня анимация. Итак, мы собираемся, чтобы попытаться сделать немного анимации используя только символы ASCII. Персонажи мы можем напечатать легко предприятием. Так вот мой лучший попытка на создание для Вас анимация кролик работает в высокой траве. А вот и он. ХОРОШО. Таким образом, он еще не работает, но он стоял в высокой траве. Теперь, если бы я был аниматор, в старой школе версия анимации, то, что я будет сделать, это я бы произвести картина этого кролика в траве. И тогда я бы произвести другой picture-- другой, что они называют cell--, что что кролик незначительно перемещается. А потом третья, что если бы кролик переехал немного дальше. И я бы производить весь Последовательность этих клеток. Некоторые, где кролик над на левой стороне. А потом медленно движется, один один к середине. А потом с середины на правый. И если бы я тогда, действительно повезло, я мог бы поставить его вместе и я мог оживить их. И мой кролик работает по траве. Это моя большая PowerPoint обмануть в течение дня. ХОРОШО. Так что это так хорошо, как он получает. ХОРОШО. Итак, вот еще один момент, вот наш кролик проходит через траву. СПИКЕР 19: Опять. Брайан SCASSELLATI: Один больше времени, все в порядке. Там твой зайчик. ХОРОШО. Таким образом, сегодня, что мы собираемся сделать, мы собираемся чтобы попытаться автоматизировать процесс производить эти клетки. Мы не будем достаточно добраться до точки будучи в состоянии поместить их всех вместе. Но, мы собираемся, чтобы попытаться автоматизировать Процесс формирования этой последовательности. И это многое из того, анимация сегодня, как. То есть, вы не делать вещи обязательно опираясь все вручную. Мы используем компьютер для автоматизации части этого процесса. ХОРОШО. Итак, позвольте мне перейти Теперь к нашему CS50 IDE. И я создал для us-- и пусть мне масштаба здесь немного bit-- Я создал для нас отправной точкой. Каждый раз, когда мы просим вас, чтобы сидеть вниз и написать кусок кода, то, что мы действительно прошу вас сделать является мы просим, ​​чтобы решить проблему. И то, как, что вы должны думать о том, что делать это, начиная с некоторых простой частью этого решения. А потом построить из этой части. И это то, что мы собираемся сделать сегодня. Таким образом, вместо того, чтобы пытаться все сразу написать всю кучу кода, который будет производить те 10 анимация клетки, мы собираемся, чтобы начать, а с одной части, которая работает. И тогда мы будем строить немного вокруг, что и немного больше и немного больше. Теперь хорошая вещь о Решение проблем, так является то, что это позволит вам начать всегда с чем-то, что вы знаете работ и ввести один постепенное изменение. И это отличный способ чтобы узнать, как кодировать, потому что каждый раз, когда вы сделать изменение, вы видите, что воздействие она оказывает. ХОРОШО. Так вот наша отправная точка. ХОРОШО. Таким образом, в начале моего файла, У меня хэш #included stdio.h. Это так, что я могу получить Е (), чтобы работать. Я тогда у меня основную функцию. И это по-прежнему выглядит немного тайной или неясным для некоторых из вас. Ничего страшного. Все это говорит, что основная функция принимает нет arguments-- недействительными средства ничто в С и его возвращается по конвенции целое число. Главная всегда возвращает целое число, Обычно код говоря вещи прошло хорошо или не хорошо. ХОРОШО. Но главная должен иметь, что сформировать для нас прямо сейчас. Я затем положить в три строки кода. И вместе с каждой линии Код, я положил комментарий. Теперь одна из вещей, которые мы будем настаивать на том, что вы делаете, и это такой важный практика программирования, это всегда комментировать свой код. Всегда записывать в Английский комментарий то что вы думаете, Код должен делать. Таким образом, позже, когда вы вернетесь к это, вы можете посмотреть на него, и вы можете сказать, О, я помню, что я был пытается сделать с этим. Или когда ТА садится с вами, чтобы попробуйте, чтобы помочь вам в рабочее время, они могут посмотреть на это и идти, я видеть, что вы пытались сделать, но вместо этого то, что происходит на самом деле. ХОРОШО. Так что я получил три части моего кода, Я собираюсь в первую очередь печать из некоторых точек в начале. Я затем распечатать мой чрезвычайно модный кролик. И тогда некоторые немного точек в конце. И эти три утверждения печати должны вам знакомым в этой точке. Все, что я делаю в каждый из них я печать из последовательности символов. Там нет переменных. Все просто плоский. ХОРОШО. Так что, если я иду вниз теперь мой terminal-- давайте посмотрим, если я могу получить это обратно out-- и я собираюсь снова ввести ясно. СПИКЕР 20: Есть ли у нас использовать двойной слеш комментарий? Брайан SCASSELLATI: Может использовать double-- да. Там же несколько способов оставлять комментарии C. Один способ заключается в использовании двойной слэш. Другой заключается в использовании черту и звезда а затем закройте со звездой и черты. Все в порядке. Прежде всего, я собираюсь начать навигацию здесь. Так что, если я иду в моей домашней директории, Я изменил каталоги там, Я собираюсь смотреть и видеть то, что в этом каталоге, Ls, перечислить. Я собираюсь видите, что я получил две папки. Давайте сделаем это немного больше здесь, так что мы все можем видеть его. Я вижу, что я получил две папки. Я изменю каталог перейти в рабочую область. И я собираюсь только впечатать часть его, а затем просто нажмите Tab. И это будет завершить остальное для меня. Необычные. Я буду смотреть и видеть в рабочей области. И сейчас, я работаю на SuperSection что мы учим сейчас. Так что я пойду в этот каталог. И, наконец, смотреть и видеть. И я получил этот файл bunny.c. Все права, поэтому позвольте мне ясно еще раз. И я собираюсь снова now-- Я оставаясь в этом каталоге и это говорит мне, что я нахожусь в что SuperSection каталог. Я собираюсь идти вперед и сделать свой программный кролика. И, что команда, чтобы кролик, в то время как звучание немного странным, Также вызывает компилятор лязг. И это производится для мне выход, который исполняемый funny-- исполняемый файл называется кролика. ХОРОШО. Затем я могу, и это звучит еще хуже, выполнить кролика. ХОРОШО. И давайте посмотрим, что он делает. ХОРОШО. Это немного то, что я ожидал. Я получил мою картину кролика там, но я вроде хотел все это само по себе. Что я пропустил? СПИКЕР 21: Slash л или сократить п. Брайан SCASSELLATI: Слэш п. ХОРОШО. Так давайте вернемся сюда. И я выйти из этого. И я вернусь в этот. И давайте теперь посмотрите от моей основной функции здесь. И что же мне делать? Я хочу закончить линию. Так что я положил в комментарии. Я положу в Е (). И то, что я должен поставить в? / п. ХОРОШО. Что я должен закончить его с? Точка с запятой. Все в порядке. Теперь, один из действительно важные вещи, это убедиться, каждый раз, когда вы вносите изменения в коде, что вы сохраните его. Если вы не сохранили свой код, вы заметит немного звезд там. И, что звезда говорит, что вам не сохраняются этот код. Если я скомпилировать его прямо сейчас, это не собирается отражать этих изменений, потому что компилятор смотрит на файл это на диске, а не файла, что это открыть в редакторе. Все в порядке. Итак, давайте сохранить его, а затем мы пойдем прямо на сюда, приходят обратно. Приходите ко мне в терминале. И давайте еще раз очистить пространство. И мы можем идти вперед и еще один Время сделать нашу программу кролика. И выполнить кролика. Это не работает. Неправильный слеш. Так что, если вы посмотрите на то, что я получил, я положил / п там, но я был неправильный черту. Все, что ваш компьютер делает очень четко. ОК? Одна маленькая ошибка пунктуации, и вдруг вы не получите то, что вы хотите. Все в порядке. Итак, давайте масштаба обратно. Мы вернемся. Ну что сделать очень быстро ремонт. Мы положить правую косую черту. Мы спасем его. Мы масштаба обратно. По какой-то причине, это не быть счастливым, но давайте идти вперед и мы вернемся к терминалу здесь. Очистите его. Мы масштаб. И еще раз, мы будем делать кролика. А теперь конечно, он работает. Ура. ХОРОШО. Так давайте попробуем сделать это немного более общий. Давайте посмотрим, если вместо того, чтобы просто печать одного конкретного кадра, давайте посмотрим, если мы можем сделать это так что мы можем получить все 10 из тех анимационных кадров что мы хотели бы иметь. Итак, еще раз, давайте Этот шаг за один раз. Давайте сначала обобщить, не так что я все кадры, но так я никого кадр, который я мог бы. Так какая разница между кадрами? Является ли кролик то же самое? АУДИТОРИЯ: Да. Брайан SCASSELLATI: Да. Какая разница? АУДИТОРИЯ: Должность. Брайан SCASSELLATI: Его позиция, верно? И, как я контролировать свою позицию? Сколько точек я положить в начале и сколько точек я положить в конце. Так что мне пришлось пять на начало и пять в конце. Давайте заменим, что пять с для цикла. ХОРОШО. И я собираюсь создать для петля теперь, скажет, Я собираюсь печатать некоторое число из точек в начале. Я собираюсь использовать переменную. Давайте говорить, как о I в счетчик в моем цикле. И я собираюсь объявить его наверху. А потом в цикл Мне нужно сделать три вещи. Первое, что мне нужно сделать, мне нужно для инициализации I. То, что я должен инициализировать это начать, чтобы быть? 0. ХОРОШО. Тогда я должен сказать, что прекращение состояние? Когда я должен остановиться? Ну, сколько точек вы делаете хотите напечатать на этом? АУДИТОРИЯ: Пять. Брайан SCASSELLATI: Пять раз? Как насчет давайте что-то делать разные, мы сделали пять. Покажем, что это по-другому. СПИКЕР 22: Два. Брайан SCASSELLATI: Два. ХОРОШО. Так что, если я хочу две точки, что я должен положить здесь? АУДИТОРИЯ: Три. Брайан SCASSELLATI: Три. ХОРОШО. Сколько раз в том, что собирается пройти? Вот собираюсь пройти через в три раза, 0, 1, 2 и, правильно? Ладно, давайте вернемся до двух. Теперь мы получим две точки. И то, что я хочу, чтобы делать каждый раз я иду через петлю? Что должно измениться каждый раз я пройти? СПИКЕР 23: Добавить точку. Брайан SCASSELLATI: Я должен продолжать идти. Я собираюсь добавить точку. Я собираюсь напечатать точку, каждый раз через петлю. Но как я отслеживать, как много раз я был через петлю? Я использую я, что Переменная, что счетчик. Таким образом, каждый раз через, я собираюсь для увеличения счетчика на единицу. Теперь, это то же самое для мне, как говорят I = + 1. Ничего страшного. Я мог бы сделать это that-- Мне нравится сокращение, так что я собираюсь сказать, я ++. ХОРОШО. Давайте делать то же самое здесь внизу. Только я вроде сделал это один. Я собираюсь дать вам, ребята сделать это один полностью. Все в порядке. Так что я должен написать здесь? Вот мой цикл. Я собираюсь сделать Е (), и я собираюсь сделать так, что я только распечатать одну точку на этом дне. То, что я должен написать внутри этого цикл теперь? Ну, в первую очередь то, что переменные я должен использовать? СПИКЕР 24: J. Брайан SCASSELLATI: Я мог бы использовать J. Могу ли я использовать тот же один? Могу ли я использовать я снова? Да. Это нормально, потому что Is что я использую здесь, Мне не нужно их снова, когда Я до этого момента. Так что я должен инициализировать я к? СПИКЕР 25: 10. Брайан SCASSELLATI: 0. Что я должен проверить? Сколько точек я сейчас нужно в конце если я получил две точки в начале? Мне нужно восемь в конце концов, так, что я должен проверить, я менее than-- АУДИТОРИЯ: Семь, восемь, девять. Брайан SCASSELLATI: Я слышал, семь. Я слышал, восемь. И услышал я девять. ХОРОШО. Так что мы все в праве ball-- Джейсон говорит 10. ХОРОШО. Если мне нужно две точки для первый, как многие делают Я-- и мне нужно восемь точек для Последнее одно-- я положил два наверху, что я должен положить вниз? АУДИТОРИЯ: Восемь. Брайан SCASSELLATI: Восемь. Потому что собирается рассчитывать нуля до семи. И это в восемь раз через петлю. ХОРОШО. И то, что я должен делать в конце? АУДИТОРИЯ: я ++. Брайан SCASSELLATI: я ++. Все в порядке. Так что выглядит довольно хорошо там. Давайте попробуем и посмотрим, что он делает. ХОРОШО. Итак, мы собираемся, чтобы спасти его. Ницца и сохранены. Мы отдалиться. Мы постараемся здесь в терминале. Мы масштаб. Ой. Мы будем, еще раз, сделать нашу программу кролика. И идти вперед и выполнить кролика. И это так. Так что наш кролик. Где он имеет две точки в начале и восемью точками в конце. Все еще со мной? ХОРОШО. Таким образом, мы построили его. Мы построили один кролик, один конкретный кадр. Теперь мы смогли обобщить, что строить больше, различные виды рамок. Теперь давайте идти вперед, и имеют это генерировать не только один кадр, но давайте создавать 10 кадры, где мы медленно сделать кролика переместить все путь через поле. Все в порядке. Давай вернемся. И мы постараемся сегодня. Так что я на самом деле нужно изменить здесь? Что мне нужно изменить? СПИКЕР 26: Сначала нужно изменить количество точек максимума в начале. Потому что, если мы делаем 10 точек, это будет необходимо с точностью до масштаба. Брайан SCASSELLATI: Да. Так что сейчас у меня это своего рода жестко всегда делать две точки в начале и всегда делать восемь точек в конце. Я хочу, чтобы построить еще один цикл, верно? Потому что я не хочу построить только один кролик картину, Я хочу, чтобы построить 10 кролика фотографии. Поэтому мне нужно, чтобы построить еще один цикл, и, как я иду через этого цикла, Я хочу изменить, сколько точки распечатать в начале и сколько точек распечатать в конце концов, на основании которых цикл через петлю Я нахожусь в. Все в порядке. Итак, давайте еще счетчика. Кто-то, прежде чем сказал J, таким образом, мы будем делать еще J. А теперь, мы собираемся построить еще цикл. То, что происходит внутри этого цикла? Этот материал должен идти внутри цикла, не так ли? Есть ли у кролика идти внутри цикла? Мне нужен кролик в каждый из этих 10 кадров? АУДИТОРИЯ: Угу. Брайан SCASSELLATI: Да. Я хочу кролика в каждой из 10 кадров, верно? Как насчет точек на конец, мне нужно это? ХОРОШО. Так что я собираюсь сделать отступ всех из них. Я собираюсь выделить все это, и я собираюсь ударить Tab. И что происходит, чтобы подтолкнуть их на всем протяжении немного, так что это легко для меня чтобы увидеть, что в цикле. И тогда я закончу его. Давайте сказать. ОК? Теперь, в этом цикле, который Я building-- возгласы, сделать это таким образом Вы можете see-- Я получил свой счетчик J. Я начал его в 0. Сколько раз я хочу пройти через этот цикл? АУДИТОРИЯ: 10 раз. Брайан SCASSELLATI: 10 раз. Так что номер, который я должен поставить здесь? АУДИТОРИЯ: 9, 10. БРАЙАН SCASSELLATI: 9, 10, кто-то должен сказать, 11, верно? Я хотел две точки, прежде чем и положил я меньше 2. Я хотел восемь точек, Я положил я меньше, чем 8. Теперь я хочу, чтобы пройти через 10 раз, так что я положил J менее than-- АУДИТОРИЯ: 10. Брайан SCASSELLATI: 10. Там мы идем. И то, что я делаю в конце концов к J? ++ Увеличивать его. ХОРОШО. Теперь, вот хитрая часть, что произойдет прямо сейчас, если я это сделать? Я собираюсь печатать 10 кадров? СПИКЕР 27: я думаю, все они будет то же самое. Брайан SCASSELLATI: Они Все то же самое, не так ли? Потому что все из них по-прежнему будет положить две точки в начале. Но я не хочу их всех есть две точки начала. Сколько точек сделать I хочу в начале? АУДИТОРИЯ: Изменение. Брайан SCASSELLATI: Я хочу, чтобы это изменить, верно? Так что у меня есть вот что меняется каждый раз, когда цикл проходит через? АУДИТОРИЯ: Количество точек, к. Брайан SCASSELLATI: J, число точек. Так что я могу изменить, чтобы это было к. В первый раз через цикл, что, что будет? Что я могу установить J, чтобы в первую очередь? АУДИТОРИЯ: 0. Брайан SCASSELLATI: Так сколько раз я собираюсь это сделать? 0. Во второй раз через цикл, Джея будет 1, потому что я его увеличить. Сколько точек я собираюсь напечатать? 1. В третий раз через петлю, сколько точек я собираюсь напечатать? АУДИТОРИЯ: Три. Брайан SCASSELLATI: J будет 3. Сколько точек я собираюсь напечатать? О, извините, J будет 2. Сколько точек я собираюсь напечатать? АУДИТОРИЯ: 2. Брайан SCASSELLATI: 2. ОК, так что я буду держать увеличивая, что, как мы идем вместе. Как насчет внизу? То, что происходит здесь? Я не хочу 8 всегда в конце больше? СПИКЕР 28: 10. Брайан SCASSELLATI: Я хочу 10 точек? Я хочу, чтобы изменить, слишком. Так как я хочу, чтобы это изменить? АУДИТОРИЯ: [неразборчиво]. Брайан SCASSELLATI: Ну, если я пять точек в начале, сколько точка-х я получаю в конце? АУДИТОРИЯ: Пять. Брайан SCASSELLATI: Если у меня есть шесть точек в начале, сколько я могу получить в конце? АУДИТОРИЯ: Четыре. Брайан SCASSELLATI: Если я получил семь точек в начале, сколько я могу получить в конце? АУДИТОРИЯ: Три. Брайан SCASSELLATI: Если я получил J точки в начале, сколько я могу получить в конце? 10-J. ХОРОШО. Так давайте попробуем это. Так что я иду, чтобы спасти нашу программу кролика. Мы снова будем удалять. Мы пойдем до нашего терминала. Мы очистить его. И увеличить. Мы сделаем нашу программу кролика, снова. И мы будем выполнять его. Ой-ой. Держись, давайте уменьшения масштаба. Я получал 10 кадров? Ну, сколько кролики я вижу там? 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Я получил 10 кадров. Они все одинаковые? АУДИТОРИЯ: Да. Нет. Брайан SCASSELLATI: Нет Это первая, то зайчик далеко слева. И здесь, кролик далеко на СПИКЕР 29: Право. Брайан SCASSELLATI: Итак, то, что я забыл сделать? СПИКЕР 30: Переход на новую строку. Брайан SCASSELLATI: Я забыл чтобы начать новую линию, снова. То же самое я сделал ошибку раньше. Ладно, давайте исправим это. Теперь, я все еще получил код там, чтобы сделать новую строку. Почему это не работает? СПИКЕР 31: Это не внутри цикла. Брайан SCASSELLATI: О, это не внутри цикла. Это верно. Это здесь, сидя снаружи. И для петли все что внутри этого текста. Так что я собираюсь переехать это внутри цикл. И я Tab перед ним на показывают, что он находится в правильном месте. А теперь, мы спасем его снова. Мы масштаб изображения. Мы переключиться на нашем терминале. Приблизить. Мы переделать нашу программу кролика. А теперь, теперь у нас есть наши 10 кадров. [Хлопая] Брайан SCASSELLATI: ОК. Так. Вот наша вложенными для петель. Мы были способны генерировать в Внутренний контур сколько точек я хотел печатать в начале, в конце. И управляется внешний контур сколько кадров я строил. Мы начали с одного маленького Ядро проблемы, и мы построили из этой точки. Все в порядке. Давайте сделаем еще один шаг. Вы готовы? Там одна вещь, в здесь, где мы на самом деле вид получил более сложность, чем нам нужно. Давайте взглянем. Таким образом, в нашей программе кролика, если я масштаба здесь, Я на самом деле некоторые из же вещь снова и снова. Что мне делать, это своего рода то же самое повторяется дважды? СПИКЕР 32: Печать точки. Брайан SCASSELLATI: Да Распечатать эти точки в два раза. Действительно, я должен этот комментарий здесь. Распечатать некоторые точки на начало, прямо здесь. И тогда я напечатать некоторые точки в конце. И я вроде то же самое. То, что мы собираемся начать работали в ближайшие несколько недель является возможность взять эти блоки код, который мы используем снова и снова, и посредством процесса называется абстракция, мы собираемся, чтобы вытащить их и записать их один раз, так что мы можем затем использовать их снова и снова. Так давайте попробуем это. Готов? Мы собираемся взять этот блок кода. И я собираюсь взять его оттуда. И я собираюсь define-- на дне, Я собираюсь написать новую функцию. Это не собирается ничего возвращать. И я буду называть его printDots. Это займет один Аргумент, целое число, говорит howManyDots я должен напечатать. И теперь вместо печати J точки, я буду печатать сказать howManyDots я должен напечатать. И есть одна маленькая проблема. Кто-нибудь знает, что это такое? Что я, что перечислено здесь это не определено? АУДИТОРИЯ: [неразборчиво] Брайан SCASSELLATI: Ну, как многие точки определяется вплоть здесь, но я использую эту переменную я. Так что я собираюсь взять эту переменную я и я собираюсь, чтобы определить его вниз здесь вместо этого. Так что теперь это будет stay-- ой, получил шапки заблокировать на somehow-- Я будет держать я вот здесь. Так что теперь вот моя маленькая функция или подпрограмма, и она говорит: сколько точек я собираюсь напечатать? И он будет идти через эту петлю и печатать их снова и снова. Я могу изменить мою, то программа здесь. И то, что я называю это функция? printDots. Так что я буду называть printDots. Сколько точек я хочу, чтобы напечатать первый раз, прежде чем кролик? АУДИТОРИЯ: J. Брайан SCASSELLATI: J. Сколько точек я хочу, чтобы напечатать В конце концов, после кролик? 10-J. И есть одна вещь, я не хватает. Как вы видели в лекции сегодня, мы собираемся объявить printDots до выше, с получением прототипа. ХОРОШО. Так что я сделал это, я попытался изолировать подержанной часть кода что я сделал, снова и снова. И я попытался вытащить его, так что все, что содержится в одном месте. Таким образом, если у меня есть где-то ошибку, У меня только, чтобы исправить это в одном месте. Все в порядке. Итак, давайте сохранить его. И давайте убедитесь, что он работает. Итак, давайте выходить на улицу. Мы пойдем снова в наш терминал. Мы масштаб. Мы сделаем этот процесс кролика. Ой. И это дало мне предупреждение. Что это говорит мне? Ну в любом из них раз, вы всегда хотите для прокрутки до первого error-- Теперь на этом, я получил только один. Он говорит мне, в bunny.c, на линии 8, колонка 9, есть проблема. Это говорит, вы Об этом заявил Переменная я, и вы не использовали его. Теперь, как правило, это не самый худший ошибка. Вот легким исправить. И в самом деле, мы можем вернуться в. Мы можем вернуться к кролика. И в этом случае, все, что мы нужно сделать, это избавиться от I, потому что мы не используем я в главной больше. Мы просто использовать его в нашей подпрограмме. Итак, давайте спасти. Мы вернемся. И увеличить. Мы еще раз сделать кролика. И вот опять наши 10 кадров. ХОРОШО. Каждый раз, когда вы дали procedure-- Да. СПИКЕР 33: У меня есть a-- я запутался. Вы можете вернуться к коду? Брайан SCASSELLATI: Да. СПИКЕР 33: Итак, когда вы писали Ваш прототип, аргумент Вам что его назвали назвали howMany? Но, below-- Брайан SCASSELLATI: О, да. СПИКЕР 33: --called им что-то разные, я не понимаю. Брайан SCASSELLATI: Почему они отличаются. Так что это большой вопрос. Таким образом, вопрос был, до здесь я написал howMany, и внизу, я написал howManyDots. Причина в том, что в вашем прототипа, это на самом деле не обращая внимания с именами, которые вы ставите в. Все это на самом деле заботится о то, что это целое число. Она хочет знать вид что вы кладете в. Теперь stylistically-- oops--, что я должен сделать, это мне нравится, чтобы сделать эти матч. ХОРОШО. Потому что будет держать его мне легче запомнить. Но это было моей ошибкой Да. СПИКЕР 34: И так для Прототип на работу, просто писать эту линию, писать прототип, позволяет эту функцию, которая поставляется прямо под ней идти до конца и вернуть то, что это значит? Брайан SCASSELLATI: Что это означает когда компилятор проходит, она идет от верхней части код на дно. И то, что этот прототип является, это в основном обещание. Это говорит, что это будет функция, определенная где-то. Это будет называться printDots. И это займет один аргумент что будет целое число и он собирается вернуться ничего, пустота типа. ХОРОШО. Я обещаю вам это будет определяется где-то по дороге. Но в любое время вы видите что, как вы идете вниз до конца мой Основная функция, я хочу Вы для лечения, что в качестве функции который принимает одно целое число входных данных. И поэтому, когда компилятор идет вниз через это, он видит, что обещания. И когда он получает вниз, продолжает идти, продолжает идти, он находит в первый раз printDots упоминается. И это говорит, О, вы даете мне это к. J Вот целое. Ну вы мне обещали, что будет целое число, и это правильно. Ничего страшного. И, наконец, вплоть на самом дне, прежде, чем я до конца моей Файл, я делаю свое обещание и я определить его. ОК? СПИКЕР 35: Таким образом, это saves-- Программа сохранит пробелы что он идет назад и заполняет в конце? Брайан SCASSELLATI: Это не о распределении памяти. Это на самом деле просто о том, что тип вы ожидали увидеть. Если эта вещь есть один Аргумент, или пять аргументов? Если есть это целые числа будет дано ему, или строк? Это все, что она смотрит сделать, чтобы проверить, вы даете меня Правильный вид аргумента. ОК? Все в порядке. Позвольте мне оставить вас с один бит, чтобы смотреть на. ASCII Art не большая модель анимации, как сегодня. Но некоторые люди, конечно, взять вещи и они толкают его до крайности. Это, Давид показал, в лекции, кусок кода что вы должны ни при каких обстоятельствах попробуйте, чтобы дублировать себя. Потому что это страшно стилистически. На самом деле, он предназначен, чтобы быть, как сложно, как можно прочитать. ХОРОШО. Таким образом, чтобы сделать снова, давайте масштаба здесь. Я собираюсь идти, каталог изменений. Я собираюсь подняться на один Уровень, к моему рабочей области. Затем я изменить каталог, в этот другой каталог, что я создал. И это международный Запутанный программирования C Конкурс. Запутанный средства, как трудно как можно понять. Так что пожалуйста, не пугайтесь, если вы посмотрите на это и идти, я не могу читать это. Это точка. ОК? Но у нас есть это замечательная программа, что я будем смотреть на просто набрав больше. И давайте посмотрим, если я могу уменьшить просто немного, так что вы можете видеть это И это программа. Он назван endo.c. И, похоже, этого ведра с вид букв Ж-Л-У-И-D в нем. Это на самом деле программа. Она написана в самый темный способ, что авторы могли бы Напиши это. Но это чудесный маленький кусок, который генерирует модель гидродинамики. И поэтому мы собираемся дать что модель, что вход Похоже, это, staired установить контейнеров с небольшим количеством жидкости, некоторые Жидкость, наверху. И мы будем иметь его имитации то, что происходит с ним. Так что я буду называть эту функцию, эндо. И я дам его, что Входной файл, который я имел. И наша воплощением ASCII искусства. Полный гидродинамический симулятор работает в нескольких строк кода. Теперь то, что на самом деле очень Удивительно, об этом мало программы является то, что я хочу, чтобы остановить это сейчас, так что я собираюсь использовать то, что команды? АУДИТОРИЯ: Control-C. Брайан SCASSELLATI: Control-C. ХОРОШО. Так что я буду использовать Control-C. С Это будет остановить его. Я ясно снова. А теперь я иду для вызова Программа, выполнить программу, используя в качестве входных данных. И мы увидим динамику жидкости моделирование него плавки. ХОРОШО. Пожалуйста, не дайте эту программу быть вещь, что вас смущает. Это так, что мы можем закончить на то круто и интересно. ХОРОШО. Желаем удачи в ваших проблемных множеств. Мы будем рады ответить на вопросы после занятий. Спасибо большое, ребята.