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