1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:01,960 SPEAKER 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 така че ние трябва да HASHTAG включва декларацията си за 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, excepts на програмата и квинти 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 Така че, ако аз декларирам цяло число N, и поставих тази стойност да 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 Така една от конструкциите, които ние използваме в гр да приложат повторение и примки 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 >> Така че не се прави, докато контур изпълнява тялото на цикъла най-малко веднъж 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 Така че в Do-линия, докато на това, което бихме могли направите, е да напомни на потребителя за цяло число, 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 >> Сега вие ще забележите, че декларация на цяло число N 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 Ако бяхме обявени за цялото число N вътре на тялото на 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 Така че с помощта на вашите ФОРМАТ изявления, да сигурни, че съвпада с този точно. 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 >> В гр имате достъп до стандартните аритметични операции, 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 >> Извеждане на стойността ще да е изявление на ФОРМАТ. 132 00:07:06,270 --> 00:07:09,720 Ако исках да ви кажа, че аз има три домашни любимци, например, 133 00:07:09,720 --> 00:07:13,090 Аз може да използва изявление ФОРМАТ че изглежда нещо като това. 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 След това аз ще се възползват от Запазено място в моето изявление ФОРМАТ. 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 Така тази стойност ще бъде отпечатан вместо това контейнер,% аз. 143 00:07:42,730 --> 00:07:47,630 >> Можете да използвате заместители, като добре, за плувки с% е. 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