>> [VIDEO PLAYBACK]
>> -A Triumph der mathematischen und mechanische Fertigkeit
ist diese große neue automatische Rechner an der Harvard University.
Komplizierte Probleme in der Mathematik gesetzt durch die Maschine in codierter Form
auf Band genau in a lösen winziger Bruchteil der Zeit benötigt,
Menschenberechnung.
Entwickelt, um alle Formen von zu beschleunigen mathematische und wissenschaftliche Forschung,
der riesige mechanische Gehirn wird für Arbeit der United States Navy, bis Kriegsende.
>> [END PLAYBACK]
>> David J. MALAN: Dies ist CS50.
Die Vergangenheit war ein magischer Ort, aber wenn Sie jemals
fragte sich, was das Gerät in Harvard Science Center,
es ist in der Tat ein Teil des Harvard Mark I, und es ist
auf dem Display gibt jetzt in den letzten vielen Jahren.
Und was werden Sie sehen, in Problemsatz eingebettet
man ist ein Blick hinter die Kulissen an, was das Gerät hat, und tut,
von Professor Harry Lewis, der in ist die Informatik-Abteilung hier.
Also mehr dazu in nur ein bisschen.
>> Heute beginnen wir den Übergang aus der vergangenen Woche, dies zu,
und wir Erwähnung bringen der ein Foto hier
Das ist eigentlich ziemlich berühmt.
Wer weiß, was diese ist hier auf dem Bildschirm?
Zumindest nach den Mythos.
Ja.
Publikum: Der erste Virus.
David J. MALAN: So war es angeblich die tatsächliche erste Fehler in einem Computer.
Jetzt in Wirklichkeit das Wort Fehler, für einen Fehler in einem Programm,
hat bei uns für einige gewesen Zeit in der physischen Welt,
und dies war einer der ersten, dokumentierten Zeiten, in denen jemand tatsächlich
pflückte eine große Nachtfalter aus der Mark II-Computer, legen Sie sie in das Bindemittel,
und dann nahm es als das erste bekannte Fehler
zu haben, tatsächlich physisch gefunden worden.
Also so eingegeben wurde , dass in der heutigen Überlieferung.
Alles, was von den letzten Woche ist online verfügbar.
Insbesondere Ressourcen, die Sie nicht unbedingt bemerken, vor allem
wenn Sie hier kommen in Person.
Damit wird eines der Lehr Burschen jeden Jahr macht eine kanonische Satz von Notizen,
so dass Sie nicht halten müssen Ihren Kopf nach unten und versuchte,
In den meisten etwas zu transkribieren das könnte hier in der Klasse passiert.
So klar, dass diejenigen, sogenannte [? Scribd?] Notizen
sind online, sicher die Rutschen und Source-Code, die wir in der Klasse.
Wir machen Volltext-Transkripte ebenso verfügbar.
Also, wenn Sie vage daran erinnern, einige Begriff, und wollen es schauen ein wenig
leichter, erkennen, dass alle davon ist online durchsuchbar.
Sowie Komplettlösungen als auch.
In der Tat, heute beginnen wir zu sehen eine untere Level-Programmiersprache,
bald die uns bekannt werden, als C, und es ist sehr einfach
um nach wenigen Art verloren gehen Augenblicke Zeit, und dann eine Art Wunder,
wie wir tatsächlich etwas mehr bekommen komplexeres Beispiel von der einfachsten.
Und so erkennen wir werden cherry Abholung im Unterricht irgend
der repräsentativen Beispiele, aber erkennen, dass so viel mehr ist auch
online zur Verfügung, so dass Sie arbeiten können, durch sie in Ihrem eigenen Tempo,
jedoch sind Sie am bequemsten ist.
>> Aber wir aufgehört haben mit Programme, die gerade dieses waren.
Also habe ich Sie auf die grüne Fahne, und was macht dieses Programm?
Sagt, hallo, Welt.
Es macht die Katze sagen hallo in seine kleine Welt
auf der oberen linken Seite, der Benutzeroberfläche Scratch ist.
Aber wir begannen zu präsentieren einige Begriffe in der vergangenen Woche.
Und so, Dinge wie diese riefen wir was?
Was könnte der Oberbegriff für das sein?
Ja.
Ein Verfahren oder eine Aussage.
Sicher, es ist eine Aktion.
Mach das.
Und doch gab es andere Formen zu kratzen,
Neben diesen sogenannten Anweisung, waren sie auch
Dinge wie diese, die wir genannt, was?
Ja.
So eine Schleife.
Und in diesem Fall, diese Sache Wiederholungen offensichtlich 10mal.
Es gibt eine immer Block.
Es gibt ein paar andere.
Und heute werden wir sehen, wie man übersetzen dies zu einer modernen Welt,
wenn man will, auch wenn es gehen, um auf den ersten Blick
viel mehr arkane sein.
Aber das waren ja Schleifen.
Und dann Dinge wie wir Dieser, der diese Form hat,
und im wesentlichen gestellte Fragen.
Und wir diese als was bezeichnet?
>> ZIELGRUPPE: Boolean Ausdruck.
>> David J. MALAN: Ja.
Boolean Ausdruck.
Etwas, das entweder wahr oder ist falsch, ja oder nein, Eins oder Null,
aber Sie, die Welt sehen möchten.
Aber wir diejenigen, Boolean genannt Ausdrücke, und wir stecken Sie sie
in Bedingungen oder Filialen.
Und in der Welt Scratch, alles schön
Verriegelungen in Bezug auf ihre Form, wenn es logisch sinnvoll, dies zu tun,
aber Sie nicht haben, um zu einfach aufhören eine Sache tut bedingt,
können Sie eine sprichwörtliche haben Gabel in der Straße
und tun, entweder dies oder das, wenn die Bedingung erfüllt ist oder nicht.
Und dann, wie Sie sehen werden, wenn Sie nicht bereits haben,
Sie nisten auch diese Blöcke.
So Scratch wächst, um die Formen zu füllen dass Sie vielleicht, um in sie einfügen,
so dass Sie eigentlich zum Ausdruck bringen kann am jede Logik, die Sie vielleicht zu tun.
>> Nun ein paar Worte der Mitteilung für hier und New Haven.
So Schnitte beginnt heute.
Die URL dieser ist auf den Verlauf der Website, für diejenigen, die nicht.
Abschnitte wird eine sein, Gelegenheit, um zusammen zu bekommen
in einer viel intimeren Umgebung als [? Sanders?] Ermöglicht es,
mit 10 bis 20 Klassenkameraden mit einem Lehre Mitarbeiter an unterschiedlichen Spuren,
und unterschiedlichem Tempo, wenn Sie dies wünschen.
Tatsächlich sind die Kursangebote verschiedene Abschnitte
für diejenigen, weniger komfortabel, mehr komfortabel und irgendwo dazwischen,
und die Rolle des Faust ist es gibt keine formale Definition,
aber wenn Sie weniger bequem sind, Sie Art von wissen.
Sie sind ein bisschen über die unerschrockenen Vorstellung von einen Fuß vielleicht zurück
im Klassenzimmer, oder zeigt bis zu einer zwischen Schnitt.
Wenn Sie schon seit dem du gewesen Programmierung waren sechs Jahre alt war, komfortabler,
vielleicht zu Ihnen.
Und wenn es ein bisschen eine Wurf-up, das ist genau das, was die zwischen
sein soll.
>> Jetzt, in der Zwischenzeit für eine Klasse dieser Größe,
es dauert uns einige Zeit in dem Kapitel jeder, deshalb haben wir so genannte,
Super-Sektionen, kommen diese Wochenende und Anfang nächster Woche,
so werfen Sie einen Blick auf der Website natürlich für diejenigen, die natürlich breit sind,
und auch für diejenigen gefilmt sich nicht entscheiden kann ihnen.
Und Abschnitte selbst beginnt in der dritten Woche des CS50 Null-Index.
Problem Set 0 bereits auf der Website der natürlich.
Und erkennen, dass Sie zu tun haben neun späten Tage in diesem Semester.
Also das ist ein Upgrade von den letzten Jahr, als wir hatten fünf Tage zu spät.
>> Also, wenn Sie sich fragen, Wir haben neun Problem Sets.
Sie haben neun späten Tagen, von denen jeder Sie können nur ausgeben, eine pro Woche auf.
Die effektiv macht alle das Problem stellt aufgrund Freitag,
aber das Ziel ist, ein wenig setzen wenig psychologischen Druck
auf die Sie versuchen, Dinge am Donnerstag,
weil, wie Sie bald entdecken, zum Guten oder zum Schlechten, die meisten
alles, was in der Software-Welt endet nehmen viel länger als Sie erwarten.
So halten es für eine Art Gelegenheit, um zu helfen
sich bis Donnerstag Ziel, aber trösten, dass, ja,
alles ist auf Freitag.
Und wenn man legt sie auf Donnerstag, das ist wunderbar.
Es gibt keine Bonuspunkte oder Extra Kredit für die Einhaltung dieser Frist.
Es soll nur eine Krücke sein.
>> Und Sprechzeiten, sowohl Hier und in New Haven,
in Person, wenn Sie möchten, Treffen mit einem unserer Kurse
Lehre Stipendiaten und Zertifizierungsstellen für Unterstützung.
>> Gut.
So, jetzt lassen Sie uns dies realer.
Und für einen Moment, es wird starten ein wenig mehr obskure, aber sehr
schnell am Freitag und Nächste Woche werden wir in der
in der Lage, so viel mehr zu tun, als wir konnten bisher im Scratch.
So haben wir Code letzten Woche, wenn auch Sonderstempel.
Es war Puzzleteile.
Und wir formalisiert, dass es so genannte Quellcode,
aber aussehen würde?
Nun sah es ein wenig etwas wie das.
Und, in der Tat nur auf Art necken, wo wir mit diesem zu gehen.
Ich werde weitermachen und öffnen Sie ein Fenster, hier,
und ich werde einfach Neuer Ordner auswählen.
Und ich werde diese Datei speichern so etwas wie hallo Punkt c.
Mehr zu diesem Wahl Wörter in nur einem Augenblick.
Und so jemand gehen über ein Programm schreiben.
Gehören Standard-I / O-Punkt h, int main Leere, und öffnen Sie dann geschweifte Klammer, in der Nähe
geschweifte Klammer, printf hallo Komma Welt Backslash n, Semikolon, speichern, fertig.
OK.
Ich habe meine erste schriftliche Programm, aber es geht
unglaublich überwältigt zu sein denn wenn ich tatsächlich
führen Sie dieses Programm, natürlich, indem zunächst schriftlich stellen hallo,
und dann dot Slash hallo, und wir schicken gehen Sie durch diese in viel mehr Details
in einem Moment, das ist alles es tut.
Nicht aufspringen keine Fenster.
Es muss nicht alles tun, Besonders extravagant.
Denn es macht nicht, was ich gesagt, dass es um zu tun, aber wie wir dazu kommen?
Und wie kommen wir nach, dass zu bauen?
Nun, lassen Sie führen ein paar unterschiedliche Konzepte hier.
>> So eins, wir sind kurz vor dem Start mit einem Programm namens ein Compiler.
Ein Compiler gibt es für Mac OS, Windows, Linux, eine beliebige Anzahl von Betriebssystemen,
und wir werden in Kürze die Einführung Sie Umwelt, die wir verwenden werden,
aber ein Compiler ist nur eine allgemeine Bezeichnung für ein Stück Software
das dauert Quellcode und produziert Objektcode von ihm.
Mit anderen Worten, wenn man haben als Eingabe Ihrer Quelle
Code, so etwas wie das, was ich gerade eingegeben haben, letztlich produziert Objektcode.
Und Objekt-Code ist wirklich nur eine andere Art zu sagen, es gibt
Null ist und die eigene.
Mit anderen Worten, Quelle Code, obwohl es
gehen, um ein wenig obskur aussehen, und etwas weniger freundlich
als Scratch auf den ersten Blick es ist wenigstens etwas
dass wir Menschen verstehen kann.
Es sieht und klingt wie Englisch, obwohl es sehr knapp.
Bei der Programmplanung in Nullen und eigenen, als unsere Vorgänger zu tun hatte,
vor ein paar Jahren, war nicht ein Besonders Spaß Herausforderung.
Und doch ist es das, was die Computer immer noch versteht.
So Compiler bringt uns aus Source-Code, Code zu widersprechen.
Es ist wie das Öffnen einer Datei mit der Compiler und wenn Sie es speichern,
Sie erhalten diese Nullen und Einsen.
So werden wir sehen, wie zu tun dass in nur einem Augenblick.
>> Aber lassen Sie uns nun versuchen, a zur Verfügung stellen Brücke zwischen der vergangenen Woche, und dies,
so dass selbst wenn wir bekommen aufgehängt auf Dinge wie geschweiften Klammern,
und Strichpunkte und Klammern, und alle diese gedanklich interessante
Aspekte der Programmierung, die sehr verständlicherweise stolpern Menschen früh auf,
erkennen, dass alle der Ideen Heute sind die gleichen wie zuletzt.
Also endlich, dieses Beispiel haben wir gesehen, hier, Hallo Welt Programm.
Nun, ab heute, wenn wir wollen, um das gleiche Programm zu implementieren,
es geht um einen Blick wenig so etwas wie dieses.
Und wir werden in Kürze welche int zu erklären, und die wichtigsten, und nichtig, und all das
ist, aber zumindest ich hier sehe, schon die vertraute Hallo Welt.
>> Inzwischen Dinge wie Funktion, sagen hallo,
sehr einfach wird eine sein sehr einfache Anweisung wie folgt.
Printf Hallo Welt, mit einigen zitiert, mit einem Backslash,
mit einem Semikolon, aber mehr dazu kommen.
Schleifen unterdessen ist dies eine Schleife, die, Natürlich sagt hallo Welt für immer,
und dieser wird ein schauen wenig seltsamer als in der letzten,
aber wenn ich etwas zu sagen wie, während wahr, ich
kann dann ausdrucken Hallo Welt wieder und wieder und wieder und wieder.
Und dann, wie Sie können Art der zu starten, hier zu folgern,
diese Konvention der Verwendung geschweiften Klammern ist eine Art
der wie die umfassende rückt Codezeile gibt.
Die printf Zeile Code ähnlich wie die gelbe Puzzleteil oben.
Also werden wir nicht ewig sagen, wir werden, während wahre sagen,
aber wir werden sehen, warum das so ist nur ein bisschen.
>> In der Zwischenzeit, wenn wir eine Schleife wie diese, wo man etwas eine endliche wiederholen
Zahl mal auch, es ist dies eine gehen, um ein wenig dauern gewöhnungs
zu, aber es wird für int sagen i erhält Null, i kleiner als 10, i ++,
und dann printf erneut.
Aber es geht um Muster zu sein.
Und für diejenigen unter Ihnen kennen mit AP Informatik oder Java,
oder eine beliebige Anzahl von anderen Sprachen, fast alle diese Konstrukte
bisher sollte hauptsächlich bekannt vorkommen.
>> So variabel.
Also hier ist eine einfache Scratch Ausschnitt, setzt eine Variable Zähler auf Null,
und dann für immer, sagt der Zähler, und dann wird der Zähler um eins ändert sie.
So dass es beginnt mit null, und dann ein, zwei, drei.
Nun, wie wir vielleicht vorstellen, dass in Diese neue Sprache ein wenig ähnlich?
Int Zähler gleich Null, während die wahre, die
ist, dass dieselbe Idee aus der Zeit vor etwas zu tun, für immer,
und ich werde einfach printf.
Und jetzt wird es ein wenig seltsam, Prozent i, aber dazu kommen,
aber diese Ideen sind genau die gleichen.
Wir haben gerade jetzt, um zu haften die Syntax, die der Computer
gehen, um von uns zu verlangen.
>> Boolescher Ausdruck, so etwas wie sx weniger als y oder x kleiner als y ist,
und y kleiner als z ist.
Es wird ein wenig etwas zu suchen wie diese, mit Klammern einfach
wie in der Mathematik für eine gute Maßnahme, um nur sicherzustellen, dass die Reihenfolge der Operationen
ist, wie wir beabsichtigen.
Und nun, Bedingungen.
Also, wenn x kleiner als y, sagen, x kleiner ist als y, sonst wenn x größer als y ist,
sagen, x größer als y ist, ansonsten logischerweise, muss x gleich y ist.
So könnten Sie implementieren so etwas wie dies im Scratch,
oder Sie könnten zu implementieren es in dieser Syntax.
Und wieder sind so eine Art die geschweiften Klammern als Puzzle geben uns die gleiche Form
Stück, aber die Syntax ist nun, vielleicht beginnen, einige Muster zu folgen.
>> Also, was hat dies uns hier?
So sind wir damals in unserem Hauptprogramm.
Lassen Sie uns eigentlich jetzt, tun Sie etwas mit ihm.
Also in diesem allerersten Linie sehen wir scharf sind,
Standard-I / O, Punkt H, und dann einige seltsame Winkel
Klammern darunter. int main Leere, und dann printf Hallo Welt.
Also nur einen Schritt.
Jemand, der noch nie zuvor so programmiert ist, zumindest erklären eine dieser Linien.
Verwenden vielleicht einige von Jargon der vergangenen Woche.
Was ist printf, zum Beispiel?
Ja.
>> ZIELGRUPPE: [unverständlich]
>> David J. MALAN: Ja.
Es ist eine Funktion oder eine Aussage, von Terminologie in der vergangenen Woche.
Und es ist ein Action- das ist etwas zu tun.
Nun ist diese Funktion oder Diese Aussage, tut
es scheint, irgendeine Art von Input zu nehmen?
Und in welchem ​​Sinne es tut scheinen Eingang zu nehmen, wenn dies der Fall?
Input, was mache ich damit?
Ja.
>> ZIELGRUPPE: [unverständlich]
David J. MALAN: Ja.
So Scratch ein paar Puzzleteile wo man sie parametrisieren.
Man könnte sagen, die Wiederholungs zu blockieren, wie viele Male zu wiederholen,
das war also ein Eingang Arten, und genau wie Scratch
hatte einen kleinen weißen Platzhalter für die Nummer, die Sie eingeben würden,
so zu tun, die wir in diesem Text Welt Klammern
uns, dass die kreisförmige Form zu geben, in dem wir unsere Eingangsstecker.
Schließlich Zehn Jahren wenn diese Sprache, die so genannte C,
war niemand erfunden erwartet, es ist einer von uns,
diese einige Jahre später, würden wir möchten eine Funktion, sagt hallo.
Recht?
Es wäre schön, wenn es eine Puzzle-Stück oder ein Schlüsselwörtern,
dass heißt hallo, daß buchstäblich nur sagt hallo.
Aber wir brauchen nicht, dass.
Wir können etwas viel niedriger sind Ebene, wie eine generische Druck
Befehl, die Eingabe nimmt, und druckt, was wir wollen.
So bemerken nun das Muster dass beginnen zu entstehen.
Offene paren, liegt in der Nähe paren offenbar umarmt den Eingang,
und doppelklicken Sie dann sehe ich, zitiert an beiden Enden.
Es gibt immer noch seltsam umgekehrten Schrägstrich n, aber hoffentlich Sie jetzt
können Sie beginnen, zumindest, dass visualisieren printf nimmt in irgendeiner Form der Eingabe.
Nicht so benutzerfreundlich wie Kratzer, aber es ist einfach
wie mit in gewissen Wert es eingesteckt ist.
>> So, jetzt wollen wir eigentlich tun Sie etwas mit diesem.
So einige von euch vielleicht wissen, aus mit eingekauft die Klasse vor,
unterhielt sich mit Freunden, dass für viele Jahre
wir verwendet die so genannte das CS50-Appliance.
Dies war ein Begriff für eine Technologie rief die virtuelle Maschine, die
ist ein Stück Software, die Ihre Vorgänger würde downloaden off
der Website natürlich kostenlos.
Sie würden auch ein freies Stück downloaden Software namens Hypervisor,
etwas namens wie VMware, oder VirtualBox, oder eine beliebige Anzahl
von anderen Werkzeugen und auf ihrem Mac oder PC oder was auch immer Computer sie hatte im vergangenen Jahr
und in den vergangenen Jahren, werden sie würde einen Doppelklick auf ein Icon
diese Software ausführen genannt Hypervisor.
Und dann innerhalb des Programms sie würden den CS50 Gerät zu öffnen.
Und die Wirkung war, daß ob ein Vorgänger von Ihnen
wurde Mac OS oder Laufen Fenster, er oder sie dann
Anschließend musste ein neues Fenster auf ihre Bildschirm laufen CS50 Umwelt.
So eine virtuelle Maschine können Sie eine laufen Betriebssystem innerhalb eines anderen,
und das ist genau das, was wir getan haben.
Während des größten Teils des Kurses wir verwenden Sie ein Betriebssystem namens
Linux, speziell Ubuntu Linux, und das
ist eine sehr schöne Art und Weise in den vergangenen Jahren von um sicherzustellen, dass alle im Verlauf
nur hatte die gleiche Umgebung.
Und Sie können jede Art der Verwertung Computer, die Sie wirklich wollen.
Zu den Schattenseiten, obwohl, waren es war wie zwei Gigabyte
um dieses Ding zu downloaden.
Es hat nicht unbedingt Super funktionieren gut auf Menschen, deren Computer, die vielleicht nur
hatte einen Gig oder so von RAM, oder nicht zu viele Gigahertz CPU-Geschwindigkeit,
und so in diesem Jahr für Diese und andere Gründe,
haben wir den Übergang an diese Umgebung.
Die sogenannte IDE CS50, das ist basierend auf Open-Source-Software,
und eine unterstützte Plattform dass eine Firma mit dem Namen Cloud9
unterstützt in Europa, dass ermöglicht es uns, im Wesentlichen haben
daß dieselbe Umgebung wie in vergangenen Jahren, aber in der sogenannten Wolke.
>> Also, was ist die Cloud?
Sie haben vermutlich geklickt das entsprechende Symbol auf Ihrem Mac oder PC.
Was ist die Cloud?
Ja?
Ein wenig lauter.
Ja.
Es ist nur ein Haufen von Computern an anderer Stelle, dass die Daten zu speichern und ausführen
Software und dergleichen.
Also es ist wirklich nur auf das Wort de jure zu beschreiben [? mietbar?]
Computer, die anderswo leben.
, Dass Sie selbst, nicht unbedingt besitzen.
Also, wenn Sie Ihre Daten oder Ihr Programme sind in der Wolke,
es bedeutet nur, es ist auf jemand fremden Computern an anderer Stelle,
und nicht, am ehesten auf, Ihre physische Laptop oder Desktop.
Und so das ist, was CS50 IDE jetzt ist.
>> Von nun an werden Sie zu einem gewissen gehen URL, die Sie einführen wird
um, in Problem-Set 1, noch in diesem Woche, die dann, nach der Anmeldung
geben Ihnen diese Umgebung.
Und ähnlich wie Scratch hatte einen paar verschiedene Gremien mit,
so auch CS50 IDE genau das haben.
Auf der obersten linken Seite hier, du bist gehen, um eine vertraute Datei-Browser zu sehen.
So eine der Dateien, die Sie in diesem Umfeld setzen
sich nur noch dort aufgeführt werden.
Dateien und Ordner.
In der oberen rechten hier, Sie gehen zu einem Ort zu sehen
wo Sie Ihren Code tatsächlich zu schreiben.
Zunächst in C, später im Begriff in PHP und JavaScript,
und vielleicht für die endgültige Projekte, Ruby oder Java oder Python
oder eine beliebige Anzahl von Sprachen in dieser Umgebung nicht unterstützt.
Es ist überhaupt nicht gebunden speziell CS50.
>> Und dann in der unteren Ecke Hier besonders für die, bequemer,
Sie etwas haben, rief ein Terminal-Fenster.
Und das Terminal-Fenster erlaubt Sie, jeden Befehl auszuführen, die Sie
möchte in diesem Cloud-Umgebung.
Es ermöglicht Ihnen, zu installieren zusätzliche Software
dass Sie möchten, weil Sie so genannte haben root oder Administrator-Rechten.
In anderen Worten, auch wenn dies wird schließlich in der Cloud gehostet,
und obwohl wir vereinfacht es in einem gewissen Ausmaß
Standardmäßig ist buchstäblich die Einführung, Dank an Dan Armendariz und Dino,
und Dan Bradley am CS50-Team über die vorbei an vielen Monaten eine weniger komfortabel
Modus, die eine Menge der Häute zunächst verwirrend Ablenkungen.
Alles, was existiert, um repräsentieren ein typisches Computersystem
dass Sie vielleicht in der realen Welt zu verwenden.
>> Also, was bedeutet das alles, und was können wir eigentlich damit zu tun?
Lassen Sie tatsächlich nehmen Sie einen Blick auf ein Programm.
Also werde ich zur Öffnung des tatsächliche Umgebung hier,
das ist nur unsere Chrome Browser, die Firefox sein könnte,
könnte Internet Explorer sein, oder ein anderer Browser als auch.
Es ist voll hier für den Augenblick untersucht.
Und ich möchte eigentlich necken auseinander, was dieses Programm war.
Werfen wir also einen Blick, durch Vergrößern up top, was ich tat, und wie ich hierher gekommen.
Also hier ist jene genauen elbe Codezeilen.
Das ist also die Aussage, wie Sie bereits erwähnt.
Die Funktion, sagt hallo.
Die geschweiften Klammern, auf Reihenvier und Linie sechs,
vermutlich Art umhüllen , dass Linie, um sie zu verbinden
mit der Essenz meines Programms.
So in der Tat, dieses Schlüsselwort Haupt, das ist, dort oben auf der Linie drei,
Sie davon können als Äquivalent der, dass, wenn grüne Flagge geklickt haben,
Block in Scratch.
Also das ist alles, was wir hier haben, ist, wenn grüne Flagge geklickt, zu drucken oder zu sagen,
Hallo Welt.
>> Aber lassen Sie uns einen Vermutung, jetzt, was diese erste, mehr arkane Linie ist.
Sharp gehören, geöffnet abgewinkelt Halterung, Standard-E / A-Punkt-h,
schließen Winkelhalter.
Was ist das vielleicht tun, vor allem wenn Sie programmiert haben
bevor in einer anderen Sprache.
Ja?
>> ZIELGRUPPE: [unverständlich]
David J. MALAN: Ja.
Genau.
Also das gibt Ihnen Zugang zu einem Bibliothek, so zu sprechen, von Funktionen.
Und eine Bibliothek von Funktionen Funktionen, dass jemand anderes
schrieb, entweder vor kurzem oder vor langer Zeit, so dass Sie
müssen nicht das Rad neu erfinden.
So tun wir nicht müssen wissen, im Jahr 2015,
wie man Code, der Puts schreiben ein Charakter auf meinem Bildschirm.
Jemand hat anderes dachte, dass mit der Funktion printf
so dass ich der abstrakten sortieren weg von diesem, oder Schicht
oben auf seine oder ihre Code, und jetzt nehmen Sie nur
für selbstverständlich, dass jedes Programm schreibe ich etwas auf dem Bildschirm anzuzeigen.
Also das erste Zeile gibt in Schritt eins beinhaltet die sogenannten Header-Datei
für die Standardbibliothek.
So sehen die Sprache in welche wir jetzt arbeiten
hatte eine Standardbibliothek mit vielen Funktionen.
Printf ist einer von ihnen, und dass erste Zeile des Codes
bedeutet Zugang zu mir diese Funktionen, so daß ich
müssen nicht das Rad neu zu erfinden.
>> Lassen Sie uns jetzt auf den Grund zu gehen Fenster und genau das tun, was ich tat, bevor.
Vorhin, als ich sausen durch den Code,
Eingabe es zum ersten Mal, Ich sehr schnell eingegeben haben, stellen hallo.
Was war das denn würden Sie raten?
Was sollte ich tun?
Ja?
Egal.
Es ist in Ordnung.
Ja.
ZIELGRUPPE: Kompilieren es.
David J. MALAN: Ja.
Es war nur Kompilieren.
Recht?
Auch wenn dies völlig fremd , dann ist es ziemlich Englisch dergleichen.
Es ist sicherlich nicht Nullen und diejenigen, so dass ich immer noch
müssen Sie es durch dieses sogenannte laufen Programm, ein Compiler, das wird
um es als Eingabe und erzeugen Ausgangs.
Und zumindest für jetzt, in Diese Linux-Umgebung,
dies ist jedoch keine notwendige Voraussetzung, dies ist nur, wo wir beginnen,
Sie in der Regel interagieren Computer-Systeme wie diese
durch einen sogenannten Befehlszeile.
Also mit einem blink schnelle und Tastatur,
und nicht so sehr der Maus, und nicht soviel Fenster und Symbole und Menüs,
vielmehr ist alles textlichen.
Und auch wenn sich das anfühlt, auf den ersten Blick vielleicht wie ein Schritt zurück,
es ist eigentlich eine viel mehr kraftvoll und ausdrucksstark
Steuern eines Computers vor allem, wie Sie,
sich selbst, geworden komfortabel aus weniger.
Es wird Ihnen zu erlauben, eine Menge tun, mehr Dinge, als genau das, was Microsoft
oder Apple ermöglicht es Ihnen, mit zu tun ihre grafischen Betriebssystem.
>> Also, wenn ich drücken Sie die Eingabetaste, jetzt, nichts passiert diesmal
weil offenbar die Programm hallo ist up to date.
Und was war der Befehl Ich lief danach?
Dot Slash hallo und Hallo Welt.
Werfen wir nun einen Schritt zurück für einen Moment.
Es stellt sich heraus, dass hallo ist nur eine machen vereinfachte Möglichkeit der Zusammenstellung eines Programms.
Lassen Sie uns einfach vorstellen ein Stück von Jargon,
aber dann weg von ihm, da es nicht
so interessant für heutige Zwecke.
Der Compiler werden wir beginnen mit heißt Clang für die C-Sprache.
Und das ist ein Programm, das gerade ausgeführt ist so wie wir es auf der Kommandozeile.
Und so, wenn ich will Kompilieren eines Programms, das ich
haben in einer Datei namens hallo dot geschrieben c, ich buchstäblich geben Sie einfach clang hallo c
eingeben.
>> Das Komische ist, aus historischen Gründen,
wenn ich nicht angeben Name des Programms,
dass ich ausgeben wollen, wenn ich nicht geben Sie einen Dateinamen für die Nullen
und Einsen, eine sehr seltsame Vor Konvention verabschiedet wurde Jahre
wo es fühlte sich ein bisschen eine gute Antwort zu der Zeit,
und lassen Sie uns einfach willkürlich nennen erste Programm erarbeiten wir einen Punkt aus.
A steht an erster Stelle im Alphabet.
Aus, es ist der Ausgang.
So werden wir das Programm aufrufen standardmäßig mit einem Punkt aus.
Und das ist in Ordnung, weil, wenn ich will führen Sie das Programm in diesem Text auf der Basis
Umwelt, ich geben dot Slash einen Punkt heraus zu gelangen.
Und es wäre genau so, wie zuvor.
Also mal sehen, dass wirklich schnell.
>> Also, wenn ich wieder zu meinem Quellcode in CS50 IDE,
und ich stattdessen tun, clang hallo Bett c Geben Sie scheint Mitteilung nichts zu geschehen,
aber fast immer Diese Linux-Umgebung,
wenn nichts Schlimmes zu geschehen scheint, dass bedeutet etwas Gutes wirklich passiert ist.
Wenn Sie einen Fehler nicht sehen, Nachricht, ist alles, wahrscheinlich auch.
Und in der Tat, wenn ich jetzt tun dot Slash einen Punkt Sie geben, ich habe meine elbe Programm ausführen.
Ich habe immer noch die hallo-Programm von früheren, weil in der Tat, es ist
geht so viel schöner, nur um make anstelle des Erinnerns
diese Beschwörungen Befehle, aber lassen Sie uns sehen, wie wir
könnte auf diese zu verbessern, dennoch.
>> So ist das der Befehl um den Code zu kompilieren.
Dies ist der Befehl zu laufen der kompilierte Code danach.
Wie kann ich einen Dateinamen angeben?
Nun lassen Sie uns nur vorstellen ein weiteres Stück von Jargon.
Wenn Sie in diese sind text-basierten Umgebung,
Sie gehen zu wollen, um anzugeben sind Dinge genannt Befehlszeilenargumente.
Das ist nur eine andere Art zu sagen, Mit anderen Worten an der Eingabeaufforderung, die
zwicken das Verhalten unabhängig Programm Sie laufen.
So speziell das Programm Ich bin Laufen, indem Sie den Namen Klang,
ist das Programm namens Clang.
Also das ist oder die alte Schule Äquivalent Doppelklick
auf Microsoft Word oder irgendProgrammSymbol.
Ich bin statt nur die Eingabe ihres Namens, aber in dieser Version des Befehls,
Ich habe dann dash o Raum hallo hallo Raum dot c.
Also selbst wenn Sie noch nie habe in dieser Welt gespielt,
nehmen Sie nur eine Vermutung, was hat dash o hallo zu tun?
Oder was sagt Klang, zu tun?
Ja.
>> ZIELGRUPPE: [unverständlich]
David J. MALAN: Ja.
Er setzt nur Ausgang der Datei zu sein hallo statt der dümmer ein Punkt heraus.
Und in der Tat wollen wir versuchen dies.
Also, wenn ich jetzt tun, erste Das machen wir, r m hallo.
Das ist, zu entfernen.
Und es geht um remove sagen reguläre Datei hallo, was
unnötig obskur, aber es ist einfach Mitteln wollen Sie die Datei löschen möchten,
und ich geben Sie y für yes.
Und beachten Sie, wenn Sie oben blickte wurden verließ, kam es von dort zu verschwinden.
Lassen Sie mich nun zu tun clang dash o, und Ich werde weitermachen und tun, hallo,
in Großbuchstaben, hallo Punkt c.
Nun, wenn ich tun dot Schrägstrich hallo, was würden Sie erwarten?
>> Vielleicht ist es Groß- und Kleinschreibung.
Vielleicht ist es nicht.
Mal sehen.
Keine solche Datei oder Verzeichnis.
Und wir können Art betrügen, indem gerade auf der Suche links oben.
Was habe ich natürlich Speichern Sie das Programm als?
All Caps hallo.
So in der Tat, das ist los um einen Unterschied machen.
So, jetzt Hallo Welt ist zurück.
Nun, das ist alles schön und gut, und alle sehr geisttötende,
um Art von get in diese festgefahren Details, aber sie zu verstehen
ist gut.
>> Eingabe Sie sich diese zunehmend langen Beschwörungen
wird nicht besonders sein Spaß, so dass Menschen in der Welt
erfand ein anderes Programm, vor ein paar Jahren, die so genannte
machen, das ganz einfach ermöglicht es Ihnen, geben,
der Name des Programms, Sie machen wollen, und stellen
ist intelligent, dass es aussehen wird in der aktuelle Ordner, aka-Verzeichnis,
und wenn Sie eine Datei haben genannt hallo Punkt c,
das ist die Datei wird kompiliert für Sie in ein Programm namens hallo.
Also ist es eine viel einfachere Möglichkeit, tun, die mehr kryptische Befehle
dass wir nicht früher.
Und wir haben vorkonfiguriert CS50 IDE zu wissen
dass es Armaturenbrett o und einer Anzahl von zu tun andere Flaggen oder Kommandozeilen-Parameter,
dass wir bald sehen.
>> Aber lassen Sie uns jetzt tatsächlich tun etwas interessanter.
Nur die Eingabe aus Hallo Welt alle die Zeit ist nicht so überzeugend.
Lassen Sie mich also und ändern voran gehen dieses Programm und sagen: Hallo David.
Jetzt werde ich hier unten zu gehen.
Ich werde weitermachen und tun zu machen hallo.
Und wieder jetzt Sie sehen, machen zeigt Ihnen die mehr
Sequenz von Befehlen, dass es tun, weil wir vorkonfiguriert
es auf diese Weise, aber wir müssen nicht jetzt Sorgen machen
was es anderen, als es zu tun Kompilieren dot Slash hallo, hallo Welt.
Was ist falsch?
Ja.
>> ZIELGRUPPE: [unverständlich]
>> David J. MALAN: Ja.
Also, noobie Fehler.
Ich stelle fest, das ist Super subtil, aber der Stern hier, in der Registerkarte,
einfach bedeutet, dass Sie es nicht gespeichert haben, und Browser und andere Programme
tun dies manchmal.
So Steuer s oder Befehls s sollte es zu speichern.
Nun lassen Sie mich gehen Sie vor und starten Sie das Programm.
Neu kompiliert.
Rechts, so ist es ein mehrstufiges Verfahren.
Keine davon ist besonders komplex, aber jedes Mal, wenn wir die Datei zu ändern,
wir, um das resultierende ändern müssen Nullen und Einsen, und Punktstrich hallo.
Wow.
Also das ist sehr berauschend dass wir gerade aus diesem gedruckt.
Lassen Sie uns die Dinge ein wenig mehr dynamisch, jetzt.
>> Nun stellt sich heraus, die gerne Scratch, C unterstützt Variablen.
Und es stellt sich heraus, wenn Sie wollen um eine Variable, die Geschäfte haben,
keine Zahl, wie wir in der Regel haben mit Scratch,
aber wie ein Wort oder eine Satz oder ein Name, die Sie
können eine Variable angeben, vom Typ String sein.
Also werden wir mehr sehen diese in nur einem Augenblick,
Aber es zeigt sich, dass C und eine Menge von Sprachen, wie es,
haben sehr spezifische Arten von Variablen.
Es ist nicht gerade wie Algebra, wo Sie eine x, eine y und z zu bekommen
und das sind nur immer Zahlen, in einer Programmiersprache
Sie Nummern speichern kann, können Sie Speichern einzelner Zeichen,
Sie ganze Wörter speichern könnte, könnten Sie speichern ganzen Bilder, ganze Sound-Dateien,
und dergleichen.
Also müssen wir was geben der Typ der Variable ist.
Und durch Konvention werde ich rufe meine Variable s, nur weil es prägnant,
und n steht für String.
>> Und dann werde ich speichern innerhalb dieser Variablen,
Genau wie bei Scratch wenn ich den Satz Block,
Ich werde auf die Verwendung Zuweisungsoperator in C,
die schön genug, ist die gleiche unterschreiben, aber das Gleichheitszeichen tut dies.
Es bewegt sich etwas von rechts in die linke Seite des Ausdrucks.
Also, was ich getan habe, um klar zu sein Linie fünf, wird Ich habe eine Variable deklariert.
Ich habe den Computer gesagt, mir zu geben Speicher für eine Variable, rufen Sie es s,
und im Voraus wissen, dass ich gehe zu werden, indem Sie eine Zeichenfolge in es.
Und ein String ist nur eine Folge von Zeichen.
Es ist ein Wort oder eine Phrase oder Absatz, aber es ist eine Folge von Zeichen.
Es ist nicht Zahlen.
Welche Zeichenfolge werde ich sein, Inbetriebnahme dieser Variablen?
Nun, offenbar zitieren unquote "Hannah".
Jetzt bemerken Sie das Muster, das ist im Entstehen.
Es gibt einen linken Ausdruck.
Es gibt eine rechte Ausdruck, durch das Gleichheitszeichen getrennt.
Und nehmen Sie nur eine Vermutung, wenn unbekannte dennoch
mit dem, was das Semikolon tut.
Wie ist es wohl für uns tun?
Ja?
>> ZIELGRUPPE: [unverständlich]
>> David J. MALAN: Ja.
Es ist nur zur Einstellung der Linie.
Recht?
Die Computer will ganz offen sein sagte, wörtlich, was zu tun ist.
Wie die Erdnussbutter und Geleesandwich Beispiel
wenn Sie nicht angeben genau, was Sie wollen,
es könnte ein Urteil oder Fehler gelassen werden.
Das Semikolon bedeutet, das war es für diesen Befehl.
Es ist als Super-präzise, ​​und es ist eine sehr einfache Sache zu gehen weg.
So, jetzt dieses Programm nicht zu scheinen, werden anders verhalten, bis ich
machen es mehr Dynamik.
Also anstatt schwer kann meine eigene zu nennen, lassen Sie mich einen Platzhalterwert gesetzt.
Und es stellt sich heraus, dass, und ich weiß, davon entfernt, die Dokumentation zu lesen,
und verwendet die Funktion für die Jahre, dass printf wurde entwickelt, dynamisch zu sein.
Sie müssen nicht im Voraus wissen, welche Wörter Sie in sie setzen möchten.
Sie können stattdessen eine Platzhalter, wie Prozent s, die
wird sich das sagen Computer, legen Sie eine Zeichenfolge hier.
>> Welche Zeichenfolge wollen wir es setzen?
Will sich heraus, dass zwischen diesen Klammern, die daran erinnern, abzugrenzen
der Eingang zu einer Funktion, wenn Sie durch Kommata getrennte Liste von Dingen hier,
wir tatsächlich in mehreren Durchgängen Eingänge zu einer Funktion.
So genau wie einige Kratzer Blöcke, könnten Sie nicht
haben mit ihnen gespielt Ihre Projekte noch nicht oder überhaupt,
einige Kratzer Blöcke haben zwei Eingänge.
Zwei weiße Kästen möglich Geben Sie Zahlen oder Wörter in.
So hat zum C haben Funktionen wie printf, die zwei Eingänge erfolgen.
Und wieder, dieses Komma wird trennen.
So in Englisch, wieder, auch wenn Sie noch nie programmiert haben,
Nach dieser Logik printf ist eine Funktion, nimmt zwei Eingänge, von denen einer
ist ein Platzhalter, was würden Sie hoffen, printf wird sich mit diesem Eingang zu tun?
Es wird um Hallo zu sagen Hannah, hoffentlich.
Also, dies müssen wir sie zu retten.
Ich werde zu verkleinern.
Ich werde hier wieder nach unten gehen und sagen zu machen hallo geben.
Oh.
Irgendetwas stimmt nicht, und tatsächlich Das ist ziemlich überwältigend.
Ich habe sechs Zeilen Code und wie 12 Zeilen von Fehlern.
Also, freuen uns auf diese.
Also, was ist denn hier los?
So ist die beste Faustregel gilt hier, vor allem, wenn Sie beginnen bist,
um nicht abgelenkt zu werden der Stoff an der Unterseite.
In der Tat, ich ganz bewusst gerade oben gescrollt
denn sehr oft ist ein Computer nicht allzu hellen eines Gerätes.
Es wird verwirrt werden.
Wenn es eine Sache, sieht, dass es nicht versteht,
es könnte anderen verwechseln Zeilen Code als falsch,
obwohl sie völlig in Ordnung.
So will man immer arbeiten von oben nach unten durch die Fehler.
Und zwar ist dies Super arkanen im Moment.
>> Fehler, die Verwendung von nicht angemeldeter Bezeichnerstring.
Habe ich meine, in Standard?
Nein, ich meinte String.
Und es zeigt auf, vielleicht ist es ein Tippfehler.
So ähnlich wie, die Rechtschreibprüfung in einem sehr geeky Weise, aber der Grund hier
und du wirst wissen nur durch die Praxis ist
es stellt sich heraus, dass diese Zeichenfolge nicht in C gibt es in der Tat, C
ist eine besonders alte Sprache, und es ist sehr niedrigen Niveau,
und es nicht eine Menge von Funktionen dass Sie vielleicht aufgewachsen sind
mit, wenn Sie in der Tat, programmiert in Java, wie einige von euch haben,
aber Sie können es zu unterrichten, neue Dinge.
Und in der Tat haben wir diese CS50 getan, auch wenn bis zum Ende des Semesters,
alle diese Stützräder wird wurde abgenommen haben,
was wir in diese zu tun ersten paar Wochen
anfangs haben wir auch Sie sind CS50 dot h.
Die eine Header-Datei.
Mehr dazu in der Zukunft.
>> Es ist eine Datei, die Funktionen enthält, dass wir für Sie geschrieben.
Und unter diesen Funktionen ist Funktionen für das Erhalten Eingangs
von dem Benutzer, die es geben könnte, und Zahlen und reelle Zahlen und mehr.
Aber es hat auch ein paar Abkürzungen.
Es definiert eine Boolean als Datentyp.
C nicht wahr oder falsch.
Aber wir können es den Begriff der wahr oder falsch durch diese Bibliothek.
Und es ist auch nicht eine Zeichenfolge aufweisen in bis wir schließen diese Zeile gebaut.
Also diese Codezeile teilt der Compiler, hey, Clang, schauen
in dieser Datei für eine ganze Haufen von Code, CS50
hat, so dass schriftliche jemand mit diesem Datei
kann selbstverständlich der nehmen Funktionen haben sie aufgenommen.
>> So, jetzt lass mich weitermachen und löschen Sie den Bildschirm,
und wenn neugierig Ich sage nur, Steuer l jedes Mal, um den Bildschirm zu löschen,
oder Sie können klare eingeben.
Ich werde einfach weitermachen und jetzt Art machen hallo, und alles ist gut.
Immer noch eine arkane Ausgang, aber es ist nicht eine fehlerhafte Nachricht.
Wenn ich aber tue dot Slash hallo, und als beiseite, dot Schrägstrich für die meisten nicht vertraut.
Es bedeutet nur, Punkt Mittel das aktuelle Verzeichnis.
Also, wenn Sie überhaupt benutzt haben DOS oder Linux oder Unix
Sie vielleicht etwas getan haben, wie cd Punkt Punkt, wo
dot dot bedeutet rückwärts gehen in Zeit, oder gehen Sie zurück, oder höher
in Ihrem Verzeichnis.
Punkt bedeutet nur schauen in das aktuelle Verzeichnis.
Ich möchte hallo, was hier ist.
Und in der Tat, jetzt sagt hallo Hannah.
Und wenn ich es wieder ändern, Maria, neu kompilieren
es wäre hallo, dot Strich machen hallo, das Programm ständig ändert.
>> Dies ist jedoch immer noch ein ziemlich dumm Programm.
Wenn ich will, um dieses Programm zu versenden, oder geben Sie es an einen Freund,
oder geben Sie es an Maria oder Hannah für diese Angelegenheit, das ist in Ordnung.
Ich kann es für beide von ihnen anpassen, aber es wird nie dynamisch.
Sie kann es nicht ändern, sobald es zusammengestellt nach unten in diesen Nullen und Einsen.
Also, was wir etwas schlauer?
Was, wenn anstelle des Festcodierung in den Programm-Namen dieser Person,
was, wenn wir nur erhalten, die Zeichenfolge auf Anfrage?
>> Also mit anderen Worten, lassen Sie mich dies zu tun.
Ich werde dieses Programm neu zu kompilieren.
Und lassen Sie mich heranzoomen unten jetzt.
Machen Sie hallo dot Strich hallo.
Jetzt nichts passiert.
Können wir einen schnellen Freiwilligen erhalten , etwas zu bewirken?
Komm auf.
Wie heißen Sie?
>> PANCHO: Pancho.
>> David J. MALAN: Pacho?
Komm auf.
Sobald Sie erhalten hier, das ist wird sehr berauschend,
aber es ist interessant als ich Eingabe.
Wenn Sie, gehen Sie vor und geben Sie möchten, dass Ihre Namen, machte ich dieses Programm nur für Sie.
Geben Sie einfach Ihren Namen an.
Enter.
Wunderbar.
Also gut, ich danke Ihnen sehr.
>> PANCHO: Vielen Dank.
>> David J. MALAN: OK.
>> [Applaus]
>> Das war sehr nett.
Bitte schön.
Was haben wir getan?
So dass wir schließlich zumindest machte dieses Programm dynamisch.
Jetzt ist es noch sicher von Entwurf nicht gerade berauschend,
aber wir endlich die Möglichkeit haben, Jetzt Code im Voraus zu schreiben, viel
wie die Autoren der printf, und dann dynamisch
adapt auf der Eingangs wir sind auf der Basis übergeben, entweder durch den Programmierer,
oder durch den Menschen, der wirklich ist Interaktion mit dem Programm.
Lassen Sie uns also eigentlich nun versuchen um ein paar andere Konstrukte zu tun
und sehen, ob wir die Programme nicht zu machen sich immer ausgefeilter.
Lassen Sie uns also weiter und statt zu gehen Schreiben dieses von Grund auf,
Ich werde in die heutige gehen Quellcode, und dies alles
ist auf den Verlauf des zur Verfügung Website, und Sie ziehen kann
in Ihrer eigenen Umgebung kommen Freitag einmal Problem
Satz 1 gibt Ihnen das Anweisungen, oder Sie könnten
tun Sie es in der Befehlszeile als gut, aber mehr, um in p kommen Satz 1.
>> Lassen Sie uns sehen, was in diesem Programm hier genannt, Addierer Punkt c.
Jetzt habe ich schon kommentiert , aber was ist neu?
Auf den ersten Blick, was für Linie Code ist absolut neu?
Wahrscheinlich nicht grundlegend unbekannte jetzt.
>> ZIELGRUPPE: [unverständlich]
David J. MALAN: Ja, so int x gleich zu n.
Wir haben noch nie etwas davon gesehen vor, aber int ist wahrscheinlich
das Symbol für welche Art von Variable, [? aus?] Integer.
So int für Integer.
Es ist einfach nur mehr prägnant. x ist nur willkürlich.
x und y und z sind noch ziemlich vernünftig für Zahlen,
aber in der Regel werden wir also einmal verwenden unsere Programme immer komplexer.
Holen int, natürlich, ähnlich wie get string,
ist wahrscheinlich zu bekommen ein Int vom Benutzer,
und dann werden wir zu gehen das Gleiche tun mit y.
Und offensichtlich, obwohl dies letzte Zeile, 24, sieht aus komplexer,
es geht um die Summe sagen und das ist, diese andere Sache.
>> Und beachtet Prozent i wahrscheinlich bedeutet was?
Welche Rolle spielt Prozent i offenbar zu dienen?
Es ist nur Platzhalter.
Recht?
Prozent s war für Streichquartett, Prozent i ist für Integer.
Es geht um Prozent f für Fließkommawert, der
ist nur eine Zahl mit einem Dezimalpunkt.
In anderen Worten, eine reelle Zahl ist.
Lassen Sie uns also tatsächlich kompilieren diese programmieren ganz schnell und dies machen Addierer.
Whoops.
Gute Gelegenheit.
So bemerken hier, die ganze Zeit über meinen Benutzer Namen für dieses Konto wird jharvard.
Ich bin in CS50 IDE, aka IDE50.
Und jetzt hier blau, ist eine Erwähnung, aber aus der Umgebung, von wo ich bin.
Und in der Tat, wenn ich heran bis an die Spitze hier bemerken, dass ich eine IDE50
und ich sehe, dieses Wort, wenn Sie Art drehen Sie den Kopf zur Seite, Arbeitsplatz.
Kurz gesagt, die Tatsache, dass Ich sehe Tilde-Schrägstrich-Arbeitsbereich
bedeutet, dass in diesem Text basierte Befehlsumgebung,
Ich bin in das Textäquivalent Diese grafische Ordner hier oben.
Also, wenn ich tun dot Schrägstrich Addierer, ist es keine Regel, die besagt
Ziel Addierer Stopp zu machen.
Ich weiß nicht, was das bedeutet, aber es ist schlecht aus irgendeinem Grund.
Keine solche Datei oder Verzeichnis ist sogar noch deutlich.
Wo ist es denn?
Basierend auf, wo ich geklickt , um die Datei vorher zu öffnen.
Wo könnte es sein?
>> Es ist wahrscheinlich in Quelle ein w, für Mittwoch,
und ich kann es sehen, in der Tat, wenn ich öffnen, dass bis.
Es gibt Addierer Punkt c, aber in Diese textbasierte Umgebung,
wieder, ich habe Super explizit zu sein.
Wenn ich auf Verzeichnisse in ändern möchten Quelle einen Mittwoch, muss ich geben,
cd Raum Quelle ein Mittwoch geben und jetzt
meine Aufforderung Änderungen geben Sie mir einen visuellen Hinweis, dass
Ich bin in der Tat an anderer Stelle in meiner Umgebung,
aber jetzt kann ich dies machen Addierer, so scheint es, um zu arbeiten,
dot Slash Addierer, geben Sie mir eine ganze Zahl.
One.
Zwei.
Die Summe von eins und zwei ist drei.
Aber wenn ich nicht mit, mal sehen, was zu bekommen int tut.
Geben Sie mir eine ganze Zahl.
Nein.
Wiederholen.
OK.
Fein.
50.
Gut.
So ist es schließlich zusammenarbeitet.
Und das ist, einige der Funktionalität, die diese Funktionen
kann für Sie gebaut haben.
>> So in der Umsetzung bekommen int, welche Programmier
konstruieren, aus der vergangenen Woche ist wahrscheinlich in gibt, dieses Verhalten der Wiederholungs zwingen,
wiederholen, wiederholen?
Ja, es gibt wahrscheinlich eine Art Schleife.
Es wird syntaktisch suchen verschieden von Blöcken Scratch ist,
aber das ist in der Tat was innerhalb der Datei.
Und in ein paar Wochen Zeit wir werden tatsächlich an der CS50-Bibliothek suchen
, was drin ist, aber es gibt eine Schleife zur Einführung genau das.
>> Wir spielen eine dumme kleine Spiel hier mit dieser Datei.
Condition Zero Punkt c.
Wir sind gerade dabei, in der Regel Zählen beginnen bei Null.
Und ich halte Scrollen vorbei einige der Sachen oben.
In blauer hier, mit allen abgegrenzt dieser Sterne und den Schrägstrichen,
diejenigen von Ihnen, zu programmieren vor, was ist das?
Warum müssen wir halten das Überspringen über sie?
Was?
>> ZIELGRUPPE: Es ist ein Kommentar.
>> David J. MALAN: Ja.
Es ist nur ein Kommentar.
Dies ist ein Kommentar für den Menschen zu lesen, dass in unserem Fall,
sagt uns, was der Name der Datei ist, wer es geschrieben hat, und was es tut,
so dass Sie nicht haben, um den Code zu lesen
zu wissen, was diese Datei geht.
Es ist nur eine Beschreibung, aber funktional, es ist irrelevant.
Und ich kann auch aus löschen meine Datei, und es hat keine Auswirkungen.
Die saftigen Leitungen sind diese ersten beiden hier, jetzt.
int main Leere ist das Äquivalent unserer, wenn grüne Flagge geklickt haben,
also werden wir zu gehen, dass sein für heute, und wir werden wieder kommen,
Schließlich, was int und nichtig sind, aber jetzt,
bemerken, was ich getan habe, Auch hier können Sie auch,
wenn Sie ein in Zeile haben kommentieren, wenn Sie
ein Gedanke, die Sie teilen möchten über ein spezielles Codezeile,
Convention in C ist es, Schrägstrich zu tun Schrägstrich, und dann ein paar knappen Worten,
nicht eine volle Satz, in der Regel nicht ein Absatz,
dass gerade erklärt Ihnen oder Ihrem TF oder anderen Nutzern oder Kollegen,
was Ihr Code tut.
Also anstatt lange suchen auf diese und leiten aus Linien
neun und 10, was dies zu tun, im Einklang acht
Ich gebe nur kommentieren bitten Sie den Benutzer für eine ganze Zahl,
dann habe ich nicht zu hart zu denken, über das, was Linien neun und 10 sind.
Ich weiß nur, dass das ist, was kollektiv sie tun.
>> Wie?
Nun, hier ist die Eingabeaufforderung.
Hier ist das immer der int.
Und auf der vorherigen basierend Verhalten, wie es scheint get int
ist intelligent genug, um sicherzustellen, dass der menschliche kooperiert und gibt sie
eine Ganzzahl.
Aber jetzt sehen wir das.
Und das erinnert an Scratch.
Ich behauptete, dass ich Analysieren der Eingabe des Anwenders,
aber etwas ungenau.
Und das offenbar in C ist, wie wir zum Ausdruck bringen, wenn ein anderes, ein Zweig,
eine Gabel in der Straße, aber ich sagen etwas ungenau.
Was ist der Fehler in diesem Programm?
Über weiter hinten?
Ja.
>> ZIELGRUPPE: [unverständlich] Null.
>> David J. MALAN: Ja.
Also, wenn ich geben Sie Null, laßt uns überlegen, genau das Fall oder eine Ecke Fall
wenn du möchtest.
Also, wenn ich geben Sie Null, die aus den Blöcke wird sich offenbar packen es?
Die if oder anderes?
Der andere, und es wird sagen: Sie nahm eine negative Zahl.
Und in der Tat Null wird nicht zugelassen positiv oder negativ ist,
und so, dass wäre falsch zu sein.
Das wäre ein Fehler zu sein.
Wie können wir dieses Problem beheben?
Jemand, der noch nie zuvor programmiert wurde?
Willst du--
>> ZIELGRUPPE: [unverständlich]
>> David J. MALAN: Zurückziehen?
>> ZIELGRUPPE: [unverständlich]
>> David J. MALAN: Oh, haben Sie?
Jemand, der noch nie zuvor programmiert wurde.
Möchten Sie Ihr Glück beim versuchen Dazu im roten T-Shirt?
Komm auf.
Oh yeah, come on up, wenn Sie nichts dagegen haben.
Deshalb sollten Sie nie mit so programmiert vor, was ist Ihr Name?
LAUREN: Lauren.
David J. MALAN: Lauren, alles in Ordnung.
So beheben Sie diesen Fehler für uns.
Sie haben nicht gesehen, C, vermutlich, und wahrscheinlich keine andere Sprache.
So beheben Sie dieses Programm für uns.
Schön, dich zu treffen.
Kein Druck.
LAUREN: Ja.
>> David J. MALAN: Aber auch wenn diese Glücksspiel nach Plan läuft,
das Essen zum Mitnehmen Hier sein, nur einmal zu starten
um Muster zu erkennen und folgern aus bestehenden Syntax
Wie sonst können Sie zum Ausdruck bringen sich selbst, kein Wortspiel beabsichtigt, um
einige zusätzliche Szenario zu erfassen.
So wir sagen else if.
printf, gut.
Und mit CS50 merken IDE und frankly-- IDE
steht für Integrated Entwicklungsumgebung.
Es ist nur eine andere Art zu sagen ein Programm, das Programm hilft.
Es tut benutzerfreundliche Dinge wie wenn Sie eine Klammer eingeben,
es gibt Ihnen automatisch die anderen.
Die Vermutung ist, dass Sie schließlich werde zu geben möchten,
und es tut es auch mit Zitaten.
>> So Ich mag die Leitung 23.
99% der Weg dorthin.
Jemand möchte mit einer Spitze in Glockenspiel?
Ich habe gehört, Semikolon aus dem Publikum.
Gut.
So dass vollendet, dass.
Und jetzt, ich habe nur ein wenig Bestürzung mit der Linie 21.
Wie wollen wir dies zum Ausdruck bringen?
Welche Frage wollen wir zu fragen, denken Sie?
Also vorher fragten wir die Frage, wenn n größer als Null ist, dies zu tun.
Else, das tun.
Also müssen wir eine Auswahl Frage hier zu stellen.
ZIELGRUPPE: [unverständlich]
David J. MALAN: Good.
Also, wenn n gleich Null ist.
Ausgezeichnet.
Also lassen Sie uns hier anhalten.
Vielen, vielen Dank für diese trotzen.
Lassen Sie mich ein wenig wohlverdienten Ihnen Stress-Ball, vielleicht gibt.
Also wir haben es fast geschafft.
In der Tat, Lauren, wenn Sie nicht Geist, lassen Sie mich hier zu zwicken,
nur im Einklang sogar sein was wir in Scratch sah, was
will ich mich mit Linien zu tun 21 und 24, nur einmal auf der Basis
wie wir taten dies im Scratch, vielleicht?
>> ZIELGRUPPE: Move it up.
>> David J. MALAN: Ja, verschieben Sie sie auf.
Also die anderen Zustand, der dritte oder vierten oder fünften oder endgültige Zweig,
sollte in der Tat danach kommen, und das ist nur durch Konvention,
nur weil wenn man so will.
Also ich tun müssen, um dieses zwicken zu machen.
Und ich muss meine setzen geschweifte Klammer wieder hier.
Und jetzt wird dieses Programm zu kompilieren.
Wir sind so nah, aber es gibt ein sehr, sehr subtilen Bug.
Mal sehen was passiert.
>> Zunächst möchte ich voran gehen und zu verkleinern.
Ich werde weitermachen und make Zustand Null.
Oh, ich habe gelogen.
Nun der Compiler eigentlich ziemlich smart.
Und ich verstehe nicht wirklich, es ist Fehlermeldung.
Verwenden des Ergebnisses einer Zuweisung als Bedingung ohne Klammern,
ist offenbar schlecht.
Aber was bedeutet das?
>> Nun wieder auf der Suche nach Mustern in Code, den wir bisher gesehen haben,
was ist die Leitung 17 tatsächlich tun, obwohl Lauren leicht bestimmt
Andernfalls?
Ja.
>> ZIELGRUPPE: [unverständlich]
David J. MALAN: Ja.
Also denken Sie daran das Gleichheitszeichen, offenbar wie wir sie benutzt haben, bevor, ist nicht gleich.
Seine Aufgabe, von rechts nach links.
So Linie 17 in dem Moment ist ein Zustand, und es ist
Ausführen von Code innerhalb der Klammern, aber wenn, dass Code ausgeführt wird,
was mit dem Wert von Null vor?
Was mit dem Wert von n vor?
Zu Null.
Also, wenn n ist immer Null, und wieder, nach der letzten Woche,
wir in der Regel sagen, dass Null- ist falsch und eine wahr ist,
oder ja ist eins und nicht Null ist.
So wahr und falsch, eine und 0.
Wenn n ab Zeile 17 hat angesichts der Wert 0, Null ist wahr?
Nein.
Per Definition Null ist falsch.
Das ist die Konvention sind wir gehen, um vorwärts zu klammern.
So wird Linien 18, 19, und 20 haupt jetzt gelten, logisch?
Sie können nicht.
Also die Frage gestellt, wir aber nicht ganz exakt,
und Sie würden nicht wissen, es sei denn Sie es gesehen haben, die Lösung in C
ist, wenn Sie zum Ausdruck bringen wollen, Gleichheit, sagen, Sie Gleichen gleich.
So Gleichheitszeichen wurde bereits verwendet durch eine Übertragung von rechts nach links.
Equals gleich Mittel entspricht.
Und wenn Sie wirklich wollen Ihre Meinung gebogen werden, in JavaScript und PHP,
es gibt gleich gleich equals, die bedeutet etwas ganz anderes,
aber wir werden zu bekommen, dass es dauerte nicht lange.
>> Also das ist eine einfache Lösung, aber erkennen, Super leicht, diesen Fehler zu machen,
und dann wundern und Kampf für Minuten, wenn nicht Stunden,
Warum ist mein Code nicht Ausführen als ich vorhabe?
Es ist, weil Sie nicht sagen, es genau das, was Sie meinten.
Das war also fast perfekt war und es ist toll
dass wir in diesen beiden kleinen stolperte Dinge, denn jetzt, wenn wir sie zu beheben,
und ich machen Condition Zero dot Slash Zustand Null ist,
Ich möchte eine ganze Zahl bitte.
Mal sehen.
Nein.
Es wird mich zwingen, es zu tun.
So 42.
Ich entschied mich für eine positive Zahl.
So, jetzt muss ich beweisen, wie dieses Programm richtig?
Wenn Sie ein Mathematiker sind, können Sie nicht wirklich beweisen dies durch Versuch und Irrtum,
Recht?
Man kann nicht einfach Beweis durch Beispielsweise, aber zumindest
als Programmierer sind wir nicht werde versuchen, für jetzt beweisen,
dass dies tatsächlich richtig, aber ich wahrscheinlich
testen einige repräsentative Fälle.
>> Ich habe 42 getestet.
Ich konnte 43 zu testen.
Ich konnte 44 zu testen.
Test 45.
Recht?
Aber ich könnte dies eine wirklich lange Zeit zu tun.
Was wäre etwas mehr sein interessante Fälle zu versuchen?
ZIELGRUPPE: [unverständlich] Null.
David J. MALAN: Also Null.
Sicherlich.
Und gut, wir haben es dieses Mal bekam, dank neuer Code Lauren.
Was ist ein weiteres gutes Beispiel, um zu versuchen?
ZIELGRUPPE: negativ.
>> David J. MALAN: Negativ eins, und vielleicht etwas ein wenig größer,
so vielleicht negativen 42, aber im allgemeinen, wenn
Testen Ihrer Programme voran, du bist
gehen zu denken, zu wollen, zu sich selbst, wie das, was
sind die grundlegenden verschiedene Fälle.
Und ich wage zu behaupten, einen negativen Fall ein positiver Fall ist, und ein Null-Fall
ziemlich rundet diese heraus.
Lassen Sie uns an einer Variante dieses though.
AGB eins.
Das ist eine richtige Lösung hier, so dass Sie zwei und Online zu sehen,
wenn Sie durch die zu Fuß Komplettlösungen, wird in der Regel
erhöhen diese schrittweise bis wir genau das bekommen, den richtigen Ansatz.
Was ist, wenn wir uns fragen, wollte zwei Fragen auf einmal?
>> Lassen Sie mich eröffnen diese statt.
Nicht-Switch aus Gründen wir werden ein anderes Mal zu sehen.
Was ist neu syntaktisch hier?
Ich bin derzeit ein Spiel wo der Computer sagt
mir, gib mir eine ganze Zahl zwischen einem und 10,
und dann werde ich die Beurteilung der Benutzereingabe.
In Englisch, basierend auf der Code Sie hier sehen,
in blau, was dieses Programm zu tun?
ZIELGRUPPE: [unverständlich] abgeholt eine große oder kleine Anzahl.
David J. MALAN: Ja.
Es ist nur, ob Spruch Ich entschied mich für einen großen oder mittleren,
oder geringe Anzahl an einem sehr basierten willkürliche Definition von kleinen, mittleren,
und hier groß, aber Ankündigung die Syntax, die neu ist ist dies.
Es gibt nicht weniger als int oder gleich unterschreiben, oder größer als oder gleich zu unterzeichnen,
wobei eine über der anderen, dass man kann wie Microsoft Word zum Ausdruck bringen in.
Also in einer Programmiersprache in der Regel nur zwei Zeichen zu tun,
einer nach dem anderen.
Und was diese wahrscheinlich nicht darstellen, Ampersand Ampersand.
ZIELGRUPPE: [unverständlich]
David J. MALAN: Ja.
Es bedeutet nur, und weil es stellt sich heraus, dass die Autoren der C
verwendet ein einzelnes Und-Zeichen, was Sie vielleicht denken
wäre perfekt für den Begriff der, und ist bereits aufgebraucht ist,
so Ampersand Ampersand tatsächlich erfasst den Fall, dass wir eigentlich wollen.
>> Also lassen Sie uns nun über zwei Dinge stolpern.
Lassen Sie mich gehen Sie vor und eröffnen ein.
Etwas, das ein wenig besorgniserregend ist.
Ungenauigkeit Punkt c.
Lassen Sie mich zwei Dinge hier vorstellen.
One, Bekanntmachung, die wir tun können, Mathe, als nach wie vor, wenn
wir taten Plus von zwei Zahlen, x und y.
Was ist das Programm offenbar gerade?
Ich habe es nicht kommentiert, und ich habe Prozent f eingeführt,
aber ich habe schnell gesagt habe Prozent f bedeutet, Floating-Point-
Wert, der reelle Zahl ist.
Etwas mit einer Dezimalstelle Punkt, der keine ganze Zahl ist.
Was denken Sie, ist dieses Programm versucht, mich auf dem Bildschirm zu zeigen?
Ja?
Publikum: Das Ergebnis einer über 10.
David J. MALAN: Ja.
Was ist das Ergebnis einer durch 10 geteilt.
Richtig, weil alle von Ihnen haben wahrscheinlich bis zu wissen, dass man über 10 gewachsen
ist was?
Ja, es ist nur 1/10 oder 0,1.
Recht?
Also mal sehen, was das eigentlich ist.
Also lassen Sie mich gehen Sie vor und speichern Sie diese.
Lassen Sie mich hier unten zu gehen.
Machen Ungenauigkeit dot Schrägstrich Ungenauigkeit und Hinweis Auch
in einer Linux-Umgebung, Sie dies nicht tun haben zu tippen Ungenauigkeit und nehmen Sie
den ganzen Tag.
Es in der Regel, wenn Sie Tab getroffen, es Ihr Gedanke für Sie fertig sind,
basierend auf den Worten, die sind im aktuellen Verzeichnis.
OK.
So dass Sie hatten Recht.
Eine durch 10 geteilt ist, in der Tat, 0.1.
Aber ich bin ein wenig neugierig.
Und es stellt sich heraus printf unterstützt einige Funktionen
wobei Sie mehr als geben Die Standardanzahl der Dezimalstellen.
Also, wenn ich 10 Dezimal sehen Punkten kann ich Prozent zu tun,
für das Platzhaltersymbol, dot 10 für, geben Sie mir 10 Dezimalstellen,
und dann noch Fließkomma Wert und, nebenbei,
was ist das Backslash-n anscheinend halten wir die Verwendung?
Es stellt sich heraus, es ist ein Symbol für eine neue Zeile.
Es ist die sehr explizit Weg zu sagen, an den Computer an,
bewegen Sie den Cursor auf die nächste Linie, nachdem Sie fertig sind.
Und wir werden sehen, was passiert, wenn wir das nicht tun.
>> Lassen Sie mich neu kompilieren zu machen Ungenauigkeit.
Jetzt dot Slash Ungenauigkeit.
OK.
Noch recht.
Eine durch 10 geteilt.
Jetzt bin ich immer ein wenig neugierig, though.
Was ist, wenn ich sehe 20 Dezimal weist darauf hin, neu kompilieren, rerun,
und als ein beiseite Geschwindigkeit, können Sie auch
Ihre Auf- und Abwärtspfeile, um blättern Sie durch Ihre Geschichte,
so dass Sie nicht haben, um zu halten Abtippen dieser Befehle eingeben.
Huh.
Ich habe nicht erfahren, dass in der Grundschule.
In Ordnung, so lassen Sie mich zu sehen, wie 29 Stellen aus.
Vielleicht ist es nur ein Zufall.
Vielleicht mein Computer handeln seltsam.
Das ist nicht eine Sache, nicht wahr?
Es ist etwas, deterministisch zu tun.
So stellen Ungenauigkeit.
OK, das ist durcheinander.
Also, was ist hier los?
>> So scheinbar Ihrer Lehrer hat gelogen
um Ihnen all diese Zeit für aus Gründen, die wir in Kürze sehen.
Aber fangen wir mit einem anderen Programm zu beenden.
Dies ist ein wenig Programme jemand vor einigen Jahren schrieb,
und es ist eigentlich Teil eines Wettbewerbs.
Niemand wirklich schreibt Code wie diese, und wenn Sie das tun,
dies ist stilistisch ein Problem.
Aber die Leute tun dies für prahlen.
Um den verwirrendsten schreiben Suche Programm, das
dennoch tut etwas Interessantes.
Und der Hinweis Ich dachte, wir lassen Sie am heute vor Colton spielt uns hier draußen,
ist es, dieses Programm ausführen, die, auch in nur mit
C in diesem Text-basierte Umwelt, gibt uns diese.
Verdammt.
>> [Gelächter]
>> Stehen zu.
[Unverständlich] c Strich l m.
Du wirst die magische um zu sehen, Beschwörungsformel, die wir in Kürze sehen.
[Unverständlich] In Ordnung.
Und jetzt können Sie auch Dinge wie diese.
Das ist es.
Für CS50 wir werden Sie am Freitag zu sehen.
>> [Musikwiedergabe]
>> [Applaus]