1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:01,960 Kryetari 1: Le të flasim për ujë. 3 00:00:01,960 --> 00:00:07,280 Në këtë problem, ne i kërkojmë përdoruesit për të treguar na sa kohë në minuta dush tyre ishte 4 00:00:07,280 --> 00:00:11,040 dhe pastaj ne llogarisim ekuivalent numri i shisheve të ujit 5 00:00:11,040 --> 00:00:12,970 që dushi i tyre përdoret. 6 00:00:12,970 --> 00:00:16,379 >> Pra cilat janë tonë për-do-së për këtë problem? 7 00:00:16,379 --> 00:00:20,050 Së pari, ne do të duan të shpejtë dhe pastaj të vërtetoni 8 00:00:20,050 --> 00:00:22,100 të dhëna që përdoruesi na jep. 9 00:00:22,100 --> 00:00:24,790 Pasi të kemi siguruar që ne kanë të dhëna të saktë, 10 00:00:24,790 --> 00:00:28,230 ne jemi duke shkuar për të llogaritur Numri i barabartë me shishe të ujit 11 00:00:28,230 --> 00:00:30,770 që përdoruesi ka pasur gjatë dush e tyre, dhe pastaj ne jemi 12 00:00:30,770 --> 00:00:33,720 do të tregoni atyre nga shtypjen nga atë numër. 13 00:00:33,720 --> 00:00:37,230 >> Pra, le të trajtuar jonë e parë detyrë, duke bërë dhe Vleresimin 14 00:00:37,230 --> 00:00:38,550 të dhëna përdoruesi. 15 00:00:38,550 --> 00:00:40,910 Për këtë ne kemi shkruar një Funksioni për të thirrur 16 00:00:40,910 --> 00:00:43,950 get_int gjendet në Bibliotekën CS50. 17 00:00:43,950 --> 00:00:48,710 get_int siguron se inputet e përdoruesit një numër të plotë, në mënyrë që çdo numër pozitiv, 18 00:00:48,710 --> 00:00:51,700 numrat negative, ose zero janë pranuar të gjitha. 19 00:00:51,700 --> 00:00:55,900 Por në qoftë se përdoruesi inputeve asgjë tjetër, kështu që çdo kombinim të shkronjave ose numrave 20 00:00:55,900 --> 00:00:59,710 ose numrat dhjetore, atëherë përdoruesi do të nxitet për të rigjykuar 21 00:00:59,710 --> 00:01:04,319 dhe funksioni nuk do të pranojë asgjë derisa përdoruesi jep atyre një numër të plotë. 22 00:01:04,319 --> 00:01:06,410 >> Pra, si nuk kemi përdorim get_int? 23 00:01:06,410 --> 00:01:10,830 Nëse jeni të hapur hapësira e punës tuaj dhe të të krijojë një file me emrin integer.c le 24 00:01:10,830 --> 00:01:12,110 shkruani në vijim. 25 00:01:12,110 --> 00:01:14,760 Hashtag përfshijnë cs50.h. 26 00:01:14,760 --> 00:01:18,480 Kjo është e nevojshme sepse get_int është një funksion bibliotekë CS50, 27 00:01:18,480 --> 00:01:21,890 kështu që ne duhet të përfshijnë hashtag Deklarata e tij në mënyrë 28 00:01:21,890 --> 00:01:23,370 të përdorni funksionin. 29 00:01:23,370 --> 00:01:26,570 Dhe pastaj në Main tim funksionojë Unë jam vetëm duke shkuar 30 00:01:26,570 --> 00:01:29,560 të thjesht thirrje get_int funksion. 31 00:01:29,560 --> 00:01:31,750 >> Pra, le të drejtuar këtë dhe të shohim se si punon. 32 00:01:31,750 --> 00:01:35,092 Unë kam hartuar tashmë atë, kështu që le të thjesht shkoni përpara dhe të drejtuar këtë program, 33 00:01:35,092 --> 00:01:36,480 ./integer. 34 00:01:36,480 --> 00:01:39,880 Këtu unë kam një të shpejtë dhe këtu është ku input I vlera. 35 00:01:39,880 --> 00:01:44,880 Thuaj kam vënë në vetëm një numër i plotë, 50, e excepts programit dhe shpërblej 36 00:01:44,880 --> 00:01:45,960 dhe kjo është ajo. 37 00:01:45,960 --> 00:01:49,350 >> Por them se kam drejtuar atë përsëri dhe I input diçka tjetër. 38 00:01:49,350 --> 00:01:51,350 Ndoshta, Hello World. 39 00:01:51,350 --> 00:01:55,660 Kjo nuk është një numër i plotë në mënyrë që Programi do të shkaktonte më të rigjykuar. 40 00:01:55,660 --> 00:01:59,160 Le të provoni përsëri me ndoshta një decimal këtë kohë. 41 00:01:59,160 --> 00:02:03,450 0.5, përsëri, nuk është një numër i plotë në mënyrë programi nuk do të pranojë atë 42 00:02:03,450 --> 00:02:05,290 dhe kjo do të më thoni për të riprovuar. 43 00:02:05,290 --> 00:02:07,070 Pra, le të jepte një numër tjetër. 44 00:02:07,070 --> 00:02:09,830 Programi i e pranon atë, shpërblej, dhe ne jemi duke bërë. 45 00:02:09,830 --> 00:02:13,520 >> Deri tani ne kemi një funksion që na lejon dhe siguron 46 00:02:13,520 --> 00:02:16,790 që përdoruesi inputeve një integer, por si mund të kemi 47 00:02:16,790 --> 00:02:20,330 në fakt mbajnë gjurmët e të futur integer nga ana e përdoruesit? 48 00:02:20,330 --> 00:02:25,260 E pra, të gjithë ne do të bëjmë është dyqan kjo vlerë në një variabël, thonë n. 49 00:02:25,260 --> 00:02:30,580 Pra, nëse unë deklaroj një numër i plotë, dhe kam vendosur këtë vlerë të get_int, 50 00:02:30,580 --> 00:02:34,700 pastaj n do të ruajë gjithçka vlerësojnë përdoruesit e futur. 51 00:02:34,700 --> 00:02:38,620 >> Të gjithë të drejtë, kështu që tani ne kemi siguruar që përdoruesi do të na japë një numër të plotë 52 00:02:38,620 --> 00:02:42,550 dhe ne e dimë se si për të mbajtur nën i numër i plotë, por mos harroni, 53 00:02:42,550 --> 00:02:45,610 integers janë pozitive dhe negative. 54 00:02:45,610 --> 00:02:49,110 Kështu që nuk ka të vërtetë kuptim në kontekstin e këtij problemi 55 00:02:49,110 --> 00:02:53,570 që përdoruesi merr një dush i thonë negative 12 minuta. 56 00:02:53,570 --> 00:02:59,310 Pra, ne duhet të sigurohemi që përdoruesi në fakt na jep një numër i plotë pozitiv. 57 00:02:59,310 --> 00:03:02,130 Tani ne nuk kemi vetëm një Funksioni i vetëm për këtë, 58 00:03:02,130 --> 00:03:04,620 kështu që ne do të kemi për të krijuar atë vetë. 59 00:03:04,620 --> 00:03:07,190 >> Pra, ne duam që vazhdimisht të menjëhershëm të përdoruesit 60 00:03:07,190 --> 00:03:09,730 deri sa të na japin një numër i plotë pozitiv. 61 00:03:09,730 --> 00:03:14,300 Në qoftë se unë jam duke bërë diçka në mënyrë të vazhdueshme, atëherë kjo është e ngjashme me një lak, një përsëritje. 62 00:03:14,300 --> 00:03:19,130 Pra, një nga ndërton që ne përdorim në c për të zbatuar përsëritje dhe sythe 63 00:03:19,130 --> 00:03:20,410 është një lak, ndërsa. 64 00:03:20,410 --> 00:03:23,020 Kështu që një lak, ndërsa, siç treguar këtu, do të ekzekutojë 65 00:03:23,020 --> 00:03:27,030 çdo gjë që është në trupin e lak si kohë sa të vlerësoj dhënë kusht 66 00:03:27,030 --> 00:03:27,900 të vërtetë. 67 00:03:27,900 --> 00:03:30,640 Sapo atë gjendje vlerëson të rreme, atëherë 68 00:03:30,640 --> 00:03:34,830 programi do të vazhdojë të çfarëdo vjen pas trupin e lakut. 69 00:03:34,830 --> 00:03:39,400 >> Kështu, ndërsa sythe do të jenë shumë të dobishme në CS50. 70 00:03:39,400 --> 00:03:42,590 Por në këtë të veçantë rast, ne e dimë se ne jemi 71 00:03:42,590 --> 00:03:48,140 do të menjëhershëm të përdoruesit të paktën një herë dhe pastaj vetëm lak nëse është e nevojshme. 72 00:03:48,140 --> 00:03:51,080 Pra, këtu kemi ardhur për një konstrukt i veçantë dhe kjo është 73 00:03:51,080 --> 00:03:55,020 shumë e ngjashme me kohë loop e quajti një lak do-kohë. 74 00:03:55,020 --> 00:03:58,840 >> Kështu që një lak për ta bërë, ndërsa ekzekuton trupi i lak të paktën një herë 75 00:03:58,840 --> 00:04:01,750 dhe pastaj ajo kontrollon për të parë nëse duhet ta kryejë, 76 00:04:01,750 --> 00:04:05,310 në krahasim me një lak, ndërsa, i cili do të kontrollojë gjendjen 77 00:04:05,310 --> 00:04:07,200 dhe pastaj ekzekutuar trupin. 78 00:04:07,200 --> 00:04:11,880 Pra, në një lak për ta bërë ndërsa ajo që ne fuqi bëni është të menjëhershëm të përdoruesit për një numër të plotë, 79 00:04:11,880 --> 00:04:14,450 dhe pastaj kontrolloni nëse është e pavlefshme ose jo. 80 00:04:14,450 --> 00:04:18,130 Nëse është e pavlefshme, atëherë ne do të përsërisin procesin duke i kërkuar përdoruesit 81 00:04:18,130 --> 00:04:22,290 për të na dhënë një numër i plotë, dhe pastaj vetëm kur se numër i plotë është i vlefshëm, 82 00:04:22,290 --> 00:04:25,060 ne do të vazhdojmë të çdo gjë që vjen më pas. 83 00:04:25,060 --> 00:04:28,030 >> Tani ju do të vëreni se Deklarimi i numër i plotë 84 00:04:28,030 --> 00:04:31,670 është paksa e ndryshme për atë që ne bërë para në shembullin e mëparshëm 85 00:04:31,670 --> 00:04:33,640 dhe kjo është për shkak të fushës. 86 00:04:33,640 --> 00:04:37,920 Nëse do të kishte deklaruar numër i plotë n brenda e trupit të lak do-ndërsa, 87 00:04:37,920 --> 00:04:42,640 atëherë ne nuk do të jetë në gjendje për të hyrë në se vlera e n jashtë atyre kaçurrel 88 00:04:42,640 --> 00:04:45,050 formatimin e teksteve duke treguar trupin e lak. 89 00:04:45,050 --> 00:04:51,080 Por ne në të vërtetë duan për të hyrë në vlera e n më vonë në programin tonë. 90 00:04:51,080 --> 00:04:55,730 >> OK, kështu që tani le të flasim për çfarë duhet të jetë ky kusht. 91 00:04:55,730 --> 00:05:00,400 Ne duam të reprompt vetëm Përdoruesi për aq kohë sa n është e pavlefshme. 92 00:05:00,400 --> 00:05:04,640 Pra, mendoni për veten tuaj atë që një invalid vlerë e plotë do të duken si 93 00:05:04,640 --> 00:05:08,060 dhe pastaj të krijojë një Boolean shprehje për të shprehur atë. 94 00:05:08,060 --> 00:05:13,070 >> Ne jemi pothuajse përfundoi me subtask tonë e bërë dhe Vleresimin dhëna përdoruesi. 95 00:05:13,070 --> 00:05:16,010 Pra, le të bëjnë këtë pak bit përdorues më shumë miqësore 96 00:05:16,010 --> 00:05:18,390 dhe jep përdoruesit pak pak më shumë informacion 97 00:05:18,390 --> 00:05:20,510 nga ajo që ne jemi duke bërë që ato të. 98 00:05:20,510 --> 00:05:24,500 Pra, le të menjëhershëm të përdoruesit, sipas rregulloreve spekulim, me string minuta. 99 00:05:24,500 --> 00:05:28,935 Pra, duke përdorur deklaratat tuaja printf, të bëjë siguruar që ju të përputhen me këtë saktësisht. 100 00:05:28,935 --> 00:05:30,230 >> Në rregull. 101 00:05:30,230 --> 00:05:33,840 Deri tani ne kemi një përdorues të vlefshme input, një numër i plotë pozitiv 102 00:05:33,840 --> 00:05:37,400 Vlera për sa shumë minuta ata kaluan në dush. 103 00:05:37,400 --> 00:05:41,300 Pra, çfarë është tjetër është për të llogaritur numri ekuivalente e shishe. 104 00:05:41,300 --> 00:05:45,250 Ajo që ne jemi duke shkuar për të bërë këtu mund të të jetë shumë e qartë për ju në fillim, 105 00:05:45,250 --> 00:05:46,640 dhe kjo është OK. 106 00:05:46,640 --> 00:05:49,320 Ajo që ne duam të bëjmë është që ne duan të fillojnë praktikimin 107 00:05:49,320 --> 00:05:53,810 ideja për zbulimin e modeleve dhe zhvillimin formulat për problemin. 108 00:05:53,810 --> 00:05:57,200 >> Pra, ne jemi duke thënë sipas spekulim se një minutë në dush 109 00:05:57,200 --> 00:05:59,960 është e barabartë me rreth 12 shishe të ujit. 110 00:05:59,960 --> 00:06:03,020 Kështu, pra, dy minuta do të të jetë e barabartë me 24, 111 00:06:03,020 --> 00:06:05,850 dhe pesë minuta do të të jetë e barabartë me 60. 112 00:06:05,850 --> 00:06:08,390 Kështu që tani, nëse ju mendoni se ju keni marrë atë, atëherë le të 113 00:06:08,390 --> 00:06:10,390 të parë nëse ju mund të dalë me një model ose formules 114 00:06:10,390 --> 00:06:14,990 për të shprehur nëse kemi thënë, n minuta, sa shishe të ujit 115 00:06:14,990 --> 00:06:17,930 do që të shprehet në termat e n? 116 00:06:17,930 --> 00:06:20,680 >> Përsëri, edhe pse kjo mund të jetë e thjeshtë në fillim, 117 00:06:20,680 --> 00:06:23,240 më vonë kur ne të merrni për të Problemet më të komplikuara 118 00:06:23,240 --> 00:06:26,360 ne do të duan të marrin në praktika e identifikimit 119 00:06:26,360 --> 00:06:30,120 modelet dhe zhvillim formula të kuptoj këto gjëra jashtë. 120 00:06:30,120 --> 00:06:33,450 >> Në c ju keni qasje në operacionet standarde aritmetike, 121 00:06:33,450 --> 00:06:36,520 Përveç kësaj, zbritje, shumëzimit, dhe ndarje. 122 00:06:36,520 --> 00:06:38,420 Kështu që unë do të lënë atë për të tani ju të kuptoj se 123 00:06:38,420 --> 00:06:41,300 si për të shprehur Numri i barabartë me shishe 124 00:06:41,300 --> 00:06:43,990 që përdoruesi konsumuar gjatë dush të tyre. 125 00:06:43,990 --> 00:06:45,700 >> Të gjithë të drejtë, ne jemi duke bërë gati. 126 00:06:45,700 --> 00:06:50,650 Ne e kemi bërë që të përdoruesit për kontributin e tyre, ne kemi siguruar që kjo është input vlefshme, 127 00:06:50,650 --> 00:06:53,330 dhe pastaj ne kemi realizuar artistikisht se si për të llogaritur ekuivalentin 128 00:06:53,330 --> 00:06:55,480 numri i shisheve që ata konsumuar. 129 00:06:55,480 --> 00:06:59,430 Pra, gjëja e fundit për të bërë është të prodhimit numri ekuivalente e shisheve 130 00:06:59,430 --> 00:07:02,410 dhe shpresojmë se të inkurajojë ata për të ruajtur ujë. 131 00:07:02,410 --> 00:07:06,270 >> Kompjuteri vlera do të të jetë një deklaratë printf. 132 00:07:06,270 --> 00:07:09,720 Në qoftë se unë të kërkuar për të ju them se unë kanë tre kafshët shtëpiake, për shembull, 133 00:07:09,720 --> 00:07:13,090 Unë mund të përdorin një deklaratë printf që duket diçka si kjo. 134 00:07:13,090 --> 00:07:15,880 Unë kam tre kafshët shtëpiake, dhe një të ri Linja për formatimin e bukur. 135 00:07:15,880 --> 00:07:17,880 >> Tani ne nuk duam të thjesht kodi hard gjëra. 136 00:07:17,880 --> 00:07:20,740 Thuaj numrin e mia kafshe ndryshon me kalimin e kohës. 137 00:07:20,740 --> 00:07:25,080 Atëherë unë jam duke shkuar për të bërë përdorimin e placeholders në deklaratën time printf. 138 00:07:25,080 --> 00:07:27,350 Kështu që këtu numri im është një numër të plotë. 139 00:07:27,350 --> 00:07:31,480 Kështu që unë jam duke shkuar për të bërë një placeholder për një numër të plotë duke përdorur% i. 140 00:07:31,480 --> 00:07:33,930 Unë jam duke shkuar për të shkruar të vargut, dhe pastaj pas vargut 141 00:07:33,930 --> 00:07:38,000 I shkruaj një presje dhe pastaj variable që unë dua të shtypura. 142 00:07:38,000 --> 00:07:42,730 Kështu që vlera do të jenë të shtypura në vend të kësaj, placeholder% i. 143 00:07:42,730 --> 00:07:47,630 >> Ju mund të përdorni placeholders, si mirë, sepse gjithandej me një% f. 144 00:07:47,630 --> 00:07:50,420 Ju gjithashtu mund të ketë të shumta placeholders në një varg. 145 00:07:50,420 --> 00:07:53,950 Për shembull, në qoftë se unë kam disa numrin e qenve dhe një numër të macet, 146 00:07:53,950 --> 00:07:59,210 I vënë dy placeholders këtu dhe pastaj dy variabla e mi në mënyrë përkatëse. 147 00:07:59,210 --> 00:08:03,130 >> Pra, tani që ne e dimë se si për të shtypur vlerat e ruajtura në variablave, 148 00:08:03,130 --> 00:08:06,030 gjëja e fundit për të bëni është për të siguruar që ne 149 00:08:06,030 --> 00:08:10,920 shtypura vlerën në formatin e saktë tregohet në specifikimet. 150 00:08:10,920 --> 00:08:14,990 Me këtë, ne kemi bërë që përdoruesit dhe kontributin e tyre të vlefshme. 151 00:08:14,990 --> 00:08:17,920 Ne kemi llogaritur më pas ekuivalentin numri i shisheve të ujit 152 00:08:17,920 --> 00:08:22,100 që ata konsumojnë gjatë dush të tyre, dhe ne kemi outputted atë vlerë për ta. 153 00:08:22,100 --> 00:08:24,440 Dhe kështu, ne kemi përfunduar ujë. 154 00:08:24,440 --> 00:08:28,730 >> Unë quhem [? Zamila,?] dhe kjo është CS50. 155 00:08:28,730 --> 00:08:29,909