[Музика Відтворення] ZAMYLA чан: Що б ви хотіли отримати $ 10000000 прямо зараз або отримати пенні кожен день місяця, де кожний наступний день, ви отримуєте в два рази більше пенні ви отримали напередодні? У гроши, ми збираємося довести, чому ви повинні виразно взяв копійки. Ваше завдання, щоб написати pennies.c-- програму, яка спочатку запитує користувача, як скільки днів у місяці та Потім питає, скільки грошів користувача отримає в перший день. Програма повинна потім обчислити суму, яку користувач буде мати накопичений в кінці місяць і показати його. Ми можемо розбити цю програму до в кілька завдань. Нам потрібно буде запитувати кілька входів користувача - дні і місяці, і гроші на перший день. Ми повинні відслідковувати, скільки грошей Користувач має і оновлювати його кожні день, подвоєння кількості пенні, які вони отримують. І, нарешті, ми друкуємо їх підсумкова сума, в доларах. Давайте снасті входу користувача в першу чергу. Я збираюся відкрити apples.c, коротка програма, яка займається з входами і виходами. У верхній тут, я включив деякі бібліотек, що мені потрібно - CS50 бібліотеку і стандартний Бібліотека введення / виведення. Я друкую рядка за допомогою Е функцію з стандартна бібліотека вводу / виводу. Але фактичний висновок запиту відбувається у наступному рядку з цим GetInt функції в CS50 бібліотеки. GetInt отримує вхідні дані від користувача і гарантує, що вхід являє собою ціле число. Так я зберігаю входу користувача в ціле Я, відняти 1 з I, а потім роздрукувати нове значення, якщо я. Після компіляції apples.c допомогою Команда "зробити яблука," У мене є Яблука виконуваний файл. Запуск цього, я буду входу 1. Програма розповідає мені, що У мене є 0 яблук залишилося. І так, щоб працювали як очікувалося. Так давайте запустимо це знову і негативним входом 1. Тепер, маючи негативне кількість яблук насправді не має сенсу, але Програма приймає його, бо вада 1, ну, це є цілим числом. А тепер програма або монстра всередині програми їсть негативним яблуко, і тепер у мене є негативними 2 яблука. Хм, так от один урок - хоча функція і GetInt функцій, пов'язаних як GetFlow або GetString отримати правильний тип даних, повинні переконатися, що вхідні робить для вашої програми. У гроши, він не буде робити якраз справний для цілого, ви повинні будете зробити Переконайтеся, що користувач вводить ціле які мають сенс даного контексту. Місяць може мати тільки 28, 29, 30 або 31 днів. Ми хочемо постійно вимагати допустиме ціле число. Якщо вони вводять ціле за межами нашої прийнятих кордонів, ми будемо підказувати їм НЕ знову і знову, поки ви дати нам дійсне ціле. Нагадаємо, "Repeat Until" блокувати в порожньому місці? Ви можете зробити аналогічну конструкцію, у Сі з ", а" петля або "зроби той час як" петлю. Структури в той час як петля має стан які повинні бути виконані для тілі циклу для виконання. Це має виглядати трохи схожі, тому що умова так само, як Подряпини блоків з кутами і йде в дужках з ", а" петлю. Так що умова буде перевіряти ціле знаходиться в межах відповідних кордонів. Ви можете підказати ціле число, використовуючи GetInt а потім виконати ваші ", а" петлі, повторюючи швидкого і друку інструкцій, в той час як вхідний не є допустимим. Ще один спосіб забезпечити правильний вхід користувача є використання "зроби той час як" петлі, який дуже схожий на якийсь час циклу. "Зроби той час як" петля виконує код всередині тіла ті, і потім перевіряє Чи умова чи ні. Це корисно для отримання користувацького введення тому що ви знаєте, що вам потрібно щоб підштовхнути їх хоча б раз. Якщо умова не виконується, програма буде виконувати лінію після Вашої "зроби той час як" петлю. Якщо умова виконується, хоча, цикл буде повторюватися "Зроби той час як" петля для перевірки користувальницького вхід буде виглядати приблизно так. Я оголосити змінну N, GetInt і потім повторіть, поки N не є дійсним. І цей процес, я пояснив, використовував цілочисельних типів даних, які Ви будете використовувати для днів місяця. Але ми знаємо, що число копійки будуть накопичуватися швидше, тому для того, щоб зберігати великі числа, використовувати цей тип даних LongLong, але пам'ятайте, той же Принцип перевірки застосовується. Дивовижний, тому, як тільки у нас є два дійсних вводів від користувача - днів у місяці та копійки У перший день - ми можемо перейти до наступного частини програми. У перший день, користувач починає з Однак багато гроші вони зазначені і кількість пенні, що вони отримати на наступний день в два рази. Так що має сенс відслідковувати з цих двох сум - скільки грошей у користувача і як багато гроші вони дадуть. Тепер, робити щось для 28 до 31 днів повторюються, так що давайте використовувати "для" петлі для перебору днів місяць, оновлення загального і Пенні складуть кожен раз. "За" синтаксис циклу містить наступне - ініціалізація, умова, та оновлення. Ваші "за" цикл ініціалізації змінної, коли вона перша входить до циклу. Якщо умова виконується, то тіло циклу буде виконуватися. Після цього оновлення будуть виконуватися. Якщо умова все ще виконується, цикл буде виконуватися і оновлення, і Повторюю, поки ваш стан оцінюється як істина. Ось "за" цикл, який ділить цілого р 2 в цілому 10 разів. Зверніть увагу, як я оголосив цілих р поза моє "за" петлі, таким чином, щоб ціле може бути доступна за межами "для" циклу. Після місяця минуло, час щоб повідомити користувачеві, скільки грошей вони отримали. Згідно специфікації, ви повинні сказати користувачеві скільки доларів, а не як багато гроши, які вони мають. Але до цих пір, ви стежили за Всього й гроші використанням LongLongs, які є цілими числами. Є 100 пенні до $ 1, так що, якщо не кількість гроши є кратній 100, вам потрібно представляють знаків після коми. Подвоїлося автотіпія дозволяє Вам це зробити. Так як же нам конвертувати з представляють гроши доларів? Давайте поглянемо pi.c. При цьому програма займає LongLong big_pi і ділить його на 100 000, і друкує результат до п'яти знаків після коми. Якби ми хотіли відображення чотирьох десяткових місця, то ми можемо просто замінити цю номер тут. Так давайте збережемо, компілювати Пі, і потім побачити результат, який ми розраховувати на 3,1415 - Перші п'ять цифр числа пі. Це не все ж. І чому? Ну, тому що це big_pi LongLong, який є цілим числом, яке не буде відслідковувати знака після коми. Модифікація мені потрібно роблять це в дивізіоні. Мені потрібно, щоб кинути до подвійного тут раніше ділення, так як парний не може тримати відслідковувати десяткових знаків. І я збираюся додати новий рядок Тут для кращого форматування. І тут у нас є це - 3,1416. Ви можете помітити, що вона друкує 3.1416 замість 3,1415, як очікується. Це тому, що під час турів поділ процесу, а не просто усічення значення. Тепер ви повинні бути в змозі роздрукувати підсумкова сума правильно, що закінчує програмі. Поздравляю. Мене звуть Zamyla. І це копійки. [Музика Відтворення]