>> [Musikk spilles]
>> ROB BOWDEN: Det er meg, Rob.
La oss gå gjennom hvordan å implementere Mario.
Så det første vi må gjøre er be brukeren om input.
>> Vi trenger å be dem nøyaktig hvordan høye pyramiden skal være.
Så her ser vi vi gjør height = GetInt.
En Og husk at GetInt funksjon er implementert i CS50
bibliotek, så opp toppen, må vi husk å # include cs50.h.
>> Så hvorfor har vi denne innpakket i en do-while-loop?
Vel, vi må også huske på at brukerens input må være gyldig.
Hva er et ugyldig innspill?
Vel PSett spec sier spesifikt at en høyde mindre enn 0 eller større
enn 23 er ugyldig.
>> Så her oppe, ser vi at vi definerer en konstant kalt MAX_HEIGHT med
verdi av 23.
Dette gjør-while-loop vil fortsette mens høyde er mindre enn 0 eller MAX_HEIGHT er
mindre enn høyden, hvilket betyr at 23 er mindre enn høyden.
Så hvis høyde er 24 eller høyere, er vi kommer til å fortsette looping.
Husk at gjør-mens sløyfer er pen nyttig når vi ønsker å få
brukerundersøkelser og deretter validere den, siden vi uunngåelig må spørre brukeren på
minst én gang for verdien de ønsker.
>> Så når vi har deres innspill, vi kan nå bygge pyramiden.
Ett av triksene i dette oppgavesettet er at vi må starte på toppen av
pyramiden.
Du kan ikke printf bunnen av pyramide og deretter bygge deg oppover.
Så la oss se på eksempelet fra PSett spec.
>> Vi ser her at når vi går inn i en høyde av åtte, helt nederst på
pyramide skriver ni hashes.
Ett nivå opp fra det utskrifter én plass og åtte hashes.
Ett nivå opp fra det er to plasser og syv hashes, helt til vi
komme til toppen av pyramiden, som er åtte nivåer opp, som skriver ut syv
plasser og to hashes.
Så husk at vi må gjøre dette øverste nivå først.
>> Her er vi itera fra øverste nivå, rad 8, fortsetter
inntil rad når 0.
Så hvor mange plasser vi trenger å skrive ut i det øverste rad?
Vi trykte sju plasser og to hashes.
Så det antall plasser vi ønsker er raden som var på minus en.
>> Hvis den øverste raden er 8, 8 minus 1 gir oss syv områder.
Da har vi en løkke som vil bli skrevet ut ut hvert mellomrom, ett om gangen.
Så når områder er 7, denne sløyfen , utskrift sju ganger
syv individuelle mellomrom.
>> Så nå trenger vi å skrive ut disse hashes ved slutten av pyramiden.
Så her må vi regne antall hashes.
Vi ser at vi gjør høyde minus rad pluss to.
Så hvordan fikk vi tak i det?
>> Husk at toppen av pyramiden er rad 8, og høyden er åtte.
Og vi fortsatt trykt to hashes.
Så i det minste, 8 minus 8 pluss 2 gir oss det rette svaret.
Og deretter vurdere bunnen av pyramiden, rad 1.
Høyde minus rad vil gi oss 7, og deretter pluss to gir oss ni hashes,
som er nøyaktig antallet av hashes at vi trykket.
Så dette er formelen vi ønsker å bruker til å beregne antall
hashes i hver rad.
>> Ved hjelp av dette nummeret, vi da har en annen for loop, svært lik den
for løkke som vi brukte for mellomrommene, som gjentar flere hashes ganger
skrive ut en enkelt hash hver gang.
På den øverste raden, vil det skrive ut to hashes.
På den nederste raden, vil det skrive ut ni hashes.
Og hverandre rad vil skrive ut alle antall hashes i mellom.
>> Og så helt til slutt, må vi skrive ut vår nye linje for å gå til neste
rad i pyramiden.
Til slutt, må vi skrive den nye linjen ved enden av raden for å
fortsette til den neste raden av pyramiden.
Og på slutten av programmet vårt, vi har avkastningen 0.
>> Per PSett spec, avkastningen 0 er ikke strengt nødvendig.
Men det betyr bety at hoved er gjort.
Mitt navn er Rob, og dette var Mario.
>> [Musikk spilles]