[Powered by Google Translate] [ROCK MUSIC]
[MUSIC - "HAPPY TOGETHER" Die Schildkröten]
DAVID MALAN: Heute beginnen wir unsere Erkundung des
Grundlagen der Informatik und unsere Einführung,
Jetzt, zur Kunst des Programmierens, von denen das ist
nur ein Beispiel.
Aber in die gleiche Richtung der Problemlösung, wissen, dass
CS50 traditionellen Puzzle Day ist morgen.
Falls Sie noch nicht für diese Veranstaltung RSVP haben, können Sie zu gehen
cs50.net/rsvp.
Sie bringen können Teams von zwei oder drei oder vier.
Sie werden mit Problemen wie die, die Sie sahen angefochten werden
dort oben in der Anfang.
Alle neuen Problemen in diesem Jahr, wenn Sie im letzten Jahr nahmen, und Sie
eine Chance dann einige tolle Preise zu gewinnen.
Unter ihnen, eine Wii und einige Geschenkgutscheine und ähnliches,
Alle während hanging out mit CS50 Studenten und Klassenkameraden
Pizza und Facebook.
Also mehr dazu morgen, wenn Sie möchten.
>> Dies ist dann CS50, für diejenigen von euch zu uns für die
erste Zeit.
Und wissen, dass dies natürlich besonders bestimmt, um
Sie durch diesen Kurs zu ihrem endgültigen Ende, an welcher Stelle Sie
wird nicht nur ein Verständnis von diesen haben
Grundlagen der Informatik, aber Sie müssen
Diese sehr praktische Fähigkeiten, die Sie dann zurück zum
Ihre eigene Abteilung, ob es sich um Ingenieurwissenschaften,
Angewandte Mathematik, die Naturwissenschaften, natürliche
Wissenschaft oder dergleichen.
In der Tat, was ist so spannend Informatik dieser
Tag ist, dass es nur so für ist
alle Arten von Feldern.
Und auch wenn heute, werden wir nur an der Oberfläche kratzen a
sehr traditionellen Programmiersprache wie C bekannt, schreiben wir
stattdessen an etwas namens Scratch suchen, etwas mit
welche das Cookie Liebesgeschichte wurde von einem Ihrer umgesetzt
Vorgänger in den vergangenen Jahren, Geschichten zu erzählen, um Spiele zu erstellen,
um interaktive Kunst zu schaffen, und tatsächlich beginnen, unsere wickeln
Köpfe um einige der grundlegenden Konstrukte,
zugrunde liegen, Programmierung, sondern in einem Kontext, wie Sie sehen werden, ist das
viel weniger beängstigend, das ist viel weniger geheimnisvoll, als Sie werden sehen,
es dauerte nicht lange.
Und klar, auch für diejenigen von euch nur zu uns dies
Semester, die Phrasen, auf dem wir am Ende Mittwoch Vortrag,
ist es nicht so wichtig, wenn Sie in Bezug auf Ihre enden
Klassenkameraden in dieser Klasse, aber wo man von Semester Ende
in Woche 11, am Ende relativ gleich selbst noch heute.
>> So ohne weiteres ist dies auch erwähnenswert, dass
die weniger komfortabel, die irgendwo dazwischen,
auch durch die Gestaltung von diesem Kurs keine Nachteile
vis-a-vis die mehr Komfort
Kommen in diese Klasse.
Wie Sie in den nächsten Wochen sehen zu kommen, haben wir verschiedene
Tracks für unterschiedliche hintergrund, Abschnitte für diejenigen,
weniger komfortabel, komfortabler, die irgendwo
dazwischen.
Wie Sie sehen an diesem Wochenende und nächste Woche, zwei Versionen
die meisten Problemstellungen sowohl in Standard-und Hacker-Ausgabe so
dass Sie alle können selbst wählen den Pfad hinunter, mit dem Sie
sich am wohlsten fühlen.
>> So wir heute in diese Programmierung tauchen
Sprache namens Scratch.
Es ist eine grafische Programmiersprache, und doch hat es die
gleichen Funktionen einiger der höheren Programmiersprachen wir
entdecken später im Semester, darunter C und
JavaScript und PHP.
Aber es wird uns erlauben, einige der Ablenkungen zu vermeiden
früh auf der Syntax, Dinge wie Semikolons, Klammern,
und andere obskure Details, die auf den ersten Blick einfach nicht
überhaupt intellektuell interessant und neigen dazu, in sich
die Art und Weise von einem grundlegenden Verständnis.
Im Hinblick auf die jetzt die Trägerstruktur voraus, erkannte dies
Werkzeug, CS50 Diskutier, das auf den Verlauf des verknüpft wird
Website im Laufe des Tages ist das Online-Diskussionsforum in
die Sie in der Lage sein, Fragen von einander zu stellen und
Mitarbeiter, und es ist auch ein Werkzeug, wie wir sehen werden nächste Woche,
dass wir sehr integrativ nutzen,
Bürozeiten als gut.
Tatsächlich beginnt der Bürozeiten am Montag, und ehrlich gesagt, die erste
Woche der Bürozeiten ist ziemlich low key.
>> Ich glaube nicht, dass Sie Scratch alles, was unzugänglich zu finden.
Es ist ziemlich selbsterklärend, wie wir sehen werden, und so was
wir werden es heute verwenden, ist für einige der zu extrahieren
grundlegende Ideen, die dann in der gesamten anhalten wird
Rest des Semesters.
Aber ab Montag, um 08.00 Uhr über 23.00 Uhr werden
Sprechstunden in Annenberg über Gehirn Pause.
Schneiden zwei beginnt an diesem Abend, so irgendwann in diesem
Wochenende, cs50.net/section gehen, und du wirst
werden gebeten eine Reihe von Fragen.
Unter ihnen, wie würden Sie beschreiben Ihre
Komfort von heute?
Es gibt keine harten, schnellen Regel, wer in dem Eimer.
Es ist genau die Art von Sache, die Sie wahrscheinlich wissen, wenn Sie
gehören zu denen, die weniger komfortabel oder anderweitig.
>> Und nun Komplettlösungen.
Das Problem Die Spezifikation für diese Woche, sowohl Standard-
und Hacker-Ausgabe gleichermaßen, ist cs50.net Online ab sofort.
Und du wirst sehen, dass die erste dieser Ausgaben, die
Standard Edition jede Woche, wird durch etwas begleiteten wir
rufen Sie einen Code Komplettlösung, führte eine Sitzung von einem der
Natürlich Lehre Stipendiaten führen Sie durch, bieten
Tipps und erhalten Sie unten einen bestimmten Weg, wenn es darum geht,
Beginn dieser Problem-Sets.
Also mit jedem dieser Probleme stellt, wenn Sie jemals wollen sind
Sie selbst, wo soll ich anfangen, beginnen Sie mit diesen
Komplettlösungen.
Und in der Tat, lassen Sie mich Zamyla Chan, diese einzuführen
Jahr der Lehre Kerl, leiten wird jeder und jede
eine dieser Lösungen.
Zamyla?
>> [Applaus]
ZAMYLA CHAN: Oh, hallo, everyone.
Mein Name ist Zamyla.
Ich bin ein Junior Ingenieurstudium in Winthrop House.
Aber ich versuche, und passen in viele Informatik Kurse wie ich
kann, ist die, warum ich bin wirklich gespannt darauf, was diese
Jahr Komplettlösungen.
Komplettlösungen für mich, waren ein wesentlicher Teil meiner CS50
Erfahrung.
Während der Komplettlösung für jeden p-Reihe, wir durchlaufen
das Problem gesetzt zusammen, schauen über die Probleme, Art der
unterteilen Sie diese in überschaubare Häppchen.
Ich gebe Ihnen Tipps, Techniken für immer
durch und Einstieg.
Ich hoffe, Sie alle bei den Komplettlösungen zu sehen.
Wenn Sie es nicht persönlich, dann
bitte tune in online.
>> DAVID MALAN: Excellent.
Danke, Zamyla.
So erkennen, dass Komplettlösungen sind in der Tat an einem Freitag
Nachmittag, aber dies ist absichtlich mit Designs, so dass
auch wenn Sie lieber nicht an Klasse an einem Freitag
Am Nachmittag werden die Videos werden bis umso schnell über
das Wochenende.
So klar, dass cs50.net werden alle Zamyla der sein
Komplettlösungen.
Und dass es das heutige Datum und Uhrzeit, 03.00 Uhr,
Harberd Hall, 104.
Und einige der Lehre Stipendiaten haben auch bereit
einige Anmerkungen für Sie in absentia, um Ihnen ein bisschen
Perspektive, was ihre Erfahrung kommen in und
Ausgehen des CS50 war wie.
Also, wenn wir schalten Sie das Licht nur für einen Augenblick, ich gebe Ihnen
einige der CS50-Mitarbeiter.
>> JACKSON STEINKAMP: Ich habe CS50 im vergangenen Jahr als Freshman in der
fallen, und es absolut blies meinen Verstand.
Ich hatte nie irgendwelche Programmierung Klassen genommen vor,
und kam nie mit einem Computer Science
Erfahrung überhaupt.
Und nur, ich hörte das Summen über die Klasse und
beschlossen, es zu nehmen.
>> JULIA Mitelman: Es war wirklich lustig, wirklich einnehmend.
Ich immer noch bis zum heutigen Tag -
Ich habe vor kurzem sah ich die Diskette, die David gab uns
am ersten Tag der Vorlesung.
Ich hatte es an meiner Wand hing.
Dies ist wahrscheinlich ein wenig nerdy, aber ich hing in meiner
Wand während die Klasse als Erinnerung daran, wie cool es war.
>> TRAVIS DOWNS: Es ist so peinlich.
>> JACKSON STEINKAMP: Informatik ist etwas, das Sie
sollten versuchen, auch wenn Sie nicht ein für sind
die traditionellen Wissenschaften.
Es ist seine eigene Erfahrung und CS50 wird sicherstellen, dass Sie
auch durch ihn mit seinem Heer von TFs unterstützt.
>> ALI Nahm: Ich nahm es als ein Neuling, und so machte ich eine Menge
neue Freunde.
Ich habe auch dieses ganze Konzentration und eingeführt
gesamte Schule der Technik, und so empfehle ich es
und begrüßen Sie zu unserem CS50 Familie.
>> Yaniv Yacoby: CS50 nur lehrt, wie man Werkzeuge verwenden
das sind allgemein zugänglich.
Sie brauchen nur einen Laptop, benötigen Sie einen Web-Browser, und Sie
müssen lernen, einige Code schreiben, und man kann wirklich bauen
nette Dinge.
>> KAREN XIAO: Es ist nur so cool in der Lage sein, etwas zu machen
und haben Leute benutzen es und haben die Menschen sehen es, und das ist
was ich wirklich liebe darüber.
>> TIM MCLAUGHLIN: - ein Gefühl von Gemeinschaft, glaube ich, in diesem
natürlich mehr als jedem anderen Kurs, die ich bisher getroffen habe.
Sie sind nicht nur unter anderen -
Sie füllt nicht eine weitere Forderung.
Sie sind nicht einfach so zu Vorträgen und gehen Sie im Abschnitt.
Aber du tust Tonnen von Dingen, die sind alle über
Programmierung und alles über Technik, aber es funktioniert nicht
wirklich wie eine Klasse fühlen sich die meisten der Zeit.
>> TRAVIS DOWNS: Und am ersten Tag, übergab sie Kuchen und
Ich war sofort verkauft.
>> JACOB PRITT: Free Süßigkeiten und Pizza.
>> ZAMYLA CHAN: - unabhängig von Ihrer Zinsniveau, ich glaube,
dass CS50, haben Sie Spaß, und du wirst intellektuell
stimuliert.
>> MARK Grozen-SMITH: Es ist immer eine Partei in der Klasse, und es ist ein
Partei jede Nacht die Arbeit an Ihrem p-Set.
>> JACKSON STEINKAMP: Jedes Mal, wenn Sie fertig sind ein Problem Set, Sie
fühlen sich wie Sie ein Projekt abgeschlossen haben.
>> MELISSA NIU: Es war Freshman Jahr, und ich wurde Einkäufe erledigt.
Ich hatte meine vier Klassen bereit, und ich war in Annenberg.
Und ich stoße einen Freund, und er sagt, hey, ich bin einkaufen
Diese Klasse namens CS50, und Sie sollten mit mir kommen.
Endete Einnahme, die fallen, und nach dieser Klasse I
dachte, vielleicht bin ich zu geringfügigen gehen in CS.
Aber hier bin ich, drei Jahre später, immer noch studiert Computer
Wissenschaft und tatsächlich tun es als eine große, und ich liebte jede
Moment davon.
>> ROB BOWDEN: Ich habe keine Ahnung.
>> ALI Nahm: Mal sehen.
>> MELISSA NIU: Craziness.
>> Sprecher 1: Ich fühle mich wie sehr Klischee wäre.
Ich möchte nur sagen, wie, awesome.
>> Yaniv Yacoby: Barrierefreiheit.
>> JACOB PRITT: Free Süßigkeiten und Pizza.
>> TRAVIS DOWNS: Kann nicht ausschlagen eine Klasse, die Hände Kuchen.
>> TIM MCLAUGHLIN: Energetic.
>> Vipul Shekhawat: Essential.
>> ROB BOWDEN: Lassen Sie mich eine Antwort nachzudenken.
Ich glaube, ich habe etwas.
Oh, Gott.
Ja, mein Name ist Rob Bowden, und dies CS50.
>> [Applaus]
DAVID MALAN: All right, so beginnen wir ein Bild malen
der Richtung, in die wir gehen können und wir stellen
dieses Konzept hier als Pseudocode bekannt.
So Pseudocode ist keine Programmiersprache
Sprache für sich.
Es ist nichts technischen per se, aber es ist nur eine Art von
allgemeine Weise, sich auszudrücken ziemlich genau,
ziemlich algorithmisch, ziemlich prozedural, aber ohne
zu müssen, um welche Sprache Sie ausdrücken Sorgen
Sie in.
Es ist einige Modelle der englischen und Programmiersprachen mit
die Sie vertraut sein passieren, so dass wir beginnen können
schriftlich diese Art der Sache, wie wir gehen.
Und in der Tat, Joseph, ich könnte leihen Sie sich auf der Bühne zu sein
Schreiber hier?
Ich habe es hier weiter im Voraus gegangen und vergessen zu setzen
auf einigen Socken heute, und das wird unter unseren mehr sein
lächerliche Beispiele.
>> Nun, ich brauche dich hier.
Ich werde tun, die Socken Teil.
Hier haben wir also ein wenig Notizblock.
Das ist buchstäblich nur in einer Mac TextEdit.
Wir sind nicht wirklich nach ein lauffähiges Programm zu schreiben, aber
wir gerade anfangen zu skizzieren Pseudocode basierte
auf einige der Ratschläge, die Sie mir hier.
So, hier ist meine Stapel Socken zu Hause.
Ich habe keine Socken an, wenn ich aufwache am Morgen, und wir haben jetzt
müssen Sie ein Programm schreiben, einen Algorithmus von Sorten, mit denen
um diese Socken an den Füßen zu bekommen.
Und auf dem Weg, lasst uns sehen, ob wir stolpern oder stoßen,
einige der Ideen, dass Sie gehen zu müssen, starten
Nachdenken über viel mehr ernst, wenn die Programmierung
damit Ihre Programme verhalten sich nicht ganz so gedacht.
>> So sitze ich hier unten.
Ich habe meine Stapel Socken.
Was ist das erste, was ein vernünftiger Mensch tun würde
tun, wenn das Ziel ist, an einem Paar Socken angezogen?
Mir jemand ein Schritt, und nur ein Schritt.
Yeah?
PUBLIKUM: bücken.
DAVID MALAN: Bücken, Okay.
Schritt zwei.
PUBLIKUM: Nehmen Sie Ihre Socken.
DAVID MALAN: Nehmen Sie Ihre Socken.
Okay, ist so gering, Ambiguität hier, und dies ist eines der ersten
Stolpersteine, dass wir sollen gezielt
stoßen hier.
Es ist ein wenig zweideutig, so holen Sie Ihre Socken.
Fein, ich nehme dieses, sondern ein Computer, in nur einer klar
bit, wird nicht diese Art von menschlicher Instinkt einfach
wählen Sie die nächste ein.
Wir werden damit beginnen, es dauerte nicht lange, mit dem Ausdruck
uns genauer.
>> Alles klar, also Schritt zwei ist abholen Socke.
Wir nehmen es.
Schritt drei.
Im Rücken.
PUBLIKUM: Finden Sie ein passendes Paar.
DAVID MALAN: Finden Sie passende Paar.
Okay, so ist dies gut.
Ich musste diese Socke wählen.
So ist das Ziel, eine passende Socke zu finden, jetzt, aber was
bedeutet das?
Eine vernünftige Menschen, ähnlich wie am Mittwoch, als ich gerade
wusste, wie man Mike Smith in einem Telefonbuch zu finden, nur eine Art
gingen mit ihren Instinkt.
Aber hier ist es natürlich diese Socke hier, aber ein Computer ist
nicht zu sein, so instinktiv.
Ein Computer wird eine Sammlung von Bits haben, wie wir
diskutiert am Mittwoch, und das sind
irgendwie im Gedächtnis organisiert.
Aber der Punkt ist, dass ein Computer nur die Fähigkeit besitzt
auf Dinge, die man in einer Zeit sehen, und in der Tat, auch wenn wir
Menschen - auch wenn es, wie ich nach unten schaute und eine geteilte Ansicht
Sekunden später weiß ich, wo die Socke ist, mein Gehirn und meine Augen
Vermutlich hat eine schnelle jener Socken überfliegen, und dann verriegelt
auf dem in Frage.
>> Wenn wir also umso bewusste nun als einen Computer,
wie finde ich dieses Matching Paar?
Nun, wir haben zu durchlaufen.
Wir müssen vielleicht Schleife über dieses Durcheinander von Socken über die
Boden, wodurch ich etwas sagen wie FÜR JEDEN Socke, holen sie
auf, und wenn die gleiche Form und Größe wie die andere, DANN
Punkt, Punkt, Punkt, werden wir weiterhin die Geschichte.
Also für jeden Socke, so nehme ich diese ein.
Ich prüfe diese gleich diesem ein.
Es ist nicht, so dass ich beiseite Seite.
Dann habe ich wieder durchlaufen.
Ist das ein gleich?
Nein, es ist nicht der Fall, so habe ich es beiseite.
Ist das ein?
Nein.
Dieses?
Nein, und so weiter.
Und dann endlich, hoffentlich werde ich diese Socke hier antreffen.
Also, wenn es die gleiche Form, Größe ist, nimm es.
>> Und nun, was wäre der nächste Schritt hier zu sein?
Yeah?
PUBLIKUM: Identifizieren rechts von links.
DAVID MALAN: Okay, identifizieren rechts und links, so
Glück, diese Art von Arbeiten.
Ein wenig symmetrisch, oder ich habe gerade getragen sie auf diese Weise.
Alles klar, also habe ich das Recht identifiziert.
Und nun, bevor wir fortfahren, lassen Sie mich darauf hinweisen, was Joseph
hier getan als eine Art versierte Programmierer.
Also noch einmal, es gibt keine ein Weg dies zu tun, aber mehr als nur
Nummerierung der Linien, hat Joseph bereits begonnen, dies zu tun
Art Einbuchtung.
In der Tat ist dies eine sehr allgemeine Konvention in der Programmierung,
wodurch dann, wenn Sie etwas tun, iterative, Looping Stil, wie
wir mit dem englischen Ausdruck "für jeden was bedeutet,
Socke, "die Konvention in Pseudocode und, wie wir sehen werden,
normalen Programmiersprachen ist nur Gedankenstrich.
Drücken Sie die Leertaste ein paar Mal, drücken Sie die Tab-Taste oder dergleichen,
so dass verschachtelte unter "FÜR JEDEN Socke" ist das Stück
Sachen, die Sie als Ergebnis dieser Schleife tun müssen.
Also das ist alles, was Fördern semantisch ist.
Nun unterdessen die "Wenn es die gleiche Form und Größe ist," die
Tatsache, dass "Take it" ist eingerückt weiteren bedeutet nur,
das ist die einzige Sache, die Sie, wenn diese Bedingung tun sollte,
wenn der Zweig, dass Gabel in der Straße, ist in der Tat wahr.
>> So, jetzt hier, wir Schritt vier sind, zu identifizieren rechts und links.
Ich habe richtig identifiziert.
Gib mir Schritt fünf.
Und technisch gesehen, könnten wir wirklich nennen
der für jede Sache -
Sie sollten wahrscheinlich nummerieren Sie alle Zeilen, wenn
werden wir dies tun.
JOSEPH: [unverständlich]
DAVID MALAN: [unverständlich]?
Okay, gut, alles in Ordnung, wir tun es auf deine Weise.
Alles klar, also Schritt fünf, wie machen wir das Recht Socke?
Wie gehen wir nächsten gehen, hier?
Ja?
PUBLIKUM: Heben Sie das rechte Bein.
DAVID MALAN: Heben Sie das rechte Bein, Okay.
Schritt sechs?
Schnell.
Yeah.
PUBLIKUM: Finden Sie eine offene Ende der Socke.
DAVID MALAN: Okay, finden das offene Ende der Socke.
So gut.
Also hier, ehrlich gesagt, würde eine sehr häufige Instinkt nur sein,
legte auf der rechten Socke, aber auch das ist ziemlich eindeutig.
Wenn der Computer oder menschliche weiß genau, was das bedeutet,
es wird nicht zu sein, daß auszuführen, so dass hier, ich habe
fand die Eröffnung der Lager.
Schritt sieben?
PUBLIKUM: Berühren Sie Ihre Zehen.
DAVID MALAN: Touch Zehen.
Okay, jetzt gehen wir -
Alles klar, werde ich einige Freiheiten hier stattfinden.
Thanks.
Schritt acht?
Setzen Sie auf Socke.
Okay, so dass ich jetzt denke, wir sind nah genug an der nehmen sortieren
dieses zu Hause.
Alles klar, so dass diese nach oben geht.
Ich werde einige Freiheiten mit dem, was es bedeutet, zu nehmen, eigentlich.
Legen Sie die Socke auf.
Alles klar, jetzt Schritt neun?
PUBLIKUM: Legen Fuß nach unten.
DAVID MALAN: Danke.
Schritt neun, legte Fuß nach unten, und jetzt können wir wiederholen.
Daher ist anzunehmen, können wir nun in Schritt 10 gehen und sagen zu identifizieren
linke Socke, aber das ist vermutlich schon getan.
>> Und so ist, dann kann ich wiederholen Sie diese Schritte zu sortieren.
Aber diese Art von wirft die Frage auf.
Bevor das letzte Mal wollten wir etwas wiederhole, wir
tat es iterativ immer wieder, dass eine FOR
Jede Schleife sozusagen.
Würde es Sinn machen, um eine Schleife zu verwenden, um sowohl umgehen
die linke und die rechte Socke?
Da es sich anfühlt, diese Operationen so ziemlich
identisch bis auf die Tatsache, daß man hier und man beginnt
Hier beginnt?
Haben wir Schleife, oder haben wir nur halten schriftlich Schritte
10 und 11 und 12?
PUBLIKUM: Loop.
>> DAVID MALAN: Okay, so Schleife.
Ich tatsächlich gesagt haben könnte just keep going.
Also, warum ist das so?
Nun, das ist eigentlich das erste unserer nicht-offensichtliche
Design-Entscheidungen, und in der Tat, einer der Metriken, mit denen
wir beginnen zu bewerten, für uns und für Sie als
Qualität eines Programms ist nur so gut konzipiert ist.
Haben Sie die minimale Menge an Arbeit notwendig zu tun
die Arbeit erledigt die meisten schnell, entweder in Form von
Ihre Zeit oder in Form des Computers Laufzeit?
Wie viele Operationen dauert es auszuführen?
So wohl, ist dies eine Gelegenheit für eine Schleife, weil
Sobald ich beginne Kopieren und Einfügen, wie Joseph effektiv
würde tun beginnen in einem Moment, du bist Art verschwenden Ihre
Zeit, und du bist als doppelt ausdrucksstark.
>> Aber zur gleichen Zeit, sind diese wirklich nur zwei spezielle
Fälle, links und rechts.
Und während vor, ich hätte vielleicht 10 oder 20 oder mehr Socken
ein Haufen, macht es durchaus Sinn nicht zu 50 Zeilen haben
Code sagen check this Socke, dann wird die nächste,
dann wird die nächste.
Hier ist es ein bisschen weniger offensichtlich, und ich würde vorgeschlagen
dass wir so oder so.
Wir könnten entweder die Schleife, obwohl es Schleifen nur
zweimal, oder wir könnten einfach kopieren und einfügen nur ein wenig
hier, um den Job zu erledigen.
Aber dieses Programm fehlerhaft ist, so zu sprechen.
Es könnten einige Fehler, Irrtümer oder Ecke Fällen, so zum
sprechen, dass wir nicht wirklich rechnen.
Nichts ging schief dieser Zeit, aber was könnte falsch gelaufen sein
Beim Ausführen dieses Programms?
PUBLIKUM: Sie haben noch keine Socken.
>> DAVID MALAN: So könnte es keine Socken dort immer.
So betrachten wir diese Ecke Fall.
Wenn wir also zurück konnte scrollen, um einen Schritt, so Schritt war
bücken, so dass die Kontrollen.
Schritt zwei, nimm deine Socken, aber dann die passende Socke,
identifizieren rechts.
Wir Art machte eine ganze Reihe von Annahmen, und das ist,
ehrlich gesagt, warum Programm manchmal zum Absturz.
Wenn Sie der Programmierer wurden bestimmte Annahmen, wie aus
sicher es geht um Socken oder doch es geht sein
in den Speicher des Computers übrig sein, sicher es geht
Speicherplatz auf der Festplatte übrig bleiben -
Nun, wenn Sie machen diese Annahmen, und das ist nicht,
in der Tat, die Wirklichkeit, wer weiß manchmal, was der Computer
tun?
Und manchmal, wenn man die Spinnerei Beachball oder die
gefrorenen Windows oder dergleichen, die, gerade weil es einige
Programmierer nicht rechnen diese sogenannte Grenzfälle.
Was sonst könnte gegangen in diesem Programm falsch gemacht haben?
Yeah?
>> PUBLIKUM: Sie haben keinen rechten Bein und ein linkes Bein.
DAVID MALAN: Okay, vielleicht nicht sowohl ein rechtes Bein und eine
linkes Bein, und so das Programm möglicherweise nicht universell sein,
anwendbar.
Andere?
PUBLIKUM: Sie hat möglicherweise ein Waisenkind Socke abgeholt.
DAVID MALAN: Ich hat möglicherweise ein Waisenkind Socke abgeholt, so dass eine
nicht passenden Socken, die gerade hat keine Geschwister, weil ich
verloren, es zerrissen ist, ist es in der Wäsche noch, oder dergleichen.
Also das hat auch nicht wirklich behandelt.
Yeah?
PUBLIKUM: Möglicherweise schon Socken an.
DAVID MALAN: Ich könnte schon Socken an.
Ich habe nicht wirklich zu überprüfen.
WENN Sie nicht Socken, dann gehen Sie zu tun
Linie eins und zwei.
Und das könnte passieren.
Sie schlafen mit Ihrem Socken und dergleichen, so
Das ist auch eine sehr vernünftige Ecke Fall.
Und vielleicht eine andere?
PUBLIKUM: Der Strumpf ist innen heraus.
DAVID MALAN: Also die Socke ist innen heraus, so haben wir keinen Fehler
Prüfen, kurz.
Wir haben nicht prüfen, ob der Zustand der Welt ist, wie wir erwarten.
Wir wussten nicht ob wir gefunden, was wir eigentlich suchen.
>> Und obwohl dies eine Art lächerlichen beispielsweise
mit Socken, am Ende des Tages, ist dies genau die
Art Denkweise müssen Sie haben, während das Schreiben von Programmen,
auch in Scratch sowie in C, in JavaScript, PHP,
denn sonst werden Ihre Programme weisen die
entspricht dieser Spinning Beachball oder einfach nachgeben
ungenauen Ergebnissen.
Also vielen Dank hier, um unsere Schreiber Joseph.
[Applaus]
>> DAVID MALAN: All right, so was ist, in
Tatsächlich ein Computerprogramm?
Nun, lassen Sie uns einen kurzen Blick auf eine
Vertreter hier.
Das ist also ein Programm in einer Sprache namens C. C ist geschrieben
ziemlich alt in diesen Tagen, aber viele neuere Sprachen gebaut
oben drauf.
In der Tat, PHP, einer der Web-centric Sprachen wir
verwenden zur Laufzeit das Ende, hat sich, was als ein
Dolmetscher, ein Programm, das in C geschrieben ist, aber mehr dazu
in vielen Wochen ab jetzt.
Aber dieses Programm, und das ist, was es zu einem Schreiben heißt
Programm, wenn auch ein sehr einfaches.
Wir haben einige ziemlich kryptische Syntax hier, aber du kannst
wahrscheinlich erraten, auch wenn Sie noch nie programmiert haben, was
dieses Programm macht.
In der Tat, ich weiß nicht, was printf, aber gedruckt sicherlich
beschwört die Idee der Druck etwas heraus.
Und so ja, wird dieses Programm letztendlich gehen ausdrucken
die Worte "Hallo, Welt".
>> Nun, ob Sie einen Mac oder einen PC oder einen Linux-Rechner, odds
sind, zumindest, wenn Sie einige heruntergeladen frei
verfügbare Software, könnten Sie wurden schriftlich Programme auf
Ihren eigenen Laptop seit geraumer Zeit.
Auf Mac OS, zum Beispiel, gibt es dieses Programm aufgerufen
Terminal, das mit einem Mac, die in der Regel ist in Ihrem kommt
Ordner Dienstprogramme, und es in der Regel öffnet sich ein schwarz-
weiß oder weiß und schwarz Fenster, an dem Sie einen
aufgefordert, an dem Sie Befehle eingeben können.
Also das ist eigentlich das erinnert, was Computern
verwendet werden, um vor der grafischen Benutzeroberfläche sein
Schnittstellen, GUIs, kam.
Nun, in Windows, Sie haben einen ähnlichen Mechanismus in Form
der Eingabeaufforderung.
>> Aber was ich hier zu tun ist öffnen, sagen wir mal,
TextEdit wieder, so das gleiche Programm wurden wir für den Einsatz
Pseudocode vor einem Augenblick, und ich werde weitermachen und
schreibe meine erste Programm.
Include stdio.h, was immer das bedeutet, int main
Leere, was immer das bedeutet, und dann in der Mitte hier,
printf ("Hallo Welt."). Und schließen Sie dann zitieren,
schließen paren, Semikolon.
Jetzt werde ich nach vorne und drücken Sie einfach Command-S gehen. Ich werde
gehen Sie vor und speichern Sie diese als hello.c, so die Konvention in
die Welt der C-Programmierung ist benennen Sie die Datei dot c.
Ich werde nur im John Harvard Home-Verzeichnis gesetzt,
Hier klicken Sie auf Speichern, und jetzt werde ich gehen über dies
Terminal-Fenster, das wiederum ist schwarz und weiß prompt
wo kann ich Befehle ausführen.
>> Ich kann Programme, indem Sie ihren Namen laufen, nicht durch
Doppelklick Symbole im üblichen Sinne.
Aber die Sache ist zu C ist, dass eine Sprache wie C erste
kommt in dieser Form als etwas Quellcode.
Etwas, das ein wenig aussieht wie Englisch, ist aber
definitiv weniger wie Englisch als Pseudocode a Josephs
vorhin.
Es ist ein wenig mehr geheimnisvoll.
Es scheint einige Muster oder Regeln zu befolgen.
Die Tatsache, dass ich geschweiften Klammern, Semikolons, Zitate, haben
Winkel Klammern, fühlt sich wie ein Computer kam mit dieser
Art von Sprache.
Aber wenn ich jetzt, zu diesem Terminal-Fenster zu gehen, kann ich einen
Befehl, werde diesen Quellcode umwandeln IS
etwas namens Objekt-Code.
Das wird Deutsch-ähnliche Syntax, um Nullen konvertieren
und diejenigen, die gleiche Art von Nullen und Einsen wir
gesprochen Mittwoch.
Nun, ich werde einen Befehl namens Clang laufen.
Mehr dazu in den kommenden Wochen, aber es ist ein Programm mit
die ich umwandeln kann in eine ganze Reihe hello.c
von Nullen und Einsen.
>> Nun, ich habe diesen Befehl auszuführen.
Ich habe Clang laufen, und dann sagte ich laufen selbst auf diese Datei
genannt hello.c, welches ich vor einem Augenblick, und
Nichts scheint zu passieren.
Aber in der Tat, wenn ich um mein Home-Verzeichnis steckte, würde ich sehen,
dass diese blöde benannte Programm a.out jetzt existiert.
Dies ist nur der Default-Name für ein Programm beim Schreiben in
C. Wir können dies schließlich überschreiben, aber a.out ist die
Name des Programms, Ich habe gerade umgebaut Nullen und Einsen.
Und jetzt, da es Nullen und Einsen, mein Mac, in diesem Fall, oder
Ihren Windows-PC, kann verstehen, jene Bits, diese
Nullen und Einsen.
Und so, wenn ich Enter drücken, sehe ich "Hallo Welt!"
>> Aber es ist ein bisschen buggy.
Ich wusste nicht genau sagen "Hallo, Welt: Luft: - jharvard." Die Luft ist
der Name meines Computers.
Jharvard ist der Name des Kontos, so was habe ich deutlich
weglassen aus dem Programm?
Irgendeine Art von Zeilenumbruch.
Ich habe nicht das Äquivalent von Enter oder die Zeilenschaltung getroffen,
und dies ist wiederum Beleg für die Tatsache, dass Computer kann
nur tun, was man von ihnen erzählen.
Und die Tatsache, dass ich nicht sagen dem Computer, bewegen Sie den
Cursor in die nächste Zeile -
Nun, es ist sicher nicht einfach machen
presumptuously für mich.
Also, wenn ich zurück in mein Programm, und ich sage \ n -
So \ n, wie wir bald sehen werden, ist der Weg der
vertreten seltsame Dinge wie neue Zeile Zeichen, Dinge
das wäre sonst die Folge sein
Schlagen Sie die Enter-Taste.
Aber jetzt weiß nur, dass die Eingabetaste gedrückt haben würde
nur machen unseren Code seltsam aussehen, so dass die Welt entschieden, wissen Sie,
was, um die Dinge schöner, um es auf einer Linie zu halten, lassen Sie uns
nur sagen \ n eine neue Zeile.
Lassen Sie mich erneut speichern meine Datei, gehen Sie zurück zum Terminal-Fenster und
re-run a.out, Enter.
Noch buggy, aber warum?
>> PUBLIKUM: [unverständlich]
DAVID MALAN: Yeah, so muss ich es neu kompilieren.
So ein Programm zu kompilieren bedeutet nur, wandeln sie von der Quelle
Code zum Objektcodes, Quellcode zu Nullen und Einsen.
Nun hat die bloße Tatsache, dass ich in diesem TextEdit getroffen Speichern nicht
trägt auf diese Nullen und Einsen, weil ich muss zuerst
tell Clang hey, habe ich diese Zeilen Code geändert, die
Quellcode.
Sie müssen a.out regenerieren.
Nichts scheint passiert zu sein, aber in einem Computer,
in einer Befehlszeile, um so zu sprechen, wenn nichts passiert,
das bedeutet in der Regel alles ist gut.
Wenn etwas passiert, bedeutet dies,
Sie durcheinander, in der Regel.
>> Also lasst uns jetzt gehen, um a.out, und in der Tat, jetzt habe ich "Hallo,
Welt ".
Und nun, was über diese Nullen und Einsen?
Wobei in der Tat sind die?
Nun, ich kann nicht wirklich nur eine Art Sack um sehr
wirksam.
Lassen Sie mich eröffnen TextEdit.
Hier ist a.out.
Lassen Sie mich gehen Sie vor und öffnen Sie diese, und das ist offenbar, was meine
Programm aussieht.
Also habe ich eröffnet, nicht hello.c, aber a.out.
Aber das ist eigentlich nicht das, was mein Programm wirklich ist.
Natürlich ist dies eine Art der alphabetischen Zeichen.
Ich sehe keine Nullen und Einsen, aber dies ist
weil a.out ist ein Programm.
Nullen und Einsen - aber TextEdit, wie der Name andeutet, ist es
wie Notepad unter Windows, ist nur ein Text-Editor, so ist es
verwirrend alle diese Nullen und Einsen als
wären sie, was?
ASCII-Zeichen.
>> So am Mittwoch erinnern, wir haben gerade kam mit dieser
beliebige Zuordnung von Zahlen, oder Bits, um Buchstaben des
Alphabet und Satzzeichen und dergleichen.
So TextEdit, dass es ein Text-Editor ist falsch interpretiert
diese Muster von Nullen und Einsen, die eigentlich als werden
Druck Wörter, wie "Hallo, Welt". Es zeigt sie
als ASCII, und deshalb ist es ein wenig chaotisch aussieht.
Nun, es gibt einige Hinweise auf die Richtigkeit hier.
Beachten Sie, wenn ich hervorheben, gibt es einen Hauch von Wirklichkeit "Hallo,
Welt ", so irgendwo in diesem Programm ist
der Satz, den ich geschrieben habe.
Aber lassen Sie uns fortfahren und jetzt mit einem anderen Programm zu sehen.
Dies ist nicht, was wir so oft verwenden werden, aber es kommt auch mit
a Mac und wird innerhalb des CS50 Gerät sein.
Lassen Sie mich gehen Sie vor und öffnen Sie mit einem Programm namens XXD.
>> Zurück in den Tag, wurden die meisten Programme benannt ziemlich kryptisch,
und so der Trend anhält.
Aber-b bedeutet, spuckte dieses Programm als binär.
Sie es nicht ausführen.
Zeigt es mir, als Nullen und Einsen, und dies ist der C
programmieren wir gerade geschrieben haben.
Nun, ich als Mensch hier, ich ehrlich gesagt keine Ahnung, was
diese verschiedenen Muster von Nullen und Einsen zu repräsentieren.
Zurück in den Tag, ich mit meinen Lochkarten oder dergleichen, würde
tatsächlich zu schauen, was diese verschiedenen Mustern
01111000, eigentlich darstellen.
Oder schlimmer noch, brauche ich, um das Stanzen oder die Schöpfung zu tun
dieser Muster von Nullen und Einsen.
Aber jetzt, auf dem Glauben, dass eine CPU, Intel inside, so nehmen
zu sprechen, innerhalb der alle unsere Computer in diesen Tagen, weiß
wie diese Nullen und Einsen zu interpretieren.
Und einige Nullen und Einsen bedeuten Druck.
Einige Nullen und Einsen bedeuten, einen Ton abspielen.
Einige Nullen und Einsen bedeuten, nehmen Benutzereingaben aus einer Tastatur.
Es gibt alle Arten von verschiedenen Mustern, aber wir glücklicherweise
als Menschen, nur müssen in der Regel über die Programmierung bei Sorgen
dies ziemlich höheren Niveau.
Und in anderen CS-Klassen können Sie eintauchen tiefer und schauen
Dinge wie diese Nullen und Einsen, oder noch
anderem noch.
>> So, jetzt lasst uns wandeln diese.
Lasst uns sehr schnell weg von C und etwas einem zu bewegen
wenig mehr tröstlich, ein wenig mehr spannend, dass
können wir wieder unsere Animationen und Sounds und dergleichen, dass
deutlich entkommen uns dabei haben
ziemlich primitiv Schnittstelle.
Also das gleiche Programm in C können jetzt in diesem vertreten sein
Programmiersprache namens Scratch wie folgt.
Dies ist das Äquivalent dieser Hallo Welt Programm, geschrieben in
Diese Puzzleteil style Sprache namens Scratch.
Also lass mich gehen Sie vor und öffnen diese sehr Programms.
Es ist erneut aufgerufen Scratch.
Es ist frei verfügbar und das ist das gleiche, was wir
Starten Sie noch heute an.
>> So ist das hier Scratch, und es ist bis in ein paar gebrochen
verschiedenen Stücke.
Ganz oben rechts, haben wir die sogenannte Stufe und
ja, das ist, wo die Cookies
durchgeführt nur ein bisschen her.
Und auf der Bühne werden Dinge genannt Sprites, Zeichen oder
Objekte oder Entitäten.
Es spielt eigentlich keine Rolle, wie Sie an sie denken, aber sie
programmierbar sind, bewegliche Sachen, und in diesem Fall, diese
Programm, dass unser Student schrieb hat ein paar Lebkuchen
Cookies, ein paar runde Kekse, eine ganze Reihe von
Herzen, eine ganze Reihe von Brillen.
Aus diesem Grund ist er oder sie in der Lage, jedes dieser programmieren
einzelne Zeichen getrennt.
>> Nun, was bedeutet es, diese Zeichen zu programmieren?
Nun, lassen Sie mich gehen Sie vor und klicken Sie auf diesen linken Cookie
und blättern Sie auf die linke obere hier.
In der linken oberen meines Bildschirms ist jetzt die
sogenannte Script Bereich.
Dies ist eine Art unbeschriebenes Blatt, zunächst, auf die ich kann
Drag & Drop Puzzleteile, die, ehrlich gesagt, zu tun
genau das, was sie sagen.
An der Spitze dieses Stapels der Puzzleteile ist das Wort
Wenn Green Flag Clicked, und wenn Sie nicht vor bemerken,
die Art und Weise begann ich das Cookie Lied wurde Anklicken, buchstäblich,
eine grüne Flagge.
Damit Puzzleteil oben links gibt es, wenn die
menschlichen klickt auf die grüne Fahne, ging zu tun
die folgenden Dinge.
>> Nun, was haben sie Cookie gehen zu tun?
Ich weiß wirklich nicht, wie man dies noch zu interpretieren, aber die
Cookie offenbar eingestellt seiner Nut auf Null, dann wartete er
3 Sekunden, dann wechselte er seine Gruppe zu einem, dann ist es
wartete eine Sekunde, dann änderte es seinen
Nut zurück zu eins.
Und dann dies tatsächlich aussieht wie ein bisschen wie ein Bug, sollte nicht
muss die Nut wieder und wieder zu ändern, wenn es
anderswo verändert, aber diese Reihe von Schritten ist, was
diktieren das Verhalten dieser besonderen Cookie.
Lassen Sie uns also tatsächlich wieder rollen und nicht etwas anschauen
ganz so komplex und doch.
Lassen Sie mich gehen Sie vor und gehen Sie zu Datei, Neu,
und eine weiße Weste.
>> So, jetzt habe ich tatsächlich ein leeres Skript-Bereich, eine leere Bühne,
mit unseren Standard-Sprite Scratch und in der oberen linken
auf meinem Bildschirm habe ich die Palette aller ihrer
verfügbaren Puzzleteile.
Und wir werden nicht durch fast, dass viele dieser Dinge
heute, weil, wieder sind die meisten selbsterklärend, aber wir werden
versuchen, sie zu kategorisieren und weisen darauf hin, die Ähnlichkeiten
mit diesen zukünftigen Sprachen, die wir tauchen.
Und oben links hier ist das erste Bei Green Flag Clicked,
so lass mich ziehen diese hier, Verkleinern ein bisschen.
Und wenn ich die grüne Fahne klicken, nichts wirklich passiert, weil
Ich habe keine Logik angebracht, jede Aussage so zu sprechen,
, dass grüne Fahne, so lass mich gehen bis zum
Kategorien hier.
Ich bin derzeit in der Kategorie Steuerung.
Ich bin stattdessen hingehen bis zur Looks Kategorie und
gibt es eine ganze Reihe von Dingen hier sagen, dass Sprich
Denken, Farbe ändern, Switch Kostüm.
>> So können Sie dumme Sachen mit Kostümen zu tun und
Töne und dergleichen.
Lassen Sie mich gehen Sie vor und nur sagen, Sag mal, und jetzt feststellen, wie ich ziehen
Drop dieses Puzzleteil, es gehen zu wollen, zu verriegeln
in die entsprechende Form hat.
Also, wenn ich voran gehen und ließ meine Maus, sperren sie
zusammen, und jetzt, wenn ich gehe rüber und klicken Sie auf die grüne Fahne,
die Katze hat in der Tat sagen, hallo, weil das ist, was drin ist
dieses weiße Feld.
Wir werden bald sehen, dass diese weißen Kasten ist, was genannt
Argument oder ein Parameter ist.
Es ist eine Möglichkeit der Änderung des Verhaltens von, in diesem Fall, ein
Puzzleteil, aber wenn ich will, genau zu sagen, was ich gesagt
vor, sagen, hallo, Welt, kann ich jetzt gehen Sie zurück hierher,
Klicken Sie auf Wiedergabe, und "Hallo Welt" ist, was die gesagt.
>> So sind wir buchstäblich die Programmierung jetzt.
Es ist gar nicht so überzeugend eines Programms, aber zumindest
es ist ein wenig zwingender als etwas, das sieht
den ersten Blick, wie diese.
Und wir können sehr schnell umso expressive bekommen
denn in Scratch, wie in anderen Sprachen, es gibt alle
Arten von Aussagen, nicht einfach sagen oder Druck etwas, aber
Sie können Dinge wie das Warten zu tun, wie wir sahen, nur mit
das Cookie, eine gewisse Anzahl von Sekunden.
Sie können Geräusche in der Umgebung von Scratch spielen nur
wie kann man in einem normalen Computer-Programm play sound.
Sie können prüfen, was sind boolesche Ausdrücke genannt.
So, jetzt fangen wir an unsere Toolkit einige Begriffe hinzufügen
dass tatsächlich bezieht sich auf das Beispiel, dass Joseph und ich habe
hier mit den Socken.
So Aussagen sind nur Aussagen über Tatsachen.
Tun Sie dies.
Eine Richtlinie für das Sprite oder mich der Mensch, etwas zu tun.
Ein boolescher Ausdruck ist etwas, das einen Wert hat, ein
sogenannte Wahrheitswert, die entweder eine Null oder Eins, falsche oder
wahr, ein-oder ausschalten, nein oder ja.
Spielt eigentlich keine Rolle, wie Sie dies zu denken, aber es ist ein
binären Zustand.
Als Nate diskutiert am Mittwoch im Video, zwei
verschiedene Dinge.
>> So in Scratch passieren boolesche Ausdrücke zu suchen
wie diese blaue Objekte hier, und in diesem Fall ist die Frage
mark bedeutet, dass Sie eine Frage zu stellen.
Ist die Katze oder das Sprite, berühren Sie den Mauszeiger?
So ist dies nur ein Beispiel für einen Scratch-Block, geht
uns zu erlauben, ja oder nein zu überprüfen, ist die Maus berühren die
Sprite auf dem Bildschirm?
Und dies kann nützlich sein, wenn Sie wirklich wollen, Dinge zu tun
mit der Maus.
Neben Boolesche Ausdrücke haben wir die Dinge
wie ist die Maus nach unten, so können Sie erkennen, dass die Art von
Frage als gut.
Wir können tun, Mathematik, wenn Sie wirklich wollen, und es gibt
eigentlich mehr überzeugende Anwendungen für diese als nur ein reines
Arithmetik, wie wir sehen werden.
Pseudo Zufälligkeit und Ihre Programme scheinen zu denken,
oder verhalten sich unterschiedlich auf einigen scheinbar zufälligen Werten,
und dann haben wir Dinge wie Boolesche Ausdrücke wie AND.
Also, wenn Sie wirklich wollen, um zwei Werte zu überprüfen, werden wir sehen, in
Scratch, dass wir tatsächlich testen, ob dies
wahr und das ist wahr.
Zum Beispiel im Fall von meiner Socken, konnte ich an der habe
ganz am Ende die Frage gestellt, ob linke Socke ist und rechten Socke
auf, aufzuhören.
Sie alle sind für den Tag fertig, so das wäre ein zu
Gelegenheit.
>> Also lasst uns weitermachen und versuchen, einige dieser zusammenzusetzen
und in ein paar Beispiele mehr gehen
zwingender als diese.
Also lass mich gehen Sie hier und eröffnen einige der Beispiele
das wird immer auf den Kurs der Website als gut und
eröffnen hello2.
So in hello2 hier haben wir ein Programm, das tut ein paar ist
Dinge, aber es macht es nicht so effektiv, wie wir könnten.
Also hier heißt es "Hallo Welt" für eine Sekunde und dann wartet
für eine Sekunde.
Und dann tut es wieder, und dann tut es wieder.
Also, wenn ich die grüne Fahne klicken, Scratch sagt: "Hallo, Welt.
Hallo, Welt.
Hallo, Welt. "Und das ist offensichtlich Kandidaten jetzt
Verbesserung.
>> Was ist der marginale Verbesserung, hoffentlich können wir
jetzt machen, wenn Scratch unterstützt das Konzept?
Irgendeine Art von Schleife.
Irgendeine Art von Wiederholung, jetzt wäre es schön, so lassen Sie mich
tatsächlich versuchen.
Lassen Sie mich eigentlich gehen und bewegen diese.
So Ankündigung können Blöcke so leicht lösen wie Sie hinzufügen können
fixieren.
Lassen Sie mich unter Kontrolle zu gehen, nach unten scrollen Sie hier, und zwar
es ist das Puzzleteil hier wiederholen und immer und
Immer If.
So gibt es eine Reihe von Möglichkeiten zum Ausdruck Schleifenkonstrukte
in Scratch.
Der, den ich wahrscheinlich wollen hier nicht immer, weil ich nur
wollen, dass dies drei Mal passieren, aber wahrscheinlich wiederholen.
Also lass mich ziehen wiederholen hier, Drag & Drop, und
Jetzt anstatt zu sagen "Hallo Welt" drei unterschiedlichen Zeiten,
lass mich ziehen Sie diese Puzzleteil hier.
Und obwohl es nicht zu passen scheint, ist das Programm Smart
genug zu erkennen, es wird wachsen zu füllen, so ist es die
Formen, die Materie und nicht die absolute Größe.
Lassen Sie mich ändern die Wiederholung bis drei, und jetzt lass mich gehen
vor und ziehen eine Sekunde warten dort als gut.
Es wird in sowie einrasten, und jetzt werde ich ziehen
diese Jungs hier und werfen sie einfach weg, weil ich
brauchen sie nicht mehr.
Lassen Sie mich Verkleinern und klicken Sie auf die grüne Fahne jetzt, und wir haben
das gleiche Programm, aber, wie ich schon besser vorausgesagt
entwickelt, weil Sie sich vorstellen können, wie schlimm dieses Programm
würde sicherlich ästhetisch, wenn Sie hatten
Start Kopieren und Einfügen, Kopieren und Einfügen oder
Drag & Drop die gleichen darn Dinge wieder und wieder.
>> Nun, einfach zu sagen, Sachen auf dem Bildschirm, Druck auf die
Bildschirm, wirklich alles nicht so aufregend, so öffnen wir ein
dritten Varianz hier.
Und nun, wie Sie sehen werden, wird dies schnell nervig -
[Meow]
DAVID MALAN: - aber es ist auch irgendwie süß.
[Meow]
DAVID MALAN: Okay, so besser, und wir können sicherlich, dass
gleichen Übergang von Chunking diese in eine Endlosschleife
Struktur, aber wir machen es noch interessanter.
>> Lassen Sie mich gehen Sie vor und eröffnen ein Viertel Varianz hier, wo ich
nehmen die Dinge einen Schritt weiter.
Also nach diesem dummen obwohl dies auf den ersten
Blick ist, was dieses Programm tun?
Es ist zu miauen gehen einmal.
Warum?
Nun, man ist, soweit ich weiß, immer weniger als zwei.
Es gibt keinen Begriff der Zufälligkeit hier.
Ich habe buchstäblich hartcodierte eins und zwei, aber dies ist eine
Beispiel jetzt tatsächlich mit einem booleschen Ausdruck.
Ähnlich wie wie Joseph in seinem Pseudocode, die Vertiefung IF
Sie passenden Socken führen Sie dann die folgenden, hier haben wir
ein Ausdruck, wenn man weniger als zwei THEN -
und in der Tat haben wir sogar ein wenig Einzug,
wo die lila ist leicht nach rechts eingerückt -
Dann wirst du den Sound meow spielen.
Nun wird in diesem Fall ist das eine stets kleiner als zwei ist, so dass diese
ist eine Art Verschwendung von einer Bedingung.
Aber wir werden in der Lage sein, wie wir sehen werden, auf andere Dinge stecken in
diese Platzhalter, wo eins und zwei sind jetzt.
So lasst uns nun beispielsweise fünf dieser Mehrere Advance
hellos und schauen, was dieses Programm tun wird.
>> So, jetzt in einem englischen Satz, wie funktioniert das
zu verhalten?
PUBLIKUM: Meows Hälfte der Zeit.
DAVID MALAN: Meow der Hälfte der Zeit, so ist dies ein Weg,
Fördern einer sehr einfachen Idee.
Auch wenn wir gerade verwenden einige Ungleichheiten hier
in einigen Zahlen, das ist wirklich nur eine programmatische
Weise eine präzise Weise zu sagen, wenn die Münze kommt Köpfe, gehen
voraus und meow.
Oder umgekehrt, wenn die Münze kommt Schwänze, nicht meow.
Und in diesem Fall, wie können wir ausdrücken, dass?
Wir werden eine Zufallszahl von 1 bis 10 auswählen, und wenn das
Zahl kleiner als 6, gehen Sie vor und meow.
Und wie kam es hier reingekommen?
Wieder gut, bemerken nur die Drag & Drop-und
Dinge einrastet.
>> So, jetzt lasst uns sehen, ob dies Zufall funktioniert.
Lassen Sie mich gehen Sie vor und klicken Sie auf die grüne Flagge.
[Meow]
DAVID MALAN: Okay.
[Meow]
DAVID MALAN: Okay.
Okay, gut, so dass wir Köpfe, Köpfe, Schwänze effektiv.
Tails.
[Meow]
DAVID MALAN: Heads.
[Meow]
DAVID MALAN: Excellent.
Es ist immer peinlich, wenn nur statistisch Sie eine schlechte bekommen
laufen, und es ist alle Köpfe, und das Programm eigentlich gar nicht
arbeiten, wie Sie hoffen würden.
Aber dieses Mal, es funktionierte, und wir scheinen zu haben, wenn wir es
Dieses eine unendliche Anzahl von Malen, 50% Chancen.
Jetzt wieder, nicht so interessant, nur machen Katzen
meow, also lasst uns sehen, ob wir nicht ein bisschen weiter voranbringen kann
Hier in der Version sechs.
So, jetzt haben wir wirklich ärgerlich Version -
[Miaut alle paar Sekunden]
DAVID MALAN: - und das ist das, was bekannt ist, allgemein als
Endlosschleife.
>> So Endlosschleife in diesem Fall fühlt sich schlecht.
Es ist definitiv zu starten klingen schlecht, und doch unendlich
Schleifen sind nicht immer schlecht.
Können Sie Zusammenhängen zu denken in der Computer-Programme, wo man möchte
eigentlich wollen eine Endlosschleife?
Yeah?
PUBLIKUM: Wenn Sie eine Bedingung überprüfen möchten.
DAVID MALAN: Okay, wenn Sie immer mal eine Bedingung wollen?
Wie, was?
PUBLIKUM: [unverständlich]
DAVID MALAN: Okay, gut, also, wenn Sie irgendein Programm hatten, einige
Art von Home Automation Sache, wo Sie wollen ständig
Monitor ist etwas der Fall ist.
Sind die Lichter an?
Sind die Lichter an, weil Sie vielleicht einen Timer haben, und
Sie wollen, dass sie gehen, müssen Sie etwas tun
immer wieder.
Und in der Tat, sprechen von Timern, die haben jemand von euch
Uhren auf Ihrem Computer oder digitale Uhren, das ist eine
Endlosschleife.
Es geht um die Zeit zu aktualisieren, weil sie ständig ist
Überprüfung und Kontrolle und Überprüfung weist der Zeit verändert,
und wenn ja, oh, mein Gott.
Die Uhr ist endlich geändert.
Es muss angezeigt werden diesen Wert zu Ihnen.
Während also die meiste Zeit Endlosschleifen sind ein Fehler,
oder zumindest einem schlechten Design-Entscheidung, manchmal tun sie
haben ihren Wert.
>> Nun, lasst uns hier weiter voranzutreiben, um hello7.
So, jetzt wird das Programm ein wenig mehr interaktiv.
Lassen Sie mich hier zu vergrößern, und wieder ist es das, was ist schön
über Scratch.
Und wir werden es verwenden, um klare, Scratch, nur heute und in sein
nächste Woche das Problem eingestellt.
Aber am Montag haben wir in C. tauchen In diesem Programm hier, es tut,
immer, die folgenden.
IF Berühren Sie den Mauszeiger - jetzt, wer ist der
Kontext hier?
Tja, und beachten Sie, dass die hier unten ist unten gewählt
rechts ist die Katze, Sprite ein, so dass diese Skripte, diese
Programm, gilt für ihn spezifisch.
Also, wenn die Katze berührt den Mauszeiger, dann wird es
dies herunterzuspielen und zwei Sekunden warten, und
wiederholen Sie dann bis zum Überdruss.
>> Also lasst uns weitermachen und auf Play.
Es passiert nichts, aber wenn ich zu streicheln die
cat Jetzt kann ich einfach.
[Meow]
DAVID MALAN: Adorable.
[Meow]
DAVID MALAN: Okay, weniger störend, sondern bekommt auch langweilig,
also lasst uns weitermachen und sehen, ob wir nicht spritzen
ein wenig mehr Logik.
Das war beispielsweise sieben.
>> Hier im Beispiel acht, wir zu gehen
Einführung eines ELSE Bedingung.
So viel wie eine wörtliche Gabel in der Straße, in der man gehen kann
links oder Sie können gehen, ein Zustand, in einer Programmiersprache
Sprache wie Scratch, oder wie wir C zu sehen, ermöglichen es Ihnen,
gehen in eine oder andere Richtung über eine ZF-ELSE konstruieren.
So ganz wörtlich, wenn bei Berührung Mauszeiger diese
wird einige Sound zu spielen, ELSE es geht um diese andere spielen
Klang, meow.
Nun, wenn Sie aus dem Namen dieser Klänge entnehmen kann, können Sie
wahrscheinlich erraten, was dieses Programm gedacht ist zu zaubern
die Idee.
Diese Katze ist glücklich Miauen.
[Meow]
DAVID MALAN: Glücklich, aber nicht
ganz gerne berührt werden.
[ROARS]
DAVID MALAN: So, jetzt haben wir eine Katze, die auf dich anschreien wird.
>> Alles klar, nun, ein letztes Beispiel mit Katzen hier, und
Lassen Sie uns offene Version neun dies hier.
So, jetzt haben wir die nächste nervigste Geräusch, das ich konnte
zu finden, so haben wir ein Walross oder Seelöwen hier, um sich geht
Gehen Sie folgendermaßen vor.
[SEAL BARK]
DAVID MALAN: Okay, so wird dies fort, bis Sie herausfinden, wie
dieses Programm funktioniert.
Also dieser Zeit hat dieses Tier zwei Skripte, und was ist
Interessant dabei ist, dass diese Skripte gehen zu führen
parallel.
So, weil sie beginnen beide mit einer grünen Flagge geklickt haben,
Es ist wie so, und beide Programme starten läuft es
einmal, auch wenn sie immer Looping.
So in der oberen script, ich habe eine gewisse Logik.
Welche Funktionen bietet, dass bieten dort oben?
[SEAL BARK]
PUBLIKUM: [unverständlich]
DAVID MALAN: Wenn es was?
[SEAL BARK]
PUBLIKUM: Wenn stumm auf Null, es geht zu spielen halten die
klingen. [SEAL BARK]
DAVID MALAN: Okay, gut.
Also, wenn gedämpft, was auch immer das ist, diese orange Sache ist Null,
Dann spielen die Seelöwen Ton und denken: "Oh,
hallo, "für zwei Sekunden.
Nun, ich weiß nicht, was stumm geschaltet ist, aber Null zaubert die
Idee der falschen oder ausschalten.
Also, wenn stummgeschaltet falsch ist, also, wenn nicht ausgeschaltet ist,
weiter spielen den Sound.
Alles klar, na ja, wie wir deaktivieren Sie diese Sache?
>> Nun, lasst uns an der zweiten script dort unten schauen.
Das zweite Skript sagt gesetzt stumm auf Null.
Beachten Sie, es ist auch orange, so was Scratch tut, ist es Farben
Blöcke im gleichen Farbton, wenn es irgendwie
logisch verbunden.
So wie stumm up top Orange war, so ist stummgeschaltet hier unten
erwähnt in orange Block.
Aber dies ist ein Variablenzuweisungen, so genau wie in
Algebra, Sie haben x und y und z, in der Programmierung haben Sie
Variablen, aber sie sind in der Regel -
Lassen Sie uns einen Moment innehalten und Gestalt, wie
diese Bellen zu stoppen.
Wie mache ich das?
[SEAL BARK]
DAVID MALAN: Okay.
Es hat aufgehört. Okay.
>> So wie in der Algebra Sie Variablen x, y und z haben, aber in
Programmieren, mit Variablen wie x, y, und z im allgemeinen
verpönt, weil sie überhaupt nicht expressive sind.
Sie haben keine semantische Bedeutung überhaupt, so in den meisten
Programmiersprachen können Variablen haben die volle
ausgewachsenen Namen oder Wörter oder Phrasen, wie gedämpft, zu sagen
was sie tun.
Also das zweite Skript wurde auch immer zuhören, und sie sagte,
wenn der Schlüssel, die Taste auf der Tastatur Platz ist
gedrückt, Fragezeichen.
So gibt es eine Bedingung mit einem booleschen Ausdruck, ist
geht um eine Frage entweder wahrheitsgemäß oder falsch zu beantworten,
dann habe ich innerhalb es, wenn die Leertaste gedrückt und
IF stummgeschaltet ist Null gesetzt stummgeschaltet, um ein, ELSE gesetzt stumm auf Null.
Also das andere Gabel in der Straße, und bemerken, wie ich habe
verschachtelt die beiden IF-Bedingungen, ist eine Möglichkeit der Überprüfung wird die
Space Bar gepresst, denn wenn dem so ist, möchte ich entweder diese gehen
So oder so.
Und wie komme ich zu invertieren den Wert stummgeschaltet?
Ich habe zu überprüfen, ist es Null?
Wenn ja, machen es zu einem, sonst machen es Null daher wechseln
seinen zwei Zuständen.
>> Alles klar, also haben wir dann einige dieser grundlegenden
Konstrukte.
Wir haben boolesche Ausdrücke und zu realisieren, sind auch diese
nicht alles, was fremd ist.
In der Tat, hier ist eine schnelle Screenshot von Harvard Kurses CS50
Shopping-Tool und eine Website gibt, die Checkboxen hat
und Drop-downs haben wirklich die ganze Zeit, wurde mit
Boolesche Ausdrücke.
In diesem Fall hier, wenn Sie auf das Kontrollkästchen neben
Natürlich größer oder gleich 4,5, oder die gleiche neben
Fakultät, du bist die Angabe eines booleschen Ausdrucks.
Zeigen Sie mir Kursen, für die dieser Ausdruck wahr ist.
Oder rechts, nicht in Konflikt mit Kursen bin ich
einnehmen, wenn das aktiviert ist, dann ja, das Sie überprüfen möchten
dass diese Bedingung, was Sie wollen, es zu ignorieren.
So Boolesche Ausdrücke sind eine Art rundum, aber wenn
wir setzen sie unter Bedingungen, ob IF-Bedingungen, IF
Elses, oder wir können noch tiefer simulieren
Ebenen, IF ELSE IF ELSE -
so das ist eine Art von ternären Zustand.
Sie können diesen Weg gehen oder so oder so.
Wir halten nisten Unternehmungen in verschiedene Richtungen gehen.
>> So Scratch hat diese Loops, wie immer.
Es hat diese Funktionen wie Repeat 10, einige
endliche Anzahl von Malen.
Wir haben die Fähigkeit nun Variablen gesetzt, so in diesem Fall
Ich habe erklärt, zum Beispiel eine Variable namens Socken.
Ich habe mit 0 initialisiert, und das ist noch eine andere Richtung
konnten wir hier oben haben mit Joseph genommen, wobei ich vielleicht
nur verfolgen, wie viele Socken habe ich auf und beenden
das Programm, wenn dieser Variablen den Wert 2 ist.
Das wäre eine andere Art zu Art Verallgemeinerung sein, dass
Problem und etwas wieder und wieder.
Nun, lasst uns gehen Sie vor und führen nun ein paar neue Dinge.
So diejenigen von Ihnen mit vorheriger Programmierung Erfahrung wird
wissen, dass eine Menge von Sprachen Matrizen oder Vektoren oder
Listen, und in der Tat hat Scratch etwas wie dies auch.
Also lasst uns sehen, ob wir nicht die Dinge auf die nächste Ebene hier.
Wenn ich die Möglichkeit haben, jetzt, mit dieser Puzzleteile
etwas hinzufügen, wie ein Wort oder eine Zahl, zu einer Variablen, kann ich
beginnen, die Dinge zu sammeln.
Und das ist eigentlich ziemlich apropos für Dinge wie Spiele,
Rollenspiele, wo Sie sind irgendwie herumlaufen
einige Fantasy-Welt sammeln Dinge, Kommissionierung Dinge,
Punkte zu sammeln, oder dergleichen.
Vielleicht möchten Sie den Überblick über eine Art Bestandsaufnahme zu halten, und
ja, das ist, was eines unserer ehemaligen Studenten hier haben
etwas namens Fruitcraft RPG.
>> Also lass mich gehen Sie vor und öffnen diese Sache hier, und in
Fruitcraft, haben wir diese Welt bis an der Spitze.
Also lass mich gehen Sie vor und klicken Sie auf die grüne Flagge.
Unsere oben links ist eine Art Inventar.
Das ist in Scratch als das, was wir eine Reihe anrufen oder umgesetzt
eine Liste, und jetzt haben wir diese kleine Animation.
So wie wir früher begonnen mit diesem Cookie Liebesgeschichte,
und dann haben wir weiterentwickelt, um Katzen und Seelöwen, jetzt können wir über
Dinge, die noch mehr interaktiv sind.
Und diese kleine blaue Kerl, kann ich beginnen, um seinen bewegen
wenig hier zu Hause.
So wie er hat einen Ausgang hier unten sieht, so bin ich mit
die Pfeiltasten, oben, unten, links, rechts.
Und jetzt bin ich draußen, so lassen Sie das, was ich hier habe.
Sieht aus wie eine Orange, und zwar sobald ich den Touch-
orange, wird es in meinem Inventar plumpste.
Wenn ich hier rüber gehen zu den Kirschen, jetzt habe ich etwas
andere in meinem Inventar.
Und das ist alles schön und nett, aber darüber nachdenken, wie nun dieser
umgesetzt wird.
Nun, wir haben diese Vorstellung von einer Liste, und das ist offenbar ein
Puzzleteil, dass Sie gerade sagen, was Sie wollen hinzufügen, fügen Sie
orange, fügen Kirschen.
Nun ist, was diese kleinen blauen Kerl tut?
Nun, er ist ein Sprite.
Und vermutlich, die orange und die Kirschen -
sie selbst waren separate Sprites.
Und mit Bedingungen in boolesche Ausdrücke, die
Student war wahrscheinlich in der Lage zum Ausdruck zu bringen, wenn Blue Kerl ist
Berühren Kirschen fügen Sie dann die Wort Kirschen zu seinem
Inventar, und dann auch verstecken die Kirsche Sprite.
So unter der Haube, hat es wahrscheinlich noch eine Kirsche
Sprite gibt.
Wir haben es gerade gesagt, dass sich praktisch unsichtbar.
>> Nun, wenn ich zu Fuß über hier zu halten, können wir dies auch tun,
proximal Sache, wo ich hingehe und las das Schild.
Also, wenn blauen Kerl berühren Zeichen, können wir sagen Block
wie die Katze zu uns sprach in Worten, hallo, früher, "Got
etwas Obst?
Bringen Sie es zu den Früchten Ort. "Alles klar, so dass nun offenbar
Ich habe meine Richtungen.
Ich kann gehen hier auf die Frucht Platz, Linie mich auf
mit der Tür.
Nun, ich bin hier.
Ich kann gehen bis zu dem Mann an der Theke.
Er erkennt, dass ich ihm nahe bin, so dass es nicht sein müssen
ganz gleich berühren, und ich habe das Spiel gewonnen.
So, da haben wir Fruitcraft RPG.
>> So können wir Dinge tun, noch fortschrittlichere als diese.
Wir können hinzufügen, Sounds.
Wir können hinzufügen, pseudo Zufälligkeit.
Wir können die Komplexität erhöhen.
Lassen Sie mich gehen Sie hier, und anstatt dies tun mir,
lassen Sie mich Ihnen eines der anspruchsvollen Einreichungen
wir haben im letzten Jahr von einer bestimmten Person namens Blake.
Können wir ein Freiwilliger, ist bequem, die auf
Kamera und ist für ein Spiel?
Wie wäre es genau dort?
Komm rauf.
Alles klar, so dass das Spiel, das Sie gerade unbewusst haben
freiwillig zu spielen -
[Applaus]
DAVID MALAN: - ist etwas von gestern aufgerufen
"Frogger". Wie ist Ihr Name?
RENDA: Renda.
DAVID MALAN: Redna?
RENDA: Es ist wie Brenda mit einem b.
DAVID MALAN: Okay, Renda.
David.
Schön, Sie kennen zu lernen.
>> Also hier in "Frogger", und wenn wir die Lautstärke zu erhöhen nur
ein bisschen, bist du dieses kleine
grünen Frosch auf dem Boden.
Sie können links, rechts, oben und unten, und Ihr Ziel ist es,
Überqueren Sie die Straße, überqueren den Fluss, und berühren Sie die Seerosen
an der Spitze.
Aw.
Eine weitere t -
wiederholen, alles klar?
Lasst hit Anschlag.
Niemand sah, dass.
[Applaus]
DAVID MALAN: Yeah.
Sehr gut gemacht.
Ausgezeichnet, danke.
>> So dass es Frogger. Nun, da Sie wissen, was du hast
bekommen euch in, eine weitere Freiwillige für eine andere
Spiel von einem anderen Schüler vorgelegt.
Sie wollen komm up?
Wie ist dein Name?
RICHARD: Richard.
DAVID MALAN: Richard.
Alle Rechte, Richard, auf bis zu kommen.
[Applaus]
DAVID MALAN: Sie haben etwas, das werde klingen
vertraut bald, so sind hier Ihren Anweisungen.
So in einem Moment werden einige Puzzleteile gehen, um nach oben
vom Bildschirm, die entweder links schauen
oder rechts oben oder unten.
Sie gehen zu müssen, um die Pfeiltasten so getroffen
dass es entspricht jenen Puzzleteile Futter mit
die Platzhalter an der Spitze.
Also, wenn Sie einen Pfeil nach links, und es reiht sich mit der linken
Pfeil traf den Pfeil nach links.
Sie können beginnen.
[MUSIC - "Stronger" Kayne West]
DAVID MALAN: All right, großen Applaus für Richard.
[Applaus]
DAVID MALAN: Sehr gut gemacht.
Danke.
[Applaus]
>> DAVID MALAN: So lustig und, scheinbar, eine Art
einschüchternd wie es sein könnte, um etwas so umsetzen
scheinbar anspruchsvoll wie diese erkennen, dass der Student
nicht festgelegt und schreiben Sie einfach das alles auf einmal.
Vielmehr können Sie brechen ein Problem scheinbar komplexe
da dies in viel kleinere Stücke, und auch dies ist
wird ein Thema sein.
Das Schlimmste, was man in ein Programm schreiben, in fast jeder tun kann
Sprache ist, sich hinzusetzen, sich wirklich aufgeregt, schreiben die
ganze verdammte Ding, und dann nur hoffen, dass es durch die Arbeiten
Mal, wenn Sie fertig sind schriftlich.
Vielmehr sollte der Prozess der Programmierung in der Regel
sehr bewusste, sehr iterative, wobei Sie nur
gesetzt sehr kleinen Schritten für euch, mundgerechte Stücke
willst du abbeißen, und so, dass Sie diese Vernunft haben
Schecks, kleine Meilensteine, die Sie treffen können.
Und dann hast du zu jenen zu bauen, um mehr zu schaffen
anspruchsvolle Dinge still.
>> So zum Beispiel, wie könnten wir gehen über
Umsetzung ein Spiel wie dieses?
Nun, ehrlich gesagt, würde ich sicherlich von nur starten
Stützen eines Schlüssels zu einem Zeitpunkt.
Lasst uns einfach implementieren die Unterstützung für den Pfeil nach links.
So dass die Schüler mussten irgendwie in Photoshop zu erstellen, oder in
Scratch selbst mit den kleinen grafischen Editor ein
Pfeiltaste, die wie ein oben sieht dort gelassen, nur
die graue Platzhalter.
Dann wird der Student hatte um herauszufinden, was x, y zu koordinieren
es ausdrückte, wo sie in das Fenster gestellt.
0, 0 ist hier oben, so müssen Sie herausfinden, die Anzahl der
Pixel oder Punkte, zu kompensieren, dass Pfeil aus
die oben auf dem Bildschirm.
Und dann noch einmal, das ist an Ort und Stelle Ihr Programm nicht wirklich
alles tun, noch, so müssen Sie dann ein zweites Sprite, für
So ein grüner Pfeil, der dabei auch auf noch übrig, und Sie
Anschließend müssen Sie mit dem Schreiben beginnen einige Skripte für sie.
>> Und Sie bemerken vielleicht, dass diese Dinge begannen am kommenden
verschiedenen Geschwindigkeiten, und die Farben waren in verschiedenen
Standorte, und das ist, weil die Studenten verwendet ein bisschen
Pseudo Zufälligkeit.
Und durch pseudo Zufälligkeit, ich meine nur abholen eine Reihe
zwischen etwas und etwas, weil du kannst
beginnen map Dinge, wie wenn die Zahl zwischen eins und
fünf, gut, machen wir die Sache grün.
Wenn es zwischen 6 und 10 ist, machen wir das Puzzleteil
rot statt.
Solange Sie haben einen Weg zur Erzeugung irgendeine Art von
Zufälligkeit, können Sie dann entscheiden auf der Grundlage dieser
Zufälligkeit.
Und ich sage immer Pseudozufallszahlen, weil es eine
kleine schmutzige Geheimnis.
Computer kann nicht kommen mit Zufallszahlen.
Sie können nur das tun, was ihnen gesagt wird, weil
sie sind vom Menschen verursachten Geräte.
Sie können nicht einfach erraten, eine Zahl wie wir Menschen
fühle mich wie wir können.
Ein Computer hat etwas mathematischer zu zaubern das tun,
Illusion mathematische Zahl, manchmal mit Hilfe der
aktuellen Tag Zeit als eine Eingabe an herauszufinden, was
Zahl zurück, sondern mehr auf, dass eine andere Zeit.
Denn jetzt weiß nur, dass wir pseudo Zufälligkeit zu erzeugen.
>> Also, wenn ich die Fähigkeit für den linken Pfeil, um zu starten
erscheinenden zu unterschiedlichen Zeiten und mit unterschiedlichen Geschwindigkeiten, dann
Ich kann gehen Sie zurück und fügen Sie einige dieser IF-Bedingungen.
IF dieses Sprite berührt die andere, und die linke Pfeiltaste
Taste gedrückt wurde -
so drei Bedingungen in diesem Fall.
Ich kann, dass und Block vielleicht in diesem Fall -
Dann will ich voran gehen und erhöhen die Punktzahl.
Und an der Spitze, haben wir eine Punktzahl, wir haben Awesome,
Cool, Gut, und Boo.
Es gibt also offenbar fünf Variablen, dass dieser Schüler
verwendet werden, um den Überblick über diese verschiedenen Metriken zu halten.
Also kurz gesagt, ist das Ergebnis erstaunlich.
Es macht Spaß, es macht Spaß zu spielen ist, ist es einnehmend, aber dies ist nicht
wo der Student begann.
Er oder sie begann auf einem viel kleineren Satz von Schritten.
>> Also, was sind einige andere Bausteine, die wir können
weben in diesen Programmen?
Nun, es ist das andere Konzept in den meisten Sprachen,
Scratch unter ihnen, bekannt als Themen an.
So kann ein Computer eigentlich nicht wirklich mehrere Dinge ein
Zeit, mindestens in der Regel nicht.
Vielmehr hat im allgemeinen ein Computer nur einer CPU und sogar
aber Computer sind super schnell und kann daher
die Illusion dabei mehrere Dinge auf einmal -
Überprüfung Ihrer Mail bekommen eine sofortige
Nachricht, Drucken eines Dokuments -
wirklich, ist ein Computer nur Springen vom Druck bis IMing
um emailing hin und zurück und vor und zurück so schnell, daß man
langsame schlagfertig Menschen einfach nicht begreifen, dass es eigentlich
laufen diese Programme ein wenig in einer Zeit.
Jetzt liegen diese ein wenig von einem weißen diesen Tagen, da heutzutage
viele unserer Computer sind so genannte Multi-Core, so dass Sie
haben eine CPU, sondern mehrere Kerne, welche Art von ist wie
mit mehreren CPUs.
>> Und so manchmal können Computer wirklich tun mehrere Dinge
zu einer Zeit, aber im Allgemeinen innerhalb eines Programms, Programme
verlassen sich auf diese Dinge genannt Fäden.
So ein Thread ist wie eine Art Miniatur-Programm, das können
existieren neben anderen Miniatur-Programm und laufen kann
parallel oder zumindest die Illusion, dass laufen
sie gleichzeitig laufen.
So Scratch unterstützt diese Dinge genannt Fäden.
Sie können mehrere Script ausführt auf einmal, so wie wir
hat mit dem Seelöwen, und dies ermöglicht es uns, tatsächlich
dann Wechselwirkungen zwischen diesen Sprites.
Lassen Sie mich gehen Sie hier und ziehen Sie, sagen wir, Threads und
spielen diese wie folgt.
Wir haben zwei Sprites, von denen jeder sehen wir
hat nur ein Skript.
Und Sie bemerken, scheint es eine Intelligenz in der sein
Katze in diesem ein, weil er immer kommt näher -
[ROARS]
DAVID MALAN: - und näher an den kleinen Vogel.
>> Also, wie ist der Vogel Betriebssystem?
Nun, lassen Sie uns einen Blick auf den Vogel zuerst.
Der Vogel script sagte, wenn die grüne Flagge angeklickt wird, gehen zu x
gleich negativen 115 und y gleich 150.
Also habe ich gerade herausgefunden, einen beliebigen Ort, wo ich wollte, dass die
Vogel zu starten, und ich plumpste ihn dort standardmäßig aktiviert.
Dann immer, wenn nicht berühren Katze, so ist dies eine andere
Art von looping Konstrukt, aber dieselbe Idee, tun dies immer
immer wieder.
Solange Sie nicht berühren die Katze, bewegen drei Schritte, und
Wenn Sie auf den Rand, bounce, sind, wo es eine Art
Reflexion im Billardzimmer Sinn.
Also das ist, wie der Vogel ist um Art bewegter
scheinbar zufällig, aber es ist nur, weil es Prellen ist deaktiviert
die Wände in diesem Fall.
>> Nun ist die Katze, inzwischen ist eine Art von Betrug.
Die Katze, wenn die grüne Flagge angeklickt wird, ja, beginnt in
einige Lage, eine zufällige Lage -
zumindest teilweise nach dem Pick
Random grünen Block dort -
und dann immer, wenn Berühren der Vogel, spielen die Löwen Sound,
und dann aufhören Skript.
Also, wenn ich sagte zu kündigen oder zu beenden, bevor es ist ein Rätsel
Stück in Scratch, die nur töten das Programm an, dass
darauf, weil es irgendwie logisch getan ist.
Aber sonst, hier bemerken, was passieren wird.
Weisen auf den Vogel und bewegen einen Schritt.
So dieser Punkt in Richtung Vogel ist Art von Vorteil die Katze
hat, dass es Homing in auf dem sich bewegenden Vogel, und wir können
Jetzt machen das Programm umso interessanter.
Anstelle des Bewegens einen Schritt zu einer Zeit pro Zyklus der CPU, pro
Streikrecht Maut von der Glocke, so zu sprechen, lassen Sie mich gehen Sie vor und
bewegen, sagen wir, fünf Schritte zu einer Zeit als die Katze.
Klicken Sie auf Ausführen, und jetzt ist er wirklich findet ihn schnell.
Wenn wir das Doppelte weiter auf 10 Schritte, es irgendwie geht
das Richtige für ihn.
Nun können wir den Vogel,
vielleicht ein bisschen ein Vorteil.
Lasst uns den Vogel gehen und sagen, anstatt sich in drei Schritten,
lasst ihn bewegen 30 Stufen.
Aber er wurde am Ende gefangen.
>> Also hier haben wir zwei Threads.
Es ist in Scratch mit zwei Skripten und zwei inhaftierten
Sprites, aber die Idee in anderen Sprachen ist, dass man
schreiben, im wesentlichen, zu viele Programme wie dieses und haben
sie laufen wirklich oder imaginär, in parallel.
>> Jetzt gibt es auch dieses Konzept in der Programmierung bekannt als
Veranstaltungen, und dies ist etwas, das wir nicht in C werden sehen, die
Sprache als C bekannt Wir werden es in Richtung Semester Ende zu sehen
in Web-Programmierung, wenn wir einführen JavaScript und den
Begriff des Gebäudes Webseiten, die dynamisch sind und interagieren
mit den Nutzern.
Also in diesem Fall haben wir ein ganz einfaches Beispiel von zwei
Sprites, Junge und Mädchen, von denen jeder ihrer jeweiligen haben
Themen, aber irgendwie diese beiden sind miteinander kommunizieren durch
von etwas namens Veranstaltungen.
Also lass mich gehen Sie hier und vergrößern des Jungen Skript
das sieht wie folgt aus.
Wenn grüne Flagge angeklickt wird, immer wie folgt vor.
Wird die Taste Space, oder die Leertaste, gedrückt wird, sagen
Marco für zwei Sekunden, die rein ästhetischen auf die ist
Bildschirm, eine kleine Rede Blase, aber dann ausgestrahlt.
>> So Broadcast ist ein weiterer Scratch Stück, das ist
Vertreter einer Klasse von Funktionalität in der Programmierung
es erlaubt verschiedene Programme, verschiedene Themen,
um inter-kommunizieren, um irgendwie zu senden
Nachrichten, einem zum anderen.
Vorbei an ein Stück Papier in der Klasse ist eine Art des Low-Tech
Äquivalent.
So ausgestrahlt Veranstaltung.
Ich kann diese Nachricht, und das Wort Event
ist völlig willkürlich.
Scratch hat manchmal diese Dropdown-Menüs, so dass ich nur kam
mit einem zufälligen Wort wie Ereignis, weil jetzt, was der Junge macht
wenn ich drücken Sie die Taste ist er sendet dieses Ereignis.
Und wenn ich jetzt an das Mädchen-Skript, ist ihr script
super einfach, weil alles, was sie tun muss, um nicht handeln wird, wenn
die grüne Flagge angeklickt wird.
Sie ist zum Handeln ausgelegt, wenn sie zitieren, unquote erhält,
"Event", und an diesem Punkt, sie hören also für
die sogenannte Event immer wieder.
Sobald sie dieses Ereignis empfängt, sie wird zu schreien
Polo für zwei Sekunden.
>> Und so kann man vielleicht aus diesem genau das, was der folgern
nächste Ergebnis sein wird.
Lassen Sie mich auf die grüne Flagge.
Nichts passiert, weil ich zu dem, was tun?
PUBLIKUM: Leertaste.
DAVID MALAN: Space Bar.
Boy sagt Marco, sagt Mädchens Polo.
Aber das ist nicht schwer per se codiert.
Das ist die gegenseitige Kommunikation zwischen Skripten, so dass wir jetzt
haben die Fähigkeit, auch komplexere Programme, wo machen
diese beiden sind irgendwie miteinander kommunizieren.
>> Also in welche Richtung können wir das?
Nun, in Problem-Satz 0, wirklich, ist das Ziel,
Spaß haben mit Scratch.
Für die Hacker-Ausgabe, wirst du statt Spaß haben mit einem
anspruchsvolle Version von Scratch genannt BYOB, Build
Eigene Blocks, aber die Idee ist die gleiche.
Du wirst in der Lage sein -
Ja, das war Absicht.
Es kam aus Berkeley.
BYOB ist die Hacker-edition-Version, aber sowohl
Demographie, Standard Edition und Hacker-Ausgabe gleich, die
Ziel bei der Hand für die kommende Woche ist wirklich nur zum Tauchen
tief, sich die Hände schmutzig mit der Programmierung, und machen
etwas Interessantes, etwas machen interaktive machen
etwas Künstlerisches machen etwas Spaß tatsächlich
demonstrieren, so dass durch Ende der Woche werden Sie ein Projekt haben,
nicht nur für Ihre erste CS50 pset, aber Sie müssen ein
wenig etwas, dass Sie zeigen in Annenberg um
Freunde oder gar Familienmitglieder durch Hochladen auf MIT-Website.
Und so wie ich am Mittwoch sagte, erwarten wir, dass 90% der Klasse,
allgemein zu tun die Standard-Editionen.
Erkennen, dass es auch dieses Ventil für diejenigen von Ihnen,
sonst finden sich ein wenig mit den Grundlagen langweilen
und wirklich wollen, zu tauchen in und Handwerk eine Vision, die Sie bereits
haben mit vorheriger Hintergrund in diesem freundlicher
Umwelt.
>> Also lass mich ziehen ein anderes Beispiel, dass einer unserer ehemaligen
Studenten hier haben und erzählen ein wenig etwas über Song.
Dass ähnlich, wie dies spielt, wie Sie gehen, zu denken
Durchführung dieses Programms mit genau diese gleichen
Bausteine, ein wenig pseudo Zufälligkeit, und ein
wenig bekanntes Lied.
Wenn wir die Lautstärke zu erhöhen gerade ein wenig?
[MUSIC - "Es ist Raining Men" The Weather Girls]
>> DAVID MALAN: Das ist es für CS50.
Wir werden Sie am Montag zu sehen.
[Applaus]