ZAMYLA CHAN: És una-me, Zamyla. Avui en dia, anem a posar en pràctica Mario, on dibuixem Mario una piràmide completa per a ell per saltar per sobre. Anem a trencar el sub-tasques per a aquest problema. En primer lloc, volem demanar a l'usuari per a l'altura de la piràmide. I després volem per assegurar que aquesta entrada és vàlida. I després anem a vull cridar l'piràmide. Així que anem a parlar que va provocar i validar l'entrada de l'usuari. Podria ser alguna cosa com això, un bucle do-while que sol·licita a l'usuari una senceres i després només es repeteix si aquest nombre sencer no és vàlid. Llavors, quin hauria de ser aquesta condició? Per a això, anem a tornar amb l'especificació. Doncs bé, l'especificació ens diu que qualsevol vàlida alçada serà entre 0 i 23, inclusiu. Així llavors això vol dir que qualsevol invàlida alçada serà inferior a 0 o més de 23. Així que ara que tenim aquesta informació, dissenyem la nostra condició. Però hem de tenir cura, perquè ara tenim 2 booleans que volem avaluar. Aquí us he proporcionat amb una taula de veritat. Això ens permet prendre dues Booleans, Boolean 01:02. I podem avaluar des Bool1 i Bool2 o Bool1 o Bool2. Llavors, quin és la diferència entre AND i OR? Bé, Bool1 i es Bool2 resultat veritable si i només si ambdues són certes Booleans, mentre que el o l'operació serà veritable si qualsevol de els Booleans o ambdues són certes. Així que amb això en ment, veure si es pot esbrinar el que la condició apropiada per el bucle do-while per a un n no vàlid serà. Amb això, hem incitat i validat l'usuari per a l'altura de la piràmide que volen. Així que ara, li toca a nosaltres per dibuixar la piràmide. La piràmide completa per a aquest problema es veurà una mica com aquest, en el qual tenim una piràmide esquerra, alguna distància, i després una piràmide recta. Així que anem a trencar aquesta avall una mica. Si vaig al meu editor de text, aquí tinc ens dibuixat una piràmide alineada a l'esquerra. Però això no va a fer. El que volem fer és que volem crear una piràmide alineat a la dreta en primer lloc. Així que per fer això, simplement empènyer els meus valors hash al llarg del costat, Només vaig a posar alguns caràcters en el medi, només aquests punts. Llavors em vaig a posar dos al següent línia, i un en aquesta línia. I aquí tinc una piràmide alineat a la dreta. Després d'això, vaig a tornar a la fila superior i posar en el buit, el qual és a dir, per l'especificació, dos espais. A continuació, vaig a omplir el altre costat de la piràmide. Vaig a anar a la segona fila, escric dos espais de la bretxa i després dos hashes. Tornar a la tercera fila, dos espais de la bretxa i 3 hashes. I al final, dos espais de la bretxa i 4 hashes. Així que això és el que una completa piràmide es veurà així. Per descomptat, no volem aquests punts en el camí. Així que anem a substituir aquests punts per posar alguns espais en. Un, dos, tres a la primera línia. Un, dos en el segon. I un a la tercera línia. Així que això és el que faríem si ens volia fer només una piràmide completa, dir, en el nostre editor de text. Així que portarem això, la comprensió dels patrons, i convertir-lo a alguns pseudocodi. Per a cada fila de la piràmide, volem per imprimir la piràmide de l'esquerra i després la bretxa i després la piràmide recta. Per a la piràmide esquerra és la impressió de la quantitat requerida d'espais, seguit dels valors hash. Llavors és la impressió de la bretxa, la qual està a només dos espais cada vegada. I en la piràmide de la dreta és la impressió de el nombre requerit de valors hash. Per a la segona fila, es va realitzar exactament el mateix procés. Imprimim els espais per a l'esquerra piràmide, la quantitat requerida de hash, la bretxa, dos espais, i a continuació, els hashes de la piràmide de la dreta. Anem a abordar el patró per la piràmide esquerra. Si ho hagués fet, per als propòsits d'aquest exemple, una alçada de vuit sol·licitat pel usuari, llavors la meva primera fila tindria un hash i set espais. La meva segona fila tindria 2 hash, sis espais. Tercera fila, tres, cinc places de hashes. Probablement pot fer això vostè mateix per a una altura de vuit i determinarà per a cada fila quants hashes i el nombre d'espais que necessita. Però el que volem fer és volem abstracte ella. Així que et demano per a qualsevol fila n, el nombre de hashes i quants espais necessitem? Ara, mentre es determina el patró per al nombre de hashes i el nombre d'espais que necessita per qualsevol fila n per a una altura donada, recordi tenir cura de com s'està indexant. El que vull dir amb això és que a la vida quotidiana la vida la majoria de nosaltres començar a comptar per un. Així que la primera fila seria el número u. I la segona fila seria fila número dos, així successivament i així successivament. Però en informàtica i CS50, estem indexats a zero. Així que en realitat comencen a comptar des de zero. Així que la primera fila faria ser fila número zero. I la segona fila seria fila número u. Així que si tingués una alçada de vuit per la meva piràmide, llavors l'últim valor de n en realitat seria set i no huit. Així que vagi amb compte amb això. I tenir en compte quan s'està determinant el seu patró si indexats a zero el seu o un de indexats D'ACORD. Així que ara que tenim la patró per a la piràmide esquerra, necessitem determinar el patró de la bretxa. Per sort, això és realment fàcil. És només sempre dos espais. Així que ara es procedeix a el patró correcte. La primera fila tindrà un hash. La segona fila, dos. Tercera fila, tres. Així successivament i així successivament. Així que de nou, determinar per a qualsevol extracte n i qualsevol altura quants hashes i el nombre d'espais cada fila ha de tenir. D'ACORD. Així que sabem que per a cada fila que necessari dur a terme algun procés. Com ho fem? Bé, fem servir el de construcció de llaç, compost d'una inicialització, una condició, i una actualització. Per bucles es poden utilitzar repetir els processos. Així que dic que vull que digui hola, món 50 vegades, llavors el meu bucle for seria alguna cosa com això, on Em inicialitzar el meu variables a zero. La condició és que i és menor que 50. I a continuació, l'actualització és que s'incrementa en una unitat cada vegada. Llavors, això seria fer seria imprimir hola, món 50 vegades en una fila. Ara, diguem que volia repetir sobre l'altura de la piràmide. Llavors, en lloc de la codificació dura algun valor en la condició, Només ha d'utilitzar la variable alçada. Així que el que això farà és iterate sobre l'altura de cada fila. I jo puc fer alguna cosa al seu interior del cos d'aquest bucle. Què és el que volem fer a l'interior del cos del bucle? Doncs bé, com hem indicat abans, volem per imprimir els espais i els hashes de la piràmide de l'esquerra i després imprimir dos espais i després s'imprimeixen els valors hash. Així que ja hem donat compte d'això. Per tant, podem començar a omplir en el nostre programa molt més. Aquí tinc un cicle for exterior que itera sobre cada fila de la piràmide. I dins d'aquest cos que vaig per imprimir espais repetidament, hashes diverses vegades, i després la bretxa, i després hashes de la piràmide recta, i després, finalment, una nova línia per iniciar la següent fila. Amb això, hem incitats l'usuari per a l'entrada. Ens hem assegurat que és vàlid. I després hem dibuixat la piràmide. Així que Mario pot èxit pujar a la piràmide. El meu nom és Zamyla. I això és CS50.