ZAMYLA Chan: Je to-me, Zamyla. Dnes budeme realizovat Mario, kde čerpáme Mario plná pyramida pro něj přeskočit. Pojďme rozebrat dílčí úkoly tohoto problému. Za prvé, chceme vyzvat uživatele pro výšku pyramidy. A pak chceme, aby se ujistil, že tento vstup je platný. A pak budeme chcete nakreslit pyramidy. Takže pojďme mluvit o dotazování a ověřování vstup uživatele. Mohlo by to vypadat to, do-while, že vyzve uživatele k integer a pak jen opakuje v případě, že číslo je neplatné. Takže to, co by tato podmínka měla být? K tomu, vraťme specifikaci. No, spec nám říká, že jakýkoli platný výška bude mezi 0 a 23, inclusive. A tak, že znamená, že jakékoli neplatné výška bude menší než 0 nebo více než 23. Takže teď, že máme tuto informaci, Pojďme vytvořit naši kondici. Ale musíme být opatrní, protože nyní máme Dva Booleans, které chceme hodnotit. Tady jsem vám poskytl s pravdivostní tabulky. To nám umožní přijmout dva Booleans, Boolean jedna a dvě. A můžeme hodnotit ani bool1 a bool2 nebo bool1 nebo bool2. Takže jaký je rozdíl a mezi nimi a nebo? No, bool1 a bool2 bude vyhodnotí na true právě tehdy, pokud jsou splněny obě Booleans, vzhledem k tomu, nebo provoz bude platit pokud se některá ze že Booleans nebo obě jsou pravdivé. Takže s tím na mysli, uvidíme, jestli můžete přijít na to, jaký by byl vhodný podmínkou Vaše do-while za neplatnou n bude. S tím jsme vyzváni a ověřeny Uživatel pro výšku pyramidy že chtějí. Takže teď je to na nás nakreslit pyramidy. Plná pyramida pro toto Problém bude vypadat trochu jako je tento, kde máme levé pyramidy, některé mezery, a pak hned pyramidy. Takže pojďme rozčlenit tento systém trochu. Pokud bych jít do mého textového editoru, zde jsem tažené nám pyramidu zarovnaný doleva. Ale to nebude dělat. To, co chceme udělat, je chceme Vytvoření zarovnaný vpravo pyramidu jako první. Tak, jak to udělat, aby stačí stisknout moje hashes podél na stranu, Právě jdu dát některé znaky mezi tím, právě těchto teček. Pak jdu dát dva na Následující řádek a jeden na tomto řádku. A tak tu mám zarovnaný vpravo pyramidy. Za to, že budu vrátit do horní řadě a dát do mezery, která je, dle specifikace, dvě mezery. Pak jdu k vyplnění druhé straně pyramidy. Chystám se jít do druhé řady, psát Dva prostory pro mezeru a poté dva hash. Zpět na třetí řadě, dvě mezery Pro mezery a tři hash. A na konci, dvě mezery pro mezeru a čtyři hash. Takže to je to, co full pyramida bude vypadat. Samozřejmě, že nechceme Tyto tečky v cestě. Takže budeme nahradit tyto body tím, že některé mezery. Jedna, dvě, tři na prvním řádku. Jedna, dva na druhém. A jeden na třetím řádku. Tak tohle je to, co budeme dělat, když my chtěl jen udělat plnou pyramidu, říkat, v našem textovém editoru. Takže berme to, pochopení vzory, a převést ji do jisté pseudokódu. Pro každý řádek pyramidy, chceme vytisknout levý pyramidu a poté mezera a poté pravé pyramida. Pro levou pyramidy, tiskneme Potřebný objem prostorů, následuje hash kódy. Pak jsme vytisknout schodek, který je jen dva prostory pokaždé. A ve správném pyramidy, tiskneme potřebný počet hash. Za druhé řadě, jsme provedli stejný přesný proces. Tiskneme prostory pro levý pyramida, požadovaná částka hashů, mezery, dvěma prostory a Potom se hash pro pravou pyramidu. Pojďme řešit vzor pro levé pyramidy. Kdybych měl pro účely tohoto příkladu, výška z osmi, o které požádal Uživatel pak moje první řádek bude mít jednu hash a sedm míst. Můj druhý řádek by měl dvě hodnoty hash, šest prostory. Třetí řada, tři, pět hashes prostory. Můžete Pravděpodobně to udělat sami o výšce osmi a určení, pro každý řádek, kolik hash a kolik místa budete potřebovat. Ale to, co chceme udělat, je Chceme-li abstraktu. Tak jsem vás požádat o jakékoliv n-té řádky kolik hash a kolik místa potřebujeme? Nyní, jak si určit vzor pro to, jak mnoho hashe a kolik místa budete potřebovat pro jakékoliv n-tý řádek pro danou výšku, pamatovat si dávat pozor o tom, jak jste indexování. Co tím chci říct je to, že v každodenních život většina z nás začít počítat o jednu. Takže první řadě by bylo číslo jedna. A v druhé řadě by řádek číslo dvě, a tak dále a tak dále. Ale v oblasti počítačové vědy a CS50 jsme zero-indexovány. Takže jsme vlastně začít počítat od nuly. Takže první řadě by být řádek číslo nula. A v druhé řadě by řádek číslo jedna. Takže kdybych měl výšku osm pro můj pyramidy, pak poslední hodnota n by ve skutečnosti bylo sedm a osm ne. Tak dávat pozor na to. A být si vědom, když jste stanovení Váš vzor, ​​zda je váš zero-indexovány nebo jeden-indexovány OK. Takže teď, že máme vzor pro levou pyramidy, musíme zjistit, vzor pro mezery. Naštěstí je to opravdu snadné. Je to jen vždy dva prostory. Takže teď budeme pokračovat do pravého vzoru. První řádek bude mít jeden hash. Druhý řádek, dva. Třetí řada, tři. A tak dále. Takže znovu, stanovit pro všechny abstraktní n a jakákoli výška kolik hash a kolik míst Každý řádek by měl mít. OK. Takže víme, že pro každou sebou jsme je třeba provést nějakou proces. Jak to uděláme? No, my používáme pro konstrukci cyklu, sestává z inicializace, podmínka, a aktualizace. Pro mohou být použity smyčky opakovat procesy. Takže říci, chci, aby to pozdravit, world 50krát, pak my pro smyčce bude vypadat nějak takhle, kde I inicializovat svůj proměnnou na nulu. Podmínkou je, že i je nižší než 50 ° C. A pak aktualizace je to tak přírůstků podle jednoho pokaždé. Takže to, co by to udělat, by bylo vytisknout Hello, world 50krát v řadě. Nyní, že jsem chtěl iteraci přes výšku pyramidy. Potom místo pevného kódování některé hodnoty ve stavu, Jen jsem použít proměnnou výšku. Tak co to bude dělat, je iterate přes výšku každého řádku. A můžu dělat něco uvnitř tělesa této smyčky. Co chceme udělat uvnitř těla smyčky? No, jak bylo uvedeno výše, chceme tisknout prostor a hodnoty hash pro levou pyramidy a poté Tisk dvě mezery a vytisknout hodnoty hash. Takže jsme již přišel na to ven. Takže můžeme začít vyplňovat v našem programu mnohem více. Tady mám vnější pro smyčce, která se iteruje přes každý řádek v pyramidě. A uvnitř tohoto orgánu Jdu opakovaně tisku mezery, Opakovaně hashe, a pak mezera, a pak hash pro pravou pyramidu, a pak, konečně, nový linka spustit další řádek. S tím jsme vyzváni uživatel pro vstup. Udělali jsme jisti, že je to platné. A pak jsme nakreslil pyramidu. Takže Mario může úspěšně lézt na pyramidu. Jmenuji se Zamyla. A to je CS50.