ZAMYLA Chan: Je to já, Zamyla. Dnes v Mario, budeme mít kreslení polovinu pyramidy pro Mario vyšplhat nahoru. Takže pojďme mluvit o našich úkolů pro tento problém. Budeme chtít výzvu a ověřovat Uživatel pro platný vstup, jak high chtějí Mario pyramida být. A pak, budeme ji čerpat. Takže pojďme začít s výzvou a ověření uživatele pro jejich vstup. Můžeme využít služeb Funkce CS50 Knihovna dostat int, která zajistí, že uživatel zadá celé číslo. Případné pozitivní celá čísla, záporná celá čísla, čísla 0 jsou poctivá hra. V opačném případě bude uživatel vyzván k opakovat, dokud se vstupem platné celé číslo. Nyní sice get int dělá hodně práce pro nás na zajištění Uživatel nám dává celé číslo, stále potřebujeme použít některé další omezení na to. Konec konců, nemůžeme mít Mario lezení polovina pyramida výšky negativního 12. Kromě toho, že je specifikace problému říká, že můžeme jen dovolit Mario šplhat pyramida z výšek mezi 0 a 23 ° C. OK, tak to znamená, že je třeba průběžně vyzve uživatele aby nám platný Počet a jen pokračovat když si dal nám platnou výšku. Jak to uděláme? No, kontinuální procesy nám dá Myšlenka loops-- něco dělat opakovaně. Jedna smyčka v C za chvíli smyčka, která bude průběžně vykonat tělo smyčky tak dlouho, dokud daná podmínka vyhodnocena jako pravdivá. Jakmile je tato podmínka vyhodnocuje jako nepravdivý, Program bude pokračovat co přijde po tom. Takže zatímco smyčky jsou jedním ze způsobů zajistit, aby Neustále vyzve uživatele k zadání platný vstup. A poté, co nám platný vstup, budeme pokračovat, co přijde příště. Víme, že budeme klást uživatel pro vstup alespoň jednou. Takže teď se dostáváme k sestra while, který je dělat, zatímco smyčka. Dělat, zatímco smyčky se provede tělo smyčky alespoň jednou. Takže bez kontroly stavu, že se provede těla smyčky. A pak zkontrolovat stav vidět zda je třeba opakovat. To přijde vhod, když my ověření uživatelského vstupu. Víme, že jedeme aby jim alespoň jednou zeptat. Takže dělat, zatímco smyčka by mohla vypadat nějak takto. Máme celé číslo n. A uvnitř úkolů while, okamžitě vyzve uživatele k celé číslo. Pokud n je neplatné, pak budeme je výzva znovu a znovu a znovu, dokud nebudou dej nám, že platné celé číslo. Konečně, jakmile n je platný vstup, zmíníme pokračovat do zbytku našeho programu. Takže se vraťme k spec a kontrola jaké jsou podmínky pro platný vstup bude. Platné výšky budou být v rozmezí 0 až 23 včetně. Takže neplatné výšky jdou do být menší než 0 nebo větší než 23 ° C. Takže nezapomeňte navrhnout Váš zdravotní stav pečlivě, s vědomím, že podmínkou Pro dělat, zatímco smyčky by měl být při n je neplatný. Teď to není Bude to jednoduchý jediný logický výraz. Budeme muset spojit dva různé výrazy aby se celý náš stav. Takže pojďme stačí se podívat na pravdivostní tabulky jsem Už vám dal náznak, že jsme bude zabývat dvěma Boolean. Takže tady je pravdivostní tabulka, kde jsem mají dvě Booleans-- boolovskou 1 a 2. Takže máme možnost vyhodnotit bool1 a bool2 nebo bool1 nebo bool2. A bude pouze pravdivé pokud oba Booleans vyhodnotit na hodnotu true, zatímco všichni nebo bude platit tak dlouho, dokud jeden z dva Booleans vyhodnocen jako true. OK, takže chvilku, pozastavit toto video a strávit tuto pravdu tabulky. Budu tady čekat. Když se vrátíš, viz pokud můžete dát dohromady booleovský výraz pro vaše Stav N je neplatný vstup. Takže teď, že máme platný vstup od uživatele, pojďme jděte do toho a mluvit o tom, jak mohl čerpat polovinu pyramidy. Tady v tomto jednoduchém textovém editoru, Já jsem nakreslil levé vyrovnány pyramidy. Ale my víme, že musíme naše pyramida je třeba se zarovnáním vpravo. Tak, jak by to udělat? No, já bych mohl zkusit, aby se zasadila vše na stranu pouhým uvedením málo znak mezi nimi. A pak, pro příští linka, jdu dát Některé více znaků, aby se zasadila ji s sebou, a further-- tak dále a tak forth-- dokud nebudu mít tu správnou vyrovnány pyramidy. Takže máme pravý align pyramidy, ale to nevypadá tak skvěle s tečkami. Ale přesto chceme tvrdí, že pěkné mezery. Takže jdu doslovně vložit nějaké mezery. Namísto tří teček, budu dát jeden, dva, tři mezery. Na druhém řádku. Dám jeden, dva prostory. A na předposlední linka, jen jeden prostor. A tady mám právo vyrovnány pyramidy. V tom příklad v textu editor, máme představu o struktuře že budeme používat k tomu polovinu pyramidy. Pro každý řádek, co jsme udělali Je napíšeme nějaké mezery, a pak napsal některé hashe, a poté zadali klávesa Enter, která vytváří novou linku. Takže teď, že máme to, pojďme o krok dál a najít vzor. Tak jsem chtěl říct, protože Zájem o tento příklad, máme co do činění s výškou 8. První řádek bude mít dva hash, který následuje sedm mezery. Tyto second-- Tři hashe, šest prostory. Třetí row-- čtyři, pět hash spaces-- tak dále a tak dále až se dostaneme do n-tého řádku. Tak jsem vás požádat o n-tého řádku kolik hashes budeme mít a kolik míst? Takže je to jen na vás přijít na to, Vzorec pro reprezentaci, kolik hashe a kolik prostory jsou potřebné pro n-té řádky, pokud máte nějakou výšku. Nyní, když jste přijít na to, dávat pozor, jak jste indexování. Co tím chci říct je to, že v každodenním životě nás všech začít počítat, obvykle o 1. Ale v CS50 a ve vědě o počítačích Obecně platí, že jsou indexovány 0. Takže první řádek bude n 0, na rozdíl od 1. Dávejte pozor na to, když jste se snaží zjistit svou masku. Takže teď se vraťme k tomu, jak budeme kreslit naší pyramidy. Pro každý řádek, budeme chtít vytisknout mezery, vytiskněte hodnoty hash, a vytisknout nový řádek. Náznak je zde Slovo "pro" každý řádek. V C, máme konstrukt volal pro smyčce, který se skládá z inicializace, podmínka, aktualizace, a tělo smyčky. Řekněme, že jsem chtěl říci, ahoj world, 50 krát, můj pro smyčce bude vypadat nějak takhle. I inicializovat moje číslo do 0 ° C. Podmínkou je, že je menší než 50 ° C. A pak moje aktualizace je prostě zvyšování I po druhém pokaždé. Můžeme také použít pro smyček iterovat nad věcí. Všimněte si, jak my ne pevný kódované číslo, ale umístil proměnnou Výška místo do stavu. Takže to, co tu dělám je, že jsem iterace přes každou řadu pyramidy. Mohu udělat něco pro každého řádek uvnitř těla mého smyčky. Co budeme dělat dovnitř tělo smyčky? No, jak jsme již uvedli, jsme tisk prostory a my jsme tisku hashe a my jsme tisku nový řádek. Takže moje vnější pro smyčce bude vypadat takto. I iteraci přes každý řádek pyramidy, použitím v tomto případě, jak je proměnná výška který ukládá výšku pyramidy. Uvnitř těla té smyčky, jsem bude opakovaně tisknout mezery, tisk hodnoty hash opakovaně, a vytisknout nový řádek. Takže teď, s použitím všech pojmů, které Mluvil jsem o této průchozích, byste měli být schopni přiměje Uživatel pro vstup, potvrdit, že vstup, a pak nakreslit polovinu pyramidy. Jmenuji se Zamyla, a to je CS50.