1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA CHAN: Kjo është një mua, Zamyla. 3 00:00:02,500 --> 00:00:06,910 Sot në Mario, ne do të jetë duke piramidën e gjysmë për Mario 4 00:00:06,910 --> 00:00:08,290 të rritet deri. 5 00:00:08,290 --> 00:00:11,570 >> Pra, le të flasim për tonë të-bërë-së për këtë problem. 6 00:00:11,570 --> 00:00:13,610 Ne jemi duke shkuar për të duan për të nxitur dhe për të vërtetuar 7 00:00:13,610 --> 00:00:18,290 përdoruesi për një kontribut të vlefshëm të asaj se si të lartë ata duan piramidale Mario të jetë. 8 00:00:18,290 --> 00:00:20,090 Dhe pastaj, ne jemi duke shkuar për të nxjerrë atë. 9 00:00:20,090 --> 00:00:24,870 Pra, le të ketë filluar me të nxitur dhe Vleresimin e përdoruesit për kontributin e tyre. 10 00:00:24,870 --> 00:00:27,640 >> Ne mund të bëjnë përdorimin e CS50 Biblioteka Funksioni 11 00:00:27,640 --> 00:00:31,160 marrë int që do të sigurojë që përdoruesi inputeve një numër të plotë. 12 00:00:31,160 --> 00:00:35,730 Çdo integers pozitive, negative integers, numri 0 janë të gjitha lojë të ndershme. 13 00:00:35,730 --> 00:00:41,670 Përndryshe, përdoruesi do të nxitet për të rigjykuar deri sa të dhëna një numër i plotë i vlefshëm. 14 00:00:41,670 --> 00:00:44,210 Tani edhe pse get int bën një shumë e punë për ne 15 00:00:44,210 --> 00:00:46,730 për të siguruar se Përdorues na jep një numër të plotë, 16 00:00:46,730 --> 00:00:50,760 ne ende duhet të aplikoni disa kufizime shtesë në se. 17 00:00:50,760 --> 00:00:56,420 Pas të gjitha, ne nuk mund të ketë Mario ngjitje një piramidë gjysma e lartësisë negative 12. 18 00:00:56,420 --> 00:00:59,040 >> Përveç kësaj, specifikim problemi 19 00:00:59,040 --> 00:01:02,490 thotë se ne vetëm mund të lejojnë Mario të rritet 20 00:01:02,490 --> 00:01:06,940 një piramidë nga lartësitë midis 0 dhe 23. 21 00:01:06,940 --> 00:01:11,120 OK, kështu që do të thotë se ne kemi nevojë që vazhdimisht të menjëhershëm të përdoruesit 22 00:01:11,120 --> 00:01:14,320 për të na dhënë një të vlefshme numrin dhe vetëm të vazhdojë 23 00:01:14,320 --> 00:01:17,120 pasi ata na kanë dhënë një lartësi të vlefshme. 24 00:01:17,120 --> 00:01:18,720 Si e bëjmë këtë? 25 00:01:18,720 --> 00:01:23,760 >> E pra, proceset e vazhdueshme të na japin ideja e loops-- diçka bërë 26 00:01:23,760 --> 00:01:24,720 përsëritëse. 27 00:01:24,720 --> 00:01:28,220 Një lak në C si një kohë loop që vazhdimisht do të 28 00:01:28,220 --> 00:01:33,480 ekzekutuar trupin e lak për aq kohë sa gjendja dhënë vlerëson të vërtetë. 29 00:01:33,480 --> 00:01:36,200 Sapo atë gjendje vlerëson të rreme, 30 00:01:36,200 --> 00:01:39,770 programi do të vazhdojë të çdo gjë që vjen pas kësaj. 31 00:01:39,770 --> 00:01:43,180 Kështu, ndërsa sythe janë një mënyrë për të duke siguruar që ne vazhdimisht 32 00:01:43,180 --> 00:01:45,320 menjëhershëm të përdoruesit për një kontribut të vlefshëm. 33 00:01:45,320 --> 00:01:50,070 Dhe një herë ata na japin një kontribut të vlefshëm, ne do të vazhdojë për çdo gjë që vjen më pas. 34 00:01:50,070 --> 00:01:54,380 Ne e dimë se ne jemi duke shkuar për të kërkuar përdoruesit për kontributin e të paktën një herë. 35 00:01:54,380 --> 00:01:59,200 Deri tani kemi ardhur në një motër e ndërsa loop, që është për ta bërë, ndërsa loop. 36 00:01:59,200 --> 00:02:02,650 >> A ndërsa sythe do të ekzekutojë trupi i lak paktën një herë. 37 00:02:02,650 --> 00:02:06,150 Pra, pa kontrolluar gjendjen, ajo do të ekzekutojë trupin e lak. 38 00:02:06,150 --> 00:02:09,750 Dhe pastaj të kontrolluar gjendjen për të parë nëse ajo duhet të përsëritet. 39 00:02:09,750 --> 00:02:13,080 Kjo vjen në dobishëm kur ne jemi duke Vleresimin dhëna përdoruesi. 40 00:02:13,080 --> 00:02:15,830 Ne e dimë se ne jemi duke shkuar të pyesni ata të paktën një herë. 41 00:02:15,830 --> 00:02:18,780 Pra, një për ta bërë, ndërsa loop fuqisë duket diçka si kjo. 42 00:02:18,780 --> 00:02:20,090 Ne kemi një numër i plotë n. 43 00:02:20,090 --> 00:02:22,760 Dhe në brendësi të detyrave ndërsa lak, ne menjëherë 44 00:02:22,760 --> 00:02:24,750 menjëhershëm të përdoruesit për një numër të plotë. 45 00:02:24,750 --> 00:02:29,740 Nëse n është e pavlefshme, atëherë ne do të shkaktonte ato përsëri dhe përsëri dhe përsëri derisa ata 46 00:02:29,740 --> 00:02:31,820 na jep gjithmonë atë numër të plotë të vlefshme. 47 00:02:31,820 --> 00:02:37,440 Më në fund, pasi n është një input i vlefshëm, ne do të të vazhdojë për pjesën tjetër të programit tonë. 48 00:02:37,440 --> 00:02:41,830 >> Pra, le të kthehemi në spekulim dhe kontroll ajo që kushtet për një kontribut të vlefshëm 49 00:02:41,830 --> 00:02:43,670 do te jete. 50 00:02:43,670 --> 00:02:48,090 Lartësitë e vlefshme do të të jetë midis 0 dhe 23, përfshirëse. 51 00:02:48,090 --> 00:02:53,350 lartësitë Pra pavlefshme do të të jetë më pak se 0 ose më shumë se 23. 52 00:02:53,350 --> 00:02:56,420 Pra, mos harroni për të hartuar gjendja juaj me kujdes, 53 00:02:56,420 --> 00:02:58,660 duke e ditur se kusht për ta bërë, ndërsa loop 54 00:02:58,660 --> 00:03:01,470 duhet të jetë, ndërsa n është e pavlefshme. 55 00:03:01,470 --> 00:03:05,080 Tani kjo nuk do të jetë një shprehje e thjeshtë e vetme Boolean. 56 00:03:05,080 --> 00:03:07,630 Ne do të kemi për të kombinuar dy shprehje të ndryshme 57 00:03:07,630 --> 00:03:09,900 për të bërë të gjithë gjendjen tonë. 58 00:03:09,900 --> 00:03:13,290 >> Pra, le të vetëm shikoni në një tryezë të vërtetën që kam tashmë ju ka dhënë shenjën më të vogël se jemi 59 00:03:13,290 --> 00:03:15,200 do të merret me dy Booleans. 60 00:03:15,200 --> 00:03:19,620 Kështu që këtu është një tryezë e vërtetë ku unë kemi dy Booleans-- Boolean 1 dhe 2. 61 00:03:19,620 --> 00:03:27,050 Pra, ne kemi mundësi për të vlerësuar bool1 dhe bool2 ose bool1 ose bool2. 62 00:03:27,050 --> 00:03:31,980 Dhe do të jetë e vërtetë vetëm në qoftë se të dy Booleans vlerësuar të vërtetë, ndërsa të gjitha 63 00:03:31,980 --> 00:03:37,280 ose do të jetë e vërtetë për sa kohë që një nga dy Booleans vlerëson të vërtetë. 64 00:03:37,280 --> 00:03:41,450 OK, kështu që të marrë një moment, pauzë kjo video dhe tretet këtë tabelë të vërtetën. 65 00:03:41,450 --> 00:03:42,930 Do të jetë e drejtë këtu duke pritur. 66 00:03:42,930 --> 00:03:45,760 Kur të kthehem, shih në qoftë se ju mund të pjesë së bashku 67 00:03:45,760 --> 00:03:51,910 një shprehje Boolean për tuaja gjendja n qenë një input të pavlefshme. 68 00:03:51,910 --> 00:03:54,420 >> Pra, tani që ne kemi input vlefshme përdorues, le të 69 00:03:54,420 --> 00:03:58,710 të shkojnë përpara dhe të flasim për mënyrën se si ne mund të tërheqë gjysmën piramidën. 70 00:03:58,710 --> 00:04:03,410 Këtu në këtë editor teksti të thjeshtë, Unë e kam tërhequr një linjë majtë piramidë. 71 00:04:03,410 --> 00:04:07,050 Por ne e dimë se kemi nevojë tonë piramidale të jetë një linjë të drejtë. 72 00:04:07,050 --> 00:04:08,650 Pra, si mund ta bëjë këtë? 73 00:04:08,650 --> 00:04:11,440 E pra, unë mund të përpiqet të shtyjë çdo gjë në anën 74 00:04:11,440 --> 00:04:14,880 nga vetëm vënë pak karakter në mes. 75 00:04:14,880 --> 00:04:16,779 Dhe pastaj, për të ardhshëm line, unë jam duke shkuar për të vënë 76 00:04:16,779 --> 00:04:20,970 disa karaktere më shumë për të nxitur atë së bashku, dhe further-- kështu me radhë e kështu me forth-- 77 00:04:20,970 --> 00:04:23,360 deri sa të ketë të drejtë një linjë piramidën. 78 00:04:23,360 --> 00:04:27,780 Pra, ne kemi një piramidë të drejtë align, por kjo nuk duket aq e madhe me pika. 79 00:04:27,780 --> 00:04:30,680 Por ne ende duan të ruajtur atë ndarje të mirë. 80 00:04:30,680 --> 00:04:35,260 Kështu që unë jam duke shkuar për të fjalë për fjalë futur disa hapësira. 81 00:04:35,260 --> 00:04:39,420 >> Në vend të tre pika, unë do vënë një, dy, tre hapësira. 82 00:04:39,420 --> 00:04:40,370 Në rreshtin e dytë. 83 00:04:40,370 --> 00:04:42,640 Unë do të vënë një, dy hapësira. 84 00:04:42,640 --> 00:04:45,370 Dhe në parafundit line, vetëm një hapësirë. 85 00:04:45,370 --> 00:04:48,290 Dhe këtu unë kam një të drejtë linjë piramidë. 86 00:04:48,290 --> 00:04:52,170 Nga bërë shembullin në tekst editor, ne kemi një ide për modelin 87 00:04:52,170 --> 00:04:54,590 që ne do të përdorim për të nxjerrë gjysmë piramidën. 88 00:04:54,590 --> 00:04:58,080 Për çdo rresht, ajo që ne e bëmë është ne shkruani disa hapësira, 89 00:04:58,080 --> 00:05:00,170 dhe pastaj shtypur disa hashes, dhe pastaj shtypen 90 00:05:00,170 --> 00:05:03,020 Enter, e cila është duke krijuar një linjë të re. 91 00:05:03,020 --> 00:05:07,770 Pra, tani që ne kemi që, le të shkojë një hap më tej dhe për të gjetur një model. 92 00:05:07,770 --> 00:05:10,170 >> Kështu që unë jam duke shkuar për të thënë, sepse Interesi për këtë shembull, 93 00:05:10,170 --> 00:05:12,480 kemi të bëjmë me një lartësi prej 8. 94 00:05:12,480 --> 00:05:17,100 Rreshtin e parë do të ketë dy hashes që vijon shtatë hapësira. 95 00:05:17,100 --> 00:05:20,020 Të second-- tre hashes, gjashtë hapësira. 96 00:05:20,020 --> 00:05:24,260 Së treti row-- katër hashes, pesë spaces-- kështu me radhë e kështu me radhë 97 00:05:24,260 --> 00:05:26,350 deri sa të kemi në radhë NTH. 98 00:05:26,350 --> 00:05:31,540 Kështu, pra, unë ju pyes për rresht NTH, sa hashes do të shkojmë të kemi 99 00:05:31,540 --> 00:05:33,120 dhe sa hapësira? 100 00:05:33,120 --> 00:05:37,000 Kështu që është e deri tek ju të kuptoj se një formula për të përfaqësuar sa më shumë hashes 101 00:05:37,000 --> 00:05:42,020 dhe sa hapësira janë të nevojshme për në radhën e NTH kur ju keni disa lartësi. 102 00:05:42,020 --> 00:05:46,060 >> Tani kur ju jeni figuring this out, të jenë të kujdesshëm se si ju jeni indeksimin. 103 00:05:46,060 --> 00:05:49,170 Çfarë dua të them me këtë është se në jetën e përditshme të gjithë ne 104 00:05:49,170 --> 00:05:51,540 të fillojë numërimi, zakonisht nga 1. 105 00:05:51,540 --> 00:05:55,950 Por në CS50 dhe në shkenca kompjuterike në përgjithësi, ne jemi 0 indeksuar. 106 00:05:55,950 --> 00:06:00,620 Kështu në radhën e parë do të jetë n nga 0 në krahasim me 1. 107 00:06:00,620 --> 00:06:04,550 Të jenë të kujdesshëm për këtë kur ju jeni duke u përpjekur të kuptoj se modelin tuaj. 108 00:06:04,550 --> 00:06:07,570 Pra, tani le të kthehemi për të si ne jemi duke shkuar për të nxjerrë piramidën tonë. 109 00:06:07,570 --> 00:06:12,300 Për çdo rresht, ne do të duan të shtypura hapësirat, të shtypur hashes, 110 00:06:12,300 --> 00:06:14,050 dhe pastaj të shtypura një linjë të re. 111 00:06:14,050 --> 00:06:19,160 Hint këtu është fjala "për" çdo rresht. 112 00:06:19,160 --> 00:06:21,470 Në C, ne kemi një konstrukt quajtur një për lak, 113 00:06:21,470 --> 00:06:25,250 e cila është e përbërë nga një initialization, një gjendje, një përditësim, 114 00:06:25,250 --> 00:06:26,790 dhe trupi i lak. 115 00:06:26,790 --> 00:06:31,360 >> Thuaj Unë të kërkuar për të thënë, përshëndetje Bota, 50 herë, ime për lak 116 00:06:31,360 --> 00:06:32,880 do të dukej diçka si kjo. 117 00:06:32,880 --> 00:06:35,480 I nisja integer tim në 0. 118 00:06:35,480 --> 00:06:38,230 Gjendja është që është më pak se 50. 119 00:06:38,230 --> 00:06:42,350 Dhe pastaj përditësim im është i drejtë bën rritjen I nga një çdo herë. 120 00:06:42,350 --> 00:06:45,140 Ne gjithashtu mund të përdorni për sythe për të iterate mbi gjëra. 121 00:06:45,140 --> 00:06:47,820 Vini re këtu se ne nuk kemi vështirë koduar një numër, 122 00:06:47,820 --> 00:06:51,820 por vendosi të ndryshueshme lartësia në vend në gjendje. 123 00:06:51,820 --> 00:06:56,420 Pra, ajo që unë jam duke bërë këtu është që unë jam iterating mbi çdo rresht të piramidës. 124 00:06:56,420 --> 00:07:00,160 Unë mund të bëjë diçka për secilin rresht në brendësi të trupit të lak tim. 125 00:07:00,160 --> 00:07:02,350 >> Çfarë po bëjmë brenda trupi i lak? 126 00:07:02,350 --> 00:07:07,120 E pra, siç kemi thënë tashmë, ne jemi shtypjen hapësira dhe ne jemi shtypjen hashes 127 00:07:07,120 --> 00:07:09,480 dhe ne jemi shtypjen e një linjë të re. 128 00:07:09,480 --> 00:07:11,950 Kështu jashtme im për lak do të duket si ky. 129 00:07:11,950 --> 00:07:15,070 I iterate mbi çdo rresht e piramidës, duke përdorur, 130 00:07:15,070 --> 00:07:18,890 në këtë rast, lartësia si variabël që ruan lartësinë e piramidës. 131 00:07:18,890 --> 00:07:22,870 Brenda trupit të atij lak, Jam do të shtypura hapësira në mënyrë të përsëritur, të shtypura 132 00:07:22,870 --> 00:07:26,730 hashet në mënyrë të përsëritur, dhe pastaj të shtypura një linjë të re. 133 00:07:26,730 --> 00:07:31,010 >> Deri tani, duke përdorur të gjitha konceptet që Unë kam biseduar rreth në këtë shëtitje-nëpërmjet, 134 00:07:31,010 --> 00:07:35,210 ju duhet të jetë në gjendje të menjëhershëm përdoruesit për të dhëna, vërtetoni se të dhëna, 135 00:07:35,210 --> 00:07:37,370 dhe pastaj të nxjerrë gjysmë piramidën. 136 00:07:37,370 --> 00:07:41,510 >> Emri im është Zamyla, dhe kjo është CS50. 137 00:07:41,510 --> 00:07:43,167