1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:01,960 ВЕДУЧИЙ 1. Давайте поговоримо про воду. 3 00:00:01,960 --> 00:00:07,280 У цьому завданні, ми просимо користувача повідомити нам, як довго протягом декількох хвилин їх душ 4 00:00:07,280 --> 00:00:11,040 а потім обчислити еквівалент кількість пляшок води 5 00:00:11,040 --> 00:00:12,970 які використовували їх душ. 6 00:00:12,970 --> 00:00:16,379 >> Так що ж наше до робити, для цієї проблеми? 7 00:00:16,379 --> 00:00:20,050 По-перше, ми будемо хотіти запитувати і потім підтвердити 8 00:00:20,050 --> 00:00:22,100 вхід, який користувач дає нам. 9 00:00:22,100 --> 00:00:24,790 Після того, як ми гарантуємо, що ми мати дійсний для користувача введення, 10 00:00:24,790 --> 00:00:28,230 ми будемо обчислювати еквівалентну кількість пляшок води 11 00:00:28,230 --> 00:00:30,770 що користувач мав протягом їх душ, а потім ми 12 00:00:30,770 --> 00:00:33,720 збирається розповісти їх висновок на друк цей номер. 13 00:00:33,720 --> 00:00:37,230 >> Так що давайте вирішувати наш перший Завдання, спонукаючи і перевірки 14 00:00:37,230 --> 00:00:38,550 користувача введення. 15 00:00:38,550 --> 00:00:40,910 Для цього ми написали Функція для вас називається 16 00:00:40,910 --> 00:00:43,950 get_int знаходиться в Бібліотеці CS50. 17 00:00:43,950 --> 00:00:48,710 get_int гарантує, що входи користувачів ціле число, так що будь-які позитивні числа, 18 00:00:48,710 --> 00:00:51,700 негативні числа, або нуль все. 19 00:00:51,700 --> 00:00:55,900 Але якщо користувач вводить що-небудь ще, так що будь-яка комбінація букв або цифр 20 00:00:55,900 --> 00:00:59,710 або десяткових чисел, то користувачеві буде запропоновано повторити спробу 21 00:00:59,710 --> 00:01:04,319 і функція нічого не приймає до тих пір, поки користувач не дає їм ціле число. 22 00:01:04,319 --> 00:01:06,410 >> Так як же ми використовуємо get_int? 23 00:01:06,410 --> 00:01:10,830 Якщо ви відкриєте свій робочий простір і створити файл з ім'ям integer.c давайте 24 00:01:10,830 --> 00:01:12,110 введіть наступну команду. 25 00:01:12,110 --> 00:01:14,760 Хештегом включають cs50.h. 26 00:01:14,760 --> 00:01:18,480 Це необхідно тому, що get_int є функцією бібліотеки CS50, 27 00:01:18,480 --> 00:01:21,890 тому ми повинні включати хештегом його заяву в порядку 28 00:01:21,890 --> 00:01:23,370 щоб використовувати цю функцію. 29 00:01:23,370 --> 00:01:26,570 А потім в моєю основною функціонувати Я просто 30 00:01:26,570 --> 00:01:29,560 щоб просто викликати функцію get_int. 31 00:01:29,560 --> 00:01:31,750 >> Так що давайте запустимо і подивимося, як це працює. 32 00:01:31,750 --> 00:01:35,092 Я вже склав його, так що давайте просто йти вперед і запустити цю програму, 33 00:01:35,092 --> 00:01:36,480 ./integer. 34 00:01:36,480 --> 00:01:39,880 Тут у мене є запрошення і ось де вхід я значення. 35 00:01:39,880 --> 00:01:44,880 Скажімо, я вставив тільки деяке ціле число, 50, програма і квити вважати діяльності 36 00:01:44,880 --> 00:01:45,960 і що це таке. 37 00:01:45,960 --> 00:01:49,350 >> Але сказати, що я запустити його знову і Я ввожу щось інше. 38 00:01:49,350 --> 00:01:51,350 Може бути, привіт світ. 39 00:01:51,350 --> 00:01:55,660 Це не є цілим числом, так що програма запропонує мені повторити. 40 00:01:55,660 --> 00:01:59,160 Давайте спробуємо ще раз з можливо, десяткову на цей раз. 41 00:01:59,160 --> 00:02:03,450 0,5, знову ж таки, не є цілим числом, так програма не прийме 42 00:02:03,450 --> 00:02:05,290 і він скаже мені, щоб повторити спробу. 43 00:02:05,290 --> 00:02:07,070 Так давайте дамо йому ще один номер. 44 00:02:07,070 --> 00:02:09,830 Програма приймає його, завершує роботу, і ми зробили. 45 00:02:09,830 --> 00:02:13,520 >> Так що тепер у нас є функція що дозволяє нам і забезпечує 46 00:02:13,520 --> 00:02:16,790 що користувач вводить ціле число, але як ми можемо 47 00:02:16,790 --> 00:02:20,330 насправді стежити з ціле число, введеної користувачем? 48 00:02:20,330 --> 00:02:25,260 Ну, все, що ми зробимо, це магазин це значення в змінній, скажімо, п. 49 00:02:25,260 --> 00:02:30,580 Так що, якщо я оголошую ціле число п, і я встановив, що значення get_int, 50 00:02:30,580 --> 00:02:34,700 то п буде зберігати все, користувачем значення введену. 51 00:02:34,700 --> 00:02:38,620 >> Добре, так що тепер ми забезпечили, що користувач дасть нам ціле число 52 00:02:38,620 --> 00:02:42,550 і ми знаємо, як стежити цілого числа, але пам'ятайте, 53 00:02:42,550 --> 00:02:45,610 цілі числа, як позитивні, так і негативні. 54 00:02:45,610 --> 00:02:49,110 Так що це насправді не має сенсу В контексті цієї проблеми 55 00:02:49,110 --> 00:02:53,570 що користувач приймає душ , Скажімо, негативні 12 хвилин. 56 00:02:53,570 --> 00:02:59,310 Таким чином, ми повинні переконатися, що користувач насправді дає нам позитивне ціле число. 57 00:02:59,310 --> 00:03:02,130 Тепер у нас немає просто одна функція для цього, 58 00:03:02,130 --> 00:03:04,620 таким чином, ми будемо мати щоб створити це самі. 59 00:03:04,620 --> 00:03:07,190 >> Тому ми хочемо, щоб постійно запропонує користувачеві 60 00:03:07,190 --> 00:03:09,730 поки вони не дають нам позитивне ціле число. 61 00:03:09,730 --> 00:03:14,300 Якщо я роблю щось постійно, то що те саме петлі, повторення. 62 00:03:14,300 --> 00:03:19,130 Таким чином, однією з конструкцій, які ми використовуємо в C для виконання повторення і петлі 63 00:03:19,130 --> 00:03:20,410 петля в той час. 64 00:03:20,410 --> 00:03:23,020 Таким чином, в той час як контур, як і показаний тут, буде виконуватися 65 00:03:23,020 --> 00:03:27,030 все, що знаходиться в тілі циклу, як Поки даних умова приймає значення 66 00:03:27,030 --> 00:03:27,900 до істини. 67 00:03:27,900 --> 00:03:30,640 Як тільки ця умова оцінюється як помилкове, то 68 00:03:30,640 --> 00:03:34,830 програма перейде до того, що приходить після того, як тіло циклу. 69 00:03:34,830 --> 00:03:39,400 >> Таким чином, в той час як петлі збираються бути дуже корисним в CS50. 70 00:03:39,400 --> 00:03:42,590 Але в даному конкретному випадок, ми знаємо, що ми 71 00:03:42,590 --> 00:03:48,140 збирається запропонувати користувачеві принаймні, один раз і потім тільки контур, якщо це необхідно. 72 00:03:48,140 --> 00:03:51,080 Таким чином, тут ми приходимо до Спеціальна конструкція і це 73 00:03:51,080 --> 00:03:55,020 дуже схоже на деякий час петля називається петлею зроби час. 74 00:03:55,020 --> 00:03:58,840 >> Таким чином, цикл Do-то час виконує тіло циклу принаймні один раз 75 00:03:58,840 --> 00:04:01,750 а потім він перевіряє чи повинен він виконати, 76 00:04:01,750 --> 00:04:05,310 на відміну від циклу в той час як, яка буде перевіряти стан 77 00:04:05,310 --> 00:04:07,200 а потім виконати тіло. 78 00:04:07,200 --> 00:04:11,880 Таким чином, в циклі робити-а то, що ми могли б зробити, це запропонувати користувачеві ціле число, 79 00:04:11,880 --> 00:04:14,450 а потім перевірити, якщо це інвалід чи ні. 80 00:04:14,450 --> 00:04:18,130 Якщо це недійсний, то ми будемо повторіть процес, що пропонує користувачеві 81 00:04:18,130 --> 00:04:22,290 щоб дати нам ще одне ціле число, а потім тільки тоді, коли, що ціле число є дійсним, 82 00:04:22,290 --> 00:04:25,060 ми продовжимо все, що приходить після цього. 83 00:04:25,060 --> 00:04:28,030 >> Тепер ви помітите, що декларація цілого числа п 84 00:04:28,030 --> 00:04:31,670 трохи відрізняється від того, що ми це робили раніше в попередньому прикладі 85 00:04:31,670 --> 00:04:33,640 і це через обсягу. 86 00:04:33,640 --> 00:04:37,920 Якби ми оголосили число п всередині в тілі циклу Do-в той час як, 87 00:04:37,920 --> 00:04:42,640 то ми не змогли б отримати доступ що значення п за межами цих кучерявого 88 00:04:42,640 --> 00:04:45,050 розчалок із зазначенням тіло циклу. 89 00:04:45,050 --> 00:04:51,080 Але ми насправді хочемо, щоб отримати доступ до значення п надалі в нашій програмі. 90 00:04:51,080 --> 00:04:55,730 >> ОК, так що тепер давайте поговоримо про те то, що ця умова має бути. 91 00:04:55,730 --> 00:05:00,400 Ми хочемо тільки reprompt Користувач, поки п є недійсним. 92 00:05:00,400 --> 00:05:04,640 Так що думайте самі, що для інваліда ціле значення буде виглядати 93 00:05:04,640 --> 00:05:08,060 а потім створити логічне значення вираз, щоб висловити це. 94 00:05:08,060 --> 00:05:13,070 >> Ми майже закінчили з нашим підзадачі підказок і перевірки користувальницького введення. 95 00:05:13,070 --> 00:05:16,010 Так давайте це трохи зробити трохи більш дружнім до користувача 96 00:05:16,010 --> 00:05:18,390 і дати користувачеві трохи трохи більше інформації 97 00:05:18,390 --> 00:05:20,510 про те, що ми спонукаючи їх. 98 00:05:20,510 --> 00:05:24,500 Так що давайте підкаже користувачеві, згідно специфікації, з рядком хвилин. 99 00:05:24,500 --> 00:05:28,935 Таким чином, використовуючи ваші PRINTF заяви, зробити Переконайтеся, що ви підходите це точно. 100 00:05:28,935 --> 00:05:30,230 >> Добре. 101 00:05:30,230 --> 00:05:33,840 Так що тепер у нас є дійсний користувач вхід, позитивне ціле число 102 00:05:33,840 --> 00:05:37,400 значення скільки хвилин вони провели в душі. 103 00:05:37,400 --> 00:05:41,300 Так що ж далі, щоб розрахувати еквівалентну кількість пляшок. 104 00:05:41,300 --> 00:05:45,250 Що ми будемо робити тут, можливо, бути дуже очевидно для вас, по-перше, 105 00:05:45,250 --> 00:05:46,640 і це нормально. 106 00:05:46,640 --> 00:05:49,320 Те, що ми хочемо зробити, це ми хочуть, щоб почати практикувати 107 00:05:49,320 --> 00:05:53,810 ідея виявлення закономірностей і розробці формули для завдання. 108 00:05:53,810 --> 00:05:57,200 >> Таким чином, ми сказали в специфікації що одна хвилина в душі 109 00:05:57,200 --> 00:05:59,960 Це еквівалентно приблизно 12 пляшок води. 110 00:05:59,960 --> 00:06:03,020 Отже дві хвилини буде бути еквівалентно 24, 111 00:06:03,020 --> 00:06:05,850 і через п'ять хвилин буде еквівалентно 60. 112 00:06:05,850 --> 00:06:08,390 Так що тепер, якщо ви думаєте, у вас є це, то давайте 113 00:06:08,390 --> 00:06:10,390 побачити, якщо ви можете придумати з малюнком або формули 114 00:06:10,390 --> 00:06:14,990 щоб висловити, якщо ми сказати, п хвилин, скільки пляшок води 115 00:06:14,990 --> 00:06:17,930 б, що виражається через п? 116 00:06:17,930 --> 00:06:20,680 >> Знову ж таки, навіть якщо це може бути просто на перший погляд, 117 00:06:20,680 --> 00:06:23,240 пізніше, коли ми отримуємо складніші завдання 118 00:06:23,240 --> 00:06:26,360 ми будемо хотіти, щоб потрапити в практика виявлення 119 00:06:26,360 --> 00:06:30,120 візерунки і розвиваються формули щоб зрозуміти ці речі. 120 00:06:30,120 --> 00:06:33,450 >> У C ви маєте доступ до стандартні арифметичні операції, 121 00:06:33,450 --> 00:06:36,520 додавання, віднімання, множення і ділення. 122 00:06:36,520 --> 00:06:38,420 Так що я залишу його тепер, щоб з'ясувати, 123 00:06:38,420 --> 00:06:41,300 як висловити еквівалентну кількість пляшок 124 00:06:41,300 --> 00:06:43,990 що користувач споживатися під час їх душ. 125 00:06:43,990 --> 00:06:45,700 >> Добре, ми майже закінчили. 126 00:06:45,700 --> 00:06:50,650 Ми спонукали користувача для їх введення, ми забезпечили, що вона діє на вхід, 127 00:06:50,650 --> 00:06:53,330 а потім ми з'ясували, як обчислити еквівалентну 128 00:06:53,330 --> 00:06:55,480 кількість пляшок, які вони споживали. 129 00:06:55,480 --> 00:06:59,430 Таким чином, останнє, що потрібно зробити, це вихід еквівалентну кількість пляшок 130 00:06:59,430 --> 00:07:02,410 і, ми сподіваємося заохочувати їх економії води. 131 00:07:02,410 --> 00:07:06,270 >> Виведення значення буде бути Printf заяву. 132 00:07:06,270 --> 00:07:09,720 Якби я хотів сказати вам, що я є три домашніх тварин, наприклад, 133 00:07:09,720 --> 00:07:13,090 Я міг би використовувати PRINTF заяву що виглядає приблизно так. 134 00:07:13,090 --> 00:07:15,880 У мене є три домашніх тварин, і новий лінія для приємного форматування. 135 00:07:15,880 --> 00:07:17,880 >> Тепер ми не хочемо просто жорсткий код речі. 136 00:07:17,880 --> 00:07:20,740 Скажімо, число моїх домашні тварини змінюються з плином часу. 137 00:07:20,740 --> 00:07:25,080 Тоді я буду використовувати наповнювачі в моєму PRINTF заяві. 138 00:07:25,080 --> 00:07:27,350 Так ось моє число ціле. 139 00:07:27,350 --> 00:07:31,480 Так що я збираюся зробити заповнювач для цілого, використовуючи% I. 140 00:07:31,480 --> 00:07:33,930 Я збираюся написати рядок, а потім після рядка 141 00:07:33,930 --> 00:07:38,000 Я пишу кому і потім змінна, яку я хочу надрукувати. 142 00:07:38,000 --> 00:07:42,730 Таким чином, це значення буде надруковано замість цього заповнювач,% I. 143 00:07:42,730 --> 00:07:47,630 >> Ви можете використовувати наповнювачі, як і ну, для поплавців з% F. 144 00:07:47,630 --> 00:07:50,420 Ви також можете мати кілька наповнювачі в рядку. 145 00:07:50,420 --> 00:07:53,950 Наприклад, якщо у мене є деяка кількість собак і кілька котів, 146 00:07:53,950 --> 00:07:59,210 Я поклав два наповнювачі тут, а потім мої дві змінні у відповідному порядку. 147 00:07:59,210 --> 00:08:03,130 >> Так що тепер ми знаємо, як друкувати значення, що зберігаються в змінних, 148 00:08:03,130 --> 00:08:06,030 остання річ зробити, це переконатися, що ми 149 00:08:06,030 --> 00:08:10,920 надрукувати значення в точній форматі вказано в специфікації. 150 00:08:10,920 --> 00:08:14,990 З цими словами, ми спонукала користувача і підтверджено їх внесок. 151 00:08:14,990 --> 00:08:17,920 Ми тоді розрахували еквівалент кількість пляшок води 152 00:08:17,920 --> 00:08:22,100 що вони споживають під час їх душ, і ми виведений, що для них значення. 153 00:08:22,100 --> 00:08:24,440 Отже, ми завершили воду. 154 00:08:24,440 --> 00:08:28,730 >> Мене звати [? Zamila ,?] і це CS50. 155 00:08:28,730 --> 00:08:29,909