ZAMYLA CHAN: Það er ég, Zamyla.
Í dag í Mario, við erum að fara að vera teikna hálfa pýramída fyrir Mario
að klifra upp.
>> Svo skulum við tala um okkar til að gera er fyrir þessu vandamáli.
Við erum að fara að vilja að hvetja og sannreyna
notandi til gilt inntak hvernig hátt þeir vilja pýramída Mario að vera.
Og þá erum við að fara að draga það.
Svo skulum byrja með innblæstri staðfesta notandann inntak þeirra.
>> Við getum nýta sér CS50 bókasafn virka
fá int sem mun tryggja að notandi inntak heiltala.
Allar jákvæðar heiltölur, neikvæð heiltölur, fjöldi 0 eru allir sanngjarn leikur.
Annars mun notandinn beðinn um að reyna aftur fyrr en þeir inntak gild heiltölu.
Nú þó Fá INT virkar a einhver fjöldi af vinna fyrir okkur
við að tryggja að Notandinn gefur okkur heiltölu,
við þurfum samt að beita sumir fleiri hömlur á það.
Eftir allt saman, getum við ekki Mario klifra helmingur pýramída af hæð neikvæð 12.
>> Til viðbótar við þessi, vandamálið forskrift
segir að við getum aðeins leyfa Mario að klifra
pýramída af hæð á milli 0 og 23.
OK, svo það þýðir að við þurfum að stöðugt hvetja notandann
að gefa okkur gilt númer og aðeins halda áfram
þegar þeir eru búnir að gefa okkur gilt hæð.
Hvernig gerum við það?
>> Jæja, gefa samfellt ferli okkur hugmyndin um loops-- gera eitthvað
sífellu.
Ein lykkja í C sem stund lykkja sem verður stöðugt
framkvæma í meginmál lykkju svo lengi sem sem gefið skilyrðið metur að sanna.
Um leið og því ástandi metur að rangar,
forritið mun halda áfram að hvað kemur eftir það.
Svo á meðan lykkjur eru ein leið til að tryggja að við stöðugt
hvetja notandann til gilt inntak.
Og þegar þeir gefa okkur gilt inntak, Við munum halda áfram til hvað kemur næst.
Við vitum að við erum að fara að spyrja sem notandinn fyrir inntak minnsta kosti einu sinni.
Svo nú erum við að koma til systur af meðan lykkja, sem er að gera á meðan lykkja.
>> Gera á meðan lykkjur mun framkvæma meginmál lykkju að minnsta kosti einu sinni.
Svo án þess að athuga ástand, það mun framkvæma líkama lykkju.
Og þá athuga ástand til að sjá hvort sem það þarf að endurtaka sig.
Þetta kemur sér vel þegar við erum staðfesta notandi inntak.
Við vitum að við erum að fara að spyrja þá að minnsta kosti einu sinni.
Svo do while lykkju gæti líta eitthvað eins og this.
Við höfum heiltölu n.
Og inni í gera while lykkju, við strax
hvetja notandann til heiltala.
Ef n er ógildur, þá munum við hvetja þá aftur og aftur og aftur þangað til þeir
gefa okkur að gilda heiltölu.
Að lokum, þegar n er gild inntak, munum við halda áfram til the hvíla af áætlun okkar.
>> Svo við skulum fara aftur til sérstakur og stöðva hvað skilyrði fyrir gildri inntak
er að fara til vera.
Gild hæð eru að fara að vera á milli 0 og 23, að báðum meðtöldum.
Svo ógildir hæðum eru að fara að vera minna en 0 eða fleiri en 23.
Svo muna að hanna ástand þitt vandlega,
vitandi að ástand fyrir að gera á meðan lykkja
ætti að vera á meðan n er ógilt.
Nú er þetta ekki að fara að vera Einföld einn Boolean tjáningu.
Við erum að fara að þurfa að sameina tvær mismunandi orðasambönd
að gera allt ástand okkar.
>> Svo skulum bara líta á sannleiksumsagnar borð sem ég hef þegar gefið þér vísbendingu um að við erum
að fara að takast á við tvær Booleans.
Svo er hér sannleikurinn borð þar sem ég hafa tvær Booleans-- Boolean 1 og 2.
Þannig að við höfum möguleika á að meta bool1 og bool2 eða bool1 eða bool2.
Og mun aðeins vera satt ef bæði Booleans meta satt, en allt
eða mun vera satt svo lengi sem einn af tveir Booleans metur að sanna.
OK, svo taka a augnablik, gera hlé á þessu vídeó og melta þennan sannleika töflu.
Ég kem hérna að bíða eftir.
Þegar þú kemur til baka, sjá ef þú getur stykki saman
a Boole-segð fyrir þinn ástand n vera ógild inntak.
>> Svo nú er að við höfum gildi notandi inntak, við skulum
fara á undan og tala um hvernig við gæti draga hálfa pýramída.
Hér í þessari einföldu texta ritstjóri, Ég hef dregið vinstri takt pýramída.
En við vitum að við þurfum okkar pýramída til að rétt takt.
Svo hvernig gæti ég gert þetta?
Jæja, ég gæti reynt að ýta allt til hliðar
bara með því að setja smá tákni á milli.
Og þá, fyrir næsta lína, ég ætla að setja
sumir fleiri stafir að ýta því eftir, og further-- svo framvegis og svo forth--
þangað til ég hef rétt takt pýramída.
Þannig að við höfum rétt align pýramída, en það lítur ekki svo mikill með punkta.
En við viljum samt að halda því gott bil.
Þannig að ég ætla að bókstaflega setja nokkrar rými.
>> Í stað þess að þremur punktum, ég ætla setja einn, tveir, þrír rými.
Á annarri línu.
Ég ætla að setja eitt, tvö rými.
Og á penultimate lína, bara eitt bil.
Og hér er ég með rétt takt pýramída.
Frá aðgerð dæmi í textanum ritstjóri, höfum við hugmynd um mynstur
sem við munum nota til að draga hálfa pýramída.
Fyrir hverri umf, hvað við gerðum er við gerð nokkur rými,
og síðan slegið nokkur kjötkássa, og þá tegund
á Enter takkann, sem er að búa til nýja línu.
Svo nú er að við höfum það, við skulum fara einu skrefi lengra og finna mynstur.
>> Þannig að ég ætla að segja, fyrir áhugi á þessu dæmi,
við erum að fást við hæð 8.
Það fyrsta röðin er að fara að hafa tvo kjötkássa sem fylgir sjö rými.
The second-- þrjú kjötkássa, sex rými.
Þriðja row-- fjögur kjötkássa, fimm spaces-- svo framvegis og svo framvegis
þar til við komum til nth röð.
Svo þá spyr ég ykkur um tu röð, hversu margir kjötkássa við erum að fara að hafa
og hversu margir eru?
Svo það er komið að þér að reikna út Formúlan til að tákna hversu marga kjötkássa
og hversu margir eru þarf að sem NTH röð þegar þú hefur einhverja hæð.
>> Nú þegar þú ert vangaveltur þetta út, vera varkár hvernig þú ætlar að flokkun.
Það sem ég meina með þessu er að í daglegu lífi okkur öllum
byrja að telja, yfirleitt um 1.
En í CS50 og í tölvunarfræði almennt, við erum 0 verðtryggð.
Svo það fyrsta röðin væri n af 0 öfugt við 1.
Verið varkár um þetta þegar þú ert að reyna að reikna út mynstrið þitt.
Svo nú skulum fara aftur til hvernig við erum að fara að teikna pýramída okkar.
Fyrir hverri umf, við erum að fara til að vilja prenta rými, prenta kjötkássa,
og þá prenta nýja línu.
Vísbending hér er Orðið "fyrir" hverri umf.
Í C, höfum við reisa kallað for lykkju,
sem er samsett úr merkinu frumstilling, ástand, uppfærsla,
og líkama lykkju.
>> Segja að ég vildi segja, halló Heimurinn, 50 sinnum, mínar fyrir lykkju
myndi líta eitthvað eins og this.
Ég frumstilla tölu mitt til 0.
Skilyrði er að ég er minna en 50.
Og þá er bara uppfærsla minn incrementing I í einu í hvert skipti.
Við getum líka notað fyrir lykkjur að iterate yfir hlutum.
Tilkynning hér hvernig við höfum ekki harður dulmáli númer,
heldur sett breytu Hæð í staðinn inn ástandi.
Svo það sem ég er að gera hér er ég iterating yfir í hverri umf frá pýramída.
Ég get gert eitthvað fyrir hverja róa inni í líkama lykkju míns.
>> Hvað erum við að gera inni líkami lykkju?
Jæja, eins og ég sagði þegar, við erum prentun rými og við erum prentun kjötkássa
og við erum að prenta nýja línu.
Svo ytri mín fyrir lykkju mun líta svona út.
Ég kunnugt um hverja umf pýramída, nota,
í þessu tilfelli, hæð og breytunni sem geymir hæð pýramídans.
Inni í líkama þess lykkju, ég er að fara að prenta rými ítrekað, prenta
sem kjötkássa endurtekið, og þá prenta nýja línu.
>> Svo nú, með því að nota öll hugtök sem Ég hef talað um í þessum göngutúr í gegnum,
þú ættir að vera fær um að hvetja Notandinn fyrir hjálpina, sannprófa að inntak,
og þá draga hálfa pýramída.
>> Mitt nafn er Zamyla, og þetta er CS50.