ZAMYLA CHAN: Es ist ein-me, Zamyla. Heute werden wir zu implementieren Mario, wo wir Mario ziehen eine vollständige Pyramide für ihn zu springen. Lassen Sie uns brechen die Unteraufgaben für dieses Problem. Erstens wollen wir den Benutzer aufzufordern, für die Höhe der Pyramide. Und dann wollen wir sicherstellen, dass die Eingabe gültig ist. Und dann werden wir wollen die Pyramide zu zeichnen. Also lassen Sie uns darüber reden, woraufhin und Validieren von Benutzereingaben. Es könnte etwa so aussehen Dazu wird eine do-while-Schleife, fordert den Benutzer für eine repeats ganze Zahl ist und nur dann, wenn das ganze Zahl ist ungültig. Also, was sollte diese Bedingung? Dazu gehen wir zurück der Spezifikation. Nun, die Spezifikation sagt uns, dass jede gültige Höhe wird zwischen 0 und 23 ist, inklusive. Also dann bedeutet das, dass jeder ungültig Höhe sein wird, kleiner als 0 ist oder mehr als 23. So, jetzt haben wir diese Informationen haben, Lassen Sie uns unseren Zustand entwerfen. Aber wir müssen vorsichtig sein, denn jetzt haben wir zwei Boolesche Werte, die wir auswerten möchten. Hier habe ich Ihnen zur Verfügung gestellten mit einer Wahrheitstabelle. Dies ermöglicht es uns, zwei zu nehmen Boolesche Werte, Boolean eins und zwei. Und wir können entweder bool1 bewerten und bool2 oder bool1 oder bool2. Also, was ist der Unterschied zwischen und und oder? Nun, bool1 und bool2 werden bewerten, um wahr, wenn und nur wenn beide Boolesche Werte sind wahr, während der oder Betrieb wird wahr sein, wenn eine von die Boolesche Werte oder beide sind wahr. Also das mit im Sinn, sehen, wenn Sie herausfinden können, was die entsprechende Bedingung für Ihre do-while-Schleife für einen ungültigen n sein wird. Damit haben wir aufgefordert und validiert der Benutzer für die Höhe der Pyramide dass sie wollen. So, jetzt ist es an uns die Pyramide zu zeichnen. Die vollständige Pyramide für diese Problem wird sich ein wenig wie dieser, wo wir eine linke Pyramide haben, einige Lücke, und dann eine richtige Pyramide. Also lassen Sie uns diese brechen ein wenig nach unten. Wenn ich meinen Text-Editor, Bereits da ich habe gezeichnet uns eine linksbündige Pyramide. Aber das wird nicht tun. Was wir wollen, zu tun ist, wir wollen erstellen Sie zuerst eine rechtsbündige Pyramide. Also, dies zu tun, nur um Push meine Hashes entlang zur Seite, Ich werde nur ein paar Zeichen setzen dazwischen, nur diesen Punkten. Dann werde ich zwei auf das zu setzen nächste Zeile, und eine auf dieser Linie. Und hier habe ich eine rechtsbündig Pyramide. Danach werde ich auf gehen Sie zurück in die obere Reihe und in den Spalt gelegt, die ist, gemäß der Spezifikation, zwei Räume. Dann gehe ich in die zu füllen anderen Seite der Pyramide. Ich gehe in die zweite Reihe zu gehen, schreiben zwei Räume für die Lücke und dann zwei Hashes. Zurück zu der dritten Reihe, zwei Räume für die Lücke und drei Hashes. Und am Ende, zwei Räume für die Lücke und vier Hashes. Also das ist, was eine vollständige Pyramide aussehen wird. Natürlich wollen wir nicht, Diese Punkte im Weg. So werden wir diese zu ersetzen Punkte, die durch einige Räume in Putten. Ein, zwei, drei auf der ersten Zeile. Ein, zwei auf der zweiten. Und ein in der dritten Zeile. So ist das, was wir, wenn wir tun würden, machen nur eine vollständige Pyramide wollte, sagen, in unserem Texteditor. Also lassen Sie uns dies nehmen, die Muster zu verstehen, und wandelt es in einigen Pseudo-Code über. Für jede Zeile der Pyramide, wollen wir die linke Pyramide zu drucken und dann der Zwischenraum und dann die rechte Pyramide. Für die linke Pyramide, wir drucken die erforderliche Menge von Räumen, durch die Hashes gefolgt. Dann drucken wir die Lücke, die jedes Mal, Räume ist nur zwei. Und in der rechten Pyramide, drucken wir die erforderliche Anzahl von Hashes. Für die zweite Reihe führten wir exakt das gleiche Verfahren. Wir drucken die Räume für die linke Pyramide, die erforderliche Menge von Hashes, die Lücke, zwei Räume, und dann die Hashes für die richtige Pyramide. Lassen Sie uns das Muster angehen für die linke Pyramide. Wenn ich für die Zwecke dieses beispielsweise eine Höhe von acht von der angeforderten Benutzer, dann meine erste Reihe würde ein Hash und sieben Räume haben. Meine zweite Reihe hätte zwei Hashes, sechs Räume. Dritte Reihe, drei Hashes, fünf Räume. Sie können dies wahrscheinlich tun sich für eine Höhe von acht und zu bestimmen, für jede Zeile, wie viele Hashes und wie viele Räume, die Sie benötigen. Aber was wir tun wollen ist wir wollen abstrahieren. Also frage ich Sie für jede n-te Zeile, wie viele Hashes und wie viele Räume brauchen wir? Jetzt, da Sie die bestimmen Muster für wie viele Hashes und wie viele Räume, die Sie brauchen für jede n-te Zeile für eine bestimmte Höhe, denken Sie daran, vorsichtig zu sein wie Sie die Indizierung. Was ich damit meine ist, dass im Alltag Leben die meisten von uns durch ein Zählen beginnen. So ist die erste Reihe wäre die Nummer eins. Und die zweite Reihe würde Reihe sein Nummer zwei, so weiter und so fort. Aber in der Informatik und CS50, wir sind Null-indiziert. So beginnen wir tatsächlich bei Null zu zählen. So ist die erste Zeile würde sein Zeilennummer Null. Und die zweite Reihe würde Reihe Nummer eins sein. Also, wenn ich hatte eine Höhe von acht für meine Pyramide, wird der letzte Wert von n wäre eigentlich sieben und nicht acht. Seien Sie also vorsichtig darüber. Und beachten Sie, wenn Sie die Bestimmung Ihr Muster, ob Ihre Null indiziert oder ein indexierte OK. So, jetzt haben wir die haben Muster für die linke Pyramide, wir brauchen, um zu bestimmen das Muster für die Lücke. Zum Glück, das ist wirklich einfach. Es ist nur immer zwei Räume. So, jetzt gehen wir nach rechts Muster. Die erste Reihe wird ein Hash haben. Die zweite Reihe, zwei. Dritte Reihe, die drei. Und so weiter und so fort. Also noch einmal, bestimmen für jede abstrakte n und jede Höhe, wie viele Hashes und wie viele Räume jede Zeile sollte. OK. So wissen wir, dass für jede Zeile wir müssen einen Prozess durchführen. Wie machen wir das? Nun, wir verwenden die for-Schleife-Konstrukt, bestehend aus einer Initialisierung, eine Bedingung, und ein Update. Für Schleifen können verwendet werden, Prozesse zu wiederholen. Also sage ich es will Hallo zu sagen, Welt 50-mal, dann meine for-Schleife würde in etwa so aussehen, wo Ich initialisieren meine Variable auf Null. Die Bedingung ist, daß i kleiner ist als 50. Und dann ist das Update, dass es um eins erhöht, jedes Mal. Also, was würde dies wäre zu tun, um drucken Hallo, Welt 50 Mal in Folge. Nun, sage ich wollte iterieren über die Höhe der Pyramide. Dann statt harter Codierung einen gewissen Wert in dem Zustand, Ich benutze nur die variable Höhe. Also, was es tun wird, ist Iterierte über die Höhe jeder Zeile. Und ich kann im Inneren etwas tun des Körpers dieser Schleife. Was wollen wir machen im Inneren des Körpers der Schleife? Nun, wie wir bereits erwähnt, wir wollen die Räume und die Hashes zu drucken für die linke Pyramide und dann drucken zwei Räume und drucken dann die Hashes. Also haben wir das schon herausgefunden. So können wir beginnen zu füllen viel mehr in unserem Programm. Hier habe ich eine äußere for-Schleife, dass iteriert in der Pyramide jede Zeile über. Und innerhalb dieser Körper Ich werde Räume immer wieder zu drucken, wiederholt Hashes, und dann ist die Lücke, und dann Hashes für die richtige Pyramide, und dann schließlich eine neue Zeile die nächste Zeile zu beginnen. Damit haben wir aufgefordert, der Benutzer für die Eingabe. Wir haben dafür gesorgt, dass es gültig ist. Und dann haben wir die Pyramide gezogen. So Mario erfolgreich klettern die Pyramide. Mein Name ist Zamyla. Und das ist CS50.