SPRECHER: OK, ja, Sie werden es nicht glauben, aber letzte Woche, am Montag, in Pierce, ich war unten im Keller. Ich habe nie zu Pierce gehen. Und ich werde nie wieder zurück, weil Ich habe meine Sachen allein, wie, fünf Minuten und jemand stahl meinen Computer und meine Telefon aus meinem Rucksack. Was bedeutet, ich habe es zurück, und dann weniger als eine Woche später es wurde wieder gestohlen. Und dann stellte sich habe auf - Mein iPhone suchen weiter wenig hilfreich zu sein. Also habe ich weiter fördern Sie nicht, es zu benutzen. Es stellte sich auf einmal, und es war in MIT, wie 15 Minuten später, und die Person, nannte diese Telefonnummer, die zeigten, in meinem AT & T Anrufliste. Also ging ich online, genannt, dass Telefon Nummer, und es ging direkt in diese Anrufbeantworter in Spanisch. Und ich habe nicht davon gehört. Also musste ich einen neuen zu bekommen, Computer und Handy. Ich weiß. Ja. Aber wenn Sie wollen Jungs zu Chip in meinem Computer-Fonds nach diesem, das ist, warum Ich habe Ihnen hier gefragt. Nur ein Scherz. Aber das war wirklich traurig und traumatisch. Aber es ist jetzt alles wieder, und das war, warum die p-Set 8 so lange gedauert hat, weil Ich habe keinen Computer. Und jemand hat es gestohlen. Und ich per E-Mail gefragt, ob sie Ihre Klasse würde p-8 gesetzt. Aber sie sagte nein. Und ich war wie, kann ich mein Computer wieder? Und sie sind wie, nein. Nur ein Scherz. OK. Dies ist unsere letzte Abschnitt, und ich habe ein paar - wir haben nur drei Dinge auf der Tagesordnung. Wir werden ein bisschen reden über die Q-Führer. Dann werden wir verbringen 15 Minuten an einem kühlen Demo. Dann sind wir alle werden sagen, Abschied von einander. Sie nicht wirklich brauchen Ihre Computer oder ein Stift oder Papier, um Notizen zu machen oder folgen. Also gehe ich davon aus, wenn Sie Ihren Computer up, dann sind Sie bei Facebook. Nur zu sagen. Es sei denn, Sie sind das Ausfüllen Q Führung, die erste ist. Der Q-Führung ist offen. Sie haben eine E-Mail an sich hatte. Sobald alle Q Zeug ist in der vorgelegten Ende des Jahres, bekomme ich all die Q Kommentare in Partituren von allen Wer wählt, mir Feedback zu geben. Und so, wenn Sie in der Q-go - Ich weiß nicht, ob Sie dies tun können, Jeff, weil Sie und Erweiterung Schüler. Aber wenn Sie gehen in der Q, wenn Sie nicht über es getan, holen Sie Ihre Lehrer, die David Malan ist. Sie müssen ihn tun. Und dann können Sie TFs holen. Und Sie können so viele wählen Transkriptionsfaktoren, wie Sie wollen. Aber es gibt 60 von uns. Sie müssen nicht alle holen. Sie können wählen Sie einfach mir, oder wählen Sie einfach ein paar andere Leute, wenn Sie wollen, um geben ihnen Rückmeldungen als gut. Und dann Partituren auf alle diese erhalten Sie verschiedenen Achsen, und dann verlassen können ihnen Feedback. Und dann, wie einen Monat später, Ich werde all das Feedback zu bekommen. Und genau wie die Rück Sie waren die mir während des Semesters, ich Lesen Sie alles. Und es ist wirklich hilfreich, und es hilft mich als Lehrer und als wachsen Einzel. Also, bitte, nehmen Sie sich Zeit, es zu tun. Wir sind nur hier sein für, wie, 30 Minuten. Also, wenn Sie wollen, am Ende dieser, um dauern fünf Minuten und füllen Sie einfach Q, denn es braucht nicht mehr Zeit als die. Das würde auch wunderbar sein, und Sie Ihre Noten bekommen wieder schneller, wenn Sie füllen das Q. So sind die meisten von Ihnen haben auch schon gemacht - oder nicht, über die Hälfte von euch haben, dass zuvor. Aber wenn Sie ein Neuling sind, das ist, was das ist. Es wird das gleiche für alle Klassen sein. Tun Sie es. Es dauert fünf Minuten. Aber auch, wenn man es ein bisschen schwer tun, das ist nicht das Schlimmste, was in der Welt, weil ich sicherlich nehmen sie ernst. Also, wenn Sie mir ein Smiley-Gesicht zu verlassen, Ich werde zu schätzen. Aber ich würde es auch begrüßen, wenn Sie hat mich mehr als ein Smiley-Gesicht. Aber es ist bis zu Ihnen. Ich kann Ihnen nicht sagen - oder wie ein großes Smiley Gesicht, mit einem Kapital D. Das wäre noch besser sein. OK, das ist alles, was ich für die Frage: Wenn Sie Fragen haben, können Sie fragen mir, aber ziemlich selbsterklärend. Nur, bitte, füllen es aus. Ich würde es wirklich schätzen, und es bedeutet mir sehr viel. OK, das ist, was wir ausgeben 15 Minuten durchlaufen. Ich werde Ihnen etwas Code zu zeigen. Ich denke, das ist wirklich cool, und das hat mir mehr in der Informatik angeregt wird. Also ich hoffe, es wird nicht die gleiche für Sie alle. Wir werden zu öffnen - und das Code werde ich Ihnen später zu senden. Aber wir sind gerade dabei zu öffnen - Ich bin in meinem Terminal - wir werden dieses Programm für genannt [? MySum. ?] Kann jeder lesen, dass, oder soll ich machen es größer? Kann mir jemand sagen, was dieser Code wird tun, wenn ich es laufen, oder, was das Programm machen wird, wenn ich es? [? Avi,?] Was denken Sie, es geht zu tun? Fertig Kauen. Sie sollten nicht mit reden Ihr Mund offen. ZIELGRUPPE: Braucht es eine Reihe von Argumente finden Summe von ihnen zurück Summe, und drucken Sie es aus? Oder es dauert, in zwei Argumente, und dann tut es [unverständlich]. Und dann druckt er aus, was die Ergebnisse sind. SPRECHER: In der Nähe, ganz in der Nähe. Wer möchte hinzufügen [? welche Avi?] gesagt? Sie müssen dieses Programm geben keine Befehlszeilenargumente? ZIELGRUPPE: Nein SPRECHER: Nein Was passiert, wenn Sie nicht geben es keine Befehlszeilenargumente? Ich schreibe dot Strich MySum. ZIELGRUPPE: 1 plus 2 gleich 3 ist. Lautsprecher: 1 plus 2 gleich 3 ist. Und es wird, dass ausdrucken. Das ist genau richtig. Sie finden, dass die Druck f. Linie an der Unterseite. Es wird auszudrucken a, b, und dann die Summe von a und b. Und ich glaube, dass Sie davon ausgehen, dass Summe funktioniert ordnungsgemäß. Gute Annahme. OK, und was passiert, wenn ich geben, was Argument? [? Manu? ?] Zielgruppe: IT werde hinzufügen, was auch immer das erste Argument ist, b. Oder 2, sorry. SPRECHER: Richtig, 2. Weiß jemand, was strtol tut? Es ist im Grunde ATOI. Atoi ist eigentlich eine hübsche Version von - oder eine einfachere Version der strtol. Aber es nutzt eigentlich strtol. Und ich fand heraus, dass, weil ich wollte so etwas wie atoi, und wenn ich dann atoi hat, las ich hier unten. Und ich fand "dieses Verhalten ist das gleiche wie "strtol. Es ist also im Grunde für ATOI alle Absichten und Zwecke. Und Sie sehen, ich null und 10 verwenden, auch. Diese können Sie tatsächlich einen String zu nehmen, und es in einer Reihe, und wählen Sie welche Basis Sie es tun wollen in. Das ist also Basis 10 finden Sie hier. Ich konnte für dezimal getan Basis zwei, Basis 16 für hexadezimal. Es ist ziemlich cool. Aber lange Rede kurzer Sinn, diese dauert zwei Zahlen und fügt sie zusammen. Also lassen Sie es laufen. Und Sie werden auch feststellen, es sind einige Dinge - so habe ich ein Makefile genau hier, und wenn du das öffnen, einige Dinge Sie werden bemerken, sind unterschiedlich. Insbesondere dieses Argument hier, werden Sie wahrscheinlich habe nicht gesehen, dass vor. Im Allgemeinen wir die Dinge zusammenzustellen strich Null, Null. Dash Null, Null, bedeutet das nicht tun keine Optimierungen, Compiler. Versuchen Sie nicht und machen Sie etwas Besonderes oder machen etwas schneller laufen, oder sich von Variablen, die notwendig sind, zu befreien. Sie diesen Code optimieren gar nicht, Ich bin für die Third-Level-fragen Optimierung. Also ich frage Compiler zu tun eine Menge von Optimierungen. Das können Sie im Makefile ändern, wenn Sie diesen Code haben, wenn Sie wollen, , verschiedene Sachen zu sehen. Welche werden wir in einem zweiten zu zeigen. So laufen wir meinen Summe 1 plus 2 plus 3. Jemand gab mir zwei Argumente. ZIELGRUPPE: 4 und 5. SPRECHER: 4 und 5. Danke. Große, es funktioniert. Was sind einige andere gute Argumente um zu versuchen, um sicherzustellen, dass das funktioniert? Anyone? ZIELGRUPPE: 0. SPRECHER: 0 und? ZIELGRUPPE: Negative 3. SPRECHER: Es funktioniert. Aber das waren gute Wahl. OK, also gehen wir zurück hier. Dies ist mysum.c. Sie werden feststellen, es gibt auch etwas, sumfunction.c genannt. Und das sagt, oh, da ist etwas in sumfunction.c definiert. Ich weiß nicht, diese Datei hier sind da brauche ich nicht zu. Aber ich verknüpfen, als ich zu kompilieren, was Sie bemerkt. Lassen Sie uns nach oben. Wir haben gesehen, wenn wir zusammengestellt MySum, rechts dort, in der binären wir aus verknüpften sumfunction.o. Und ich habe die Header-Datei müssen nicht denn natürlich gibt es die Funktionsdeklaration. So scharf sind normalerweise nur Ausgänge in einer Funktionsdeklaration. Hier habe ich nur ihn gerade im Code. Und so habe ich tun müssen, ist Link in der binären, was ich tue. Alle Vermutungen für das, was ist in sumfunction.c? Welche Code, den ich geschrieben habe in sumfunction.c? ZIELGRUPPE: [unverständlich]. SPRECHER: Alle Vermutungen? Ja? ZIELGRUPPE: Ich denke, definiert einige [unverständlich]. Lautsprecher: Ja. Also ich tun, Schreib int int Summe ein. Ich schreibe diese Zeile, und dann habe ich offen geschweifte Klammer, geschweifte Klammer geschlossen. Was denken Sie, ich schreibe im Inneren die geschweiften Klammern, innerhalb dieser Funktion? Ja? ZIELGRUPPE: Rückkehr gleich ein. Prozessor: Das ist eine wirklich gute Vermutung. Wer denkt [? Manu?] Richtig ist? Er sagt zurückgeben plus b. OK, nicht jeder. [? Akshar,?] Sie, auch tun? Sie sicher? OK. Was? ZIELGRUPPE: Sie buchstabiert es falsch. SPRECHER: Nein, habe ich nicht. Ja, nur ein Scherz. Sie haben Recht. Das ist genau das, was es sagt. Es ist eine Rückkehr plus b. Das macht sehr viel Sinn. OK, gehen wir zurück hier. Wir sehen, wie der Header - das ist der Rückgabetyp. Denken Sie daran, wir haben an diesem Tag einen gesehen, der Rückgabetyp der Funktion, sondern geht vor dem Namen des int-Funktion. Hier habe ich int geschrieben. Was denken Sie, wird passieren, wenn in diesem Funktion, schreibe ich nicht int, aber Ich schreibe ohne Vorzeichen? Der Unterschied ist natürlich, ist, dass unsigned stellt nur positive Ganzzahlen und int kann positiv oder negativ. Also habe ich die Rückkehr verändert Typ dieser Funktion. Dieser Code stimmt nicht überein diese Rückkehr geben Sie hier. Was denken Sie, wird passieren, wenn ich kompilieren? Sie sollten schreien mich an. Kein Geschrei. Was ist, wenn ich das Programm? Lassen Sie uns vor 0 negative tun 3, oder negativ ein. Es funktioniert immer noch, auch wenn ich sage, es ist eine Rückkehr unsigned integer. Offensichtlich ist es nicht der Rückkehr eine Ganzzahl ohne Vorzeichen. Es ist eine Rückkehr mit Vorzeichen. Es ist ein negativer Rücksendung. OK, das ist seltsam. Was ist, wenn ich in gehen hier und das tun? Also habe ich alles verändert von int in unsigniert. Es kann nur ganze Zahlen ohne Vorzeichen. Aber wir denken, es wird immer noch laufen? ZIELGRUPPE: Ja. SPRECHER: Es wird. Das ist verrückt. Und wir in einer eindeutig zugeordnet geben integer, können wir zwei signierte geben integer, es funktioniert immer noch. OK, irgendwelche Ideen, warum es immer noch funktioniert, oder was ist los? Ja, Jeff. ZIELGRUPPE: Es hat etwas zu tun mit der Optimierung, die Sie markiert. SPRECHER: Nein Wir könnten die Optimierung zu ändern, es würde immer noch funktionieren. Das kann ich für Sie tun, aber - ZIELGRUPPE: Ich werde Sie beim Wort zu nehmen. SPRECHER: Ja. Wenn Sie das Makefile hier öffnen, Ich habe die Optimierung. So können Sie Strich Null, Null tun können. Es wird immer noch funktionieren. Andere Gedanken? Ihr seid alle erwartet, um zu arbeiten, so warum hast du erwarten, dass es funktioniert? Nein? Stille. OK. Ich habe bis sieben Sekunden warten, weil ich eine Frage. Also das coole an C, und Sie haben Sie - wahrscheinlich erlebt vielleicht nicht, könnte dies ist das erste Mal. Aber wie Sie alle wissen, wenn ich schreibe etwas in C, ist es nicht wie sparen Diese auf dem Computer. Es ist, als Nullen und Einsen gespeichert. Es geht von C-Code zu Assembler-Code. Hat jemand Assembler-Code gesehen, Maschine Assembler-Code? Wir werden uns in einem zweiten zu suchen. Es geht von C-Code zu Assembler-Code. Und euch wissen, die Stufen der Zusammenstellung. Sie musste, dass für ein Quiz zu merken, und schreiben sie dann auf Quiz Null. Die meisten Menschen haben es falsch. Ich glaube, Sie Jungs genagelt. Aber, sind die beste Abschnitt euch für Tests, übrigens. Welche ist genial. Es wird nicht weh tun. Seien Sie nicht beunruhigt. Aber es ist wirklich cool. Gute Arbeit. So geht es um die Montage Sprache und dann geht es um Einsen und Nullen. Und die Einsen und Nullen auf die gespeicherte Computer an, und das ist, was gespeichert in die a.out-, oder in diesem Fall, die ausführbare Datei. Und der Computer läuft Einsen und Nullen. Right? Wir haben das vorher gelernt. Also die coole Sache ist, diese ohne Vorzeichen Idee, die Idee der Typen unsigned ints, et cetera, und so weiter ist, dass hier in der C-Sprache. Diejenigen existieren. Aber Typen nicht existieren bei Die Einsen und Nullen. Typen gar nicht wirklich existieren die Assembler-Ebene. Also das ist etwas, das in C existiert Welt, aber nicht in Computer vorhanden Welt-oder Prozessor-Welt. Das ist etwas, dass die C-Abstraktion Sprache ist enthalten, um unsere Leben leichter. So am Ende des Tages, ich schreiben kann viele verschiedene Dinge hier, und es nicht einen Unterschied machen. Weil das nur existiert in der C-Welt. Es ist nicht in die bestehen Einsen und Nullen Welt. Und unser Programm in der Ausführung Die Einsen und Nullen Welt. So ist Ihre Meinung klar noch nicht geblasen. Aber ich denke, das ist cool. Ja, Jeff. ZIELGRUPPE: Also, wenn statt der Dabei int, char tun Sie. Und Sie waren - SPRECHER: Wir tun es in einer Sekunde. ZIELGRUPPE: Denn dann erhalten Sie eine unsigned gehen von negativen 128 bis 127 oder 0 bis 255. SPRECHER: So char ist problematisch. Weiß jemand, warum char wäre problematisch, und es tatsächlich würde Dinge ändern sich in die, die und Nullen Welt? ZIELGRUPPE: Aufgrund der Größe der Zeichen. SPRECHER: Größe der char 1 ist. So ist auch unsigned 4 Bytes. So würde char Dinge vermasseln. Aber was ist 4 Bytes, die ist auf ein char verwandt? Oder zumin fügt hinzu, dass eine zusätzliche - Sie können ein Zeichen mehr setzen nach char. ZIELGRUPPE: Char Stern. SPRECHER: Char Stern hat 4 Bytes. Lassen Sie uns also etwas tun, das ist ein Zeichen Stern. Also das würde wahrscheinlich funktionieren, aber wir sind gehen, um etwas selbst zu tun verrückter als diese. Meiner Meinung nach, verrückter. Ich habe jetzt eine Funktion, die zurückgibt geschrieben einen Zeiger, und es dauert eine Zeiger und ein Wert ohne Vorzeichen - wir werden Ändern Sie diese zurück zu int, so sind wir nicht zu viele Änderungen auf einmal. Und es wird ein Array namens a, Indizes hat in das Array und gibt die Adresse. Wir haben diese Operatoren gesehen. Das, was Sie denken, das wird zu tun, im Gegenzug, wenn ich es? Was denken Sie, es geht zu tun? Alle Vermutungen? ZIELGRUPPE: Segfault. SPRECHER: Was? SEGFAULT? Das ist eine gute Vermutung. Tom sagt das Gleiche. Alle anderen Vermutungen? Wer denkt, es wird das gleiche tun? Wer denkt, es wird abstürzt? Sie tut das gleiche. Entschuldigung. Aber, natürlich, in 1 und 2 haben wir. Und die sind beide gültig, oder? Mal sehen, können wir auf dem Sprung zweiten Platz von einem Array. Aber was, wenn wir uns b eine negative Zahl? Das ist wahrscheinlich eine bessere Vermutung für etwas, Speicherzugriffsfehler. Es funktioniert immer noch. OK, das ist jetzt verrückt. Dies ist gleichermaßen gültig Summenfunktion. Dies macht das gleiche genaue Sache als Rück a und b. Kann jemand erklären, warum dies eine gute Sum-Funktion, oder warum das funktioniert? Was passiert hier? Warum funktioniert das genau das gleiche tun, etwas wie unsere alten Summenfunktion? [? Akshar,?] was ist los? ZIELGRUPPE: Weil, wenn Sie ein a, die eine Adresse ist der Standort Speicher - und wenn du das kaufmännische tun, ist es geht an dieser Speicheradresse. Und wenn Sie gehen zu b, Art der du bist Bewegen Schritte von dieser Speicheradresse, Sie zurück sind, dass. Sie sind also tatsächlich, in der Tat, Zugabe von a und b [unverständlich]. Wo sind Standardoperationen auf dieser Rückkehr? Wie, wo kommen die Klammern fallen? Ist die Rückkehr der Adresse auf ein vor oder nach [unverständlich]? SPRECHER: Es geht in den Index b - oder Index in eine - und dann Rückkehr die Adresse. OK, so hat jeder verstehen was [? Akshar?] sagte, und erklärt, warum das funktioniert? Ich habe nicht das erste Mal, wenn jemand erklärte dies für mich. Würde jemand ein Bild gefallen , dies zu erklären? Wir werden, um ein Bild zu zeichnen, mit keine Marker, das ist toll. Gefunden einige. So haben wir ein Array, das ist eine Reihe von Boxen. Die erste ist ein Index 0, index 1, 2, 3, 4, Punkt, Punkt, Punkt. Ein typisches Array. Und zusätzlich zu den mit Indizes, sie haben alle Speicheradressen. Also lassen Sie geben diesem Speicheradresse 13, 14, 15, 16, 17, et cetera. Jeder ist hier so weit. So eine ist eine Adresse. Der Name eines Arrays, einer Zeiger dort gespeichert. Es ist ein Zeiger, es ist ein Speicher, zu dem Anfang des Arrays. Also, wenn dies der Array a würde ein Wert von 13 sein. Und, natürlich, die wir geben können ein beliebiger Wert wir wollen. Char Sterne ein, wir geben einen kann jeder Speicheradresse, die wir wollen. Wir können es 0, können wir es geben negativen 1 - minus 1 nicht vorhanden ist, so dass es wahrscheinlich problematisch, aber Sie sah, dass es immer noch funktioniert. Also haben wir eine beliebige Anzahl wollen wir geben können, jede Speicheradresse wir wollen. Dann, int b sagt, OK, gehen diese Nummer der die Schritte in das Array. So dass, wenn b gleich 2 ist, und a = 13, wir sind an der Speicheradresse 13. Und wir gehen in zwei Schritten, und so sind wir hier. Und das Und-Zeichen bedeutet Rück die Adresse von dieser Lage. Und die Adresse ist natürlich, 15. So bekommen wir 13 plus 2, oder a plus b, der 15 ist. Die Frage ist, obwohl - Es tut mir leid. Heißt das, dass Dinge zu klären für, warum das funktioniert? ZIELGRUPPE: Warum würde es funktionieren werde - so kann man ein Array und haben gehen Sie zu einem negativen Index? SPRECHER: Richtig. Also haben wir negative Zahlen, so das ist die - Macht das Sinn aber, erste, [? Avi,?] für Sie? ZIELGRUPPE: Ja, ich bin nur [Unverständlich], aber - SPRECHER: Ja, das würde 15 zurück. Wenn ein 13 war, und b 2 war, dies würde 15 zurück. ZIELGRUPPE: Also die Null Indizierung nicht ein Thema geworden, nicht wahr? Weil Sie von 0 in Bewegung sind. SPRECHER: Richtig. So können Sie sich bewegen - so, wenn b 0 war, Sie würden nicht überall bewegen. Und Sie würden nur wieder die Adresse - wenn b 0 war, ist das im wesentlichen Rückkehr die Adresse einer. Weitergabe in ein char-Sterne und die Rückkehr der Adresse a wird nur eine Rückkehr, Wesentlichen. OK, das ist die Frage, warum negative Zahlen zu arbeiten? Und das ist das wirklich coole an dies, denn dies sollte abstürzt. Und es abstürzt, würde, wenn wir tat so etwas. Lassen Sie uns sagen, Int. Also dieser Code sieht identisch und sollte identisch verhalten. Im Wesentlichen bedeutet, x eine Variable Müll, und so sollte dies identisch verhalten. Lassen Sie uns das - oops - in Stern. OK, wir sind schon immer Fehler hier weil es schon gehen, wütend zu sein mich an, weil es bereits weiß, was kommt. Insbesondere die zweite. Adresse von gestapelten Speicher zugeordnet mit einer lokalen Variablen. Im Wesentlichen werde ich nicht zu kompilieren das, und dann werde ich rückgängig machen was wir gerade getan. Aber weil wir eigentlich nie Zugriff auf, was auf dem Speicher Lage, es ist nicht zu abstürzt. Wir sind nie wirklich zu schauen, was ist in der zweiten Box oder was in jedem Feld dieses Arrays. Wir sind nur zu sagen, hier ist die Adresse der Sache, die wir suchen und bringe diese Adresse. Wir sind eigentlich nie gehen in die Array, um an dieser Stelle zu suchen. Und weil wir nie den Speicher zu berühren, wir nicht in Schwierigkeiten zu bringen. Wir bekommen nicht einen Speicherzugriffsfehler. Wenn wir versucht, wieder berühren, dass Speicher, berühren, was bei a oder b war - oder ein Bügel b, und unter der Annahme ein von 0 und - wenn eine 0 war, auch, das wäre schön sein schlecht, weil wir nicht gehen können Sie alle den Weg dorthin. Wenn A und B wurden beide 0, und wir versuchten berühren, was da war, dann würden wir in Schwierigkeiten. Aber wenn wir uns nicht berühren, was da ist, wir einfach die Adresse zurück, ist es eigentlich nicht zu abstürzt, weil es können Sie diese Operationen durchzuführen. Es wird nur sauer auf dich, und bekommt Super wütend, wenn Sie versuchen, und berühren die tatsächliche Speicher und zurück, was an dieser Speicherstelle. Heißt das Sinn? Das ist nur ein verrücktes Teil C. So, wir haben noch einen von diesen. Wer denkt, das ist cool? Mehr Menschen. Das ist gut. OK, das ist unsere letzte. Und ich möchte, dass Sie mir sagen, ob oder nicht, denke, das wird um exakt das gleiche zu tun. Diese habe ich irgendwo aufgeschrieben. Ich bin nicht das Auswendiglernen ihnen. Mal sehen, 8, b 4, 4, 2, 4, 0, 8, 0, 3, 4, 4, 2, 4, 0, 4. Also das ist ein Array, jetzt, keine Funktion. Und es ist ein Array, weil wir Platz Klammern, geschweifte Klammern nicht. Und es ist eine Reihe von welcher Art? Jeder, hmm? ZIELGRUPPE: Die hexadezimale Zahlen? SPRECHER: Aber was ist das C-Typ? Sie alle haben hexadezimale Zahlen. Was ist in der C-Typ? Es sagt Ihnen. ZIELGRUPPE: Es ist unsigned chars. SPRECHER: Richtig, unsigned chars. Und zwei hexadezimale Zahlen ist ein Byte. Das sind also 1, 2, 3, 4, 5, 6, 7, 8, 9 Bytes. Es gibt eine Reihe von 9 Byte. OK, werden Sie wahrscheinlich bereits wissen, die Antwort auf diese Frage. Aber was glauben Sie, wird passieren, wenn ich das? Ich sage noch einmal, in mysum.c, Ich erwarte eine Funktion das dauert zwei ganzen Zahlen. Und ich sagte, dass statt Summe ein Array von Zeichen. Was wird geschehen, wenn Ich laufen. / MySum und zu machen? Nun, zunächst wird wohl die meisten von euch einig, dass Hersteller - oh nein, nur ein Scherz. Was hab ich falsch gemacht? Uh oh. Das sollte geschweiften Klammern sein. Das ist, wie Sie ein Array zu initialisieren. Mein schlechtes. Also bereits vor diesem Typen sahen wir sind eine C-Level-Abstraktion, nicht ein Computerebene Abstraktion. So sind die meisten von Ihnen wahrscheinlich erwartet, dass es zu machen, oder unter der Annahme, dass es zu machen. Aber was, wenn ich laufen. / MySum? Was wird passieren? Alle Vermutungen? ZIELGRUPPE: Es ist zu gehen drucken Sie ein Wort. SPRECHER: Es ist zu gehen drucken Sie ein Wort. Welches Wort? ZIELGRUPPE: [unverständlich]. SPRECHER: Alle anderen Vermutungen? OK, drucken Sie eine Phrase. Sie können jeden beliebigen Begriff zu haben. Das wird Ihrer Seite. Jeder, der eine andere Vermutung hat? Anna, was ist Ihre Vermutung? ZIELGRUPPE: Es wird ausgedruckt - zwei Buchstaben, oder [unverständlich] ein Brief. SPRECHER: Ein Brief. ZIELGRUPPE: Kann ich zählen, wie viele [unverständlich]? SPRECHER: Nine. Nun, ich werde es ausführen. Es tut exakt das gleiche Ding. Es addiert zwei Zahlen. Nun, lassen Sie passieren die zwei Argumente. Es dauert nicht Argumente. Also ich weiß nicht, wo sie konnte vielleicht bekommen diese Argumente. Aber lassen Sie uns bei 100 und 0 bestehen. Und es fügt 100 und 0. Das ist verrückt. Ich so zu denken. Negative 4, geht das auch. Sie können, was Sie wollen. Dies ist eine gleichermaßen gültige Summenfunktion. Dies ist eine Summenfunktion. Aber nein, sind Sie sagen, es ist ein Array von Bytes. Also, was ist denn hier los? Also, noch einmal, gehen wir zurück zu dieser Idee sagte, dass wir ganz am Anfang. Sie gehen von C-Level-Code, um die Montage Sprache, der Einsen und Nullen. Dies ist hexadezimal. Aber das ist wirklich nur eine viele Einsen und Nullen. Das sind 72 Einsen und Nullen, oder? 72 Einsen und Nullen. 9 Byte. Jedes Byte besteht aus 8 Bits. Jedes Bit eine Eins oder eine Null. So 72 Einsen oder Nullen. Ich habe nur geschrieben, sie wie diese - anstatt es zu schreiben wie viel Einsen und Nullen. Aber das wird von C-Ebene zu gehen Sprache bis hin zur Montage Sprache, der Code. Und das wird in Code zu drucken, irgendwo diese 72 Einsen und Nullen dass ich hier geschrieben habe. Also irgendwo, dass - Lassen Sie uns hier gehen - irgendwo in MySum, das Programm gibt sind diese 72 Einsen und Nullen, die ich habe geschrieben und gesagt, es zu schreiben. Nun, keine Vermutungen, was die 72 Einsen und Nullen das? ZIELGRUPPE: Wahrscheinlich die gleichen etwas wie ein plus b zurück. SPRECHER: Wahrscheinlich die gleichen etwas wie ein plus b zurück. Lassen Sie uns sicherstellen, dass. Lassen Sie uns herausfinden, wie ich das tat. Also, wenn Sie wieder hier zu gehen, sage ich Ihnen um diesen Befehl auszuführen, objdump-S sumfunction.o. Gehen wir ausführen. objdump - obj, zu entleeren. Im Grunde kann es mir geben was ich sehen will. Es kann mir die Assembler-Sprache zu geben. Es kann mir die Einsen und Nullen zu geben. Es hat eine Tonne von Fahnen. Das ist der, den wir gehen für jetzt. Punkt - wie Sie sehen in den Folien - Strich Kapital S sagt, durchsetzen, Source Code - Diese Zeile ist aus C - mit der Montage Code und mit den Nullen und Einsen. Und wir werden laufen es auf sumfunction.o. Denn es wird einfacher, zu sehen sein. Again - hmm? ZIELGRUPPE: Sie buchstabiert es falsch. SPRECHER: Aber ich bin eigentlich los um es für einen zweiten zu löschen. Ich bin zuerst zu öffnen nur sumfuntion.o. ZIELGRUPPE: Sie buchstabierte falsch das erste Mal. SPRECHER: Classic. Sum - das ist ein hartes Wort, aber. Sie werden überrascht sein. OK, das ist so sumfunction.o. Ich konnte nicht einmal sagen. Es gibt eine Menge von Nullen, eindeutig viel von Nullen, und es gibt einige andere Sachen, die nicht ist Nullen. Aber meistens Nullen. Sieht so aus, es gibt einige Einsen. So klar, das ist schwer zu lesen. Das ist die binäre Sprache. Lassen Sie uns nun öffnen - was? Was mache ich falsch? Habe ich es richtig geschrieben? OK, das ist peinlich. Ich brauche eine Sekunde, um herauszufinden heraus, was ich falsch mache. Das ist ein Fehler. Das ist seltsam. Oh, das ist, warum. Ich werde gehen Sie zurück zu unserer ursprünglichen ein, so können wir bei der Suche Objekt-Code dafür. Denn es ist nicht wirklich zu alles sein, wenn wir einfach den Einsen und Nullen in. Dort gehen wir. OK, also jeder kann das sehen. Diese Funktion, wie gesagt, löschte die C-Linie - Quellcode-Zeilen - mit einigen Montageanleitung. Hier ist unsere Quellcodezeile. Hier ist einer, hier ist eine andere. Hier ist die Montageanleitung. Das ist, wie sie aussehen. Montageanleitung - Sie mehr von diesen lernen können, wenn Sie nehmen CS anderen Klassen, aber sie sind in der Regel eine Anweisung. Und eine Quelle und ein Ziel. Und dann ist hier der binäre Code das entspricht dieser Versammlung Anleitung. So wie Sie sehen können, diese Summe-Funktion, am Ende des Tages, drei Montageanleitung. Nur drei. Eine mov - diesen m-o-v steht für ein Verschieben. Fügen Sie steht für Add. Und r-e-t steht für Return. So ein mov, ein Add, einer Rückkehr. Und diese hier sind die Nullen und diejenigen, die diesem Code entsprechen. Also diese Nullen und Einsen, wenn Sie wissen, die, Sie können einfach die gerade in. Und dann werde tun, die gleiche genaue Sache. Da am Ende des Tages, alle Sie ausführen ist eine lange Reihe von Nullen und Einsen. Und das ist, was der Code eigentlich ist. Und der Grund - lassen Sie uns eine Sache. Hatte ich das Makefile geöffnet? Also, wenn wir wieder nach Strich Null, Null hier oben - sorry, Kapital o-, Kapital- o Null, nicht Null, Null. Und wir haben zu machen, wäre es immer noch die gleiche Arbeit. Aber jetzt können Sie feststellen, dass es ein viel mehr Montageanleitung. Das ist, weil wieder fragte ich die Compiler, keine Optimierung zu tun. So konnte ich immer noch alle diese nehmen Nullen und Einsen, und werfen sie in, und das würde funktionieren. Ich habe gerade die Optimierungen, weil es ist ein bisschen einfacher, dann, um das Array zu schreiben. Aber das würde genauso gut funktionieren. OK, wir werden noch eine letzte Sache zu tun, weil ich denke, ist das coolste Teil. Auch wenn jeder ist eindeutig bereits geblasen und sprachlos. Unsere Gedanken sind durchgebrannt. [Unverständlich] Also, diese sind aus einem anderen CS-Klasse, Das ist super interessant, dass ich genommen - CS61. Ich sehr empfehlen Ihnen, es zu nehmen. Aber der interessante Teil über diese Tatsache, dass Dinge sind nur Nullen und Einsen, sind, dass alles Nullen und Einsen. So können Sie eine Datei, die hat nehmen die richtigen Nullen und Einsen Sie wollen irgendwo in ihm, und verwenden Sie diesen Abschnitt Nullen und Einsen als Summe-Funktion. Was mache ich damit? Ich meine, Sie können eine Bilddatei zu nehmen, dass die richtige Reihe von Nullen und diejenigen, die etwas zu drucken aus, um ein Bild. Und ein Programm könnte interpretieren, ist ein Bild, aber man kann es interpretieren, wenn Sie wollen, als eine Summe-Funktion. Also, wenn wir uns öffnen, denn wollte Beispiel für dieses Bild. Gehen wir, Hallo Kitty. Wunderbare kleine Bild. Es gibt hier das, dass die String von Nullen und Einsen. Diese 72 Nullen und Einsen gibt es in diesem Bild. Also, was ich tun kann, ist dann schreiben - Ich muss daran erinnern, wo sie sind. Ich werde das zu finden in einer Sekunde. Aber wir tun - lassen Sie mich wissen, wo sie sind. Eine sek. Lassen Sie uns - ZIELGRUPPE: [unverständlich]. SPRECHER: Danke. Also, wenn wir dieses Programm ausführen, das stattdessen liest eine Datei, dann geht es dieser Index in der Datei. Und dann wieder, genau wie MySum nimmt zwei Zahlen. Wir können Zahl exakt die gleichen wie hinzufügen wir waren, bevor Sie, was geht zeigen, wie die Tatsache, dass am Ende des Tages sind alle diese Dinge Nullen und Einsen. Und es ist einfach, wie Sie sich entscheiden um sie zu interpretieren. Und wenn Sie tatsächlich aussehen an diesem Bild - Lassen Sie uns ein wenig zu vergrößern. Kann jeder sehen? Sie werden sich hier bemerken, gibt es einige seltsame Fleck. Lass uns gehen - das ist das Originalbild. Sie werden feststellen, hier gibt es keinen Fleck. Das ist der Code für die Summenfunktion, ist, dass kleiner Fleck recht. Und eigentlich wieder, wenn Sie mehr erfahren über diese, werden Sie feststellen, dass diese Hallo Kitty, die auch eine größere hat Fleck, hat Code, der über ein finden kann Computer, wenn es nicht geschützt entsprechend. So können Sie diese tatsächlich ausgeführt. Ich werde nicht, um es jetzt laufen. Aber man kann diese ausführen Hallo Kitty Bild, und es kann nehmen über Ihren Computer. Also das ist alles für die Demo. Hat jemand irgendwelche Fragen haben, Kommentare, Anliegen? Ich denke, das Zeug ist faszinierend. Es hat mich inspiriert, mehr zu erfahren. Ich empfehle, wenn Sie interessiert sind haupt auf CS, sprechen Sie mich an. Auch wenn ich ein Sozialstudien Concentrator, ich bin ein CS, sekundäre, so Ich weiß noch, ein wenig. Aber ich weiß, was sicherlich Klassen, die Sie nehmen sollten. Ich denke, es ist alles sehr interessant, und ich ermutige Sie, natürlich, um erfahren Sie mehr, wenn Sie interessiert sind. OK, ich habe eine letzte Sache. Entschuldigung. Haben Sie Fragen? Ich habe nicht innehalten, um zu warten, ob jemand hatte keine Fragen darüber. Ist jemand sein wird ein CS-Konzentrator? Oder daran zu denken? Ein, zwei, drei, vier. One - nur einen. Anna ist die einzige Hand, ist autoritativ angehoben. OK, das ist cool. Assam, was werden Sie tun? ZIELGRUPPE: [unverständlich]. SPRECHER: Konstantin? ZIELGRUPPE: Physik. SPRECHER: Whoa, das ging schnell. Sie hatte eine schlechte Erfahrung in CS50? [Unverständlich], was werden Sie tun? ZIELGRUPPE: Ich habe keine Ahnung. SPRECHER: Curt? ZIELGRUPPE: Econ oder CS. SPRECHER: Econ oder CS. Tom? ZIELGRUPPE: Ich mache Stat. SPRECHER: Stat? OK. Was sind Sie? ZIELGRUPPE: Ich? SPRECHER: Ja. ZIELGRUPPE: Stat. SPRECHER: Stat. Oh, dort gehen Sie. Tom, sprechen Sie mit Alden. Emily, was sind Sie? ZIELGRUPPE: Biomedical - SPRECHER: Sind Sie in diesem Abschnitt? ZIELGRUPPE: Nein SPRECHER: OK, das ist Emily. Sie ist meine Freundin. Natürlich nicht so gut von einem Freund, denn sie gibt mir eine harte Zeit. Sie könnten netter zu mir sein vor aller, mein Schüler - ZIELGRUPPE: Ich mache Ihre Q Führer. SPRECHER: Wirklich? Uh oh. Okay, du bist unglaublich. Ich liebe dich so sehr. Oh Junge. Wie auch immer, ich, letzte Nacht, wie alles - Ich bin sicher, jeder scheint wirklich betonte, gerade jetzt. Ich weiß nicht, sind Neuling - sind euch gestresst fühlen? Ich fühle mich gestresst. Es war wie, Sie nach Hause gehen für Thanksgiving. Du bist wie, ich bin zu gehen all diese Dinge zu tun. ZIELGRUPPE: Es ist so anders. SPRECHER: Ja, und Sie kommen zurück. Jeff, Sie fühlen sich nicht so? ZIELGRUPPE: Ich dachte nur, Ich würde ein wenig zu tun. SPRECHER: OK, toll. So komme ich zurück, und ich habe nicht nichts getan. Und es ist alles super stressig. Und ich mache mir Sorgen, wirklich betrifft, darüber, ob oder nicht, ich bin gehen, um alles, was ich bis zum Ende. Aber letzte Nacht, ich war nicht gestresst, Ich war nur ein wenig traurig. Also in mein Tagebuch schrieb ich über was ich war traurig darüber. Und ich war traurig über diesen Abschnitt in dieser Klasse zu Ende. So war ich gerade dabei, für euch zu lesen ein kleiner Ausschnitt von meinem Tagebuch, von der letzten Nacht. Kann ich ein paar Servietten, einige Gewebe von Tom? Nein, ich werde weinen. Ich weine nicht. Nicht, dass man nicht weinen kann, Ich weiß nur nicht weinen. Ich weiß nicht einmal, ob meine Tränen Drüsen gearbeitet - Tränenkanäle. Ich habe nicht in eine lange Zeit geweint. ZIELGRUPPE: [unverständlich]. SPRECHER: OK, danke. OK, es ist ein wenig Vorwort - es gibt einige andere Teile von meinem Tagebuch Eintrag, weil ich versuche, jede Zeitschrift Nacht, bevor ich zu Bett. Ich empfehle Journaling. Es hilft Ihnen, die Dinge zu verarbeiten und auch sehr dankbar für den Tag. Und es macht es viel einfacher zu sehen wieder auf den Tag und erkennen, dass es gab eine Menge guter Dinge, die passiert ist. Auch wenn Sie das Gefühl, wirklich gestresst in der Nacht oder wirklich aufgeregt, oder wirklich traurig oder müde. Oh, mein Gott. Ich weiß nicht einmal, ob es geschrieben, dass gut, weil ich nicht Korrektur gelesen. Aber wir werden es lesen. Ich normalerweise nicht lesen, meine Zeitschrift, offensichtlich. "Morgen werde ich meinen letzten lehren CS50 Abschnitt des Jahres. Es ist verrückt, wie schnell die Zeit vergeht. Doch, ich bin durch, wie unterschiedlich getroffen meine Erfahrung im Unterrichten war in diesem Jahr als wenn ich im zweiten Jahr. Für den Anfang, ich auf jeden Fall wissen, das Material besser. Aber nicht sagen, meine erste Kohorte von Studenten, dass. Noch wichtiger ist jedoch, erkannte ich, dass die Freude, die aus Stand kommt bis vor einem Raum, was beginnt als Fremde, aber endet als bei dest, Facebook-Freunde, nicht im ersten Jahr Zufall. Vielmehr ist es aus zu wissen, dass in einige kleine Weise, Sie helfen begabt, nachdenklich, entzückend, und leidenschaftliche Menschen lernen ein bisschen mehr über Informatik. Sie sind Verschiebung, dass die Glühbirne nur ein Bit im Sockel, so dass es in der Lage heller, als Sie zu leuchten, oder sie, könnte bei Semesterbeginn vorstellen können. Sie helfen drehen diejenigen runzelt die Stirn auf den Kopf nach unten und Fragen zu stellen, Unterstützung, aber immer noch erlauben, Studenten, sich auf ihre eigenen. Es ist sicherlich nicht übertrieben zu sagen, dass dieser Abschnitt ist mein Favorit Teil der Woche. Oder auch, dass ich zögere zu sagen, ist, dass allem, um 5:30 Uhr jede Woche, zu wissen, dass es dann viel zu lang sein bis wir uns wieder treffen. Doch, ich bin unglaublich dankbar, alle, die mir diese gegeben hat Gelegenheit, andere zurück zu geben. Um David, für seine Geduld und Vertrauen. Um die Film-und Produktionsteam, für macht mich freuen etwas respektabel. Und, am wichtigsten, zu meiner Studenten, ohne die würde ich keinen Grund zu haben, 10 Stunden verbringen herauszufinden, die am besten Weg, um Zeiger zu ziehen, oder das Layout ein Tabelle von Delfinen, via JavaScript. Wie immer, es war ein Segen. " Also mit diesem, danke Jungs. Ich werde Sie alle auf dem CS50 Messe zu sehen, und der Hackathon, wenn du da bist. Und wenn Sie Fragen haben, werde ich bleiben herum, bis es nicht mehr. Aber ich danke euch für ein wunderbares Jahr. [Applaus] SPRECHER: Ich könnte weinen.