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.