ZAMYLA CHAN: Kjo është një mua, Zamyla. Sot në Mario, ne do të jetë duke piramidën e gjysmë për Mario të rritet deri. Pra, le të flasim për tonë të-bërë-së për këtë problem. Ne jemi duke shkuar për të duan për të nxitur dhe për të vërtetuar përdoruesi për një kontribut të vlefshëm të asaj se si të lartë ata duan piramidale Mario të jetë. Dhe pastaj, ne jemi duke shkuar për të nxjerrë atë. Pra, le të ketë filluar me të nxitur dhe Vleresimin e përdoruesit për kontributin e tyre. Ne mund të bëjnë përdorimin e CS50 Biblioteka Funksioni marrë int që do të sigurojë që përdoruesi inputeve një numër të plotë. Çdo integers pozitive, negative integers, numri 0 janë të gjitha lojë të ndershme. Përndryshe, përdoruesi do të nxitet për të rigjykuar deri sa të dhëna një numër i plotë i vlefshëm. Tani edhe pse get int bën një shumë e punë për ne për të siguruar se Përdorues na jep një numër të plotë, ne ende duhet të aplikoni disa kufizime shtesë në se. Pas të gjitha, ne nuk mund të ketë Mario ngjitje një piramidë gjysma e lartësisë negative 12. Përveç kësaj, specifikim problemi thotë se ne vetëm mund të lejojnë Mario të rritet një piramidë nga lartësitë midis 0 dhe 23. OK, kështu që do të thotë se ne kemi nevojë që vazhdimisht të menjëhershëm të përdoruesit për të na dhënë një të vlefshme numrin dhe vetëm të vazhdojë pasi ata na kanë dhënë një lartësi të vlefshme. Si e bëjmë këtë? E pra, proceset e vazhdueshme të na japin ideja e loops-- diçka bërë përsëritëse. Një lak në C si një kohë loop që vazhdimisht do të ekzekutuar trupin e lak për aq kohë sa gjendja dhënë vlerëson të vërtetë. Sapo atë gjendje vlerëson të rreme, programi do të vazhdojë të çdo gjë që vjen pas kësaj. Kështu, ndërsa sythe janë një mënyrë për të duke siguruar që ne vazhdimisht menjëhershëm të përdoruesit për një kontribut të vlefshëm. Dhe një herë ata na japin një kontribut të vlefshëm, ne do të vazhdojë për çdo gjë që vjen më pas. Ne e dimë se ne jemi duke shkuar për të kërkuar përdoruesit për kontributin e të paktën një herë. Deri tani kemi ardhur në një motër e ndërsa loop, që është për ta bërë, ndërsa loop. A ndërsa sythe do të ekzekutojë trupi i lak paktën një herë. Pra, pa kontrolluar gjendjen, ajo do të ekzekutojë trupin e lak. Dhe pastaj të kontrolluar gjendjen për të parë nëse ajo duhet të përsëritet. Kjo vjen në dobishëm kur ne jemi duke Vleresimin dhëna përdoruesi. Ne e dimë se ne jemi duke shkuar të pyesni ata të paktën një herë. Pra, një për ta bërë, ndërsa loop fuqisë duket diçka si kjo. Ne kemi një numër i plotë n. Dhe në brendësi të detyrave ndërsa lak, ne menjëherë menjëhershëm të përdoruesit për një numër të plotë. 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 na jep gjithmonë atë numër të plotë të vlefshme. 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ë. Pra, le të kthehemi në spekulim dhe kontroll ajo që kushtet për një kontribut të vlefshëm do te jete. Lartësitë e vlefshme do të të jetë midis 0 dhe 23, përfshirëse. lartësitë Pra pavlefshme do të të jetë më pak se 0 ose më shumë se 23. Pra, mos harroni për të hartuar gjendja juaj me kujdes, duke e ditur se kusht për ta bërë, ndërsa loop duhet të jetë, ndërsa n është e pavlefshme. Tani kjo nuk do të jetë një shprehje e thjeshtë e vetme Boolean. Ne do të kemi për të kombinuar dy shprehje të ndryshme për të bërë të gjithë gjendjen tonë. 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 do të merret me dy Booleans. Kështu që këtu është një tryezë e vërtetë ku unë kemi dy Booleans-- Boolean 1 dhe 2. Pra, ne kemi mundësi për të vlerësuar bool1 dhe bool2 ose bool1 ose bool2. Dhe do të jetë e vërtetë vetëm në qoftë se të dy Booleans vlerësuar të vërtetë, ndërsa të gjitha ose do të jetë e vërtetë për sa kohë që një nga dy Booleans vlerëson të vërtetë. OK, kështu që të marrë një moment, pauzë kjo video dhe tretet këtë tabelë të vërtetën. Do të jetë e drejtë këtu duke pritur. Kur të kthehem, shih në qoftë se ju mund të pjesë së bashku një shprehje Boolean për tuaja gjendja n qenë një input të pavlefshme. Pra, tani që ne kemi input vlefshme përdorues, le të të shkojnë përpara dhe të flasim për mënyrën se si ne mund të tërheqë gjysmën piramidën. Këtu në këtë editor teksti të thjeshtë, Unë e kam tërhequr një linjë majtë piramidë. Por ne e dimë se kemi nevojë tonë piramidale të jetë një linjë të drejtë. Pra, si mund ta bëjë këtë? E pra, unë mund të përpiqet të shtyjë çdo gjë në anën nga vetëm vënë pak karakter në mes. Dhe pastaj, për të ardhshëm line, unë jam duke shkuar për të vënë disa karaktere më shumë për të nxitur atë së bashku, dhe further-- kështu me radhë e kështu me forth-- deri sa të ketë të drejtë një linjë piramidën. Pra, ne kemi një piramidë të drejtë align, por kjo nuk duket aq e madhe me pika. Por ne ende duan të ruajtur atë ndarje të mirë. Kështu që unë jam duke shkuar për të fjalë për fjalë futur disa hapësira. Në vend të tre pika, unë do vënë një, dy, tre hapësira. Në rreshtin e dytë. Unë do të vënë një, dy hapësira. Dhe në parafundit line, vetëm një hapësirë. Dhe këtu unë kam një të drejtë linjë piramidë. Nga bërë shembullin në tekst editor, ne kemi një ide për modelin që ne do të përdorim për të nxjerrë gjysmë piramidën. Për çdo rresht, ajo që ne e bëmë është ne shkruani disa hapësira, dhe pastaj shtypur disa hashes, dhe pastaj shtypen Enter, e cila është duke krijuar një linjë të re. Pra, tani që ne kemi që, le të shkojë një hap më tej dhe për të gjetur një model. Kështu që unë jam duke shkuar për të thënë, sepse Interesi për këtë shembull, kemi të bëjmë me një lartësi prej 8. Rreshtin e parë do të ketë dy hashes që vijon shtatë hapësira. Të second-- tre hashes, gjashtë hapësira. Së treti row-- katër hashes, pesë spaces-- kështu me radhë e kështu me radhë deri sa të kemi në radhë NTH. Kështu, pra, unë ju pyes për rresht NTH, sa hashes do të shkojmë të kemi dhe sa hapësira? Kështu që është e deri tek ju të kuptoj se një formula për të përfaqësuar sa më shumë hashes dhe sa hapësira janë të nevojshme për në radhën e NTH kur ju keni disa lartësi. Tani kur ju jeni figuring this out, të jenë të kujdesshëm se si ju jeni indeksimin. Çfarë dua të them me këtë është se në jetën e përditshme të gjithë ne të fillojë numërimi, zakonisht nga 1. Por në CS50 dhe në shkenca kompjuterike në përgjithësi, ne jemi 0 indeksuar. Kështu në radhën e parë do të jetë n nga 0 në krahasim me 1. Të jenë të kujdesshëm për këtë kur ju jeni duke u përpjekur të kuptoj se modelin tuaj. Pra, tani le të kthehemi për të si ne jemi duke shkuar për të nxjerrë piramidën tonë. Për çdo rresht, ne do të duan të shtypura hapësirat, të shtypur hashes, dhe pastaj të shtypura një linjë të re. Hint këtu është fjala "për" çdo rresht. Në C, ne kemi një konstrukt quajtur një për lak, e cila është e përbërë nga një initialization, një gjendje, një përditësim, dhe trupi i lak. Thuaj Unë të kërkuar për të thënë, përshëndetje Bota, 50 herë, ime për lak do të dukej diçka si kjo. I nisja integer tim në 0. Gjendja është që është më pak se 50. Dhe pastaj përditësim im është i drejtë bën rritjen I nga një çdo herë. Ne gjithashtu mund të përdorni për sythe për të iterate mbi gjëra. Vini re këtu se ne nuk kemi vështirë koduar një numër, por vendosi të ndryshueshme lartësia në vend në gjendje. Pra, ajo që unë jam duke bërë këtu është që unë jam iterating mbi çdo rresht të piramidës. Unë mund të bëjë diçka për secilin rresht në brendësi të trupit të lak tim. Çfarë po bëjmë brenda trupi i lak? E pra, siç kemi thënë tashmë, ne jemi shtypjen hapësira dhe ne jemi shtypjen hashes dhe ne jemi shtypjen e një linjë të re. Kështu jashtme im për lak do të duket si ky. I iterate mbi çdo rresht e piramidës, duke përdorur, në këtë rast, lartësia si variabël që ruan lartësinë e piramidës. Brenda trupit të atij lak, Jam do të shtypura hapësira në mënyrë të përsëritur, të shtypura hashet në mënyrë të përsëritur, dhe pastaj të shtypura një linjë të re. Deri tani, duke përdorur të gjitha konceptet që Unë kam biseduar rreth në këtë shëtitje-nëpërmjet, ju duhet të jetë në gjendje të menjëhershëm përdoruesit për të dhëna, vërtetoni se të dhëna, dhe pastaj të nxjerrë gjysmë piramidën. Emri im është Zamyla, dhe kjo është CS50.