ZAMYLA Chan: Je to-me, Zamyla.
Dnes budeme realizovať Mario, kde čerpáme Mario
plná pyramída pre neho preskočiť.
Poďme rozobrať čiastkové úlohy tohto problému.
>> Po prvé, chceme vyzvať užívateľa pre výšku pyramídy.
A potom chceme, aby sa ubezpečil, že tento vstup je platný.
A potom budeme chcete nakresliť pyramídy.
>> Takže poďme hovoriť o dopytovania a overovanie vstup užívateľa.
Mohlo by to vyzerať to, do-while, že
vyzve užívateľa k integer a potom len opakuje
v prípade, že číslo je neplatné.
Takže to, čo by mala byť táto podmienka?
>> K tomu, vráťme špecifikáciu.
No, spec nám hovorí, že akýkoľvek platný výška bude medzi 0 a 23,
inclusive.
A tak, že znamená, že akékoľvek neplatné výška bude menší ako 0
alebo viac ako 23.
>> Takže teraz, že máme túto informáciu, Poďme vytvoriť našu kondíciu.
Ale musíme byť opatrní, pretože teraz máme
Dva Booleans, ktoré chceme hodnotiť.
>> Tu som vám poskytol s pravdivostnú tabuľky.
To nám umožní prijať dva Booleans, Boolean jedna a dve.
A môžeme hodnotiť ani bool1 a bool2 alebo bool1 alebo bool2.
>> Takže aký je rozdiel a medzi nimi a alebo?
No, bool1 a bool2 bude vyhodnotí na true práve vtedy,
ak sú splnené obe Booleans, vzhľadom k tomu, alebo prevádzku
bude platiť, ak sa niektorá zo že Booleans alebo obe sú pravdivé.
Takže s tým na mysli, uvidíme, či môžete prísť na to,
aký by bol vhodný podmienkou Vaša do-while za neplatnú n
Bude.
>> S tým sme vyzvaní a overené Užívateľ pre výšku pyramídy
že chcú.
Takže teraz je to na nás nakresliť pyramídy.
Plná pyramída pre toto Problém bude vyzerať trochu
ako je tento, kde máme ľavej pyramídy, niektoré medzery, a potom hneď pyramídy.
Takže poďme rozčleniť tento systém trochu.
>> Ak by som ísť do môjho textového editora, tu som ťahané nám pyramídu zarovnané doľava.
Ale to nebude robiť.
To, čo chceme urobiť, je chceme Vytvorenie zarovnaný vpravo pyramídu ako prvý.
Tak, ako to urobiť, aby stačí stlačiť moja hashes pozdĺž na stranu,
Práve idem dať niektoré znaky medzi tým, práve týchto bodiek.
Potom idem dať dva na Nasledujúci riadok a jeden na tomto riadku.
A tak tu mám zarovnaný vpravo pyramídy.
>> Za to, že budem vrátiť do hornej rade
a dať do medzery, ktorá je, podľa špecifikácie, dve medzery.
Potom idem k vyplneniu druhej strane pyramídy.
Chystám sa ísť do druhého radu, písať Dva priestory pre medzeru a potom dva
hash.
Späť na treťom rade, dve medzery Pre medzery a tri hash.
A na konci, dve medzery pre medzeru a štyri hash.
Takže to je to, čo full pyramída bude vyzerať.
>> Samozrejme, že nechceme Tieto bodky v ceste.
Takže budeme nahradiť tieto body tým, že niektoré medzery.
Jedna, dve, tri na prvom riadku.
Jedna, dva na druhom.
A jeden na treťom riadku.
Tak toto je to, čo budeme robiť, keď my chcel len urobiť plnú pyramídu,
hovoriť, v našom textovom editore.
>> Takže berme to, pochopenie vzory,
a previesť ju do istej pseudokódu.
Pre každý riadok pyramídy, chceme vytlačiť ľavý pyramídu a potom
medzera a potom pravé pyramída.
Pre ľavú pyramídy, tlačíme Potrebný objem priestorov,
nasleduje hash kódy.
Potom sme vytlačiť schodok, ktorý je len dva priestory zakaždým.
A v správnom pyramídy, tlačíme potrebný počet hash.
>> Po druhé rade, sme vykonali rovnaký presný proces.
Tlačíme priestory pre ľavý pyramída, požadovaná čiastka
Hash, medzery, dvoma priestormi a Potom sa hash pre pravú pyramídu.
>> Poďme riešiť vzor pre ľavé pyramídy.
Keby som mal na účely tohto príkladu, výška
z ôsmich, o ktoré požiadal Užívateľ potom moja prvá riadok
bude mať jednu hash a sedem miest.
Môj druhý riadok by mal dve hodnoty hash, šesť priestory.
Tretí rad, tri, päť hashes priestory.
Môžete Pravdepodobne to urobiť sami o výške ôsmich
a určenie, pre každý riadok, koľko hash a koľko miesta budete potrebovať.
Ale to, čo chceme urobiť, je Ak chceme abstraktu.
Tak som vás požiadať o akékoľvek n-tej riadky koľko hash a koľko miesta potrebujeme?
>> Teraz, ako si určiť vzor pre to, ako veľa hashe
a koľko miesta budete potrebovať pre akékoľvek n-tý riadok pre danú výšku,
pamätať si dávať pozor o tom, ako ste indexovanie.
Čo tým chcem povedať je to, že v každodenných život väčšina z nás začať počítať o jednu.
Takže prvom rade by bolo číslo jedna.
A v druhom rade by riadok číslo dva, a tak ďalej a tak ďalej.
>> Ale v oblasti počítačovej vedy a CS50 sme zero-indexované.
Takže sme vlastne začať počítať od nuly.
Takže prvý rade by byť riadok číslo nula.
A v druhom rade by riadok číslo jedna.
Takže keby som mal výšku osem pre môj pyramídy, potom posledná hodnota n
by v skutočnosti bolo sedem a osem nie.
>> Tak dávať pozor na to.
A byť si vedomý, keď ste stanovenie Váš vzor, ​​či je váš zero-indexované
alebo jeden-indexované
>> OK.
Takže teraz, že máme vzor pre ľavú pyramídy,
musíme zistiť, vzor pre medzery.
Našťastie je to naozaj jednoduché.
Je to len vždy dva priestory.
>> Takže teraz budeme pokračovať do pravého vzoru.
Prvý riadok bude mať jeden hash.
Druhý riadok, dva.
Tretí rad, tri.
A tak ďalej a tak ďalej.
Takže znovu, stanoviť pre všetky abstraktné n a akákoľvek výška koľko hash
a koľko miest Každý riadok by mal mať.
>> OK.
Takže vieme, že pre každú sebou sme je potrebné vykonať nejakú proces.
Ako to urobíme?
No, my používame pre konštrukciu cyklu, pozostáva z inicializácia,
podmienka, a aktualizácie.
Pre môžu byť použité slučky opakovať procesy.
>> Takže povedať, chcem, aby to pozdraviť, world 50-krát, potom my pre sláčiky
bude vyzerať nejako takto, kde Aj inicializovať svoj premennú na nulu.
Podmienkou je, že aj je nižšia ako 50 ° C.
A potom aktualizácie je to tak prírastkov podľa jedného zakaždým.
Takže to, čo by to urobiť, by bolo vytlačiť Hello, world 50-krát v rade.
>> Teraz, že som chcel iterácii cez výšku pyramídy.
Potom miesto pevného kódovania niektoré hodnoty v stave,
Len som použiť premennú výšku.
Tak čo to bude robiť, je ITERATE cez výšku každého riadku.
A môžem robiť niečo vnútri telesa tejto slučky.
>> Čo chceme urobiť vnútri tela slučky?
No, ako bolo uvedené vyššie, chceme tlačiť priestor a hodnoty hash
pre ľavú pyramídy a potom Tlač dve medzery a vytlačiť hodnoty hash.
Takže sme už prišiel na to von.
Takže môžeme začať vypĺňať v našom programe oveľa viac.
>> Tu mám vonkajšie pre sláčiky, ktorá sa iteruje cez každý riadok v pyramíde.
A vo vnútri tohto orgánu Idem opakovane tlače medzery,
Opakovane hashe, a potom medzera, a potom hash pre pravú pyramídu,
a potom, konečne, nový linka spustiť ďalší riadok.
>> S tým sme vyzvaní užívateľ pre vstup.
Urobili sme istí, že je to platné.
A potom sme nakreslil pyramídu.
Takže Mario môže úspešne liezť na pyramídu.
>> Volám sa Zamyla.
A to je CS50.