>> [Musik spielt]
>> DAVID MALAN: Alles klar.
Willkommen zurück.
Dies ist CS50, und dies ist One Week, Fortsetzung.
So einer der Gründe, warum wir vorbeigekommen haben um Technologien wie
Google Glass ist, dass sie mit zu kommen etwas bekannt als eine API, ein
Application Programming Interface.
Und was das bedeutet, ist, dass mit der richtigen Dateien und mit der richtigen
Dokumentation, können Sie tatsächlich schreiben Software für noch Geräte wie diese.
>> Und so, was wir im Sinn haben, in Richtung Semester Ende ist, wenn ein Projekt
mit, sagen wir, Google Glass könnte Appell, wir werden sehen, was wir tun können in
Bezug Einhaken Sie sich mit einigen Leihgerät Hardware sowie die
öffentlich zugängliche API, so dass Sie tatsächlich beginnen die Erstellung von Software
das läuft auf dem gleichen Google Glass.
>> Ein weiteres Gerät, das wir gespielt haben mit der spät, dass wir dachten, vielleicht
Spaß an Semester Ende ist dieses kleine Ding hier.
Es heißt Leap Bewegung, und was du bist über zu sehen ist technisch eine
Anzeige des Geräts, sondern es nicht auf das, was diese besondere sprechen
Vorrichtung in der Lage ist.
Und auch er kommt mit einem API via was können Sie Software zu schreiben
steuern Sie Ihre eigenen Computer in einer Art und Weise ganz gerne dieses einminütigen Film hier.
>> [VIDEO PLAYBACK]
>> [END VIDEO PLAYBACK]
>> So jetzt, geschieht dieses Gerät wie ein kleines USB umgesetzt werden
Verbindungsstück, das Sie in Ihr stecken Computer, aber ich würde mich nicht wundern
wenn es dauerte nicht lange haben wir diese Art von Technologien in die nächste Charge von PCs
und Macs, so dass Sie in der Tat, mit ihm interagieren in
eine Art und Weise wie die.
In der Tat, was ich dachte, ich würde auch tun, ist Ich zog eine kleine Demonstration
Programm, das kommt mit dieser Software.
Also habe ich den kleinen Sensor setzen vor meinem Laptop.
>> Und wie Sie sehen können, ist es bereits realisiert dass meine Hand ist da
kontrollieren.
Und all dies tut, ist Anwendung swimmingly kleine Dinge wie diese.
Aber man kann sehen, dass in der Tat, Ich habe fünf Finger dort.
Wenn es uns gelingt, es zu tun, alle 10, Sie können sich vorstellen, ein ordentliches Klavier
Anwendung oder dergleichen.
Also, wenn Sie möchten, kommen nach dem Unterricht heute und spielen mit, dass
Nun, Sie sind zu begrüßen.
Also mehr auf, dass auf Ende Semester.
>> So ein paar administrative Ankündigungen.
One, tun Abschnitt durch diesen Freitag am Mittag an cs60.net/section.
Das URL ist auf dem Kurs der Homepage als gut.
In der Zwischenzeit, obwohl, supersections wird erstmals an diesem Sonntag.
Supersections sind eine einmalige Sache, denn es dauert einige Zeit, um uns zu arbeiten
heraus, wer in welchem ​​Bereich und wo.
>> So am kommenden Sonntag, werde da sein Abschnitt für diejenigen, weniger komfortabel,
einem Abschnitt für diejenigen, komfortabler.
Und diejenigen von euch, irgendwo in zwischen sind herzlich eingeladen, zu gehen
oder beide oder keines von beiden.
Beides wird gefilmt werden.
Sie werden in einem größeren Auditorium sein als ein Abschnitt normalerweise wäre in.
Aber das Ziel ist es, Sie mit ausstatten einige Komfort mit einem Problem stellen,
mit C, mit dem CS50 Gerät, diesem Wochenende, noch bevor Sie Ihre
formale Abschnitt Zuordnung.
So treffen Sie Ihre TF und Ihr kleiner Gruppe von sectionmates in etwa
eine Woche Zeit.
>> Sprechstunde, inzwischen haben schon seit.
Sie nutzen sie heute Abend oder morgen Abend, wenn Sie möchten.
Problem set 0 ist am Freitag.
Dies ist ein Tag später als die regulär geplanten Mittwoch.
Aber mit Problem-Set 1, werden Sie sehen, dass es enthält einige Warm-up
Übungen, mit denen Sie sich selbst Ihre verlängern
Donnerstag Frist bis Freitag.
Problem Satz 1, mittlerweile wird Debüt Auf dem Kurs der Website im kommenden
Freitag, wenn Sie möchten, machen Sie es sich mit wie ich es einst spät
Freitag Abend in Ihrem Zimmer.
>> So cs50.net/appliance ist der Ort, wo können Sie das Gerät CS50
dass wir mit am Montag begonnen.
Wir verwenden es ein bisschen mehr heute.
Aber seien Sie versichert, dass das Problem 1 Spezifikation wird Sie durch gehen
genau die Schritte, die Sie brauchen zu, dass zum Laufen zu bekommen.
Also nicht zu tun, dass vor Sorgen Pset 1, wenn Sie lieber nicht.
>> In Ordnung.
So haben wir uns am Montag um Quellcode sondern im Rahmen einer neuen
Programmiersprache, nämlich C und C, im Gegensatz zu Scratch, ist nicht grafisch.
Es ist nicht Puzzleteile.
Es ist mehr Englisch-ähnliche Syntax.
Und es gibt ein paar Schritte beteiligt in tatsächlich ein Schreiben und Ausführen
Programm in C, denn neben Quelle Code wie diesen, müssen Sie etwas
rief ein Compiler.
Und in juristischer Hinsicht, was ist ein Compiler für uns tun?
Ja.
>> STUDENT: Er wandelt den Code dass Sie 0 und 1 zu schreiben.
>> DAVID MALAN: Good.
So wandelt er den Code, schreiben wir 0 und 1.
Er wandelt sogenannten Quellcode Objektcode, von denen die letztere sieht
ein wenig etwas wie dieses.
Und es ist Ihre CPU, die Gehirne Innenseite Ihrem Computer, dass aufgrund der
Menschen, die diese Computer erstellt, wissen, was diese Sequenzen
von 0 und 1 bedeuten.
>> Vielleicht bedeutet es Druck.
Vielleicht bedeutet es hinaus.
Vielleicht bedeutet es Subtraktion.
Vielleicht bedeutet es ein graphisches.
Es gibt vordefinierte Bitmuster dass die Welt bedeuten, hat beschlossen,
bestimmte Dinge.
Aber zum größten Teil in diesem Kurs wir werden auf einer höheren Ebene zu arbeiten, und
nehmen wir für selbstverständlich halten, dass es existiert Dinge wie Compiler, können
machen unseren Quellcode Funktion in der Art, wie wir wollen.
>> So schrieben wir das Programm erste letzte Woche und begann dann in den Hafen, so zu
sprechen, C in der vergangenen Montag, war diese.
Wenn grüne Flagge angeklickt, Hallo zu sagen.
Dies war natürlich geschrieben in Scratch.
Und ich behauptete, dass das Äquivalent Programm in C sah ein wenig
etwas wie dieses.
>> Also, was ich dachte, wir würden auf den ersten zu tun ist, lasst auseinanderzuhalten, was aussieht, auf den ersten
Blick freilich als ziemlich obskuren Syntax, aber du wirst beginnen zu bemerken,
Muster recht schnell.
Was wir heute tun, ist auch liefern Sie mit einer psychischen Modell für einige
kanonische, einige Standard-Konstrukte in der Programmierung.
Und dann werden wir tatsächlich unsere Hände schmutzig mit einigen Beispielen als gut.
>> Also für diejenigen unter Ihnen mehr Komfort, erkennen, dass in dieser Woche und dann im nächsten
Woche kann sehr wohl ein bisschen Kritik sein.
Aber vor allem, wenn der Hacker Ausgabe von Problem-Set 1 geht auf die
Natürlich Webseite am Freitag, denke ich Sie werden feststellen, dass, auch wenn Sie ausfüllen
einige Rohlinge in der nächsten Woche oder zwei, Sie beginnen immer mehr bekommen
herausgefordert und Begegnung neue und neuere Sachen.
>> Also lasst uns necken dieses Programm auseinander ein paar Zeilen zu einem Zeitpunkt.
An der Spitze haben wir, was ist technisch genannt
Präprozessordirektive.
Dies ist nur eine Codezeile, sagt um den Inhalt einer Datei umfassen,
genannt Standard I / N, Standard-Eingabe - oder, sorry, Standard-I / O, Standard
Eingang / Ausgang,. h, innen von meinem eigenen Programm.
>> Also mit anderen Worten, wenn ich dies schrieb Programm mit einem einfachen Text-Editor wie
gedit, desto einfacher Äquivalent so etwas wie Microsoft Word, dass
Anweisung # include stdio.h, ist nur gehen, um dem Compiler mitzuteilen, greifen die
Inhalt dieser anderen Datei stdio.h, und fügen Sie sie hier genau richtig.
>> Nun, warum mich das interessieren?
Was haben wir den Anspruch innerhalb dieser Datei stdio.h genannt, die gespeichert
irgendwo auf meiner Festplatte, oder in diesem Fall irgendwo in der CS50 Gerät?
Jemand anderes hat es dort für mich.
Aber was ist da drin?
>> Ja, so ist es eine Erklärung der eine Funktion namens printf.
So erinnert der printf Funktion, die Displays Wörter und Zeichen und
Zahlen auf dem Bildschirm an meinem Bieten.
Aber ich habe es nicht geschrieben.
CS50 habe es nicht geschrieben.
Jemand Jahren schrieb sie, und sie Wesentlichen gab uns das Rezept für sie
in einer Datei namens stdio.h.
So, dass erste Zeile gibt mir nur zugreifen Funktionen, dass jemand anderes
schrieb Jahren unter was sind printf.
>> Nun, die nächste Zeile Ich werde meine winken Hand, zumindest bis nächste Woche.
Aber jetzt wissen, dass int main (void) ist im Wesentlichen das Äquivalent davon
gelb Puzzleteil, wenn grüne Flagge angeklickt.
Die Welt, vor Jahren entschieden, dass, wenn Sie schreiben ein Programm in die
Sprache namens C, starten Sie Ihr Programm mit einer Linie
das sieht so aus.
In knapp einer Woche, werde es machen Sinn was int ist, was nichtig ist.
Aber für jetzt, man denke nur an wie dieser gelbe Puzzleteil.
>> Jetzt nächsten, haben wir eine geschweiften Klammer gefolgt von einem anderen in der Nähe geschweiften Klammer,
sozusagen.
Und wir werden sehen, diese ganzen Programme in C, sowie
JavaScript und PHP.
Und dies sind nur kapseln ähnliche Zeilen Code.
Die offene geschweiften Klammer im Wesentlichen sagt, hier kommt ein Code.
Und der geschlossenen geschweiften Klammer, das ist Winkel in die andere Richtung, so
Mittel, das ist es für der entsprechende Code.
>> So das saftige Linie in dieser ersten Programm ist das letzte, printf,
quote-unquote, hallo Welt.
Und ich habe das Ding zwischen Anführungszeichen, was beim letzten Mal?
So ist es ein String.
Und ein String ist nur der Technikfreak Ausdruck für eine Sequenz von
Zeichen, ein Wort, eine Phrase.
Schon ein einziger Brief konnte Doppel zitiert werden.
Aber es ist eine Folge von null oder mehr Zeichen.
>> Backslash-n, obwohl, sieht ein bisschen seltsam.
Aber es bedeutete einfach etwas einfach an den Computer.
Was ist Backslash-n?
Neue Zeile.
Also das ist nur die spezielle Abfolge von Zeichen, dass die Welt hat sich entschieden
Mittel setzen einen Zeilenumbruch genau dort, weil der Compiler tatsächlich bekommen
verwirrt, in der Regel, wenn Sie, sehr verständlicherweise, aber falsch, nur
starten Enter drücken zu setzen neue Zeilen im Code.
Sie müssen sich ein wenig mehr sein explizit mit Backslash-n.
>> Und wir werden sehen, es gibt noch ein paar andere wie Muster für Sonderzeichen.
Zum Beispiel, wenn Sie wollten lassen Sie Ihre Seele baumeln zu einer Ecke Fall
nehme an, dass ich ein drucken wollte Anführungszeichen auf dem Bildschirm
welchem ​​Grund auch immer, das würde scheinen ein wenig problematisch, nicht wahr?
Denn wenn ich einen doppelten Anführungszeichen in die Mitte "Hallo, Welt", für was auch immer
Grund ist, warum das so scheinen potenziell problematisch?
Es bricht die Saite.
>> Der Compiler ist nur ein Programm.
Ein Programm wie ein Compiler ist gerade dabei Ihren Code oben nach unten gelesen,
von links nach rechts.
Und wenn sieht drei doppelte Anführungszeichen statt von zwei, es nicht zu wissen,
wenn du meinst, dass das Ding auf der linken Seite sollte die Zeichenfolge, oder das, was zu sein
das Recht oder die ganze Sache.
Es ist eindeutig, und so, wie ein typischer Compiler tun würde, ist nur ausflippen,
und geben Ihnen einige Fehlermeldung, und machen Sie mit dem Problem umzugehen.
>> Also da Backslash-n bedeutet eine neue Linie, was würden Sie Ihrem Instinkt jetzt
beginnen zu sein, wenn Sie gehören wollte etwas wie eine doppelte anomale
zitieren innerhalb dieser sonst zitierten String?
Backslash-Anführungszeichen.
Und so sehen wir diese Art von Muster zu.
>> Wenn Sie etwas ein wenig zu tun seltsam, werden Sie feststellen, dass die
Lösungen oft folgen einem Muster, und der Backslash
bezeichnet eine Escape-Sequenz.
Und es bedeutet nur, etwas Besonderes die wir brauchen, um in eine repräsentieren
anders.
Was, wie stellst Du dar ein Backslash, gut, wir
wieder darauf.
Aber die Antwort ist auch tatsächlich ein wenig offensichtlich.
>> So lasst uns nun vorstellen eine andere Programmierung Konstrukte
Sie sah in Scratch.
Wahrscheinlich haben Sie selbstverständlich bereits, wenn Sie bereits in tauchten
Problem eingestellt 0.
Aber lassen Sie uns jetzt vorstellen die Syntax in C für diese ansonsten recht intuitiv
Ideen, zumindest einige von ihnen.
>> Also diese Vorstellung von einer Bedingung oder ein Zweig, während wir vorher
vertreten sie mit Code, sah wie dies auf der linken Seite in Scratch -
wenn x kleiner als y, dann so sagen -
Statt nun in C - lassen Sie mich schärfen in auf dem einfachsten Fall -
wir einfach gehen zu sagen, wenn, öffnen Klammer, ist etwas wahr - ein
Boolescher Ausdruck wird gehen wo ich gesagt habe, Zustand -
schließende Klammer, dann mach dir was innerhalb dieser geschweiften Klammern.
>> So auch hier, die geschweiften Klammern sind ein bisschen wie Scratch
U-förmige Puzzleteile.
Tun Sie, was ist innerhalb dieser geschweiften Klammern.
In diesem Fall Slash.
Und dies feststellen, ist eine vorausschauende Schrägstrich, nicht einen Backslash.
Schrägstrich, Schrägstrich, für diejenigen, die bereits programmiert
vor, bedeutet nur, -
es ist nur ein Kommentar.
Ein Kommentar ist nicht eine Zeile Code, per se.
Es ist eine Reihe von Englisch, dass Sie die Mensch, haben sich auf die schriftliche
vielleicht erinnern Sie etwas tun, um erklären Sie sich, um zu erklären,
jemand anderes, was der Code tut.
Es ist nur ein beschreibender Kommentar.
>> Nun, natürlich, können wir eine Zwei-Wege- Gabel in der Straße nur durch diese Weise ein
Drei-Wege-Gabel in der Straße, indem Sie diese, und wenn man auch in diesem
Muster, können Sie vier-Wege, Fünf-Wege-, Sechs-Wege-Gabel in der Straße, wenn
Sie behandeln müssen, in der Tat, dass viele Bedingungen.
Und dann bemerken die Parallelität hier -
if (Bedingung), else if (Bedingung), und das einzige, das ein wenig ist
seltsam ist das letzte, das ist nur, dass andere.
Aber auch dies ist identisch, konzeptionell, zu dem, was wir getan haben,
bereits, obwohl die Syntax nehmen ein wenig gewöhnungsbedürftig.
>> Nun wird in diesem Beispiel gibt es einige andere seltsame Syntax.
Wir sehen printf wieder öffnende Klammer, und schließende Klammer.
Und innerhalb der es eine Zeichenfolge in Anführungszeichen.
Die Klammern im Rahmen von printf, auf der linken Seite gehen
und rechts von dem, was?
Was wollen wir beschreiben, zitiert String als allgemein?
>> Also es ist ein Argument.
Jedes Mal, wenn eine Funktion haben, wie printf und dann eine offene und eine paren
close paren und etwas in es, ob es sich um einen String oder ein
Integer, oder irgendetwas anderes, das Ding in zwischen diese Klammern heißt
ein Argument.
>> Und ein Argument nur beeinflusst das Verhalten der Funktion.
In diesem Fall ist es ziemlich klar, wie.
x <y ist, was in vergangen, sozusagen als Argument.
Und printf zu gehen genau das ausdrucken.
Da sicherlich die Person Jahren die umgesetzt printf hatte keine Ahnung
was wir menschliche Nachfolger waren werde printf verwenden für.
Also das ist, warum Argumente vorhanden sind, um beeinflussen das Verhalten nach einer Funktion der
geschrieben.
>> Jetzt, Boolean Ausdruck.
Wir haben diese vor in Scratch gesehen.
Es stellt sich heraus, in C können Sie auch "oder" sie zusammen, so zu sprechen.
Zwei vertikale Balken bedeutet, dass dieser Block Code, dies tun, wird
Ausführen, wenn die erste Bedingung erfüllt ist oder die zweite Bedingung erfüllt ist.
Und auch wenn Sie nicht getan haben könnte dies in Scratch, konntest du ja
tun dies in Scratch, und Sie können auch anders auszudrücken -
wenn die erste Bedingung und die zweite Bedingung wahr sind, dann tun, was
innerhalb der geschweiften Klammern.
>> Und nur so nebenbei, der Grund ist es ein Doppel-Zeichen und ein Doppel-
vertikalen Balken, werden wir schließlich sehen dass eine einzelne vertikale bar und
einzigen kaufmännisches tatsächlich haben unterschiedliche Bedeutet in C. So jetzt,
dass eine Verdopplung der Symbole ist beabsichtigt.
>> Lassen Sie uns also vorstellen, kurz, diese etwas andere Syntax.
Diese nicht ganz Übertrag auf Scratch, aber ich behaupte, dass ich es kann
Umsetzung der Idee eines, wenn sonst, wenn sonst, wenn sonst, wenn else-Anweisung mit
einen so genannten Switch-Anweisung.
Und der einzige Grund, warum diese wirklich existiert wird Ihnen nur, den Programmierer, ein
etwas anderen Weg zur Lösung einige Problem, obwohl es logisch
nicht geben Ihnen alle neuen Funktionen.
>> Damit meine ich dies.
Wenn Sie sagen, Schalter, und dann ein Leerzeichen, und dann ein Paar von Klammern, innen
davon geht ein Ausdruck -
und dies könnte ein wenig nicht offensichtlich sein auf den ersten, aber dies ist kein Argument,
technisch, weil Schalter ist keine Funktion.
So jetzt einfach mal davon aus, dass wir mit Klammern in verschiedenen Orten
aus verschiedenen Gründen.
>> So schalten Sie Ausdruck bedeutet, ich kann legte eine Variable innerhalb derer
Klammern sagt, wo es Ausdruck.
Und dann, wenn die Variable -
nehme an, es heißt x und es ist nur eine Zahl -
Ich kann dann in meinem Schlitten aufzählen hier so etwas wie dieses.
Wenn x ist mein variabel und I wollen, etwas zu tun, wenn x
gleich 1 ist, kann ich das tun.
>> Wenn ich stattdessen etwas tun wollen wenn x = 2 ist, kann ich das tun.
Else, wenn ich etwas anderes zu tun ganz, ich kann eine Standard-Fall haben
welchem ​​Fall ich diese andere Sache.
Also in diesem Sinne, es ist äquivalent zu einem wenn x gleich 1 entspricht, else if else,
aber ich erwähne das jetzt nur, weil wir sehen ihn wieder.
Aber jetzt, weiß nur, dass es existiert.
>> In Ordnung.
Also diese letzten paar sind ein wenig mehr Komplex auf den ersten Blick, aber sie tun
etwas ziemlich einfach.
Eine for-Schleife in C ist ein Stück Code, dass nur etwas tut, wieder und
wieder und wieder.
Und das nur ärgerlich daran ist, das ist, dass es ein wenig kryptisch ist
um sich in dieser zyklischen Ausdruck Muster, aber die Welt standardisiert
die folgende Weise.
>> Wenn Sie eine for-Schleife verwenden, haben Sie ein Paar Klammern wieder.
Und beachten Sie die zwei Semikolons drin.
Diese beiden Semikolon getrennte drei verschiedene Ausdrücke innerhalb der
Klammern.
Eine davon ist die sogenannte Initialisierungen.
Eine davon ist die sogenannte Zustand.
Und eine ist die sogenannte Updates.
>> Sah in der abstrakten, ist dies komplett nicht offensichtlich, so schauen wir uns
ein konkretes Beispiel.
In Scratch hatten wir eine Wiederholung Block.
Und dieser Satz sagte 10-mal wiederholen, sagen "Hallo, Welt." Lassen Sie mich dadurch für
jetzt, und wir kommen zurück, um diese und auch dies bekommen mehr vertraut
Sie dauerte nicht lange, das Äquivalent C Code könnte gesagt werden, dass dies -
einer for-Anweisung und einen Raum, ein Paar Klammern, bemerken die Semikolons in
Dort trennen die drei verschiedene Dinge, die Initialisierung, die
Zustand, und das Update.
>> Und nehmen Sie eine Vermutung, was der erste tut.
Int i = 0.
In rauen juristischer Hinsicht, was ist dass dabei für uns, wahrscheinlich?
Also ja.
Es erklärt eine Variable namens i, und es ist was es ist, was Wert?
0.
So ist es die Schaffung einer Variable namens i, Speichern des Werts 0 in ihm.
Das ist der sogenannte Initialisierung.
>> Alles klar, jetzt habe ich behauptet, bevor dass die Mitte etwas, i
<10, ist die Bedingung.
Also, was ist zu tun?
Nun, was die for-Schleife macht, wenn ein Programm mit einer for-Schleife ausgeführt wird, ist
jedes Mal, wenn der Computer läuft durch diese Schleife von oben nach unten und von oben nach
Boden, so wie du Jungs haben, wenn Zählen Sie sich und setzte sich,
wieder und wieder und wieder, der Computer wird
um diesen Zustand zu überprüfen.
Und wenn ich weniger als 10, es werde es wieder tun.
Wenn i kleiner als 10 ist, es werde es wieder tun.
Wenn i kleiner als zehn, es werde es wieder tun.
Also das scheint darauf hinzudeuten Hoffentlich ändert sich.
Sonst hätten wir eine Endlosschleife.
Und in der Tat, ist i verändert sich, weil die letzte, was nach dem Semikolon gibt
ist die etwas kryptische Syntax der i + +.
Aber diejenigen, die dies getan haben vor, das bedeutet nur,
ganz einfach, was?
>> SCHÜLER: [Zwischenschaltung VOICES].
>> DAVID MALAN: In 1 bis i.
Erhöhe i.
So sahen wir eine Scratch Puzzle Stück für dass, eigentlich.
Es sah nicht wie i + +, aber das aussehen Mittel, ganz einfach, erhöht die
Wert i um 1 jedes Mal, wenn Sie dies tun.
So wörtlich, beginnen Sie mit Initialisierung i auf 0 gesetzt.
Dann überprüfen Sie Ihre Bedingung.
0 ist, weniger als 10?
Ja.
Wir gehen durch die Schlaufe.
>> Das nächste, was ich behaupten, die Computer- zu tun ist, es geht
i zu erhöhen.
Also habe ich jetzt 1.
Er prüft den Zustand.
Ist 1 weniger als 10?
Natürlich.
So macht es noch einmal.
Dann Schritten i + + bis 2.
Ist 2 weniger als 10?
Ja.
Und wieder und wieder und wieder.
Und schließlich, wegen der Plus-Plussing, bekommen wir i gleich 10.
Ist 10 kleiner als 10?
Nun, offensichtlich nicht.
Und das ist der Punkt, an dem die for-Schleife einfach aufhört.
Und wenn Sie mehr Code auf dem Bildschirm unten, der Computer
Erlöse, dass Code ausgeführt statt.
>> Also noch einmal, auch wenn dies zu gehen schauen und fühlen sich ein wenig seltsam an
erste, natürlich für diejenigen von Ihnen, habe noch nie programmiert, bevor es
buchstäblich reduziert konzeptionell zu dem, was sonst ein sehr
einfache Puzzle Stück in Scratch.
>> Alles klar, habe ich versprochen, dass es würde werden andere Analoga in Scratch.
Es ist das auch eine.
Und wir sahen dieses letzte Mal kurz.
Aber denken Sie daran die Ewigkeit blockieren in Scratch?
Es ist einfach etwas tut, für immer?
Ich behauptete, dass man umsetzen Man erhielt auf diese Weise.
Und Sie können diese auch tatsächlich umzusetzen in einer Reihe von verschiedenen Möglichkeiten.
>> Aber die while-Schleife ist nur eine andere Weg in C, sich auszudrücken.
Am Ende des Tages können Sie dies nicht tun nichts mit einer while-Schleife, die Sie
kann nicht mit einer for-Schleife.
So sind sie am Ende der Tag funktional gleich.
Aber es Ihnen ermöglicht, sich auszudrücken ein wenig anders in
die folgende Weise.
>> Mit der while-Schleife, es ist, was in Klammern, wieder ist geprüft und
wieder und wieder.
Und sobald dieser Ausdruck falsch ist, dann wird die Schleife stoppt die Ausführung,
und der Computer zu Schritt laufen, was anderen Code, den Sie
haben in Ihrer Datei.
>> Aber was ist interessant, hier wird dass ich buchstäblich eingegeben wahr.
Und wahr ist eine Art von booleschen Wert, ein Wert true oder false.
So könnte wahr jemals false, wenn ich habe buchstäblich
sie in mein Programm hart codiert?
Also keine.
Es ist ein wenig seltsam, dass ich dies tat.
Aber wahr ist, wahr.
Es gibt keine Plus-Plussing.
Es gibt keine Verwendung von Variablen in hier.
Also, weil ich hart codiert while true, diese Schleife wird immer bewerten
wieder und wieder und wieder.
>> So wie oft ist Hallo Welt gehen, um auf dem Bildschirm zu drucken?
Immer.
Eine unendliche Anzahl von Zeiten, bis das Batterie stirbt oder eine andere externe
Ereignis eintritt.
So ist dies wahrscheinlich nicht das beste Programm zu schreiben, denn wenn der Benutzer
kann nie aufhören Ihr Programm, ist es was Sie vermutlich nicht gedacht.
>> Aber manchmal, sollten Programme eine Endlosschleife.
Zum Beispiel hat, wenn Ihr Computer ein Uhr auf, es wäre sicherlich
schön, wenn Sie Ihre Uhr es hält, Aktualisierung sich immer, wenn auch einmal ein
zweiten oder einmal pro Minute oder so ähnlich.
Also auch Endlosschleifen haben ihren Platz.
>> In Ordnung.
Schließlich diese.
Und dieses ist ein bisschen anders funktionell, und wir kommen zurück, um
dies wahrscheinlich in Pset 1.
Aber es gibt noch eine andere Art von Schleife genannt tun while-Schleife.
Und der einzige Unterschied zwischen a do while-Schleife und, sagen wir, eine while-Schleife,
ist, dass die Bedingung geprüft wird nicht bevor Sie den Code ausführen, aber nach
Sie den Code auszuführen.
Also an der Spitze für die während Schleife, während das tun, während
prüft es an der Unterseite.
>> Und das bedeutet nur, dass die while-Schleife wird in der Regel mehrere Male ausführen
oder weniger oft als eine while-Schleife?
Potenziell mehrmals, weil eine zu tun while-Schleife ist eindeutig sagen, dies zu tun,
erst nach dem Punkt, den Sie überprüfen wenn die Bedingung in der
Klammern ist wahr.
>> Also werden wir dies wieder zu sehen wahrscheinlich in Pset 1.
Wenn Sie schon immer einmal etwas zu tun mindestens einmal und dann vielleicht etwas mehr
Zeiten, ist dies eine gute Konstrukt zu verwenden.
Aber eine while-Schleife hingegen wird überprüfen Sie deren Zustand zuerst.
Und das ist es for-Schleifen in C, weiß während, während, und for-Schleifen.
Und wieder zuzuordnen sie ziemlich schön zurück zu verkratzen, außer man tut dies nicht
ganz die gleiche analoge in Scratch.
>> Nun, wie wäre es, jetzt, Variablen?
Also das ist, wie ich eine Variable deklariert syntaktisch den anderen Tag.
Ich hatte einen int, die ich nach eine ganze Zahl ist.
Ich hatte dann eine Variable namens Zähler, und dann ein Semikolon.
Also, was ist diese Codezeile tun?
Dies ist ganz einfach erklärt eine Variable -
das heißt, fragen Sie den Computer neu, gib mir einige Speicher, geben Sie mir einige Bits - in
das kann ich speichern, was?
Ein int.
Und das Semikolon bedeutet nur, Ende Codezeile.
>> Nun ist die zweite Zeile wahrscheinlich ziemlich erraten.
Was ist counter = 0; tun?
Es ist die Zuordnung 0 bis zu begegnen.
Und dies ist die andere Sache das ist ein wenig ärgerlich
im Vergleich zu, sagen wir, Algebra.
Während in Algebra, bedeutet das Gleichheitszeichen gleich, hier in C, die gleich
Zeichen bedeutet Zuordnung.
So bedeutet es umzusetzen, was ist auf der rechten Seite in das, was ist auf der linken Seite.
Und wir werden sehen, ein anderes Symbol, gleich gleich, wenn wir tatsächlich testen wollen
für Qualität, etwas störend.
>> Aber dies ist ein wenig ineffizient.
Es ist eine Art ärgerlich, dass ich eine Variable deklarieren und
dann geben sie einen Wert.
So C tatsächlich lässt uns diese vereinfachen und tun es einfach alles auf einmal.
Sie können die Variable deklarieren auf der linken Seite.
Sie können immer noch die Zuordnung auf die nach rechts setzen, dass Gleichheitszeichen in
die Mitte.
So dass am Ende des Tages, sind diese beiden entspricht, aber dieses, ehrlich gesagt,
ist wahrscheinlich die bessere Angewohnheit nur weil es ein bisschen weniger
Code, ist es ein wenig leichter zu lesen, und es ist nur verschärft
Ihr Code sozusagen.
>> Haben Sie Fragen bisher auf den Schleifen, auf Variablen, über die Bedingungen, auf
Booleans, entweder technisch oder konzeptionell?
In Ordnung.
So, jetzt diese nächste bekommt man ein wenig interessanter.
Und das ist das Beispiel, das ich in Aufmachungen letzten Zeit, die gerade bildet eine Scratch Beispiel
über den C.
>> So eine Funktion.
In juristischer Hinsicht ist, was eine Funktion?
Got mutiger zu sein mit Ihrer Antwort.
Was ist eine Funktion?
>> STUDENT: Hat etwas.
>> DAVID MALAN: Was ist das?
>> STUDENT: Hat etwas.
>> DAVID MALAN: Hat etwas.
OK.
Wir beginnen dort.
So eine Funktion etwas tut.
So ist es ein Stück Code, das ist im Wesentlichen umgesetzt, dass an anderer Stelle
tatsächlich etwas tut.
Nun, was ist interessant, über eine Funktion ist, dass sie Eingabe nimmt,
und es kann eine Ausgabe erzeugen.
Und lasst uns tatsächlich ein Blick auf diese.
>> Der Mann hinter dem Vorhang war Absicht vor einem Augenblick.
Hier haben wir einen Tisch.
Aber nehmen wir an, dass dies tatsächlich stellt eine große Kiste.
Das ist also eine sogenannte Blackbox.
Und im allgemeinen in der Konstruktion, in Computer Wissenschaft, black boxes beziehen sich nur auf
Stücke von Funktionalität, dass jemand eingeführt hat, und du nicht
unbedingt wissen, oder egal, wie es ist umgesetzt unter der Haube.
Sie müssen nur darauf, dass diese schwarze Box, was wir jetzt beginnen Aufruf einer
Funktion, etwas tut.
>> So zum Beispiel, wenn diese Black Box die Bühne stellt hier printf ein
Funktion, das weiß ich von den vorherigen Beispielen das printf nimmt eine oder mehrere
Argumente und der erste der Argumente sollte ein String sein, wie
"Hallo, Welt." Nun, wenn ich die Person bin, Schreiben Sie das Programm, und ich möchte
zu verwenden printf, I, zum Beispiel, könnte nehmen Sie ein Stück weißes Papier hier und ein
schwarzen Marker und schreibe darauf -
Ich nicht existierenden "Welt" -
H-E-L-L-O.
>> So nehme ich meine schwarzen Marker und ich werde schreiben, wie groß und leserlich wie möglich auf
dieses Stück Papier, "Hallo, Welt" Und jetzt habe ich behaupten, dies ist mein Argument.
Dies ist ein String vertreten mit ein Stück weißes Papier.
Und mein Eingang jetzt auf die Funktion printf wird dies sein.
Also ich bin printf Aufruf, vorbei dieses Argument als Eingabe zu.
>> Und jetzt weiß ich nicht, wie die Person, die schrieb printf tat es vor Jahren, aber
Ich weiß aus seiner Dokumentation, die wissen, ihren Zweck im Leben ist zu drucken, was ich
bereitzustellen, um es als Eingabe.
Und so, auch wenn diese Implementierung ist ohne mein Wissen
unter der Haube, jetzt Ich sehe, oh, es gemacht wird.
Es hat etwas gedruckt auf dem Bildschirm.
Und jetzt das Programm steuern, wenn es waren mehr Zeilen Code, würde
haben nun zu mir zurückgekehrt.
Und so ist die Tatsache, dass Colton -
segne sein Herz ist hier versteckt unter ein Tisch vor euch allen -
ist gewollt, dass ich nicht weiß, und ich weiß nicht, wie printf ist
umgesetzt.
Ich weiß nur, wieder von seiner Dokumentation, was sie tut und wie ich
meine Aufgabe, es zu benutzen.
>> Nun, daran erinnern, dass printf bekommen konnte ein wenig anspruchsvoller.
Auch hier sind wir nur darüber zu reden das Äquivalent Scratch Say Block.
Aber ich habe auch diese letzte Zeit.
Ich wollte meine hallo Programm machen ein wenig mehr Dynamik und das nicht nur hart
Code etwas wie "Welt", und definitiv nicht schwer etwas Code
willkürlich wie D-A-V-I-D in das Programm.
Ich wollte die Benutzer für seine oder ihre fragen Namen, und dann tun Sie etwas mit
dass Zeichenfolge, die sie bieten.
>> Also gibt es etwas ein wenig anders hier. printf, vor einem Augenblick,
hat in der Tat etwas zu tun, aber es hat nichts zurück zu mir.
Right?
Colton nicht gib mir alles zurück, kein Blatt Papier.
Es war nur ein Nebeneffekt.
Mein Bereitstellung "Hallo, Welt", wie ein Argument Colton in der Folge
Nebenwirkung von einem Wort, ein paar Worte, auf dem Bildschirm erscheinen.
>> getstring, obwohl, ist ein wenig unterschiedlich. getstring ist auch ein
funktionieren, aber es gibt einen gewissen Wert.
Es hat nicht nur eine ästhetischen Nebeneffekt.
Tatsächlich gibt mir die Person, telefonisch oder über die Funktion,
etwas zurück.
Also in diesem Fall ist getstring genannt mit getstring offen
paren, in der Nähe paren.
Hat getstring daher nehmen alle Argumente oder Eingabe?
Nein, es scheint nicht.
Sein Ziel im Leben ist nur um einen String.
Es braucht nicht näher als die.
Also lass mich gehen und behaupten, dass, Auch dies ist nicht printf black box,
aber getstring, und lassen Sie mich, die Person Schreiben dieses Programm, rufen Sie an oder verwenden
GetString von nur schriftlich G-E-T-S-T-R-I-N-G, offene paren, in der Nähe
paren, getstring.
>> Nun, ich habe keine Ahnung, wie das Personal CS50 umgesetzt getstring, aber ich weiß, dass
wenn ich lange genug warten, wird es tun, seine was unter der Haube, vielleicht mit
einige Variablen, vielleicht mit einigen Bedingungen, vielleicht mit einigen Schleifen,
vielleicht mit einigen Funktionen, vielleicht mit -
nur versuchen, stall - vielleicht mit einige andere Programmiermöglichkeiten.
Aber wenn ich lange genug warten - in der Realität in den Computer, so geschieht dies
super schnell -
wenn ich lange genug warten, wird diese Funktion getstring wird einen String zu erhalten
von dem Benutzer, der vermutlich Eingabe wird es auf ihrer Tastatur und
dann, wenn Sie getstring getan wird immer diese Zeichen vom Benutzer
und speichert sie in einen String, dass Funktion, getstring, ist zu haben
bereit für mich eine Ausgabe, die ich gehen, um durch das Abrufen
Zuweisungsoperator.
>> Und wenn ich gehe, in der Tat, in den Ausgang hier hat Obosi großzügig
teilgenommen haben, ohne zu wissen, das in vorbestellen, indem er seinen Namen auf diese
Variable, die repräsentiert ein String.
Nun bedeutet der Zuweisungsoperator, auch obwohl dies vielleicht das Gefühl, ein wenig
redundante, habe ich eigentlich tun müssen meine eigene Kopie davon zu machen.
Da auf der linken Seite - hoppla! -
bemerken, dass ich im Wesentlichen haben Zeichenfolge Namen auf der linken Seite.
Also ich bin auch zu machen meine eigene Kopie davon.
Und das ist ein bisschen wie ein Notlüge, weil wir in ein oder zwei Wochen sehen
Zeit, die Saiten nicht wirklich was sie zu sein scheinen.
>> Aber jetzt, hier ist der Rückgabewert.
Hier ist meine eigene Kopie davon nach mit dem Zuweisungsoperator.
Und nun, was will ich als nächstes tun?
Wir haben jetzt die zweite von zwei Zeilen Code.
So will ich nun printf nennen.
Lassen Sie uns nun behaupten, dass die schwarze Box ist wieder da zu sein
printf und nicht getstring.
>> Printf diese Zeit zu gehen nehmen, wie viele Argumente?
So betrachtet, ist es wie zwei.
Es gibt zwei Kommata drin, aber einer jener Kommas, ist es
innerhalb der Anführungszeichen.
So das erste Argument ist buchstäblich werde das sein.
H-E-L-L-O, Komma, Prozent s, Backslash-n.
Und jetzt bin ich Bereitstellung nicht ein Argument, aber zwei Argumente an printf.
>> Und was soll printf zu tun Diese beiden Eingänge passieren, nachdem ich sie in
als Argumente?
Es soll die zweite zu nehmen ihnen, die ich rief Namen, so dass die
zweiten Zettel schrieb ich vor einem Augenblick nennt Namen.
Es ist zum Anschluss des Wertes drinnen vor sich geht dieser Variablen in die Platzhalter
% S, so dass wiederum in nur ein Augenblick Zeit werden wir sehen, eine Nebenwirkung von
mit printf, genannt, wobei wir jetzt sehen nicht "Hallo, Welt", sondern "hallo,
Obosi. "
>> So ein großer Applaus sowohl von unsere Freiwilligen, von denen nur einer wusste
dies geschehen würde.
In Ordnung.
Also, vielleicht, einfach wie das war, sicherlich, wenn Sie bereits vertraut
mit solchen, hoffentlich werden Sie nie vergessen, dass insbesondere visuelle, wie
Funktionen arbeiten.
>> Es gibt also mehr als nur getstring.
Innerhalb der CS50-Bibliothek gibt es eine ganze Reihe von Funktionen, von denen alle
werden aktiviert, nur deutlich zu machen, schrieb, dass wir diese Funktionen.
Typischerweise in C, fast jede andere Funktion Sie verwenden Kleinbuchstaben.
Aber wir verwenden bewusst Großbuchstaben nur deutlich machen, dass diese
Stützräder sind verstimmt, dass wir werden Verwendung nur für ein paar Wochen, dass
vereinfachen den Prozess der Einführung Eingabe von dem Benutzer.
>> Das CS50-Bibliothek tut nichts dass Sie sich nicht durch zu tun
nur mit C-Code aus einer oldschool Lehrbuch.
Aber noch einmal, wir nutzen sie als Training Räder von Sorten für nur ein paar
Wochen, so dass wir loswerden können die Komplexität, dass Sie bald verstehen
selbst etwas zu tun, als relativ einfach, da immer
Eingabe von einem Benutzer.
>> So wissen, dass Sie Zugang haben zu GetChar GetDouble -
verdoppeln.
Soundso - und dann GetFloat.
Was ist ein Schwimmer?
Beginnen wir dort.
>> STUDENT: [unverständlich].
>> DAVID MALAN: Yeah.
Es ist eine Zahl mit einem Komma.
Während also ein int eine ganze Zahl ist, die ist nur eine Nummer mit 0 bis 9,
eine bestimmte Anzahl von Wiederholungen derselben, ein Schwimmer ist etwas
mit einem Komma.
Und ein Doppel, mittlerweile ist auch ein Zahl mit einer Dezimalstelle, aber mehr
Zahlen nach dem Komma Punkt potentiell.
>> So bekommen wir zurück zu dieser vor lang.
Aber typischerweise jede dieser Arten von Daten, wobei jede dieser Arten von Variablen
dass eine Bibliothek wie der unsrigen kann zurückkehren Sie verwenden eine unterschiedliche Anzahl von Bits
Speicherung von Informationen.
Typischerweise wird ein Char, das bedeutet nur, ein Zeichen, verwendet 8 Bit.
Und das ist tatsächlich im Einklang mit unserer Byte von Freiwilligen, die letzte Woche
kam und stellte eine ASCII-Zeichen in einer Zeit.
So ein Char ist 8 Bit.
>> Ein Schwimmer passiert zu sein 32 Bits, in der Regel.
Und eine doppelte, wie Sie vielleicht erraten, ist tatsächlich 64 Bits, die gerade größer ist,
das heißt, Sie können größere Zahlen oder mehr Präzision.
Aber noch einmal, mehr dazu ein anderes Mal.
GetLongLong, inzwischen aber dummerweise genannt, ist eigentlich nur eine
ganze Zahl, die doppelt so groß ist, doppelt so lange, möglicherweise als eine reguläre
integer, 64 Bits anstelle von 32.
Und wir GetString habe mit.
>> Aber es stellt sich heraus, in der CS50-Bibliothek, welches umgesetzt wird, wie wir sehen werden, in
die Form der beiden Dateien, von denen heißt cs50.h, hat noch zwei weitere
Datentypen in ihm.
Booleans nicht in C. Sie können existieren simulieren sie nur mit Hilfe von 0 und 1
während Ihrer Programme.
Aber wir in der CS50-Bibliothek erstellt haben die Symbole "wahr" und "falsch"
zu 1 und 0 darstellen, so dass Sie nicht tun müssen hart Code etwas
buchstäblich wie 1 und 0.
Aber wir werden diejenigen wieder zu sehen.
>> String, auch nicht vorhanden.
Und deshalb habe ich erwähnt, es ist ein bisschen eine Notlüge für jetzt.
Aber wir abziehen, dass Schicht vor lang.
Aber jetzt ist ein String ein Folge von Zeichen.
>> Inzwischen in C, Sie in der Tat haben unterschiedliche Datentypen.
Beachten Sie sind Kleinbuchstaben.
So sah die Funktionen, die Sie vor einem Augenblick werden die Funktionen von CS50, dass schriftliche
wird Ihnen einen Wert zurück, der fällt in eine dieser Kategorien.
>> Ein paar Spickzettel nur zu pflanzen der Samen hier. printf nicht nur
nehmen% s als Platzhalter.
Es dauert% d für Dezimalzahlen, oder% Ich würde so gut funktionieren.
% F ist Fließkommawerte. % C ist für ein char, wenn Sie wollen einfach einstecken einem
Zeichen in einem String vorformatiert wie wir getan haben, können Sie% c.
>> Und dann, etwas störend,% lld ist für eine lange, lange Dezimalzahl,
das bedeutet nur, wenn Sie einen wirklich brauchen große Zahl und Sie mit etwas
rief ein langer, langer, die wir kommen Rücken an Rücken in einem pset, können Sie% lld zu bedienen
printf sagen, Stecker in einem wirklich großen integer hier durch die zweite oder
einige andere Argument.
>> Und schließlich habe ich versprochen, dass es gibt ein paar andere Flucht
Sequenzen, die printf unterstützt.
Wir haben Backslash-n gesehen.
Backslash-r können Sie sehen.
Es ist eine Art von einem Old-School-Sache.
Wenn Sie jemals eine echte Schreibmaschine Jahren vor und Sie zog an der Kurbel
die nicht nur gedreht, um das Rad bewegen das Lineup, sondern auch bewegt die
Ganze den ganzen Weg zurück über den die linke, gut, Backslash-r nur
Wesentlichen bewegt sich der Cursor zurück zu Beginn der Zeile
ohne es nach unten.
Aber noch einmal, mehr dazu, vielleicht in der Zukunft.
>> Backslash-Zitat, Backslash-Anführungszeichen, Backslash-Backslash ist die
Lösung für das winzig kleine Rätsel Ich bereits angedeutet.
Und Backslash-0 ist eigentlich sehr interessant.
Aber kommen wir wieder zu dass vor lang.
>> Also lassen Sie mich in zu gehen, jetzt, die CS50 Gerät, und lasst uns tatsächlich ein
schnelle Aufwärmen mit einem der Beispiele wir haben bereits und dann auf sich zu bewegen
etwas ein wenig komplizierter.
Also, wenn ich mein Programm öffnen genannt gedit -
dies ist meine grafischen Editor.
Und ich kann das tun -
Lassen Sie mich schließen, dass die Fenster dort -
durch dieses Symbol hier unten, gedit, in der unteren linken
Ecke neben dem Menü.
>> Ich werde weitermachen und voranzutreiben, und Speichern Sie dieses Beispiel in, sagen wir, John
Harvard-Ordner.
John Harvard Ordner ist nur seine Heimat Verzeichnis, in dem alle seine Dateien leben
standardmäßig.
Und ich werde dies als sparen eine Datei namens hallo-0.C.
Und ich habe diesen Namen gewählt, nur damit es Linie mit dem Beispielcode auf die
Natürlich Webseite und in der YouTube-Videos online.
>> So, jetzt werde ich damit beginnen, schreibe meine erste Programm.
Lassen Sie mich in der Lesbarkeit vergrößern.
Und ich werde weitermachen und sagen int Haupt Leere, die nur gefällt ist, dass
gelb Puzzleteil, dass startet ein Programm.
Ich habe in die Gewohnheit, auf das hinbekommen Jahren der Öffnung meiner geschweiften Klammer, dann
auch schließen und dann geht zurück auf wo ich will meinen Code zu setzen, nur
weil es mir hilft, halten alles ausgeglichen, zumal meine
Programm wird lang.
>> Und jetzt, hier, ich werde weitermachen und sagen, printf, zitieren unquote,
Hallo Welt, Backslash-n, in der Nähe Zitat schließende Klammer, Semikolon.
So bin ich nur wiederholen, was wir haben wurde für selbstverständlich bisher einnehmen.
Jetzt werde ich zu verkleinern.
>> Und das Terminal-Fenster hier unten, was darf ich in diesem schwarzen tun
und weißen Fenster?
Was kann ich verwenden sie?
Also das ist, wo ich Befehle ausführen und wo kann ich kompilieren Dinge.
Und ich werde es einfach zu halten.
Ich werde ein Programm verwenden Stellen genannt, was nicht
technisch ein Compiler.
Die Compiler genannt Clang, aber kommen wir zurück zu, dass in einem
oder zwei Wochen Zeit.
>> Denn jetzt, ich bin gerade dabei, geben Sie machen hallo-0, aber diejenigen, die waren
Vergleich in euren Köpfen, was ich gerade eingegeben, was ich sollte eingegeben haben kann
bereits wissen, dass ich es tat etwas stimmt hier nicht.
Nun, es gibt eindeutig einige Fehler.
Bevor ich überhaupt an, was sie sind, jeden Look Gedanken darüber, was ich falsch gemacht haben?
>> SCHÜLER: [Zwischenschaltung VOICES].
>> DAVID MALAN: Yeah.
Mir fehlt der Bibliothek Header-Datei.
Jede dieser. H Dateien heißen Kopf Dateien, und sie kollektiv
gehören Dinge genannt Bibliotheken.
Bibliotheken sind nur Codeteile dass andere Menschen schrieb.
Also die Standard [? i?] Bibliothek ist ein Sammlung von Dateien mit Code
dass andere Menschen schrieb.
>> So fehlt mir, dass.
Warum bekomme ich einen Fehler entdeckt?
Nun, lassen Sie mich zurück blättern in mein Terminal-Fenster hier.
Und leider, in C, wie in einer Menge von Programmiersprachen, insbesondere
wenn es ist alles neu für Sie, wird der Fehler Meldungen sind präzise, ​​aber sie sind auch
recht kryptisch.
Und der Fehler hier, in rot, ist "Implizit erklärt Library-Funktion
printf mit Typ ", und dann rollt in die nächste Zeile, "int const char *,
... "Es wird wirklich überwältigend schnell.
>> Aber was sollten Sie beginnen, zu tun ist, wenn wieder neu, um all dies, ist nur zu
beginnen, um nach Schlüsselwörtern suchen.
Klar, ich könnte nicht verstehen, die Hälfte von den Worten, ich bin einfach noch zu sehen.
Sie werden aber in einer Woche.
Aber ich sehe printf.
Und das sollte beginnen, es dauerte nicht lange, bis Ihr Gedächtnis, ganz recht, printf.
Irgendetwas stimmt nicht mit printf.
Habe ich es buchstabieren falsch?
Nein, ist es nicht so aussehen - oh.
Ich kann es nicht benutzen, es sei denn ich unterrichte der Compiler, dass es existiert.
Und so, wieder mit Ihrem Instinkt gehen, auch wenn Sie eigentlich gar nicht verstehen,
die tatsächlichen Fehlermeldungen.
>> Und in der Tat ist die Lösung hier nur sind sie am Anfang der Datei
so, resaving meine Datei mit Strg-S oder das Menü Datei.
Und wenn ich jetzt gehen wieder nach unten hier Ich werde diese zu löschen.
Strg-L ist nur eine nette Weise , um den Bildschirm zu löschen.
Und dann werde ich "make hallo 0 "eingeben, und jetzt sehe ich noch ein
kryptische Sequenz von Symbolen, aber wir kommen darauf zurück.
Das ist, was zu machen ist für Sie zu tun.
Es ist die Automatisierung der Prozess der Übernahme ein ziemlich ärgerlich Befehl mit
Schall, der eigentliche Compiler.
Aber die Tatsache, dass ich keine Fehler bekommen bedeutet dass dieses Ding funktionieren sollte.
>> Also ich gehe jetzt zu tun ist - lassen Sie mich wieder vergrößern -
./hello-0 eingeben, und in der Tat, ich sehe "Hallo, Welt." So lasst uns nun zu verbessern
dies jemals so etwas nur zu replizieren die Maßnahmen, die wir gedacht.
Ich werde dies mit umbenennen Speichern unter, um hello1.c.
Und jetzt werde ich eine Variable deklarieren nannte Namen, so string name,
und ich werde es in der Put- Wert von quote-unquote
D-A-V-I-D close-quote Semikolon.
Und jetzt gehe ich auf "Welt" zu ersetzen mit welcher Platzhalter für einen String?
% S.
>> Und nun sollte, wie viele Argumente printf die Zeit nehmen?
Also zwei.
Also gehe ich außerhalb der Anführungszeichen.
Ich tippe "name" nach einem Komma.
Doch ich habe etwas getan anderes falsch diesmal.
Aber lassen Sie uns davon ausgehen, dass ich nicht erkennen, dass noch.
Lassen Sie mich gehen hier oben.
>> Und beachten Sie auch, ich bin immer ein wenig gelangweilt von Eingabe alle "hallo 0 machen"
Zeit, "make" und all dies.
Also, es stellt sich heraus, in Linus können oft traf den Pfeil nach oben auf Ihrem
Tastatur, und man kann tatsächlich blättern durch alle Befehle, die ich habe
ausgeführt vorherigen, nur jetzt.
Also, wenn ich das tue, Up, Up, es machen hallo 0.
Ich will nicht, dass.
Ich möchte nur, dass zu ändern hallo 1 dieses Mal die Eingabetaste.
Schließlich, das wird sparen Sie Zeit.
>> In Ordnung.
Leider gibt es ist ein Fehler aufgetreten.
Also lassen Sie mich nach oben.
Das sieht aus wie ich wirklich geschlachtet dieses Programm.
Ich meine, mein Gott, es ist zwei Codezeilen, und seine 10 Linien von Fehlern.
Aber an der Spitze einen ersten Blick.
Die Verwendung von nicht deklarierter Bezeichner String.
Habe ich meine Standard-I n?
Nein habe ich nicht.
Ich meinte String.
>> Aber wo ist die String-Variable deklariert, dd wir sagen?
So ist es in der CS50 die Bibliothek.
So reicht es nicht, in dieser ersten paar Wochen, nur um zu verwenden
Welche C gibt uns.
Ich werde auch zu gehen hier oben, und ich könnte es oben oder unten setzen, aber ich werde
nur halten sie alphabetisch um die Dinge ordentlich.
Ich werde cs50.h gehören, was ist vorinstalliert für
Sie auf dem CS50 Gerät.
Und es ist Open Source, so dass auch Menschen im Internet kann es auf eigene verwenden
eigenen Computer.
Aber es kommt mit dem CS50 Gerät.
>> So, jetzt lassen Sie mich zurückgehen und neu kompilieren hallo dies mit 1 zu machen.
Verdammt.
Noch ein weiterer Fehler.
Lassen Sie mich scrollen bis zum ersten, though.
Das hier ist ein wenig komplexer.
Multi-Zeichenkonstante.
Das ist nicht mir zu helfen.
Aber beachten Sie, ist Schall zumindest ein wenig Bit anständig, wobei mit ein wenig
grün Zirkumflexzeichen, es zu sagen Hier ist, wo ich es vermasselt.
Warum ist es zeigt, mit diesem kleinen grünen Pfeil, der Apostroph nächsten
meinen Namen?
>> Also das ist eines der Dinge, die Sie gerade gewöhnungsbedürftig, vor allem wenn Sie waren
Programmierung in Python oder JavaScript oder anderen Sprachen, in denen dieses Detail
spielt keine Rolle.
In C, macht das schon.
Wenn Sie einen String deklarieren, ist die eine Folge von 0 oder mehr Zeichen,
Sie müssen tatsächlich Anführungszeichen verwenden.
Also habe ich tatsächlich benötigen, um diese wieder zu ändern Zitat zu öffnen, zu schließen Zitat, mit
Anführungszeichen.
Einfache Anführungszeichen haben ihren Platz, aber nur, wenn Sie mit einzelnen
Zeichen, sondern mehr auf, dass eine andere Zeit.
Denn jetzt, die doppelten Anführungszeichen erforderlich.
>> So, jetzt lassen Sie mich zurück zu meinem Terminal Fenster, hallo 1 machen.
Und wer ist zuversichtlich?
Ist dieses Programm nun richtig zu kompilieren?
OK.
Also drei von uns denken, daß diese.
In Ordnung.
Enter.
Und es tatsächlich tat.
Also gibt es keine Fehler diesmal sogar wenn dieses Programm ist ein bisschen bekommen
komplexer.
Wenn ich jetzt tun dot Schrägstrich hallo 1, Enter, es geht zu sagen "hallo, David."
>> Aber lassen Sie uns die dritte Iteration Aus diesem, wobei der
Programm ist wirklich dynamisch.
Lassen Sie mich gehen, und ändern Sie die Datei Namen, nur auf die Übereinstimmung mit der
Dateien, die Sie zur Verfügung haben werde Sie danach online.
Enter.
Und jetzt werde ich gehen und nicht in speichern "David" hart codiert hier.
Was könnte ich tun, um sehr einfach Verbesserung dieses Programm?
>> Ich konnte rufen getstring.
Es könnte ein wenig nicht offensichtlich, was sein zu geschehen, so werde ich
tatsächlich fügen Sie eine weitere Zeile, printf, und sagen, Namen, Dickdarm, in der Nähe zitieren, nur
um dem Benutzer eine schnelle auf dem Bildschirm.
Und jetzt werde ich hier, und ich bin werde meine Tastenkombination verwenden.
Ich werde gehen, Up, Up, und ändern hallo hallo 1 bis 2, Enter.
Und Gott sei Dank, ich mache Fortschritte.
>> Und jetzt bin ich nach oben gehen zu Punkt Schrägstrich hallo und
ändern, dass bis 2, Enter.
Und jetzt mein Programm -
Ich werde es zu vergrößern - wird immer ein wenig schöner.
Name sein wird, sagen wir Rob dieses Mal eingeben, hallo, Rob.
Wir können es wieder tun.
Name, Lauren, Enter.
Name, Joseph, Enter.
Name, wollen wir versuchen, sein schwierig, die Eingabetaste.
Eh.
Es ist nicht wirklich ein Fehler.
So ist es nur ein wenig hässlich.
So könnten wir vielleicht dieses Problem lösen in der Zukunft, nicht jetzt.
>> Aber wie würden Sie instinktiv gehen über die Adressierung
dass besondere Herausforderung?
Es sieht einfach dumm.
Wie vermeiden Sie Dinge blöd?
So konnten wir tun, OK, hörte ich ein paar Dinge, eine Bedingung und eine Schleife.
Wir könnten, ein, eine Bedingung, um zu überprüfen, was ist die Länge der Zeichenfolge
der Benutzer hat uns?
Und wenn es 0 ist, ist es nur zu zitieren unquote, sie einfach Enter drücken, dann
vielleicht sollte ich sie an zu schreien und fordert sie wieder.
Aber wie wollen sie wieder eine Aufforderung?
Nun, ich hörte auch Schleife, und ich konnte tun, dass wieder und wieder und wieder
Aufforderung an den Benutzer für die gleiche Sache.
>> Nun, lasst uns ein anderes Beispiel Verwendung einer anderen
Funktion in der CS50-Bibliothek.
Lassen Sie mich schließen Sie diese Datei.
Lassen Sie mich ein neues erstellen.
Und ich nenne es adder.c, nur weil es ist leicht, einfache arithmetische tun,
auch wenn dies vollständig sein underwhelming mit dem, was Sie tun können
mit jedem modernen Computer.
>> Aber lassen Sie mich gehen und jetzt -
Ich habe meine Lektion gelernt letzte Mal - gehören cs50.h, include stdio.h, int
Haupt Leere, die für jetzt, ich werde einfach nehmen auf blindem Glauben, aber wir gehen davon aus,
das wird verstehen, was das bedeutet, es dauerte nicht lange.
Und ich werde etwas sagen wie "gib mir einen int."
>> Und nun, wie bekomme ich einen int?
Ich möchte schließlich eine Variable genannt x vom Typ int und
verstaust eine ganze Zahl von dem Benutzer.
Das war also ein Schluck.
Aber wenn jemand zu schlagen, wie verkündige ich, eine ganze Zahl als x?
Int x.
>> Also es ist wirklich so einfach.
Gib mir ein int.
Nennen Sie es, x.
Jetzt benutze ich den Zuweisungsoperator.
Und wie komme ich aus dem Laden links einen Wert der Benutzer?
Ich will nicht zu getstring nennen, offensichtlich, sondern getint.
Alle Argumente?
Nr.
So ist es offen paren Nähe paren sofort, und dann ein
Semikolon endet die Linie.
>> Nun lassen Sie mich dies wieder tun.
Gib mir noch int.
Dieses Mal werde ich tun, int, lasst nennen es y, gleich getint.
Und jetzt lassen Sie mich etwas tun, super-einfach wie einige math.
So printf, ist die Summe der% d der Platzhalter für ein int.
Und% d, Periode, Backslash-n.
>> In Ordnung.
Also das ist eigentlich nicht math.
Aber wenn ich will, um die Summe von sagen zuzüglich dieser Wert entspricht dies
anderer Wert, wie viele Argumente in Insgesamt sollte ich printf geben werden,
letztlich?
So vier, nicht wahr?
Diese Saite und dann die drei Werte.
Also x ist das erste was ich sein will gesteckt zunächst auf die% d.
y wird der nächste sein.
>> Und jetzt bin Art sagen wollen z, z, aber nicht vorhanden ist.
Aber das ist keine große Sache.
Denn was würden Sie tun instinktiv, vor allem, wenn Sie hatte eine
Grafik-Taschenrechner, was Sie tippen?
Wie wäre es mit x zuzüglich y?
So ist es nicht eine tatsächliche Variable.
Es ist nur die Summe von zwei anderen Variablen.
Und das ist völlig legitim.
C versteht sicherlich einfacher Arithmetik wie diese.
>> Semikolon, zu speichern.
Nun lassen Sie mich gehen hier und Geben Sie machen Addierer, Enter.
Es ist kein Fehler, das ist also auch Fortschritte.
Geben Addierer.
Und noch ein Tastenkürzel, wenn Sie beginnen sich zu langweilen
mit allen Befehlen -
wenn Sie mit der Eingabe eines Befehls zu starten, wie dot Schrägstrich ad, und das ist, wo Ihre
Langeweile schlägt in, Sie können in der Regel getroffen Tab, den Computer beenden die
Rest der Begriff für Sie, wenn es nicht mehrdeutig, was nach Anzeige kommen.
>> Also lass mich gehen jetzt und Sie drücken Sie die Eingabetaste.
Gib mir ein int, 1, 2, und Gott sei Dank, es ist 3.
Aber wie immer, Testen von Programmen sollte nicht zu verringern
nur versuchen es einmal.
Lassen Sie mich versuchen, eine Ecke Fall, wie negativ 1, gib mir 1, und dass man
checkt auch.
Und ich wollen wahrscheinlich etwas mehr tun strenge Tests, aber ich bin mir ziemlich
komfortabel mit, wo das ist, an.
>> Nun, jetzt versuchen wir ein anderes Programm dass dieses Mal verwendet ein
etwas andere Syntax.
Lassen Sie mich eine neue Datei erstellen.
Ich rufe diese conditions0.c antreten mit einigen Beispiel-Code online.
Und lassen Sie mich gehen Sie vor und tun gehören cs50.h gehören
stdio.h, in Haupt-Leere -
OK.
Dort gehen wir.
Wir haben unsere Standard Textvorschlag.
>> Und dieses Mal werde ich printf sagen, "Ich möchte einen int, bitte", nur um
machen die Eingabeaufforderung ein wenig mehr freundlich.
Und jetzt will ich eine bekommen int von dem Benutzer.
Ich werde es dieses Mal n nennen, nur weil n klingt wie Nummer.
getint, und jetzt, was zu tun ist Ich möchte damit zu tun?
Nun, wenn n - und ich werde es zu vergrößern -
wenn n größer als 0 ist, möchte ich Folgendes tun -
printf "Sie haben eine positive Zahl ist." Else, ich werde printf geben "Du
nahm eine negative
Nummer. "In Ordnung.
Also das Programm, auch wenn ich es tat schnell, sieht rechts syntaktisch.
Lassen Sie mich versuchen, diese.
Als Bedingung 0.
Scheint zu laufen.
Zustand 0, geben.
Lass es uns einen int von 50 Jahren.
Ich nahm eine positive Zahl ist.
Lassen Sie uns versuchen Sie es erneut.
Zustand 0.
Negative 50.
Ich nahm eine negative Zahl ist.
>> Aber jetzt lassen Sie mich holen, was wir halten Aufruf einer Ecke Fall ist die weitere
ein interessanter Fall, dass Sie denken könnte Ihnen einige Mühe, 0.
Nun, ich bin mir ziemlich sicher, das ist eine der diese Ecke Fällen, in denen Null ist
weder positiv noch negativ, so meine Programm, wenn in syntaktisch
korrigieren - es kompiliert, es läuft - ist logisch nicht korrekt.
Also, was ist die einfache Lösung hier, wenn ich will zu erkennen, wenn ich n behandeln möchten
gleich 0 getrennt?
>> Also, wenn n gleich 0 ist, dann möchte ich sagen, etwas wie printf "Sie haben 0."
Lassen Sie mich versuchen, diese jetzt.
Lassen Sie mich wieder hier, deaktivieren meinem Fenster, und neu kompilieren.
Hm.
Ein Fehler.
Aber ich glaube Sie überprüfen möchten wenn n gleich 0 ist.
>> Also noch einmal, andere dumme Sache zu gewöhnen, ist Gleichheitszeichen
der Zuweisungsoperator.
Also das ist eigentlich Fehler, daß technisch, obwohl der Compiler
schützte mich vor mir selbst, würden wir Kopieren technisch werden 0 in N, die
ist nicht das, was ich will.
Ich möchte für die Gleichstellung testen mit gleich gleich.
Und so, dass jetzt sein könnte meine bessere Lösung.
>> Lassen Sie mich tatsächlich speichern Sie diese als, sagen wir, Bedingungen1, um neue und verbesserte.
So jetzt, wenn ich diese neu zu kompilieren, es würde Bedingungen -
hoppla - machen Bedingungen1 dot Schrägstrich Bedingungen1, Enter, "Ich würde gerne einen int,
bitte. "ich werde gehen vor und geben 50.
Es ist immer noch gut.
Negative 50, immer noch gut.
0, und es in der Tat erkannt dass ich abgeholt 0.
>> So was kann ich nun tun mit diesem?
Nun, wir können sicherlich immer tun komplexe Dinge.
Aber was ich möchte vorschlagen, ist dass wir in diesem Sinne hier zu beenden.
Wenn wir ziehen diese, werden Sie sehen, vielleicht, ein Lieblings-Cartoon von Ihnen
bis heute könnten Sie nie verstanden haben.
Und das ist über die Qualität des Lachens Sie sollten mit CS Witze zu bekommen.
Also das ist richtig.
>> Aber mehr zwingend, dachte ich, ich würde geben Sie uns ein kleiner Teaser für Samstag.
Also haben wir begonnen, mit Zahlen.
Wir haben zu Schwimmern bezeichnet.
Wir haben sogar den Doppel genannt, was wiederum Ihnen Zahlen
nach Dezimalstellen.
>> Aber es stellt sich heraus, dass die Schwimmer und Doppel-, und, wirklich, Computer,
grundsätzlich nicht ausdrücken können einige Werte genau.
Wir wissen aus der Mathe Klassen, dass man eine beliebige Anzahl von Nummern der
Komma.
Und Sie können sogar einen vertikalen Balken zu sagen, diese ewig so weitergehen.
>> Leider kann man nicht wirklich man das in einem Computer.
Und so Ecke Fällen ergeben.
Angenommen, du bist etwas finanzielle.
Du machst Mathematik mit Prozentsätzen, und
mit Dollar und Cent.
Und diese Cent nicht unbedingt Line-Up.
Nun stellt sich heraus, dass die Fraktionen von Pfennige kann beginnen zu addieren, wenn
modelliert mit einem Computersystem in einer Weise, dass geschickte
Menschen können die Vorteile.
>> Und diejenigen von euch, die nicht gesehen haben, würde ich möchte Ihnen einen 30-sekündigen Teaser
ein wunderbarer Film Office Space bekannt, das wird ein Bild malen eines
Problem werden wir angehen erste, was am Montag.
Wenn wir die Lautstärke zu erhöhen ein wenig, ich gebe Ihnen 30
Sekunden Bürofläche.
>> [VIDEO PLAYBACK]
>> -Ich meine, Sie, haben Sie nicht zeigen und erhalten Sie Ihren Job behalten.
>> -Eigentlich bin ich gefördert.
>> -Ich könnte einen Virus programmieren Das würde RIP, Ort abseits große Zeit.
>> -Nun, wie funktioniert es?
>> -Jedes Mal gibt es eine Bank-Transaktion wo Interesse berechnet, und
Tausende pro Tag, endet der Computer mit diesen Bruchteilen eines Cent.
>> -Aber ich werde nicht nichts illegal.
>> -Illegal?
Samir ist dies Amerika.
>> -Wir müssen auf Gott schwören.
>> -Wenn niemand weiß, über diese aber uns, alles in Ordnung?
Keine Familienmitglieder, keine Freundinnen, niemand.
>> -Natürlich.
>> -Einverstanden.
>> -Keine Sorge, man.
Ich werde es niemandem erzählen entweder.
>> [END VIDEO PLAYBACK]
>> DAVID MALAN: Also das ist dann CS50, das war Office Space, und es werden alle
Sinn am Montag.
Wir sehen uns dann.
>> SPRECHER: Bei der nächsten CS50, Rob passt sich es aus dem
Harvard Speiseplan.