[Musik zu spielen] -Alright! Dieses wird CS50. Dieses wird CS50. Dieses wird CS50. [MUSIC - IGGY Azalee, "Fancy"] -My Schönste Erinnerung von CS50 war, als ich ging zum Tag Puzzle. -wahrscheinlich Gerade die Zeit damit verbracht, an Problem-Sets mit meinen Freunden und Menschen, die wold schließlich meine blockmates werden. -My Beste Erinnerung aus CS50 ist der Hackathon. -Der CS50 Hackathon. -Hackathon. -Hackathon. -Hackathon. -Der Hackathon -ROB Bowden. Einfach alles über ihn. [MUSIC - IGGY Azalee, "Fancy"] -My Schönste Erinnerung ist, als ich auf Bühne und ich spielte mit dem renommierten Rolle von einem Knoten [? in der verknüpften?] [? Liste. ?] -Wenn Wir alle freien Raum und Dropbox David war wie, schauen Sie unter Ihren Sitzen. Und es war wie, Raum für alle! [MUSIC - IGGY Azalee, "Fancy"] -My Beratung für alle ankommenden Schüler würde sein, um wirklich arbeiten P-Sätze mit Freunden. -Office Stunden ist sehr viel dein Freund. Details bitte das Beste aus Ihrer Erfahrung und treffen so viele Menschen wie Sie können. -Nicht Angst, um Hilfe zu bitten. -start Die P-Sätze Anfang der Woche. -I Denke, die größte Sache ist, profitieren Sie von allen Ressourcen dass CS50 hat. -Gehen Zu Bürozeiten Anfang der Woche. -Definitely Sehen die Shorts. -Nicht Auf Ihrem P-Sätze zu verschleppen. Details bitte sicher, dass Sie eine große Gruppe zu finden von Menschen, die auf P-Sätze mit zu arbeiten. Sie können eine Menge Spaß haben und gehen zusammen gearbeitet. -Nicht Angst, sich zu drücken. Gehen Sie für die Hacker-Ausgabe manchmal. -Write Dinge auf Papier vor Sie jemals berühren Ihrem Computer. -CS50 Ist wirklich toll an Bereitstellung von Möglichkeiten, um Hilfe zu holen. -My Einen Rat ist der Schlaf. Hat jemand gesagt? Schlaf, das ist sicher. Es ist einfach nicht zu tun, aber Sie haben, es zu tun, denke ich. -I Würde sagen, wirklich geistig vorbereitet werden weil Sie es lieben. [MUSIC - IGGY Azalee, "Fancy"] Dieses wird CS50. Dieses wird CS50. Dieses wird CS50. [MUSIC - IGGY Azalee, "Fancy"] Dieses wird CS50. [Applaus] David J. MALAN: Das ist also CS50 und dies ist das Ende der Woche 0. Und das war nur etwas der Mitarbeiter, die den CS50 erwarten Sie nicht nur in den Abschnitten und Öffnungszeiten, aber, Auch am kommenden Wochenende auf CS50 Puzzle Day. Die wiederum nicht alles über die Programmierung. In der Tat, es ist zu erwarten, dass Sie nicht haben, um etwas zu programmieren, sondern Probleme lösen mit Verstand und Freunden neben Ihnen. Wir werden von einigen verbunden werden von unseren Freunden bei Facebook-- wenn Sie hier-- registrieren, die in den letzten paar Jahren, haben tatsächlich geschrieben diese Herausforderungen mit uns. Und so wird sie diejenigen sein letztlich läuft Puzzle Day. Und so werden Sie herausgefordert werden mit genau die Art von Dingen und Probleme, die Leute bei Facebook Like zu denken. Das ist also morgen. Registrieren Sie sich bei cs50.harvard.edu/register. Nun ein Wort auf ein paar Personal insbesondere. Das hier ist Ansel Duff, wer ist eigentlich eine der Co-Autoren dieser binären Lampen, die wir am Mittwoch sah, zusätzlich zu CS50 eigenen Dan Bradley. Ansel Duff war auch ein ehemaliger Freshman advisee von mir vor 3 Jahren und er eigentlich noch baute dieses Rednerpult. Er ist auf zu tun, weg Ingenieurwissenschaften und mehr. Nun ist sein Bild hier tatsächlich Ansel vor 3 Jahren an der CS50 Hackathon als er geliehen einem unserer Luftballons, steckte ihn auf seinem Laptop, und für die nächsten 12 einige ungerade Stunden, konzentrierte sich auf seine Abschlussprojekt, Pausen nur zu öffnen Tüten mit Süßigkeiten an der Hackathon. Aber er ging vor kurzem zu verbringen vergangenen Sommer mit uns, seit CS50 für seine Mitarbeiter und jetzt Studenten in diesem Semester, hat seine eigenen 3D-Drucker. Und in Kürze ein 3D-Drucker ist ein Gerät, das ganz so aussieht. Sie füllen es mit einer Kunststoffspule das heißt, die von der Vorrichtung aufgeschmolzen und Sie Dinge zu bauen buchstäblich aus dem Nichts. Ähnlich wie ein Tintenstrahldrucker, starten Sie spuckt kleine Punkte aus Kunststoff dass Form zusammen, um bilden ganze Objekte. Und Ansel, so zum Beispiel früher in diesem Sommer, hat eine iPhone 5 und beschloss er wirklich wollte um es zu stützen auf seinem Schreibtisch. Aber er wollte nicht gehen und etwas kaufen aus dem Apple-Store oder dergleichen, so dass er setzte sich und begann Zeichnung etwas. Er nahm ein paar Messungen , wie dick und wie breit sein iPhone war, er zeichnete dieses Bild hier, entschied er, dass er wollte, um eine 75-Grad-Neigung haben wie es bei der starren ihm auf seinem Schreibtisch dort. Dann wandte er sich diese mit Software in ein 3D-CAD-Modell , die ein wenig aussah so etwas wie dieses. Und dann fuhr er fort, letztlich tatsächlich erstellen Sie es. Also in der Tat, wenn einer von euch hier, vielleicht in Folge, dass ich kann, um zu werfen, haben an-- da haben wir Leute mit iPhone 5, und hier haben wir noch zwei weitere. Jetzt, nicht zu übertreffen, CS50 eigenen Cheng Gong auch in diesem Sommer festgelegten ziemlich viele Dinge und zu bauen, In der Tat, aus Gründen, die noch unklar ist, hat sich seit Druck eine Armee von Elefanten mit Gelenkarmen und Stämme. Ein paar von denen sind eigentlich hier, wenn jemand würde jetzt like-- einen Elefanten. In Ordnung,. aber was tat auch Cheng für uns ist er sehr freundlich, eine Kamera so einstellen, weil dieser Elefant, es glauben oder nicht, dauert etwa zwei und eine anderthalb Stunden zu drucken. Selbst das iPhone Ständer nahm ein und eine halbe Stunde zu drucken. Und was Cheng ging voran und tat wurde eine nette Kamera vor eingestellt dieser 3D-Drucker, für eine Stunde gefilmt und eine halb so Ansel Design gedruckt. Wir überlagert einige sexy Musik, um es in Ordnung Ihnen diese geben, um zu suchen an, wie 3D-Druck funktioniert. Und obwohl diese tatsächlich aus Kunststoff, erkennen, dass, wenn dieser Bereich für Sie von Interesse akademisch, es gibt Leute, unter sie Jennifer Lewis hier an der Schule für Engineering, die tatsächlich arbeiten an 3D-Druck von Kunststoffobjekten. Aber auch zunehmend biologischen Materialien zu lösen physiologische Probleme für den Menschen. Aber hier ist ein wenig etwas von CS50. [LOUD mechanische Geräusche] David J. MALAN: Es klingt nicht so etwas in der Realität aber es ist viel kühler, es zu sehen Bei dieser Geschwindigkeit und mit dem Ton. Nun, am Mittwoch, wie haben wir zuerst hierher gekommen? Wir kamen ins Gespräch über Computer Wissenschaft und wir fragten, was es war. Und es geht um eine Reihe von Dingen, und es gibt so viele verschiedene Richtungen in dem Sie Kopf nach einem Kurs wie CS50. In der Tat, wenn Sie abgeholt ein dieser inoffiziellen Führer CS draußen, die Broschüre, die wir zur Verfügung gestellt haben, ob Sie denken, die nur CS50, oder vielleicht tut eine sekundäre, oder vielleicht sogar die Konzentration in CS, nicht durch das, zu kippen. Und Sie werden sehen, ein Diagramm gegen Ende, dass zeigt Ihnen die vielen verschiedenen Richtungen in CS, die Sie gehen kann im. Aber für heute, wir konzentrieren, wieder auf wirklich eine der Grundanschauungen, vielleicht, wo man Eingänge zu Problemen Sie Ausgänge haben Probleme, und Sie haben Algorithmen, mit denen zu schaffen diese Ausgangssignale von diesen Eingängen. Und ein Beispiel dafür war der Natürlich ist diese Telefonbuch hier. Und wir als Beispiel verwendet, um zu gehen durch einen Algorithmus, der richtig war. Und dann noch eine war richtig, aber ein wenig schneller. Und dann noch eine, die ein wenig war mehr dramatisch, aber grundlegend Schneller. Richtig, das Telefonbuch haben wir behauptet hatte etwa 1.000 Seiten. Und wie oft habe ich um das Telefonbuch in der Hälfte reißen , jemanden wie Mike Smith zu finden, maximal in 1.000-Seiten-Buches? So, 10 geben oder nehmen. Und so einmal riss ich diese Sache in Hälfte, oder einfach, reifer, in zwei Hälften geteilt, es ist nur 10 Seiten von 1000. Und wenn Sie zu extrapolieren, ein wenig unrealistisch für ein Telefonbuch, aber wenn das Telefonbuch hatte eine 4 Milliarden Seiten in ihm, so ganz unhandlich physisch, wie viele Male Sie unterteilen ein 4 Milliarden Seite Telefonbuch in der Hälfte? Also es ist eigentlich 32, geben oder nehmen. Und nur so 32-mal, aus von 4 Milliarden Seiten, können Sie finden jemanden wie Mike Smith. Und das ist Effizienz. Das ist ein guter Algorithmus, wage zu behaupten. Aber dann zogen wir aus, dass zu versuchen, es zu formalisieren. Und ich schlug diese Pseudocode. Pseudocode ist nicht alles, was formal. Es ist nicht etwas, das man auswendig lernen. Es ist nur etwas, was Sie zum Ausdruck bringen ziemlich intuitiv mit Deutsch, Englisch, oder eine Sprache, wirklich, dass vermittelt Ihre Ideen kurz und bündig. Aber was ist Schlüssel zu Pseudocode ist, dass Sie versuchen, alle die zu antizipieren mögliche Fälle, die passieren könnten. Und in der Tat, in diesem Pseudocode Code, es waren wirklich drei Fällen jedesmal, wenn ich teilte das Telefonbuch. Mike könnte auf der linken Seite sein. Mike könnte auf der rechten Seite sein. Oder er könnte direkt auf der Seite bin ich auf sein. Oder eine vierte Ecke Fall, so zu sprechen. Ein schlechtes Szenario könnte sein which--, was ist passiert? Mike ist einfach nicht in das Telefonbuch überhaupt. Und wenn Programme crash-- wenn Mac und PC-Software, die Sie Jungs laufen auf Ihrem Computer manchmal hängt oder wird unerwartet beendet, dass in der Regel bedeutet, dass einige Programmierer, einige Mensch wie Sie bald, nur oben geschraubt und einige Fehler gemacht. Vielleicht nicht davon aus, dass es vielleicht habe keine Mike Smith im Telefonbuch. Und wenn Sie eigentlich gar nicht schreiben Code, um Situationen wie damit umgehen, in der Regel unberechenbar Dinge passieren können. Ihr Gerät kann gefrieren. Es kann neu starten. Das Programm kann zu beenden. Und so alle diese Dummheiten, die Sie haben in Ihrer aktuellen angetroffen Leben nur mit dem Computer, zunehmend nur sein, weg von dieser Intuition erklärt und das Verständnis dessen, was eigentlich vor sich geht unter der Haube. Jetzt wollen wir versuchen, einen Blick zu nehmen auf einer allgemeineren Problem. Anstatt die Besuch in einem Ort wie diese, die ganz langsam wäre ein, zwei, drei, vier tun. Oder vielleicht zwei, vier, sechs, acht. Konzentrieren wir uns stattdessen auf wie wir formalisieren Der Algorithmus des Verfahrens durch die könnten wir die Teilnahme zu nehmen. Und auf dem Weg, lassen Sie uns beginnen einige Nomenklatur gelten dass wir heute verwenden werden, wenn wir tatsächlich Start der Programmierung in einer Sprache. Also gebe ich Ihnen jetzt, ein vierminütiges Video dass wir mit unseren Freunden zusammen von TED, der Organisation. Wobei wir ein Skript geliefert und sie ihre Animatoren zum Tragen, und eigentlich ein 2D erstellt Animation von dem, was ein Algorithmus ist. Wenn wir das Licht zu dimmen. [Musik zu spielen] SPRECHER: Was ist ein Algorithmus? In der Informatik Ein Algorithmus ist eine Soll von Anweisungen Lösung ein Problem Schritt für Schritt. Üblicherweise werden Algorithmen von Computern ausgeführt, aber wir Menschen haben Algorithmen als gut. Zum Beispiel, wie würde Sie zählen zu gehen die Zahl der Personen in einem Raum? Nun, wenn Sie wie ich sind, würden Sie wahrscheinlich Punkt bei jeder Person ein zu einer Zeit und zählen von Null. Eins, zwei, drei, vier und so weiter. Nun, das ist ein Algorithmus. In der Tat, wollen wir versuchen, sie ein Ausdruck bisschen mehr formal in Pseudocode. Englisch-ähnliche Syntax, ähnelt einer Programmiersprache. Sei n gleich 0 ist. Für jede Person im Zimmer, gesetzt n gleich n plus 1. Wie Sie das Pseudocode zu interpretieren? Nun Zeile eins erklärt, sozusagen einen variablen genannt n und initialisiert den Wert auf 0 Diese nur bedeutet, dass die Beginn des Algorithmus, Die Sache mit dem wir sind Zählen hat einen Wert von 0. Nach allem, bevor wir anfangen zu zählen wir haben noch nichts gezählt. Der Aufruf dieser Variablen n ist nur eine Konvention. Ich konnte es genannt haben fast alles. Jetzt säumen zwei eichen der Anfang einer Schleife, eine Abfolge von Schritten, dass Will Wiederholen eine bestimmte Anzahl von Malen. Also in unserem Beispiel der Schritt sind wir Nahme wird Personenzählung in den Raum. Unter Zeile zwei ist die Linie drei der beschreibt, genau, wie wir über das Zählen zu gehen. Die Vertiefung beinhaltet, dass es ist Zeile drei, die sich wiederholen wird. Also mit dem Pseudocode sagen ist, dass nach dem Start bei 0 für jede Person in der Zimmer wir n um 1 zu erhöhen Jetzt ist dieser Algorithmus korrekt? Nun lassen Sie uns Knall auf es ein bisschen. Funktioniert es, wenn es zwei Personen im Zimmer? Mal sehen. In der ersten Zeile initialisieren wir n auf 0. Für jede dieser beiden Personen, wir dann n um 1 erhöht. Also in der ersten Reise durch die Schleife aktualisieren wir n von 0 bis 1. Auf der zweiten Reise durch die gleiche Schleife, aktualisieren wir n von 1 bis 2. Und so, durch diesen Algorithmus Ende ist, n 2, die in der Tat entspricht der Anzahl Menschen in dem Raum. So weit, ist es gut. Wie wäre es mit einer Ecke Fall aber? Angenommen, es gibt Menschen 0 in der room-- außer mir, wer ist Dabei zählen. In der ersten Zeile, die wir wieder zu initialisieren n auf 0. Dieses Mal aber, Linie drei überhaupt nicht ausführen Da es nicht um eine Person in dem Raum. Und so bleibt n 0, was in der Tat passt die Zahl der Personen im Raum. Ziemlich einfach, oder? Aber zählen Menschen, die man in einer Zeit, ist ziemlich ineffizient, zu, oder? Sicherlich werden wir es besser machen. Warum nicht in einer Zeit, zählen zwei Personen, anstelle des Zählens einer, zwei, drei, vier, fünf, sechs, sieben, acht und so weiter. Warum nicht zählen zwei, vier, sechs, acht und so weiter? Es klingt sogar noch schneller. Und es ist sicherlich. Lassen Sie uns zum Ausdruck bringen diese Optimierung in Pseudocode. Sei n gleich 0 ist. Für jedes Paar von Menschen Raum, gleich n plus 2 n. Ziemlich einfache Änderung, oder? Anstatt zählen Menschen, die man in einer Zeit, wir zählen sie statt zwei auf einmal. Dieser Algorithmus ist somit doppelt so schnell wie die letzte. Aber ist es richtig? Mal sehen. Funktioniert es, wenn es zwei Personen im Zimmer? In der ersten Zeile, initialisieren wir n auf 0. Für diese ein Paar von Personen, Dann inkrementiert n um 2. Und so durch diesen Algorithmus Ende n 2, die in der Tat entspricht der Anzahl Menschen in dem Raum. Angenommen, dass es neben Null Personen im Raum. In der ersten Zeile initialisieren wir n auf 0. Wie vor, Linie drei nicht ausgeführt alles Da es keine Paare von Menschen in den Raum, bleibt und so n 0. Die in der Tat passt die Anzahl der Personen im Raum. Aber was, wenn es drei Personen im Zimmer? Wie funktioniert dieser Algorithmus Tarif? Mal sehen, in der ersten Zeile, Wir initialisieren n auf 0. Für ein Paar jener Menschen, Dann inkrementiert n um 2. Aber was dann? Es gibt keine andere Voll Paar Leute im Raum, so Linie zwei nicht mehr. Und so bis Ende diesen Algorithmus, n ist immer noch 2, die nicht korrekt ist. In der Tat diese Algorithmus sagte zu Buggy sein, weil es einen Fehler hat. Lassen Sie uns mit einigen Wiedergutmachung neue Pseudocode. Sei n gleich 0 ist. Für jedes Paar von Menschen Raum, gleich n plus 2 N. Wenn eine Person bleibt ungepaarten, gesetzt N gleich n plus 1. Um dieses spezielle Problem zu lösen, haben wir in Zeile vier eine Bedingung eingeführt, anders als eine bekannte Zweig, dass nur ausführt, wenn es eine Person, die wir nicht mit einem anderen Paar. Und jetzt, ob es gibt einen, oder drei, oder eine ungerade Anzahl von Personen im Raum, Dieser Algorithmus wird nun zählen. Können wir tun, noch besser? Nun, wir könnten zu dritt zu zählen, oder Vieren, oder sogar Fünfer und Zehner, aber darüber hinaus, es geht zu bekommen ein wenig schwierig zu Punkt. Am Ende des Tages, ob von Computern oder Menschen ausgeführt wird, Algorithmen sind nur ein Satz von Anweisungen mit denen Probleme zu lösen. Dies waren nur drei. Welches Problem würden Sie mit einem Algorithmus zu lösen? David J. MALAN: Also bewusst, ein sehr einfaches Programm, ein sehr einfacher Algorithmus, für etwas zu erreichen sehr einfach, das Zählen der Anzahl der Personen im Raum. Aber lassen Sie uns necken neben einige der Vertreter Features hier, die eigentlich werde auch nützlich sein, wenn Umsetzung der meisten komplexe Software. So zum Beispiel, in dieser ersten Zeile, wir haben, was wir die Variable nennen, und aus der Algebra, sind Sie allgemein bekannt mit x und y und Z manchmal, und so weiter. Aber in der Programmierung, Variablen noch am Ende des Tages, sehr ähnlich. Aber es ist vielleicht einfacher zu denken, einer Variablen als nur einem Behälter. Und, in der Tat ist es eine bestimmte Anzahl von Bits irgendwie auf Ihrer Festplatte umgesetzt oder im Speicher des Computers, aber mehr dazu in der Zukunft. Es ist nur ein Container. Und wenn Sie etwas sagen, wie lassen n gleich 0, auch das ist wie der Aufruf dieses Glas Schüssel hier n, nur ein beliebiger Name, und setzen nichts in ihm zunächst. So ist der Wert dieses Schüssel ist im Moment Null. Und natürlich, wenn Sie wahrnehmen, in einer nachfolgenden Zeile, um tatsächlich etwas zu erhöhen Linie Code, wie in diesem dritten Zeile hier, um 1, das ist wie wenn man sagt, was ist der aktuelle Wert von n, ist es 0, plus 1, stellen so etwas wie eine Tischtennisball in hier. Jetzt wird der Wert dieser Variable ist ganz einfach ein. Und man konnte sehr schnell zu extrapolieren, aber jetzt ist es 2, jetzt ist es 3, und so weiter. Also das ist alles eine Variable ist. Es ist ein Stück von Speicher zu einige Daten tatsächlich gespeichert werden. Für jetzt ist es ein Ping-Pong-Ball. Es es ist eine Zahl. Aber es könnte sein, Wörter in einem Wörterbuch, wie die Rechtschreibprüfung Ich spielte auf am Mittwoch für Einer der letztjährigen Problem-Sets. Jetzt ein weiterer wichtiger Gedanke, dass ähnlich ist ziemlich intuitiv würde ich behaupten, ist, dass eine Schleife. Und die Schleife in dem Verfahren zählen alle ist natürlich das Gleiche Sache wieder und again-- entweder an einem oder zwei Mal zu einer Zeit. Und Sie können dies auf Englisch auszudrücken, oder Pseudocode, in einer beliebigen Anzahl von Wegen, aber mit dieser Präposition "für" ist ein sehr üblicher Weg dies zu tun. Für jede Person im Raum, dies tun. Wieder und wieder. Und die Tatsache, dass es rückt, Linie drei, bedeutet nur, dass das, was Sie tun sollen ist der Stoff, eingerückt ist unter dem Strich zwei sich. Nur ein Mensch Konvention aber ein allgemeines wie wir im tatsächlichen höheren sehen Programmiersprachen. Jetzt wenig interessanter ist wenn man in einer Ecke Fall. Zum Beispiel kann eine Ecke Fall war, wenn es waren drei Personen, oder fünf, oder sieben, oder eine ungerade Anzahl von Personen im Raum, weil die dabei durch die Zweier-Bremsen schließlich, weil Sie gehen , jemanden zu vermissen entweder an die Anfang oder das Ende je nachdem, wie Sie es tun. Und so, jetzt habe ich diesen Zweig oder Zustand, wenn eine Person bleibt, dann gehen Sie vor und Griff, dass man einsame Person, die nicht bekommen mit jemand anderem gepaart. Also das ist, was wir nennen würden ein Zustand, oder ein Zweig. Jetzt Pseudocode allgemeiner können geschrieben, um eine beliebige Anzahl von Problemen zu lösen. Und was ich dachte, wir würden hier tun, ist einen Moment Zeit nehmen einladen sollen wir sagen CS50 ist besitzen Rob Bowden auf der Bühne von zwei Freiwilligen verbunden werden, , die keine Ahnung haben, was sie erwartet. Eine Hand ging, sobald ich das sagte. Wie über Sie auf der Ende hier, komm auf. Und wie aus weiter weg, wie über Art und Weise in den Rücken. Hintere Reihe, kommen Sie mit Ihren Händen auf. Okay, und was ist Ihr Name? ANITA: Anita. David J. MALAN: Anita. Okay, schön, Sie zu treffen. Lassen Sie mich Ihnen Rob Bowden vorstellen. Dies ist Anita. Und was ist dein Name? KIERSTEN: Kiersten David J. MALAN: Kiersten. Kiersten, komm und treffen Rob Bowden und Anita. Freut mich, dich kennenzulernen. KIERSTEN: Nice to meet you. David J. MALAN: Okay, Rob. ROB BOWDEN: Nice to meet you. David J. MALAN: Anita. KIERSTEN: Hallo Anita. David J. MALAN: Und Ihre mehrere hundert Klassenkameraden. So, jetzt lassen Sie mich gehen Sie vor und ziehen bis nur ein einfaches Programm hier auf Mac OS, dass sie mich lassen tatsächlich notieren einige Noten nach unten. Und wenn Sie Jungs wollen nehmen jeweils ein Position, an einer dieser Schulen gibt, lassen Sie mich gehen Sie vor und startet eine Liste von Pseudocode, wenn man so will. Und was ich will zu tun, schließlich ist der Typ für Sie einige Anweisungen, die unsere Zuschauer sind eigentlich gehen, um für uns zu beten. Lassen Sie mich weiter und gehen Sie einfach zu einer nummerierten Liste ändern diese zu entsprechen, was wir da oben. Und was ich zu tun Ihre Hilfe ist ein Programm schreiben in Pseudocode, mit dem Diese Leute werden um eine Erdnuss zu implementieren Butter und Gelee-Sandwich. So ist es vielleicht apropos etwas zeigen einige von euch vielleicht im Internet gesehen haben, nur für einen kurzen Moment ärgerlich. [MUSIC BUCKEWHEAT Jungs ", Erdnussbutter  Gelee-Zeit "] David J. MALAN: OK. Das ist genug. Also hier mittlerweile, ich habe eine Paar Gläser, die Google wir werden auf CS50 eigenen Rob Bowden setzen , die Welt durch seine Augen zu sehen. Und wir werden unser Bestes tun, in der Post Produktion, um tatsächlich zu weben die Aufnahmen von dem, was Rob ist zu sehen Jetzt, in dieser Vorlesung tatsächlichen Video mit unseren beiden Freiwillige neben ihm. Also, was ich tun werde ist, werde ich die Schreibkraft sein. Wir haben das Ziel, hier der tatsächlich ein Programm schreiben mit dem um letztlich eine Erdnussbutter und Gelee-Sandwich, aber diese drei sind sich verhalten als ob sie Computern. Und Computer, am Ende des Tages, sind eigentlich ziemlich dumm Geräte. Sie sind super schnell, aber sie können nur tun, buchstäblich, was sie erzählt. Man kann nicht einfach sagen, machen eine Erdnuss Butter und Gelee-Sandwich. Sie haben, um sie zu programmieren, um das zu tun. Sie müssen ihnen sagen, mit Präzision, was zu tun ist, weniger die Dinge schrecklich und, hoffentlich amüsant schief. Also mit dieser sagte, müssen wir Ein Anruf-out aus dem Publikum für das, was Schritt sollte sein, wenn das Ziel hier ist es, eine Erdnuss zu machen Butter und Gelee-Sandwich. Ja? ZIELGRUPPE: [unverständlich] die Tasche Brot. David J. MALAN: Öffnen Sie den Beutel mit Brot. Also, wenn die drei Teilnehmer würden mag zu gehen, um das wörtlich zu tun. Öffnen Sie den Beutel Brot. [PUBLIKUM lacht] David J. MALAN: Also lassen Sie uns arbeiten daran. In Ordnung. So Schritt zwei, how-- Lassen Sie uns diese weiter zu gehen. Ja, in der Front. ZIELGRUPPE: [unverständlich] das Brot. David J. MALAN: Was ist das? ZIELGRUPPE: Entfernen Sie das Brot. David J. MALAN: Entfernen Sie das Brot. Ebenso prägnant. Danke. [Applaus] David J. MALAN: Das ist es? OK, also Schritt zwei wird zu sein, entfernen Sie das Brot. Okay, jemand will Schreiben Sie uns eine längere Strafe? Jemand anders? Ein wenig mehr [unverständlich]. Nein, jetzt nichts. Ja? ZIELGRUPPE: Platz zwei Scheiben nebeneinander. David J. MALAN: Platz zwei Scheiben nebeneinander. [PUBLIKUM lacht] David J. MALAN: Platz zwei Scheiben nebeneinander. Schritt vier. Ja? ZIELGRUPPE: Nehmen Sie Ihre Hand und legen Sie es leicht auf der Oberseite des Deckels Erdnußbutter. [PUBLIKUM lacht] ZIELGRUPPE: [unverständlich] neben der Erdnussbutter. David J. MALAN: Was? Sag das noch einmal. ZIELGRUPPE: Schrauben Sie den Deckel und legen es vorsichtig neben der Erdnussbutter. David J. MALAN: Legen Sie es sanft neben der Erdnussbutter. OK, Fortschritte. Schritt fünf. Ausgezeichnet. Ja? Pick-up Messer. David J. MALAN: Abholung Messer. OK, sechs Schritt. Ja? ZIELGRUPPE: Halten Sie Messer am Griff. David J. MALAN: Halten Messer am Griff. Halten Sie Messer am Griff. Schritt sieben. Ja? ZIELGRUPPE: [unverständlich] Messer in Erdnuss Butter und so wenig out [unverständlich]. David J. MALAN: Setzen Messer in-- ich gehört "Messer in Erdnussbutter und nehmen Sie so wenig wie möglich. " Übrigens, entfernen Sie zuerst das Papier. Alle Rechte, Schritt neun. Schritt neun. Schritt neun. Wir haben nicht wirklich ein Sandwich abgegeben. Ja? ZIELGRUPPE: Mit Messer in Erdnussbutter, gelten Erdnussbutter auf dem Brot. David J. MALAN: Mit Messer in Erdnussbutter, gelten Erdnussbutter auf der Brot. [PUBLIKUM lacht] David J. MALAN: Alle richtigen Schritt 10. Schritt 10. Ja? ZIELGRUPPE: Geschmack Erdnuss Butter um die Qualität. [PUBLIKUM lacht] David J. MALAN: Schritt 11. Schritt 11. Schritt 11. Komm schon. Ja? Genau dort. ZIELGRUPPE: Sorgfältig abholen Gelee. David J. MALAN: Sorgfältig abholen Gelee. OK, und eine andere Hand lag. Direkt hinter dir. Ja, in blau. ZIELGRUPPE: Alle Rechte, entfernen Deckel von [unverständlich], ja, Deckel zu entfernen aus dem Gelee. [PUBLIKUM lacht] David J. MALAN: Vom Gelee. Ha ha. [PUBLIKUM lacht] David J. MALAN: Und? ZIELGRUPPE: Und kaum fegen beliebig [unverständlich]. [PUBLIKUM lacht] ZIELGRUPPE: Natürlich, bevor [unverständlich], entfernen Sie das Papier aus Gelee. David J. MALAN: Nehmen Sie das Papier aus Gelee. Schritt 14. Wir sind fast da. Ja? ZIELGRUPPE: Invert Gelee Flasche bevor alles fällt aus. David J. MALAN: Invert Gelee Flasche vor Gelee fällt aus. Schritt 15. ZIELGRUPPE: Setzen Sie die Kappe. David J. MALAN: Setzen Sie die Kappe. Schritt 16. Ja? ZIELGRUPPE: [unverständlich] David J. MALAN: Sag das noch einmal. ZIELGRUPPE: Nehmen Sie Kappe von Ihrem Gelee. David J. MALAN: Aus Ihrer Gelee. So really-- Oops. Komm schon. Setzen Sie die Kappe. Setzen Sie die cap-- Den Deckel von Gelee. Fühlen Sie sich wie wir ein bisschen in der Schleife sind. Schritt 17. Ja? ZIELGRUPPE: [unverständlich] David J. MALAN: Sag das noch einmal. ZIELGRUPPE: [unverständlich] David J. MALAN: Zurück zum step-- ZIELGRUPPE: [unverständlich] David J. MALAN: Entfernen Kappe von Erdnussbutter. Ja? ZIELGRUPPE: Drop alle Gelee auf dem Brot. David J. MALAN: Löschen Sie alle das Gelee auf dem Brot. David J. MALAN: Wir sind fast da. Schritt 19. ZIELGRUPPE: Entfernen Sie überschüssiges Gelee. David J. MALAN: Haha, Gelee. [Applaus] David J. MALAN: Warum nicht wir-- nicht ein weiterer Schritt, um dieses Haus zu nehmen. Ein weiterer Schritt, und dann wir Sandwiches dienen. Ja? ZIELGRUPPE: [unverständlich] David J. MALAN: Während jedem Sandwich Lassen Sie uns remains-- Gedankenstrich this-- essen. [Gelächter im Publikum] David J. MALAN: Okay, danke Ihnen, unseren Freiwilligen hier. [Beifall} David J. MALAN: Wir haben ein paar schöne Abschiedsgeschenke für jeden von euch. Ihre eigene Erdnussbutter, Gelee, und Brot nach Hause zu bringen. Danke. KIERSTEN: Danke. David J. MALAN: [unverständlich] begrüßen zu dürfen. [Applaus] David J. MALAN: Also, das ist, von natürlich eine lächerliche Beispiel. Oder? Aber es muss Art zeigen, wie wir Menschen nur nehmen Klarheit für selbstverständlich. Und die Tatsache, ich war im Gespräch mit anderen Menschen, er oder sie weiß, was du meinst. Computer werden nicht zu wissen, was du meinst, auch bei der Verwendung als wir sind dabei heute zu tun, Programmierung etwas in Scratch, eine Drag Drop, Puzzleteil Stil Sprache. Auch für junge entworfen Kinder, haben Sie so explizit und so wörtlich mit sein was Sie möchten, dass Ihr Programm zu tun. Jetzt letztlich sind wir Programmierarbeit zu sein nicht in Pseudocode, Englisch wie Syntax, aber Code oder, richtiger, Quellcode. Source-Code ist nur die andere Art für Code, den Sie beschreiben, tatsächlich Schreiben mit einer Tastatur, die ist nicht in englischer Sprache per se. Es ist in C oder Java oder C oder etwas ++ so, wie wir bald sehen werden. Und in der Tat, nur um einen Schreck einige von euch, auf den ersten Blick Dies ist ein Programm in einer Sprache geschrieben genannt C. Aber zu un-Schreck ein paar von euch, Sie werden vollständig verstehen, was los kommen auf nächsten Montag, wenn es kommt, so etwas zu. Ehrlich gesagt, ist dies eine ältere Sprache. Es ist ziemlich obskur, aber es ist repräsentativ von vielen Sprachen in diesen Tagen, dass haben viele Klammern und lockig Klammern und Anführungszeichen und Semikolons. Und eine Menge von dieser syntaktischen Sachen, die nicht haupt intellektuell interessant. In der Tat, es ist eine völlige Ablenkung von den einfachen Ideen dass starrte uns ins Gesicht. Dieses Programm, wie Sie vielleicht nur raten, Drucke auf Computer-Bildschirm jemand die Worte "Hallo Komma Welt." Das ist es. So klar, es gibt eine Menge Sachen, die es im Weg der einige Offensichtlichkeit gibt, aber es wird sehr schnell rutschen entfernt und völlig intuitiv. In der Tat, was wir tun werden heute destillieren diese recht komplexe Suche Programm, das wieder werden Sie kommen , schnell zu verstehen, sondern um etwas viel einfacher. Sagen wir einfach, was wir meinen. Lassen Sie uns ein Bild von, was wir meinen, durch diese Puzzleteile hier. Also das ist ein Programmier Sprache als Scratch bekannt. Es wurde von MIT Media Lab entwickelt. Und was Sie in Problem sehen Null gesetzt, die später heute Abend veröffentlicht wird, wir müssen Sie dies gehen URL hier scratch.mit.edu. Und sie haben einen Web- basierte Schnittstelle, über die Sie werden Ihr erstes Programm schreiben. Oder die von Ihnen mit vor Erfahrung, Ihre zweite Programme, aber in einem Umfeld, das ist wahrscheinlich ein wenig ungewohnt und dass Sie drücken, um etwas zu schaffen mit dieser sehr visuellen Umgebung. Nun, was ich hier zu tun ist die Öffnung des Programms. Es existiert nicht nur als ein Web-Browser, sondern auch als herunterladbare Programm so dass Sie tatsächlich verwenden Wenn Sie keinen Internetzugang. Und ich werde das tun, hier, in Sanders, nur für den Fall, das Wi-Fi funktioniert nicht super gut zusammenarbeiten. Und was ich tun werde, ist der Punkt aus ein paar Funktionen des Programms. Also, klar zu sein, habe ich einfach doppelt klickt auf das Symbol auf dem Desktop, oder äquivalent gegangen, um scratch.mit.edu, und es ist dieses Fenster gezogen. Dies ist eine Programmierumgebung. Es ist ein Stück Software, dass einige unserer Freunde am MIT schrieb, dass die uns und Ihnen zu schreiben Programme in einer Sprache namens Scratch. Nun geschieht, ein sein Katze, die auch als Scratch und dies ist seine Welt, in der er lebt. Dies ist die Phase, so zu sprechen, dass Rechteck auf der linken oberen Ecke. Und er muss nicht wie eine Katze aussehen. Sie kann ihn sehen wie alles, und Sie können viele solcher Sprites haben, oder Schriftzeichen in einem Programm. Inzwischen hier auf der anderen rechts, ist ein großes unbeschriebenes Blatt. Und das ist, wo, in einem Augenblick, werden wir mit der Programmierung beginnen durch Ziehen und Ablegen Diese grafischen Puzzle Stücke, die richtigen sind hier in der Mitte. Und es ist viel mehr von ihnen als wir Zeit auf in der Klasse verbringen hier weil Sie werden feststellen, dass sie sind alle ziemlich intuitiv. Wieder, es ist entworfen, für Kinder, aber wir verwenden, um necken neben einige von denen, Grundgedanken der Variablen, Schleifen, Bedingungen, und bald Dinge wie Veranstaltungen und Events und Fäden und andere ausgefallene Dinge, die wir werde bekommen, um vor lange, um tatsächlich zu schaffen etwas von Grund auf. Wortspiel beabsichtigt. Nun, was ich hier zu tun ist klicken Sie nicht Bewegung, sondern Kontrolle. Und das ist nur eine Kategorisierung von hier-- und ich sehe eine andere Farbe Satz von Blöcken. Beachten Sie aber, ein paar bekannte Wörter. "Wenn" und "else if" und "Wiederholung". Und Sie können sich wahrscheinlich vorstellen, das ist erinnert an den Zweig, oder die Bedingungen, die wir gesehen haben, und sogar die Schleifenkonstrukt. So haben wir hier ähnliche Blöcke. Aber am interessantesten man ist diese hier. Wenn diese grüne Flagge angeklickt wird, dies für die mit dem Stand der Programmier Erfahrung entspricht einem Hauptfunktion. Aber für diejenigen, die nicht, Das ist das Puzzlestück das wird einen Anstoß für unsere gesamte Programm. Wörtlich bedeutet es, wenn ich gehe, in diesem Programm, und klicken Sie auf einen grünen flag-- was können Sie bis in die hier zu sehen linken oberen Ecke der Benutzeroberfläche, so sehen die grüne Fahne neben dem roten Stopp-Schild? Wenn ich auf das, meine Programm laufen soll. Nun, ich werde etwas tun super einfach mit Scratch. Ich werde weitermachen und gehen auf die Blicke Tafel hier, wo ich ein paar von lila Puzzleteile, und ich werde weitermachen und tun super einfach etwas sagen wie. Und diese Ankündigung dann- Text in das weiße Feld ist editable-- Ich werde sagen, "Hallo Welt", wie wir gerade hat in diesem Text Version vor einem Augenblick. Und jetzt, wenn ich gehe, und klicken Sie diese grüne Flagge, ich habe jetzt programmiert. Es ist kein besonders interessantes Programm, aber ich machte der Computer etwas zu tun. Ich begann ein Programm, und es tat, was ich gesagt, es zu tun. Jetzt kann ich weiter ziehen mehr und mehr von diesen Puzzleteilen und sie gehen zu verriegeln, aber wir schlagen einige Begriffe hier wir werden sehen, dass wiederkehrende Während des Kurses und wirklich ganz Informatik und Programmierung im Allgemeinen. Diese "sagen" Block, in lila, lassen Sie uns nur telefonieren Sie eine Erklärung ab. Es ist wie eine Feststellung. Tun Sie dies. Also, es ist eine Kategorie von Anweisungen, die Sie könnte einen Computer als Teil füttern eines Programms oder eines Algorithmus. Und klar sein, haben Sie wohl für selbstverständlich dass Sie Programme auf Ihrem Computer. Und sie sind Art von Algorithmen, sondern ein Programm ist wirklich ein Haufen von Algorithmen dass einige Menschen schrieb. Sie verpackt es und sie verkauft, so dass Sie, oder sie auf einer Website veröffentlicht für Sie zum Download bereit. Also, das ist ein Programm, nur einen ganze Reihe von Nullen und Einsen dass, irgendwie, schuf den Menschen. Und diese Muster von Nullen und diejenigen Dinge darstellen, letztlich sagen wie "Hallo Welt" oder "Spiel diese Musik "oder" spielen dieses video " oder "senden Sie eine E-Mail." Aber wir werden wieder kommen in Weise näher, was ein Programm ist, wenn Sie, sich selbst, schreibt sie. Hier ist ein weiterer statement-- "Warten Sie eine Sekunde." Ich habe nicht mit dieser noch nicht, aber wenn ich will, mein Programm für einen Moment innehalten etwas zu tun, kann ich sagen, es zu tun. Warten Sie eine Sekunde. Jetzt ein anderer sein könnte "spielen Sound." Also, das ist einzigartig, es Scratch hat die Fähigkeit, Töne zu spielen. Also, ich könnte eine Erklärung Einsatz ist, hier "spielen Sound." Inzwischen Booleschen Ausdruck, so ist dies ein schicker Wort nach nur einem Mann namens Mr. Bool benannt, und das ist alles über eine Frage. Wahr oder false-- ist die Maus nach unten? Ein boolescher Ausdruck ist nur einige Ausdruck in Englisch das ist entweder wahr oder falsch. Entweder an oder aus. Entweder Eins oder Null. Sie können es glauben in einer beliebigen Anzahl von Wegen, aber es ist entweder wahr oder Diese falsche, letztlich. So "Maus nach unten Fragezeichen," das wäre ein boolscher Ausdruck sein kann. Und Sie können an andere zu denken, vielleicht. Zum Beispiel, "ist die linke Zahl weniger als die richtige Zahl? " Auch das wäre ein boolescher Ausdruck. "Weniger als" ist ein boolescher Ausdruck. Dieser, auch "berühren Mauszeiger." Ich bin mir nicht sicher, warum sie nannte es Mauszeiger. Es bedeutet nur, befindet sich der Cursor ist die Pfeil auf dem Bildschirm, berühren die Katze, beispielsweise. Oder einen anderen Aspekt des Bildschirms. Und es ist eine Frage, wieder und dass bezeichnet einen Booleschen Ausdruck. Etwas, dass Sie vielleicht wollen in einem Zustand zu verwenden. Also werden wir an, dass in nur einem Augenblick kommen. Sie können "und" die Dinge zusammen. Also, wenn Sie wollen, wenn dies zu überprüfen ist der Fall, und das ist der Fall, können Sie ein "und" Block wie diese zu verwenden. Und hier ist die Bedingung. Beachten Sie die Form der kleinen Öffnung in der Anfang der gelben Puzzleteil, es erinnert an die Form dass wir gerade vor einem Moment sah. Jede dieser Booleschen Ausdrücken haben diese spitzen Ecken links und rechts. Und das ist, weil die Leute MIT entschieden dass durch die visuell Förder Formen, Sie können den Menschen helfen, Art, Studenten und Kinder gleichermaßen, zu Art füllen Sie die Felder wörtlich. Jetzt, dass puzzle-- Öffnung ist ein wenig klein, und wie wir in dem Programm zu sehen, in Scratch, wird es wachsen zu passen. Es wird seine Form beizubehalten, letztlich. So ein Zustand, lassen Sie uns zu entscheiden "Soll ich etwas zu tun oder nicht?" Ein boolescher Ausdruck ist die eigentliche Frage Sie entscheiden, kann ich zu gehen links oder gehe ich nach rechts wenn ich diese Begegnung so genannte Gabel in der Straße? Sie können zwei Zweige haben. Wenn etwas wahr ist, tun diese, sonst gehen diesen Weg, oder Sie können einfach gar nichts zu tun allem, wie dieser Block stillschweigend. Ebenso können wir diese Dinge Nest. Also, wenn Sie bis zum Verbraucher in der Triple wollen Straße, entweder dies oder dies oder das, Sie können nur Nest diese Dinge zusammen. Und es beginnt, ein wenig zu hässlich, schließlich, das ist sicher, aber die Logik immer noch die gleichen. Sie können buchstäblich lesen dies oben nach unten und es sagt, was es means-- wenn diese wahr ist, dies zu tun, sonst, wenn anderes. Eine Schleife wird nicht einfacher im Scratch. Für immer tun die folgenden. Nun könnte man Sie nicht, dass können viel tun, weil es nicht viel Raum zwischen der oberen und der Ende der Puzzle-Stück Öffnung. Aber Sie werden sehen, Scratch ist los wachsen, so viele Puzzleteile passen wie man dort stopfen wollen. Weitere Schleife könnte mit Wiederholungen ausgedrückt. Wenn Sie im Voraus wissen: "Ich wollen etwas 10 Mal zu tun ", Sie können nur sagen, Scratch etwas 10 Mal zu tun. Und mittlerweile können wir Variablen haben. Also hier ist eine willkürliche, es ist in diesem Fall Orange, und das ist eine rasante Tour. Auch hier finden Sie diese sehr zugänglich finden sobald Sie beginnen Zeigen und Klicken. Ich habe meine Variable n genannt, aber ich könnte es, was ich will benannt haben, und ich bin hier die Einstellung, in Diese willkürliche Beispiel Null. Jetzt sehen Sie ein Programm wie hallo Welt ist gar nicht so überzeugend, also lasst uns tatsächlich eröffnen etwas dass ein ehemaliger Schüler gemacht. Lassen Sie mich gehen Sie vor und öffnen, zum Beispiel diese hier, für die ich lieben würde , einen Freiwilligen zu haben. Alle Rechte, wie about-- wir weiter gehen. Ja, kommen Sie auf. Wie heißen Sie? ABBY: Abby. David J. MALAN: Abby, komm auf. So haben Sie jemals gespielt dieses Spiel vor? ABBY: Nein David J. MALAN: In Ordnung. David, schön, Sie zu treffen. Kommen Sie vorbei. Und was ist Ihre Programmierung Hintergrund, wenn vorhanden. ABBY: Ich habe einige C ++ gelernt. David J. MALAN: Sie haben einige C ++ gelernt. Und was ist Ihr Spiel Hintergrund spielen? ABBY: Nicht viel. David J. MALAN: OK, so dass wir, dass zu nehmen. Also hier ist, wie das Spiel funktionieren wird. Ich werde weitermachen und klicken Sie auf die grüne Fahne, die ist hier oben rechts. Jetzt ist Ihre Vorgänger in der Klasse Sie hier einige Anweisungen gegeben hat. Und in nur einem Augenblick, es sagt: "Platz, um zu beginnen." So gehen Sie vor und schlug die Leertaste. COMPUTERSPIEL: Pikachu. DAVID J. MALAN: Und das Ziel ist, fangen die Nahrung, da es dargestellt links. Und [unverständlich] [GAME Musik zu spielen] David J. MALAN: Oh, gut, danke für das Spielen. Wir haben hier eine kleine Abschiedsgeschenk für Sie. Wir haben CS50 Stress-Ball, wenn Sie möchten, zu wählen. Alles in Ordnung, gute, Sie zu treffen. Danke für das Kommen und herausfordernd. So haben wir mehr Stress-Bälle, so machen wir noch ein Beispiel, um zu motivieren. Ein Freiwilliger? Alle Rechte, wie etwa hier vor. Wie heißen Sie? PHILLIP: Phillip. David J. MALAN: Phillip. Komm auf, Phillip. Also, Phillip sein wird mit einem anderen Spiel herausgefordert dass einer Ihrer Vorgänger schrieb als Teil des Problems Null gesetzt, Hardest Game namens Ivy. Und wir werden in nur einer zu sehen Moment, was damit gemeint ist. Phillip, schön, Sie zu treffen. Was ist dein Hintergrund? PHILLIP: Fertig viel Codierung. Geschehen ein wenig Gaming, auch. David J. MALAN: OK. Haben Sie eine Menge Spiele, auch. Und haben Sie dieses Spiel schon gespielt? PHILLIP: Nein David J. MALAN: Alle rechts, so hier gehen wir. Ich werde weitermachen und klicken Sie auf die grüne Flagge. [Game Music] [MUSIC MC Hammer, "U können nicht Touch dieses"] PHILLIP: [unverständlich] David J. MALAN: [unverständlich] PHILLIP: [unverständlich] [Lacht] [MUSIC MC Hammer, "U können nicht Touch dieses"] David J. MALAN: [unverständlich] Pflügen durch sie. PHILLIP: [unverständlich] David J. MALAN: Gehen Sie voran. [MUSIC MC Hammer, "U können nicht Touch dieses"] David J. MALAN: In Ordnung. Herzlichen Glückwunsch. [Applaus] David J. MALAN: Wir werden Post, die später online so Sie verschleppen können mit ihm auch. Princeton kommt als nächstes, danach. So, jetzt ist eigentlich gehen lassen von vorne anfangen, so zu sprechen, und tatsächlich bauen, bis wir auseinander zu necken einige dieser Ideen und um etwas zu bekommen, auch komplexere Ende. Ich werde hier gehen, und ich werde gehen Sie vor und erstellen Sie eine neue Datei. Also noch einmal, wird das Problem Satz gehen Sie durch einige dieser Schritte. Aber alles, was ich tat, war unterwegs Um die Datei-Menü und ich sagte: "neu", so viel wie Microsoft Wort oder jedes Programm so. Und lassen Sie uns weitermachen und wir now-- vor einem Augenblick "Hallo Welt" umgesetzt, aber wir tun etwas, ein wenig süßer. Ich werde gehen bis zu Veranstaltungen. Und ich werde "zu tun, wenn grüne Fahne angeklickt. " Und dann werde ich nutzen, sagen wir mal, eine Filiale. Also werde ich eine "if" Bedingung verwenden. Und merken, wie, sobald ich in der Nähe um sie, will sie zusammenschnappen. Also ließ ich gehen und es zusammen einrastet. Und jetzt kann ich etwas Interessantes zu tun. Wenn ich hier durch zu blättern, werde ich auf eine ganze Reihe von Blöcken zu sehen. Wenn ich auf "Daten" - lassen Sie mich heran in-- gibt es etwas über Variablen. Wenn ich auf "Bewegung", können Sie offenbar Dinge umdrehen. Wenn ich auf "Betreiber" - Oh, das ist interessant, Ich kann eine Zufallszahl auszuwählen. Also lassen Sie mich etwas zu tun mit nur eine gewisse Wahrscheinlichkeit, einfach nur so. Ich werde weitermachen und ziehen dieses Puzzleteil, ist, dass weniger als Block, so ist es nur "Diese Zahl ist geringer als dass man?" Aber ich glaube eine harte Code nicht wollen, eine Reihe weil das ziemlich sinnlos. Also werde ich dieses Stück ziehen hier, und merken, wie es einrastet, und jetzt lassen Sie mich gehen Sie vor und sagen, "wenn die Zahl, die zufällig ausgewählt ist weniger als sechs, gehen Sie folgendermaßen vor. " Nun, warum weniger als sechs? Welche Wahrscheinlichkeit ist dies effektiv geht mir zu geben, nur intuitiv? Etwa 50%, oder? Wenn die Zahl, die zufällig zu erraten zwischen 1 und 10 ist kleiner als sechs, klar, es ist eine, zwei, drei, vier oder fünf. Und damit geht für mich ein geben Wahrscheinlichkeit von 50%, was passiert? Nun machen wir so etwas wie das, "Ton abspielen miauen." Und beachtet, wieder, das Puzzlestück wächst zu passen, solange die Formen übereinstimmen. Das ist, was wichtig ist. Lassen Sie mich gehen über Scratch hier und klicken Sie auf "Play". Nichts passiert. Ist das ein Bug? Nein, nicht erforderlich. Es könnte nur sein, dass eine größere Anzahl gewählt. Also lassen Sie es wieder tun. Nichts. [Miau] David J. MALAN: Da ist es. [Miau] David J. MALAN: Wieder. Nein. [Miauen] David J. MALAN: Also, wenn Sie noch jemals ein Spiel gespielt, natürlich, wo Sachen zufällig geschieht, wie die bösen Jungs kommen oder nicht kommen auf den Bildschirm oder Dinge fallen oder nicht fallen, das nur, weil etwas super Einfaches wie dies geschieht. Wählen Sie eine Zufallszahl, und wenn es ist weniger als ein Wert, vielleicht tun oder vielleicht tun. Wir können integrieren dass in einem Zustand. Lassen Sie uns etwas anderes. Lassen Sie mich wegwerfen. Sie können Sachen durch loszuwerden nur indem Sie es nach links und Loslassen. Lassen Sie mich gehen Sie vor und machen Sie einen Block für immer und sehr schnell etwas lästig zu tun. Lassen Sie mich gehen Sie vor und sagen, "Ton abspielen miauen." Aber ich glaube nicht, dass dies auch sein ärgerlich, so lassen Sie mich diesen Block zu packen, "Warte eine Sekunde" und Ankündigung es gibt keinen Platz für sie mehr. Aber wenn man nahe genug zu gehen, es will, dorthin zu gehen. Also ließ ich gehen, und es wird wachsen, um den Block zu füllen. So jetzt ist dies eine Schleife. [Miauen] David J. MALAN: Ich bin buchstäblich tun dies immer. Wieder und wieder. Das ist einfach nicht natürlich klingende. Lassen Sie mich gehen Sie vor, und dies ändern nicht zu einer Sekunde auf zwei Sekunden und drücken Sie Enter. Und was ist schön zu Scratch ist dass Sie interaktiv programmieren könnte. Nehmen Sie eine Änderung, vielleicht drücken Sie Enter oder Play wieder, und es wird einfach weiter. Nun, jetzt, warum machen wir nicht etwas ein wenig netter? Anstatt alles zu tun, von Grund auf, lassen Sie mich gehen Sie vor und eröffnen eine Vorauszahlung machte einen, dass ich vorgebacken, namens "Pet die Katze." Und wir werden alle zu posten Diese Dateien online, und Problem Null gesetzt wird Ihnen sagen, wie diese zugänglich sind, und öffnen Sie sie. Und beachtet, das ist ziemlich einfach. Aber im Voraus, scheine ich packte haben ein "für immer"-Block, also habe ich eine Schleife bekam. Und dann habe ich eine "if" Bedingung bekam. Ich habe einen Booleschen Ausdruck bekam. Also in Englisch, nur mit einem Blick auf Diese, vor allem wenn Sie noch nie haben vor programmiert, nur intuitiv, was wird das wohl tun, dieses Programm? [PUBLIKUM CHATTER] David J. MALAN: Wenn Sie die Katze streicheln, die Katze zu miauen gehen, oder? Denn "für immer deaktivieren" wird der Mauszeiger berühren die Katze. So klar zu sein, und ich habe nicht gesagt, dies vor, alle diese Puzzle Stücke und das Skript, das wir haben sie in Kombination so zu sprechen, ist ein Skript, gleichbedeutend mit Programm, wirklich, gehört zu dieser Katze. Und der Grund, weil ist-- Ankündigung wie das gleiche Katze hier hervorgehoben, Sie hier unten ein erstellen zweite Katze oder Hund oder wirklich alles, was Sie wollen grafisch. Sie können etwas importieren aus Photoshop oder dergleichen, und zu integrieren, wenn Sie etwas möchte es für ein Projekt zu machen. Und was Sie finden, letztlich ist, dass Sie können Skripts hinzuzufügen, fügen Puzzle Stücke, um einzelne Zeichen. So dass diese alle gehören zu Diese besondere Katze. So, jetzt, wenn ich voran gehen und spielen Dieses Programm, das nichts passiert. Aber es läuft. Das Programm ist in dieser Endlosschleife, Art warten, was passieren? [PUBLIKUM CHATTER] David J. MALAN: Um die Katze zu streicheln. Also, wenn ich mich bewege meine Maus hin him-- [Miauen] David J. MALAN: So, jetzt Ich streichelt die Katze. In der Zwischenzeit können wir ein Doppelzweig haben. Lassen Sie mich gehen Sie vor und öffnen bis pet nicht die Katze. Wir werden diese auch online buchen. Dies ist ein wenig komplex, aber selbstverständlich Sie vielleicht erraten was passieren wird. [Miauen] David J. MALAN: Katze ist Miauen, große, alte Zeit. Aber dieses Programm ist natürlich genannt "die Katze Pet nicht" so klar, ich möchte die Katze streicheln. [ROARING] David J. MALAN: Sie streicheln die Katze nicht. Nun, lassen Sie uns einen Blick an einem anderen Beispiel. Dieser bezeichnet wird "Hallo, Hallo, Hallo," aus Gründen das wird klar sein, denn sobald ich dieses thing-- [SEAL BARKING] David J. MALAN: Sehr einfach zu schreiben ärgerlich Scratch-Programme. [SEAL BARKING] David J. MALAN: Jetzt werden wir nicht gehen sehr ins Detail mit allen von ihnen, aber feststellen, es ist ein paar neue Funktionen hier. Es gibt eine Variable, genannt "stummgeschaltet" und dann gibt es eine Reihe von Bedingungen. Und jetzt lassen Sie mich nur necken Sie sagen, dass, wenn dieser Kerl bekommt zu lästig, Ich kann die Leertaste zu schlagen und er stoppt. Weil die Rolle spielte, die von diese beiden Skripten ist wie folgt. Einer von ihnen ist dabei die Bellen alle paar Sekunden. Der andere ist nur darauf warten für mich, um die Leertaste zu schlagen. Und wenn ich die Leertaste schlagen, es wird sich ändern der Zustand dieser Variablen der Wert dieser Variablen, das anscheinend genannt "stummgeschaltet" Ich habe dich nicht gerufen es etwas langweilig wie n, Ich nannte es ein englisches Wort, "stummgeschaltet". Von 1 auf 0 oder von 0 bis 1 ist. Von true in false oder false auf true. Und so können Sie tatsächlich sehen jetzt, dass Sie konnte zwei Skripte haben, zwei Programme gleichzeitig laufen, und beide könnten sitzen in einer Schleife, etwas zu tun. Warten auf das menschliche zu tun etwas wie das Schlagen der Leertaste. [SEAL BARKING] David J. MALAN: Und jetzt er ist auf dem Weg wieder. [SEAL BARKING] David J. MALAN: Also, was sonst könnten wir mit diesen Beispielen? Nun, lasst uns gehen Sie vor und machen eine Beispiel mit Schäfchen zu zählen. Wir werden dies nach dem Vorbild hier weiter von-- öffnen wir die Schafe Beispiel. Und beachtet, ähnlich wie zuvor, dieses, Gott sei Dank, ist ein bisschen weniger nervig. Sobald ich auf Play hier-- Oh nein, das ist ärgerlich. Er ist baa gehen mit einiger Wahrscheinlichkeit. Wir spielen diese wieder ein. [SCHAFE BLEETING] DAVID J. MALAN: Der einzige Unterschied ist, wir haben das Kostüm gewechselt, so zu sprechen, und wir halbieren und sagen was das tatsächliche Zahl ist. Nun lasst uns gehen Sie vor und nehmen diese einen Schritt weiter. Und lassen Sie mich necken Sie mit eine andere Funktion hier. Fahren wir fort und eröffnen ein Programm namens Themen. So viel, wie Sie können eine haben Sprite mit mehreren Skripten, Sie können zwei Sprites, ein Vogel in haben eine Katze, die jeweils ihre eigene Schrift. Und jeder von ihnen kann gleichzeitig arbeiten. Wenn Sie jemals gehört habe das Wort "Multithreading" ein Computer "multithreaded" bedeutet es können mehrere Dinge gleichzeitig zu tun, und in der Tat, so kann zu kratzen. Und jetzt merken, der Vogel ist irgendwie dumm. Es ist einfach, Dinge zu tun zufällig, abprallen den Bildschirm. Klar, dass die Katze programmiert wurde zu Art haben Fähigkeiten suchen zu Hause in der Vogel weil er ist immer auf ihn gerichtet. Bis schließlich, er fängt die eigentliche Vogel. So dass ich nicht auf die Details zu wohnen hier, aber man kann Art von Einblick die gleichen Formen, einige "Wenn" Bedingungen, einige Variablen, vielleicht ein paar Loops, sind letztlich das gleiche tun. Nun lassen Sie mich gehen Sie vor und öffnen bis etwas ganz anderes, einige von euch besonders ärgern, diejenigen, komfortabler, was kann man eigentlich damit zu tun. Ich werde weitermachen und eröffnen Knopf hier. Und das ist ein super einfach anmutenden Programm, aber schau, was passiert Sehen Sie, was, wenn I-- passiert, wenn ich öffnen Sie diese Version davon, hier im Browser scratch.mit.edu. Und wenn ich auf diesen großen roten Taste, bemerken, was passiert. Also, was ist denn hier los? Es gibt tatsächlich eine Menge mehr Komplexität geht unter der Haube, auch wenn ich realisiert habe diese, oder ehrlich gesagt, Dan Bradley hat dies so einfach umgesetzt werden. Er hat eine eigene Scratch-Puzzle entworfen Stück, als Scratch-Erweiterung bekannt, er nannte es Toggle. Und was sehen tut, ist es sendet eine Nachricht über das Internet. Und diese Botschaft selbst sieht ein wenig kryptisch. Aber auch dies, werden Sie verstehen, durch den Begriff Ende. Die Botschaft, die er ist tatsächlich das Senden sieht ein wenig so etwas wie dieses. Es ist nur Text. Cryptic. Sie werden es mit der Zeit verstehen wir bekommen das Problem eingestellt sieben. Es ist nur das Senden einer Textnachricht über das Internet an einen Server. Und die Server letztendlich im Gespräch mit dieser Glühbirne, die hat eines dieser Phantasie Glühbirnen in, dass, selbst, spricht mit dem Wi-Fi-Netzwerk in der hier wo ein lokales Gerät nach unten hier-- und schließlich ist es eigentlich Drehen, dass das Licht an und aus. Aber wir können noch mehr tun interessante Dinge noch. Beachten Sie, was für uns getan hat Dan auch. Er machte mehrere Sprites, die jeweils das eine Skript wartet auf einen Klick. Und wenn ich auf rot, geht es rot. Wenn ich blau, geht es bläulich. Grün, gelb, orange. Und all dies geschieht, wird durch gehen Weg aus auf das Internet, wieder hier unten, um die Glühbirne, ein und aus. Und wenn Sie glauben, es-- und das ist vielleicht eine der komplexesten Scratch Projekte jemand implemented-- er tat es, in Fairness, an einem Tag. Und das war die Herausforderung, der wir warfen Dan als wir sahen, haben binäre Glühbirnen, wie wir Scratch, können wir kombinieren? Und in der Tat ist dies absolut etwas, was jeder in diesem Raum tun konnte, von Semester end-- Ist er neu implementiert binären Glühbirnen mit die gleiche Schnittstelle, die war auf unserer iPad am Mittwoch. So dass jetzt, wenn ich tatsächlich klicken Sie auf das Plus hier, Wir haben ein, zwei, drei. Ich kann die 16 getroffen und drehen, dass man auf. 128, und so weiter. Nun, wenn das allein hat und geblasen, Geist Sie könnten die Dinge weit mehr zugänglich machen, keine Hardware mit Sicherheit. Nur Dinge auf dem Bildschirm selber. Und in der Tat, was die meisten Studenten am Ende tut, ist eine Art von Spiel, einige Stück der künstlerischen Arbeit, oder eine Art von interaktiven Animation. Und ich werde sagen, einer der unseren Favoriten ist diese. Und ich dachte, wenn wir konnte die Lichter dimmen, wir einen Blick auf diese letzte nehmen Scratch Projekt abschließend. Aber das, was Sie beachten sollten, wie Ich kann Ihnen mit einem letzten Detail zu necken, Schnitte in der nächsten Woche beginnen. Bürozeiten in der nächsten Woche beginnen. Problem Null gesetzt werden veröffentlicht CS50.harvard.edu später heute. Und Sie werden begrüßt werden in Problem Null gesetzt auf CS50 eigenen Zamyla Chan, der führt die meisten unserer Komplettlösungen. Das sind eingebettete Videos in den Problemsätze dass Ihre Hand durch eine Menge halten der Ersteinrichtung und durch viele der möglichen Design-Entscheidungen. Also, wenn Sie jemals dieses Gefühl hatte bei der Abholung eine Hausaufgabe und frage mich, wo soll ich anfangen? Sie wird die Antwort für Sie. Und jetzt, eine endgültige Programm von einem Ihrer Vorgänger in Antwort auf die Frage "Was hat der Fuchs gesagt?" [MUSIC YLVIS, "WAS SAGT DER FOX sagen?] YLVIS: (Gesang) Hund geht Einschlag. Katze geht miauen. Vogel geht tweet und Maus geht quietschen. Kuh geht moo. Frosch geht Krächzen. Und der Elefant geht toot. Enten quaken sagen und Fisch gehen blub. Und die Dichtung geht ow ow ow, aber es gibt einen Sound, der niemand weiß, was hat der Fuchs sagen? Und David J. MALAN: Das ist es für CS50. Wir werden Sie sehen, Puzzle Tag und am Montag. [Applaus] [MUSIC YLVIS, "Was bedeutet die FOX sagen?"] SPRECHER: Und jetzt tief Gedanken, von Daven Farnham. Heute habe ich in der Treffer Gesicht mit einem Telefonbuch. Verwirrend, da ich bei online beobachten.