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 >> Значи она што се нашите to-do е за овој проблем? 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 ./цел број. 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 Па, сите ние ќе го направиме е продавница оваа вредност во променлива, велат n. 49 00:02:25,260 --> 00:02:30,580 Значи, ако јас се изјасни цел број n, и јас во собата на таа вредност да get_int, 50 00:02:30,580 --> 00:02:34,700 тогаш n потоа ќе ги чува она што вредност на корисникот внесуваат. 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 >> Значи не-додека јамка извршува телото на јамка барем еднаш 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 >> Сега ќе се забележи дека декларацијата на цел број 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 во на телото на не-додека јамка, 87 00:04:37,920 --> 00:04:42,640 тогаш не ќе биде во можност за пристап до дека вредноста на n надвор од оние кадрава 88 00:04:42,640 --> 00:04:45,050 протези покажува телото на јамка. 89 00:04:45,050 --> 00:04:51,080 Но, ние, всушност, сакаат да пристапат на вредност на n подоцна во нашата програма. 90 00:04:51,080 --> 00:04:55,730 >> Добро, па сега ајде да зборуваме за што оваа состојба треба да биде. 91 00:04:55,730 --> 00:05:00,400 Ние сакаме да reprompt само корисникот колку што n е валиден. 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 да го изразат ако сме се каже, n минути, колку шишиња со вода 115 00:06:14,990 --> 00:06:17,930 Дали тоа ќе биде изразена во смисла на n? 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 дека тие трошат за време на нивниот туш, и ние outputted дека вредноста на нив. 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