ZAMYLA CHAN: Este un mine, Zamyla.
Astăzi, în Mario, vom fi desen jumătate piramida lui Mario
pentru a urca în sus.
>> Așa că hai să vorbim despre noastră la-do pentru această problemă.
Mergem să vrea pentru a solicita și valida
utilizatorul pentru o intrare validă a modului în care de mare pe care doresc piramida lui Mario să fie.
Și apoi, vom desena.
Așa că hai să începem cu determinându-i validarea utilizatorului pentru introducerea lor.
>> Noi putem face uz de CS50 Biblioteca de funcții
primi int care se va asigura că utilizatorul introduce un număr întreg.
Orice numere întregi pozitive, negative numere întregi, numărul 0 sunt un joc corect.
În caz contrar, utilizatorul va cere să încercați din nou până când un număr întreg de intrare validă.
Acum, cu toate că nu int get o mulțime de lucru pentru noi
în asigurarea că utilizator ne dă un număr întreg,
avem încă nevoie să se aplice unele constrângeri suplimentare în acest sens.
La urma urmei, nu putem avea Mario alpinism o jumătate de piramidă de înălțime negativă 12.
>> Pe lângă aceasta, caietul de sarcini problemă
spune că noi putem doar permite Mario pentru a urca
o piramidă de înălțimi între 0 și 23.
OK, deci asta înseamnă că avem nevoie pentru a determina utilizatorul in mod continuu
să ne dea un pașaport valabil numărul și numai în continuare
odată ce ne-am dat o înălțime validă.
Cum facem asta?
>> Ei bine, procese continue să ne dea ideea de a face ceva loops--
repetitiv.
O buclă în C, ca in timp ce bucla care va continuu
executa corpul buclei, atâta timp cât condiția dată evaluează la true.
De îndată ce această condiție evaluează la fals,
programul va proceda la orice vine după aceea.
Așa că în timp ce buclele sunt o modalitate de asigurându-se că noi continuu
solicita utilizatorului o intrare validă.
Și, odată ce acestea ne dea o intrare validă, vom trece la orice vine următor.
Noi știm că ne vom cere utilizator pentru introducerea cel puțin o dată.
Așa că acum am ajuns la o sora în timp ce bucla, care este face în timp ce bucla.
>> Face în timp ce buclele va executa corpul buclei cel puțin o dată.
Deci, fără verificarea stării, acesta va executa corpul buclei.
Și apoi verificați starea pentru a vedea dacă trebuie să se repete.
Acest lucru vine la îndemână atunci când suntem validarea de intrare de utilizator.
Noi știm că vom merge pentru a le cere cel puțin o dată.
Deci, o face în timp ce bucla s-ar putea arata ceva de genul asta.
Avem un întreg n.
Și în interiorul do în timp ce bucla, imediat am
solicita utilizatorului un întreg.
În cazul în care n este nevalid, atunci noi le vom solicita din nou și din nou și din nou, până când
ne da acel număr întreg valid.
În cele din urmă, odată ce n este o intrare validă, vom proceda la restul programului nostru.
>> Așa că hai să ne întoarcem la spec și verificarea ce condițiile pentru o intrare validă
Va fi.
Înălțimile valide vor să fie între 0 și 23, inclusiv.
înălțimi Așa că invalide vor să fie mai mică decât 0 sau mai mult de 23.
Deci, amintiți de a proiecta starea dumneavoastră cu atenție,
știind că condiția pentru face în timp ce bucla
ar trebui să fie în timp ce n este nevalid.
Acum, acest lucru nu va fi o simplă expresie booleană unică.
Vom Va trebui să combine două expresii diferite
pentru a face întreg condiția noastră.
>> Deci să ne uităm la un tabel de adevăr Am dat deja indiciu că suntem
va fi de-a face cu două Booleans.
Deci, aici e un tabel de adevăr în cazul în care am au două Booleans-- boolean 1 și 2.
Așa că avem opțiunea de a evalua bool1 și bool2 sau bool1 sau bool2.
Și va fi adevărat numai dacă ambele Booleane evaluează la adevărat, în timp ce toate
sau va fi adevărat, atâta timp cât unul dintre cele două Booleans evaluează la true.
OK, astfel încât să ia un moment, întrerupe video și digera acest tabel de adevăr.
Voi fi chiar aici în așteptare.
Când te întorci, vezi dacă puteți piesă împreună
o expresie booleană dvs. starea de n fiind o intrare nevalidă.
>> Deci, acum că avem datele introduse de utilizator valid, să
mergeți mai departe și să vorbească despre modul în care ne-am s-ar putea trage jumătate piramida.
Aici, în acest editor de text simplu, Am desenat o piramidă aliniat la stânga.
Dar noi știm că avem nevoie de un piramida să fie aliniate la dreapta.
Deci, cum s-ar putea să fac asta?
Ei bine, aș putea încerca să împingă totul în lateral
doar prin a pune un pic caracter între cele două.
Și apoi, pentru următorul line, am de gând să pun
unele mai multe caractere pentru a-l împinge de-a lungul, și așa mai departe și așa further-- forth--
până când am aliniat dreapta piramidei.
Așa că avem o piramidă de aliniere dreapta, dar nu arata atat de mare cu puncte.
Dar noi încă mai doresc să susțin că spațierea frumos.
Așa că voi literalmente inserați niște spații.
>> În loc de trei puncte, voi a pus una, două, trei spații.
Pe a doua linie.
Voi pune una, două spații.
Și penultima line, doar un singur spațiu.
Si aici am un aliniat dreapta piramidă.
Din acest exemplu în text editor, avem o idee pentru modelul
pe care le vom folosi pentru a trage jumătate piramida.
Pentru fiecare rând, ceea ce am făcut este de tip am niște spații,
și apoi tastat unele hashes, și apoi tastat
tasta Enter, care este de a crea o nouă linie.
Deci, acum că avem asta, să mergem cu un pas mai departe și de a găsi un model.
>> Așa că am de gând să spun, în interesul acestui exemplu,
avem de a face cu o înălțime de 8.
Primul rând va avea două hashes care urmează șapte spații.
Cele trei second--, sase spatii hash.
În al treilea rând row-- patru, cinci hashes spaces-- așa mai departe și așa mai departe
până când vom ajunge la rândul NTH.
Așa că, atunci, vă întreb pentru rând NTH, cati vom hashes sa avem
și cât de multe spații?
Deci, este de până la tine pentru a descoperi un Formula pentru a reprezenta cât de multe hashes
și câte spații sunt necesare pentru rândul NTH, atunci când au înălțime.
>> Acum, când te imaginind asta, fii atent modul în care sunteți indexare.
Ceea ce vreau să spun prin aceasta este că în viața de zi cu zi noi toți
începe numărarea, de obicei, de 1.
Dar, în CS50 și în știința calculatoarelor în general, suntem 0 indexată.
Deci, primul rând ar fi n de la 0, spre deosebire de 1.
Fii atent la acest lucru atunci când sunteți încercând să dau seama modelul dumneavoastră.
Așa că acum să ne întoarcem la modul în care vom desena piramida noastră.
Pentru fiecare rând, vom dori să imprima spațiile, imprima hash,
și apoi imprimați o nouă linie.
Indiciul aici este cuvânt "pentru" fiecare rând.
În C, avem un construct numit pentru buclă,
care este compus dintr-un inițializare, o condiție, o actualizare,
și corpul buclei.
>> Spun că am vrut să spun, salut mondială, de 50 de ori, pentru bucla mele
ar arata ceva de genul asta.
Am inițializa meu întreg la 0.
Condiția este ca eu este mai mică de 50 de ani.
Și apoi actualizarea mea este doar incrementarea I de către unul de fiecare dată.
Putem folosi, de asemenea, pentru bucle pentru a itera peste lucruri.
Aici cum să nu observăm avem greu codificate un număr,
ci mai degrabă plasat variabila înălțime în schimb în starea.
Deci, ce fac aici e că sunt iterarea peste fiecare rând al piramidei.
Pot să fac ceva pentru fiecare rând în interiorul corpului buclei mele.
>> Ce facem în interior corpul buclei?
Ei bine, așa cum am spus deja, suntem de imprimare spații și suntem de imprimare hashes
și ne tipăriți o nouă linie.
Așa că exterioară mea pentru bucla va arăta acest lucru.
Am itera fiecare rând a piramidei, folosind,
în acest caz, înălțime variabilă care stochează înălțimea piramidei.
În interiorul corpului buclei, sunt va imprima spații în mod repetat, de imprimare
în mod repetat, hash și apoi imprimați o nouă linie.
>> Așa că acum, folosind toate conceptele pe care Am vorbit în această plimbare prin,
ar trebui să poată solicita utilizator pentru intrare, valida de intrare,
și apoi trage jumătate piramida.
>> Numele meu este Zamyla, iar acest lucru este CS50.