ZAMYLA CHAN: Dit is 'n my, Zamyla. Vandag in Mario, ons gaan wees teken die helfte piramide vir Mario te klim. So kom ons praat oor ons to-do's vir hierdie probleem. Ons gaan om te wil om vinnig en bekragtig die gebruiker vir 'n geldige toevoer van hoe hoë hulle wil piramide Mario se te wees. En dan, ons gaan om dit te trek. So laat ons begin met waarna en bekragtiging van die gebruiker vir hul insette. Ons kan gebruik maak van die maak CS50 biblioteek funksie kry int wat sal verseker dat die gebruiker insette 'n heelgetal. Enige positiewe heelgetalle, negatiewe heelgetalle, nommer 0 is almal fair game. Andersins, sal die gebruiker gevra word om weer probeer totdat hulle insette 'n geldige heelgetal. Nou hoewel get int doen 'n groot deel van die werk vir ons om te verseker dat die gebruiker gee ons 'n heelgetal, Ons moet nog 'n paar van toepassing bykomende beperkings op daardie. Na alles, kan ons nie Mario klim 'n half piramide van hoogte negatiewe 12. Behalwe dat, die probleem spesifikasie sê dat ons net kan toelaat Mario te klim 'n piramide van hoogtes tussen 0 en 23. OK, so dit beteken dat ons nodig het om voortdurend gevra die gebruiker om vir ons 'n geldige gee getal en net aanhou sodra hulle ons 'n geldige hoogte gegee het. Hoe kan ons dit doen? Wel, deurlopende prosesse gee ons die idee van loops-- doen iets herhaaldelik. Een lus in C as 'n ruk lus wat voortdurend voer die liggaam van die lus so lank as wat die gegewe toestand evalueer om ware. Sodra daardie toestand evalueer vals, die program sal voortgaan om alles kom daarna. Dus, terwyl loops is een manier om om te verseker dat ons voortdurend gevra die gebruiker vir 'n geldige toevoer. En nadat hulle gee ons 'n geldige toevoer, Ons sal voortgaan om alles langs kom. Ons weet dat ons gaan om te vra die gebruiker vir insette ten minste een keer. So nou kom ons by 'n suster van die while lus, wat is die doen terwyl lus. Doen terwyl loops sal uit te voer die liggaam van die lus ten minste een keer. So sonder om die toestand, Dit sal die liggaam van die lus te voer. En dan gaan die toestand te sien of dit nodig het om homself te herhaal. Dit kom handig te pas wanneer ons bekragtiging van die gebruiker se toevoer. Ons weet dat ons gaan om hulle ten minste een keer vra. So 'n doen while lus mag so lyk. Ons het 'n heelgetal n. En binnekant van die do while lus, ons onmiddellik gevra die gebruiker vir 'n heelgetal. As N is ongeldig, dan sal ons hulle gevra weer en weer en weer totdat hulle gee vir ons dat geldige heelgetal. Ten slotte, een keer n 'n geldige toevoer, sal ons voortgaan om die res van ons program. So laat ons teruggaan na die spec en tjek wat die voorwaardes vir 'n geldige toevoer gaan wees. Die geldige hoogtes gaan wees tussen 0 en 23, ingesluit. So ongeldig hoogtes gaan minder as 0 of meer as 23. So onthou om te ontwerp jou toestand noukeurig, wetende dat die toestand vir die doen terwyl lus moet wees, terwyl N is ongeldig. Nou hierdie is nie van plan om 'n wees eenvoudige enkele Boole-uitdrukking. Ons gaan hê om te kombineer twee verskillende uitdrukkings om ons hele toestand maak. So laat ons net kyk na 'n waarheidstabel Ek het jy reeds die wenk dat ons gegee gaan die hantering van twee Booleans. So hier is 'n waarheidstabel waar ek het twee Booleans-- Boole 1 en 2. So ons het die opsie om te evalueer bool1 en bool2 of bool1 of bool2. En sal enige ware indien beide wees Boolse evalueer om ware, terwyl al of sal waar wees so lank as een van die twee Booleans evalueer om ware. OK, so neem 'n oomblik, breek dit video en verteer dit waarheidstabel. Ek kom gou hier wag wees. Wanneer jy terugkom, sien As jy kan stuk saam 'n Boole-uitdrukking vir jou toestand van N wat 'n ongeldige insette. So nou dat ons geldig toevoer van die gebruiker, laat ons gaan voort en praat oor hoe ons kan die helfte piramide te trek. Hier in hierdie eenvoudige teks editor, Ek het 'n links in lyn piramide geteken. Maar ons weet dat ons ons piramide reg om in lyn gebring word. So, hoe kan ek dit doen? Wel, ek sal probeer om te stoot alles aan die kant deur net om 'n bietjie karakter tussen in. En dan, vir die volgende lyn, ek gaan sit sommige meer karakters om dit te stoot saam, en further-- so aan en so forth-- totdat ek die reg in lyn piramide. So het ons 'n reg align piramide, maar Dit lyk nie so baie goed saam met die kolle. Maar ons wil nog steeds om beweer dat mooi spasiëring. So ek gaan letterlik voeg 'n paar spasies. In plaas van drie kolletjies, sal ek sit een, twee, drie ruimtes. Op die tweede reël. Ek sal een, twee ruimtes sit. En op die voorlaaste lyn, net een spasie. En hier het ek het 'n reg in lyn piramide. Van doen die voorbeeld in die teks redakteur, ons het 'n idee vir die patroon dat ons sal gebruik om die helfte piramide te trek. Vir elke ry, wat ons gedoen het is ons tik 'n paar spasies, en dan getik paar hashes, en dan getik Enter, wat is 'n nuwe lyn. So nou dat ons, laat ons gaan 'n stap verder en vind 'n patroon. So ek gaan om te sê nie, want die belang van hierdie voorbeeld, ons te doen het met 'n hoogte van 8. Die eerste ry gaan twee het hashes wat sewe spasies volg. Die second-- drie hashes, ses ruimtes. Derde row-- vier hashes, vyf spaces-- so aan en so voort totdat ons by die nde ry. So dan, vra ek jou vir die nde ry, hoeveel hashes gaan ons hê en hoeveel ruimtes? So dit is aan jou om uit te vind 'n formule te verteenwoordig hoeveel hashes en hoeveel ruimtes is nodig vir die nde ry wanneer jy 'n paar hoogte. Nou wanneer jy besyfering dit uit, wees versigtig hoe jy kruip. Wat ek bedoel met hierdie is dat in die alledaagse lewe vir ons almal begin tel, gewoonlik deur 1. Maar in CS50 en in rekenaarwetenskap In die algemeen, ons is 0 geïndekseer. So het die eerste ry wees N van 0 teenoor 1. Wees versigtig van hierdie wanneer jy probeer om uit te vind jou patroon. So nou laat ons teruggaan na hoe ons gaan ons piramide te trek. Vir elke ry, gaan ons wil druk die ruimtes, die twee velde te druk, en dan druk 'n nuwe reël. Die wenk hier is die woord "vir" elke ry. In C, het ons 'n konstruk bekend as 'n for-lus, wat bestaan ​​uit 'n inisialisering, 'n toestand, 'n werk, en die liggaam van die lus. Sê ek wou sê, hello wêreld, 50 keer, my lus sou so iets sien. Ek inisialiseer my heelgetal tot 0. Die voorwaarde is dat ek minder as 50. En dan my werk is net die verhoog ek deur een elke keer. Ons kan dit ook gebruik vir sirkelroetes om Itereer oor dinge. Let hier hoe ons het nie hard gekodeer n nommer, maar eerder die veranderlike geplaas hoogte plaas in die toestand. So, wat ek hier doen, is ek iterating oor elke ry van die piramide. Ek kan iets vir elke doen ry binne die liggaam van my lus. Wat doen ons binne die liggaam van die lus? Wel, soos ons reeds gesê, ons druk ruimtes en ons druk hashes en ons druk 'n nuwe reël. So my buitenste lus sal lyk. Ek Itereer oor elke ry van die piramide, gebruik, in hierdie geval, hoogte as die veranderlike wat slaan die hoogte van die piramide. Binne-in die liggaam van daardie lus, ek is gaan ruimtes herhaaldelik te druk, druk die twee velde herhaaldelik, en dan druk 'n nuwe reël. So nou, met behulp van al die konsepte wat Ek het oor gepraat in hierdie deur-stap, jy moet in staat wees om die stiptelike gebruiker vir insette, bevestig dat insette, en dan trek die helfte piramide. My naam is Zamyla, en dit is CS50.