>> ZAMYLA CHAN: Låt oss hoppa in Mario.
Mario är ett program där vi kan göra vår egen, om än primitiv, version av
en klassisk Super Mario Brothers spel bakgrund.
För detta problem set, vi ska att återskapa halv pyramid för
Mario att hoppa på.
Vårt program kommer att vara interaktiv, så det kommer att be användaren att mata in ett visst
höjd för pyramiden.
Och programmet kommer att skriva ut en halv pyramid av denna höjd, där
nedre vänstra hash linje med botten vänstra hörnet av terminalen
utgång fönster.
>> Låt oss bryta detta problem i två delar, en, få indata från användaren, och två,
skriva ut pyramiden.
Kom ihåg att även om getInt funktionen hämtar ett heltal, du
måste se till att denna ingång gör meningsfullt för ditt program, så i
Mario, kommer den att göra inte bara en produkt för ett heltal.
Du måste se till att användaren ingångar Ett heltal som finns inom
nedre och övre gränserna för pyramid som du kan skriva ut.
Per denna spec, är detta 0 och 23 inklusive.
Om användaren matar in ett heltal utanför av våra godkända gränser, då vi vill
att uppmana dem om och om igen tills de ger oss ett giltigt heltal.
>> Ett sätt att säkerställa korrekt inmatning är med hjälp av en gör-while-slinga, vilket är
mycket lik en while-slinga.
The Do-While loop exekverar koden inuti kroppen en gång, och sedan kontrollerar
om villkoret är uppfyllt eller inte.
Detta är användbart för att erhålla användarinmatning eftersom du vet att du behöver
att uppmana dem minst en gång.
Om villkoret inte är uppfyllt, programmet kommer att utföra raden efter
din Do-While loop.
Om villkoret är uppfyllt, fast, slingan kommer att upprepa.
>> En gör-while-slinga för att validera användaren ingången ser ut ungefär så här.
Jag deklarerar en variabel n, getInt, och upprepa tills n är giltig.
Tänk på att när du deklarerar din variabel, behöver den lämpliga
omfattning, precis som i Scratch.
Om jag förklarar n innanför min Do-While loop, resten av programmet kommer inte att vara
kunna komma åt den.
Det är begränsat till användning av klammerparenteser.
>> Okej, så nu när vi har validerat användarens input, behöver vi faktiskt
dra denna halv-pyramid.
Det består av tryckta tecken, så låt oss göra en halv pyramid på ett enkelt
textredigerare.
Om vi ​​vill göra en Mario stil pyramid av höjd tre som är i linje
på vänster sida av våra fönster, sedan vi skulle skriva två hashar, klicka Enter,
skriv sedan tre hashar, klickar Enter och skriv sedan fyra.
>> Men i det här problemet set, vår halv pyramid måste vara rätt inriktade.
Använda ett vanligt tangentbord, hur kan du ändra den här filen för att flytta hashar
över till höger sida?
Jag kan använda till understreck, två på övre raden och en på den andra.
Det ser inte så trevligt, men så låt oss ersätta understreck med
utrymmen, och där har vi en halv pyramid av höjd tre.
>> Försök och kom ihåg denna text editor exempel när du börjar tänka tillbaka till
C. Låt oss försöka lista ut vissa typ av mönster som vi kan
sätta i en slinga konstruktion.
Ta ett exempel höjd, säger åtta, och se om du kan börja
komma med ett mönster.
Den första raden kommer att ha sju platser följt av två hashar.
Den andra raden har sex platser och tre hashes, och så vidare till dess att
åttonde raden.
>> Men hur gör ni skulle representera den n: te raden?
Kom ihåg att programmering konvention är noll indexeras.
Det betyder att du börjar räkna på noll, så den första raden är tekniskt
radnummer noll med två luckor, rad nummer ett har tre hashar, rad
nummer två har fyra hashar, så följer detta mönster för varje rad
nummer n, det finns n plus 2 hashar.
Jag lämnar det till dig, men, för att hitta ut mönstret för utrymmena.
Kom ihåg att ditt mönster blir något annorlunda om du väljer att
börja räkna från en och inte noll.
>> Nu har du ett mönster för något abstrakt rad n.
Du vet hur många platser för att skriva ut och hur många hashes, så för varje rad, som
numret kommer att förändras.
Men samma processen att skriva en enstaka tecken, antingen ett rum eller en
hash, upprepas.
Så allt du behöver göra är att upprepade gånger skriva tecknet för så många gånger
som ditt mönster avgör.
>> Så hur upprepar vi processer?
I Scratch, använde vi för att repetera blockering.
I C, kommer vi att använda en for-slinga.
Låt oss titta på syntaxen för loopar.
>> Varje För loop består av tre delar, en initiering, ett tillstånd,
och en uppdatering.
Din För loop kommer att initiera en variabel när den först
går in för slingan.
Om villkoret är uppfyllt, kroppen av slingan ska köras.
Efteråt kommer uppdateringen exekvera.
>> Om villkoret är fortfarande uppfyllt, det loop kommer att utföra och uppdatera och
upprepa så länge som din kondition utvärderas till true.
Du är villkoret så småningom måste värdera att falskt, men eftersom
Till skillnad från Scratch, gör vi inte har några evigt slingor.
Ditt program måste upphöra så småningom.
>> Här är ett exempel på en for-slinga som du kanske vill använda för Mario.
Initieringen förklarar ett heltal i med värdet 0.
Så länge jag är mindre än höjden, kroppen av slingan kommer att utföra och
öka i med ett och upprepa tills jag är större än eller
lika med höjden.
>> Nu är min För loop noll index.
Den Int jag börjar på noll, inte ett.
Om jag valde en, då mitt tillstånd skulle måste också vara olika för
slingan för att verkställa samma antal gånger.
Kom ihåg detta noga när du är väljer din initiering och din
tillstånd, och konsultera denna diagrammet att dubbelkolla.
>> En av de bästa sakerna med datorn vetenskap är att det finns bara så många
sätt att utföra saker.
Du kan välja om du börjar med noll eller ett.
Om du inte vill använda en for-slinga, Du kan också använda en while-slinga till
upprepa uttalanden så länge du behålla kärnan i en for-slinga,
initiering, kondition, och uppdatering.
När vi räkna ut För loop som vi är mest bekväm med, då vi
kan slutföra Mario.
>> Vi kontrollerade först för indata och därefter identifierat ett
mönster för någon rad n.
Så för varje rad från noll till n minus 1 skriver ut lämpligt antal
mellanslag, sedan lämpligt antal hashar enligt vårt mönster, och
sedan en ny rad.
Med detta har du din pyramid.
Mitt namn är Zamyla, och detta var Mario.