1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,640 ZAMYLA CHAN: Kjo është një-me, Zamyla. 3 00:00:02,640 --> 00:00:06,950 Sot, ne jemi duke shkuar për të zbatuar Mario, ku ne barazim Mario 4 00:00:06,950 --> 00:00:10,730 një piramidë të plotë për atë të hidhen mbi. 5 00:00:10,730 --> 00:00:14,430 Le të thyejnë poshtë nën-detyrat për këtë problem. 6 00:00:14,430 --> 00:00:17,930 >> Së pari, ne duam të menjëhershëm të përdoruesit për lartësinë e piramide. 7 00:00:17,930 --> 00:00:20,510 Dhe atëherë ne duam të sigurohemi se kjo input është e vlefshme. 8 00:00:20,510 --> 00:00:23,280 Dhe pastaj ne do të dua të tërheq piramidën. 9 00:00:23,280 --> 00:00:26,850 >> Pra, le të flasim për nxitur dhe Vleresimin dhëna përdoruesi. 10 00:00:26,850 --> 00:00:29,920 Kjo mund të duket diçka si kjo, një lak për ta bërë ndërkohë që 11 00:00:29,920 --> 00:00:33,250 bën të përdoruesit për një numër i plotë dhe pastaj vetëm përsërit 12 00:00:33,250 --> 00:00:35,700 në qoftë se integer është i pavlefshëm. 13 00:00:35,700 --> 00:00:38,220 Pra, çfarë duhet të jetë ky kusht? 14 00:00:38,220 --> 00:00:40,630 >> Për këtë, le të kthehemi me specifikimet. 15 00:00:40,630 --> 00:00:46,240 E pra, spekulim na tregon se çdo të vlefshme lartësia do të jetë në mes të 0 dhe 23, 16 00:00:46,240 --> 00:00:47,350 përfshirëse. 17 00:00:47,350 --> 00:00:51,400 Kështu, pra, kjo do të thotë se çdo i pavlefshëm lartësia do të jetë më pak se 0 18 00:00:51,400 --> 00:00:53,840 ose më shumë se 23. 19 00:00:53,840 --> 00:00:57,220 >> Pra, tani që ne kemi këtë informacion, le te percaktoje gjendjen tonë. 20 00:00:57,220 --> 00:00:59,230 Por ne duhet të jenë të kujdesshëm, sepse tani kemi 21 00:00:59,230 --> 00:01:02,130 Dy Booleans që ne duam për të vlerësuar. 22 00:01:02,130 --> 00:01:04,150 >> Këtu unë kam dhënë ty me një tryezë të vërtetën. 23 00:01:04,150 --> 00:01:07,520 Kjo na lejon të marrë dy Booleans, Boolean një dhe dy. 24 00:01:07,520 --> 00:01:13,600 Dhe ne mund të vlerësojmë as bool1 dhe bool2 ose bool1 ose bool2. 25 00:01:13,600 --> 00:01:17,390 >> Pra, çfarë është dallimi ndërmjet dhe dhe ose? 26 00:01:17,390 --> 00:01:21,810 Well, bool1 dhe bool2 do vlerësuar të vërtetë në qoftë se dhe vetëm 27 00:01:21,810 --> 00:01:25,680 në qoftë se të dy Booleans janë të vërteta, ndërsa ose operacion 28 00:01:25,680 --> 00:01:30,190 do të jetë e vërtetë në qoftë se as një nga të Booleans ose të dyja janë të vërteta. 29 00:01:30,190 --> 00:01:33,110 Pra, me këtë në mendje, shihni nëse ju mund të kuptoj se 30 00:01:33,110 --> 00:01:37,460 çfarë gjendje të përshtatshme për tuaj loop do-ndërsa për një n pavlefshme 31 00:01:37,460 --> 00:01:38,850 do te jete. 32 00:01:38,850 --> 00:01:43,540 >> Me këtë, ne kemi nxitur dhe të vlefshme përdoruesi për lartësinë e piramide 33 00:01:43,540 --> 00:01:44,550 që ata duan. 34 00:01:44,550 --> 00:01:47,740 Deri tani, është deri tek ne për të nxjerrë piramidën. 35 00:01:47,740 --> 00:01:50,520 Piramida e plotë për këtë Problemi do të duket pak 36 00:01:50,520 --> 00:01:56,340 si kjo, ku ne kemi një piramidë të majtë, disa boshllëk, dhe pastaj një piramidë e drejtë. 37 00:01:56,340 --> 00:01:58,630 Pra, le të thyer këtë poshtë pak. 38 00:01:58,630 --> 00:02:03,510 >> Nëse unë shkoj në editor teksti tim, këtu unë kam na tërhequr një piramidë e majtë-linjë. 39 00:02:03,510 --> 00:02:05,160 Por kjo nuk do të bëjë. 40 00:02:05,160 --> 00:02:10,139 Ajo që ne duam të bëjmë është që ne duam të të krijuar një piramidë të drejtë-linjë para. 41 00:02:10,139 --> 00:02:13,580 Pra, për të bërë këtë, për të vetëm shtytje hashes e mi së bashku në anën, 42 00:02:13,580 --> 00:02:18,240 Unë jam vetëm duke shkuar për të vënë disa karaktere në mes, vetëm këto pika. 43 00:02:18,240 --> 00:02:22,560 Atëherë unë jam duke shkuar për të vënë dy në anën linjë tjetër, dhe një në atë linjë. 44 00:02:22,560 --> 00:02:26,070 Dhe kështu që këtu unë kam një piramidale right-linjë. 45 00:02:26,070 --> 00:02:28,540 >> Pas kësaj, unë do të të kthehemi në radhë të lartë 46 00:02:28,540 --> 00:02:33,930 dhe të vënë në boshllëk, i cili është, sipas spekulim, dy hapësira. 47 00:02:33,930 --> 00:02:37,680 Atëherë unë jam duke shkuar për të mbushur në Ana tjetër e piramidës. 48 00:02:37,680 --> 00:02:42,030 Unë jam duke shkuar për të shkuar në rreshtin e dytë, të shkruar dy hapësira për hendekun dhe pastaj dy 49 00:02:42,030 --> 00:02:42,920 hashes. 50 00:02:42,920 --> 00:02:47,020 Përsëri në rreshtin e tretë, dy hapësira për hendekun dhe tre hashes. 51 00:02:47,020 --> 00:02:51,480 Dhe në fund, dy hapësira për hendekun dhe katër hashes. 52 00:02:51,480 --> 00:02:54,400 Pra, kjo është ajo që një të plotë Piramida do të duket si. 53 00:02:54,400 --> 00:02:57,260 >> Natyrisht, ne nuk duam këto pika në mënyrë të. 54 00:02:57,260 --> 00:03:01,220 Pra, ne jemi duke shkuar për të zëvendësuar këto dots me vendosjen e disa hapësira në. 55 00:03:01,220 --> 00:03:03,720 Një, dy, tre në rreshtin e parë. 56 00:03:03,720 --> 00:03:05,650 Një, dy në të dytë. 57 00:03:05,650 --> 00:03:08,200 Dhe një në vijën e tretë. 58 00:03:08,200 --> 00:03:12,060 Pra, kjo është ajo që ne do të bëjmë në qoftë se ne të kërkuar për të vetëm të bëjë një piramidë të plotë, 59 00:03:12,060 --> 00:03:13,700 thonë, në editor teksti tonë. 60 00:03:13,700 --> 00:03:15,860 >> Pra, le të marrë këtë, të kuptuarit e modeleve, 61 00:03:15,860 --> 00:03:19,870 dhe kthyer atë mbi të disa pseudokod. 62 00:03:19,870 --> 00:03:24,500 Për çdo rresht të piramidës, ne duam për të shtypur piramidën e majtë dhe pastaj 63 00:03:24,500 --> 00:03:26,580 hendeku dhe pastaj piramida e drejtë. 64 00:03:26,580 --> 00:03:30,260 Për piramidën e majtë, ne shtyp sasia e nevojshme e hapësirave, 65 00:03:30,260 --> 00:03:31,740 ndjekur nga hashes. 66 00:03:31,740 --> 00:03:35,030 Pastaj ne të shtypura hendekun, i cili është vetëm dy hapësira çdo kohë. 67 00:03:35,030 --> 00:03:38,080 Dhe në piramidën e duhur, ne të shtypura numri i kërkuar i hashes. 68 00:03:38,080 --> 00:03:41,410 >> Për rreshtin e dytë, ne kemi kryer i njëjti proces saktë. 69 00:03:41,410 --> 00:03:44,510 Ne shtyp hapësirat për të majtë piramidale, shuma e nevojshme 70 00:03:44,510 --> 00:03:49,930 i hashes, hendekut, dy hapësira dhe pastaj hashes për piramidës të drejtë. 71 00:03:49,930 --> 00:03:52,490 >> Le të trajtuar modelin për piramidën e majtë. 72 00:03:52,490 --> 00:03:55,660 Nëse do të kishte, për qëllime të për këtë shembull, një lartësi 73 00:03:55,660 --> 00:03:58,790 e tetë kërkohet nga user, atëherë rreshti im i parë 74 00:03:58,790 --> 00:04:01,020 do të ketë një hash dhe shtatë hapësira. 75 00:04:01,020 --> 00:04:03,860 row ime e dytë do të ketë dy hashes, gjashtë hapësira. 76 00:04:03,860 --> 00:04:06,749 radhën e tretë, tre hashes, pesë hapësira. 77 00:04:06,749 --> 00:04:09,040 Ju ndoshta mund ta bëni këtë veten për një lartësi prej tetë 78 00:04:09,040 --> 00:04:13,470 dhe të përcaktojë për çdo rresht sa hashes dhe sa hapësira që ju duhet. 79 00:04:13,470 --> 00:04:16,209 Por ajo që ne duam të bëjmë është ne duam të abstrakte atë. 80 00:04:16,209 --> 00:04:22,660 Kështu që unë kërkoj nga ju për çdo rresht n-, si shumë hashes dhe sa hapësira nuk kemi nevojë? 81 00:04:22,660 --> 00:04:25,410 >> Tani, si ju të përcaktojë model për mënyrën se si shumë hashes 82 00:04:25,410 --> 00:04:29,920 dhe sa hapësira që ju duhet për të çdo rresht n për një lartësi të caktuar, 83 00:04:29,920 --> 00:04:32,910 mos harroni të jenë të kujdesshëm se si ju jeni duke indeksimin. 84 00:04:32,910 --> 00:04:37,160 Çfarë dua të them me këtë është se në çdo ditë Jeta shumica prej nesh të fillojë numërimi nga një. 85 00:04:37,160 --> 00:04:39,680 Kështu në radhën e parë do të jetë numër një. 86 00:04:39,680 --> 00:04:43,620 Në radhën e dytë do të rresht numri dy, e kështu me radhë e kështu me radhë. 87 00:04:43,620 --> 00:04:47,620 >> Por në shkenca kompjuterike dhe CS50, ne jemi zero-indeksuar. 88 00:04:47,620 --> 00:04:50,750 Pra, ne në fakt të fillojë numërimi në zero. 89 00:04:50,750 --> 00:04:54,020 Kështu në radhën e parë do të jetë rresht numri zero. 90 00:04:54,020 --> 00:04:56,640 Në radhën e dytë do të jetë numër një rresht. 91 00:04:56,640 --> 00:05:02,510 Pra, nëse unë kam një lartësi prej tetë për piramidale im, atëherë vlera e fundit të n 92 00:05:02,510 --> 00:05:05,850 në fakt do të jetë shtatë dhe jo tetë. 93 00:05:05,850 --> 00:05:07,010 >> Pra, të jenë të kujdesshëm në lidhje me këtë. 94 00:05:07,010 --> 00:05:10,750 Dhe të jetë i vetëdijshëm kur ju jeni të përcaktuar modeli juaj nëse juaj zero-indeksuar 95 00:05:10,750 --> 00:05:12,360 ose një indeksuar 96 00:05:12,360 --> 00:05:13,070 >> NE RREGULL. 97 00:05:13,070 --> 00:05:15,380 Pra, tani që ne kemi model për piramidën e majtë, 98 00:05:15,380 --> 00:05:18,650 ne kemi nevojë për të përcaktuar model për hendekun. 99 00:05:18,650 --> 00:05:20,480 Për fat të mirë, kjo është me të vërtetë e lehtë. 100 00:05:20,480 --> 00:05:22,690 Është vetëm gjithmonë dy hapësira. 101 00:05:22,690 --> 00:05:25,240 >> Kështu që tani ne të vazhdojë me modelin e duhur. 102 00:05:25,240 --> 00:05:27,220 Rreshtin e parë do të ketë një hash. 103 00:05:27,220 --> 00:05:28,640 Në radhën e dytë, dy. 104 00:05:28,640 --> 00:05:29,530 radhën e tretë, tre. 105 00:05:29,530 --> 00:05:30,790 Kështu me radhë e kështu me radhë. 106 00:05:30,790 --> 00:05:35,540 Pra, përsëri, të përcaktuar për çdo abstract n dhe çdo lartësi sa hashes 107 00:05:35,540 --> 00:05:38,810 dhe sa hapësira çdo rresht duhet të ketë. 108 00:05:38,810 --> 00:05:39,700 >> NE RREGULL. 109 00:05:39,700 --> 00:05:45,050 Pra, ne e dimë se për çdo ne rresht duhet të kryejë një proces. 110 00:05:45,050 --> 00:05:46,600 Si e bëjmë këtë? 111 00:05:46,600 --> 00:05:50,440 E pra, ne i përdorim për ndërtimin loop, përbërë nga një inicializimit, 112 00:05:50,440 --> 00:05:52,310 një kusht, dhe një update. 113 00:05:52,310 --> 00:05:54,830 Për sythe mund të përdoret për të përsëritur proceseve. 114 00:05:54,830 --> 00:05:59,610 >> Pra, thonë se unë dua të them hello, Bota 50 herë, atëherë tim për lak 115 00:05:59,610 --> 00:06:03,510 do të dukej diçka si kjo, ku I nisja ndryshore tim në zero. 116 00:06:03,510 --> 00:06:06,200 Gjendja është që i është më pak se 50. 117 00:06:06,200 --> 00:06:09,670 Dhe pastaj update është se ajo increments nga një çdo herë. 118 00:06:09,670 --> 00:06:14,700 Pra, çfarë kjo do të bëjë do të jetë për të shtypura hello, botërore 50 herë në një rresht. 119 00:06:14,700 --> 00:06:18,080 >> Tani, thonë se unë të kërkuar për të iterate mbi kulmin e piramide. 120 00:06:18,080 --> 00:06:21,560 Pastaj në vend të kodimit të vështirë disa vlera në gjendje, 121 00:06:21,560 --> 00:06:23,280 Unë vetëm përdorin lartësinë ndryshueshme. 122 00:06:23,280 --> 00:06:27,180 Pra, çfarë kjo do të bëjë është iterate mbi lartësinë çdo rresht. 123 00:06:27,180 --> 00:06:30,280 Dhe unë mund të bëjë diçka brenda në trupin e kësaj lak. 124 00:06:30,280 --> 00:06:32,710 >> Çfarë duam të bëjmë brenda trupit të lak? 125 00:06:32,710 --> 00:06:36,550 E pra, siç kemi treguar më parë, ne duam për të shtypur hapësirat dhe hashes 126 00:06:36,550 --> 00:06:40,730 për piramidën e majtë dhe pastaj të shtypura dy hapësira dhe pastaj të shtypura e hashes. 127 00:06:40,730 --> 00:06:42,500 Pra, ne kemi motive tashmë se nga. 128 00:06:42,500 --> 00:06:45,670 Pra, ne mund të fillojnë për të mbushur në programin tonë shumë më tepër. 129 00:06:45,670 --> 00:06:49,850 >> Këtu unë kam një jashtme për lak që iterates mbi çdo rresht të piramidës. 130 00:06:49,850 --> 00:06:53,340 Dhe brenda këtij organi unë jam duke shkuar për të shtypur hapësira në mënyrë të përsëritur, 131 00:06:53,340 --> 00:06:56,860 hashes në mënyrë të përsëritur, dhe më pas hendeku, dhe pastaj hashes për piramidën e duhur, 132 00:06:56,860 --> 00:07:00,440 dhe pastaj, në fund, një i ri linjë për të filluar rreshtin tjetër. 133 00:07:00,440 --> 00:07:02,860 >> Me këtë, ne kemi bërë që përdoruesit për të dhëna. 134 00:07:02,860 --> 00:07:04,510 Ne kemi bërë të sigurt se ajo është e vlefshme. 135 00:07:04,510 --> 00:07:06,280 Dhe pastaj ne kemi tërhequr piramidën. 136 00:07:06,280 --> 00:07:09,540 Pra, Mario mund të me sukses ngjiten piramidën. 137 00:07:09,540 --> 00:07:10,970 >> Emri im është Zamyla. 138 00:07:10,970 --> 00:07:13,840 Dhe kjo është CS50. 139 00:07:13,840 --> 00:07:15,419