[Powered by Google Translate] DAVID J. MALAN: All right, dies CS50 und das ist das
Ende der Woche 1, sind so Karten in Studie und die Gesamtzahl der
Klassenkameraden, dass Sie in diesem Jahr haben, ist 745.
Und wir sind so begeistert, dass so viele von euch in der natürlich
in diesem Semester, aber auch wenn dies natürlich ist so groß,
erkennen, dass es diese Dinge ist wie Freitag Mittag, wie
Bürozeiten, 15-köpfiges Abschnitte, und so weiter,
sind wirklich bedeutete, diese intime erstellen
Umwelt.
Also auch wenn wir vielleicht einmal oder zweimal pro Woche versammeln sich hier in
Sanders, wissen, dass viel von Ihrer Erfahrung in diesem Kurs
wird sehr hands-on sein, auf der Seite von deinen Klassenkameraden
und das Lehrpersonal.
>> So hier gehen wir, Herbst 2012.
So erinnern daran, dass wir das letzte Mal auf einem Zettel der beendeten
Ungenauigkeit, reden über die Darstellung von Zahlen.
Und wir sahen uns an der Ausfälle, was passiert ist, in der
realen Welt, wenn es zu Missverständnissen kam
wie Computer funktionieren.
Nun, heute werden wir ein weiteres jener Ideen überdenken
sowie weiterhin unsere Diskussion des CS50-Client
und C und was es bedeutet, wirklich Programm.
Aber zuerst, nur ein paar Wirbelwind Ankündigungen.
>> Abschnitte beginnen an diesem Sonntag, und die erste Woche ist immer ein
bisschen einen schnellen Start, denn wir haben nur in
Ihrer Sektion Formen.
Wir tun das gleiche, jetzt, mit den Lehr-Stipendiaten, jetzt
dass sie ihre Pläne wissen, so dass wir mit dem Ziel, durch
Samstag Morgen, um sich mit Ihnen mit Ihrem Abschnitt
Zuordnung und TF.
Erkennen, dass sie beginnen den nächsten Tag, Sonntag
oder Montag oder Dienstag.
Und dann werden wir aufnehmen Abschnitt Veränderungen, wie sie entstehen
in den kommenden Tagen.
Sprechzeiten sind unterdessen wieder heute Abend, 08.00 Uhr bis 11,
Annenberg sowie morgen Abend.
Auch wenn das Problem Sets sind in der Regel aufgrund donnerstags
mittags, merkt man bis zu fünf späten Tage zu verbringen,
damit die Verfügbarkeit der Bürozeiten donnerstags, wenn
Sie Bargeld in einem dieser späten Tage und damit einreichen
etwas auf Freitag.
Lassen Sie mich darauf hin, dass Scratch unter den mehr Spaß macht, unter den
mehr low key Problem Sets.
Und ich würde auf diesen späten Tagen hängen, strategisch, nur
zur späteren Verwendung in den Semesterferien, wenn das Leben beginnt, sich in die Quere kommen
mit Mittelklausuren und andere Klassen.
Problem Set 1, mittlerweile würde auf den Verlauf der geschrieben werden
Website am Freitag, als an der Strecke zu Fuß sein
durch Video, Willen, um 2:30 Uhr am Freitag gefilmt werden
und dann online veröffentlicht am nächsten Tag.
>> So landeten wir am Montag.
Ich will - eigentlich beachten Sie hier.
Da die Klassen - weil Sanders nicht genau zu verleihen
sich lässig Q & A hin und her furchtbar gut, wir sind
gehen, um etwas versuchen, ein wenig neu in diesem Jahr, wobei
wenn Sie sich nicht wohl erhöhen Ihre Hand oder einfach nur
lieber nicht heben Sie Ihre Hand in einem Raum wie diesem,
werden wir einige der Lehre Stipendiaten und CAs haben
Besatzung cs50.net/discuss während der Vorlesungszeit.
Also, wenn Sie haben eine Frage, weil ich war völlig
Unklar über etwas, oder du bist neugierig einige
Thema, versuchen Entsendung es dort.
Kennzeichnen Sie es mit einem Etikett der Vorlesung, und wir werden unser Bestes tun,
heute und nächste Woche - wir werden versuchen, diese aus - zum Bereich IT
entweder elektronisch, online, oder wenn es sich anfühlt, sollten wir
wirklich auf sie en masse, einer der Lehre Stipendiaten oder
CAs ihre Hand heben und fragen
anonym in Ihrem Namen.
So geben wir dies eine ausprobieren und sehen, wie gut das funktioniert.
Aber, mit allen Mitteln, auch weiterhin an den Händen, wie Sie möchten zu erhöhen.
>> So wir das letzte Mal gezeigt, dass 10% oder ein Zehntel nicht, in
Tatsächlich 0,1, wie du vor vielen Jahren unterrichtet wurden.
Es ist in der Tat ein Wert wie dieser.
Aber das ist nicht ganz wahr, nicht wahr?
Wir müssen nur diese Einschränkung in Computern, wodurch, wenn Sie
nur eine begrenzte Menge an Speicher, RAM oder mehr
speziell Bits, gut, es gibt nur eine endliche Anzahl
Dinge, die Sie darstellen kann.
Zum Beispiel, wenn wir die Zahl Null, und wir wollen
stellen in binärer, unter Verwendung von acht Bits, wobei ein Bit,
wieder ist eine Null oder eine Eins ist, könnten wir
stellen sie als 00000000.
Und das ist ein wenig unnötig wortreich.
Just in dem Dezimalsystem in der realen Welt,
in der Regel, wenn Sie die Nummer 123 schreiben wollen, müssen wir
Menschen wahrscheinlich nicht schreiben 00000123, obwohl,
funktional, das ist genau die gleiche Nummer.
Wir haben gerade Drop führenden Nullen, so zu sprechen.
>> In binären, können wir das gleiche tun.
Binär-und Null, Null-und Binär ist nur Null.
Sie brauchen nur ein einzelnes Bit.
Aber noch einmal, die häufigste Maßeinheit in der Welt
des Computing ist Byte acht Bit.
Nur weil ein bisschen, ziemlich nutzlos.
Acht Bits, nicht sehr nützlich, aber zumindest ist es mehr
nützlich als eine einzelne Maßeinheit.
Also mit acht Bits, wir stellen in der Regel binär.
Also hier haben wir die Zahlen Null, eins, zwei, und dann, als
Nate hat in unserem Video am vergangenen Mittwoch, können wir weiterhin
Zählen bis zu sieben, acht ist.
Und dann, wenn wir mehr und mehr Bits, wir
zählen kann bis ins Unendliche.
Aber wenn Sie nur eine begrenzte Anzahl dieser Bits, wie es
der Fall in einem Computersystem oder sogar Flugkörpers
System, gut, ja Sie haben nur einen
endliche Menge an Präzision.
Also, wenn Sie die Zahl wie 0,1 vertreten, auch wollen, die
Computer auszuwählen und zu wählen.
Und wenn es nur eine endliche Anzahl von Zahlen es kann
darstellen, kann es in der Nähe 0,1 für dich kommen, aber es kann nicht
zwangsläufig Ihnen genau den Wert, den Sie wollen.
Und dies ist nur eine der Herausforderungen von Computern,
unter der Haube, zum Glück.
>> Als wir uns weiter bewegen, in dem Semester, diese untere Ebene
Details werden viel weniger interessant, aber sicherlich die
Anwendung dieser Ideen kann etwas sehr reale Welt
Verzweigungen.
Einer ist ein bisschen Spaß.
Wie viele von euch haben die erstaunlichen Film Office Space gesehen?
Wenn Sie nicht haben, das ist Ihre inoffizielle
Hausaufgaben für die Woche.
Aber in Office Space, nehmen die Stipendiaten in diesem Film
Vorteil eben dieser Idee, aber sie tatsächlich gestohlen
es aus einem anderen Film, den Sie haben könnten
gesehen, sogar Jahre vor.
Also lassen Sie mich Ihnen ein paar Sekunden dieser Trailer von
diese erstaunliche Film und das ist sehr viel
akademisch relevant.
>> [SPIELT MOVIE]
Eigentlich bin ich gefördert.
Ich kann programmieren einen Virus, wird rippen, dass
platzieren off big time.
Nun, wie funktioniert es?
Jedes Mal gibt es eine Bank Transaktion, bei Interesse ist
Computertomographie, gibt es Tausende ein Tag, so endet der Computer
mit diesen Fraktionen einen Cent.
Aber ich werde nicht etwas Illegales zu tun.
Illegal? Samir ist dies Amerika.
Sie haben zu Gott schwören.
Wenn niemand weiß, über dieses aber uns, alles in Ordnung? Keine Familie, keine
Freundinnen, niemand.
[Unverständlich].
Mach dir keine Sorgen, Mann, ich werde es niemandem sagen nicht.
[Film endet]
>> Alles klar, vielleicht fand ich diesen Film besser als die meisten
Menschen hier, aber in jedem Fall, daß das Virus waren
versuchen, zu erstellen -
und in den Filmen, wann immer sie nennen würde etwas ein Virus,
es ist generell nicht wirklich ein Virus.
Es ist nur ein Programm, dass jemand etwas zu tun schrieb.
Und in diesem Fall wurden die Jungs versuchen, ein Programm zu schreiben
das nutzten ihre Firma namens Innotech der
Rechensystem, wobei Computern auch, selbst wenn es
um Geld geht, kann nicht unbedingt
stellen Geld genau.
So, obwohl Sie vielleicht $ 0,10 in Ihrem Bankkonto haben,
0,10, gut, könnte der Computer tatsächlich denken, dass Sie
diese vielen Cent in Ihrem Bankkonto.
Und was diese Jungs wurden streben zu tun - und sie
stahlen die Idee, schaltet es aus Superman III, wo
Richard Pryor taten das gleiche - sie waren im Wesentlichen
Schreiben von Programmen, die für alle der Hinterkante nehmen streben
Zahlen, alle der winzigen, kleinen, kleinen Fraktionen
Pfennige und Absaugen denen ab, so dass die Menschen nur
Gedanken, oh, es ist nur $ 0,10 gibt, aber all jene
Zahlen am Ende schließlich summieren.
So eine wunderbare Idee und es ging nach hinten los urkomisch, dass
bestimmten Film.
>> Aber in der realen Welt auch gibt es viel mehr zu
Auswirkungen dieser Art von Dingen.
Und einer der Gründe für die in den Bereich der Tauchcomputer
Wissenschaft ist wiederum ihre Anwendbarkeit nicht auf die
Ingenieurwissenschaften allein, sondern nur um
anderen Bereichen.
Das ist also eine weniger unbeschwerte Blick auf, was schief gehen kann, aber
Es ist auch recht Augenöffnung, denke ich, wenn es darum geht
genau zu verstehen, wie allgegenwärtig Technologien wie
Computer und Programmierung oder in diesen Tagen,
in Form von Software.
Also das nächste Clip ist nur etwa sechs Minuten, fährt
wo wir aufgehört haben letztes Mal, aber erlaubt es uns, ein wenig aussehen
mehr in die Tiefe an einem solchen zu diesen Fragen.
Lassen Sie mich fahren Sie wo wir aufgehört haben,
das war genau hier.
Und wir haben Teil zwei von zwei, für etwa sechs Minuten hier.
>> [PLAY MOVIE]
Geplagt modernen Raketentechnik.
Im Jahr 1991, mit dem Beginn des ersten Golfkriegs, der Patriot
Raketen erlebt eine ähnliche Art von
Anzahl Umstellung Problem.
Und als Ergebnis wurden 20 Personen, 20 amerikanische Soldaten getötet
und etwa 100 weitere verletzt, als der Patriot, der sollte
gegen eingehende Scuds schützen,
versäumt, eine Rakete abzufeuern.
>> Als der Irak in Kuwait einmarschierte und Amerika startete eine Wüste
Sturm Anfang 1991 waren Patriot Raketen-Batterien
eingesetzt, um Saudi-Arabien und Israel aus den irakischen schützen
Scud Raketenangriffen.
Der Patriot ist ein US-Mittelstreckenraketen Oberfläche-zu-Luft-System,
hergestellt von der Raytheon Company.
Die Größe des Patriot Interzeptor selbst geht es darum,
rund 20 Meter lang und wiegt etwa 2.000 Pfund.
Und sie trägt einen Sprengkopf von ungefähr - ich denke, es ist etwa
150 Pfund.
Und der Gefechtskopf selbst ist eine hochexplosive die hat
Fragmente drumherum.
Die Hülle des Gefechtskopfes ist dafür ausgelegt, wie Schrot handeln.
Die Raketen sind vier pro Behälter durchgeführt und sind
transportiert von einem Sattelauflieger.
>> Die Patriot-Raketenabwehrsystem geht mindestens bis
20 Jahren.
Es wurde ursprünglich als Luftabwehrflugkörper zu gestalten
schießen Sie feindliche Flugzeuge, im ersten Golfkrieg.
Wenn der Krieg entlang kam, wollte die Armee, es zu benutzen, um zu schießen
unten Scuds, keine Flugzeuge.
Die Air irakischen Force war nicht so sehr ein Problem, aber die Armee
wurde über Scuds besorgt.
Und so versuchten sie, den Patriot aktualisieren.
Abfangen ein Feind Rakete reist am MACH 5 ging
genug Herausforderung sein.
Aber wenn der Patriot in Dienst gehetzt wurde, die Armee
hatte keine Kenntnis von einem irakischen Modifikation, die ihre aus
Scuds fast unmöglich zu schlagen.
>> Was passiert ist, die Scuds, die waren
kommen in instabil waren.
Sie wurden Wackeln.
Der Grund dafür war die Iraker, um 600 zu erhalten
Kilometer von einem 300 km range missile, nahm
Gewicht aus dem vorderen Gefechtskopf und
machte der Gefechtskopf leichter.
So, jetzt die Patriot versucht, an der Scud kommen, und die meisten
die Zeit, die überwältigende Mehrheit der Zeit, wäre es
nur durch die Scud fliegen.
Nachdem die Patriot-System Betreiber erkannte die Patriot
verfehlte ihr Ziel, sie den Patriot Sprengkopf detoniert.
Um mögliche Verluste zu vermeiden, wurde es erlaubt
auf den Boden fallen.
Das war, was die meisten Leute sah, so groß Feuerbälle in den Himmel,
und als Abschnitte von Scud Sprengköpfen missverstanden.
>> Obwohl in den Nachthimmel erschien Patriots zu sein
erfolgreich zerstört Scuds bei Dhahran, könnte es keine sein
Fehler über seine Leistung.
Dort verlor der Patriot Radarsystem Spur eines
eingehende Scud und nie gestartet durch
zu einem Software-Fehler.
Es war die Israelis, die zum ersten Mal entdeckt, dass je länger
das System eingeschaltet war, desto größer ist die Zeit Diskrepanz wurde,
aufgrund einer Uhr im System-Computer eingebettet ist.
Etwa zwei Wochen vor der Tragödie in Dhahran, der
Israelis berichtet, das Verteidigungsministerium, dass die
System wurde Zeit zu verlieren.
Nach etwa acht Stunden läuft, bemerkt sie, dass die
System wurde zusehends weniger genau.
Das Verteidigungsministerium reagierte, indem er alle
die Patriot-Batterien nicht zu verlassen, die Systeme
für eine lange Zeit.
Sie haben nie gesagt, was eine lange Zeit war - 8 Stunden, 10
Stunden, 1.000 Stunden.
Niemand wusste.
>> Die Patriot-Batterie in der Kaserne am Dhahran stationiert
und seine mangelhafte interne Uhr hatte über 100 Stunden auf bereits
in der Nacht vom 25. Februar.
Es nachgeführt Zeit mit einer Genauigkeit von ungefähr einem Zehntel einer Sekunde.
Jetzt ein Zehntel der zweiten ist eine interessante Zahl, weil
es kann nicht in binärer ausgedrückt werden, genau, was bedeutet,
kann es nicht genau in einem ausgedrückt werden
modernen digitalen Computers.
Es ist schwer zu glauben.
Aber nutzen dies als ein Beispiel.
>> Lassen Sie uns die Nummer ein Drittel.
Ein Drittel kann nicht dezimal ausgedrückt werden, genau.
Ein Drittel wird 0,333 los für die Unendlichkeit.
Es gibt keine Möglichkeit, dass mit absoluter Genauigkeit in dezimaler tun.
Das ist genau die gleiche Art von Problem, das in passiert
der Patriot.
Je länger das System lief, desto schlechter ist die Zeitfehler wurde.
Nach 100 Betriebsstunden war die Fehler in der Zeit nur
etwa ein Drittel einer Sekunde.
Aber in Bezug auf Targeting eine Rakete reist am MACH 5,
es führte zu einem Tracking Error von über 600 Metern.
Es wäre ein fataler Fehler für die Soldaten an Dhahran sein.
>> Was passiert ist, eine Scud Einführung wurde von Frühwarnsystemen erkannt
Satelliten und sie wussten, dass die Scud wurde ihr Kommen
allgemeine Richtung.
Sie wussten nicht, wo sie kam.
Es war nun an der Radar-Komponente des Patriot
System verteidigen Dhahran, zu lokalisieren und zu verfolgen die
ankommenden feindlichen Rakete.
Das Radar war sehr smart.
Sie würden tatsächlich verfolgen die Position des Scud und dann
vorherzusagen, wo es wäre wohl das nächste Mal die
radar schickte einen Impuls aus.
Das wurde als der Bereich Tor.
Dann, wenn der Patriot entscheidet genug Zeit vergangen zu gehen
zurück und überprüfen den nächsten Standort für diese ermittelten
Objekt, geht es zurück.
Also, wenn es wieder an die falsche Stelle ging es dann sieht keinen
Objekt, und es entscheidet, dass es kein Objekt.
Es war ein falscher Erkennung und lässt die Spur.
>> Die eingehende Scud verschwand aus dem Radarschirm.
Und Sekunden später schlug sie in die Kaserne. Die Scud
getötet 28 und war der letzte feuerte während
der erste Golfkrieg.
Tragischerweise kam die aktualisierte Software Dhahran
am folgenden Tag.
Und die Software Fehler war behoben, schließen ein Kapitel in
Die bewegte Geschichte des Patriot.
PATRIOT ist eigentlich eine Abkürzung für "Phased Array Tracking-
Abfangen von Target. "
>> Alles klar, also ein viel traurige Ergebnis nicht ganz
Verständnis dieser Welt.
Und die Gerichte zum Mitnehmen, wirklich, aus dem Film ist, dass die Lösung
es wurde neu starten Raketenabwehr
jeder einmal in eine Weile.
Und so wieder, eines der Ziele dieses Kurses, sicherlich
auf einer bescheidenen Umfang als diesen Anwendungen besteht darin,
wirklich offen jedermanns Augen zu genau, wie Sie gehen über
Maschinen zum Herstellen tun, was Sie wollen, dass sie tun und wie Sie gehen
zu tun, dass korrekt, während auf dem Weg, es zu tun
gut, elegant, und so weiter.
Und auch heute, lasst uns tauchen Sie ein in ein wenig mehr, aber
so dass wir nicht zu schnell, vor allem für diejenigen, die weniger
komfortabel, sondern auch so, dass wir halten das Interesse der
die mehr Komfort, lass uns einfach schnell beginnen mit ein bisschen
der Rückblick auf einige dieser Ideen.
Und wieder weg fragen, sowohl in Person oder online, wenn Sie
Fragen, so können wir halten alle auf der gleichen Seite.
>> Also das CS50 Appliance, schnellen Schritt zurück, ist
was, in Ihren eigenen Worten?
Es ist OK, wenn Sie keine Ahnung, was diese Worte vielleicht noch haben.
[Unverständlich]
Okay, so eine universelle Schnittstelle für -
dass wir alle teilen.
Absolut.
So konnten wir zum Beispiel sagen Sie zu einige gehen
Website, laden Sie diese Software für Mac OS.
Laden Sie diese Software für Windows, konfigurieren
hin und her.
Aber die Realität ist dann laufen wir in unzählige technische
unterstützt Fragen.
Und auch in diesen Tagen viel von dem, was ist Server-Seite getan,
in der Welt der Computer, vor allem wenn es darum geht,
Web-Entwicklung und Web-basierte Anwendungen, ist eigentlich
häufig auf Unix-oder Linux-Computern durchgeführt, im Gegensatz zu
Macs oder Windows PCs.
>> So unter den upsides, dann der Verwendung dieses Ding namens
CS50 Appliance ist, werden wir alle die gleiche Umgebung.
Also jeder ist auf der gleichen Seite, egal welche Hardware Sie
kam Campus mit, sondern wird auch in genau sein Dilettantismus
die gleiche Umgebung, dass Sie in Richtung verwenden
Semester Ende sowie für Web-Entwicklung, sowie in der
Zukunft für reale Anwendungen davon.
So konkret ist der CS50 Appliance ein freies Stück
Software, die Ihnen ein anderes Betriebssystem laufen zu lassen,
Linux, in diesem Fall auf dem eigenen Rechner, in einem Fenster.
Jetzt können Sie nicht nur downloaden Sie das Gerät.
Sie benötigen ein Programm, mit dem zu spielen oder lassen Sie das Gerät.
Und das Stück Software wird im Allgemeinen als eine bekannte
Hypervisor.
Hypervisors kommen in Form von Produkten wie VMware,
Virtual Box, Parallels.
Alle Arten von Unternehmen machen Software, sowohl kostenlose als auch
Gewerbe gleichermaßen.
Was Sie in Problem finden Sie unter Set 1 sind Anleitungen zum
erhalten kostenlose Software, mit der die
Führen Sie den CS50 Appliance.
Und wenn Sie das tun, haben Sie in einem Fenster auf Ihrem Mac oder PC,
eine Desktop-Umgebung, die ganz so aussieht, wo
es hat einen Startmenü-like, was in der
linken unteren Ecke.
Es verfügt über einen Home-Ordner, oder Home-Verzeichnis, in der linken oberen
es kann ein Papierkorb, und so weiter.
Also werden wir necken neben den notwendigen Angaben, wie wir gehen.
>> Aber jetzt fangen wir in C. tauchen
So C ist diese Programmiersprache, im Geiste
Scratch, aber weit weniger grafische Oberfläche, sondern ironischerweise weit
stärker, wenn Sie versierte mit ihm zu bekommen.
So in C schreiben wir Programme, die von Schreiben von Quellcode, was
Diese Englisch-ähnliche Syntax, ähnlich den Socken
Beweis dafür, dass wir das letzte Mal, dass Sie ermöglicht haben
express yourself ziemlich genau, wenn
arcanely, an den Computer.
>> Also, welche Art von Produkt-Software haben Sie tatsächlich benötigen
Programme in einer Sprache wie C zu schreiben, auf der Grundlage unserer
Gespräch am Montag?
[Unverständlich]
OK, Sie brauchen nur einen Texteditor.
Sie benötigen keine spezielle Software
per se zu schreiben Programme.
Sie brauchen nur einen Texteditor wie Notepad, auf Windows,
TextEdit auf dem Mac oder etwas namens gedit, in der Welt der
Linux, die wir hier verwenden werden.
Und das ist es, um die Programme zu schreiben.
>> Aber Schreiben ist nur die Hälfte der Gleichung.
Sie müssen dann, um sie auszuführen.
Aber um das Ausführen von Programmen -
Sie können nicht ausgeführt Quellcode.
Sie haben stattdessen auf das, was sie als erstes tun?
Yeah.
DAVID J. MALAN: Sie müssen
kompilieren.
Und jemand anderes, Kompilieren des Quellcodes bedeutet -
[Unverständlich]
DAVID J. MALAN: Genau.
Translating es Nullen und Einsen.
Da alle von uns, in diesen Tagen haben Computer, die CPUs haben,
fast die alle von der Firma Intel hergestellt und
Intel Inside, bedeutet, dass es ist das Gehirn in Ihrer
Computer, wie der CPU bekannt.
Und eines der Dinge, dass Gehirn tut, ist, sie weiß,
wie man Muster von Nullen und Einsen verstehen.
Er weiß, was Bitmuster Zusätzlich stellt, was
Muster stellt Subtraktionen, welches Muster der
Bits repräsentieren Druck, und die Schaffung eines hörbaren Ton.
>> So kurz, die CPU, die mit dem Betriebssystem gekoppelt ist,
welches ein Stück Software, die auf der Oberseite der CPU ausgeführt wird,
so zu sprechen.
Gemeinsam wissen, diese beiden Stücke, wie man Programme, die ausgeführt werden
wir Menschen zu schreiben.
>> Also, wenn ich in den CS50 Appliance hier gehen, ich brauche zu öffnen
bis einem Texteditor, und ich kann darauf zugreifen
in einer Reihe von Möglichkeiten.
Ich kann entweder gehen Sie zu Menü, Programmierung,
und dann kann ich wählen -
Nö, nicht das Menü.
Ich kann auf Zubehör go / gedit hier zu öffnen
mein kleiner Texteditor.
Oder einfacher, kann ich auf dieses kleine Symbol in der unteren
linken Ecke.
Und jetzt bekomme ich diese Umgebung hier.
Es ist ziemlich erinnert an einen einfachen Text-Editor, mit nur
ein oder zwei Unterschiede.
In der Spitze, wo der Cursor blinkt jetzt, das ist, wo
Ich kann mit dem Schreiben beginnen meinem Code.
Im Boden ist dieses Ding namens das Terminal-Fenster.
Und welche Arten von Dingen kann ich dies tun
sogenannte Terminal-Fenster?
[Unverständlich]
>> Okay, also werde ich Befehle ausführen.
Und einige der Befehle, die wir am Montag lief waren ein wenig
kryptisch auf den ersten, aber ls für die Liste, cd change directory,
rm, für zu entfernen.
Es ist also eine Art der alten Schule Art der Navigation Ihrer
Computer, nur mit Ihrer Tastatur und textuelle Kommandos,
und nicht, im Allgemeinen unter Verwendung einer Maus.
Aber wir werden sehen, es dauerte nicht lange, dies tatsächlich gibt uns ein
wenig mehr Leistung und ein wenig mehr Präzision, mit der die
uns ausdrücken.
Und dann hier auf der linken Seite, sind wir nur gehen, um zu sehen,
wie wir mit dem Schreiben beginnen Software, eine kleine Zusammenfassung der
Programm, das wir oben links geschrieben.
Aber wir werden das noch einmal vor langer sehen.
>> Also lasst uns etwas ziemlich einfach hier tun.
Lassen Sie mich zunächst voran gehen und gehen Sie auf Datei, Speichern, und ich bin einfach
gehen auf jharvard hier klicken, über links, und
jharvard ist wieder der Name für mein Home-Ordner, meine
persönliche Dateien, mir, jetzt ist John Harvard, wie Sie alle
bald John Harvard in diesem Umfeld.
Er hat diese Home-Verzeichnis haben, Eigene Dateien und so weiter,
dass ich zu retten, wollen nun diese Datei in.
Also werde ich es nennen hello.c. Dann werde ich gehen
vor und klicken Sie auf Speichern, und jetzt, was ich hier habe, ist ein Register
genannt hello.c, so viel wie eine andere Art von Editor.
>> So, jetzt lass mich weitermachen und ein Programm schreiben.
int main (void).
Und dann habe ich nur beim letzten Mal, printf, für den Druck formatiert,
("Hallo Welt!"
);.
Fast abzuschließen.
Aber ich vermisse ein paar Details.
Was ist aus diesem Programm, dass ich wirklich brauchen für fehlende
es tatsächlich zu kompilieren?
Yeah.
[Unverständlich]?
>> DAVID J. MALAN: Ja, so brauche ich, um die Standard-Include
I / O-Bibliothek.
So muss dies über Haupt gehen, so bin ich gerade dabei,
machen etwas Platz für sie gibt.
Und ich werde tun, # include.
Und beachten Sie die eckigen Klammern gibt.
Und als beiseite, ist gedit ein wenig benutzerfreundlich, wenn
manchmal ein wenig verwirrend, dass sie versucht, zu helfen, Ihre
Augen bemerken, welche Zeilen mit dem, was.
So die Tatsache, dass mein Cursor rechts neben diesem abgewinkelt ist
Halter bemerken, wie es Hervorhebung der anderen abgewinkelten
Halterung mit dieser.
Und das ist nur meine Aufmerksamkeit auf die Tatsache lenken, dass ich
eine Symmetrie.
Und Symmetrie in der Programmierung ist generell eine gute Sache.
Ebenso, wenn ich meinen Cursor an das Ende zu bewegen, bemerken, wie die
geschweiften Klammern Line-Up zu zeigen, dass, ja, ich ein offenes eine haben
und ein geschlossenes, sozusagen.
>> Alles klar, und ich kann eine andere Sache.
Es ist nicht unbedingt notwendig, aber gute Praxis, zu sagen,
0 zurück.
Und return 0 tut, was für uns hier?
Oder bedeutet was?
[Unverständlich]
DAVID J. MALAN: Aber nichts ist falsch.
Und ehrlich gesagt ist es für viel schief gehen in eine harte
programmieren diese kurz.
Also bin ich einfach nur Super ausdrücklich, dass alles gut ist.
Ich, der Mensch, wenn ich dieses Programm ausführen, wird wahrscheinlich nie
sehen, dass 0.
Im Allgemeinen sind diese Zahlen, die von der Hauptstraße zurück
nur hinten ihre Köpfe, um den Menschen bei der
etwas schief geht.
Und Sie bekommen ein kleines Pop-up sagen Systemfehler, ein,
zwei, drei, oder was auch immer die Zahl war, dass
tatsächlich zurückgegeben.
So etwas anderes falsch?
[Unverständlich]
>> DAVID J. MALAN: Also das ist nicht so sehr eine funktionelle Fehler
sondern eine ästhetische ein.
Ich sollte wohl in einem Zeilenumbruch es legte an der
Ende dieser Zeichenfolge, so dass wir tatsächlich bewegen Sie den Cursor auf
die nächste Zeile, und das Programm sieht nur ein wenig schöner.
>> So, jetzt lass mich gehen hinunter zu meinem Terminal-Fenster
und Zoom-back in.
Und dieses Ding hier ist es die Aufforderung genannt.
Es ist nur daran erinnern, wer ich bin, jharvard @ Appliance, wo
Gerät ist der Name des Computers, ich bin auf.
In Klammern ist Tilde, die squiggle Symbol, das
stellt dar, was?
PUBLIKUM: Home-Verzeichnis.
DAVID J. MALAN: Home-Verzeichnis.
So das ist nur eine Abkürzung zu sagen du bist in
Ihren persönlichen Ordner, wo alle Ihre Dateien gehen standardmäßig.
So, jetzt hier, kann ich ls für die Liste eingeben.
Und das einzige, was ich hier sehe, ist im Moment hello.c.
Und das ist gut so, denn ich schrieb genau dies.
>> Also lass mich gehen Sie vor und nicht machen hallo.
Und ich merke, ich nicht den Befehl make hello.c.
Stattdessen werde ich nur die Eingabe der Basis-Name der Datei, hallo.
Und machen, wie wir am Montag gesehen haben, wird nur folgern, was ich will
die. c-Datei.
So jetzt habe ich getippt machen hallo.
Jetzt sehe ich diese ziemlich langen Befehl und wird auch weiterhin
sehen dies wieder und wieder.
Aber klar, Klang, das Wort, das gerade erschienen ist,
das ist die eigentliche Compiler.
Machen, ist nur ein Build-Dienstprogramm.
Es ist nur eine benutzerfreundliche Programm, das mir erspart, in der
Langfristig, von zu tippen unglaublich mühsam lange
Befehle wie dieser ein.
So könnte man Clang manuell ausführen.
Du könntest geben all das manuell.
Just gets sehr mühsam.
Und so machen, ist nur ein Programm, das unser Leben vereinfacht und
läuft komplexere Befehle für uns.
>> Alles klar, also jetzt, was Datei sollte ich
in meinem aktuellen Verzeichnis?
Nicht nur hello.c, sondern auch hallo.
Also, wenn ich zu laufen hallo wollen, daran erinnern, dass ich dot slash sagen,
wo dot Mittel in den aktuellen Ordner, wohin Sie gehen
sind, und führen Sie dann das Programm namens hallo, und zwar jetzt,
Ich habe Hallo Welt.
Alles klar, alle Fragen auf dem Workflow oder die Syntax der
was wir gerade getan?
>> Alles klar, also nehmen wir Sachen herauf eine Kerbe wieder.
Also das war nicht berauschend, nur ein Programm schreiben, dass nur
immer sagt hallo, Welt.
Also änderten wir es am Montag, zu sagen, hallo, David.
Es ist ein wenig mehr persönliche, aber genauso hart wie die codierte
erste Version.
So gar nicht so überzeugend.
Aber es gibt in C, Funktionen sicherlich neben
print, Funktionen, die Sie Benutzereingaben lassen.
Und die Art, wie wir dies tat, den anderen Tag, war wie folgt.
Vor drucke ich tatsächlich etwas, das ich zum ersten Mal
etwas von dem Benutzer.
Also lassen Sie mich wieder tun.
>> Kette s, wobei s ist nur eine zufällige Namen, hier für eine
String entspricht GetString.
So was GetString?
Offensichtlich bekommt einen String, basierend auf seinen Namen.
Aber was ist es, technisch?
Es ist eine Funktion.
Es ist also eine Funktion, die nicht mit C per se nicht kommen.
CS50 Mitarbeiter schrieb.
Und so dazu verwenden, können Sie nicht nur schließen stdio.h,
Sie müssen auch was gehört?
Yeah.
So cs50.h, das ist nur eine Datei schrieben wir vor einigen Jahren.
Wir installierten sie auf dem Gerät für Sie neben
alle Standard-Dateien.
Und so in diesen ersten Wochen der Klasse, verwenden wir
dies nur zur Vereinfachung der Prozess des Tuns sehr grundlegende
Dinge wie immer Benutzereingaben.
Denn wie wir in ein paar Wochen sehen, bekommen Benutzereingaben in einem
Sprache wie C ist eigentlich überraschend komplex,
vor allem weil man nicht im Voraus wissen, in der Regel, wie
viel Zeug der Benutzer wird geben in.
Und wenn Sie nicht wissen, wie viele Daten zu erwarten ist, müssen Sie nicht
wissen, wie viel Speicher zuweisen.
Und wenn Sie tatsächlich eine kontradiktorische Benutzer, versucht
in Ihr System zu hacken, Ihr Computer abstürzt, gut,
Regel die erste Methode des Angriffs ist, wie ich auf habe
Montag, geben Sie eine ganze lange Folge von zufälligen Zeichen,
Enter und sehen, was bricht.
Da in der Regel, wenn ein Programm bricht, deutet an, dass bei
eine Sicherheitslücke, die möglicherweise.
Es ist sicherlich deutet an Ihnen, dem Programmierer, gemacht a
Fehler, aber gefährlich, könnten Sie gemacht haben a
sicherheitsrelevanten Fehler, und in der Regel werden wir sehen, dass
das ist wie Maschinen bis heute gefährdet sind, sowohl
in der Welt des Web und Programme auf die
Befehlszeile wie diese.
>> Gut.
So string s entspricht GetString.
So konkret jetzt, was macht Linie 6 hier tun?
So ist die Funktion auf der rechten erhält string,
dauert, wie viele Argumente?
Okay.
So keine.
Ein wenig Plausibilitätsprüfung.
Ein Argument wiederum ist nur ein Eingang mit einer Funktion zum verändern
sein normales Verhalten in gewisser Weise.
Aber in diesem Fall, ich will nicht zu verändern
das Verhalten GetString.
Ich wollte nur einen String zu erhalten.
Also habe ich nichts in den Klammern, und dann habe ich ein
Semikolon Demarkieren das Ende der Zeile des Codes.
Nun, das Gleichheitszeichen bedeutet nicht gleich, per se.
Es bedeutet, Zuordnung, was bedeutet, setzen, was kommt
ausgegeben am rechten Innenseite, was auf der linken Seite.
>> Also auf der linken Seite, wir sagen, wir haben erklärt, ein
String namens s.
Genauer gesagt, haben wir Speicher innerhalb der zugeteilten
wir stellen, welche die Bits, die eine Sequenz von repräsentiert
Zeichen.
Aber heute haben wir zugeteilt
oder erklärt einen String zurück.
Gut.
So, jetzt, nachdem ich dies getan haben, möchte ich im Wert von stecken
s, nicht der Wert des David.
So, das ist falsch, warum?
Das ist also nur buchstäblich die hartcodierte s.
Es ist zu sagen, "Hallo, s", das ist nicht das, was ich will.
So kann ich dies tun.
Das Prozentzeichen ist ein Platzhalter, aber jetzt muss ich
gehen in Druck ein zweites Argument.
Daran erinnern, dass Argumente für Funktionen getrennt sind
Kommas, so dass die nächsten Komma hier habe ich nach diesem das Schreiben s.
Und in diesem Zusammenhang jetzt ist s die Variable, und printf,
bei Empfang dieser beiden Eingängen -
die Zeichenfolge auf der linken und der Variablennamen s auf der rechten -
es stecken diese in die ehemalige für uns, und
einfach ausdrucken einen schönen schönen String
was auch immer es ist, dass wir eingetippt
>> Also lasst uns versuchen.
Werde weitermachen und Verkleinern, Rücken
meine Terminal-Fenster.
Zoom in auf der Unterseite hier.
Erneut eingeben zu machen hallo.
Clang scheint wurden erneut ausführen.
Ich werde geben. / Hallo, Enter.
Nichts scheint noch geschehen, aber es ist an dieser Eingabeaufforderung
dass ich so etwas wie Nate eingeben, Enter, und jetzt haben wir
Hallo, Nate.
Und ich kann es wieder tun mit Rob, und so weiter.
So jetzt hoffentlich dieses Programm verhält, wie ich will.
>> Nun, nicht alles, was benutzerfreundlich.
Ich habe keine Ahnung, was gerade von mir erwartet.
So können wir sicher reinigen diese bis ein wenig.
Lassen Sie mich gehen wieder hier, und statt nur Tauchen in und
fragt den Benutzer nach einer Zeichenkette, lass mich ausdrücklich sagen, die
Benutzer, was ich erwarte.
So printf ("Geben Sie eine Zeichenfolge:"
);
Also keine Variablen hier.
Keine Prozentzeichen.
Gerade die einfache englische Redewendung.
Lassen Sie mich nun auf den Boden hier gehen und erneut mein Programm.
Aber nichts scheint sich geändert zu haben.
Warum?
Ich muss es neu kompilieren.
So einfach Fehler zu machen.
Aber Sie müssen nicht nur die Datei speichern, sondern
kompilieren Sie das Programm.
Und so, wenn ich wieder zum Laufen zu bringen hallo, jetzt Clang läuft.
Jetzt kann ich laufen. / Hallo. Und jetzt sehe ich "Geben Sie eine Zeichenfolge:".
Okay.
Jetzt ist es ein wenig mehr benutzerfreundlich.
Nate, Geben, hallo, Nate.
>> Nun, lassen wir noch einmal versuchen und denken
über Eck Fällen.
Also einfach in Scratch mögen, werden Sie aufgefordert oder werden
gefördert im spec zu Art über das, was gehen könnte denken,
falsch, wenn Sie nicht erwarten, alles, was der Benutzer tun könnte.
Bugs, daher ergeben können.
So geben Sie einen String -
was ist eine Ecke Fall hier?
Was ist ein Szenario, dass ich, der Programmierer, die möglicherweise nicht über
erwartet?
Yeah.
Okay.
So was, wenn ich in einer Reihe wie diese geben?
Gut.
So ist es immer noch funktioniert.
Grammatisch macht keinen Sinn.
Aber zumindest das Programm funktioniert.
>> Was ist eine andere Ecke Fall?
Etwas, das ich nicht erwartet hatte.
Yeah?
Okay.
So könnten wir so etwas wie eine wirklich große Nummer.
Also lasst uns dies tun hier.
Lassen Sie mich den Zoomfaktor für eine Sekunde, lassen Sie mich hervorheben.
Kann nicht kopieren und einfügen hier unten.
Gut.
So kann ich nicht kopieren und fügen Sie in diesem Terminal-Fenster, so dass wir
nur simulieren.
Lassen Sie mich zu verkleinern, gehen zu wickeln.
Ich werde mich nicht dazu zu lange tun, denn es wird nicht
tatsächlich in diesem Programm zu brechen.
Aber es könnte.
Enter.
Aber es kam nicht.
Gut.
Aber es ist eine echte Ecke Fall.
Und der einzige Grund, der korrekt verhalten, so
sprechen, weil die CS50-Funktion GetString ist eigentlich
entwickelt unter der Haube, wie wir in ein paar Wochen sehen,
automatisch dafür mehr und mehr RAM, mehr und mehr
Speicher aus dem Betriebssystem, wenn es erkennt, wow,
Sie haben wirklich etwas ganz lange getippt.
Nun, dies ist ein bisschen wie ein Notlüge.
Wenn wir tatsächlich hielt eine ganze Weile und ich eingetippt
so etwas wie 5 Milliarden Zeichen auf der Tastatur
hier, oder wirklich getroffen copy-paste ein bisschen, wir womöglich
konnte das Programm zum Absturz bringen.
Nur ein wenig schwerer zu, dass mit einer endlichen simulieren
Zeitdauer.
>> Was ist eine andere Ecke Fall werden wir versuchen könnte?
Yeah?
Yeah.
Also, warum nicht beantworten wir nichts?
So haben wir eigentlich eine bestimmte Aktion durchführen, weil sonst
das Programm geht, um dort zu blinken sitzen den ganzen Tag.
Aber wenn ich einfach Enter drücken -
OK, jetzt sieht immer noch falsch.
Haben Sie nicht abstürzen, aber vielleicht gibt es jetzt die Möglichkeit,
Beginn der Umsetzung einer strengeren Programm
das tatsächlich überprüft.
Und wenn die Zeichenfolge, der Satz, das Wort, das ich
eingetippt hat die Länge 0, na ja, vielleicht sollte ich an der anschreien
Benutzer oder sagen Sie ihm oder ihr einen String erneut eingeben, so dass
wir eigentlich, was aussieht wie das richtige Verhalten und nicht
nur komplette Kontrolle auf meiner Seite.
>> Frage im Rücken?
Dezimalzahl.
So könnten wir versuchen das auch.
1,10000005.
Scheint, wie das wird nur funktionieren eigentlich okay.
Und dem tatsächlich zu erwarten ist.
Auch wenn wir vielleicht vertippt haben diese Zahl gibt, oder eine
größere Anzahl früher erkennen, dass, wenn wir die Eingabe Benutzer
Eingang und wir verwenden die GetString Funktion nicht
Ob das, was ich eingeben sieht aus wie eine Nummer.
Daran erinnern, dass nach ASCII, alles auf Ihrem
Tastatur hat einen Wert, der einen zugeordnet werden können
Charakter, ein char.
Also in diesem Fall, auch wenn ich vielleicht eine Zahl, die
Computer wird, daran zu denken, so zu sprechen, als String -
etwas, das aussieht wie eine Reihe, ist aber
nicht tatsächlich eine Zahl ist.
Aber das ist eigentlich eine perfekte segue, denn jetzt können wir
tatsächlich Übergang zum Schreiben von Programmen, die
auch andere Datentypen.
>> So neben der Verwendung von Zeichen, oder vielmehr, neben der Verwendung von Strings,
erkennen, dass wir andere Datentypen in C besitzen sowie in
anderen Sprachen.
Ein char, wie der Name schon vermuten lässt, ist nur ein einzelnes Zeichen.
Ein Schwimmer ist ein Gleitkommawert, und das ist nur ein schicker
Art zu sagen, eine reelle Zahl - etwas, das eine Dezimalstelle hat
Punkt es mit einigen Zahlen links und / oder rechts.
Ein int ist eine ganze Zahl, die nur eine Zahl wie 123.
Und nun noch interessanter sind Dinge wie double.
Was haben wir gesagt eine doppelte war beim letzten Mal?
Es ist 64, rechts.
Während also in der Regel ein Schwimmer 32-bit -
so dass es so lange im Speicher ist, verwendet es 32 Nullen und Einsen zu
Werte darstellen - ein doppelter ist buchstäblich doppelt so, die
bedeutet, dass Sie stellen entweder größere Zahlen oder
Sie repräsentieren mehr genauen Zahlen.
So können Sie noch mehr Zahlen nach dem Komma haben, aber
Als der Bursche sagte in dem Video, sogar etwas einfacher
konzeptionell wie 1/3 nicht exakt durch einen vertreten sein
Computer, denn schließlich Sie laufen aus Bits und
daher kann man nur .33333333 so viele Male auf
welcher Stelle Sie müssen nur sagen, ich bin aus der Darstellung
Raum, habe ich nur nennen es einen Tag und stellen es
etwas unpräzise so.
Und ein langer, langer -
blöder Name, aber es ist, weil es einen Datentyp wie eine bekannte
lange in C, die zufälligerweise ist oft 32 Bit, wie ein
int ist 32 Bit, aber eine lange lange
Regel 64 Bits.
So ist es nur bedeutet, dass Sie größer darstellen
Zahlen als diese.
>> Gut.
Also, wenn wir tatsächlich beginnen wollen repräsentieren Dinge, wir
vielleicht kompliziertere Typen brauchen, und
deshalb haben wir String haben.
So in der CS50-Bibliothek, wird die Datei cs50.h genannt, haben wir
tatsächlich erklärte ein Datentyp, so zu sprechen, als String,
aber String nicht wirklich existieren.
Dies ist wiederum eine dieser Schichten werden wir peel
wieder in ein oder zwei Wochen und werfen es weg, und tatsächlich
Blick unter die Haube an, was ein String tatsächlich ist, und
wie es dargestellt wird.
Wir werden auch auf boolesche Werte aussehen.
>> Also, was war ein bool im Rahmen der Scratch?
Es ist wahr oder falsch.
So ist es nur ein Wert, der wahr oder falsch ist, ein-oder ausschalten, 1 oder
0, wie Sie wollen, um die Welt zu sehen.
So in C, dank der CS50-Bibliothek, die wiederum
enthält eine andere Bibliothek unter der Haube haben wir
Zugang zu einem Datentyp, der als bool ist, was wird
wahrsten Sinne des Wortes können wir ordnen die Werte true oder false
Dinge in einem Programm.
>> So lassen Sie uns gehen hier und ein kleines Programm schreiben, dass
tut etwas mit Zahlen statt.
Also lassen Sie mich zurück zu dem CS50 Appliance gehen, lass mich gehen Sie vor und
Erstellen einer neuen Datei hier genannt -
lasst uns einfach sagen etwas Einfaches, wie math.c.
Gut.
Und jetzt gehen bis an die Spitze von meinem Programm, ich bin
werde die üblichen zu tun -
# Include, so dass ich verwenden können
printf, int main (void) -
wir kommen zurück, um schließlich, was int bedeutet,
hier, was Leere bedeutet hier, aber jetzt weiß nur, dass
Sie müssen Programme wie dieses zu starten.
Jetzt werde ich nach vorne gehen und sagen, etwas ein wenig
anders - printf ("Gib mir eine Zahl ein:"
);.
Dann werde ich int n = GetInt tun, weil es
entpuppt GetInt ist eine weitere Funktion in der CS50-Bibliothek
Neben GetString.
Und jetzt werde ich etwas Dummes zu tun, wie "dank
für die% d "für dezimal integer, und dann Komma n und
dann 0 zurück.
Also noch einmal, 0 zurück, hat nichts mit der Anzahl Ich bin zu tun
die Benutzer zu fragen.
Nur bedeutet am Ende, dass alle, vermutlich, ist gut.
>> Also lass mich gehen, um meine Terminal-Fenster hier.
Lassen Sie mich ein make Mathematik geben.
Und noch etwas ist falsch.
Machen Mathematik hat nicht funktioniert.
Hier ist der erste unserer Fehlermeldungen.
Warum?
Ein wenig kryptisch, aber -
Yeah.
So cs50.h.
Also noch einmal, besonders früh auf, dann schreiben Sie Ihre erste
Programm für pset 1 in den Abschnitten, in Sprechstunden und
ehrlich gesagt, es wird überwältigend sein manchmal, was diese Dinge
wirklich sagen.
Aber du wirst sehr schnell erkennen, dass sie beginnen zu fallen
in Eimern wobei diese ein bedeutet, dass du off ein links
der # enthält am Anfang der Datei.
Und Clang, der Compiler wird informiert Sie über dies durch
sagen, sondern fantasievoll, implizite Deklaration der
Funktion GetInt ist ungültig.
>> Gut.
Also, was bedeutet das?
Es bedeutet nur, Sie haben implizit deklariert GetInt in
das Gefühl, dass Sie nicht explizit erklärt.
Explizit deklarieren int, müssen Sie lehren
Clang dass es existiert.
Und die sehr einfache Lösung dafür ist es zu lehren, indem
einschließlich dieser anderen Datei, cs50.h an
der Anfang der Datei.
Da buchstäblich, was # include tut, ist es sagt Clang
ziemlich zu gehen finden Sie die Datei cs50.h, Kopieren,
fügen Sie ihn automatisch in die Spitze von meinem Programm für mich,
konvertieren und dann den Quellcode, um Nullen und Einsen.
Aber das wäre natürlich sehr mühsam, wenn wir Menschen mussten
zu gehen Kopieren und Einfügen diese großen Dateien die ganze Zeit,
so # include tut einfach alles, was automatisch und ohne
trüben meinen Code mit jemandem der Bibliothek.
Und eine Bibliothek ist nur eine weitere Datei mit Funktionen und
andere Dinge, die jemand anderes geschrieben hat, dass wir
Nutzung um unserer selbst willen.
>> Gut.
Lassen Sie uns noch einmal versuchen.
Machen math.
Enter.
Gut.
So das scheint funktioniert zu haben.
Also lassen Sie mich jetzt laufen Mathematik;. / Math.
Geben Sie gibt mir eine Zahl, 123.
Danke für die 123.
Nun wollen wir versuchen, eine andere Ecke Fall.
Ein String ist ziemlich großzügig, weil ein
String kann alles sein.
Kann wie Zahlen aussehen, aussehen
Zeichen, wie Wörter zu suchen.
Aber ein int ist ein int.
So jetzt, wenn ich die schwierige Benutzer, und es sagt: "Gib mir
eine Zahl, "was ist, wenn ich so etwas wie 0,1 zu tun versuchen?
Nun, das ist eine Zahl, und es ist im Einklang mit der
Grammatik habe ich hier, aber unter der Haube, ich bin der
Natürlich mit der Funktion GetInt.
>> Also mal sehen, was passiert.
Geben Sie, erneut zu versuchen.
Gut.
Lassen Sie mich schwierig sein und einfach Enter drücken erneut.
Enter, Enter.
So, jetzt scheint es, dass GetInt ist ein wenig mehr
mächtiger als GetString.
Wir, die Mitarbeiter, so dass, wenn wir bemerken, umgesetzt
Sie haben uns nicht gegeben eine int - und ein int ist eine Dezimalzahl
mit Nullen, Einsen, Zweien, Dreien, Vieren, Fünfen, Sechsen,
Siebener, Achter oder Neuner.
Und das ist es.
Keine Dezimalstellen, keine Zeichen, keine Satzzeichen.
Es scheint, dass wir zusammenarbeiten müssen.
So lassen Sie mich versuchen vier, fünf, sechs, und das bringt mich durch.
Also wirklich, zu anal hier sollte ich wohl sagen: "Gib mir
eine ganze Zahl ", um dem Benutzer zu vermitteln
genau das, was ich vorhabe.
>> Nun lassen Sie uns über unter der Haube zu denken.
Wir gehen nicht auf, wie cs50.h umgesetzt wird heute aussehen,
dass die Bibliothek.
Aber wenn es sagt immer wiederholen, wiederholen, wiederholen, was die Programmierung
Bau ich vermutlich mit unter der Haube, um
implementieren, dass?
Also nur eine Schleife, nicht wahr?
Einer der einfachsten Ideen, dass wir auf Scratch sah.
The Forever konstruieren, die Repeat konstruieren.
Vermutlich in diesem Programm unter der Haube, auch
obwohl es in C geschrieben ist und nicht verkratzt, es zu tun
etwas namens entspricht immer, wenn der Benutzer nicht
eingegeben in einem Integer, sagen wiederholen, wiederholen, wiederholen, wiederholen, so
schließlich, wenn wir tun, um eine ganze Zahl, dann
Ausbruch aus dieser Schleife.
>> Also, was andere Funktionen können wir hier verwenden, CS50-Bibliothek?
Nun, Art der offensichtlichen, zumindest auf der Grundlage der
Datentypen, die wir jetzt wissen gibt.
Wir implementierten GetString, GetInt, sondern in der gesamten
ersten Wochen der Laufzeit können Sie auch GetFloat und
GetDouble und GetLongLong um genau das zu bekommen
Datentypen, die Sie wollen.
Da der Schlüssel Detail dabei ist, dass im Gegensatz zu einigen Sprachen,
wie Python und Ruby, wo man nicht unbedingt auf
erklären, den Datentyp einer Variable -
Sie müssen nicht den Computer sagen, welche Art von Zeug
Sie gehen in die Variable setzen -
in C, muss man immer so genau.
Also, wenn Sie eine Variable namens n, ein Stück Speicher
daß in diesem Fall geschieht mit 32 Bits werden vereinbarungsgemäß Sie
müssen Sie den Computer zu sagen, dass diese Bits
werde eine Nummer zu speichern -
kein Zeichen, kein String, nicht ein Schwimmer.
Und dies behebt das Problem, wir effektiv
lief in der vergangenen Woche.
Wenn wir mit Nullen und Einsen Zahlen repräsentieren nicht nur
Zahlen, sondern As und Bs und Cs, wie in der Welt ist ein
Computer gehen zu wissen, dass dieses Muster von Bits tatsächlich
die Zahl 65, wie zu vertreten die entgegengesetzte
Buchstaben A, die zufällig nach
ASCII, erinnere, war gleichbedeutend mit 65?
>> So dass diese Datentypen bereitzustellen Kontext zu dem Computer, so dass
dass sie weiß, wenn diese Bits als interpretiert werden sollte
INT oder als String zurück.
Haben Sie Fragen, dann auf das?
Yeah?
DAVID J. MALAN: Gute Frage.
Wenn wir nehmen stdio.h, speichern wir die Datei -
Lassen Sie mich gehen, um das Terminal-Fenster und führen Sie make Mathematik, zoom
an und geben Sie -
jetzt bekomme ich einen anderen Fehler, weil ich implizit bin
erklärt, was funktionieren jetzt?
Printf.
So jetzt habe ich ein neues Problem, dessen Lösung geschaffen
im Wesentlichen gleich.
Ich muss das zurück setzen.
PUBLIKUM: [unverständlich]
DAVID J. MALAN: Oh.
Also, wenn ich out -
Okay, yeah.
Also, wenn ich entfernen Sie die Standard-I / O-Bibliothek die Aufnahme bis
hier, und dann sagst du, wenn ich los printf erhalten, erhalten
Befreien Sie sich von printf?
Ja.
Das sollte funktionieren, weil ich nicht mehr mit einem bin - hoppla.
Habe ich nur liegen?
Oh, okay.
Dies wird nicht wegen eines neuen Fehler, den wir soeben vorgestellten arbeiten.
Und dieses ist ein wenig mehr selbsterklärend.
>> Was ist das Problem?
Unbenutzte Variable n.
So dieser Fehler ist das Ergebnis unserer nachdem die konfigurierte
Gerät besonders pedantisch, um wirklich zu schreien
Sie für jeden möglichen Fehler, auch wenn es irgendwie
eine nicht-fataler Fehler wie diese - ist es wirklich so eine große
umgehen, dass ich ein int zugeordnet, legte eine Reihe drin, und dann
habe gerade nichts mit ihm?
So funktional, nein.
Das ist nicht, um das Programm zu brechen.
Es ist nur irgendwie dumm, nicht wahr?
Es gibt keinen Wert zu haben für diese Nummer gebeten, gespeichert
in einer Variablen, wenn Sie nie etwas zu tun
mit ihm, ob es drucken oder speichern.
So dass in diesem Fall wird so viel Clang anzuerkennen, und
es sagt nicht verwendete Variable n.
>> So können wir dieses Problem beheben, wenn wir wirklich wollen.
Aber auch dies ist kein guter Programmierstil jetzt.
So konnte ich nur tun dies -
gehen Sie hier, lassen Sie mich klar auf den Bildschirm, machen math.
Das funktioniert.
Jetzt kann ich betreibe meine Mathematik-Programm, nimmt Eingang -
gut, das war schlecht.
Nimmt die Eingabe, und das ist alles so ist, in diesem Fall.
>> Also eigentlich wollen wir versuchen eine andere Ecke Fall, dass wir
nicht früherer denken.
In diesem Fall - hier gehen wir zurück auf die eine, die eine ist
etwas mehr benutzerfreundlich.
Lassen Sie mich gehen wieder hier und laufen zu lassen math wieder.
Whoops, was habe ich falsch gemacht?
Got to weiter zurück rollen.
Okay.
Jetzt sind wir wieder in den ursprünglichen Zustand, in dem alle
ist hoffentlich gut.
Und jetzt, wenn ich Mathematik laufen, scheint 123 zu arbeiten.
Aber das ist nicht wirklich eine effektive Beweis, nur sagen
okay, das funktioniert.
789, das funktioniert.
Zeit zu unterbreiten.
Denn es gibt andere Ecke Fälle hier.
Ein String nicht wirklich geben uns viel Mühe, indem Sie einen
ganze Menge von Zeichen.
Aber was, wenn ich in dieser Art?
Schlagen die Zahl 1 eine ganze Menge, viel hier -
Alles in Ordnung, es wird ein wenig langweilig, so dass ich zu gehen
halten hier, und ich werde Enter drücken.
>> Was zum Teufel ist passiert?
So kann dies tatsächlich erklärt werden.
So hat es gedauert, es als Binary?
Ein guter Gedanke, aber nein, es ist nicht die Tatsache, dass es dauerte
als binäre, weil ja, das war nur eine Art
Zufall.
Wir können dies wieder zu tun.
Es gibt also keine 2 im binären System, das ist
wahrscheinlich genug sowieso.
Enter.
Das war also nicht das Problem.
Was sonst noch?
Genau.
>> So denken Sie zurück an, was für ein int eigentlich ist.
Es ist 32 Bit, die zusammen interpretiert
als Nummer.
Wenn Sie 32 Bit haben, bedeutet dies, dass jedes der Bits kann
eine 0 oder eine 1, 0 oder eine 1 ist.
Das heißt also, es gibt zwei Möglichkeiten, dieses Bit
zwei Möglichkeiten dafür, zwei Möglichkeiten hierfür
bit - das ist also 2 mal 2 mal -
das ist also 2 bis 32 der Leistung ist die Gesamtzahl der
Permutationen von Nullen und Einsen, wenn Sie 32 haben
Platzhalter, Nullen oder Einsen, vor Ihnen.
Also, wenn ich 2 haben die 32, mathematisch, was ist?
Es ist also eine ganze Menge.
Es ist 4 Milliarden, geben oder nehmen.
Und 4 Milliarden scheint nicht zu sein, was wurde hier gedruckt.
In der Tat sieht das näher bei 2 Milliarden Euro.
Aber dies ist kein Zufall.
Die Tatsache, dass der Computer hat meine große Anzahl falsch interpretiert,
meine große Folge von Einsen und dann meine riesige Abfolge von Zweien,
wie etwa 2 Milliarden wird erläutert, wie?
Es gibt eine Kappe auf dem int.
Es gibt eine sicherlich eine maximale Wert, den Sie darstellen kann.
Aber es ist in der Regel 4 Milliarden, nicht wahr?
Wenn 2 der 32 ist rund 4 Milliarden, das scheint, wie
das ist die größte Anzahl.
Also nicht ein Rest, aber ein guter Gedanke.
Negative Zahlen.
Also, wenn Sie haben 4 Milliarden mögliche Dinge, die Sie
stellen mit diesen verschiedenen Permutationen von 32 0 und
1s, na ja, liegt es nahe, dass wir Menschen vielleicht wollen
stellen nicht nur positive ganze Zahlen
aber negative Zahlen.
Und in der Tat, das ist die Annahme, dass C macht.
So mit 32 Bit, können Sie repräsentieren etwa minus 2
Milliarden den ganzen Weg bis zum positiven 2 Milliarden.
Und so in diesem Fall, was wir wirklich sehen, ist nur
Rande der Kapazität unserer integer, und wir haben, so
zu sprechen, zum Überlauf einer Integer.
Wir haben versucht, mehr Bits hinein stopfen, als tatsächlich passen.
So das Ergebnis ist, dass wir im Wesentlichen haben alle 1-Bits.
Wir haben umgedreht alle unsere Bits auf, haben wir versucht zu repräsentieren
die größte Zahl möglich, aber es ist eindeutig nicht annähernd
groß genug, um die beiden Dinge, die ich gerade geschrieben habe in. stellen
Yeah?
PUBLIKUM: [unverständlich]
>> DAVID J. MALAN: Gute Frage.
Warum können wir nicht einfach darzustellen, dass negative
Anmeldung als nur ein Zeichen?
Also haben wir absolut konnte, und wir könnten dann speichern
ein zusätzliches Bit.
Aber du bist immer noch zu müssen, dass dash darstellen, und
das wird, kostet Sie zumindest etwas,
vermutlich ein bisschen.
Also ja, könnten wir 32 Bit für unsere Nummer, aber jetzt
Wir brauchen ein neues etwas für unsere Bindestrich
Symbol, das Minuszeichen.
So, jetzt haben wir 33-Bit-Werte, die wir tun könnten, aber es ist
einfach nicht so, wie es gemacht wird.
Wir haben ein Urteil Anruf Jahren, ist 32 Bit Art der
Maßeinheit hier.
So werden wir zu einem dieser Bits effektiv zu nutzen, um
stellen Negativität, und 31 Bits, um die Zahl darzustellen.
Weitere Fragen?
Gut.
Das ist eine Menge.
Warum gehen wir nicht voran gehen und nehmen unsere fünf Minuten Pause hier?
>> Gut.
Also noch einmal, um nicht überbetonen die mathematischen Anwendungen
der Programmierung, lass uns einfach abzupfen dieses ein Beispiel
bevor wir in anderen Konstrukten zu verschieben, nur weil es
wird ein paar gemeinsame Stolperstein Punkte auf einige zeigen
die Grundlagen, wenn es um das Schreiben von Programmen kommt.
In diesem Fall tut arithmetische Ausdrücke, die einige haben
Interessant Relevanz für die Syntax.
>> So ist dies nur eine Formel, mit denen wir wandeln
Temperaturen von Fahrenheit in Celsius.
Wenn Sie nicht erinnere, das ist nur die Formel.
Also, wenn wir stecken in Fahrenheit Wert von 32 Grad, das ist
Einfrieren, das wird zu 32 minus 32 gleich 0 ist, und in der Tat,
0 in Celsius ist auch dem Gefrierpunkt.
So schnell sanity es zu überprüfen - das ist die bekannte Formel.
Laß mich hinübergehen, um das Gerät, obwohl, und beginnen
Schreiben Sie ein Programm namens, wie, f2c, "Fahrenheit
Celsius dot c ".
Und an der Spitze hier, ich werde beginnen mit # include
stdio.h, und ich werde int main (void) zu tun, und
wieder, wir kommen zurück in die Zukunft, was bedeutet, int
gibt und was void bedeutet es.
Und jetzt lassen Sie mich gehen Sie vor und Umsetzung eines Programms, dass
Wesentlichen funktioniert diese Umwandlung für uns.
>> So printf, sagen wir mal, Temperatur in Fahrenheit.
Und dann lassen Sie mich weiter zu machen und den Wert des Benutzers.
Welche Art von Wert sollte ich von dem Benutzer zu bekommen, wenn ich will
sie geben mir eine Temperatur in Fahrenheit?
Yeah?
Was würden Sie vorschlagen?
Yeah.
So float fühlt sich ziemlich vernünftig.
Wir haben wieder nur ein paar Optionen, die
Wir haben bisher gesehen.
Wir haben Dinge wie char, double, float, int, long long,
bool, string.
So davon, fühlt float ziemlich vernünftig.
Wir könnten eine doppelte, rechts, denn wenn wir wirklich wollen,
stellen eines Menschen Temperatur -
98,60000 -
konnten wir mit 64 Bit zu tun, aber es fühlt sich an wie
Overkill für die Temperatur.
Also lass uns einfach gehen mit Schwimmer.
Jetzt brauche ich eine Variable.
Nur um die Dinge einfach halten, werde ich es nennen f, aber ich
könnte genauso richtig nennen es Temperatur,
aber entweder ist in Ordnung.
So schweben f = GetFloat.
Sobald ich jetzt beschlossen haben, GetFloat verwenden, obwohl ich
müssen ein Korrektur vorzunehmen.
Yeah.
Also müssen wir # include müssen, da sonst die Compiler
gehen, um uns zu schreien.
Jetzt, da ich einen Schwimmer haben, lassen Sie mich gehen Sie vor und tun das
Konvertierung.
>> So lassen Sie mich zunächst auch in die Gewohnheit zu bekommen hier
kommentierte mein Code.
Also noch einmal, ist ein Kommentar nur eine Notation für das menschliche, das ist
nicht Teil des Programms per se, aber es ein, hilft Ihnen
verstehen, was Sie am nächsten Morgen tat, oder die nächste
Monat, hilft es, Ihren Unterricht Kollegen verstehen, was du getan hast
oder was Sie zu tun gedenke, so ist es
in der Regel sehr gute Praxis.
Alle paar Zeilen Code, schreiben Sie einen Kommentar zu
Sie oder Ihre Kollegen.
Also hier, ich werde sagen: "Benutzer fragen, für die Temperatur."
Muss nicht ein vollständiger Satz, nur eine kurze Phrase sein.
Aber die Idee, die hinter kommentieren in C ist, dass jede Ihrer
Kommentare sollten befähigen Sie - oder, sagen wir, ein TF oder einen Kollegen -
Ihr Programm überfliegen und wissen genau, was sie tut, indem sie nicht
so viel Lesen des Codes, sondern durch das Lesen der Kommentare, die
sollte prägnant und klar.
Alles klar, also lassen Sie mich jetzt voran gehen und sagen, "Konvertieren
Fahrenheit in Celsius. "Also werde ich weitermachen und tun,
sagen wir mal, float c.
Wir halten Celsius als Fließkommazahl.
>> Und lassen Sie mich einen Stich an diese.
Die Formel ist wiederum hier oben.
Als 5/9 mal F minus 32.
Also lasst uns dies tun.
So 5 von 9 geteilt, minus -
hoppla, durcheinander ich es schon.
Times.
So 5/9 mal F minus 32.
So F minus 32, Semikolon.
Und jetzt, hier unten, ich werde weitermachen
und sagen, drucken Ergebnis.
Und dieser Teil ist einfach. Printf.
Wie kann ich über das Drucken dies gehen?
Nun, ich könnte sagen: "Diese Zahl in Celsius% f \ n",
nur für einige Ästhetik.
Und dann, welchen Wert will ich hier als printf den Stecker
zweite Argument?
Okay.
Also einfach c.
Also werden wir mit diesem zu starten und dann nur 0 zurück.
Auch hier hat es nichts mit der Mathematik zu tun.
Es bedeutet nur, alles ist gut.
>> Nun, dies ist richtig, dieses Programm?
Gut.
So habe ich einige Fehler gemacht.
Selbst wenn Sie keine Ahnung, was die Programmierung haben, können Sie sortieren
des folgern zurück zur Grundschule, was die
Fehler hier sein könnte.
Was ist einer der ersten?
PUBLIKUM: [unverständlich]
DAVID J. MALAN: Yeah.
Daher freuen wir uns fehlenden Klammern.
Es war vorsätzliche, dass ich Klammern haben in der Keynote
schieben hier, weil es ist eigentlich dieser Begriff von Ordnung
von Operationen oder Vorrang, wobei bestimmte Operationen -
Multiplikation -
haben eine höhere Bindung, haben eine höhere Priorität, als die Dinge
wie Addition oder Subtraktion.
So haben wir seit Jahren gemacht, nur um klare genau machen
was mathematische Operation zuerst getan werden sollte.
Also sollte ich wohl genau diese zu imitieren.
Andernfalls wird der Computer vermutlich werde versuchen zu tun
so etwas wie divide 5 von 9, dann multiplizieren F, dann subtrahieren
32 von der ganzen Sache.
Was ist in der Tat nicht, was wir tun wollen.
Also lasst uns klammern.
Lasst meinen Klammern hier, Klammern hier.
Setzen wir dies hier.
Hier habe ich gerade bemerkt, andere Fehler, den ich auf dem Weg gemacht.
Yeah?
PUBLIKUM: [unverständlich]
>> DAVID J. MALAN: Ah.
Gut.
So haben wir eigentlich die gleiche Zahl
Geschäftsbereich Thema von vorhin.
Ich das korrigieren, mal sehen, was das Symptom.
Aber wir gehen zu müssen, eine richtige
andere Fehler hier.
Yeah?
PUBLIKUM: [unverständlich]
DAVID J. MALAN: Ja.
Also, dummer Fehler ich gemacht habe, aber unglaublich wichtig.
Der Computer ist nicht einfach nur ein Auge zudrücken und lassen
me nutzen Kapital F, als ich erklärte, tatsächlich die Variable
als Kleinbuchstaben f hier in Zeile 8.
Also muss ich in Zeile 11 meine Aktivierung korrigieren, die ein
vorhin war eine Hauptstadt F aus Versehen.
Was ist hier?
Sollte dies Kleinbuchstaben als auch?
Es sollte, aber das ist ein Zufall.
Das% f hat nichts mit der Variablen zu tun.
Also einfach sein super hier klar, lass mich gehen Sie vor und
Benennen Sie diese kurz, "Temperatur". Lassen Sie mich umbenennen
Diese "Temperatur". Lassen Sie mich nicht umzubenennen.
Denn wieder,% f global bedeutet, "floating point Wert."
Hat nichts mit meiner variable tun.
Aber "Temperatur" überall ist nur ein wenig wortreich,
so werde ich zurück zu meinem kleinen "f" s.
>> Nun, lassen Sie mich gehen Sie vor bis zu meinem Fenster hier.
Machen f2c -
das war wieder die beliebigen Namen I
gaben auf diese Datei.
Scheint zusammengestellt.
Lassen Sie mich laufen f2c.
Enter.
Temperatur in Fahrenheit - lasst uns ein einfaches ein.
32.
OK, zu korrigieren.
Aber, wenn ich jetzt tun 212 zum Kochen -
damn.
Gut.
Also, offensichtlich nicht korrigieren, wenn Ihr TF versucht
mindestens zwei Werten.
Also, was ist das Problem?
Nun, haben Sie bereits mit dem Finger auf das, was das Problem ist.
Aber warum ist das so?
Hier oben, wenn ich tue, die Mathematik von 5 von 9 unterteilt.
So konzeptionell, das ist vollkommen richtig.
Völlig im Einklang mit der Formel.
Aber Computer nur tun genau das, was Sie
ihnen sagen, zu tun.
Und was wir tatsächlich sagen, der Computer ist hier
teilen die Zahl 5 durch die Zahl 9
und gib mir das Ergebnis.
Das Problem ist aber, wenn Sie eine Division mit keine Daten
Typen, ist die Ausgabe die gleichen Datentyp wie der Eingänge.
Und dann, wenn die beiden Eingänge beide ints sind, ist der Ausgang gehen
ein int sein.
Und so 5 von 9 unterteilt ist Punkt etwas.
Aber was ist die nächste ganze Zahl auf etwas hinweisen?
Also, es ist eigentlich 0.
So wie wir am Montag diskutiert, alles nach dem Komma
Punkt wird abgeschnitten.
Es wird nur weggeworfen.
Dies ist also eine vollständige Fehler, denn ich könnte genauso gut
multiplizieren alles von 0 hier.
>> Jetzt kann ich dies in ein paar Möglichkeiten zu beheben.
Ich konnte dies tun.
5,0 von 9,0 geteilt.
Technisch kann ich nicht einmal das zu tun.
Es genügt, um nur noch eine der Zahlen a float -
oder Doppel - indem Sie den Dezimalpunkt hier.
Weil das, was jetzt passiert ist, wenn Sie eine ganze Zahl von spalten
ein Schwimmer oder ein Doppelbett, ist der Computer gehen zu realisieren
oh, ist einer von denen genauer.
Lassen Sie mich irren auf der Seite der Ihnen mehr Präzision als
Sie bestimmt.
So wird es konvertieren Sie das Ergebnis -
es wird das Ergebnis als Gleitkommazahl sowie zurückzukehren.
So das funktionieren würde.
Das würde funktionieren.
Und es gibt einen weiteren Mechanismus, den wir in Stilen
näher nächste Woche.
Sie können tatsächlich als Programmierer, sagen dem Computer
tatsächlich behandeln ein Datentyp wie
wäre sie eine andere.
>> So konnte ich tatsächlich tun dies.
In Klammern kann ich sagen, so etwas wie (float), offene
paren, in der Nähe paren.
Und das ist, was heißt "Casting". Wiederum weitere
auf dieser nächste Woche.
Doch dies ist nur die programmatische Möglichkeit zu sagen,
der Computer, ja, ich weiß, 9 ist eine ganze oder eine lang.
Ich weiß, es ist nicht eine Fließkommazahl.
Sondern behandeln sie als solche sowieso.
So ein Datentyp umgewandelt bedeutet zu konvertieren
von einem zum anderen.
Ehrlich gesagt, das nur ein wenig hässlich ist, so würde ich vorschlagen, wir gehen
wieder auf den ursprünglichen Vorschlag nur das Umwandeln
diese Dinge Gleitkommawerte manuell.
Denn jetzt ist es einfach super klar, was los ist, und
es ist nicht alles, was ablenken.
>> Also lasst uns jetzt gehen zurück in mein Terminal-Fenster.
Machen f2c.
Lassen Sie mich gehen Sie vor und führen Sie dieses.
Und als beiseite, lassen Sie sich langweilen Eingabe dieser Befehle
wieder und wieder, zu realisieren, dass die Computer, wie Linux hier,
sind in der Regel ziemlich schlau.
Und wenn ich oben schlagen, können wir durch meinen ganzen Geschichte gehen
Kommandos, Up and Down.
Also in diesem Fall hier, kann ich einfach hingehen Bis zu make f2c.
Ich werde angeschrien, weil ich genau das tat vor einer Sekunde.
Es ist bereits up to date.
So, jetzt kann ich laufen f2c wieder.
Lassen Sie uns versuchen 32 Fahrenheit.
Nun wollen wir versuchen, 212 Fahrenheit.
>> Puh.
Scheint zu funktionieren.
Nun, dies ist gut, aber es fühlt sich ein wenig willkürlich, dass
Ich zeige sechs Zahlen nach den Dezimalstellen.
Right?
Wenn Sie das Wetter Person TV, bist du eine Art doofus
wenn du liest die Temperatur auf
Dieses Maß an Präzision.
Also lasst uns erleichtern dies.
Lassen Sie uns also tatsächlich gehen hier, um meine printf.
Und ja, ich will zu schweben.
Aber ich will jetzt angeben, die Präzision.
Und ich werde ein wenig prägnante sein.
Ich werde sagen, gib mir ein Punkt nach der Dezimalstelle.
Also anstatt zu sagen% f, werde ich sagen,% .1 f.
Und dies bedeutet nur, mir eine Position
nach dem Komma.
Gut.
Lassen Sie uns noch einmal versuchen.
Lassen Sie mich erneut ausführen, nachdem kompilieren.
Und jetzt tippe ich in 32, und ich bekomme wieder eine
prägnanter Wert.
Und ich kann in geben, jetzt, 212, und wieder eine knappere
Wert als gut.
Und es gibt andere Dinge, die Sie mit printf tun können.
Sie können tatsächlich geben, wie weit die Zahl sein sollte.
Wenn Sie Polsterung auf sie haben wollen, so können Sie mit der rechten Maustaste ausrichten oder
linksbündig alle Ihre Zahlen oder
versuchen Zentrum Dinge.
So erkennen, gibt es kleine Tricks, die Sie dort tun kann.
Aber sie gerade laufen auf Format-Codes,
wie wir dort haben.
>> So im Sinne dieser Ausgabe von Vorrang.
Dies ist eine sehr langweilige Tabelle zu durchlaufen methodisch.
Aber klar, dass die Autoren von C haben sich mit dem zu kommen
Regeln geben, die die Betreiber höher haben
Vorrang, mehr Bindekraft, als andere.
Während also in der Grundschule, wir in der Regel wusste, dass es
Multiplikation und Division, dann Addition und Subtraktion,
dann einige andere Sachen.
In einer Welt der Programmierung, gibt es eine viel
längere Liste von Dingen.
Und das ist nicht etwas wert Auswendiglernen jetzt.
Du wirst es vor langer gewöhnen.
Aber genau wie in der Grundschule, Klammern in der Regel lösen
die Themen Vorrang, indem sie super klar die
Computer und Mensch gleichermaßen, was beabsichtigt ist.
So halten diese nur ein wenig Spickzettel gibt.
Aber die meisten dieser Details, die wir nicht zu bekommen für einige Zeit.
>> Gut.
Jetzt wollen wir aufbauen und weg von dieser dummen, kleinen
mathematische Beispiele.
Immer noch die gleichen Grundlagen, sondern beginnen
uns auszudrücken ein wenig mehr wie Scratch.
So in Scratch, hatten wir diese Boolesche Ausdrücke.
Und in Englisch, ist ein boolescher Ausdruck, was?
Wahr oder falsch.
Es ist etwas, das wahr oder falsch bewertet.
1 oder 0 ist.
Oder ausschalten.
Was auch immer Sie es nennen wollen.
Jetzt in Scratch, sah die Puzzleteile so.
Und das ist die Kombination, auf der Unterseite befindet, von drei
Puzzleteile.
Eine Verbindung -
etwas, das leer und blank ist.
Und dann zwei boolesche Ausdrücke darin.
So kann man Nest Boolesche Ausdrücke mehr zu bekommen
kompliziert Boolesche Ausdrücke.
Zum Beispiel, wenn es ist Samstag, und es ist schön
Wetter, dann nach draußen gehen.
Oder etwas Willkürliches so.
So können Sie an boolesche Ausdrücke zu kommen mit einer
größeren Wahrheitsgehalt, deren Beantwortung basiert
auf den kleineren.
>> Jetzt, in C, zum Glück, ist diese Zuordnung
eigentlich ziemlich einfach.
Klammern dazu beitragen, dass die Dinge hier zu löschen.
&& Ist, was bedeutet, "und." Damit ist, wie
wir werden diese Blöcke from Scratch zu C. konvertieren
Und für die Bedingungen, die wir sahen in Scratch, auf der linken
Seite gibt, kann ich sie ähnlich in der Hierarchie C. Wenn x kleiner
als y, dann tun Sie dies.
Sonst wenn x größer als y ist, dann dies tun.
Else sie logischerweise gleich sein, so sagen
dass sie gleich sind.
So können wir jetzt damit beginnen, diese Dinge aufzubauen.
>> So lasst uns ein Beispiel.
Lassen Sie mich öffnen eine Datei, die auf dem Kurs der Website, dass es
Ich schrieb im Voraus.
Das nennt man nonswitch.c.
Und wir werden sehen, warum in nur einem Augenblick.
So in dieser Datei - nonswitch.c--
zuerst erkennen, dass es eine ganze Reihe von
Kommentare am Anfang.
Das ist nur Erläuterung der Name der Datei, was es
tut, und so weiter.
Und es offenbar demonstriert die Verwendung von Boolean AND-ing -
conjoining zwei Ausdrücke.
>> Also mal sehen, wie dieses Programm funktioniert.
Ich schließe meine beiden Dateien, cs50.h und stdio.h.
Wenn ich nach unten scrollen, jetzt, um das Programm, ist es ein wenig länger
als wir vorher geschrieben, aber ziemlich lesbar.
Also habe ich zuerst auf die Benutzer drucken, on line 18,
"Gib mir eine ganze Zahl zwischen 1 und 10". So
das ist recht.
Jetzt bekomme ich die integer.
Aber erkennen, dass GetInt - ziemlich einfach.
Ist es nur geht, um einen int zu bekommen.
Es wird, um sicherzustellen, dass es ein int zu bekommen und nicht ein
String oder ein Schwimmer.
Aber es wird nicht jede Art von Grenze Kontrolle zu tun.
Es wird nicht zu filtern die Zahlen zwischen a sein
bestimmten Bereichs.
Also müssen wir, dass wir uns zu implementieren.
Also einfach in Scratch gefallen, wo ich eine Konjunktion von do
zwei Ausdrücke, kann ich das in C wie folgt.
Wenn n größer als oder gleich 1 ist, und n kleiner als und
oder gleich 3, ich bin sehr willkürlich Dekret gehen, dass
Nummer eine kleine Zahl sein.
Nur aus Gründen einer Anweisung.
Else if n zwischen 4 und 6, print "Sie haben eine mittlere
Nummer. "Else, wenn n liegt zwischen 7 und 10, print" Sie nahm ein
große Nummer. "Else print" Sie holen eine ungültige Nummer. "
Da logischerweise folgt, dass, wenn wir habe
erschöpft unserem Sortiment.
>> So klar, dass das nicht ganz, wie wir mehr als Schreib-oder
gleich in einer Mathe-Unterricht.
Right?
In der Regel ziehen sie wie diese, mit der Linie darunter.
Aber es gibt keine solche Taste auf meiner Tastatur.
So das Zeichen nach C zur Expression von größer oder
gleich ist zwei Zeichen, und das Symbol für weniger als
oder gleich ist zwei Zeichen sowie.
Gut.
Also, wenn ich dieses Programm ausführen, können Sie wahrscheinlich erraten, was es ist
tun werde.
Wenn ich voran gehen und machen nonswitch, Enter.
Und dann laufen nonswitch.
Gib mir eine Zahl zwischen 1 und 10.
Ich werde ihm 11.
Ich nahm eine ungültige Nummer.
Lassen Sie mich versuchen, die Nummer 3.
Ich nahm eine kleine Anzahl.
So ziemlich einfach da.
>> Was ist, wenn ich will, um das Verhalten dieses Programm zu ändern und
etwas ein wenig anders statt?
Lassen Sie mich gehen Sie vor und sagen.
Lassen Sie mich loswerden all dies.
Und lassen Sie mich sagen, wenn (n == 42).
Und dann werde ich nach vorne gehen und sagen print "Du hast dir das
richtige Antwort. "Else wir gehen voran gehen und sagen,
printf ("Sie haben die
falsche Antwort ");. Okay.
Nur weil.
>> Jetzt, ein paar Punkte, die wir hier machen.
Eines habe ich nicht geben Sie das Symbol, dass Sie denken, ist die
vernünftigste.
Wenn ich auf Gleichheit prüfen wollen, stellt sich heraus, die Sie nicht verwenden die
Gleichheitszeichen.
Sie verwenden stattdessen die gleiche Gleichheitszeichen.
Und warum könnte das sein, nur intuitiv?
Yeah.
PUBLIKUM: [unverständlich]
DAVID J. MALAN: Richtig.
Das Gleichheitszeichen ist bereits für die Zuordnung verwendet.
Jemand habe nicht wirklich glaube, das durch.
Und jetzt, wenn es um die Gleichstellung Prüfung kommt, müssen wir
expliziter sein, und sagen gleich entspricht.
Ein sehr häufiger Fehler ist es, dies zu tun.
Und wenn in der Bürozeiten oder irgendwann nächste Woche oder in der
nächsten zwei Wochen werden Sie etwas tun und dann
kämpfen mit ihm für 10, 20 Minuten, um herauszufinden,
was das verdammte Bug ist, erkennen, dass Sie einer von denen sind
Menschen, die diese Fehler gemacht.
So, super einfach zu machen.
Aber das Ziel ist jetzt abzuwehren diesen Fehler.
Dies könnte zu bewerten, weil das, was ist das wirklich sagen?
Wenn n erhält 42.
So das Verb Menschen nutzen, mündlich, die zum Ausdruck bringen
Begriff der Zuordnung "bekommt." Also, wenn n erhält 42.
Das heißt also, weisen 42 bis n.
Jetzt habe ich ein Boolean Ausdruck in Klammern,
Innere dieser Bedingung ist, deren Wert 42.
Right?
Denn wenn Sie es beurteilen von innen heraus, die insgesamt
Antwort, jetzt ist 42.
>> Also, wenn ich Ihnen die Frage gestellt, "wenn (42)," was ist
das wirklich sagen?
Nun, man kann Boolean Ausdrücke nur wahr oder falsch sein.
1 oder 0 ist.
Oder ausschalten.
So scheinen wir eine Ecke Fall hier zu haben, wobei alle a
Plötzlich, ich sage ", wenn (42)". Das ist nicht ein boolescher Wert.
Also, was Computern zu tun, ist es aber im wesentlichen entspricht
alles, was nicht 0 interpretiert wird um wahr zu sein.
Ein.
On.
Sie sind alle funktionell gleichwertig.
Nur der Wert 0 oder das Schlüsselwort falsch, wie wir
schließlich sehen, ist eigentlich falsch.
So ", wenn (42)" tatsächlich wahr sein, weil es nicht null ist.
So um genauer zu sein hier ist ein boolescher Wert wirklich nicht so
viel wahr oder falsch, aber für diese
Fall, wenn die Zahl 0 oder ungleich Null ist.
So falsch oder nicht falsch.
Und das ermöglicht es uns, umso mehr umfassen
Möglichkeiten in der Klammerausdruck.
Also müssen wir, noch so sorgfältig, sagen -
if (n == 42).
Ganz einfach, weil wir brauchen, um einen Test der Gleichheit geben,
nicht eine Zuweisung eines Wertes.
>> Was ist erwähnenswert, hier?
Diese geschweiften Klammern sind eigentlich nicht notwendig.
Ich mache sie einfach zu sein nit-wählerisch hier.
Aber wenn Sie eine Bedingung, die nur eine Zeile
Code, als Bequemlichkeit, müssen Programmierer nicht verwenden müssen,
die geschweiften Klammern.
Es genügt, nur Gedankenstrich aus ästhetischen Gründen und
dann schreiben Sie Ihre Code-Zeile.
Nur wenn Sie zwei Zeilen Code zu schreiben - für
So else printf ("Bye!"). Wenn Sie wollen,
, dass wird diese unterbrochen.
Sie können Gedankenstrich alles, was Sie wollen, aber die Tatsache, dass Sie
getippt zwei Zeilen Code, ohne mit geschweiften Klammern
bedeutet, dass dieses Programm nicht richtig oder vielleicht laufen würde
nicht einmal richtig zu kompilieren.
So jetzt, um ehrlich zu sein, ich denke, die beste Gewohnheit ist nur
Verwenden Sie die geschweiften Klammern, und Sie werden feststellen, dass sie machen
super klar, was los ist.
>> Auch als beiseite - besonders wenn Sie zu denen, die verwendet
die empfohlenen Bücher oder Online-Ressourcen -
erkennen, dass es diese Vorstellung von Stil
Programmierung.
Und manche Leute eigentlich lieber um die geschweiften Klammern gesetzt
hier auf einer Linie.
Einige Leute ziehen es lächerlich, Dinge zu tun,
wie steckte sie hier.
Es gibt keine falsche Antwort, wenn es darum geht,
Stil, aber das ist falsch.
Aber manche Leute es tun.
[Gelächter]
DAVID J. MALAN: So erwähne ich das jetzt, weil so
Sie lesen auf Dinge in Bücher oder online, wirst du bekommen
verschiedene Meldungen von verschiedenen Lehrern und
verschiedenen Autoren.
Und genau erkennen, dass, funktionell, sind sie
allgemein äquivalent, aber einheitlich sein.
Also in diesem Fall, werden wir auf dem lockigen standardisieren
Zahnspangen Schlange hier auf der linken Seite.
>> Gut.
So lassen Sie uns jetzt gehen und laufen das, und sehen, was passiert
mit diesem Programm.
Machen nonswitch.
Dann laufen nonswitch.
Gib mir eine Zahl zwischen 0 und - so ist das nicht relevant
mehr, aber ich werde einfach willkürlich sagen 42.
Und ich nahm die richtige Antwort.
Nun, lasst uns tatsächlich nehmen diese in eine andere Richtung.
Es stellt sich heraus, es gibt einige andere Syntax haben wir
können in einem Programm verwenden.
Hier ist ein neues Stück Syntax, die funktional ist die gleiche,
aber nur stellt eine weitere Möglichkeit, uns auszudrücken.
Also das ist eine so genannte "Switch-Anweisung." Und ein
Switch-Anweisung arbeitet wie folgt.
Es dauert in Klammern einen Wert, den Sie
"Schalter" auf.
Sie wollen sich anders zu verhalten basierend auf ihren Wert.
Dies bedeutet also Schalter auf dem Wert von n ist.
Und was bedeutet das?
Nun, wenn n = 1 oder 2 oder 3, gehen Sie vor und ausdrucken "Du
nahm eine große Anzahl "und dann brechen.
Der Grund für den Bruch ist, daß der Weg C arbeitet wie
sobald es einen Fall, dass übereinstimmt feststellt, startet es die Ausführung
der gesamte Code darunter.
Also, wenn ich eine Zeile Code haben, wie ich hier auf der Leitung 27 zu tun, es
ausgeführt.
Wenn ich eine andere Linie hier hinzufügen, wird es ausgeführt.
Eine andere Linie hier, wird es ausgeführt.
Das Programm stoppt die Ausführung, was unter dem
anwendbaren case-Anweisung, wenn ich explizit
sagen "zu brechen." So falsch.
Rechts, in diesem Fall als Ergebnis.
Fall 4 oder 5 oder 6, ähnlich, wird
drucken Sie eine Nachricht.
In diesem Fall mittlere Anzahl.
Brechen.
Fall 7, 8, 9, 10, es geht um auszudrucken "Du hast einen großen
Nummer. "Break.
Und dann gibt es buchstäblich ein Schlüsselwort heißt "default"
Das ist effektiv wie der "else" zu konstruieren.
So eine neue Syntax, aber intellektuell,
überhaupt nichts Neues.
Es ist genau wie der Scratch.
Wenn else if, else if, eine Art Block.
>> Damit ist das Einschalten Version dieses Programms.
Aber beachten Sie, dass wir es getan haben mit Zahlen hier.
Lassen Sie mich eröffnen eine zweite Version, nur um zu zeigen
etwas mehr Beton.
Also hier haben wir Klassen statt.
Stellt sich heraus, Sie Schalter nicht nur auf ganze Zahlen verwendet werden können, sondern auf
Zeichen.
Nicht in allen Datentypen, aber zumindest auf Zeichen.
Also hier konnten wir etwas tun, wenn der Wert von C, dass
der Benutzer eingegeben wird, in der Leitung 19 unter Verwendung der Funktion GetChar,
ist das Kapital A-oder Kleinbuchstaben a, lasst interpretieren als Klasse,
und sagen, sie nahm eine ausgezeichnete Qualität.
Und entlang der Switch-Anweisung, wir haben andere
Fällen für "B"-Werte und "C" s, und so weiter.
Aber lassen Sie uns nun runden eine andere Sache.
Und wieder, Art des Fliegens durch
einige dieser Beispiele.
Aber es ist wirklich so, dass wir sie anwenden, jetzt -
oder wirklich nur übersetzen sie nun -
bis C.
>> Also lass mich gehen Sie vor und tun dies.
Ich werde zu öffnen eine neue Datei.
Und ich werde tun include.
Und dann werde ich int main (void) zu tun.
Lassen Sie mich diese Datei speichern als loop.c.
Nur als Beispiel.
Und ich werde weitermachen und gehen Sie folgendermaßen vor.
Ich möchte eine sehr mühsame Programm zu schreiben.
So 10.
Lassen Sie uns dies tun.
9.
Gut.
Sobald Sie tun dies in der Programmierung beginnen, sind Sie
wahrscheinlich etwas falsch.
Aber wir werden es trotzdem starten.
Oops.
Das ist eigentlich falsch.
7.
6.
5.
4.
Nichts wird passieren, wenn wir auf 0 zu bekommen.
3.
2.
Ein.
Okay.
0.
Löschen.
>> Gut.
So 0 zurück.
So dieses Programm ist offensichtlich werde, was es sehr zu tun
mühsam sagt, es tun werde.
Es wird all jene drucken
Werte, von oben nach unten.
So lass mich machen Schleife.
Und dann - hoppla.
Machen Schleife.
Ich war im falschen Verzeichnis.
Und nun lassen Sie mich laufen Schleife.
Enter.
Woohoo.
Very nice.
Nice, langes Programm.
>> Alles klar, aber jetzt machen wir das besser.
Just in Scratch möchten, wenn Sie einen Looping begonnen
Konstrukt, anstatt nur das Kopieren und Einfügen alle der
Puzzleteile, lassen Sie mich dieses Ding.
Also in C, gibt es verschiedene Schleifenkonstrukte,
von denen sieht wie folgt aus.
A "für" Schleife hat drei Dinge, die durch zwei Semikolons getrennt.
Und dann, im Inneren des Körpers der Schleife, sozusagen - die
Zeug in der geschweiften Klammern -
wir können etwas wieder und wieder zu tun.
Also, was ich hier habe auf dem Bildschirm, ist dies
buchstäblich nur ein Kommentar.
Die / / bedeutet, hier kommt ein Kommentar.
Dies ist kein Code.
Dies ist nur auf Englisch, für mich, der Mensch.
>> So Initialisierungen, Bedingungen und Updates.
Nun, lassen Sie, wie das funktioniert.
Dies ermöglicht es mir, dieses Programm wie folgt umschreiben.
For -
so hier kommt meine Schleife -
int i -
Hier kommt eine Variable namens "i" -
bekommt initialisiert bis 10 ist.
So gibt es meiner Initialisierung.
Ich möchte diese Schleife so lange "i" ist größer als oder tun
gleich 0 ist.
Und bei jeder Iteration dieser Schleife, möchte ich
bis i tun -.
So sahen wir + + am Montag.
- Ist das Gegenteil.
Es vermindert den Wert um 1 erhöht.
Innerhalb dieser Schleife, möchte ich etwas zu tun.
Also werde ich so etwas wie printf sagen.
Ich will nicht bis 10 jetzt sagen, da dies offensichtlich nur
gehen auf den gleichen Wert zu drucken.
Was will ich stattdessen, wahrscheinlich drucken?
Yeah.
So "i". So% d, i.
>> So werde ich eine dieser Ideen aus früheren stehlen -
diese Substitution für Format-Codes -
und dann hier unten, am Boden, ich 0 zurück, nur
für eine gute Maßnahme.
Aber jetzt habe ich eine prägnante Programm.
Es ist nur ein paar Zeilen, und nicht etwa 10 oder 11 Zeilen.
Lassen Sie mich zu meinem Eingabeaufforderung hier unten gehen.
Remake Schleife.
Führen Schleife.
Und es wird die gleiche sein.
Jetzt ist das Programm nicht mehr interessant.
Aber jetzt kann ich geben etwas wie dieses.
Ich kann dies auf 100 ändern.
Ich kann dann neu kompilieren meinem Programm.
Und dann kann ich wieder mein Programm.
Und jetzt geht es super-schnell auf den heutigen Computern.
Aber da habe ich -
und tatsächlich, hat mein scrollback Puffer nicht
sogar so weit gehen.
Dort gehen wir.
So, da haben wir alle 100.
Aber es ist leicht zu Fehler machen.
Was wird das erwartete Verhalten, wenn ich
versehentlich tun?
So fühlt es sich wie unendlich.
Also lasst uns sehen, ob der Computer verhält.
>> Also lassen Sie mich voran gehen und Schleife.
Und lassen Sie mich laufen Schleife.
Also lasst uns kommen zurück zu, dass in nur einem Augenblick.
Wir lassen diesen Lauf.
Denn was sollten wir zählen bis minimal?
Wahrscheinlich mindestens 2 Milliarden, wenn wir, dass viele Bits und
verwenden wir positive Werte.
Also lasst uns springen wieder hier.
Neben diesen Arten von Schleifen, haben wir sogenannte, während
Schleifen. So, wie in Scratch, musste man immer
Blöcke, und man musste Repeat Blöcke.
Auch in C, man muss nur andere Wege
sich auszudrücken.
So haben Sie diese Vorstellung von einer while-Schleife, die Ihnen erlaubt,
äußern Sie sich ein wenig anders.
Und dann haben Sie etwas namens eine do-while-Schleife,
die arbeitet etwas anders als gut.
Und wir werden diese auseinander zu necken im Laufe der Zeit.
>> Aber lassen Sie uns einen Blick auf diese letzte hier.
Wenn wir in -
noch läuft.
Es ist ziemlich unendlich.
Also lass mich in positive zu gehen, und zeigen, wie wir tatsächlich
regeln Benutzereingaben ein wenig mehr effektiv.
Es ist ein ziemlich kurzes Programm.
Und hier haben wir, in Haupt-, ein int n Erklärung.
Also gib mir eine Variable namens n. Nun, ich buchstäblich sagen,
"Tun." Und dann habe ich noch offenen geschweiften
Klammer, in der Nähe geschweiften Klammer.
Und dann bemerken, gleich danach, sagt sie, während n
kleiner als 1 ist.
So bemerken, dass diese Zeilen -
19 bis 24 -
komponieren gemeinsam eine do-while-Schleife.
Und wieder eine neue Syntax, keine neue Idee.
Es ist nur eine andere Art Looping, syntaktisch.
Was bedeutet dies tun?
Gehen Sie folgendermaßen vor, während n kleiner als 1 ist.
So was will ich tun?
Ich verlange, dass Sie mir eine positive ganze Zahl ist.
Dann habe ich tatsächlich versuchen, eine ganze Zahl von Benutzer zu erhalten.
Aber in Bezug auf die Reihenfolge der Operationen hier, weil das
während Bedingung ist hier unten, ich bin dann gehen, um zu überprüfen, ist n
weniger als 1?
So nehme an, dass der Benutzer -
Nachdem auf diese Weise verlangt -
Typen im Wert 0.
Diese Bedingung wird wahr oder falsch sein?
Nun, es ist eigentlich los, um wahr zu sein.
Wegen n = 0, und 0 kleiner als 1 ist.
Also, was bedeutet das?
Es wieder tun.
Nur einmal, dass diese Bedingung als falsch ausgewertet.
Wenn ich schreibe in 42.
Nun nein, ist 42 nicht weniger als 1 ist.
Deshalb ist diese Schleife getan ausgeführt wird.
Und so an diesem Punkt wird das Programm sagen, vielen Dank für
die 42, in diesem Fall.
Jetzt haben Sie auf diese Weise, sich auszudrücken -
Wir sollten nicht darauf warten zu beenden.
Es wird einige Zeit dauern.
Fortgesetzt werden beim nächsten Mal vielleicht.
>> Aber jetzt haben Sie die Möglichkeit, um hoffentlich ein Verständnis
bisschen Geek Humor.
Entschuldigungen.
Dies ist nicht repräsentativ für Humor in der Informatik
Welt, aber es ist süß.
[Lacht] Lassen Sie uns Ende dieser Bemerkung.
Und wir werden uns am Montag sehen.
[Applaus]