ZAMYLA CHAN: Dis 'n my, Zamyla. Vandag, ons gaan om te implementeer Mario, waar ons Mario te trek 'n volledige piramide vir hom om te spring oor. Kom ons breek die sub-take vir hierdie probleem. In die eerste plek wil ons die gebruiker gevra vir die hoogte van die piramide. En dan wil ons seker maak dat insette is geldig. En dan gaan ons wil die piramide te trek. So kom ons praat oor waarna en bekragtiging van die gebruiker se toevoer. Dit mag dalk so iets sien hierdie, 'n do-while lus wat vra die gebruiker om 'n heelgetal en dan slegs herhaal indien daardie heelgetal is ongeldig. So, wat moet hierdie toestand? Vir hierdie, laat ons teruggaan om die spesifikasie. Wel, die spec vertel ons dat enige geldige hoogte gaan wees tussen 0 en 23, inklusiewe. So dan is dit beteken dat enige ongeldig hoogte gaan minder as 0 wees of meer as 23. So nou dat ons hierdie inligting, Kom ons ontwerp ons toestand. Maar ons moet versigtig wees, want nou het ons twee Booleans wat ons wil evalueer. Hier het ek jou voorsien met 'n waarheidstabel. Dit stel ons in staat om twee te neem Boolse, Boole een en twee. En ons kan óf bool1 evalueer en bool2 of bool1 of bool2. So, wat is die verskil tussen en en of? Wel, bool1 en bool2 sal evalueer om waar as en slegs indien beide Booleans waar is, terwyl die of operasie sal waar wees as een van die Booleans of beide is waar. So met dit in gedagte, kyk of jy kan uitvind wat die gepaste toestand vir jou do-while lus vir 'n ongeldige N gaan wees. Met dit, het ons gevra en bekragtig die gebruiker vir die hoogte van die piramide wat hulle wil. So nou, dit is aan ons om die piramide te trek. Die volle piramide vir hierdie probleem sal kyk 'n bietjie soos hierdie, waar ons 'n links piramide, sommige gaping, en dan 'n reg piramide. So laat ons breek dit neer 'n bietjie. As ek na my teks editor, hier ek het getrek vir ons 'n links in lyn piramide. Maar dit sal nie doen nie. Wat ons wil doen, is ons wil skep eers 'n regte-lyn piramide. So om dit te doen, om net te stoot my hashes saam na die kant, Ek gaan net 'n paar karakters tussenin, net hierdie kolle. Toe ek gaan twee op die plaas volgende reël, en een aan die lyn. En so hier het ek 'n regs belyn piramide. Daarna het ek gaan gaan terug na die boonste ry en sit in die gaping wat is, volgens die spec, twee ruimtes. Toe ek gaan in die invul ander kant van die piramide. Ek gaan om te gaan na die tweede ry, skryf twee ruimtes vir die gaping en dan twee hashes. Terug na die derde ry, twee ruimtes vir die gaping en drie hashes. En aan die einde, twee ruimtes vir die gaping en vier hashes. So dit is wat 'n volle piramide sal lyk. Natuurlik, ons wil nie hierdie punte op die pad. So ons gaan hierdie plek kolle deur 'n paar spasies in. Een, twee, drie op die eerste lyn. Een, twee op die tweede. En een op die derde reël. So dit is wat ons sou doen as ons wou net 'n volle piramide, sê, in ons teks editor. So laat ons hierdie neem, begrip van die patrone, en sit dit oor 'n paar pseudokode. Vir elke ry van die piramide, wil ons na links piramide druk en dan die gaping en dan die regte piramide. Vir die linker piramide, druk ons die vereiste bedrag van ruimtes, gevolg deur die twee velde. Dan druk ons ​​die gaping, wat is net twee ruimtes elke keer. En op die regte piramide, ons druk die vereiste aantal hashes. Vir die tweede ry, het ons afgeneem presies dieselfde proses. Ons druk die ruimtes vir die linker piramide, die vereiste bedrag van hashes, die gaping, twee ruimtes, en dan is die twee velde vir die regte piramide. Kom ons pak die patroon vir die linker piramide. As ek moes, vir doeleindes van hierdie voorbeeld, 'n hoogte van agt versoek deur die gebruiker, dan is my eerste ry sou 'n mens hash en sewe spasies hê. My tweede ry sou hê twee hashes, ses ruimtes. Derde ry, drie hashes, vyf spasies. Jy kan dit waarskynlik nie jouself vir 'n hoogte van agt en te bepaal vir elke ry hoeveel hashes en hoeveel ruimtes wat jy nodig het. Maar wat ons wil doen, is Ons wil abstrakte dit. So ek vra jou vir enige nde ry, hoeveel hashes en hoeveel ruimtes het ons nodig? Nou, as jy bepaal die patroon vir hoeveel hashes en hoeveel ruimtes wat jy nodig het vir enige nde ry vir 'n gegewe hoogte, Onthou om versigtig te wees van hoe jy kruip. Wat ek bedoel met hierdie is dat in die alledaagse lewe die meeste van ons begin tel vir een. So het die eerste ry sal nommer een wees. En die tweede ry sou ry wees nommer twee, so aan en so voort. Maar in rekenaarwetenskap en CS50, ons nul-geïndekseer. So het ons eintlik begin tel op nul. So het die eerste ry sou wees rijnummer nul. En die tweede ry sou ry nommer een wees. So as ek 'n hoogte van agt vir my piramide, dan is die laaste waarde van N eintlik sou wees sewe en nie agt. So wees versigtig hieroor. En bewus te wees wanneer jy die bepaling jou patroon of jou nul-geïndekseer of one-geïndekseer OK. So nou dat ons die patroon vir die linker piramide, ons nodig het om vas te stel die patroon vir die gaping. Gelukkig, dit is regtig maklik. Dis net altyd twee ruimtes. So nou gaan ons na die regte patroon. Die eerste ry sal een hash het. Die tweede ry, twee. Derde ry, drie. So aan en so voort. So weer, bepaal vir enige abstrakte N en enige hoogte hoeveel hashes en hoeveel ruimtes elke ry moet hê. OK. Daarom weet ons dat vir elke ry ons moet 'n proses uit te voer. Hoe kan ons dit doen? Wel, ons gebruik die for-lus konstruk, bestaan ​​uit 'n inisialisering, 'n toestand, en 'n update. Vir sirkelroetes kan gebruik word om prosesse te herhaal. So sê Ek dit wil sê hallo, wêreld 50 keer, sou my lus sou so iets sien, waar Ek inisialiseer my veranderlike aan nul. Die voorwaarde is dat ek minder as 50. En dan is die werk is dat dit inkremente deur een elke keer. So, wat sou dit te doen sou wees om druk hello, wêreld 50 keer in 'n ry. Nou, sê Ek wou Itereer oor die hoogte van die piramide. Dan plaas van harde kodering 'n bietjie waarde in die toestand, Ek gebruik net die veranderlike hoogte. So, wat dit sal doen, is iteraat oor die hoogte elke ry. En ek kan iets in te doen van die liggaam van daardie lus. Wat wil ons doen binne-in die liggaam van die lus? Wel, as ons voor aangedui, wil ons om die spasies en die twee velde te druk vir die linker piramide en dan druk twee ruimtes en dan druk die twee velde. So het ons reeds uitgepluis dat uit. So kan ons begin om te vul in ons program 'n baie meer. Hier het ek 'n buitenste lus wat herhaal oor elke ry in die piramide. En binne daardie liggaam ek gaan om ruimtes herhaaldelik te druk, hashes herhaaldelik, en dan die gaping, en dan hashes vir die regte piramide, en dan, uiteindelik, 'n nuwe lyn na die volgende ry begin. Met dit, het ons gevra die gebruiker vir die insette. Ons het seker dat dit geldig gemaak. En dan het ons die piramide geteken. So Mario kan suksesvol klim die piramide. My naam is Zamyla. En dit is CS50.