[Грає музика] Джейсон Хіршхорна: ОК, все. Ласкаво просимо до розділу. Це 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 Березня, він одержує відповідь, що в цьому випадку 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, який. Це відбувається, щоб побачити справу Тисячу шістсот тридцять шість, про тих, рівні, Е () Хіба ти не повинен в цій школі, на півночі? Тому що ми припускаємо, що вони не йди сюди, якщо вони йдуть у Гарвард, розбити і пропустити до кінця. Якби я був на введення 1 701, який Я вважаю, всі ми вхід, було б пропустити цей випадок, прийшов до двох випадку, який є 1 701, і друк Ласкаво просимо в Єльському університеті! Перерва, пропустити до кінця. Інакше ви, ймовірно, цей курс онлайн, в якому 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. З Це буде зупинити його. Я ясно знову. А тепер я йду для виклику Програма, виконати програму, використовуючи в якості вхідних даних. І ми побачимо динаміку рідини моделювання нього плавки. ДОБРЕ. Будь ласка, не дайте цю програму бути річ, що вас бентежить. Це так, що ми можемо закінчити на то круто і цікаво. ДОБРЕ. Бажаємо успіху у ваших проблемних множин. Ми будемо раді відповісти на питання після занять. Спасибо большое, хлопці.