[Музика Відтворення] DAVID мала: Добре. З поверненням. Це CS50, а це Один тиждень, тривали. Так що одна з причин, ми передавали навколо технологій, таких як Google скла є те, що вони приходять з щось відомо, як API, Інтерфейс програмування додатків. А що це означає, що з потрібні файли і з правом документацію, ви можете написати програмне забезпечення для пристроїв навіть, як ці. І так, що ми маємо на увазі, до кінці семестру є, якщо проект за участю, скажімо, Google скла може апеляції, ми побачимо, що ми можемо зробити в Умови підключення вас з деякими позичальника обладнання, а також загальнодоступний API, так що ви можете фактично почати створення програмного забезпечення , Який працює на тому ж скло Google. Іншим пристроєм, який ми грали з пізньої, що ми думали, що може бути весело в кінці семестру є ця маленька річ тут. Вона називається Leap руху, і що ви подивитися технічно Реклама для пристрою, але це дійсно йдеться до того, що даний Пристрій здатний. І він теж йде за допомогою API які ви можете написати програмне забезпечення для контролювати свій комп'ютер таким чином, цілком як цей-хвилинний фільм тут. [ВІДТВОРЕННЯ ВІДЕО] [КІНЕЦЬ відеовідтворення] Тому в даний момент, цей пристрій буде мати бути реалізований у вигляді маленької USB з'єднувач, який можна підключити до комп'ютері, але я не здивуюся, Якщо незабаром у нас є ці види технологій в наступній партії ПК Маки і так, що ви справді може взаємодіяти з ним в чином, як цей. Насправді, те, що я думав, що я роблю, теж Я під'їхала невелика демонстрація програма, яка поставляється з цим програмним забезпеченням. Так що я поставив маленький датчик перед моїм ноутбуком. І, як ви бачите, він уже розуміє, що моя рука є управляти нею. І все це прикладної програми буде масла невеликі речі як це. Але ви можете бачити, що, дійсно, У мене є п'ять пальців. Якщо ми можемо змусити його зробити всі 10, ви можете собі уявити акуратний фортепіано додатком або тому подібне. Так що якщо ви хочете, щоб придумати після занять сьогодні і грати з цим, як Що ж, ласкаво просимо в. Так про це ближче до кінця семестру. Таким чином, пара адміністративних Оголошення. Один з них, зробити розділ, в цю п'ятницю опівдні cs60.net/section. Це гіперпосилання на курси Домашня сторінка, а також. У той же час, однак, supersections дебютує в цю неділю. Supersections є одноразова річ, тому що це займає деякий час, щоб працювати , Хто є в якому розділі і де. Так що найближчим неділю, там буде одна розділ для тих, менше знайомі, один розділ для тих, більш зручною. І ті з вас десь в між можуть відправитися до один або обидва або жодного. Обидва цих буде знято. Вони будуть більшою аудиторії, ніж розділ зазвичай буде дюйма Але мета тут, щоб озброїти вас з деякі проблеми з комфортом встановити один, з С, CS50 пристрою, це вихідні, навіть перш ніж ви дізнаєтеся вашу формальне призначення розділу. Таким чином, ви зустрінете вашого TF і ваших менших Група sectionmates приблизно тижні часу. Години роботи, тим часом, Були відбувається. Лі скористатися ними чи сьогодні ввечері Завтра ввечері, якщо ви хотіли б. Проблема набору 0 проводиться по п'ятницю. Це день пізніше, ніж планового четвер. Але проблема з набором 1, ви побачите що вона включає в себе деякі розминки вправи, з якими ви себе може розширити Четвер термін по п'ятницю. Архів завдань 1, між тим, дебютуватиме на веб-сайті курсу майбутній П'ятниця, якщо ви хочете, щоб згорнутися калачиком з він, як і я колись пізно У п'ятницю ввечері у вашій кімнаті. Так cs50.net/appliance це місце, де Ви можете отримати CS50 приладу що ми почали використовувати в понеділок. Ми будемо використовувати його трохи більше сьогодні. Але будьте впевнені, що проблема набір 1 специфікації, ви пройдете через Саме дії, які необхідно щоб отримати це і працює. Так що не турбуйтеся про виконання, що до Pset 1, якщо ви не хочете. Добре. Таким чином, ми дивилися в понеділок на вихідний код, але в контексті нового Мова програмування, а саме С. і С, На відміну від нуля, що не графічний. Це не головоломки. Це більше, англійська-подібний синтаксис. І є пару кроків Справді написання і виконання Програма на Сі, тому що крім джерела код, подібний цьому, потрібно щось називається компілятором. І з точки зору непрофесіонала, що робить компілятор зробити для нас? Так. СТУДЕНТ: Він перетворює код що ви пишете в 0 і 1. DAVID мала: Добре. Таким чином, він перетворює код, який пишемо 0 і 1. Він перетворює так званого вихідного коду для об'єктний код, останній з яких виглядає трохи щось на зразок цього. І це ваш процесор, мізки всередині комп'ютері, що через Люди, які створили ці комп'ютери, знати, що ці послідовності 0 і 1 середня. Може бути, це означає, друку. Може бути, це означає додаток. Може бути, це означає віднімання. Може бути, це означає, показувати картинку. Є зумовлені шаблони бітів що світ вирішив означає певні речі. Але здебільшого в цьому курсі, ми будемо працювати на більш високому рівні, і ми вважаємо само собою зрозумілим, що існують речі, як компілятори, які можуть зробити наш вихідний код функції в тому, як ми маємо намір. І програма, яку написав перший минулого тижня а потім став портом, так сказати, минулого C Понеділок, було це. Коли зелений прапор натискання привітатися. Це, звичайно, написана на порожньому місці. І я стверджував, що еквівалентно програму в C виглядав трохи щось на зразок цього. Так що я думаю, що ми зробимо це на перший, давай дражнити один від одного те, що виглядає, на перший погляд, за загальним визнанням, як справедливо таємницею синтаксису, але ви почнете помічати, моделі досить швидко. Те, що ми також зробимо сьогодні забезпечують Ви з психічними моделі для деяких Canonical, деякі стандартні конструкції в програмуванні. І тоді ми дійсно отримаємо в свої руки брудні з деякими прикладами, а також. Так що для тих з вас, більш комфортною, розумію, що на цьому тижні, а потім наступний тижня цілком може бути щось на зразок огляду. Але особливо, коли хакер видання проблема набору 1 виходить на Звичайно сайті в п'ятницю, я думаю, Ви знайдете, що, навіть якщо ви заповните деякі прогалини протягом наступного тижня або двох, Ви почнете отримувати все більш виклик і стикаються нові і нові речі. Так що давайте дражнити цю програму, крім кілька рядків за один раз. На самому верху, у нас є те, що технічно називається Директива препроцесора. Це просто рядок коду, яка говорить включити вміст файлу називається стандартним I / N, стандартний ввід - або, вибачте, стандартного введення / виведення, стандартна введення / висновок,. год, всередині моєї власною програмою. Отже, іншими словами, якщо я написав це програма з простим текстовим редактором, як Gedit, тим простіше еквівалент щось на зразок Microsoft Word,, що Інструкція, # включити stdio.h, просто скажу компілятор, захопіть Вміст цього іншого файлу, stdio.h, і вставляти їх прямо тут. Тепер, навіщо мені це потрібно? Що ж ми стверджувати, що всередині цього файлу названий stdio.h, яка зберігається десь на моєму жорсткому диску, або в даному випадку, десь в CS50 приладу? Хтось поклав його туди для мене. Але що це означає? Так, так що це декларація Функція називається Є. Так згадує Е функція, яка дисплеїв слів і символів і номери на екрані в мої розпорядження. Але я не писав. CS50 НЕ писав цього. Хтось років тому написав, і вони по суті дала нам рецепт для нього у файлі stdio.h. Так що перший рядок просто дає мені доступ до функцій, що хтось інший пише років тому, серед які Є. Тепер, наступний рядок я збираюся махнути рукою, принаймні до наступного тижня. Але зараз, знаю, що тап_п (недійсними) є по суті еквівалент цієї жовтий шматок головоломки, коли зелений прапор натиснув. Миру, багато років тому, вирішив, що якщо Ви пишете програму в мову, званий C, ви починаєте Ваша програма з лінією , Який виглядає так. У майже через тиждень, це зробить сенсі, що десяткову, що таке порожнеча. Але на даний момент, просто думати про це як цей жовтий шматочок пазла. Тепер наступне, у нас є фігурної дужки подальшим на близьке фігурної дужки, так сказати. І ми побачимо протягом цих програм на С, а також JavaScript і PHP. І це тільки інкапсуляції пов'язаних рядків коду. Відкрита фігурна дужка суті говорить, ось іде деякий код. А закриті фігурної дужки, яка є нахилений в протилежному напрямку, як раз засобами, ось саме для відповідний код. Так соковиті лінії в цій першій Програма є останнім, Е, котирувань кінець цитати, привіт світ. І я назвав речі між котирування, що минулого разу? Так що це рядок. І рядок просто технар Термін для послідовності символи, слова, фрази. Навіть один лист могло бути в подвійних лапках. Але це послідовність з нуля або більше символів. Зворотна коса риса-N, тим не менш, виглядає трохи дивно. Але це просто означає щось простий в комп'ютер. Що зворотний слеш-н? Нова лінія. Так що це просто спеціальна послідовність символів, які світ вирішив коштів, вкладених рядки тут же, тому що компілятор насправді отримати плутають, як правило, якщо ви, дуже зрозуміло, але неправильно, просто почати Натискання Enter поставити нових ліній в коді. Ви повинні бути трохи більше явні, з косим-н. І ми побачимо, є кілька інших подібних шаблони для спеціальних символів. Наприклад, якщо ви хочете, щоб ваші розум блукати в кут випадку, Припустимо, що я хотів, щоб надрукувати подвійні лапки на екрані якої причини, що, здавалося б, бути трохи проблематично, чи не так? Тому що, якщо я поклав у подвійні лапки середина "Hello, World", з тих чи інших Причина, чому здається, що потенційно проблемні? Це розбиває рядок. Компілятор просто програма. Така програма, як компілятор просто буде читати ваш код зверху вниз, зліва направо. І якщо бачить три подвійні лапки замість з двох, він не знатиме, Якщо ви маєте на увазі, що річ в ліву повинна бути рядок, або річ право, або все це. Це неоднозначно, і так, що типовий компілятор буде зробити, це просто урод, і дати вам деяке повідомлення про помилку і зробити вас мати справу з проблемою. Тому, враховуючи, що зворотний слеш-н означає нове лінії, що б ваші інстинкти зараз повстало, якщо ви хотіли включити щось аномальне, як подвійний лапки всередині цього інакше лапках рядки? Зворотна коса риса-подвійні лапки. І так що ми побачимо цю вид шаблону теж. Якщо ви хочете зробити щось трохи Дивно, ви виявите, що Рішення часто слідують зразком, і зворотну косу риску позначає керуючої послідовності. І це просто означає щось особливе що ми повинні представити в іншому. А як ви уявляєте зворотну косу риску, добре, ми будемо повернемося до цього. Але відповідь, також, фактично трохи очевидна. Отже, давайте введемо деякі інші програмні конструкції які ви бачили в хорошому стані. Ви, напевно, само собою зрозумілим вже якщо ви вже пірнув у Проблема встановлений 0. Але давайте введемо синтаксис в C в іншому випадку для цих інтуїтивний ідеї, принаймні деяких з них. Так що це поняття стану або Філія, тоді як раніше ми представляв його з кодом, який виглядав так в лівій Scratch - Якщо X менше Y, то так і скажіть - а нині в C - дозвольте мені відточити на в простому випадку - ми просто збираємося говорити, якщо, відкрийте дужки, щось вірно - Логічний вираз буде йти де я сказав стані - заслони дужку, то робити те, що Усередині ці фігурні дужки. Так і тут, у фігурних дужках ніби як для Scratch П-подібні частини головоломки. Робіть те, що всередині цих фігурних дужках. У цьому випадку, слеш слеш. І зауважте, це вперед слеш, а не зворотною косою межею. Коса риса, коса риса, для тих, хто вже запрограмований раніше, просто означає - це просто коментар. Коментар не є прямою коду, як такої. Це лінія англійською, що ви, людини, написали заради себе, щоб можливо, нагадати вам, щоб щось робити, пояснити собі, щоб пояснити когось ще, що ваш код робить. Це просто описовий коментар. Тепер, звичайно, ми можемо мати двосторонню розвилці доріг просто робити це, тристоронній розвилці доріг, роблячи це, і якщо ви будете продовжувати цю шаблон, ви можете мати чотирьох напрямках, п'ятипозиційний, шість способом розвилок, якщо вам потрібно працювати, дійсно, що багато умов. І зверніть увагу на те паралелізм тут - Якщо (умова), решта, якщо (умова), і єдине, що трохи дивним є останньою, яка це всього лише ще. Але знову ж, це ідентично, Концептуально, до того, що ми зробили вже, хоча синтаксис взяти трохи звикнути. Тепер, в цьому прикладі є деякі інші дивні синтаксис. Ми бачимо, Е знову, відкриває дужка, і заслони дужку. І всередині є рядка в лапках. Дужки, в контексті з Е, перейдіть на лівій і праворуч від чого? Що ми описуємо, що цитований Рядок у більш загальному? Так що це аргумент. Кожен раз, коли у вас є функція, як і Е, а потім відкритим і круглих Закрити хлопець і щось всередині це, будь то рядок, або ціле, або що-небудь ще, справа в між цими дужками називається аргумент. І аргумент просто впливає функції поведінки. У цьому випадку, це досить ясно, як це зробити. х <у це те, що передається в, так би мовити, в якості аргументу. І Е збирається роздрукувати саме це. Тому що, звичайно, людина років тому які не реалізовані Е мав ні найменшого уявлення те, що ми, людські наступники були збирається використовувати для Є. Так ось чому аргументи існують, впливати на поведінку після функції було написано. Тепер, логічне вираження. Ми бачили раніше в цих нуля. Виявляється, в C ви також можете "або" їх разом, так би мовити. Дві вертикальні смужки означає, що цей блок коду, це зробити це, буде виконуватися, якщо перша умова істинно або друга умова. І навіть якщо ви не могли б зробити У цій нуля, ви дійсно може зробити це в нуля, і ви також можете виразити себе по-різному - якщо перша умова і друге умови вірні, то робити те, що Усередині фігурних дужок. І так само, як у бік, причина, це подвійний амперсанд і подвійний Вертикальна риса, ми побачимо, в кінцевому рахунку що одна вертикальна риса і один амперсанд мати різні сенс в C. Так що на даний що дублювання символів не випадково. Отже, давайте уявимо, коротко, це трохи інший синтаксис. Це не зовсім переносяться на Нуля, але я стверджую, що я можу реалізації поняття, якщо ще, якщо інакше, якщо ще, якщо ще і збитки з використанням те, що називається перемикач заяві. І єдина причина, це дійсно існує , Щоб просто дати вам, програміст, трохи інший спосіб вирішення деяких проблема, хоча за логікою він не дає вам ніяких нових можливостей. Під цим я маю на увазі це. Коли ви говорите, перемикач, а потім пробіл, а потім пара круглих дужок, всередині яких йде вираз - і це могло б бути трохи неочевидним на перший, але це не аргумент, технічно, тому що перемикач не є функцією. Так що зараз, просто припустимо, що ми використовуємо дужках у різних місцях з різних причин. Так перемикач на вираження значить, я можу покласти змінну всередині цих дужках, де він говорить вираження. І потім, якщо ця змінна - Припустимо, що це називається х, і це просто ціле число - Потім я можу перерахувати на мій слайд Тут щось на зразок цього. Якщо X мій змінної, і я хочуть щось робити, якщо X дорівнює 1, я можу зробити це. Якщо я замість цього хочуть зробити щось Якщо X = 2, я можу зробити це. В іншому випадку, якщо я хочу зробити щось ще цілком, у мене може бути за замовчуванням у разі цьому випадку я роблю це інша річ. Так що в цьому сенсі це еквівалентно Якщо X дорівнює дорівнює 1, інакше, якщо ще, але я кажу про це тільки тому, що тепер ми побачимо його знову. Але на даний момент, просто знаю, що він існує. Добре. Таким чином, ці останні пару трохи більше складні, на перший погляд, але вони роблять щось досить просто. Цикл в С є шматок коду, який просто робить щось знову і знову і знову. І єдина дратує річ про нього, , Що в тому, що це трохи загадкове , Щоб виразити себе в цьому циклічному картина, але світ на стандартизовані наступним чином. При використанні циклу, у вас є пару круглих дужок знову. І зверніть увагу на дві крапки з комою у там. Ці дві точки з комою три окремих різних виразів всередині дужках. Одним з них є так звана ініціалізації. Одним з них є так зване умова. І це так званий оновлення. Подивився в абстрактній, це абсолютно не очевидні, так що давайте подивимося на конкретному прикладі. У подряпин у нас був повтор блоку. І це Блок сказав повторити 10 разів, скажімо "Hello, World". Дозвольте мені претендувати на зараз, і ми повернемося до цього, і Це теж буде отримувати більше знайомі Вами найближчим часом, що еквівалентно C код може бути названо це - для постановки і пробіл, пара дужках, зверніть увагу на крапку з комою в там, які відокремлюють три різних речі, ініціалізації стані, та оновлення. І зробити припущення, що перший робить. INT I = 0. З точки зору грубої непрофесіонала, що , Що робить для нас, напевно? Так що так. Це оголошення змінної називається I, і це дає його, яке значення? 0. Так він створює змінну з ім'ям Я, зберігання значення 0 у ньому. Це так званий ініціалізації. Гаразд, тепер я стверджував до що середня річ, я <10, цей стан. Так що ж робити? Ну, що цикл робить, коли програма з петлею для запуску, є кожен раз, коли комп'ютер проходить через ця петля, зверху вниз, зверху дно, так само, як ви, хлопці, зробили, коли вважаючи себе і сидячи, знову і знову і знову, комп'ютер буде перевірити, що умова. І якби я менше 10, він буде робити це знову. Якщо я менше 10, він буде робити це знову. Якщо я менше десяти, він буде робити це знову. Так що, здається, припускає, що Сподіваюся, у мене змінюється. В іншому випадку ми повинні були б в нескінченний цикл. І дійсно, я змінюється, тому що Останнє, що після крапки з комою там є кілька загадковим синтаксисом я + +. Але ті з вас, хто вже зробив це раніше, це просто означає, Все дуже просто, що? СТУДЕНТИ: [проміжне VOICES]. DAVID мала: Додати 1 до я. Збільшуємо я. Таким чином, ми побачили подряпин головоломки П'єса для, що, насправді. Це не було схоже, я + +, але це просто кошти, просто кажучи, збільшуємо цінність, яку я на 1 кожен раз, коли ви робите це. Так буквально, можна почати з Я ініціалізації в 0. Потім перевірити стан. Буде 0 менше 10? Так. Ми йдемо через петлю. Наступне, що я претендувати на комп'ютері збираємося зробити, це він збирається Я, щоб збільшити. Так що я тепер 1. Він перевіряє стан. На 1 менше ніж 10? Звичайно. Так робить це знову. Тоді він збільшує I + + 2. На 2 менше 10? Так. І знову і знову і знову. І врешті-решт, через плюс-plussing, ми добираємося до Я = 10. Є 10 менше, ніж 10? Ну, очевидно, немає. І це точка, в якій цикл просто зупиняється. І якщо у вас є більше коду на внизу екрану, комп'ютер доходів, що для запуску коду замість. Отже, ще раз, навіть якщо це буде виглядати і відчувати себе трохи дивно По-перше, звичайно, для тих з вас, хто ніколи не запрограмований раніше, буквально зменшує концептуально до того, що в іншому випадку дуже простий головоломки частина в хорошому стані. Гаразд, я обіцяв, що б бути й інші аналоги в хорошому стані. Там на цей раз теж. І ми побачили це в двох словах востаннє. Але пам'ятайте назавжди блокувати в порожньому місці? Він просто робить щось вічно? Я стверджував, що ви могли б реалізувати це таким чином. І ви можете реалізувати це в купу-різному. Але в той час як контур просто інший шлях в C виразити себе. Зрештою, ви не можете зробити нічого з в той час як цикл, який ви не можете з циклу. Таким чином, вони врешті день функціонально ідентичні. Але він дозволяє вам виразити себе трохи по-іншому в наступним чином. З той час як цикл, це те, що в дужках, що це ще раз перевірена і знову і знову. І як тільки це вираз помилково, то цикл припиняє виконання, і комп'ютер продовжує запускати будь-які інші коди є у вашому файлі. Але що цікаво тут що я буквально набрані правда. І дійсно є одним з видів логічне значення, істинне або помилкове значення. Так може коли-небудь стати істинним помилковими, якщо я буквально жорстко його в моїй програмі? Так що немає. Це трохи дивно, що я це зробив. Але правда, то правда. Там немає плюс plussing. Там немає використання змінних тут. Так, тому що я жорстко в той час як це правда, це петлі завжди буде оцінити знову і знову і знову. Так скільки разів привіт світ збираєтеся друкувати на екрані? Назавжди. Нескінченне число разів, поки не акумулятор помирає або інші зовнішні події. Так що це, ймовірно, не найкраща програма писати, тому що, якщо користувачеві ніколи не може кинути свою програму, це ймовірно, не те, що ви хотіли. Але іноді, програми повинні є нескінченний цикл. Наприклад, якщо ваш комп'ютер має Годинник на ньому, це, звичайно, було б хороший, якщо ваш годинник вона постійно оновлювати Сам назавжди, хоч раз у Друга або раз на хвилину або щось на зразок цього. Таким чином, навіть нескінченні цикли мають своє місце. Добре. Нарешті, це одне. І на цей раз трохи по-іншому функціонально, і ми повернемося до Це, ймовірно, в Pset 1. Але є й інший тип циклу називається робити під час циклу. І єдина різниця між робити під час циклу і, скажімо, в той час як петля, в тому, що перевіряється стан не Перед виконанням коду, але після виконанні коду. Так у верхній частині для в той час як петлі, в той час як робити під час перевіряє його на дно. І це просто означає, що в той час як петля , Як правило, працюють більше разів або меншу кількість разів, ніж у той час як цикл? Потенційно більше разів, тому що робити в той час як цикл чітко говорити цього тільки після чого ви перевірити якщо умова всередині дужках вірно. Таким чином, ми побачимо це знову ймовірно, в Pset 1. Якщо ви завжди хочете зробити що-небудь в мере один раз, а потім, може бути, ще кілька рази, це добре побудувати у використанні. Але в той час як контур, навпаки, буде перевіряти її стан в першу чергу. І ось саме для петель в С, але в той час, в той час, так і для петель. І знову ж, вони відображають дуже красиво назад подряпати, крім цього не досить мати той же аналог в хорошому стані. Ну, як, в даний час, змінні? Так от як я оголосив змінну синтаксично днями. У мене була Інтелект, який я стверджував, є цілим числом. У мене тоді була змінну лічильник, а потім з комою. Так що ж таке цей рядок коду робить? Це, просто кажучи, оголосивши змінної - тобто, задаючи комп'ютера, дай мені деякий обсяг пам'яті, дати мені кілька бітів - у який я можу зберігати що? Int. І крапкою з комою просто означає, кінці рядка коду. Тепер, у другому рядку, ймовірно, досить вгадуються. Що таке лічильник = 0; робиш? Це привласнення 0 до лічильника. І ось це і є інша річ , Це трохи дратує порівняно, скажімо, алгебрі. У той час як в алгебрі, знак рівності означає, рівних, тут, в C, рівну знак означає призначення. Так це значить покласти те, що знаходиться на правильному в те, що зліва. І ми побачимо ще один символ, одно рівних, коли ми хочемо насправді перевірити за якістю, кілька прикро. Але це трохи неефективно. Це свого роду дратує, що у мене є оголосити змінну і потім дати йому значення. Так що насправді C дозволяє нам спростити цей і просто зробити це все відразу. Ви можете оголосити змінну на лівій стороні. Ви все ще можете виконати завдання на право, поставивши знак рівності, що в середині. Таким чином, в кінці кінців, ці два еквівалентні, але це, чесно кажучи, Ймовірно, краще звичка тільки тому, що трохи менше коді, це трохи легше читати, і він просто підкручує коді, так би мовити. Будь-які питання, досі на петлях, на змінні, від умов, в Логічні, або технічно або концептуально? Добре. Так що тепер це наступний отримує трохи більш цікавим. І це приклад, який я поклав у минулому час, коли це відображає подряпин приклад до C. Таким чином, функцію. З точки зору непрофесіонала, що таке функція? Треба бути сміливішими з Вашою відповіддю. Що таке функція? СТУДЕНТ: Чи є щось. DAVID мала: Що це? СТУДЕНТ: Чи є щось. DAVID мала: Чи є щось. ОК. Ми почнемо там. Так функція повинна щось зробити. Так що це шматок коду, який по суті реалізований в іншому місці, що дійсно щось робить. Тепер, що цікаво про функції є те, що він може прийняти введення, і вона може призвести вихід. І давайте насправді взяти Подивися на це. Так Людина за ширмою було навмисним хвилину тому. Тут у нас є таблиця. Але припустимо, що це насправді являє собою великий ящик. Таким чином, це так званий чорний ящик. І взагалі, в конструкції, в комп'ютер науки, чорні ящики просто послатися на функціональні частини, що хтось реалізував, а ви ні обов'язково знати, чи все одно, як це реалізований під капотом. Ви просто все одно, що це чорний ящик, який ми зараз почати називати функції, робить щось. Так, наприклад, якщо це чорний ящик на етапі тут представляє Е, функції, я знаю з попередніх прикладів Е, що приймає один або декілька аргументів, причому перший з них Аргументи повинні бути рядком, як і "Hello, World". Ну, якщо я людина написання програми, і я хочу використовувати Е, Я, наприклад, може взяти шматок чистого паперу тут і чорний маркер і напиши на ньому - Я неправильно "Мир" - H-E-L-L-виводу. Так що я візьму мій чорний маркер і я буду писати, як великий і розбірливо, як я можу на цей папірець, "Hello, World", і Тепер я стверджую, це мій аргумент. Це рядок представлена аркуш білого паперу. І мій внесок тепер до функції Е буде цього. Так я називаю Е, проходячи Аргумент, що в якості внеску до його. І тепер, я не знаю, як людина, яка написав Е зробив це років тому, але Я знаю від свого документації, його мета в житті, щоб надрукувати те, що я надає його в якості вхідних даних. І тому, хоча ця реалізація це без мого відома під капотом, в даний час Я бачу, о, це робиться. Він надрукував щось на екрані. І в даний час контролюють програми, якщо є були кілька рядків коду, буде вже повернулися до мене. І тому той факт, що Колтон - благословить його серце, ховається тут під стіл перед усіма вами - є навмисним в цьому я не знаю, і я не хвилює, як Е є реалізовані. Я просто знаю, знову ж таки, від його документації, що він робить і як я я повинна його використовувати. Зараз, нагадаємо, що Е може отримати трохи більш складним. Знову ж, ми просто говоримо про еквівалент Say Загальне для Scratch. Але я також зробив це в минулий раз. Я хотів, щоб мій привіт програмі трохи більш динамічним, а не просто важко код щось на кшталт "світ", і безумовно не важко щось код довільне, як D - V-I-D в програму. Я хотів запитати у користувача його або її ім'я, а потім зробити щось з цього рядка, які вони надають. Таким чином, є щось не зовсім тут. Е, хвилину тому, дійсно, справді, щось зробити, але це не повернув мені нічого. Вірно? Колтон не передати мені нічого тому, не аркуш паперу. Був просто побічний ефект. Мій надання "Hello, World", як Аргумент Колтон призвело до Побічний ефект слово, кілька слів, з'являються на екрані. GetString, хоча, трохи різні. GetString також функцію, але вона повертає деяке значення. Це не просто естетичний ефект сторони. Це фактично дає мені, людині викликом або за допомогою функції, щось натомість. Тому в даному випадку, є GetString викликається з відкритим GetString Хлопець, поруч хлопець. GetString Чи, таким чином, прийняти будь-які аргументи або увійти? Ні, здається, немає. Його мета в житті тільки, щоб отримати рядка. Він не потребує більш детально, ніж це. Отже, дозвольте мені йти вперед і робити вигляд, що, Знову ж, це чорний скриньку не Е, але GetString, і дозвольте мені, людині написання цієї програми, зателефонувати або використовувати GetString, просто написання G-E-T-S-T-R-I-N-G, відкрита дужка, поруч Хлопець, GetString. Тепер, я поняття не маю, як CS50 персоналу реалізовані GetString, але я знаю, що якщо я досить довго чекати, він буде робити свою річ під капотом, можливо з використанням деякі змінні, може бути, за допомогою деяких умовах, може бути, використовуючи деякі петлі, можливо з використанням деяких функцій, можливо з використанням - просто намагаючись загальмувати - можливо з використанням деякі інші функції програмування. Але якщо я досить довго чекати, - насправді, в комп'ютері, це відбувається супер швидко - якщо я досить довго чекати, ця функція GetString збирається отримати рядок від користувача, який імовірно введення його на своїй клавіатурі, і Потім, коли ви GetString робиться отриманні ці символи від користувача і зберігання їх в рядок, що Функція, GetString, буде мати готові для мене кілька вихідних якій я збирається отримати шляхом оператор присвоювання. І якщо я піду, дійсно, у вихідні Тут Obosi щедро участь, не знаючи про це просування, написавши своє ім'я на цій змінну, яка представляє рядка. Тепер оператор привласнення означає, що навіть хоча це може відчувати себе трохи зайвим, я насправді потрібно зробити мою власну копію цього. Оскільки на лівій руці боку - вигуки! - Я помітив, що по суті є рядок назвати на лівій стороні. Так що я також збираюся зробити моя власна копія цього. І це трохи брехня, тому, що ми побачимо протягом тижня або двох в Час, що рядки, насправді не те, що вони здаються. Але на сьогоднішній день, ось що повертається. Ось моя власна копія його після за допомогою оператора привласнення. А тепер, що я хочу робити далі? Тепер у нас є другий двох рядків коду. Так що я тепер хочу називати Є. Давайте уявимо, що тепер, коли чорна коробки знову повернувся до того, Е, а не GetString. Printf на цей раз збирається взяти, скільки аргументів? Так що дивіться, це як два. Там дві коми там, але один з тих, коми, це всередині лапок. Таким чином, перший аргумент буквально буде цього. Н-Е-Л-Л-О, кома, відсотків с, зворотний слеш-н. І тепер я, що забезпечують не один аргумент, але два аргументи Є. І те, що Е повинен робити з ці два входи після того, як передати їх у в якості аргументів? Це, як передбачається прийняти другий з них, який я назвав ім'я, так Друга частина статті я написав Хвилину тому називається ім'ям. Це збирається штекер значення всередині цієї змінної в заповнювач, % S, так що, знову ж, всього за мить час, ми побачимо побічний ефект зателефонувавши Е, завдяки чому тепер ми бачити не "Hello, World", а "Здрастуй, Obosi ". Так великі оплески на обидва наших волонтерів, з яких тільки один знав, це буде відбуватися. Добре. Так, може бути, просто, як це було, Звичайно, якщо ви вже знайомі з такими, ми сподіваємося, ви ніколи не будете забувати, що візуальне зокрема про те, як функції працюють. Таким чином, є більше, ніж просто GetString. Усередині CS50 бібліотеки, є ціла купа функцій, кожна з яких капіталізуються тільки, щоб зробити ясним , Яку ми написали ці функції. Як правило, в C, майже кожен другий функції ви будете використовувати в нижньому регістрі. Але ми свідомо використовувати заголовні букви просто дати зрозуміти, що ці готуємо колеса роду, що ми будемо використовувати протягом усього декількох тижнів, що спростити процес отримання введення від користувача. Бібліотека CS50 нічого не робить що ви самі не могли зробити по тільки за допомогою коду з C Oldschool підручника. Але, знову ж, ми використовуємо їх в якості навчання Колеса роду для всього пару тижнів, так що ми можемо позбутися складності, що ви скоро зрозумієте себе робити щось, як відносно прості, як отримання введення від користувача. Так що знаю, що ви будете мати доступ до GetChar, GetDouble - подвоїтися. Як там - і тоді GetFloat. Що таке плаває? Давайте почнемо там. СТУДЕНТ: [нерозбірливо]. DAVID мала: Так. Це число з десятковою крапкою. Так що хоча Цілочисельне є цілим числом, яке просто номер з 0 до 9, деякого числа повторень цього, Поплавок щось з комою. І подвійний, тим часом, також число з десятковою крапкою, але більш цифри після десяткового точки, потенційно. Таким чином, ми повернемося до цього найближчим часом. Але, як правило, кожен з цих типів Дані, кожен з цих типів змінних що бібліотека, як наша може повернутися до Ви, використання різної кількості бітів зберігання інформації. Як правило, Чарі, яка просто означає, один символ, використовує 8 біт. І що насправді у відповідності з нашими Байт добровольців минулого тижня хто підійшов і являє собою одну Символів ASCII одночасно. Так Char дорівнює 8 бітам. Поплавок, трапляється, 32 біт, звичайно. І подвійний, як неважко здогадатися, є насправді 64 біт, що просто більше, яка означає, що ви можете мати більше номера або більшої точності. Але знову ж, про це іншим разом. GetLongLong, тим часом, хоча нерозумно називається, насправді просто ціле число, яке в два рази більші, в два рази довго, можливо, як звичайний ціле, 64 біта замість 32. І GetString ми використали. Але, виявляється, в бібліотеці CS50, яка реалізується, як ми побачимо, в вигляді двох файлів, один з яких називається cs50.h, є два інших Типи даних у ньому. Булеві не перебувають у C. Ви можете моделювати їх тільки за допомогою 0 і 1 всієї вашої програми. Але ми в CS50 створили бібліотеку Символи "істинної" і "помилкової" для представлення 1 і 0, тому вам не є щось на жорсткий код буквально як 1 і 0. Але ми побачимо ті знову. String, теж не існує. І саме тому я згадав це трохи брехня на даний момент. Але ми будемо відігніть, що шару незабаром. Але зараз, рядок послідовність символів. Тим часом, в C, ви дійсно мають різні типи даних. Зверніть увагу на ці пишуться малими літерами. Таким чином, функції, які ви бачили хвилину тому -Функції, написані CS50, що повернеться до вас значення, яке падає в одну з цих категорій. Пару листів чит просто посадити насіння тут. Е не просто прийняти% S в якості заповнювачів. Він приймає% D для десяткових чисел, або% Я б працювати також. % F є плаваючою крапкою. % С для символ, якщо ви хочете просто підключити один символів у рядку відформатовані як ми робили, ви можете використовувати% С. А потім, трохи прикро,% LLD є протягом довгого, довгі цілі десяткові, який просто означає, що якщо вам потрібен дійсно велика кількість і ви використовуєте щось називається дуже довго, що ми приїдемо тому в PSET, ви можете використовувати% LLD до скажіть Е, підключити дійсно великий ціле тут в якості свого другого або деякі інші аргументи. І, нарешті, я обіцяв, що є кілька інших втечу послідовностей, Е підтримує. Ми бачили зворотний слеш-н. Зворотна коса риса-R ви можете побачити. Це начебто старої школи річ. Якщо ви коли-небудь використовували реальні років друкарська машинка назад, і ви витягли на рукоятці які не тільки обертала колесо перемістіть лінійку, він також переїхав Все це весь шлях назад до лівою, ну, зворотний слеш-R просто істотно переміщує курсор назад на початку лінії не рухаючи його вниз. Але знову ж, про це, Може бути, в майбутньому. Зворотна коса риса лапки, зворотний слеш-подвійні лапки, зворотний слеш-слеш Рішення маленькі загадки Я згадував раніше. І зворотний слеш-0 насправді досить цікаво. Але ми повернемося до що незабаром. Отже, дозвольте мені увійти, зараз, CS50 пристрою, і давай насправді Швидкий підігрів з одним з прикладів ми вже й потім перейти до щось трохи більш складним. Так що якщо я відкриваю мою програму називається Gedit - це мій графічний редактор. І я можу зробити це - Дозвольте мені закрити це вікно там - шляхом цієї ікони тут, внизу, Gedit, в лівому нижньому кутку поряд з меню. Я збираюся йти вперед і вперед, і зберегти в цьому прикладі, скажімо, Джона Гарвард папку. Папка Джон Гарвард, всього будинку його каталог, в якому всі його файли жити за замовчуванням. І я йду, щоб врятувати це як файл з ім'ям Hello-0.c. І я вибрав це ім'я просто так, лінії із зразком коду на Звичайно автора і в YouTube відео в Інтернеті. Так що тепер я збираюся почати написати свою першу програму. Дозвольте мені для збільшення розбірливості. І я збираюся йти вперед і сказати десяткового Основний порожнеча, яку просто так жовтий шматок головоломки, які запускає програму. Я отримав в звичку за років відкриття мого фігурної дужки, то Також його закриття, а потім повертаючись до де я хочу поставити мій код, просто , Тому що це допомагає мені тримати все збалансованим, тим більше, що моя Програма отримує довге. І тепер, тут, я збираюся йти вперед і сказати, Е, в лапках, привіт світ, зворотний слеш-н, недалеко цитати, заслони дужку, крапка з комою. Так що я просто повторював все, що ми приймають як належне досі. Тепер я збираюся, щоб зменшити масштаб. І це вікно терміналу тут, що чи можу я зробити в цій чорною і біле вікно? Що я можу його використовувати? Так ось де я біжу команди і де я можу скомпілювати деякі речі. І я збираюся зробити його простим. Я збираюся використовувати програму називається марка, що не Технічно компілятора. Називається компілятора Clang, але ми повернемося до цього через тиждень або два час. На даний момент, я просто хочу, щоб тип Марка привіт-0, але ті з вас, хто порівняння в ваших умах, що я тільки набрали до того, що я повинен був набраний може вже знаєте, що я зробив щось тут не так. Тепер, є чітко деякі помилки. Перш, ніж я навіть дивитися на те, що вони, в будь думки про те, що я зробив не так? СТУДЕНТИ: [проміжне VOICES]. DAVID мала: Так. Мені не вистачає заголовка файлу бібліотеки. Будь-який з них. Фото ч називають заголовок файли, а вони всі разом належать речі називаються бібліотеками. Бібліотеки просто шматки коду що інші люди написали. Таким чином, стандартний [? Я?] Бібліотека колекцію файлів, що містять код що інші люди написали. Так що мені не вистачає цього. Отже, чому я отримую повідомлення про помилку? Ну, дозвольте мені прокрутити назад в моє вікно терміналу тут. І, на жаль, в C, а у великій кількості Мови програмування, особливо Якщо все це для вас в новинку, помилка повідомлення точні, але вони також досить загадковим. І помилки тут, у червоному, є "Неявне оголошенні бібліотечної функції Е з типом ", а потім вона прокручується на наступний рядок, «INT будівництва символ *, ... "Це просто стає дійсно Переважна швидко. Але те, що ви повинні почати робити, якщо, знову ж, нові на все це, це просто починають шукати за ключовими словами. Очевидно, що я не міг зрозуміти половину слів я бачу тільки поки. Ви будете, тим не менш, у тижневий термін. Але я бачу, Є. І це повинно початися, незабаром, щоб бігати пам'яті, все гаразд, Є. Щось не так з Є. Хіба я записати це так? Ні, це не схоже - о. Я не можу використовувати його, якщо я не навчить компілятору, що він існує. І так, знову ж таки, йти з вашим інстинктам, навіть якщо ви насправді не розуміють фактичні повідомлення про помилки. І дійсно, рішенням тут є просто включити його у верхній частині файлу так, Пересохраненіе мій файл з Control-S або в меню Файл. І якщо я зараз повернуся сюди, Я збираюся очистити це. Control-L є просто хороший спосіб Для очищення екрана. А потім я збираюся набрати "зробити привіт 0 "Enter, і тепер я все ще бачу загадкові послідовність символів, але ми повернемося до цього. Це те, що робить робить для вас. Це автоматизація процесу прийняття досить дратівливим участю команд Clang, фактичне компілятора. Але те, що у мене немає помилки означає, що ця річ повинна працювати. Так що я зараз збираюся зробити - Дозвольте мені ще раз збільшити - ./hello-0 Enter, та й взагалі, я бачу, "Hello, World". Отже, давайте підвищення це дуже небагато просто повторити кроки, які ми призначені. Я збираюся перейменувати цей з Зберегти як, щоб hello1.c. А тепер я збираюся оголосити змінну називається ім'я, так що ім'я рядка, і я збираюся покласти в нього Значення котирувань кінець цитати D - V-I-D великим цитуючи коми. І тепер я збираюся замінити "Мир" з тим, що заповнювач для рядка? % S. А тепер, скільки аргументи повинні Е взяти на цей раз? Так два. Так що я виходжу на вулицю з цитат. Я типу "ім'я" після коми. Але я зробив щось ще так на цей раз. Але давайте припустимо, що я не зробив розумію, що ще. Відпусти мене тут. І зауважте, теж, я отримую трохи нудно набравши "0 привіт зробити" все час, "робити" і все це. Отже, виявляється, в Лінус ви можете часто била стрілку вгору на вашому клавіатура, і ви можете фактично прокрутки через всі команди, які я виконані попередні зараз і займемося. Так що, якщо я це зроблю, вгору, вгору, Тобто зробити привіт 0. Я не хочу цього. Я просто хочу, щоб змінити це, щоб привіт 1 на цей раз, Enter. Зрештою, що буде заощадити ваш час. Добре. На жаль, є помилка. Отже, дозвольте мені прокрутки вгору. Це виглядає як я дійсно вирізали цієї програми. Я маю на увазі, мій бог, це два рядки коду, і 10 рядків помилок. Але подивіться на верхній перший. Використання неоголошеної рядки ідентифікатора. Я мав на увазі стандартні I N? Ні, я цього не зробив. Я мав на увазі рядка. Але де ж строкової змінної тип, оголошений, дд ми можемо сказати? Так що це в CS50 бібліотеки. Так що не вистачає, в цих перших пару тижнів просто використовувати C, що дає нам. Я також збираюся піднятися тут, і я міг би поставити його вище або нижче, але я буду просто тримати його алфавітному щоб тримати речі впорядковано. Я збираюся включити cs50.h, який попередньо встановленої для Ви на CS50 приладу. І це з відкритим вихідним кодом, так що навіть люди в Інтернеті, може використовувати його на своїх власних комп'ютерів. Але це приходить з CS50 приладу. Так що тепер дозвольте мені повернутися і перекомпілювати зробити це з 1 привіт. Чорт візьми. Ще однією помилкою. Дозвольте мені прокручування до першого, все ж. Це одне це трохи складним. Багатосимвольний символьна константа. Це не допомагає мені. Але зверніть увагу, Clang, принаймні трохи трохи пристойний, причому з невеликим зелені вставки символу, він говорить: ось де я облажався. Чому це вказує, з цією маленькою зелена стрілка, на наступний одинарні лапки на моє ім'я? Так що це одна з речей, які ви просто звикнути, особливо якщо ви були програмування на Python або JavaScript, або інших мовах, де ця деталь не має значення. У C, це має значення. Якщо ви розкажете рядок, яка є послідовністю 0 чи більше символів ви насправді повинні використовувати подвійні лапки. Так що я насправді потрібно, щоб змінити це назад , Щоб відкрити цитати, цитати близько, з подвійні лапки. Одиночні лапки, мають своє місце, але тільки тоді, коли ви використовуєте окремі символи, але про це іншим разом. В даний час, подвійні лапки необхідні. Так що тепер, дозвольте мені повернутися до моєї терміналу вікна, переконайтеся, привіт 1. А хто впевнений? Ця програма тепер збираюся правильної компіляції? ОК. Так втрьох думаю, що це. Добре. Enter. І це насправді. Так що немає ніякої помилки в теперішньому часі, навіть хоча цієї програми отримали трохи більш складним. Якщо я зараз точка слеш привіт 1, Enter, він збирається сказати "привіт, Девід". Але давайте зробимо третьої ітерації З цієї якому програма по справжньому динамічним. Дозвольте мені піти далі і змінити файл ім'я, тільки для узгодженості з файли, які ви будете мати у своєму розпорядженні Вам потім в Інтернеті. Enter. А тепер я піду, а не в Магазин "David" жорстко тут. Що я міг зробити, щоб дуже просто покращити цю програму? Я можу зателефонувати GetString. Це може бути трохи неочевидний що має відбутися, тому що я збираюся насправді додати ще одну лінію, Е, і сказати назву, товстої кишки, близько цитату, просто дати користувачеві підказку на екрані. І тепер я збираюся піти сюди, і я збираюся використовувати мої клавіш. Я збираюся піти вгору, вгору, а також змінити привіт привіт від 1 до 2, Enter. І на щастя, я роблю прогрес. А тепер я збираюся піти вгору розставити всі крапки і слеш привіт змінити його на 2, Enter. І тепер моя програма - Я Збільшення - стає Трохи красивіше. Ім'я буде, скажімо, Роб У цей раз введіть, привіт, Роб. Ми можемо зробити це знову. Ім'я, Лорен, Enter. Ім'я, Йосип, Enter. Ім'я, давайте намагатися бути важко, Enter. Ех. Це не зовсім помилка. Так що це просто трохи некрасиво. Тому, можливо, ми могли б вирішити цю в майбутньому, не зараз. Але як би ви інстинктивно йти про вирішення , Що особливу проблему? Все це виглядає нерозумно. Як уникнути речей виглядати нерозумно? Таким чином, ми могли б зробити, добре, я почув пару речей, стан і петлі. Ми могли б використовувати, один, умовою, щоб перевірити яка довжина рядка Користувач дав нам? І якщо він дорівнює 0, то це просто в лапках, вони просто натисніть Enter, потім можливо, я повинен кричати на них і запропонує їх знову. Але як спонукати їх знову? Ну, я також чув петлю, і я не міг робити це знову і знову і знову за допомогою якого користувач те ж саме. Ну, давайте зробимо один приклад з використанням іншого функції в CS50 бібліотеки. Дозвольте мені в цей файл. Дозвольте мені створити новий. І я буду називати його adder.c, тільки тому, що це легко зробити просту арифметику, навіть якщо це буде повністю захват з тим, що ви могли б зробити з будь-яким сучасним комп'ютером. Але дозвольте мені йти вперед і зараз - Я засвоїв свій урок останнього часу - включає cs50.h, увімкніть stdio.h, внутр Основний порожнечу, яка, на даний момент, я просто взяти на сліпій вірі, але ми припускаємо, що той зрозуміє, що це означає, що незабаром. І я збираюся щось сказати , Як "дайте мені Int." А тепер, як я можу отримати Цілочисельне? Я хочу, щоб в кінцевому рахунку, оголосити змінну називається Х Тип Внутрішні і зберігати в ньому ціле число від користувача. Так, щоб був повний рот. Але якщо хтось хоче запропонувати, як Я сповіщу ціле число, зване X? Int х. Таким чином, це дійсно так просто. Дайте мені Int. Назвіть це х. Тепер я використовую оператор присвоювання. І як я можу зберігати від залишили значення користувач? Я не хочу називати GetString, Очевидно, а GetInt. Будь-які аргументи? Ні. Так що це відкрита дужка, поруч хлопець негайно, а потім крапка з комою завершує лінію. Тепер дозвольте мені зробити це знову. Дай мені ще один Int. На цей раз я зроблю Інтелект, давайте називають його у, дорівнює GetInt. А тепер зробимо щось супер-прості як деякі математики. Таким чином, Е, то сума% D є Місце для Int. І% D, період, зворотний слеш-н. Добре. Так що це не насправді математику. Але якщо я хочу сказати, що ця сума вартості плюс це значення дорівнює це інше значення, скільки аргументів на Всього я повинен давати Е, в кінцевому рахунку? Так чотири, вірно? Цей рядок, а потім три значення. Так X є першим я хочу бути підключені першими% D. Y буде наступний. І тепер я ніби хочу сказати, г, але г не існує. Але це не має великого значення. Тому що що б ви робили інстинктивно, Особливо, якщо у вас графічний калькулятор, що ви вводите? Як щодо X плюс Y? Так що це не фактичне змінної. Це просто сума двох інших змінних. І це абсолютно законно. C звичайно, розуміє прості арифметичні як це. Крапка з комою, збережіть. Тепер дозвольте мені перейти сюди і тип Марка гадюка, Enter. Немає помилки, так що це теж прогрес. Введіть суматора. І ще одне поєднання клавіш, якщо ви починаєте нудьгувати з усіх команд - Якщо ви починаєте набирати команду, як і точка слеш оголошення, а от де ваші нудьги вмирає, як правило, можна вдарити Рахунок, щоб мати комп'ютер закінчити відпочинку фрази для вас, якщо це не неоднозначне, що має йти після оголошення. Отже, дозвольте мені тепер іти вперед і натиснути кнопку Enter. Дайте мені Інтелект, 1, 2, і На щастя, це 3. Але, як завжди, тестування програм не повинно зводитися до просто намагаюся його один раз. Дозвольте мені спробувати кутку випадку, як і негативні 1, дай мені 1, а одна перевіряє, як добре. І я, ймовірно, хочуть зробити ще кілька ретельне тестування, але я впевнений, зручна з тим, де що знаходиться. Ну, а тепер давайте спробуємо інший програмі що цього разу використовує трохи інший синтаксис. Дозвольте мені створити новий файл. Я буду називати цю conditions0.c на лінію з деяких інтернет-коду. І дозвольте мені йти вперед і робити включають cs50.h, включають stdio.h, в головному порожнечу - ОК. Там ми йдемо. У нас є стандартні шаблонні. І на цей раз я збираюся сказати, Е, "Я хотів би Інтернешнл, будь ласка", просто щоб зробити запрошення трохи більш доброзичливими. А тепер я хочу, щоб отримати Int від користувача. Я буду називати його N на цей раз, просто тому N звучить як числа. GetInt, а тепер, що ж Я хочу з ним робити? Ну, якщо п - і я буду збільшення - якщо п більше 0, хочу зробити наступне - Е "Ви вибрали позитивне число." В іншому випадку, я збираюся ввести Е "Ви визначена негативна номер ". Гаразд. Так що це програма, хоча я зробив це швидко, виглядає правильно синтаксично. Дозвольте мені спробувати це. Зробити стан 0. , Здається, працює. Умова 0, введіть. Давайте дамо йому ІНТ 50. Я вибрав позитивне число. Давайте спробуємо ще раз. Умова 0. Негативно 50. Я вибрав негативне число. Але тепер, дозвольте мені вибрати те, що ми будемо тримати викликом кут випадок, яка є більш Цікавий випадок, що ви думаєте може дати вам деякі неприємності, 0. Тепер, я впевнений, що це один з тих випадках, коли кут нуля ні позитивної, ні негативної, так що моя Програма, хоча і в синтаксично Правильно - він збирає, він працює - не є логічно правильним. Так в чому ж тут просто виправити, якщо я хочу виявити, якщо я хочу обробляти N дорівнює 0 окремо? Таким чином, якщо N дорівнює 0, то я хочу сказати, щось на зразок Е "Ви обрали 0". Дозвольте мені спробувати це зараз. Дозвольте мені повернутися тут, зніміть моє вікно, і перекомпілювати. Гектометри Одна помилка генерувати. Але я ви хочете перевірити Якщо N дорівнює 0. Отже, ще раз, ще один дурний щоб звикнути до, знак рівності оператора привласнення. Так це насправді помилка в тому, технічно, хоча компілятор захищав мене від себе, ми б технічно копіюванні 0 в N, які не те, що я хочу. Я хочу для перевірки рівності з рівних рівних. І так, що тепер може бути моє найкраще рішення. Дозвольте мені зберегти це насправді, як, скажімо, условіях1, бути новими та поліпшеними. Так що тепер, якщо я перекомпілювати, це зробить умови - вигуки - зробити условіях1 точка слеш условіях1, Enter, "Я хотів би Інтелект, будь ласка. "Я збираюся піти вперед і типу 50. Він як і раніше добре. Негативно 50, як і раніше добре. 0, і, дійсно, виявив що я вибрав 0. Так що ще я можу тепер з цим робити? Ну, ми можемо, звичайно, зробити більш складні речі. Але те, що я хотів би запропонувати це що ми врешті-решт на цій ноті тут. Якщо ми тягнемо це, ви побачите, мабуть, улюблений мультфільм ваш до сьогоднішнього дня ви могли б ніколи не розумів. А ось про якість сміху Ви повинні отримати з жартами CS. Так от про право. Але ще більш переконливо, я думав, що дайте нам трохи тизер понеділок. Отже, ми почали використовувати цілі числа. Ми називають поплавців. Ми навіть називають двомісних, які, знову ж таки, дати вам номеру після десяткової точки. Але виявляється, що і поплавки двомісні, і, насправді, комп'ютери, По суті, не може висловити деякі значення точно. Ми знаємо з математики класів, які можна мати будь-яку кількість чисел після десяткового дробу. І ви можете навіть поставити вертикальну риску сказати, що ці тривати вічно. На жаль, ви не можете дійсно зробити це в комп'ютер. І таким кутом випадки виникають. Наприклад, припустимо, ви робити щось фінансових. Ви робите математику з відсотки і з доларами і центами. А ті, що не центів обов'язково складі. Ну, виходить, що фракція пенні може почати складаються, коли моделюється з комп'ютерною системою таким чином, що розумні люди можуть скористатися. І ті з вас, хто не бачив, я б б дати вам 30-секундний тизер чудовий фільм відомого як офісні приміщення, які малюють картину завдання будемо вирішувати Перше, що в понеділок. Якби ми могли збільшити гучність трохи, я даю вам 30 секунд офісних площ. [ВІДТВОРЕННЯ ВІДЕО] -Я маю на увазі, ти, ти не показувати і ви отримаєте зберегти вашу роботу. -Взагалі-то, я просувається. -Я можу запрограмувати вірус, який би рип, що місце від великого часу. -Ну, як це працює? -Кожен раз, коли є банк угоди де процентні обчислюється, і є тисячі на день, комп'ютер закінчується з цими частками відсотка. -Але я не збираюся нічого протизаконного. -Незаконним? Самір, це Америка. -Ми повинні клянусь Богом. -Якщо ніхто не знає про це крім нас, все гаразд? немає членів родини, не подруг, ніхто. -Звичайно. -Згоден. -Не хвилюйся, хлопець. Я нікому не скажу, або. [КІНЕЦЬ відеовідтворення] DAVID мала: Так це, тоді, CS50, , Яка була офісні приміщення, і вона буде все сенс у понеділок. Побачимося. Оповідач: Наступного CS50, Роб підлаштовується бути від Гарвардський харчування.