ZAMYLA Chan: Je to ja, Zamyla. Dnes v Mario, budeme mať kreslenie polovicu pyramídy pre Mario vyšplhať nahor. Takže poďme hovoriť o našich úloh pre tento problém. budeme chcieť výzvu a overovať Užívateľ pre platný vstup, ako high chcú Mario pyramída byť. A potom, budeme ju čerpať. Takže poďme začať s výzvou a overenie užívateľa pre ich vstup. Môžeme využiť služby Funkcia CS50 Knižnica dostať int, ktorá zabezpečí, že užívateľ zadá celé číslo. Prípadné pozitívne celé čísla, záporná celé čísla, čísla 0 sú poctivá hra. V opačnom prípade bude užívateľ vyzvaný k opakovať, kým sa vstupom platné celé číslo. Teraz síce get int robí veľa práce pre nás na zaistenie Užívateľ nám dáva celé číslo, stále potrebujeme použiť niektoré ďalšie obmedzenia na to. Koniec koncov, nemôžeme mať Mario lezenie polovica pyramída výšky negatívneho 12. Okrem toho, že je špecifikácia problému hovorí, že môžeme len dovoliť Mario šplhať pyramída z výšok medzi 0 a 23 ° C. OK, tak to znamená, že je potrebné priebežne vyzve užívateľa aby nám platný Počet a len pokračovať keď si dal nám platnú výšku. Ako to urobíme? No, kontinuálne procesy nám dá Myšlienka loops-- niečo robiť opakovane. Jedna slučka v C za chvíľu slučka, ktorá bude priebežne vykonať telo slučky tak dlho, kým daná podmienka vyhodnotená ako pravdivá. Akonáhle je táto podmienka vyhodnocuje ako nepravdivý, Program bude pokračovať čo príde po tom. Takže zatiaľ čo slučky sú jedným zo spôsobov zabezpečiť, aby Neustále vyzve užívateľa na zadanie platný vstup. A potom, čo nám platný vstup, budeme pokračovať, čo príde nabudúce. Vieme, že budeme klásť užívateľ pre vstup aspoň raz. Takže teraz sa dostávame k sestra while, ktorý je robiť, zatiaľ čo slučka. Robiť, kým slučky sa vykoná telo slučky aspoň raz. Takže bez kontroly stavu, že sa vykoná tela slučky. A potom skontrolovať stav vidieť či je potrebné opakovať. To príde vhod, keď my overenie užívateľského vstupu. Vieme, že ideme aby im aspoň raz opýtať. Takže robiť, zatiaľ čo slučka by mohla vyzerať nejako takto. Máme celé číslo n. A vnútri úloh while, okamžite vyzve užívateľa k celé číslo. Ak n je neplatné, potom budeme je výzva znovu a znovu a znovu, kým nebudú daj nám, že platné celé číslo. Konečne, akonáhle n je platný vstup, zmienime pokračovať do zvyšku nášho programu. Takže sa vráťme k spec a kontrola aké sú podmienky pre platný vstup Bude. Platné výšky budú byť v rozmedzí 0 až 23 vrátane. Takže neplatné výšky idú do byť menšia ako 0 alebo väčšia ako 23 ° C. Takže nezabudnite navrhnúť Váš zdravotný stav starostlivo, s vedomím, že podmienkou Pre robiť, zatiaľ čo slučky by mal byť pri n je neplatný. Teraz to nie je Bude to jednoduchý jediný logický výraz. Budeme musieť spojiť dva rôzne výrazy aby sa celý náš stav. Takže poďme stačí sa pozrieť na pravdivostnú tabuľky som Už vám dal náznak, že sme bude zaoberať dvoma Boolean. Takže tu je pravdivostná tabuľka, kde som majú dve Booleans-- boolovskou 1 a 2. Takže máme možnosť vyhodnotiť bool1 a bool2 alebo bool1 alebo bool2. A bude len pravdivé ak obidva Booleans vyhodnotiť na hodnotu true, zatiaľ čo všetci alebo bude platiť tak dlho, kým jeden z dva Booleans vyhodnotený ako true. OK, takže chvíľku, pozastaviť toto video a stráviť túto pravdu tabuľky. Budem tu čakať. Keď sa vrátiš, pozri ak môžete dať dohromady Boolovský výraz pre vaše Stav N je neplatný vstup. Takže teraz, že máme platný vstup od užívateľa, poďme choďte do toho a hovoriť o tom, ako mohol čerpať polovicu pyramídy. Tu v tomto jednoduchom textovom editore, Ja som nakreslil ľavej vyrovnané pyramídy. Ale my vieme, že musíme naše pyramída je potrebné so zarovnaním vpravo. Tak, ako by to urobiť? No, ja by som mohol skúsiť, aby sa zasadila všetko na stranu len špecifikovaním málo znak medzi nimi. A potom, pre budúci linka, idem dať Niektoré viac znakov, aby sa zasadila ju so sebou, a further-- tak ďalej a tak forth-- kým nebudem mať tú správnu vyrovnané pyramídy. Takže máme pravý align pyramídy, ale to nevyzerá tak skvele s bodkami. Ale napriek tomu chceme tvrdia, že pekné medzery. Takže idem doslovne vložiť nejaké medzery. Namiesto troch bodiek, budem dať jeden, dva, tri medzery. Na druhom riadku. Dám jeden, dva priestory. A na predposlednej linka, len jeden priestor. A tu mám právo vyrovnané pyramídy. V tom príklad v texte editor, máme predstavu o štruktúre že budeme používať na to polovicu pyramídy. Pre každý riadok, čo sme urobili Je napíšeme nejaké medzery, a potom napísal niektoré hashe, a potom zadali klávesa Enter, ktorá vytvára novú linku. Takže teraz, že máme to, poďme o krok ďalej a nájsť vzor. Tak som chcel povedať, pretože Záujem o tento príklad, máme čo do činenia s výškou 8. Prvý riadok bude mať dva hash, ktorý nasleduje sedem medzery. Tieto second-- Tri hashe, šesť priestory. Tretia row-- štyri, päť hash spaces-- tak ďalej a tak ďalej až sa dostaneme do n-tého riadku. Tak som vás požiadať o n-tého riadku koľko hashes budeme mať a koľko miest? Takže je to len na vás prísť na to, Vzorec pre reprezentáciu, koľko hashe a koľko priestory sú potrebné pre n-tej riadky, ak máte nejakú výšku. Teraz, keď ste prísť na to, dávať pozor, ako ste indexovanie. Čo tým chcem povedať je to, že v každodennom živote nás všetkých začať počítať, zvyčajne o 1. Ale v CS50 a vo vede o počítačoch Všeobecne platí, že sú indexované 0. Takže prvý riadok bude n 0, na rozdiel od 1. Dávajte pozor na to, keď ste sa snažia zistiť svoju masku. Takže teraz sa vráťme k tomu, ako budeme kresliť našej pyramídy. Pre každý riadok, budeme chcieť vytlačiť medzery, vytlačte hodnoty hash, a vytlačiť nový riadok. Náznak je tu Slovo "pre" každý riadok. V C, máme konštrukt volal pre sláčiky, ktorý sa skladá z inicializácia, podmienka, aktualizácie, a telo slučky. Povedzme, že som chcel povedať, ahoj world, 50 krát, môj pre sláčiky bude vyzerať nejako takto. Aj inicializovať moje číslo do 0 ° C. Podmienkou je, že je menšia ako 50 ° C. A potom moja aktualizácia je jednoducho zvyšovanie Aj po druhom zakaždým. Môžeme tiež použiť pre slučiek iterovat nad vecou. Všimnite si, ako my nie pevný kódované číslo, ale umiestnil premennú Výška miesto do stavu. Takže to, čo tu robím je, že som iterácie cez každý rad pyramídy. Môžem urobiť niečo pre každého riadok vnútri tela môjho slučky. Čo budeme robiť dovnútra telo slučky? No, ako sme už uviedli, sme tlač priestory a my sme tlače hashe a my sme tlače nový riadok. Takže moje vonkajšie pre sláčiky bude vyzerať takto. Aj iteráciu cez každý riadok pyramídy, použitím v tomto prípade, ako je premenná výška ktorý ukladá výšku pyramídy. Vnútri tela tej slučky, som bude opakovane tlačiť medzery, tlač hodnoty hash opakovane, a vytlačiť nový riadok. Takže teraz, s použitím všetkých pojmov, ktoré Hovoril som o tejto priechodných, by ste mali byť schopní prinúti Používateľ pre vstup, potvrdiť, že vstup, a potom nakresliť polovicu pyramídy. Volám sa Zamyla, a to je CS50.