SPRECHER: Ich bin [unverständlich]. Und ich bin ein Senior an Leverett House. Ich studiere Informatik, und ich bin ein TF für CS50. Als Neuling habe ich noch nicht einmal ein Laptop oder ein Smartphone. Ich hatte keine Programmiererfahrung. CS50 war die denkwürdigste natürlich, dass Ich nahm an der Harvard weil es ein Kampf, aber es war ein wirklich Spaß Kampf in der gleichen Zeit. Und ich habe eine Menge erstaunliche, permanent Freunde, und ich lernte eine Menge wirklich anwendbaren Fähigkeiten. Ich bin so froh, dass ich nicht meine Mangel an Hintergrund eine Entschuldigung für mich sein nicht CS50. Ich bin [unverständlich]. Ich bin ein Senior an Leverett House, klasse von 2014. Und ich nahm CS50. DAVID MALAN: Also das ist CS50. Dies ist das Ende der Woche Null. Und erinnern, wo wir das letzte Mal begann, Mit diesen Lampen, die waren so beliebt, dass wir und gingen kaufte einige mehr heute. Also ich denke, das wird unsere Sache in diesem Jahr - Schreibtischlampen wenn Sie kommen auf die Bühne, zumindest bis wir erschöpft. Aber wir verwendet diese Rückrufaktion, die Einführung die Grundlagen der Darstellung von Daten. Wir brauchten Weg zu beginnen, die Informationen innerhalb eines Computers. Und der einfachste Weg, das zu tun war mit einer Zutat, Strom. Und die einfachste Sache, die Sie tun können, mit Strom einschalten und ihn ab. Lassen Sie die Elektronen fließen oder nicht. Und mit diesen zwei grundlegende Zustände, off und weiter, oder falsch und wahr, oder Null und ein, begannen wir, um zu sehen, dass wir bauen auf, in diesem Fall mit Licht Glühlampen, mehr als Zahlen nur Null und Eins. Wir zählten so hoch wie sieben, zum Beispiel, das letzte Mal. Aber alles, was wir tun müssen, ist zu halten werfen mehr und mehr an, dass Glühbirnen Problem und wirklich, wir stellen beliebig viele, dass wir möglicherweise wollen. Nun, wir schnell umgestellt dann auf Mittwoch bis dieses Byte von Freiwilligen. 8 Bit ist das, was wir allgemein ein Byte, so hier hatten wir acht Freiwillige am Mittwoch, die zusammen waren aus acht Bits. Und wenn ihre Hände gingen up, waren sie eine Eins. Und wenn ihre Hände waren unten gab es eine Null. Und wir hatten diese Leute kommen auf die Bühne, warum? Was wir in der Lage zu tun Diese Sequenz von Bits? Um ein Alphabet zu schaffen. Wir waren in der Lage, oben auf, dass bauen vorherige Lektion gelernt und tatsächlich beginnen, mehr interessant machen Informationen, die mindestens mehr ist vertraut zu uns Menschen. Und das wird ein immer wiederkehrendes sein Thema in 50, sondern auch Computer Wissenschaft allgemein, diese Idee der Schichtung, in dem am Ende der Tag, wenn Sie wirklich begann die Grundlagen mit einem Computer, ja, es ist Nullen und Einsen. Und darunter, dass es nur Strom. Aber wir sehr schnell starten, um diejenigen zu nehmen niedrigen Details für selbstverständlich und beginnen zu Schicht auf der Oberseite Vergangenheit gearbeitet durchgeführt, so daß man schließlich durch das Ende des Semesters und wirklich, mehr allgemein als Informatiker und Programmierer können einige wirklich mächtige Dinge durch den Einsatz von Arbeit dass wir uns getan haben und auch auf den Schultern der anderen. Jetzt haben wir schnell umgestellt am Mittwoch von gerade benötigen, um Informationen repräsentieren zu wollen etwas zu tun. So was haben wir einen Algorithmus definieren, wie? Eine Reihe von Anweisungen. So ist es eine Reihe von Anweisungen ist, ein Anzahl der Schritte, die Sie, ein Mensch, oder ein Computer, typischer würde Ausführen einer nach dem anderen, um um ein bestimmtes Ziel zu erreichen. Und wir hatten ein paar Tore der letzten Zeit, einer davon war zu zählen Menschen in den Raum. Und noch ein Beispiel dafür zu finden war Mike Smith in einem Telefonbuch. So können Sie sich daran erinnern, dass ich ein Telefon riss Buch in Hälfte zu diesem Zweck bis Suche nach Mike Smith. Der Zweck von diesem visuellen war zu demonstrieren, wieder, dass wir buchstäblich Abreißen dieses Problem Hälfte, in der Mitte, in der Mitte und sehr schnell gehen wie von 1.000 Seiten nur einer einzigen Seite. Diejenigen von euch, die dies verpasst Mittwoch, dachte ich, wir würden abspielen einige Aufnahmen von dem, was Sie verpasst haben. Lassen Sie uns einen Blick. [VIDEO PLAYBACK] -Dort gehen wir. 1500 Seiten, Schöne, saubere Linie, legitimen Träne. [END VIDEO PLAYBACK] DAVID MALAN: Also das war Mittwoch. Wir Übergang, obwohl, am Mittwoch nun zu wollen, um Algorithmen darstellen in irgendeiner Weise etwas Standard, nicht nur beschreiben sie verbal, aber versuchen, sie in schriftlicher Form oder auf auszudrücken einem Computer-Bildschirm, so dass wir beginnen, um auf zu verbessern, und ändern sie, und schließlich tatsächlich analysieren, wie richtig oder wie schnell sie waren. So führten wir diesen Begriff von Pseudocode, die, in juristischer Hinsicht, ist was? OK, Worte. Lasst uns ein wenig tiefer. Englisch, sicher, sind aber zu welchem ​​Zweck? Worte, mit denen zu schaffen oder Algorithmen darstellen. Also gibt es keine Sprache bekannt als Pseudocode in der Welt. Es ist nur so, dass Sie in Englisch oder was auch immer Ihre gesprochene Sprache ist, verwenden eine Art oberflächliche Schreibweise zu vermitteln eine Idee sehr prägnant. Aber wir werden sehen, dass sicherlich mit ein Englisch Pseudocode, und es stellt sich heraus, meisten Programmiersprachen selbst sind derivative of English selbst, finden wir, dass es einige Standard- Arten der Darstellung und Pseudocode auch Programmcode. So wie Sie beginnen, selbst die einfachsten sehen Beispiele heute, erkennen diese gleichen Muster wiederkehren wird nächste Woche. So war eine Art Pseudo- der Sprache ähnelt Programmiersprache. Und das erste Beispiel sahen wir visuell aufgeschrieben war dies einer. Es war nur ein Drei-Stufen-Programm, das Ziel es war, die Zahl zählen von Menschen in einem Schlafsaal für dass Video am Mittwoch. Aber es gab ein paar interessante Aspekte dieses einfachste Programm. Und dies wird immer wiederkehrenden Themen sein. Also für diejenigen, die nicht vertraut sind mit dieses, ein, führten wir eine Variable. Und wohl jeder in diesem Raum ist kennt eine Variable in der Rahmen der Algebra. Aber hier in der Programmierung, Variablen sind, ein, kann genannt, was wir wollen. Wir haben mit n als Zähler. Aber wir konnten das Wort Zähler, oder, wie Sie sehen werden, fast jeder Satz, Sie könnte so lange, wie es ist gefallen beschreibend, aber es ist wirklich nur eine Vorratsbehälter. Es ist ein Teil des Speichers, eine gewisse Anzahl von Bits, und es variiert je nach Computer, wie viele Bits gibt, dass komponieren diese Variable. Aber wir können die Werte in sie setzen. Bisher haben wir nur Zahlen setzen. Aber wir können setzen tatsächlichen Worte. Wir setzen können Absätze. Wir setzen können Bilder - nichts, wirklich, können wir mit vertreten Nullen und Einsen, können wir in setzen diese höhere Ebene Vorstellung einer Variablen. So ziemlich direkt dorthin zu übermitteln. Und das ist eine Linie. Aber wir sehr schnell ab bewegt Linie man tatsächlich tun etwas mit dieser Variablen. Und in der dritten Zeile, aktualisiert wir N. Wir erhöht N. Und wir könnten dies schreibe eine Reihe von Möglichkeiten. Aber vielleicht die naheliegendste ist nur zu sagen, setzen N gleich was auch immer ist N plus 1. So, dass war unser Zuwachs. Unterdessen gab es eine Schleife. Und diese ist auch wohl ziemlich intuitiv. Eine Schleife ist nur etwas in einem Programm das passiert immer wieder, einige Art Zyklus. Und das Stichwort dazu, für jeden ist tatsächlich sehr häufig in den meisten Programmiersprachen, einschließlich Wieder werden wir im Verlauf zu sehen. Immer, wenn Sie sehen, das Wort für, es Regel vermittelt die Idee, dass ein Schleife, etwas zyklisch, ist zu geschehen. Aber es ist erwähnenswert, ein anderen syntaktischen Details. Die Tatsache, dass dritte Zeile gibt es tatsächlich mit der Hit eingerückt Leertaste paar Mal ist gewollt. Da die menschliche Konvention ist so, dass, wenn du tust etwas wieder und wieder, in einer Schleife, wie in Zeile zwei begonnen, Sie Gedankenstrich alles, gehörte zu dieser Schleife nur deutlich machen, dass es ist Zeile drei und nicht, zum Beispiel, Zeile vier oder fünf, wenn es Linien für oder fünf, das sind Teil dieser Schleifen. Also diese einfache Vertiefung vermittelt, dass die Grundidee. Also haben wir diesen Algorithmus angewendet, Jetzt, ein paar Beispiele. Und auch dies, einfaches Beispiel in der realen Welt. Aber es geht um Vertreter sein wie würden Sie zum Testen gehen besitzen immer komplexere Programme. Sie versuchen, ein paar Szenarien, einige Vertreter Eingänge, und sehen, ob Sie die gewünschten Ausgänge. Also in diesem Beispiel hatte zwei Menschen sitzen in den Schlafsaal. Auf der linken Seite ist, dass gleiche Pseudo-Code. Und dies ist ein Screenshot des sehr letzten Schritt der Anwendung dieser Algorithmus auf diese Eingaben, wobei es waren zwei Personen im Raum und erinnern, wie wir durch die Leitungen eine Schritt, Zwei, drei und zwei und drei und getan - bis Ende dieses Algorithmus, hatten wir tatsächlich gezählt die beiden Burschen, die sind in den Raum. Also versuchten wir ein anderes Beispiel. Und wir sagten, was, wenn es Null Personen im Raum? Ist dieser Code noch richtig? Und in der Tat war es. Es passiert einfach so, dass die Linie zwei und somit der dritten Zeile oder nicht zu führen. Sie werden nicht überhaupt passieren weil sie einfach nicht anwendbar, wenn es gibt Null Personen im Raum. Aber nicht eine große Sache. Zeile eins initialisiert N auf Null, so obwohl nur eine Zeile dieser Programm tatsächlich endet als nützlich, es ergibt immer noch die richtige Antwort, als gekennzeichnet durch die orange Null an der Unterseite. Aber dann haben wir beschlossen, dass war Art von einem dummen Algorithmus. Es war ziemlich langsam. Sicherlich kann ich tun, zwei, vier, sechs, acht, zehn, wenn Zählen Personen in einem Raum. Also haben wir den Algorithmus optimiert, die Pseudocode, zu sagen, jetzt in Zeile zwei, für jedes Paar von Personen im Raum, gehen, in Zeile drei, Schrittweite in durch zwei auf jeder Iteration. Also das würde hier gearbeitet haben dieses Paar von Personen im Raum. Aber dann, wenn Sie anfangen, darüber nachzudenken das, und es dauert nicht lange, um zu nehmen zu realisieren, warten Sie eine Minute ist dies gehen zu brechen, bricht es an, was einfacher Fall? Wenn es drei Leute im Raum oder, ganz allgemein, wenn es eine ungerade Zahl von Menschen in der Zimmer, darunter ein. Wir würden diese Person hier vermissen, weil es gibt keine solche Paare. Also haben wir schnell angegangen, indem stattdessen Einführung, welche zusätzlichen Programmierung Konstrukte der Pseudo-Code. So eine Bedingung, riefen wir , oder ein Zweig. Und es soll vermitteln, visuell, die Idee des Zweiges, eine Gabel in der Straße wo Sie können dies entweder oder, vielleicht, etwas anderes. Und in der Tat sprechen wir dieses Problem durch Hinzufügen Linie 4, indem er sagte, wirklich, bei ganz am Ende, wenn eine Person bleibt, dann gehen Sie vor und zählen sie besonders. So können Sie von speziellen Fall zu sortieren, so zu sprechen, so dass wir jetzt behandeln sowohl eine gerade Anzahl von Menschen und eine ungerade Anzahl von Menschen. Nun gibt es eine Reihe von Möglichkeiten, konnten wir diese zum Ausdruck gebracht haben. Und ehrlich gesagt, konnte ich sogar noch mehr waren nit wählerisch, wenn es um meine Wahl kam Englisch für den Pseudocode. Aber zumindest der Geist der die Idee gefördert wird. Wenn Sie diesen Code übergeben an einen Freund wer nicht in CS oder noch nie gemacht CS, stehen die Chancen, sie könnten herausfinden, bei drei Personen im Raum, wie man zählen jene Menschen bezogen auf dieser Anleitung. Und das ist alles wirklich wir erreichen wollen mit Pseudocode, irgendwie standardisieren, wie wir zu gehen repräsentieren Ideen, damit wir beginnen, komplizierter zu tun Sache noch. Also das führt uns dann heute zum eigentlichen Code. Wir fangen an zu programmieren heute, wenn auch in einer freundlichen Umgebung. Und dann haben wir Übergang sehr schnell auf eine obskure Syntax, aber eine, die Sie werden sehen, ist grundsätzlich die gleiche wie die Ideen werden mit manifestiert sehen diese andere Sprache heute. Es ist nur gut aussehen ein wenig anders. Also anstatt rufen diesen Code, ich bin gehen, um ein wenig genauer und sagen, nun, beim Schreiben ein Programm, sind Sie mit dem Schreiben Quellcode. Es ist wie eine Art Pseudocode. Aber wir werden sehen, es ist nicht eine Art lose wenn es um die Wahl der Worte die Sie verwenden. Bei Programmierung in einer Sprache, haben Sie die Worte, die Sätze zu verwenden, die Syntax, dass andere Menschen haben beschlossen, repräsentieren dass bestimmte Sprache. So Pseudocodes ist bis zu Ihnen. Eine aktuelle Programmiersprache wie C, als wir schließlich zu sehen, ist standardisiert von anderen Menschen. So, wie wir über das Schreiben gehen einige Quellcode? Nun, ich werde gehen vor und tun dies. Ich werde weitermachen und öffnen ein Fenster hier. Mehr zu diesem nächste Woche. Aber dies ist ein Gerät namens die CS50 Gerät. Ich laufe ein Stück Software auf meinem Mac, wenn Sie tun können, die gleiche Sache auf einem Windows-Computer, ist, dass die Preisgabe mir die Illusion auf dem eine andere Betriebssystem ganz rechts hier in einem Fenster auf meinem Mac. Ich habe gerade voll ist abgeschirmt, so dass Sie nicht zu tun tatsächlich sehen Mac OS zeigen. Dies ist ein Betriebssystem, Linux genannt. Es ist sehr beliebt. Es ist sehr schnell. Es ist sehr frei, was hat es sehr überzeugend, vor allem in der kommerziellen Welt. Und mehr auf, dass gegen Ende der Semester, wenn wir Linux verwenden ziemlich viel für Web-Programmierung und Hosting tatsächlichen Webseiten und Projekte. So, jetzt wissen nur, dass dies ein Desktop ist Das ist gemeint vage aussehen vertraut auf Windows und Mac OS. Es muss nur ein paar andere Namen und Symbole für die Dinge. Aber dies ist die sogenannte CS50 Gerät, dass eine virtuelle Maschine, ab nächster Woche wird euch laufen innerhalb eines Fensters auf Ihre eigenen Mac oder PC. Für heute, ich werde zu öffnen die einfachste von Programmen. Es heißt gedit. Und das ist nur ein grafischer Editor. Es ist eine Art, wie Microsoft Wort, aber einfacher. Es ist wie eine Art Text Bearbeiten oder Notizblock. Es ist nur ein sehr einfaches Programm mit welche um Wörter auf dem Bildschirm schreiben. Es ist einfach so, was passiert, wenn ich sparen Dateien, die ich schaffen, wenn dieses Programm in einer speziellen Erweiterung wie. c, statt von. doc oder. xls, oder was auch immer Sie sind vertraut mit, ich kann eigentlich Programme erstellen, mit selbst diese einfache Texteditor. Also lassen Sie mich das tun. Lassen Sie mich gehen Sie vor und speichern Sie diese Datei zuerst als hello.c. Und wieder wird diese Benutzeroberfläche vertraut zu machen, um Sie schnell. Aber jetzt bin ich nur die Eingabe in einem Dateinamen. Ich werde es in meine John sparen Harvard Home-Verzeichnis. Und jetzt habe ich diese Registerkarte, der angibt, Ich bin in der Tat Bearbeitung eine Datei namens hello.c. Also nichts zu interessant noch. Und jetzt ist es zu gehen ziemlich kryptisch. Ich werde zu vergrößern, nur so ist es besser sichtbar. Und ich werde mit der Eingabe beginnen zählen stdio.h, int main, nichtig öffnenden geschweiften Klammer, eins, zwei, drei, vier Bereiche des Eindrucks, Druck f, für den Druck etwas formatierte Zitat unquote, "Hallo, Welt" Backslash, n, in der Nähe Zitat, geschlossene Klammer, Semikolon, Geben Backspace, Backspace, Backspace, Rückschritt, geschlossen geschweiften Klammer - Ich habe programmiert. Alles klar, so ist dies ein super einfach Programm, wirklich, das Programm, das jemand beginnt Programmierung mit. Und alle es tut, für all seiner Komplexität, wird ausgedruckt auf der Bildschirm, weißt du was? Hallo Welt. Aber es ist nicht ausreichend, nur , ein Programm zu schreiben. Also das ist der Code. Dies ist Quellcode eine Sprache namens c. Es ist derzeit in gespeichert eine Datei namens hello.c. Jetzt am Ende aussehen der Bildschirm hier. Mehr dazu, wieder in die kommenden Wochen. Aber das ist, was wir nennen ein Terminal-Fenster. Es ist ein blinkender, schwarz und weiß prompt. Es ist eine Art der alten Schule Schnittstelle zu ein Computer, der in der Regel nicht eine Maus oder andere grafische Elemente. Es verwendet einfach Ihre Tastatur. Und ich kann Befehle geben diese blinkenden Eingabeaufforderung. Und für die heutigen Zwecke, ich bin nur gehen, um die folgenden geben - machen hallo. Und das Programm, zu machen, ist nur ein Programm, dass in der realen Welt diese Tage, würden wir doppelt klicken. Aber in dieser Schnittstelle für heute, wir sind gehen, um seinen Namen an dieser Eingabeaufforderung eingeben. machen hallo ist buchstäblich werde machen Sie mir ein Programm namens hallo. Und es geht um so tun, indem Sie einer Datei, nur durch Standardmäßig genannt hello.c. Es ist davon ausgehen, möchte ich ein C-Programm von der Natur, wie diese Computer konfiguriert ist. Also ich voran gehen und drücken Sie Enter. Ich sehe etwas kryptischen Ausgang, aber Dies wird allzu geworden vertraut, bevor lang. Dies geschah, um einen Compiler, mehr laufen auf, dass in einem Moment, als Schall. Aber jetzt habe ich nur ein weiteres Blinken aufgefordert. Und ich kann jetzt gehen voraus und geben dot Schrägstrich, für uninteressant Gründen wir werden kommen zurück, um nächste Woche - hallo. Also alle diese Bemühungen bisher nur schreiben die einfachsten Programme, die, sobald ich Enter drücken, das tut. Also habe ich mein erstes Programm geschrieben. Also ich bin absichtlich Schippe bei dieser sehr einfachen Programms für eine Reihe von Gründen. One, ist es schwer, sich aufzuregen wäre es mit einer Klasse, wenn Dies ist das Ende des Spiels. Aber mehr als das, es gibt eine Viele Ablenkungen hier oben. Das erste Mal, wenn Sie lernen, Programm, für diejenigen unter Ihnen, weniger komfortabel, und auch ich, wieder in den Tag, als ich zum ersten so etwas gesehen habe - man kann Art der Figur, dass alles in Ordnung, diesem ist in einer Auflage hallo Welt. Aber es gibt so viel Ablenkung. Es gibt so viel Syntax auf dem Bildschirm dass es in die Quere kommt von sehr einfach, ansonsten einfach, Ideen. Also, was wir heute tun, ist, dass wir gehen auf die Seite legen und C kommen zurück zu, dass am Montag. Und wir verwenden, um eine grafische Programmiersprache namens Scratch. Dies ist eine Programmiersprache, die ich angespielt am Mittwoch, das ist los , damit wir die gleiche Art von Sachen zu tun aber ein Auge zudrücken, für heute, den geschweiften Klammern, die Klammern, die Semikolon, und alle diese dummen Ablenkungen, die in die Quere kommen, in dieser erste Tag, der einige grundlegende, hübsch interessante Ideen. So in Richtung zu diesem Ende, ich werde gehen zurück zu meinem Desktop hier und stellen Ihnen die Alternative zu, dass Programm, das wir einen Blick wird Kleinigkeit leuchtet diese. Das ist, wie wir werden, dass implementieren gleiche Programm heute - zwei Puzzle Stücke, die, wenn verriegelt und angeklickt, wird der Welt sagen, hallo Welt. Lassen Sie uns also tatsächlich dorthin zu gehen. Also werde ich weitermachen und öffnen Sie eine Website als scratch.mit.edu bekannt. Und das führt mich zu diese Website hier. Im Vorfeld habe ich in dieser angemeldet Website und die ersten Probleme, die Sie gehen durch einige dieser Schritte. Ich werde weitermachen und klicken auf meinem neu erstellten Ordner hier. Und das wird mir zu zeigen, einige Projekte, die ich tatsächlich im Voraus erstellt. Und es stellt sich heraus, dass dieser graphischen Programmiersprache nicht nur wird um uns Programm per Drag & fallen diese Puzzleteile, Sie brauchen nicht einmal eine spezielle Software. Es ist alles in einem Browser so eingebettet Sie können dies tun, in der Theorie, auf Ihr Computer gerade jetzt, wie einige von euch kann gut sein, müssen dazu nicht einmal Software wie der CS50 Gerät, was wird kommen nächste Woche. Also ich gehe hin bis zu der oberen Ecke hier und auf Erstellen klicken. Und in einem Moment werde ich eine leere bekommen Bildschirm, über die kann ich anfangen Programmieren in dieser graphischen Programmierumgebung. Aber dieses Mal, es geht um viel, wesentlich einfacher auch zu tun. So in nur einem Augenblick, wenn die Wi-Fi kooperiert, haben wir nun diesen Bildschirm. So eine schnelle verbale Tour, aber ich wage zu behaupten, sicherlich, wenn Sie in den Tauchgang erste Problem Set, werden Sie finde das alles sehr zugänglich und recht intuitiv. Aber lassen Sie malen ein mentales Bild nur für einen Augenblick. So unter dieser prompt sagen save Änderungen, bist du etwa zu kratzen sehen. Dies ist ein Sprite. Es ist ein Zeichen. Und er lebt, was wir eine Bühne rufen, diese große weiße Rechteck auf dem er nach oben, unten, links, rechts, und zu tun, wirklich, andere Arten von Aktionen. Währenddessen sind in der Mitte von diesem Benutzer Schnittstelle, haben wir eine ganze Reihe von Puzzleteile. Und du wirst sehen, dass sie Dinge sagen wie: 10 Stufen bewegen, drehte 15 Grad, Punkt in einer bestimmten Richtung. Aber es gibt Kategorien von Blöcke bis auch hier. Also, wenn ich Looks gehen, werden Sie sehen, dass es gibt andere Puzzleteile, dass anscheinend wird dieses cit zu erzählen Hallo sagen, zu denken, zu zeigen, selbst, verstecken sich. Wenn ich auf Sounds gehen, stellt sich heraus, gibt es Möglichkeiten, klingt wie meow spielen, , um alle Töne zu stoppen, um eine Trommel zu spielen. Also, lange Rede kurzer Sinn, es gibt eine ganze Haufen Puzzleteile, mit denen Sie um diese Katze, oder eine beliebige Anzahl von sagen andere Zeichen, was zu tun ist. Aber um dies alles passieren Sie müssen, um die Programmierung zu starten. Und diese großen weißen Kasten, oder grauen Kasten auf die rechte Seite, das ist, wo Ich werde tatsächlich ziehen fallen diese Puzzleteile. Das ist meine leere Textdatei Fenster entspricht. Also werde ich weitermachen und klicken Kontrollieren Sie in der Mitte. Oder besser gesagt, lassen Sie mich beginnen bis unter Veranstaltungen. Unter Events Bank, werden Sie feststellen, ein paar Dinge, die bewusst sind gekrümmt auf der Oberseite in einer solchen Weise, dass sie wahrscheinlich nicht auf das Interlock Spitze der Puzzleteile. Und das ist, weil sie den Beginn DeMark eines Programms, den Beginn einer Skript, so zu sprechen. Also, wenn ich voran gehen und ziehen, wenn grün Flagge geklickt hierher, und dann habe ich wollen diese Katze zu sagen etwas auf den ersten. Also werde ich gehen unter die Blicke Panel. Und ich werde weitermachen und greifen die sagen hallo Block und Drag und Drop und loslassen, so dass es automatisch verriegelt es. Und dann merke ich, kann Klicken Sie auf den Text. Und ich kann es überschreiben, um mehr zu sein spezifische wie, sagen wir, hallo Welt. Und jetzt haben wir das Programm, dass ich behaupten entspricht, dass viel mehr obskuren Programm, das ich umgesetzt in C vor einem Augenblick. Wenn ich gehe ab sofort auf der linken Seite, feststellen, es ist ein großes Stoppschild und eine große grüne Flagge. Lassen Sie mich in Klarheit vergrößern. Und wenn ich jetzt auf diese grüne Fahne, Sie können sich wahrscheinlich vorstellen, was diese erste Programm ist nun zu tun ist. Also auch dort, wir programmieren, aber wir eigentlich nicht verzetteln in einige dieser syntaktischen, kleinsten Details. Aber lassen Sie uns versuchen, etwas ein wenig interessanter. Lassen Sie mich in meinem Scratch Ordner hier. Und eigentlich möchte ich so lassen Sie mich eröffnen ein separates Programm hier nur für ein Moment, Maximieren Sie dieses Fenster zu öffnen, und ich werde in der heutigen gehen Quellverzeichnis. Wie immer, werden Sie feststellen, heute und weiter, dass alle heutigen Beispiele zugänglich sind innerhalb von des Kurses Website. Und ich werde es hier weiter gehen und holen up ein wenig etwas anderes. Dieser hier, für die Ich brauche einen Freiwilligen. Wer möchte eine Schreibtischlampe heute? OK, wie über jemanden ein wenig - Sie sind am Ende? Komm runter. Nun möchten Sie teilnehmen, oder einfach sagen, beginnen mit der Schreibtischlampe? VANESSA: [unverständlich]. DAVID MALAN: OK. Gut, was Sie Namen? Vanessa? David. Schön, Sie kennen zu lernen. So nach oben zu kommen und Vanessa gehen die Kontrolle über meine nehmen Tastatur nur für einen Augenblick. Und was ich hier, nur für die Zeit getan willen, wie ich das realisiert Wi-Fi war ein bisschen langsam, Scratch, die Programmierumgebung, die wir verwenden, können auch heruntergeladen und laufen auf dem lokalen Computer. Also, was ich tat, im Vorfeld der Vorlesung, in Fall, was geschieht, ist, dass ich heruntergeladen alle Dateien die wir hier mit zu spielen so dass sie können eine etwas schnell hier auf meinem Laptop. Also das ist, warum ich jetzt sehen, bin ein Mac-spezifische Schnittstelle. Also werde ich weitermachen und eröffnen diese ein. Ich werde jetzt gehen und Vollbild das Fenster. Und wie Sie sehen werden, können wir sehr schnell, wie dieser Student tat, einer der Ihre Vorgänger, von Hallo Welt gehen zu einem viel viel mehr überzeugende Anwendung. Also hier sind die Anweisungen. Oh, und wir haben eine andere Sache. Ich dachte, es würde Spaß machen, da, normalerweise, wir filmen Kameras auf diese Weise. Ich dachte, es würde Spaß machen, wenn Vanessa sein, könnten wir die Welt sehen durch deine Augen. So, hier haben wir einige Google Glass. [ERSTAUNT keucht] DAVID MALAN: Wir werden nur dann geben weg Schreibtischlampen heute. [Gelächter] Also lassen Sie mich dieses Cue up. Alles klar, so berührt dies. OK, Glas, ein Video aufzunehmen. Alles klar, Vanessa? Jetzt, als davon abgesehen, dass nichts mitbekommen hat mit Scratch zu tun, wenn man sich leicht nach oben und auf der rechten Seite sehen Sie die wörtliche Glas, und Sie sollten sehen ein kleines rechteckiges Fenster. Sie sollten alle Ihre Mitschüler gerade jetzt gefilmt? Ja. VANESSA: Ja. DAVID MALAN: OK. Also das ist in Ordnung. Wir werden dieses Material später veröffentlichen. Denn jetzt, richten Sie Ihre Aufmerksamkeit auf den Bildschirm hier. Und was Ihr Vorgänger getan hat, ist setzen einige Anweisungen auf dem Bildschirm nur mit einem Malprogramm. So wirst du in einem Moment, drücken Sie die Leertaste, um zu beginnen. Und dann einige Puzzleteile gehen von der Stelle bewegen den Bildschirm. Und Sie wollen die Pfeiltasten drücken, nur wie im echten DDR, in Übereinstimmung mit Dingen Schlange mit den Pfeilen. VANESSA: OK. DAVID MALAN: Sie haben dies vor spielen. VANESSA: Ja. DAVID MALAN: All right, Vanessa, gehen Sie vor und nehmen Sie es weg. [MUSIC - KAYNE WEST, "Stronger"] [Applaus] DAVID MALAN: So lasst uns jetzt einen Schritt davon entfernt. So klar, das ist das Ende des Spiels. Das Ende des Spiels ist nicht hallo Welt. Aber Sie müssen nicht unbedingt zu tun Dinge, die so interaktiv sind. Sie können auch Animation. So zum Beispiel, ein weiterer von Ihrem Nachfolger machte dieses Programm hier was erzählt eine Geschichte mehr als es ist ein Spiel umgesetzt. Also lass mich gehen und eröffnen hier ein Programm in unserem Verzeichnis derselben Quelle von heute. Dieser Anruf, und lassen Sie uns beginnen mit, einem Cookie Liebesgeschichte. Und nicht, um diese zu akademisch, aber, wie Sie diese ein zu sehen, zu denken selbst, welche dieser einfachen Konzepte der Programmierung haben wir gesprochen etwa so weit - Variablen und Schleifen und Bedingungen, Ihr Vorgänger hat wahrscheinlich verwenden nur einige implementieren die Visualisierungen. Sie sehen hier. Also gebe ich Ihnen ein Cookie Liebesgeschichte. [MUSIC - GREEN DAY, "urlaub"] [CRASH] [MUSIC - Die Schildkröten, "GLÜCKLICH ZUSAMMEN"] DAVID MALAN: All right, so gibt es, wir hatten ein Cookie Liebesgeschichte. Aber auch dort - [Applaus] DAVID MALAN: All right, auch dort, darüber nachdenken, wie diese Herzen ging von unten nach oben auf dem Bildschirm, Es war eigentlich ein bisschen Zufälligkeit los. Und in der Tat, wir werden sehen, dass auch in der einfachsten Umgebungen, wie Scratch, wie in C, können Sie generieren Zufallszahlen oder die Illusion Zufallszahlen, so dass das Spiel ein wenig interessanter, als es vielleicht sein, wenn Sie musste unbedingt hart codiert alles. In der Bewegung, die Sie sehen, es es gibt eine Art von Reaktionsfähigkeit. Sobald der Lebkuchenmann berührt Der Lebkuchen-Frau, sie scheint weg zu bewegen. Und so, in der Tat, können Sie bei der Umsetzung, in den meisten Programmiersprachen, die Vorstellung von Ereignissen, wobei, wenn man Hand berührt Auf der anderen Seite, die einige auslösen können des Quellcodes zu tatsächlich auszuführen. Sie können für eine solche hören Dinge auf dem Bildschirm. Also lassen Sie uns eine kurze Tour, dann, einige der Bausteine ​​können wir einige dieser Ziele zu erreichen. Also hier ist, was wir künftig rufen eine Erklärung ab. Eine Aussage zufällig in lila Scratch, ein wenig so etwas wie dieses, aber das ist willkürlich. Eine Aussage ist nur ein Puzzleteil oder ganz allgemein, eine Anweisung, dass teilt dem Computer zu tun etwas, ein Statement. Also hier ist ein einfaches Beispiel. Sag hallo Welt. Ein anderer könnte eine Sekunde warten. Also das Puzzleteil, das unterstützt wird in Scratch, werden wir Ihre Zeichen anhalten für einige Anzahl von Sekunden. Auch dies ist nur eine Feststellung. Hier nächste, wir haben noch mehr interessant, play sound meow, und der kleine Pfeil bedeutet, dass in Scratch, dies ist ein Dropdown-Menü. So können Sie Sounds importieren. Sie können Musik aufnehmen und andere tun lustige Dinge in Scratch. Und das auch, obwohl am Ende des Tages, ist nur eine Feststellung. Aber jetzt lassen Sie uns einen mehr interessantes Stück, das als bekannt Boolean Ausdruck. Kapital B, benannt nach ein Bursche namens Bool. Und ein Boolescher Ausdruck ist nur ein Puzzleteil oder, ganz allgemein, ein Stück Information, das ist entweder wahr oder falsch - Eins oder Null, ja oder nein. So ist es nur einer von denen zwei Gegensätze. So ein solches Boolean Ausdruck in der Welt der Scratch sieht aus wie dieses blau Puzzleteil. Und es ist eine Frage zu stellen, Maus nach unten, und das kann entweder von natürlich wahr oder falsch. Also mit diesem Puzzle-Stück in Scratch, gut, werden Sie in der Lage sein zu erkennen, ob ein rätseln, ob die Maus ist, in der Tat, dass , die von der menschlichen Interaktion statt mit Ihrem Programm. Das hier ist ein wenig mehr abstrakt, aber diese beiden weißen Felder sind nur für Zahlen. So können Sie Dinge wie zu tun ist, diese Zahl kleiner als die anderen? Und wenn ja, wird Scratch verhalten eine oder andere Weise. Das hier ist ein wenig mehr grafisch. Es ist, wenn das Sprite, wenn die Katze, für So wird tatsächlich berühren die Mauszeiger. Also, wenn die kleine Pfeilspitze schwebt über die Katze, dann Puzzleteil wird als wahr ausgewertet. Es ist wahr, in diesem Fall, wenn man Mit diesem booleschen Ausdruck, wie wir werden sehen in einem Moment, in dem Zweig, können Sie dies entweder, oder Sie können das tun, ähnlich wie wir hatten eine Bedingung, dass überprüft, gibt es eine weitere letzte Person in den Raum? Wenn ja, fügen Sie ein. Ansonsten nicht weiter zu kümmern. So ein boolescher Ausdruck kann auch und-ed zusammen oder oder-ed zusammen. So kombinieren Sie Boolesche Ausdrücke und sagen, das und das muss wahr sein für die ganze Sache um wahr zu sein. Und hier ist eine weitere reale Welt Beispiel. Wenn Sie schon CS50 Kurse verwendet werden, um natürlich zu tun Shopping, diese Kontrollkästchen dort, wo, wenn Sie überprüfen, ob die Box neben zu den Kursen, werden die sagen, ja, zeig mir nur Kurse, für die der Q-Wert von 4,5 oder höher. Wenn Sie es deaktivieren, nein, nicht Sorgen darüber. Oder ähnlich, auf der rechten Seite nicht Konflikt mit Kursen Ich nehme, das ist entweder wahr oder falsch. Es ist nur ein Boolean Ausdruck. Also all dieser Zeit, wenn Sie verwendet haben Webseiten mit Kontrollkästchen, du bist nur Umschalten das Äquivalent eines Boolean Expression und ausgeschaltet. Also in welcher Form nutzen Sie diese? Nun, in Scratch, werden wir gleich sehen dass es Bedingungen gibt, dass sehen wie folgt aus. Und das ist irgendwie sinnvoll, weil viel wie in Pseudocode, eingerückt wir die Art von U-förmigen Puzzleteile, bedeuten dass alles, was innerhalb dieser U ist gehen, um auszuführen, oder nicht, je auf, wo es ist. Also, wenn boolescher Ausdruck, dann was drin ist wird noch ausgeführt werden. Inzwischen gibt es eine if / else-Block. Also, wenn Sie einen Zweig, das geht so oder so, Scratch gibt uns, dass. Und nach dieser Logik, jetzt, obwohl die Puzzleteil ist eindeutig zu klein etwas anderes in der es zu verkeilen, Die Scratch-Puzzleteile, sind sie nur gehen, um zu wachsen. Wenn Sie per Drag & Drop über etwas, es wird nur wachsen, um was auch immer es passt ist man versucht zu tun. So können wir nehmen zwei dieser Dinge und eine Drei-Wege-Gabel in der Straße so dass Sie entweder tun, oder das, oder diese andere Sache nur durch Verschachtelung auf diese Weise. Natürlich, wenn Sie das auch tun viel, beginnt es zu hässlich. Aber an diesem Punkt sind Sie eigentlich wahrscheinlich nicht die Programmierung sehr gut. Und so werden die wiederkehrenden Thema auch, dass der Stil. Wie gut kennst tatsächlich Formatieren Sie den Code? Oder wie gut kennen Sie Ihren Code zu entwerfen? Aber mehr dazu in der Zukunft. Und jetzt haben wir Schleifen. Es gibt ein schönes forever-Schleife in Scratch , was soviel bedeutet, dass - zu tun was drin ist dies wieder und wieder, und wieder. Sie können mehr Beton und sagen, Führen Sie die folgenden Sache 10 mal. Sie können auch Variablen verwenden. Sie können sich mit einem beliebigen Namen in das wenig fallen und sagen, gib mir ein Variable n und setzen es gleich zu einem gewissen Wert. Und dann können Sie Funktionen. Aber mehr auf die in nur einem Augenblick. Lassen Sie mich zurück zu meinem Scratch-Schnittstelle. Und lassen Sie mich gehen diesmal. Und lassen Sie uns fortfahren und eröffnen, sagen wir mal, ein Beispiel aus - das ist ein wenig interessanter. Lassen Sie mich los, und eigentlich lassen Sie mich nur machen es mir. Ich brauche, um dieses zu eröffnen. Lassen Sie mich gehen Sie zu Datei, Neu. Ich werde zu Events zu gehen. Ich werde, wann grüne Fahne gehen geklickt haben, und ich werde gehen zu klingen. Und ich werde diese per Drag & Drop Puzzleteil, Ton abspielen miauen. Es Riegel zusammen. Und nun, wenn ich auf die grüne Fahne - [MEOW SOUND] DAVID MALAN: Bezaubernd. OK, jetzt lasst uns etwas tun, ein wenig logischer, nur um zu demonstrieren, dass wir können, für jetzt. Ich werde entriegeln diese von diesem Kerl. Ich gehe hin zu kontrollieren. Und ich werde, um einen Zustand zu greifen. Also, wenn etwas dann. Also das ist, wie es dort aussieht. Also muss ich einen booleschen Ausdruck. Und lassen Sie mich gehen und sagen, Lassen Sie mich zum Betreiber gehen. Ich werde etwas tun, etwas mathy, nur zum Spaß. Ich werde gehen hier und sagen, wenn etwas geringer ist als etwas anderes, voran gehen und etwas tun. So, jetzt wissen Sie, was eine statistische Block. Also, wie bemerkt, wenn ich über diese schweben Sache hier, die dort schnappen wird. So, jetzt, Kündigung, fange ich an zu tun schon etwas mehr logisch interessant. Wenn eine Zufallszahl zwischen 1 und 10 weniger als, sagen wir, sechs. Wenn ich wählen sechs, dass im Wesentlichen Mittel wie folgt mit 50% Wahrscheinlichkeit. Es ist wie eine Münze werfen. Nun, ich kann etwas tun bedingt. Und das, was ich werde zu tun ist, den Sound. So jetzt, wenn ich auf dem Bildschirm klicken Fahne, es ist wie eine Münze zu werfen. [MEOW SOUND] DAVID MALAN: Es war Köpfe oder es so weiter. Lassen Sie es wieder tun. [MEOW SOUND] DAVID MALAN: Heads wieder. [MEOW SOUND] DAVID MALAN: Heads wieder. Puh, OK. Tails, dass die Zeit. Also 50% der Zeit, wenn wir dies tun unendlich lange, erhalten wir 50% miaut und 50% zum Schweigen. Also da, nur ein Grundbaustein Block lässt, die uns das tun. Aber das ist irgendwie langweilig, dass ich um auf diese Schaltfläche klicken. Also lasst uns einfach per Drag und werfen alle diese entfernt. Wenn Sie schleppten sie in die Mitte, sie müssen nur selbst löschen. Lassen Sie mich gehen bis zu steuern. Lass mich für immer zu gehen. Und dieses Mal werde ich tun minorly etwas ärgerlich. [Gelächter] DAVID MALAN: Und lassen Sie mich gehen voran und tun Kontrolle. Warten Sie eine Sekunde, nur so es ist nicht zu Gitter. [MEOW SOUND] DAVID MALAN: Das ist nicht natürlich. OK. [MEOW SOUND] DAVID MALAN: Und beachtet, was schön ist über Scratch, für diejenigen von Ihnen, haben vor Programmierung Erfahrung, Sie brauchen nicht zu starten und zu stoppen. Sie brauchen nicht zu kompilieren. Sie müssen nur geändert werden, und das Programm dynamisch anzupassen. Also das ist immer ein wenig interessant. Aber lassen Sie uns noch einen Schritt weiter. Lassen Sie mich weiter zu machen und Befreien Sie sich von diesem Programm. [MEOW SOUND] DAVID MALAN: Das ist, was wir rufen Sie einen Fehler im Scratch. Er sollte nicht zu halten macht dieses Geräusch. So wir wir sagen, er solle aufhören. Alles klar, also jetzt bin ich gehen, um in zu gehen - Ich lasse MIT wissen. Wir gehen hier to Forever. Und jetzt möchte ich etwas tun wieder und wieder. Ich werde in Kontrolle zu gehen. Und lassen Sie uns sehen, werde ich ziehen meine, wenn die Bedingung gibt. So, jetzt bemerken die Logik. Wenn die grüne Flagge angeklickt wird, zu tun etwas für immer, sondern nur das tun, etwas, wenn diese andere Sache ist wahr. Ich werde gehen, lass uns sagen, Sensing. Und ich werde weitermachen und wählen Berühren und legen Sie es dort. Das ist ein boolescher Ausdruck. Und nun bemerken, die in dieser Dropdown Menü gibt es einige vordefinierte Werte. So kann ich sagen, sind Sie berühren die Kante des Bildschirms? Oder sind Sie mit dem Mauszeiger berühren, Der Pfeil auf dem Bildschirm? Also werde ich das tun. Und wenn ja, dann werde ich gehen voran und spielen Sound miauen. So, jetzt bin Art haben die Anfänge einer Spiel - ein entzückendes Spiel. [MEOW SOUND] DAVID MALAN: OK, ein entzückendes, buggy Spiel. Lassen Sie mich zu warten, sagen wir mal, 1 Sekunde da. Jetzt wieder zu spielen, indem Sie die grüne Flagge. [MEOW SOUND] DAVID MALAN: So jetzt ist es wie eine Katze streicheln. [MEOW SOUND] DAVID MALAN: All right, jetzt diese die ich im Voraus zu machen hat. Sehr spät, bekommt es eine Art einfach zu dumme Dinge zu tun. Also lassen Sie mich hier zu gehen. Lassen Sie uns sagen, das war das Haustier Katze. Lassen Sie uns nun öffnen Pet nicht die Katze. Nun, wenn wir spielen diese ein, Sie können erraten, wenn Sie Blick auf den Bildschirm - [MEOW SOUND] DAVID MALAN: Nun, wenn ich die Katze streicheln [Löwengebrüll] DAVID MALAN: Also eigentlich gar nicht pet die Katze in diesem Fall. So, jetzt müssen wir nur ein Beispiel für eine Zweig, der in zwei Richtungen los ist. Nun lassen Sie mich gehen Sie vor und öffnen ein anderes hier. Dieser, auch unter unserer Quelle Code-Dateien für den Tag. Also lassen Sie mich zurück in meine Quelle Verzeichnis und gehen in, wählen wir dieser Kerl hier und sehen was ist anders. Wow, alles in Ordnung, so jetzt ist es immer ein wenig komplizierter. Und bevor wir sehen, was dieser Kerl tut, lassen Sie uns versuchen zu folgern, aus dem Programm auf der rechten Seite. Und jetzt neu klar ermöglicht es uns, haben mehrere Skripte, mehrere Programme mit einem Sprite zugeordnet, mit einem Charakter, und es scheint, sie sind beide gehen in Gleichschritt laufen. Da beide Programme gestartet mit, wenn grüne Flagge klickt, ist dies anspielend auf einem fortgeschritteneren Thema, mit was einige von euch vielleicht bekannt sein, so genannte Threads, oder Multi-Threading. Es stellte sich heraus, lange Rede, kurzer Sinn, Computer heute im Wesentlichen tun mehreren Dinge auf einmal. Oder sie können eine Sache zu einer Zeit, so zu tun schnell, dass Sie gar nicht merken, dass es tatsächlich tun, eine Sache zu einer Zeit. Aber jetzt gehen wir davon aus, dass beide Diese Programme werden in Zukunft an ausführen zur gleichen Zeit. Und beachten Sie, beide haben immer Puzzleteile. Also sind sie beide gehen zu laufen bis ich auf den roten Stoppschild. Also, was werden sie tun? Auf der linken Seite, ich bin offenbar Deklaration einer Variablen namens stumm geschaltet. Also habe ich es nicht nennen so etwas wie langweilig wie N. Ich nannte es das gedämpfte Zeit, um Bedeutung zu vermitteln. Ich stelle es gleich Null. Lassen Sie uns dieses als falsch, oder denken Lassen Sie uns dieses als falsch denken. Nun, für immer wie folgt vor. Wenn der Tastatur Leertaste gedrückt wird, dann, wenn gedämpften gleich Null ist, ändern Sie dann stumm geschaltet, um gleich ein. Ansonsten setzen stumm auf Null. So logisch, obwohl das ist eine ganze Haufen Puzzleteile, die ist nur sagen, wenn ich die Leertaste drücken, was soll ich tun, die Variable genannt stumm geschaltet? Ändern Sie es von Eins auf Null, oder Null auf Eins. Das ist alles. So ist es, wie das Einschalten eines Lichtschalters ein-oder ausschalten und die Erinnerung, mit einem Variable, die ich getan habe. In der Zwischenzeit auf der rechten Seite, in juristischer Hinsicht, was ist der Zweck der das Skript auf der rechten Seite? STUDENT: Um die Seelöwen Ton spielen. DAVID MALAN: To Sea Lion Sound zu spielen, wenn er nicht ausgeschaltet ist, durch Natur dieser Variablen. So teilen wir Staat, so zu sprechen, Austausch von Informationen über diese beiden Script, weil hier bemerken, sind wir immer wie folgt. Wenn gedämpften Null ist, so dass, wenn es nicht stumm - wenn gedämpften falsch ist, dann spielen diese Sea Lion Sound. Und um sich selbst zu denken, hallo, hallo, hallo, für zwei Sekunden warten Sie einen Moment, und dann erneut prüfen. Also, wenn wir gehen jetzt hier auf der linken Seite, , wo dieser Kerl ist, und drücken Sie die grüne Fahne, [SEA LION SOUND] DAVID MALAN: An welchem ​​Punkt tut bekomme wirklich ärgerlich? Da dies nur ewig so weitergehen. Also manchmal, Endlosschleifen, so zu sprechen, sind gewollt. Aber in diesem Fall so schnell wie I drücken Sie die Leertaste, stoppt er. Jetzt hat das Programm nicht beenden. Es läuft immer noch in diesen Schleifen. Aber wenn ich die Leertaste wieder zu bekommen - [SEA LION SOUND] DAVID MALAN: Er wird zu holen , wo er aufgehört hat. So gibt es eine Möglichkeit für uns zu tun etwas wieder und wieder aber, dass Zeit, nur bedingt. Nun, wenn wir schon in diesem Sinne zu tun Dinge immer und immer wieder, lassen Sie mich gehen in ein anderes solches Beispiel hier. Dieses nennen wir Schafe zählen. Und merken, was dieser Kerl tut. Es ist eigentlich ein bisschen mehr wie die Pseudocode spielten wir mit auf Mittwoch, wobei er setzt einige Zähler, denken, es wird als n wieder zu Null, er immer tut das folgende. Er sagt, der Wert des Zählers für eine zweite, wartet eine Sekunde, und dann ändert den Zähler um eins. Und in diesem Zusammenhang, dass nur bedeutet Schritten es. Und er fügt man es. Also das ist wörtlich - es ist nicht ganz das, was wir denken, der als Schafe zählen. Es macht das Schaf das Zählen, für immer, von Null. So können wir ähnliche Dinge tun gibt, logisch. Aber jetzt wollen wir versuchen zu reinigen einige dieser Dinge. Lassen Sie mich gehen jetzt in eine einfache Beispiel, wo unsere Katze nur geht, um starten Husten. Na gut, so haben wir hier Husten 0 - Informatiker beginnen Zählen von 0. Also diese Katze ist gerade dabei bis dreimal husten. Und hier ist, wie ich das umgesetzt. Wenn grüne Flagge angeklickt wird, Husten, warten, husten, warte, husten, warten. Und ich tat dies nur durch Ziehen und Ablegen Puzzleteile. Oder wenn Sie anfangen zu basteln mit Scratch, Sie werden sehen, Sie können tatsächlich doppelte Stücke, so dass Sie tun können Dinge schneller bewegen, ohne und fallen bis zum Überdruss. Aber wir sind nicht auf dem besten Weg hier. Denn wie kann ich ihn Husten ein viertes Mal? Nun, ich könnte von hier hinunter zu sortieren. Ich konnte zu duplizieren und dann fügen Sie diese in dort. Wie mache ich ihn husten ein fünftes Mal? Nun, kopieren und fügen Sie es erneut. Oder ziehen wieder fallen. Und sehr schnell startet dieses Programm um wirklich, wirklich redundant, wirklich lang, aber wirklich uninteressant. Aber es gibt einen Weg, um diese aufzuräumen. Was ist der offensichtliche Weg um dies zu reinigen? OK, also könnten wir eigentlich wirklich gehen heraus, und wenn Sie den Raum getroffen bar, haben ihn husten. Aber wenn ich nur etwas tun wollen wiederholt, daran erinnern, dass wir haben gewisse Kontrolle konstruiert. Lassen Sie mich zu bewegen diese aus der Weise unter Kontrolle zu gehen. Lassen Sie mich einfach eine Wiederholung, beispielsweise drei mal. Und jetzt lassen Sie mich einige stehlen dieser Puzzleteile. Lassen Sie mich dies hier rasten. Lassen Sie mich diese wegwerfen insgesamt. Und jetzt habe ich eine bessere konzipiertes Programm. Warum? Wenn ich will, um die Anzahl der Zeiten ändern sich Diese Katze hustet, alles, was ich Sie ist eine Variable verändern, oder ein Wert, vielmehr aus drei, vier, oder fünf oder sechs. Oder ich könnte etwas tun, bedingt, auch mit dem Raum bar, wenn ich wollte. Also das ist ein allgemeines Prinzip. Sobald Sie anfangen, das Kopieren und Einfügen von Code, ob es in Scratch, oder in C, machst du etwas falsch, wahrscheinlich. Oder zumindest, wenn man einmal einige überschritten angemessenen Anzahl von Kopien und Pasten, sind Sie wahrscheinlich etwas falsch machen. Aber wissen Sie was? Ich weiß nicht wirklich wie diese. Dies ist nicht das sauberste Design. Ich wünschte, es gäbe ein Puzzle-Stück namens husten, weil dann würde ich nicht umsetzen müssen diese selbst, auf die altmodische Weise, durch nachdem sagen und warten - was ist, wenn sie nur Husten Puzzleteil. Nun, ich kann eigentlich tun. Lassen Sie mich unter mehreren Blöcken zu gelangen, klicken Einen Block und jetzt bekomme ich diese Fenster hier. Ich werde diese Sache Husten nennen. Ich werde weitermachen und klicken Sie auf OK. Und jetzt Ankündigung, bekomme ich einen neuen Ausgangspunkt Stück, das auf der Oberseite gewölbt ist. Und was ich damit zu tun, ich bin werde nur stehlen diese Blöcke. Ich werde sie hier setzen. Und nun, mit diesen drei Stücken, ich habe umgesetzt, was ich auf einen Anruf Funktion oder eine Prozedur oder einige Sie könnten es als eine Methode kennen. Leichte Unterschiede zwischen den Worten. Aber jetzt lasst uns einfach nennen dies eine Funktion. Dies ist nur ein neues Puzzleteil. Nun ist es wie folgt implementiert. Aber beachten Sie, dass Scratch hat uns ein physische Darstellung dieser ganzen blockieren hier. So, jetzt kann ich nur ziehen Sie diese hier, sagen, dreimal wiederholen und was passieren wird, wenn ich jetzt spielen Dieses Skript ist nur ein Programm zu einem Zeitpunkt ausgeführt wird. Es gibt nur einen, wenn grüne Flagge angeklickt. Aber das lila Block genannt Husten ist effektiv erzählen Scratch, jeder Mal, wenn Sie sehen, dass Puzzleteil, eigentlich führen Sie diese Schritte, die ich zufällig manuell implementieren. Damit ist eine Art ordentlich. Aber jetzt, denke, dass ich beschloss, das tue ich nicht wollen diese Katze nur zu husten. Ich will, dass er in der Lage sein als auch niesen. Nun, man könnte, wie gehen wir über Umsetzung niesen? Nun, ich konnte ziemlich dasselbe tun. Ich könnte einen anderen Block. Ich konnte dieses Niesen aufzurufen, klicken Sie auf OK. Dann hier konnte ich eigentlich haben, lassen Sie mich dies duplizieren - und es ist, wo man fühlen sollte wie du bist wahrscheinlich nicht etwas in der beste Weg. Ich könnte so etwas sagen wie: achoo, für eine Sekunde. Warten Sie eine Sekunde. Jetzt habe ich einen neuen Block genannt niesen. Und in der Tat, es ist so. Aber auch dies sollte beginnen zu fühlen - vielleicht nicht in der ersten Woche der Klasse, aber durch die zweite - nur ein wenig redundant. Klar, es ist eine gewisse Redundanz hier. Also lassen Sie mich schlagen, statt, dass wir verfeinern diese Definition wie folgt. Lassen Sie mich gehen bis zu meinem Datei-Menü. Ich werde mich nicht um diese Version zu speichern. Ich werde in einem gehen meine vorgefertigten Dateien hier. Und ich werde weitermachen und eröffnen Husten 2. Whoops das war Husten 2. Lassen Sie mich gehen Sie vor und eröffnen Husten 3, was ist das Quellverzeichnis. Husten 3 und bemerken - oh, ich sagte die Geschichte in der falschen Reihenfolge. Lassen Sie mich aus dieser Geschichte zu erholen. Die Geschichte wollte ich erzählen Enden mit Husten 4 - da ist es. So was, wenn ich stattdessen definieren ein größeres Puzzleteil genannt definieren, sagen wir mal n Wort. Niesen ist nur scheinbar, in Scratch, achoo. So drücken wir es als ein Wort, nur weil das ist die Einschränkung des Programms. Und ein Husten ist [COUGH], aber Husten, C-O-U-G-H. Also das ist nur zwei verschiedene Wörter tun, im Wesentlichen, dasselbe. Also ich kann eigentlich machen eine neuen Block wie diese. Ich habe nicht diesen Menüpunkt vor. Aber wenn Sie auf Blockieren Stellen, Sie können wählen, einige Optionen. Und man kann, dass dieser Satz eigentlich sagen dauert einige Eingänge, sonst bekannt als Argumente oder Parameter, so Sie können das Verhalten von Ihr Block. Also, was ich tat, vor einem Augenblick wurde Ich nannte diese block Sagen. Und dann habe ich gesagt, es dauert Ein String-Input. Und nun bemerken, die standardmäßig es sagt, String 1. Ein String ist nur ein Wort, oder eine phrase, für unsere Zwecke. Aber ich werde einfach einige setzen Platzhaltertext gibt, genau wie in einem Website, wenn Sie sehen, Benutzername, oder Kennwort ein, und es verschwindet, wenn Sie beginnen mit der Eingabe. Das ist alles, was ist. Und jetzt bin ich zu gehen fügen Sie eine Nummer eingegeben. Und ich werde diese n nennen - aber das ist ziemlich willkürlich. Und dann nur ein Etikett, um nur machen dieser Block ein wenig mehr Selbstvertrauen Erläuterungen - mal, das ist was ich gerade tat. Und das Endergebnis ist, dass ich ein Block, der wie folgt aussieht. Und nun bemerken, die ich verwende eine Wiederholung Block. Aber anstatt harte Codierung drei, ich bin Drag & Drop in n gibt, so dass ich können die Funktion parametrieren. Ich kann diese Funktion etwas tun eine unterschiedliche Anzahl von Malen basierend auf dieser Wert. Und bemerken, die sagen, das ist, was ich tat hier, wenn ich Wort ziehen, kann ich sagen, nicht ein hart codiert Wort, aber was auch immer wird in eine Sekunde vergangen. Inzwischen, wie kann ich neu implementieren Husten? Ich zu definieren, statt wie Husten sagen Husten n mal. Also kurz gesagt, ich bin durch diese gehen schnell, aber die Grundidee ist, sobald wie Sie sehen, beginnen in Ihrem Programm dass, warten Sie eine Minute, ich habe getan etwas ganz, wie dies vor, kann ich ausklammern einige gemeinsame Funktionalität? Kann ich zu zersetzen, was ich tue in einigen grundlegenden Ideen? Das ist, was wir hier tun. Und ich habe diese Dinge gestapelt, visuell, Auf einem anderen denn es ist Beweis für diese Idee von beginnend mit Binär-, ASCII werde, Erzeugen grafischer Programme, irgendwie Schichtung immer komplexer Ideen aufeinander. Gleiche Idee hier. Ich begann von Scratch, Umsetzung Husten, dann Husten ist realisiert wirklich nur etwas zu sagen. Also lassen Sie mich stattdessen Umsetzung der Vorstellung, etwas zu sagen. Und oben auf, dass kann ich umsetzen achoo oder Husten? Und wir könnten mehr tun, wie Varianten still. Also von diesem Grundsatz, können wir anfangen zu tun zunehmend komplexer Programme. Lassen Sie mich öffnen diese. Wir können tatsächlich mehrere Sprites Interaktion auf dem Bildschirm auf einmal. Wenn ich in mein Quellverzeichnis und packe einen sogenannten Threads, daran erinnern, dass ein Thread ist wirklich nur die Fähigkeit von zwei Skripte nebeneinander laufen Seite zur gleichen Zeit. Beachten Sie jetzt haben sowohl einen Vogel und Sprite eine Katze Sprite, die beide eigene Skripte. Also Kündigung, wenn ich auf die Katze, bekomme ich diese Skripte. Wenn ich auf den Vogel, Ich bekomme diese Skripte. Also jeder dieser Jungs hat seine eigenen Programme. Wenn ich jetzt auf die grüne Fahne, bemerken dass das, was dieses Programm tut, ist haben die Katze, unglaublich langsam, jagen den Vogel. Aber die Katze hat den Vorteil, dass wurde so programmiert dass, egal wo der Vogel wird, geht die Katze auf ihn zu. Wir können das Spiel viel schneller spielen. Also, wenn ich auf die Katze bin, merke, dass ich bin mit, sagen wir, bewegen einen Schritte. Lasst uns ihn bewegen fünf Schritte bei eine Zeit, so dass fünf Punkte auf einmal. Lassen Sie mich auf Wiedergabe. [Löwengebrüll] DAVID MALAN: All right, jetzt können wir wirklich geben die Katze im Vorteil. 10 Stufen auf einmal. [Löwengebrüll] DAVID MALAN: All right, so sehr schnell, wird es einen kleinen Vorteil für die Katze. Aber ich werde meine Hand winken einige der Details. Aber der Grund, dass dieser Pfad Beginn ein wenig jedes Mal anders ist, dass ich dabei ein wenig Zufälligkeit. Ich bin eigentlich zeigt die Katze in ein andere Richtung, wo ich basierend will, dass er so beginnen, dass jedes Mal das Spiel, oder die Animation, ist ein bisschen anders. Nun, lassen Sie mich Ihnen ein anderen hier zu bauen. Also in diesem Fall hatten wir Funktionen. Es gibt auch wird ein Puzzleteil sein bekannt als ein Array oder eine Liste, das ermöglicht Ihnen das Speichern mehrerer Werte in einer Variablen. Wir sahen Fäden, und jetzt es gibt Ereignisse. Also hier ist ein Ereignis mit diese beiden Jungs hier. Und wenn ich öffnen Sie die Datei namens Events aus heutiger Beispiele werden wir sehen ein Programm, das sieht ein wenig wie diese. Und nun bemerken diesen Kerl - so merke ich, haben die blaue Muppet geklickt - er nur, dass die folgenden. Er hat nicht einer von denen, grüne Flagge Puzzleteile. Er hat, wenn ich ein Ereignis empfangen - so einige beliebige Wort. Ich habe gerade getippt Veranstaltung gibt - er wird sagen, Polo, für zwei Sekunden. Also diejenigen, die vertraut sind Mit diesem Spiel vielleicht wissen wohin das führt. Wenn ich jetzt auf dem orange Muppet klicken sein Programm tut dies. Immer, wenn die Tastatur Leertaste unterdrückt, wird er sagen, Marco, zwei Sekunden lang auf dem Bildschirm. Aber er ist auch werde diesen Züchter verwenden blockieren bekannt als Broadcast. Er wird ausgestrahlt Zitat unquote, "event." Inzwischen ist der blaue Kerl, Rückruf, Hören Angebotsanfrage unquote, "event." Also irgendwie, jetzt, können wir zwei Sprites interagieren. Und wenn wir auf Web-Programmierung zu bekommen, später in dem Begriff, ähnlich wird diese von Vorteil sein, Ihre Website etwas tun, in Reaktion auf, für beispielsweise ein Klick auf der Tastatur. Also lassen Sie mich gehen Sie vor und drücken Sie die Leertaste. Orange Kerl sagt Marco. Blau Kerl sagt Polo. Wenn ich es wieder tun Orange Kerl sagt Marco, sagt blaue Kerl Polo. Also lassen Sie uns noch einen Schritt weiter zu gehen. Dieses Mal werden wir gehen, wahrscheinlich, nur noch ein paar Minuten hier. Haben wir - Schreibtischlampe, kommen auf Sie. Sie sind direkt am Ende. OK, können Sie beide kommen. Wir haben Schreibtischlampen für jedermann. Komm. Ich weiß nicht, ob wir mithalten können diese lächerliche gag up alle Semester, though. Alles klar, komm nach unten. Und in der Zwischenzeit haben wir die folgenden Beispiele zu ziehen, nur um beschleunigen Dinge nun, so dass wir eine Manifestation von einem anderen Vorgänger von Ihnen mit Hilfe der gleichen Grundbausteine. Wie ist dein Name? JOHN: John. DAVID MALAN: John. Schön, dass Sie mich. Und? SETZ: Setz. DAVID MALAN: Setz, nett zu mir Sie. John, wenn Sie möchten, kommen bis erste, das ist eine alte Schule Spiel namens Frogger. Verwenden Sie die Tastatur für diese als gut. Und das Ziel ist es, zu vermitteln die Straße und Wasser. [FROGGER Musik und Sound gespielt] DAVID MALAN: Tut mir leid, keine Schreibtischlampe für Sie heute. Alles klar, Setz, würden Sie gerne kommen auf bis? Alles klar, lasst es wieder tun. SETZ: Muss ich die Pfeile? DAVID MALAN: Nur die Pfeiltasten. Rauf, runter, links, rechts. [FROGGER Musik und Sound gespielt] DAVID MALAN: Wir nennen sie Trostpreise heute dann, sehr gut gemacht. Hier für euch beide, John und Setz. Herzlichen Glückwunsch, alles in Ordnung. Also noch einmal, wie dieses Spiel spielt, darüber nachzudenken, was ist los? Man gibt es eindeutig viel Bewegung. Aber wir haben, wie mit der Katze und dem gesehen Vogel beispielsweise, wie man das machen Illusion von Bewegung durch Verschieben nur einige Anzahl von Pixeln wieder. Und wenn Sie einen Block für immer, Sie könnten diese Autos tun dies immer. Wir haben die Fähigkeit, haben einige Zufälligkeit. Also dieses Spiel muss nicht sein genau das gleiche jeder Zeit. Diese Protokolle, die Autos, kann beim Windows Start leicht unterschiedlichen Zeiten, so daß die Spiel selbst ist interessanter mit jedem Spiel. Und in der Zwischenzeit haben wir die Möglichkeit gesehen auf der Leertaste hört. Aber klar, in Scratch, können Sie auch anhören oben, unten, links, rechts, und wirklich eine beliebige Taste auf der Tastatur. Und Sie können auch einige andere Dinge. Lassen Sie mich gehen Sie vor und zurück auf der Web-Version. Lassen Sie mich in unserer Sammlung gehen Beispiele hier. Und unter Mein Studio, Video, Im Wesentlichen ist ein Ordner auf scratch.mit.edu. Wir haben die Web-Versionen all dieser Projekte. Und lassen Sie uns sehen, wenn ich kann mein Computer, hier zusammenzuarbeiten. Dies wird von einem unserer Freunde geschrieben am MIT, genannt Bewegen Sie den Butterfly. Und sobald diese eröffnet, ist dies gehen, um tatsächlich mehr Computer-Hardware. Scratch geschieht umgesetzt werden mit Flash. Flash kann, um Ihre Webcam zu sprechen, wenn Sie eine haben. Also, wenn ich voran gehen und das Vollbild Hier klicken Sie auf die grüne Fahne, Bekanntmachung dass Flash die Sicherheit Nachricht sagt, wollen Sie erlauben, meine Webcam benutzen? Normalerweise sollten Sie wahrscheinlich sagen Verweigern. Aber in diesem Fall, werden wir sagen können. Dann werde ich sagen, Chrome damit diese als gut. Und jetzt, in einem Moment, Sie sehen mich, ja, mich. Und wenn meine Hand geht nach oben - Ich muss nicht bewegen Kopf gleichzeitig. Es gibt auch eine Reflexion auf dem Bildschirm. Komm, gehen wir es - Sie können es auf dem Bildschirm zu bewegen, weil es gibt auch Puzzleteile - oh, Sie wissen, was es ist, ist es, weil Sie auch finden Sie auf der Leinwand hinter mir. Also haben wir ein wenig infinite was dort vor sich geht. Alles klar, also ich spiele hier unten. Dort gehen wir. So gibt es auch ein Puzzleteil, dass sagt, wenn Sie unter Bewegung sehen eines der Sprites, können Sie es gehen nach oben, unten, links, rechts oder dergleichen. So haben wir ein wenig der virtuellen Realität geht auch hier, die alle innerhalb der Grenzen meinem Browser, nur hier mit meiner Webcam. Also, was ist dann am Horizont. Das erste Problem, Satz, wie Sie sehen, oder die Website später online gehen heute Abend um cs50.net, ist ziemlich viel los zu sein, mit offenem Ende. Und Umsetzung einer Scratch-Projekt für Sie von Interesse, ein Spiel, einen Interaktion, etwas Künstlerisches und fordern Sie sich eine beliebige Anzahl verwenden dieser Puzzleteile. Und es kann entweder interaktiv sein auf diese Weise. Oder es kann etwas mehr bewusst sein gemacht, um eine Geschichte zu erzählen. Und in der Tat, das ist, wo wir dann am Ende aus heute, mit einem letzten Beispiel. Lassen Sie mich in Scratch lokal gehen. Lassen Sie mich gehen, und öffnen Sie diese und spielen ein letztes Programm durch eine schriftliche Ihrer Vorgänger, nämlich dass man hier. Gut, die Lautstärke zu erhöhen für diese ein. [Musik spielt] SPRECHER: Bei der nächsten CS50, David lädt ein Freiwilliger auf der Bühne. DAVID MALAN: Für diese Demonstration werden wir einen Freiwilligen brauchen. Möchten Sie kommen auf Sie? Wie ist dein Name? Umzug auf.