ZAMYLA CHAN: Det er en-mig, Zamyla.
I dag, vil vi gennemføre Mario, hvor vi trækker Mario
en fuld pyramide for ham at hoppe over.
Lad os nedbryde delopgaver på dette problem.
>> Først vil vi bede brugeren for højden af ​​pyramiden.
Og så ønsker vi at sikre, at denne indgang er gyldig.
Og så vil vi vil tegne pyramiden.
>> Så lad os tale om at spørge og validering brugerinput.
Det kunne se ud som dette, en gør-while-løkke, der
beder brugeren om en heltal og derefter kun gentagelser
hvis denne heltal er ugyldigt.
Så hvad skal denne betingelse være?
>> For dette, lad os gå tilbage til specifikationen.
Nå, spec fortæller os, at en gyldig højde vil være mellem 0 og 23,
inklusive.
Så det betyder, at enhver ugyldig højde bliver mindre end 0
eller mere end 23.
>> Så nu, at vi har disse oplysninger, lad os designe vores tilstand.
Men vi er nødt til at være forsigtige, fordi vi nu har
to Booleans som vi ønsker at evaluere.
>> Her har jeg givet dig med en sandhed bord.
Dette giver os mulighed for at tage to Booleans, Boolean et og to.
Og vi kan evaluere enten bool1 og bool2 eller bool1 eller bool2.
>> Så hvad er forskellen mellem og og eller?
Nå, bool1 og bool2 vil evalueres til sand, hvis og kun
hvis begge Booleans er sande, hvorimod eller drift
vil være tilfældet, hvis den ene af de Booleans eller begge er sande.
Så med dette i tankerne, se om du kan finde ud af
hvad den korrekte tilstand for din gør-mens loop for en ugyldig n
det vil blive.
>> Med det har vi spurgt og valideret brugeren for højden af ​​pyramiden
at de ønsker.
Så nu er det op til os at tegne pyramiden.
Den fulde pyramide for dette problem vil se en lille smule
som dette, hvor vi har en venstre pyramide, nogle hul, og derefter en ret pyramide.
Så lad os opdele det en lille smule.
>> Hvis jeg går til min tekst editor, her har jeg trukket os en venstre-justeret pyramide.
Men det vil ikke gøre.
Det, vi ønsker, er at vi ønsker at skabe en højrestillet pyramide først.
Så for at gøre dette, bare skubbe mine hashes langs til siden,
Jeg bare at sætte nogle tegn derimellem, blot disse prikker.
Så jeg har tænkt mig at sætte to på den næste linje, og en på denne linje.
Og så her jeg har en højrestillet pyramide.
>> Efter dette, vil jeg gå tilbage til den øverste række
og sat i hullet, som er, pr spec, to rum.
Så jeg har tænkt mig at udfylde anden side af pyramiden.
Jeg har tænkt mig at gå til den anden række, skriver to pladser til hullet og derefter to
hashes.
Tilbage til den tredje række, to rum for hullet og tre hashes.
Og i slutningen, to rum for hullet og fire hashes.
Så det er hvad en fuld pyramide vil se ud.
>> Selvfølgelig ønsker vi ikke Disse prikker i vejen.
Så vi kommer til at erstatte disse prikker ved at sætte nogle mellemrum i.
En, to, tre på den første linje.
En, to på andet.
Og en på tredje linje.
Så dette er, hvad vi ville gøre, hvis vi ville bare lave en fuld pyramide,
siger, i vores tekst editor.
>> Så lad os tage dette, forstå de mønstre,
og konvertere det til nogle pseudokode.
For hver række af pyramiden, vi ønsker at udskrive venstre pyramide og derefter
hullet og derefter den højre pyramide.
For venstre pyramide, vi udskriver den nødvendige mængde rum,
efterfulgt af hashes.
Så vi udskriver hullet, der er blot to pladser hver gang.
Og i den rigtige pyramide, vi udskriver det nødvendige antal hashes.
>> For anden række, vi gennemførte den samme nøjagtige proces.
Vi udskrive pladser til venstre pyramide, den nødvendige mængde
af hashes, hullet, to rum, og derefter hashes for den rigtige pyramide.
>> Lad os tage fat mønsteret for venstre pyramide.
Hvis jeg havde, til formål, i dette eksempel, en højde
af otte ønsket af bruger, så min første række
ville have en hash og syv rum.
Min anden række ville have to hashes, seks rum.
Tredje række, tre hashes, fem rum.
Du kan sikkert gøre dette dig selv for en højde på otte
og bestemme for hver række, hvor mange hashes og hvor mange pladser, du har brug.
Men hvad vi ønsker at gøre, er vi ønsker at abstrakt det.
Så jeg spørger dig for n'te række, hvor mange hashes og hvor mange rum har vi brug for?
>> Nu, da du bestemme mønster for hvor mange hashes
og hvor mange pladser, du har brug for enhver n'te række for en given højde,
Husk at være forsigtig af hvordan du indeksere.
Hvad jeg mener med dette er, at i hverdagen liv de fleste af os begynde at tælle med én.
Så den første række ville være nummer et.
Og den anden række ville være rækken nummer to, så videre og så videre.
>> Men i datalogi og CS50, vi nul-indekseret.
Så vi faktisk begynde at tælle ved nul.
Så den første række ville være rækken nummer nul.
Og den anden række ville være rækken nummer et.
Så hvis jeg havde en højde på otte til min pyramide, så den sidste værdi af n
ville faktisk være syv og ikke otte.
>> Så vær forsigtig med dette.
Og være opmærksom på, når du bestemme dit mønster, om din nul-indekseret
eller en-indekseret
>> OKAY.
Så nu, at vi har den mønster for den venstre pyramide,
vi nødt til at bestemme mønsteret for hullet.
Heldigvis, det er virkelig nemt.
Det er bare altid to rum.
>> Så nu fortsætte vi til højre mønster.
Den første række vil have en hash.
Den anden række, to.
Tredje række, tre.
Så videre og så videre.
Så igen, bestemme for enhver abstrakt n og enhver højde, hvor mange hashes
og hvor mange rum hver række skal have.
>> OKAY.
Så vi ved, at for hver række, vi nødt til at foretage nogle proces.
Hvordan gør vi det?
Nå, bruger vi for-løkke konstruktion, består af en initialisering,
en tilstand, og en opdatering.
For løkker kan anvendes at gentage processer.
>> Så siger jeg vil have det til at sige goddag, verden 50 gange, så er min for løkke
ville se noget som dette, hvor Jeg initialisere min variabel til nul.
Betingelsen er, at jeg er mindre end 50.
Og derefter opdateringen er, at det intervaller med én hver gang.
Så hvad det ville gøre ville være at udskrive hej, verdens 50 gange i træk.
>> Nu siger jeg ønskede at gentage over højden af ​​pyramiden.
Så i stedet for permanent at kode vis værdi i den tilstand,
Jeg bare bruge den variabel højde.
Så hvad det vil gøre, er iterate over højden hver række.
Og jeg kan gøre noget indeni af kroppen af ​​denne sløjfe.
>> Hvad vil vi gøre inde i kroppen af ​​løkken?
Nå, som vi angivet før, vi ønsker at udskrive rum og hashes
for venstre pyramide og derefter udskrive to rum og derefter udskrive hashes.
Så vi har allerede regnet det ud.
Så vi kan begynde at fylde i vores program en masse mere.
>> Her har jeg en ydre for-løkke, der gentager end hver række i pyramiden.
Og inde dette organ jeg har tænkt mig at udskrive mellemrum gentagne gange,
hashes gentagne gange, og derefter hullet, og derefter hashes for retten pyramide,
og derefter endelig en ny linje for at starte den næste række.
>> Med det har vi bedt brugeren for input.
Vi har sørget for, at det er gyldigt.
Og så har vi trukket pyramiden.
Så Mario kan med held klatre pyramiden.
>> Mit navn er Zamyla.
Og det er CS50.