ZAMYLA CHAN: Es ist ein mir, Zamyla. Heute in Mario, wir gehen zu sein Zeichnen Sie die Hälfte Pyramide für Mario zu klettern. Bitte sprechen Sie uns über unsere To-do ist für dieses Problem. Wir gehen zu wollen, aufzufordern und zu validieren der Benutzer eine gültige Eingabe, wie hoch sie wollen Mario Pyramide zu sein. Und dann werden wir es zu zeichnen. Also lassen Sie uns beginnen mit Führung und Validierung der Benutzer für ihre Beiträge. Wir können von der machen CS50 Library Function erhalten int, die, die sicherstellen, der Benutzer gibt eine ganze Zahl. Jede positive ganze Zahlen sind, negativ ganzen Zahlen, die Zahl 0 sind alle fair game. Andernfalls wird der Benutzer aufgefordert, wiederholen, bis sie geben Sie eine gültige ganze Zahl ist. Nun, obwohl get int tut ein großer Teil der Arbeit für uns sicherzustellen, dass die Benutzer gibt uns eine ganze Zahl, wir müssen noch einige anwenden zusätzliche Auflagen auf, dass. Schließlich können wir haben Mario Klettern nicht eine halbe Pyramide der Höhe negativ 12. Zusätzlich dazu, die Problemspezifikation dass sagt, wir können nur erlauben Mario zu klettern eine Pyramide aus Höhen zwischen 0 und 23. OK, so bedeutet das, dass wir brauchen kontinuierlich den Benutzer auffordern geben uns einen gültigen Anzahl und nur dann weiter sobald sie haben uns eine gültige Höhe gegeben. Wie machen wir das? Nun, kontinuierliche Prozesse geben uns die Idee der loops-- etwas zu tun wiederholt. Eine Schleife in C als während Schleife, die wird kontinuierlich den Körper der Schleife ausführen, so lange die gegebene Bedingung wahr ausgewertet. Sobald dieser Zustand das Ergebnis falsch, das Programm fortfahren was kommt danach. Während also Schleifen sind ein Weg, um sicherzustellen, dass wir immer wieder fordert den Benutzer auf eine gültige Eingabe. Und sobald sie geben uns einen gültigen Eingang, wir werden fortfahren, was als nächstes kommt. Wir wissen, dass wir gehen zu fragen den Benutzer zur Eingabe mindestens einmal. So, jetzt kommen wir zu einer Schwester der while-Schleife, die die Do while-Schleife ist. Haben während Schleifen wird die Ausführungs Körper der mindestens einmal Schleife. Also ohne Überprüfung der Bedingung, es wird der Körper der Schleife auszuführen. Und dann die Bedingung überprüfen, um zu sehen, ob es braucht, sich zu wiederholen. Das ist praktisch, wenn wir sind die Validierung von Benutzereingaben. Wir wissen, dass wir gehen mindestens einmal zu fragen. So ein Do While-Schleife könnte in etwa so aussehen. Wir haben eine ganze Zahl n. Und innerhalb des do while-Schleife, haben wir sofort fordert den Benutzer für eine ganze Zahl. Wenn n ungültig ist, dann werden wir sie auffordern, wieder und wieder und wieder, bis sie geben uns, dass gültige ganze Zahl. Schließlich, sobald n eine gültige Eingabe ist, werden wir für den Rest unseres Programms fortzufahren. Also lassen Sie uns gehen zurück auf die Spezifikation und die Prüfung was die Voraussetzungen für eine gültige Eingabe sein wird. Die gültigen Höhen gehen zu zwischen 0 und 23 einschließlich. So ungültige Höhen gehen zu kleiner als 0 oder größer als 23. Also denken Sie daran zu entwerfen Ihren Zustand sorgfältig, wohl wissend, dass die Bedingung für den Do while-Schleife sollte während n ungültig ist. Nun ist dies nicht ein sein würde single Booleschen Ausdruck. Wir gehen zu müssen, zu kombinieren, zwei verschiedene Ausdrücke unsere ganze Bedingung zu machen. Also schauen wir uns gerade in einer Wahrheitstabelle Ich habe bereits Sie den Hinweis gegeben, dass wir Gehen mit zwei Boolesche Werte zu tun haben. Also hier ist eine Wahrheitstabelle, wo ich haben zwei Booleans-- Boolean 1 und 2. So haben wir die Möglichkeit, zu bewerten bool1 und bool2 oder bool1 oder bool2. Und wird nur wahr sein, wenn sowohl Boolesche Werte bewerten zu wahren, während alle oder wird es wahr, solange einer von die zwei Boolesche Werte als wahr ausgewertet. OK, also einen Moment Zeit nehmen, Pause das Video und verdauen diese Wahrheitstabelle. Ich werde warten hier sein. Wenn Sie zurückkommen, sehen wenn Sie zusammensetzen können ein Boolescher Ausdruck für Ihre Zustand von n eine ungültige Eingabe. So, jetzt haben wir haben gültiger Benutzereingabe, lassen Sie uns gehen Sie vor und sprechen darüber, wie wir könnte die halbe Pyramide ziehen. Hier in diesem einfachen Text-Editor, Ich habe eine linksbündig Pyramide gezogen. Aber wir wissen, dass wir unsere brauchen Pyramide rechts ausgerichtet werden. Wie könnte ich das tun? Nun, ich könnte versuchen, zu schieben alles der Seiten durch nur ein wenig setzen Charakter dazwischen. Und dann für die nächste Linie, ich werde zu setzen einige weitere Zeichen zu schieben entlang, und further-- so weiter und so forth-- bis ich das Recht haben, ausgerichtet Pyramide. So haben wir ein Recht align Pyramide haben, aber es sieht nicht so gut aus mit den Punkten. Aber wir wollen immer noch so schön Abstand halten. Also werde ich buchstäblich einfügen einige Räume. Statt drei Punkte, werde ich setzen ein, zwei, drei Räume. In der zweiten Zeile. Ich werde ein, zwei Räume setzen. Und am vorletzten Linie, nur einem Raum. Und hier habe ich ein Recht ausgerichtet Pyramide. Aus dem Beispiel in dem Text zu tun Editor, haben wir eine Idee für das Muster dass wir die Hälfte Pyramide verwenden zu zeichnen werde. Für jede Zeile, was haben wir ist, dass wir einige Räume geben, und dann tippte einige Hashes, und dann getippt die Enter-Taste, die eine neue Zeile erstellt. So, jetzt haben wir das haben, gehen wir einen Schritt weiter und ein Muster zu finden. Also werde ich sagen, für die Interesse dieses Beispiels, wir sind mit einer Höhe von 8 zu tun haben. Die erste Reihe wird zwei zu haben, Hashes, die sieben Räume folgt. Die second-- drei Hashes, sechs Räume. Dritte row-- vier Hashes, fünf spaces-- so weiter und so fort bis wir zum n-ten Reihe zu bekommen. Also dann, ich bitte Sie, für die n-te Zeile, wie viele Hashes werden wir haben und wie viele Räume? So ist es an Ihnen ein, um herauszufinden, Formel darzustellen, wie viele Hashes und wie viele Räume benötigt werden für der n-ten Reihe, wenn Sie einige Höhe. Nun, wenn Sie herauszufinden, dies aus, vorsichtig sein, wie Sie die Indizierung. Was ich damit meine ist, dass im Alltag von uns allen Zählen, in der Regel von 1 beginnen. Aber in CS50 und in der Informatik in der Regel sind wir 0 indexierte. So ist die erste Reihe wäre n von 0 zu 1 gegenüber. Achten Sie auf diese Option, wenn du bist versuchen, Ihr Muster herauszufinden. So, jetzt gehen wir zurück, wie wir werden unsere Pyramide zu zeichnen. Für jede Zeile, wir gehen zu wollen drucken die Räume, drucken Sie die Hashes, und dann eine neue Zeile zu drucken. Der Hinweis ist hier die Wort "für" jede Zeile. In C, haben wir ein Konstrukt eine for-Schleife genannt, die aus einem besteht Initialisierung, ein Zustand, ein Update, und der Körper der Schleife. Sag ich sagen wollte, hallo Welt, 50-mal, meine for-Schleife in etwa so aussehen würde. Ich initialisieren meine ganze Zahl auf 0. Die Bedingung ist, dass I kleiner als 50. Und dann mein Update ist nur Erhöhen ich jedes Mal ein. Wir können auch für Loops verwenden über die Dinge zu durchlaufen. Beachten Sie hier, wie wir haben nicht hart codiert eine Nummer, sondern platziert die Variable Statt in den Zustand der Höhe. Also, was ich hier tue, ist, ich bin Iterieren über jede Zeile der Pyramide. Ich kann für jeden etwas zu tun Zeile innerhalb der Körper meiner Schleife. Was tun wir im Inneren der Körper der Schleife? Nun, wie wir schon gesagt, wir drucken Räume und wir drucken Hashes und wir drucken eine neue Zeile. Also meine äußere for-Schleife wie folgt aussehen wird. Ich iterieren jede Zeile der Pyramide, mit, in diesem Fall der Höhe als die Variable daß speichert die Höhe der Pyramide. Im Inneren des Körpers dieser Schleife, ich bin gehen Räume immer wieder zu drucken, drucken die Hashes wiederholt, und dann eine neue Zeile zu drucken. So, jetzt, mit all der Konzepte, die Ich habe in diesem Gang durch sprach über, Sie sollten die aufzufordern können Benutzer zur Eingabe, zu validieren, dass die Eingabe, und dann ziehen die halbe Pyramide. Mein Name ist Zamyla, und dies ist CS50.