PROFESSOR: Also der Tagesordnung diese Woche nicht so viel Zeug. Aber hoffentlich sehr, sehr hilfreich und für euch in dieser Woche relevant. Aber wir werden vielleicht 15 zu verbringen, 20 Minuten mal eben schnell im Gespräch über Link-Liste. Linklisten sind los bei dem Quiz abgedeckt werden. Also vielleicht wäre es sehr hilfreich ein wenig über, was das ist zu lernen. Wir werden die überwiegende verbringen Mehrheit der heutigen Abschnitt gehen über Quiz Null Praxis Probleme. Und dann werden wir vielleicht 20, nur 30 Minuten zu retten am Ende für alle offenen Fragen jemand hat. Und dann wird der letzte fünf Minuten werde ich , eine Pumpe von Sprache für das Quiz zu geben. Ihr seid alle wollen hier dafür. Denn es geht um eine gute Zeit zu sein. In Ordnung, so dass einige Material auf Link-Liste. Wie sie in der Regel strukturiert ist Sie haben eine so genannte Knoten, nicht wahr? Sie haben diese Dinge genannt Knoten, die Strukturen sind. Ich werde über die Erstellung gehen ein Knoten in der nächsten Folie. Aber im Wesentlichen aller gelinkten Listen sind Daten, hat zusammen über Zeiger aufgereiht worden. Und so der Vorteil, den wir haben, der Verwendung einer verknüpften Liste über, vielleicht, wie ein Array ist die Tatsache, dass in einem Array Sie einen zusammenhängenden Block von benötigen Speicher alle an der gleichen Stelle, einer nach dem anderen, in der Lage sein, daß zu haben. Während eine verknüpfte Liste, könnten Sie zufällige kleine Stücke von Speicher aller Computer durch Zeiger aneinandergereiht. Und auf diese Weise können Zugang zu Informationen das kommt einer nach dem anderen, nach dem anderen ohne dass nur ein großes Stück Speicher in Ihrem Computer irgendwo. Und so ist dies eines der wichtigsten Gründe, warum verwenden wir Link-Liste. Zweitens ist es sehr einfach, dynamisch Größe des Link-Liste, weil in der Anordnung, wenn Sie erklären, ein Array, Sie haben einen bestimmten Sollwert. Sagen wir, ich wollte zu erstellen ein Array von 10 Zahlen. Erstelle ich ein Array von 10 ganzen Zahlen, und das ist es. Es ist 10. Ich weiß nicht, was ich danach machen. Wenn ich wollte, um es 11 zu machen, kann es nicht tun. Wenn ich möchte es 9 zu machen, kann es nicht tun. Während in einer Linkliste, die Sie hinzufügen können, und löschen und einfügen wo immer Sie wollen. Sie können dynamisch die Größe Ihrer strukturieren, hier, ihr Datenstruktur. Und das gibt uns eine Menge Weitere zusätzliche Flexibilität dass wir nicht in der Regel haben mit Arrays. Jeder verwirrt auf dem Grund Struktur, wie eine Link-Liste ist oder warum wir auf eine über ein Array verwenden? Ja, wir gehen über im Detail wie man tatsächlich erstellen Sie eine. Aber das ist nur eine Art das allgemeine Gefühl gerade jetzt. Cool. Und so Arrays aneinandergereiht dieser schönen kleinen Dinge Knoten genannt. Alle ein Knoten ist eine Art von Struktur. Denken Sie daran, eine Struktur ist, wenn man wollte um eine bestimmte Art von Variable zu erstellen in C, die nicht bereits tut vorhanden sind, die Sie, als Programmierer, kann tatsächlich zu erstellen, dass Sie sich. Usw. Diese Art der Daten Struktur wird als ein Knotenpunkt, tatsächlich von uns erstellt wurden, dass nicht innerhalb von C auf eigene existieren. Und die Art und Weise, dass Sie erstellen eine ist Sie der Header typedef struct, der der Compiler Ich bin erzählt etwa um eine Struktur zu schaffen. Wir werden mit dem Namen "Knoten". Und im Inneren wir gehen um eine Variable in erklären, die gehen, um einen Wert zu speichern. Und dann sind wir auch gehen, um haben ein Zeiger namens "next" , der auf die nächste Knoten in der Linkliste. Und dann haben Sie, dass Schluss nur um wieder wiederholenden Knoten so Der Compiler weiß, OK das ist das Ende meiner struct. Und so auf diese Weise können wir Art der Schaffung eines niedlichen kleinen Array Art der Sache mit einem Wert und mit einem Zeiger. Und Sie können sie alle zu verbinden zusammen mit diesen Zeigern. So dass sie alle Art sein in einer Kette aneinander. Cool. Können Sie hören, dass ein bisschen besser? ZIELGRUPPE: Ja. PROFESSOR: Alles klar. So ist die Art und Weise, wie ihr Jungs sehen können, eine typische Link-Liste ist so strukturiert, wird Ihnen einen Vorsprung haben. Sie haben die Hauptwert, der nicht von jeder anderen Zeiger gezeigt. Aber es geht um zu zeigen, oder Verweis, ein anderer Knoten. Der Knoten nach wird sich der Referenz Knoten danach, und so weiter und so fort bis Sie schließlich getroffen das Ende der Linkliste. Und Sie werden nicht einen Zeiger haben dort. Und so denken wie an einer Kette oder sogar wenn einer von euch Jungs gemacht, ich weiß es nicht, wie mit Fruit Loops als du klein warst. Sie würden sie aneinanderreihen und tragen Sie sie um den Hals. Denke, es ist genau dasselbe. Sie haben diese kleinen Dinge, die Sie können aneinander, dass Punkt zu einem danach, auf die nacheinander , und so weiter und so fort bis Sie eine Kette einer Datenstruktur, dass Sie verwenden können, wie Sie wollen. So ist die Art und Weise, dass diese würden wir typischerweise einfügen oder löschen jeder Knoten über einen Link Liste ist sehr unterschiedlich Je nachdem, wo dieser Knoten. So, zum Beispiel, weil Zeiger sind immer deutete auf einen bestimmten Wert, wenn Sie Löschen oder Einfügen eines Knotens, Sie sicherstellen, dass der Zeiger möchten ist alles deutete auf die richtigen Dinge. Also, wenn Sie wollen möglicherweise einfügen ein neuer Knoten mit dem Wert eines in einem sortierten Link Liste, wissen wir alle hier, von dem Bild, das los ist gehen zwischen Kopf und zwei, oder? Weil man passt genau dort. Aber die Art, wie wir das tun würde ist durch erste Dereferenzierung des Zeigers von Kopf und Senden, dass zu eins. Aber wir in ein Problem, kommen hierher. Kann jemand sehen, was das Problem ist, wenn wir zum ersten dereferenzieren der Zeiger vom Kopf bis zu einem? Welches Problem könnten wir in, wenn wir versuchen laufen um dies an der Vorderseite der unser Angebot hinzufügen? ZIELGRUPPE: [unverständlich] PROFESSOR: Genau. Hier haben wir also einen Zeiger, der war einmal zeigt vom Kopf bis zu zwei. Aber wenn Sie loswerden, dass Zeiger, es zeigen Ihnen, eine, wir haben jetzt keine Ahnung, wohin sie gehen, um zwei zu finden. Denn wie ich schon sagte, du musst ein riesigen Teil des Speichers in Ihrem Computer. Alle diese Knoten könnten zufällig verteilt sein an jedem Ort in Ihrem Computer. Und Sie nicht wissen, wie über die Suche nach, dass zu gehen. Und so müssen Sie Zeiger haben zeigt an alle Knoten am Ende. Oder, wenn Sie versehentlich Dereferenzierung eines ohne vorher Zuordnung ein Wert zuerst, du bist gerade dabei, zu verlieren alles danach. Also, was wir zu gehen zu tun ist, müssen Sie zunächst würde wollen, um einen Zeiger zu erstellen auf der Knoten, die Sie einfügen möchten. Verweisen Sie auf, wo Sie möchte es zum Einfügen, und dann danach können konnte den Kopf zurück, um einen Punkt. Heißt das sinnvoll sein, alle hier? Groß. Betrachten Sie es als wie eine Kette. Wenn Sie eine Kette hinzu, es ist eine Art intuitive wie Sie möchten, dass zum Einfügen gehen. OK, damit ist eigentlich viel kürzer als ich dachte, es wäre, ein Fünf-Minuten spiel auf Linklisten. Nur damit Sie Jungs haben die Grundidee, was das ist. Hier haben wir die Tagesordnung für Quiz-Null. Lassen Sie sich diese einschüchtern. Ich weiß, es gibt eine Menge von Informationen. Es sieht sehr beängstigend. Es ist auch eine Menge, ich denke, CSC Art von Begriffen. Dinge wie hexadezimale Zeichenfolgen, Zeiger und dynamische Speicherzuordnungen sind sehr beängstigend klingende Begriffe. Aber wir werden, sie zu brechen unten, machen Sie einige Übungsaufgaben so dass euch alle sind bereit für diesen Test. Wie von euch viele haben bereits begonnen zu studieren? OK, Sie wollen Jungs wahrscheinlich Zum Anfang Erste Schritte auf, dass, weil das Quiz ist morgen. Oder Donnerstag für einige von euch. Ja, also werden wir zu gehen, über einige der Praxis Probleme. Wenn euch alle wollen zu nehmen aus einem Blatt Papier, einen Bleistift. Wir werden nur verbringen den überwiegende Mehrheit der heutigen Abschnitt gehen über einige der, dass, so dass Sie Jungs haben eine Idee von dem, was auf dem Quiz zu erwarten. OK. Ein paar logistische Details als auch, für alle, die sich nicht auf diesen Link dort gewesen, wenn Sie gehen, um cs50.yale.edu, auf der Vorderseite Diese Seite gibt es einen Link das sagt "Über Quiz Null." Link führt Sie dort. Wenn Sie noch nicht gelesen haben, lesen Sie es bitte. Denn es sagt Ihnen wirklich wichtig Informationen zum Quiz. Ich werde diesen Eintrag von herausziehen dass, nur weil, körperlich, wenn euch die nicht wissen, wo zu gehen, werden wir Probleme haben. Und so, wenn Ihre letzten in Bezug mit A N ist, gehen Sie zu dem Gesetz Schulaula. Und wenn Ihre letzten beginnt mit P bis Z, gehen Sie zu Davies Auditorium. Und dies gilt nur für Menschen in der Mittwoch-Sektion. Wenn Sie die Einnahme des Quiz sind Donnerstag, den SSS 114 gehen Sie wo Ihr Vortrag in der Regel ist. ZIELGRUPPE: [unverständlich] PROFESSOR: O bis Z, Sie gehen um zum Davies Hörsaal zu gehen. Ich werde das zu ändern, oder? Oh, ja, man muss nur automatisch scheitern. Oh ja, dass Sie Christa. Ja, mein schlechtes. Yep, O bis Z, Sie gehen Zu Davies Auditorim gehen. Ich werde dieses Problem beheben, wenn ich hochladen. Ja. Und dann auch etwas, wichtig zu beachten ist, dass Mittwoch, wenn Sie offiziell sind in der Mittwoch-Abschnitt eingeschrieben, Sie müssen Ihre Quiz am Mittwoch. Und wenn Sie am Donnerstag eingeschrieben sind, Sie müssen Ihre Quiz Donnerstag statt. Und es ist während der Unterrichtszeit. Wo, ich denke, es ist wie 1:00 bis 02.15 Uhr am Mittwoch und von 2.30 bis 03.45 Uhr an Donnerstagen. Wenn Sie eine unversöhnliche Konflikte, Deans Ausreden sind die einzige Sache, Leider können wir zu nehmen. Da mussten wir ein überwiegende Mehrheit der Anfragen um von Mittwoch auf Donnerstag zu wechseln. Die wir nicht, es sei denn zu ehren wir fordern Sie eine Dekans. OK. Also, bevor wir auf ein begonnen paar der Praxis Probleme, Ich werde einfach zu übergehen Andys hilfreiche Tipps für den Erfolg. Ihr Jungs, wenn Sie studieren, die Sie wirklich wollen üben das Schreiben von Code mit der Hand. Das erste Mal, dass ich nahm einen CS-Quiz, hatte ich nicht Praxis Schreiben von Code von Hand vor und es war extrem schockierend, wie schwierig es war. Wenn euch nicht in das zu bekommen Gewohnheit Eingabe alles, kommt es ganz natürlich sein in der Lage, automatisch vervollständigt haben Klammern und Semikolons gibt. Wenn Sie schreiben es heraus von Hand, manchmal ist es sehr, sehr einfach, ein Semikolon vergessen haben, oder vergessen, eine Klammer zu schließen, oder vergessen, einen Doppelpunkt zu schließen, oder etwas ähnliches. Also, wenn Sie Code schreiben, mit der Hand, es ist ein ganz anderes Gefühl. So euch, wenn Sie gerade arbeiten einige der Praxis Probleme, es wäre gut, wirklich heute praktizieren. Oder morgen, ich nehme an, wenn Sie sie das Quiz am Donnerstag. Zweitens haben wir die letzte, wie, 8 Jahre im Wert von Praxis Quiz online. Die diesjährige Quiz wird wahrscheinlich sehr, sehr ähnlich zu allen von ihnen. Sie sind alle sehr ähnlich. Sie Art von in der get Stil der Art der Fragen, dass wir fragen, die Art der Funktionen, die wir werden es schreiben, in, et cetera, et cetera. So nehmen Sie die Praxis Quiz, vor allem unter Zeitdruck. 75 Minuten zu tun, das Quiz ist nicht viel Zeit in Anspruch. Es ist sehr, sehr lange. Und so ihr Jungs wirklich wollen um sicherzustellen, dass Sie Jungs sind in der Gewohnheit des Schreibens Code von Hand schnell. Weil Sie nicht wollen, dass die erste Zeit, um ein Quiz dieser Länge zu sehen auf Ihrem Quiz. You guys sicherstellen möchten, wirklich dass Sie vorher üben. Viertens, um die überprüfen möchten Sie Vorlesung und Abschnitt gleitet. Sie verfügen nicht über die Dinge zu merken. Eigentlich ist jeder darf ein ein weißes Blatt Papier Notizen, vorne und hinten. You guys kann schreiben oder zu schreiben. Wenn Sie feststellen, dass Sie merken alles, legte sie auf diesem Blatt. Ich garantiere Ihnen, Sie wollen nicht, um in der Mitte dieses Quiz stecken Wesen wie, oh yeah, was ist das Laufzeit dieser Art gegenüber dieser Art. Setzen Sie ihn einfach nach unten und kopieren Sie sie direkt von Ihrem Notizblatt. Dann sind Sie eigentlich nur verwenden, können Sie Ihre Gehirn, um über die Probleme zu denken anstatt Fakten zu erinnern. Und so wirklich nutzen einer Nische Details dass Sie denken, Sie speichern müssen, plop es auf den Berichtsbogen. OK, alle mögliche Fragen logistisch in Bezug auf die Quiz- bevor wir einige Quiz-Aufgaben zu üben? Ja? Publikum: Ich habe nicht die Chance hatten bei dem Quiz aussehen [unverständlich] aber ist es sein wird Anwendung vor allem, oder wird auch sein wird, wie, Wissensfragen? PROFESSOR: Es ist eine Menge. Also, die Art und Weise, dass ich würde das Quiz beschrieben ist-- I zusammengestellt einige Übungsaufgaben dass ich zog aus allen Quiz. Aber du wirst sehen, dass es zwei Haupt Arten von Fragen werden wir Sie fragen. Eines ist ein sehr niedriges Niveau Detail Zeug. Registrieren Sie ein kleines Stück Code geben und zu sagen, gibt es hier ein Fehler? Was würden Sie werden den Druck hier? Was wird dieser Code zu produzieren, und so weiter. So sehr niedrigen Niveau Informationen befinden. Und auf der anderen Seite, wir haben sehr hohe wissensbasierte Fragen. Können Sie erklären, was die Unterschied zwischen einer binären Suche und eine lineare Suche ist? Warum sollten wir wollen verwenden einen über den anderen? Vielleicht, was ist GDB? Warum wollen wir den GDB benutzen? Höhere Ebene, grund Verständnis Fragen. So finden Sie eine Mischung aus zu sehen die zwei von ihnen auf Ihrem Quiz. Sonst noch etwas, bevor wir Kopf gerade in sie? OK. ZIELGRUPPE: One more. PROFESSOR: Oh, noch. Es tut uns leid. Publikum: Ja, es ist alles in Ordnung. Sie sagen also 75 Minuten ist zu kurz ist, wie es ist unwahrscheinlich, dass wir fertig? Oder, wie, 75 Minuten Genau so viel Zeit wie wir es brauchen, wenn wir entsprechend vorbereitet? PROFESSOR: OK, so dass die Quiz ist eine Herausforderung. Es ist definitiv eine Herausforderung. Sie werden sich auf die Zeit knapp. Du bist wahrscheinlich zu schlagen, wie 10, 15 Minuten, um zu gehen, und zu sein wie sie, scheiße. Ich habe so viel zu tun. Und das ist völlig in Ordnung. Jeder wird die gleiche Weise fühlen. Seien Sie sehr bewusst, Wie viel Zeit hast du. Und damit ist, warum ich sage euch: Jungs die Praxis Quiz. Weil sie wirklich gibt ein großes Gefühl von dem, was das Quiz wird wohl sein wird. Also, wenn Sie sich als in der Lage, die Praxis beendet Quiz in einer guten Menge an Zeit, können Sie sich auch im Schneckentempo, dann werden Sie ein Problem nicht am Mittwoch oder Donnerstag. Cool. Also, wenn jeder wants-- Ich denke, haben die meisten Menschen Papierbögen out bereits. Ich werde im Wesentlichen nur geben Ihnen Beispiele von Fragen, geben euch, wie ein einige Minuten, um sie zu tun. Und wir gehen über als Klasse was die Antworten darauf sind. Also das ist ein sehr typisches Anfang Frage wir werden Sie bitten, nur das Umwandeln Zahlen zwischen verschiedenen Basen. Binary, wie euch kann Rückruf ist Basis zwei. Dezimal ist Basis 10, oder das, was wir wie die Menschen in der Regel zu interpretieren. Hexadezimal ist Basis 16, die Null ist durch neun sowie A bis F Es gibt also vier Zahlen bin ich fragt euch, hier zu konvertieren. Ich gebe Sie, drei bis vier Minuten durch, wie denken, würden wir über die Lösung dieses zu gehen. ZIELGRUPPE: Dürfen wir Taschenrechner? PROFESSOR: Sie werden nicht müssen Rechner, yeah. Ich denke, Grund Außerdem denke ich, ist alle ihr Jungs werden aufgefordert, zu tun. Und nur damit ich irgendwie einen Sinn der, wenn alle fertig ist, sehen Sie, Welle, weiß ich nicht, lächeln, glücklich aus, wenn Sie fertig sind. Ja. Vielleicht noch ein paar Minuten. OK, lass uns bringen sie in. Ich bin absichtlich werde geben euch weniger Zeit als Sie wahrscheinlich benötigen, um tun einige dieser Probleme, einfach deshalb, weil ich will, um sicherzustellen, dass wir bekommen durch ein Bündel von Problemen. Also keine Sorgen, wenn Sie nicht eine Chance haben, zu beenden. Völlig in Ordnung, solange Sie eine Idee, wie um dies zu realisieren. Lassen Sie uns also gehen Sie voran und tun Sie der Erste. Also zuerst, hat jemand will mir sagen, in binärer, was zu tun jeder dieser Ziffern stellen hinsichtlich ihrer Werte? Ja? ZIELGRUPPE: Zwei um die Strom Null, zwei zu eins. PROFESSOR: Genau. Also. Richtig, also in der Regel wenn wir in der Basis 10 sind Alle diese stellen sind, wie, 10 an der Basis von Null, oder? Das ist Ihre eigenen Platz. Alle Ihren Platz 10 ist ist 10 hoch von einem. Sie 100 Platz 10 zu der Potenz von zwei. Was auch immer Sie in Basis wird sind mit der genau dasselbe zu tun, nur mit einer anderen Basis. So binär, ist alles, was Basis zwei. Du wirst all das zu konvertieren Ziffern in zwei, um was auch immer Macht dieser Ziffer. Und so in diesem Sinne haben wir kann eine einfachere Möglichkeit haben in der Lage zu addieren oder Zusammenfassend alle Zahlen in Ordnung in Basis 10 konvertieren. So Will jemand mir sagen, was das Antwort auf die erste in den Basis-Zehn? ZIELGRUPPE: Zwei, [unverständlich] PROFESSOR: Ja. ZIELGRUPPE: 42. PROFESSOR: 42, dort gehen Sie. So ist die Art, wie wir diese Antwort bekam, war von Dabei zwei ersten, die zwei ist. Plus zwei der dritte, der acht ist. Plus zwei auf die fünfte, die ist das, was übrig bleibt. Sie summieren sie auf und es ist 42. Ist jemand verwirrt darüber, wie wir das verstanden? So Grund Darüber, wie Ich sagte, Sie sollten in Ordnung sein. Wenn nicht, gut, können wir das auch zu praktizieren. Aber das ist in Ordnung. Cool. Will jemand mir die geben Antwort auf die zweite man als gut? 50? Gut. Jeder verwirrt darüber, wie wir haben, dass entweder? Cool, ich werde das haben Antworten auf der nächsten Folie. Also keine Sorgen, wenn Sie müssen Sie es notieren. OK, also hexadezimal ist ein bisschen schwieriger. aber ich werde euch zeigen, eine Abkürzung für, wie es geht. So hexadezimal, wie Sie denken Sie daran, alle es ist 16. Und weil wir als Menschen nicht wirklich haben 16 Zahlen zu vertreten, dass, Wir gehen von null bis neun, die unsere erste 10 Werte, und dann tun wir A bis F, Welches sind die nächsten sechs Werte. Und so ist die einfachste Art, aus gehen beliebige binäre Zahl zu hexadezimale ist, sie bis in zwei Hälften brechen. Und so jede binäre Zahl wir geben müssen Sie wahrscheinlich acht Ziffern. Sie können einfach zu brechen sie in der Mitte. So ist der erste one-- ein ein, eine eins, eins, eins, eins ein. Art denken, es auf, Sie wissen, ziehen ein Schrägstrich oder ein Komma dazwischen. Und Sie nur umwandeln kann direkt unabhängig dies ist auf die erste Anzahl der hexadezimal, und was hier ist, das zweite von hexadezimal. Also denken Sie daran gängigen Notationen, was hexadezimale Werte mit zu beginnen? ZIELGRUPPE: Null. PROFESSOR: 0x. Damit wir wissen, dass jedes Mal, bitten wir Sie, um eine beliebige Anzahl in hexadezimal konvertieren, oder jedes Mal, wenn Sie irgendeine sehen Nummer, die mit 0X beginnt, Sie wissen, dass es ein hexadezimaler Wert ist. Und dann wirst du dazu aufgefordert werden, sind bestimmen, was diese beiden Ziffern sind. Und die Art, wie Sie das tun, tallying dass die Hälfte und Auszählung up, dass die Hälfte. So dass in diesem Beispiel, was wäre eins, eins, eins, eins zu sein? Welchen Wert wäre das? Das wäre F sein, oder? Das würde 15 sein. So würde das F. Eine zu sein, eins, eins, eins ist auch hier F. Also eins, eins, eins, eins, eins, eins, eins, einen hexadezimal, allem ist es ist 0xFF. Da dieser die Hälfte vertreten F, den Wert 15, und das Halb vertreten F, der Wert 15. Denn denken Sie daran, wir sind Zählen von null bis neun. A ist wie 10, B ist wie 11, F 15. Macht das Sinn für jedermann, wie wir von binären muss hexadezimal? Publikum: Und so, wie Sie auf uns 15 von der einen, eins, eins, eins? PROFESSOR: Ja, das ist binär, nicht wahr? Stellen Sie sich dies nur eine binäre Zahl. So können Sie zwei, die haben nullten, was man ist. ZIELGRUPPE: Oh, OK. So dass Sie nur insgesamt it out. PROFESSOR: Ja, und dann Sie gerade total, dass aus. Das ist alles, es ist. ZIELGRUPPE: OK. PROFESSOR: OK. Publikum: So können Sie aus binären gehen auf Hexadezimal Dezimal? PROFESSOR: Das ist das einfachste Weg, dies zu tun, ja. Du wirst doch nicht um, weil dezimal Dezimal nur über Null bis Neun. Wir sind nur Art von Aufteilen diese in zwei. ZIELGRUPPE: [unverständlich] mit Dezimalstelle zu finden was es passt bis zu hexadezimal. PROFESSOR: Ich meine, du bist tallying mit Grundrechenarten. ZIELGRUPPE: Ja. PROFESSOR: Ja, ziemlich viel. Es ist ein wenig verwirrend. Aber genau wissen, dass Sie kann aufzuteilen unabhängig Dieser Wert wird in nur Hälften. Schauen Sie, was ist das in binärer? Welche Zahl ist das? Es wird etwas von Null bis F. Hier wird auch sein wird etwas von Null bis F. Und dann Sie können einfach die beiden recht. ZIELGRUPPE: OK. PROFESSOR: Yep. OK. So euch zu wollen versuchen Sie die nächste man dann? Null, eins, null eins, eins, null, eine Null. Ich werde euch wie 30 Sekunden zu geben, da Sie wahrscheinlich nicht wissen, der Trick, wie man diese vorher zu tun. OK, jeder will diesen einen Schuss zu bekommen? 0x5A. PROFESSOR: 0x5A. 5a. Gut. Also das hier würde be-- Sie wollen um uns zu sagen, wie Sie das verstanden? Erstens: Wie kamen Sie auf die fünf? ZIELGRUPPE: Weil Null, eins, null, eins ist fünf. PROFESSOR: Hat jeder verstehen, warum null, eins, null, eins ist fünf? Sie haben einen hier. Sie haben nichts in zwei auf den ersten. In zwei zu der zweiten Sie Konto haben, das vier ist. So können Sie die vier plus hinzufügen derjenige, haben Sie fünf. Jeder gut? OK. Und dann, was das sein und warum? Welche Nummer hat A entsprechen? ZIELGRUPPE: 10. PROFESSOR: Und was dies in der Basis zwei? ZIELGRUPPE: [unverständlich] PROFESSOR: Genau. Also das zweite Wert wäre hier 0x5A sein. Jeder gut, wie man konvertieren? Es ist viel einfacher, als Sie denken, es ist. Ich will einfach nur, um sicherzustellen, Sie hilfreiche Tipps, wissen, und Tricks, wie Sie das tun. Publikum: Warum können Sie einfach gespalten es in der Mitte wie das? Genau wie, OK, ich werde nur zu sein kümmern uns um diese ersten [unverständlich]? PROFESSOR: Denn das ist eigentlich das Weg Hexadezimalwerte sind vertreten. 0X, die eigentlich bedeutet, nichts anderes, als sage Ihnen, dass es eine Hexadezimalzahl. Und das stellt immer die ersten vier Ziffern. Und das stellt immer die letzten vier Ziffern. Und so sind diese beiden Stellen nur entsprechen unterschiedlichen Bits. Publikum: So werden wir always-- PROFESSOR: Du bist immer werde acht Bits Wert zu erhalten. Publikum: Ist das nur wie ein Ding hier, oder dass eine Sache der ganzen? PROFESSOR: Das ist nur ein was in Computern, yep. ZIELGRUPPE: OK. Eindrucksvoll. PROFESSOR: Auch so in diesem Beispiel wir von binären konvertiert zu Dezimal, und von binär in hexadezimal. Sie Jungs wollen auch sicherstellen, dass Sie Praxis gehen die andere Weise herum. Also, wenn ich Ihnen 0xFF, könnten Sie zu ziehen, dass in der Zweiheit, nicht wahr? Sie konvertiert F in binäre, das ist eins, eins, eins, eins, F umzuwandeln, um binäre, die ist eines, eins, eins, eins. So können wir Sie bitten, zu tun umgekehrt. So dezimal binär oder hexadezimal binär. Also Sie machen wollen dass Sie wissen, in beide Richtungen. Wir werden wahrscheinlich fragen Sie ein Kombination der beiden. Ja, eine Frage haben Sie? Ich kann see-- du gut bist? ZIELGRUPPE: Ja. PROFESSOR: OK. Bin ich gut, diese zu löschen? Groß. In Ordnung, so Antworten sind hier, wenn jemand ist neugierig, später und verwirrt. OK. ZIELGRUPPE: Spielt es eine Rolle, wenn wir unsere Briefe in der Hauptstadt oder Kleinbuchstaben? PROFESSOR: Sie tut, weil hexadezimal, durch Konvention, alle Zeichen sind Großbuchstaben. So A bis F sind gehen Groß sein. Wenn Sie einen Kleinbuchstaben a, weiß ich nicht, wenn wir unbedingt kennzeichnen wäre es falsch. Aber theoretisch, das ist technisch nicht wie du sollst es haben. So sollten sie alle Großbuchstaben geschrieben werden. Ja, gute Frage. OK. Zur zweiten Frage. Betrachten Sie dieses schöne Programm finden Sie hier. Ich werde die Frage zu stellen, Ich komme wieder diese. Also, erstens, was innerhalb von Standard- io.h das ist von Interesse für das Programm? Zweitens, was nichtig macht bedeuten im Einklang drei? Und drittens, was bedeutet der Rückkehr von Null Haupt, als Reihensechs, in der Regel bedeuten? Wenn Sie Jungs wollen diejenigen zu schreiben nach unten, da ich wieder wechseln auf den Objektträger nur so können Sie sehen, Code. Dies ist ein Beispiel, wie, vielleicht ein höhere Frage, wo wir Sie bitten, was die Dinge bedeuten, in einem Programm. Jeder gut für mich, gehen Sie zurück zu der Folie? OK COOL. Also werde ich euch gefällt vielleicht drei geben Minuten, um an diesem einen ganz schnell zu suchen. OK, also das hier ist wie ziemlich einfach, konzeptionell. Will jemand mir sagen, was zunächst innerhalb von Hash einschließlich unsere Standard io.h Bibliotheksdatei? Warum brauchen wir diese Bibliothek für dieses Programm enthalten? Was hier brauchen wir sie für? Ja? ZIELGRUPPE: Ist, dass, wenn Ihnen die printf setzen? PROFESSOR: Genau. So printf, jedes Mal, wenn Sie nehmen eine Eingabe von dem Benutzer und Print etwas auf den Bildschirm, das ist, die Standard-Eingabe, Ausgabe-Bibliothek. Denken Sie daran, dass der Eingang way--, ausgegeben. Muss ich eine Ausgabe? Ja. Also ich weiß, dass ich immer zu brauchen die standardize i.o Bibliothek. So ist die Funktion printf durch die wir benötigen, um Zugriff und hashtag gehören die Standard i.o Bibliothek. OK. Zweitens ist es was nichtig zu bedeuten? Wir haben die int main (void), was bedeutet nichtig hier meine, hier auf Linie drei? Ja, in den Rücken. ZIELGRUPPE: [unverständlich] PROFESSOR: Genau. Also denken Sie daran, die wir gelernt haben beginnend mit unseren pset dass Sie tatsächlich geben Befehlszeile Argumente, die Ihr Programm, dass Sie Hauptfunktion, nimmt, wie Sie, der Benutzer, nennen. Wenn wir Leere, bedeutet, dass, dass Sie könnte einfach das Programm direkt ausführen ohne Befehlszeilenargumente. Jeder klar auf, dass? OK. Und schließlich, warum wir die Mühe machen diese Rückkehr Null Sache hier? Warum haben wir sogar eine int main? Warum können wir nicht einfach nur void main nichtig? Ja? ZIELGRUPPE: Just so dass wir achten Sie darauf, dass das Programm erfolgreich verlassen, wie um, wenn sie nummeriert wurde gegenüber. Und wir würden wissen, dass das ist, eine andere Art von Fehler. PROFESSOR: Ja, genau. Dies ist nur eine sehr konventionelle Sache, die wir tun, das ist nur am Ende des Ihr Programm, nur um sicherzugehen dass Ihre Hauptfunktion korrekt läuft, wir wollen immer Rück Null zu tun. Auch wenn wir unbedingt nicht, dass überall gedruckt. Denn als Programmierer, wissen Sie, wenn Du verschiedene Zeilen Code haben und Sie nicht wissen, wo diese sind falsch läuft, und wenn ein Fehler passiert, du willst stellen Sie sicher, dass Sie diese Fehlermeldung erhalten. Und so in der Regel, wenn etwas schief falschen wir eine Rendite von einem müssen nur um sicherzustellen, dass wir wissen, dass es ist. Also, wenn Sie eine Rückkehr zu sehen Null, die in der Regel bedeutet, dass Ihr Programm ist erfolgreich ausgeführt. Gut? Cool. OK, zweite Programm hier. Bedenken Sie, dass. Und wenn euch sehen, ein schweben, kann wahrscheinlich euch haben eine gute Idee von dem, was Ich bin, Ihnen zu fragen. So, wenn dieses Programm führt, wie Sie sehen können, Ich bin über die Vereinbarkeit eines Schwimmers in meine Hauptaufgabe. Ich nannte sie "zu beantworten," und ich bin Einstellung dass gleich eins geteilt durch 10. Ich auszudrucken, um eine Dezimalstelle, dass float. Und dann werde ich zurückkehren Null. Also, wenn die Ausführung des Programms, denke, jetzt zurück zu gierig, Dieses Programm druckt 0.0. Wie wir alle wissen, hoffentlich wir alle weiß, eines geteilt durch 10 ist kein 0.00, es ist 0,1. Aber zu erklären, warum dieses Programm denkt, dass 1 geteilt durch 10 Drucke bis 0,1 andere 0,1? Ich werde euch vielleicht wie 30 geben Sekunden, um mal eben schnell darüber nachdenken und ich werde wieder zu dem Programm zu gehen. OK. Wer will ihm eine Chance zu geben? In drei Sätzen oder weniger, denn in der Regel sind wir gehen, um alle Antworten zu beschränken In den drei Sätzen oder weniger so dass Sie nicht nur erbrechen müssen zufällige Dinge auf Ihren Quiz. Ja, machen Sie eine Aufnahme. ZIELGRUPPE: Also ich denke, es gibt diese Ding namens, wie, [unverständlich] So könnte es sein, zum Beispiel, Es könnte sein, wie, 0,09, dass dort, wo Sie den ersten ausdrucken stellige, wäre es auf 0,0 sein? PROFESSOR: Schließen, nicht ganz. Christa? Publikum: Du Teilung ein und 10, und sie sind beide Zahlen. Und so ist die Art und Weise, dass es geht zu speichern ist als Integer. Und so ist die nächste ganze Zahl würde 0.0 sein. Und damit ist 0,1. PROFESSOR: Ja, das ist wirklich gut. Das ist die richtige Antwort. Das ist also ein sehr verwirrend Konzept für viele Kinder. Und ich sicherstellen, dass wirklich wollen dies ist in jedermanns Kopf verstärkt. Also, was wir als schwimm Punkt Ungenauigkeit, wo der Grund, warum viele Ihrer Programme in gierigen zunächst nicht funktionieren, weil Sie vergaßen, Ihre variable gegossen. Also, was, sagte Christa war ganz richtig. Ein Schwimmer ist von Natur aus ungenau. Weil in einem Computer, nicht wahr, wir haben eine endliche Menge von Speicherbits wir verwenden, um Zahlen darzustellen. So, zum Beispiel in diesem CS50 ID ist-- Ich denke, es ist ein 64-Bit-Computer. Ein Schwimmer kann nur dargestellt werden durch eine endliche Menge dieser Bits. Und so 0,1 mit unendlichen Nullen, dass war 0,1 ist, nicht wahr? Aber wir können nicht wirklich speichern diese Zahl in unserem Computer. Wir haben einfach nicht genügend Speicher, um dies zu tun. Und so ist die nächste Angleichung der was im Speicher gespeichert ist eigentlich so etwas wie 0.000 etwas, etwas, etwas, etwas. Die, sobald Sie abschneiden es, rundet auf 0,0. Und so dieses Beispiel ist nur eines dass zeigt viele Fragen wir haben, wenn wir versucht, falsch Mathematik zu tun ohne Casting als eine andere Ganzzahl. Also einfach vorsichtig sein, dass dies geschieht zu sein. Auf Quiz, wenn wir geben Ihnen eine Codeblock und es ist wie, was druckt am Ende? Und wenn es einige zufällige Wert, den Sie Männer sollten wissen, warum das passiert. Ja? ZIELGRUPPE: Truncate wird loszuwerden alles, was nach einem bestimmten Punkt? [UNVERSTÄNDLICH] PROFESSOR: Ja, also eigentlich dies ist ein wirklich schlechtes Beispiel, denn was auch immer tatsächlich 0,100 würden bis zu 0,1 abschneiden. Aber wenn Sie waren zu es-- laufen Ich weiß nicht erinnern sie sich, weil sie im letzten Jahr lief sie auf ein anderes Programm. Sie liefen sie in der so genannten das CS50-Appliance, die unterscheidet sich von der Identifikation. Das war ein 32-Bit-System, denke ich. Und so gab es verschiedene Zahlen. Aber im Grunde, weiß nur, dass das gesamte Konzept der Kürzung und wie er gerade schneidet Sachen weg. Und so, wenn es rounds-- ZIELGRUPPE: Ohne Rundung. PROFESSOR: Genau. Ja. Cool. Hallo, in den Rücken. Wir gehen nur über einige Quiz-Fragen zu beantworten. Gut. So betrachten Sie hier ein anderes Programm. Ich werde euch zu geben, ein paar Minuten, um darüber zu lesen. Dies ist etwas, das für eine sehr war vor kurzem, dass ich denke, blies eine Menge von euch Jungs, die Geister. Aber wir sprechen durch das wieder gerade sicherstellen, dass Sie verstehen Sie sie vollständig. OK. OK. Wer mehr Zeit brauchen, um lesen Sie diese Codes? OK. So scheint es mir, dass in diesem Programm bin ich Erstellen von zwei Strings mit Hilfe GetString. Man nannte s und eine namens t. Und wenn sie gleich sind gleich zueinander sind, es sollte Sie drucken " Geben Sie dasselbe. " Aber elsewise, wäre es zu drucken, "Du typisierte verschiedene Dinge ", nicht wahr? Scheint sehr, sehr einfach. Aber, aber, wenn ich tatsächlich versuchen, dieses Programm zu schreiben, es scheint, dass auch dann, wenn I Eingangs genau die gleichen Saiten, es immer noch druckt: "Sie typisierte verschiedene Dinge! " Will jemand ein nehmen Schuss auf, warum dieses Programm immer reagiert, dass die Eingänge unterschiedlich sind, sogar wenn die Worte selbst sind alle gleich? Also, wenn ich David Liebe input-- um ein Beispiel wie Mama benutzen, oder? Kleinbuchstaben M-O-M für S, T gleich Kleinbuchstaben M-O-M. Wenn ich lief dies durch dass Code, warum sollte es ausdrucken "Sie verschiedene Dinge eingegeben?" Wer mehr braucht Zeit, um darüber nachzudenken? OK, ich denke, wir sind gut. Ja? ZIELGRUPPE: OK, also ist es etwas über wo es im Speicher abgelegt, nicht wahr? PROFESSOR: Yep. ZIELGRUPPE: Wo es heißt, wenn diese String s an Speicher gespeichert spot-- Ich erfinden this-- Null ist. PROFESSOR: Sicher. Publikum: Und String t wird bei Speicher Ort gespeichert sind, wie, 167, und dann Null ist nicht gleich 167. PROFESSOR: Genau. OK, so erinnern diese unglaubliche Offenbarung für euch haben wir erklärt, in der vergangenen Woche, dass Saiten nicht wirklich existieren? Wenn wir etwas schaffen genannt String sind wir in der Realität Erstellen von etwas namens char Sterne. Die alle ist es ein Zeiger auf eine Schnur oder ein Array von Zeichen. Und so dass in diesem Beispiel, wenn I waren die Eingabe M-O-M die Art und Weise dass mein Computer würde zu speichern ist innerhalb des Speichers umgekehrten Schrägstrich Null, oder? Diese vier Zeichen, Zeichen, irgendwo gespeichert werden. Und dann diese vier Zeichen Backslash Null, werden irgendwo anders gespeichert, nicht wahr? Ich habe keine Ahnung, wo die Adressen sind, sie sind irgendwo in meinem Computer. Aber ich weiß nicht genau, wo sie sind. Wenn ich eine Zeichenfolge s, all das ist wirklich ist ein Zeiger auf die Start dieser Zeichenfolge. Und wenn ich dieses t Wert zu schaffen, all das ist ein Zeiger auf sich hier anmelden. Und so, wenn Sie versuchen, gleichzusetzen und überprüfen um zu sehen, wenn s equals gleich T ist, der Computer ist eigentlich nur der Rückkehr in Sie die Adresse dieses m und die Adresse dieser m. Und weil sie zwei separate Teile von Daten , die in zwei verschiedenen gespeicherten Adressen in Ihrem Computer, Ihr Computer wird nie erkennen sie als gleich. Will jemand geben einen Schuss auf das, was wir zu tun haben würde, wenn wir korrigieren wollte dies und haben eine richtige laufende Programm statt? Denken Sie, dass für ein paar Sekunden. Was brauchen wir, um zu ändern, dieses Porgramm Funktionsweise die Art, wie wir sie zu funktionieren soll? Ja, möchte einen Stich an es dauern? ZIELGRUPPE: Können wir versuchen, das dereferenzieren Zeiger und überprüfen Sie durch das Array? PROFESSOR: Das ist eine Möglichkeit, es zu tun. Also, was ist Ihr Name? Es tut mir leid, erinnern mich. Zee: Zee. PROFESSOR: Ja, so was Zee vorgeschlagen würde es absolut zu arbeiten. Recht? Wir könnten den Zeiger dereferenzieren und tatsächlich gehen und Zugang Die physikalischen Daten in der hier. Und wir vergleichen können der gesamte Bildschirm. Wir können sagen, OK, Zeiger, gib mir, was hier drin ist. Es wäre eine m zurück. Und ich würde sagen, zeiger, gib mir, was hier drin ist. Liefert ein m. Geben die Spiel? Ja. Dann gehen wir weiter. Wir halten die Überprüfung der gesamten zwei Streicher ganzen Weg bis zum Ende und sehen, ob diejenigen, gleich sind, Wenn alle Werte gleich sind. Und wenn alle Werte gleich sind, dann wissen wir, die Saiten sind wahr. Absolut, das ist, wie wir es tun? Hat jemand über irgendetwas davon verwirrt? Das gesamte Konzept der, wie Saiten sind wirklich nur Hinweise, und wie sie nicht wirklich existieren? Und warum wir Fehler erhalten die Art, wie wir es bekommen? Weil ich garantiere euch, Zeiger und String-Zuweisung und Speicher gehen zu kommen. Ja? ZIELGRUPPE: [unverständlich] dereferenzieren es, setzt man einen Stern [unverständlich] PROFESSOR: Richtig. Also, um einen Zeiger mittels derererence um an diese Adresse des Zeigers gehen und erhalten die Daten den Wert gibt. Und die Art und Weise zu tun, die Sterne-Zeiger. Verwechseln Sie nicht, dass. ZIELGRUPPE: [unverständlich]. PROFESSOR: Ja. Publikum: Sie haben also nur schreiben kann wenn Sterne s gleich equals Sterne t. PROFESSOR: Nun, nein. Nein. ZIELGRUPPE: Das ist nicht gut genug, nicht wahr? PROFESSOR: Es ist nicht, weil Sie nur die Überprüfung der ersten Buchstaben. Du bist wahrscheinlich zu brauchen eine Art einer Schleife, durchläuft jedes einzelne Zeichen in beiden Zeichenketten. Ja. Also, wenn Sie nur überprüfen, wollte wenn sie mit der gleichen Sache begann, Sie, wenn, Sterne tun können s gleich star t. Dann wissen Sie, dass sie zumindest mit dem gleichen Zeichen begonnen. Ja? ZIELGRUPPE: Also der Weg Sie, das wäre wie eine for-Schleife oder Zeiger eingebettet? PROFESSOR: Ja. Ziemlich genau einer for-Schleife. Denken Sie daran, David in der Klasse genannt die freie syntaktischer Zucker? Und er diese sehr hatten Verwirrende der Sterne t plus eins, wo es zu integrieren wäre durch und es den Zeiger zu bewegen? Die einfacheren Weg, dies zu tun dies ist nur von t i. So ist es nur ein Array. Die Art und Weise, dass Sie ein für müssten Schleife, die von Null bis i lief, wobei i ist die Länge der string, könnten Sie einfach schreiben, dass zu tun, anstatt die Ganzes Zeiger, eine Referenz Sache. So sind diese Dinge genau Gegenwert in Ihrem Computer. Ihr Jungs wahrscheinlich nicht müssen wissen, dass, aber es ist gut, um nur irgendwie haben auf der Rückseite Ihres Geistes. Genau wissen, dass der Computer erkennt unterschiedliche Codeblöcke als die gleiche Sache. Da es sich nur weit mehr Nutzer freundlich es für uns zu präsentieren, wie es ist eine Abfolge. Es ist nur einfacher. Publikum: So verwenden strlen zu mögen, get-- PROFESSOR: Ja. ZIELGRUPPE: OK. PROFESSOR: Sie könnten strlen verwenden oder, wenn man hatte nicht strlen können Sie einfach tun up bis Sie auf Backslash Null für beide. Entweder funktionieren würde. Ja. Publikum: So ist es zu dereferenzieren jeden einzelnes Zeichen, wenn wir tatsächlich waren Schreiben Sie diesen Code, die wir konnte nur tun, t Klammern i gerne mit dem Stern vor ihm? PROFESSOR: Ja, gleich equals s Halterung i, und dann in Bewegung zu halten i nach unten, bis Sie das Ende getroffen. Ja, das ist, was Sie tun würden. Und ich werde tatsächlich einen nächsten Beispiel wenn wir tatsächlich schreiben strlen, so dass Sie Jungs Art von zu bekommen, um ein wenig zu spielen, um mit ihm. So wird schnell klar, nur auf Speicher, Streicher, Zeiger, Qualität-Adressen? Einige höhere Konzepte, die Sie wird sicher Notwendigkeit, auf die Quiz-weiß Morgen. Gut. Gut. Ja. OK, so eine Sache, die wir uns auch fragen, Sie, wie wir jedes Jahr an einem Quiz, ist, nehme an, dass Sie vergessen haben (die Wir scheinen zu vergessen, die jährlich zu tun) , in der Header-Datei strlen deklariert. Und so müssen wir es uns selbst neu zu schreiben. Hier eine Liste der Richtlinien dass wir Ihnen präsentieren Jungs, wo man davon ausgehen, dass s der String nicht null sein. Sie können davon ausgehen, dass s werden mit einem Backslash Null beendet. Damit Sie wissen, das ist, was es wird mit beenden. Und, zum Beispiel, dass die Länge hallo würde fünf sein. So kann man davon ausgehen, dass hallo fünf, H-E-L-L-O sein. Sie müssen nicht davon ausgehen, dass die backside Null-Konten für die Länge. Das letzte, was hier nicht Sorgen um Integer-Überlauf. Erinnert sich noch jemand Integer-Überlauf, was ist? ZIELGRUPPE: geht über die Länge der [unverständlich]. PROFESSOR: Ja, können Sie erklären, ein bisschen, was bedeutet das? ZIELGRUPPE: Also, ich denke, es geht zurück um das Abschneiden Beispiel früher. Aber wenn Sie nur so viele Zahlen daß jenseits der Anzahl von Bits gehen dass Sie tatsächlich zuweisen dass es nur irgendwie abgeschnitten. PROFESSOR: Ja, so auf einem typischen Computer, wie viele Bits haben wir? ZIELGRUPPE: 32? PROFESSOR: Ja, 32, rechts. Und damit ist, was, vier Milliarden, zwei Milliarden? Vier Milliarden, bis zu vier Milliarden positive ganze Zahlen sind, nicht wahr? Zwei Milliarden negativ, zwei Milliarden positiv, hängt davon ab, wie Sie es wollen. Und so im Grunde wir haben können genug, ganze Zahlen, die gehen kann zwei zur 31. minus 1, oder? Denn sobald wir traf zwei zur 32., wissen wir nicht so viel Speicher in unserem Computer. Und so theoretisch I könnte mit einer Reihe das heißt, wie zwei der 46.. Es ist eine riesige-ass-Nummer, aber Theoretisch könnte man. Und so Integer-Überlauf ist, wenn Sie versuchen, eine ganze Zahl, die über das hinausgeht Computer speichern kann. Und so euch für dieses Beispiel nicht über über uns zu geben Ihnen eine riesige Sorgen Zeichenfolge, die beiden zu den 32. Zeichen ist lange. Das wäre wirklich zu verstehen. Also gut, ich werde einfach zu geben, euch die Grundstruktur dieser. Du wirst ein erstellen Funktion namens int strlen, wo Ein Pass in ein char Sterne, oder String, Zeiger auf den String s genannt. In Ordnung, jeder Kopie, die nach unten. Cool. Oops-- anderen Weg. Also das ist eine Art, wie ein härter Stück Problem, also werde ich euch vielleicht fünf zu geben 6 Minuten, um Art von Brainstorming und schreiben Sie diese Funktion aus. Publikum: Wir tun nicht Konto nach [unverständlich], wir haben nicht den Integer benutzen? PROFESSOR: Nein, haben Sie nicht. Ich werde euch einen Hinweis geben. Eine while-Schleife kann hier sehr hilfreich sein. Ja. Hier ist, Süßigkeiten. Süßigkeit wird ebenfalls verfügbar sein für das Quiz, denke ich. So euch alle sein morgen gezuckert. Kann ich-- Sie es bekommen. ZIELGRUPPE: OK. PROFESSOR: Ja. Vielleicht 30 Sekunden oder so. Na gut, wenn Sie nicht gemacht, keine Sorgen. Wir werden durch diese zusammen bewegen. OK. Also bin ich nur das Layout geht das Grundstruktur für diese Funktion hier. Int strlen. Zuerst hat jemand erzählen will mir, was dass int bedeutet? Wir müssen in dieser Funktion haben. ZIELGRUPPE: strlen [unverständlich]. PROFESSOR: Genau. Also, was hier passiert, wir brauchen, um eine ganze Zahl zurück. Und wie in den angegebenen spec, um return-- wollen wir Go for it Jungs, einfach weiter. Es ist alles gut. Essen Sie alles, damit ich nicht haben um es zurücknehmen, eigentlich. Die int bedeutet nur, dass Sie gehen, um eine ganze Zahl zurückkehren. Was ist das char-Sterne-s? Was bedeutet das? Publikum: Wie, was eingegeben in. PROFESSOR: Genau. Und was ist fast die Gleiche wie char Sterne? ZIELGRUPPE: String? PROFESSOR: Genau. Also alles, was wir tun, ist geben dies ein Zeiger auf eine Zeichenkette. OK. Cool. Vergessen Sie auch nicht, wenn wir vergessen um Ihnen diese Klammern, vergessen Sie nicht, um sie selbst zu schreiben. Denn theoretisch, ist Ihr Code falsch, wenn Sie vergessen, sie zu schreiben. Nur immer darauf achten. Wie, kleinen Dinge dass Sie nicht bemerken, wenn Sie auf Ihrem Laptop programmieren sind, weil Sie Ihren Laptop bedeutet es für Sie? Vergessen Sie nicht, wenn Sie schreiben von Hand. Ja? ZIELGRUPPE: Aber wie falsch sind? Wie, bekommen wir das ganze Problem nicht in Ordnung? PROFESSOR: Nein, nein. Mach dir keine Sorgen. Es ist eigentlich theoretisch möglich damit Sie die volle Punktzahl auf eine Frage erhalten auch dann, wenn Ihr Code nie im wirklichen Leben laufen. Ich schlage vor, Sie versuchen Sie nicht, um dies zuzulassen. Zum Beispiel, wenn alles das ist hier richtig ist, aber Sie einen Doppelpunkt oder eine Klammer vergessen haben, Ihr Code wird nicht wirklich laufen. Aber wir können barmherzig sein. Ja? Publikum: Sie haben, um Kommentar auf unserer Handschrift? PROFESSOR: Nein, nein, nein, Sorgen darüber. Kein kommentieren. Stil sollte gut sein. Wie, nicht smush weiß alles in einer Zeile. Wir werden nicht glücklich sein, mit, wenn Sie das tun. Will jemand geben Sie mir die erste Zeile? Hinweis, es ist sehr einfach. Ja? ZIELGRUPPE: Int, n gleich Null ist. Gerade Zähler gesetzt. PROFESSOR: So wollen wir einige Art von einem Zähler, nicht wahr? Ich bin gerade dabei, es zu nennen "count" aus Gründen der Lesbarkeit. Was wollen wir, um es gleich eingestellt? ZIELGRUPPE: Null. PROFESSOR: Yep. Semikolon. Es ist auch sehr seltsam Zeichnung Semikolons. Nur die Praxis zu tun. Deshalb wollen wir zuerst ein Zähler vom Typ int. Weil wir zu zählen, wie wollen viele Zeichen oder Buchstaben sind in diesem String, oder? Sehr einfache erste Schritt. OK, vielleicht ein wenig komplexer Jetzt, wie sollen wir tun? Will jemand geben Sie mir die Codezeile dass möglicherweise in Lage, Schleife helfen durch was auch immer das ist? Ja, tapfere Seele in den Rücken? ZIELGRUPPE: OK, also, während Punkt Sternchen, die ja, Star des s, ist ungleich Null, so etwas zu tun? PROFESSOR: Das ist wirklich sehr, sehr nahe. Ganz in der Nähe. Also werde ich zur Adresse zwei Dinge, mit denen. Zunächst einmal, es ist nicht genau Null. Was ist es? Es ist das Nullabschlusszeichen, was umgekehrten Schrägstrich Null. So dass sie in verschiedenen bist Hinblick darauf, wie sie gespeichert sind. So sind Sie ganz in der Nähe. Und zweitens, die wir nicht wollen nur bewegen Sie den Mauszeiger. Wir wollen eigentlich Zugriff auf die Werte, nicht wahr? Und so, wie tun wir das? Sehr leicht. Sie nicht über Zeiger zu denken, nicht um Erinnerungen zu denken. Gehen Sie zurück zu der zweiten Woche dieses Kurses. ZIELGRUPPE: [unverständlich]. PROFESSOR: Ab, schon vergessen? Was sind Zeichenfolgen? Wie werden sie gespeichert? ZIELGRUPPE: Sie erhöht. PROFESSOR: Sie werden angehoben. Wie können wir also zugreifen jeder Charakter im Inneren? ZIELGRUPPE: [unverständlich]. PROFESSOR: Genau. So while--, was geht hier drinnen? S - ZIELGRUPPE: I. PROFESSOR: Oh, i nicht vorhanden ist, oder? ZIELGRUPPE: Oh, zu zählen? PROFESSOR: Wir können einfach benutzen Zahl, können wir nicht? ZIELGRUPPE: Sorry, ich rief sie i. PROFESSOR: Ja, es ist alles gut. Wir haben eine variable hier oben, das ist bereits als unsere Gegen erklärt worden. Also, warum wir nicht einfach verwenden, dass um durch die while-Schleife zu bewegen? Ist das sinnvoll? So, während s von count-- Möchte jemand mir geben, was danach passiert hier? Publikum: Es ist nicht gleich. PROFESSOR: ist nicht gleich, nicht wahr? Es ist der Knall ist gleich, Ausrufezeichen entspricht, was auch immer euch zu wollen nennen Sie es nicht equal-- ZIELGRUPPE: [unverständlich]. PROFESSOR: Ja. Denken Sie daran, Apostroph ist ein char, doppelte Anführungszeichen für einen String. Seien Sie vorsichtig, wenn mit ihnen. Also, wenn wir durch suchen das Array, das letzte Zeichen, Wir wissen, dass wir nicht wollen, es umgekehrten Schrägstrich Null sein. So, während. Wir sind nicht am Ende der Kette. Was wollen wir nach innen zu tun? Publikum: Wir wollen, um das Add Gegen so zählt plus plus? PROFESSOR: Genau. Also hier werden wir zu tun zählen, zählen plus plus. Vermissen Sie eine weitere Zeile. Wir sind fast da. Was sollen wir zu vergessen, zu tun? ZIELGRUPPE: Rückkehr Null? PROFESSOR: Sie wollen zurückkehren Null? ZIELGRUPPE: Nein, der Rückkehr in strlen. Warte ab. PROFESSOR: Welche gespeichert ist? ZIELGRUPPE: Count. Graf. PROFESSOR: Genau. Also hier werden wir Zahl zurück. Denn das, was wir sind denn hier ultimately-- wir haben eine Zählervariable, die ist gehen, um über unser String zu erhöhen. Wir werden weitermachen, behalten gehen, um und um in dieser Schleife. Und während wir uns nicht auf das Ende dieses String, der das Nullabschluss ist. Und jedes Mal, wenn wir durchmachen es, fügen wir zu unserem Gegen bist. Und wir werden weiter gehen zusammen in diesem Array. Und am Ende, wenn wir traf das Nullabschlusszeichen, wir wissen, oh, wir können brechen, geben Sie den Zählerstand. Wir haben unsere strlen. Hat jeder zu erhalten, wie Dies wurde umgesetzt? Während loops-- ich weiß, haben wir nicht zu viel mit ihnen gemacht, aber sie sind in der Regel sehr, sehr nützlich, wenn Sie weiß nicht, was Sie zu stoppen sind Bedingung unbedingt sein muss. Frage? ZIELGRUPPE: Können wir schreiben null an der während Zustand? PROFESSOR: Während? Ja, so in diesem Problem, das ich Sie musste Jungs nehmen an, dass s nicht null sein. Denn denken Sie daran, Theoretisch, wenn ich dir gegeben habe ein Zeiger, der zu groß war Speicher, es würde Ihnen die Null, oder? Was die Betriebs Das ist, System tun würde. Also, wenn ich es dir nicht gesagt, anzunehmen, s wäre null, müssen Sie überprüfen. Also hier, was Sie tun würden, wenn s ist gleich ist gleich null, zurück ein. So ähnlich. ZIELGRUPPE: [unverständlich] Null. PROFESSOR: OK, ich werde sagen, warum wir das nicht können. Da erinnere mich in Erinnerung, rechts, hier. Wir werden hier zu gehen. Sie haben riesigen Blöcken bekam Speicher alle mit Gittern diesem Speicher unterschiedliche Werte, nicht wahr? Und so alle ein String ist-- für Beispielsweise, wenn wir die Eingangs hallo, es wäre H-E-L-L-O sein kann Backslash Null, oder? Und dann, wer weiß, wie zufällige Dinge, die in hier, nachdem sie sind. Wir wissen nicht wirklich, was da ist. Und so, wenn Sie tun es anstelle von umgekehrten Schrägstrich Null, null ist, kann es nicht null sein. Weil es nur bedeuten kann einige zufällige anderem die nicht in Ihrem String gehören. Und so ist die Art, wie wir wissen, immer, ein String endet, ist mit einem Backslash Null. Und damit ist immer, wie wir zu überprüfen, um das Ende eines Strings zu sehen. Null, all das bedeutet ist, wenn Sie ein nicht existierender Zeiger zuallererst oder wenn Ihr Speicher ist nur so groß, dass Sie können sie nicht zurückkehren, dann würde es null sein. So sehr vorsichtig sein, wenn differen der Unterschied zwischen null und die umgekehrten Schrägstrich Null. Ja. Jeder OK mit diesem? OK. Also musste ich euch strlen heraus zu schreiben. Führbar könnten wir auch fragen, die Sie schreiben aus A bis I, denken Sie daran, dass "Atwoa" oder was auch immer euch es nennen wollen? Dass in Funktion Vigenere und Caesar, daß Wandelt eine ASCII-Wert in eine Ganz? Das hat auch bis auf letzten Quiz kommen Funktionsumfang haben wir Sie gebeten, zu schreiben. So ziemlich jede Funktion dass Sie verwendet haben und sehr einfach, sich selbst zu schreiben, Sensoren wie niedriger ist, ist Ober, zu senken, um obere. Funktionen, die zu konvertieren wäre ein Zeichenfolge aus Kleinbuchstaben in Großbuchstaben. Wir alle wissen, wie das zu tun, nicht wahr? Es ist ziemlich einfach. Ich will nur sicherstellen, dass Sie can-- es ist das gleiche Denkprozess. Sie durchlaufen gerade und biegen Sie die Dinge. Entweder zu zählen oder, wenn Sie die Dinge sich anders. Ich würde suggest-- I weiß nicht, ob wir gehen Sie fragen sich zu merken, welche Kapital A oder Kapital Z, oder Kleinbuchstaben A oder Klein z werden in ASCII, aber ich würde vorschlagen vielleicht in Fall schriftlich mit, dass wir tun. Nur damit Sie Jungs haben eine Referenz. Wie Großbuchstaben A, was, 197? Und dann in Kleinbuchstaben ist wie 50 etwas. 65, yeah, dort gehen Sie. Also einfach ziemlich viel wissen, das Unterschied zwischen ihnen ist 32. Das ist ziemlich wichtig. Ja. Bin ich gut auf diesem? OK. Publikum: Wir könnten theoretisch schreiben Sie einige davon fallen als auch auf unserer little-- PROFESSOR: Sie theoretisch konnte einfach kopieren Sie die Funktion unten. Das ist richtig. ZIELGRUPPE: Nicht [unverständlich]. PROFESSOR: Sie Jungs haben ein Blatt. Ihr habt eine Notiz Blatt. Sie können es geben. Sie können es zu schreiben. Sie können tun, was Sie wollen mit ihm. Ja. Theoretisch, wenn Sie wollen, gehen Sie für. ZIELGRUPPE: [unverständlich] aber wir haben nicht wirklich unbedingt erinnern der Wert ist, können wir einfach verwenden Sie die zum oberen oder zum Unterfunktion, nicht wahr? PROFESSOR: Ja. Aber wenn wir eine Frage gab dir das sagt zu schreiben, um obere, dann würden Sie brauchen, um es zu schreiben. So euch kann, dass Sie davon ausgehen, Jungs haben Zugriff auf alle Funktionen, aber wenn Sie den oberen oder verwenden möchten niedriger, was man muss auch tun? ZIELGRUPPE: [unverständlich] benutzen CS50 [unverständlich] PROFESSOR: Ist es CS50.h? Seien Sie vorsichtig, da. So zum oberen, zu senken, ist Ober, ist geringer, Funktionen, beinhalten String-Manipulation sind alle entweder innerhalb der Ascii oder innerhalb der Mathematik-Bibliothek oder innerhalb der String-Bibliothek. Also, wenn Sie Kerle verwenden Sie diese Funktionen, seien Sie vorsichtig daran zu erinnern, , dass die Header enthalten. So vielleicht auch etwas, das Sie wollen in Ihrem Blatt umfassen, was sind die Kopfzeile? Was sind die Bibliotheken Sie habe mit? Welche Funktionen sind innerhalb dieser Bibliotheken? Es ist wichtig. Ja? ZIELGRUPPE: Könnten wir nur cop und tun hashtag durch die absolut jeder Buchstabe in dem wir je wie auf alle Fragen gesehen? PROFESSOR: Sie konnte. Ich weiß nicht, wie glücklich wir werden in die Besoldungsgruppe sein dass quiz, wenn jeder Teil des Codes ist doppelt so lang, wie es sein muss. Ich weiß es nicht, wir könnten nehmen Sie einen Punkt für Stil. Aber theoretisch Ihren Code wäre richtig. Euch könnte cop out und nur enthalten alles, was. Das ist auch in Ordnung, yeah. ZIELGRUPPE: [unverständlich]. PROFESSOR: Ja. Ich würde vorschlagen, nicht zu tun, dass, obwohl. Ja. ZIELGRUPPE: Kühle. PROFESSOR: Gute Frage. Publikum: So, das schlimmste Szenario. PROFESSOR: Der schlimmste Fall. Wenn Sie völlig vergessen, Sie konnten das tun. Ja. Yep, ist der Code recht. Früher habe ich n anstelle der Zählung aber, Sie wissen, was auch immer Ihr Boot schwimmt. ZIELGRUPPE: Warten Sie, so dass wir müsste nicht Hashtag gehören, weil wir beginnend an der int? PROFESSOR: Ja, ich habe angenommen, dass wurden wir gebeten, die Funktion zu schreiben. Wenn Sie sicher sein wollen, können Sie könnte wahrscheinlich hat es dort. Aber ich habe nicht die Mühe, ja. Ich weiß nicht einmal, wenn Sie muss jede Bibliothek für diese. Da Sie nicht wirklich Druck aus nichts oder etwas, nicht wahr? Ja, ich weiß nicht, ob Sie brauchen eine Bibliothek. OK. Dies ist auch ein wenig entlang die Zeilen von Speichermanipulation. Diese Art von etwas schwierig. Denk darüber nach. Sie haben eine Funktion namens func. Ich könnte es genannt haben was auch immer, aber ich wählen, um es func zu nennen. Ich habe es über meinem Haupt. Denken Sie daran, Sie haben wollen eine Funktion nach Ihrem Haupt, Sie sicherstellen, dass Sie wollen, umfassen den Prototyp der Spitze. Aber in diesem Fall ist es so kurz war daß ich fühlte, dass ich konnte einfach schließen sie oben auf dem Haupt. Ich brauchte nicht um den Prototyp zu haben, weil es oben schon geschrieben. Also alles, was ich in meinem Hauptfunktion zu tun schafft ganze Zahl x gleich 10 ist. Ich rufe meine func Funktion, und dann Druck bis etwas. Und dann ist das eigentlich welche func tut. Ihr Jungs wollen durch diese denken. Denn es ist ein bisschen schwierig. Es ist sehr, sehr schwierig, eigentlich. Denken Sie über, was diese Programm wäre Ausgeben. Ich gebe Ihnen Jungs zwei Minuten. Gute Gespräche? ZIELGRUPPE: Ja. PROFESSOR: Ja. In Ordnung, das ist so tricky für einen Grund. Und deshalb wollte ich bringen dies um alle Blicke auf sich. Will jemand mir geben ein Vorschlag, ein Versuch? Was würde das ausdrucken? Völlig in Ordnung, wenn Sie sich irren. Ja? Publikum: Ich denke, es ist 100 und dann 10 auf zwei getrennten Leitungen. PROFESSOR: Und ein 10? Hat jemand irgendwelche anderen Vermutungen? Ja? ZIELGRUPPE: Vielleicht nur 10, weil func wird nichts zurückkehrt? PROFESSOR: OK, so dass wir haben Vermutung Nummer eins ist, dass Vermutung Nummer zwei ist gerade dabei, aus 10 zu drucken. Hat jemand irgendwelche anderen Vermutungen? OK. Also lassen Sie uns gehen durch diese, nicht wahr? Immer, wenn Sie ein Stück Code zu bekommen, nicht nur es zu betrachten und werden wie, Ah, das ist so viel Zeug! Ich bin so verwirrt! Wie, beruhigen Sie sich nach unten. Genau wissen, dass Sie konnte einfach schauen Sie durch Code Zeile für Zeile. Das ist alles, es ist. Es ist wie ein Buch zu lesen. Also mit einer beliebigen Funktion, wir beginnen immer am wichtigsten. So dass wir zu gehen beginnen bei int main Leere, sogar das Programm bereits heruntergekommen, nicht wahr? Beginnen Sie an im Haupt nichtig. Int x gleich 10 ist. Also werde ich diese löschen. Ich gehe, um den Speicher zu zeichnen, nur damit du Jungs können Art zu sehen, was passiert. Denken Sie daran, hier unten haben wir unsere Stack? Hier oben haben wir unsere Haufen irgendwo hier oben. Stapel wächst, nicht wahr? Und innerhalb des Stapels, müssen Sie Netzfunktion sowie alle Netz lokalen Variablen. Also hier, int x gleich 10. In unserem Hauptfunktion sind wir Erstellen einer Variable namens x. Wir setzen, dass gleich 10. Hier finden Sie einige x hast, und du bist Einstellung, die in Höhe von 10, rechts, im Haupt. Jeder gut? Funktion. So, jetzt, in unserem Haupt Funktion, wir fordern die Funktion, die wir oben geschrieben habe. Also werden wir jetzt geben Sie die zweite Funktion. Wir werden zu einem anderen erstellen Variable int x = 100. Was hier geschieht in dem Stapel? Was passiert, wenn Sie anrufen ein Funktion, die neue Variablen erstellt? Was hier passiert, bei dem Stapel? ZIELGRUPPE: [unverständlich] Pfähle auf? PROFESSOR: Ja. So ist es eigentlich eine Kopie. Und es Art von Pfählen an der Spitze. Denken Sie an die stack-- ein Stapel Bücher, einen Stapel von etwas. Piles auf, zuerst im letzten out, last in, first out. Also, es wird ein x Sie hier erstellen. Das wird haben Alle funcs Variablen. Groß. So, jetzt haben wir zwei verschiedene x, wonach sind zwei sehr verschiedene Dinge. Dann werden wir zu drucken aus dem ganze Zahl von x. Also lassen Sie ausdrucken 100, oder? Denn hier ist es 100. Also das ist das erste, was , dass es geht, um auszudrucken. Da diese Funktion nichts zurückgibt, jetzt, dass Funktion, die Linie in Haupt erledigt. Jeder gut mit mir so weit? So sind wir nun durch zwei von der drei Linien unserer Hauptfunktion. Jetzt sind wir auf die dritte Zeile gehen. Wir werden printf. Was ist das x im Haupt? Was soll das darstellen? Welchen Wert x ist jetzt? ZIELGRUPPE: 100. PROFESSOR: Es ist 100? ZIELGRUPPE: Noch 10. PROFESSOR: Noch 10. Ja. Denn denken Sie daran, innerhalb von unsere func, x gleich 100. Aber wenn wir wieder zurück unsere Hauptaufgabe, diese Variable wird in eine gespeicherte anderen Ort auf unserem Stack. So, jetzt müssen wir wieder auf dem Sprung Hauptstapel, Netz lokalen Variablen. Und hier x gleich 10 ist. Und so werden wir aus 10 zu drucken. So war sie absolut Recht. Wir werden das haben Leistung von 100 und 10. Ja? Publikum: Wenn Sie malloc, ist es die Heap oder der Stapel, die [unverständlich] ist? PROFESSOR: Wenn Sie malloc, Sie nehmen Speicher aus dem Heap sind und verteilenden. So dass Sie nicht haben, mit Zohan an irgendetwas davon. Also ich denke, das größere Lieferservice Hier ist die so genannte Umfang. Für diejenigen unter Ihnen, die sich waren die Überprüfung Sitzung gestern Abend, wir unterhielten uns kurz darüber. Scope definiert, wie und Wenn Ihre Variablen existieren. Oder innerhalb, was Rahmen tun Sie Ihre Variablen existieren. So ziemlich die Faustregel in der Regel ist Ihr variables--, wenn Sie sie erstellen in geschweiften braces-- sie existieren Nur innerhalb dieser geschweiften Klammern. So zum Beispiel in unserer Funktion func finden Sie diese beiden Klammern. Wenn Sie erstellen etwas nach innen von ihm, Chancen sind alles, was Sie tun, ist die Schaffung eines Stapels und Speichern, dass es. Das Gleiche gilt im Haupt. Das ist nur im Inneren des Haupt gespeichert. Auch Sie wollen sehr, sehr vorsichtig hier. Da Rahmen verleiht auch sich verschiedene Beispiele. So zum Beispiel ein für Schleife für int i gleich 0 ist. Ich weniger als, ich weiß nicht, 10. I plus plus. Und Sie Code innerhalb der es hast, nicht wahr? Woher kommt diese Variable, i, eigentlich nur existieren? Nur innerhalb Ihres for-Schleife. Also ich wette, viele von euch Jungs haben wahrscheinlich begegnet diesen Fehler, wenn Sie Programme zu tun in Ihrem psets. Wie viele von euch haben versucht, ich benutze außerhalb einer for-Schleife und hatte einen Fehler entdeckt? Wie einer nicht referenzierten Integer oder etwas ähnliches? Der Grund, warum das passiert Denn hier sind Sie etwas zu schaffen, dass nur existiert in Ihrem for-Schleife. Und wenn Sie versuchen, es zu benutzen, tut mir nicht tatsächlich außerhalb von ihm existiert. Also im Grunde ein Computer sagen, ich weiß nicht, was du redest. Alles was ich weiß ist, dass ein i war Hier, aber jetzt nicht mehr. Also, wenn ich einen erstellen for-Schleife im Inneren, nicht wahr? Und ich werde zu einem anderen zu schaffen, wie int j, und haben es zu tun, was auch immer. Und Sie haben ein Code innerhalb der haben dass Schleife, j gibt es nur hier. Aber das existiert auch im i. Und so j existiert nur innerhalb dieser for-Schleife, wohin i existiert in der ganzen Sache. Jeder klar? Das Gleiche gilt für bedingte Anweisungen wenn Sie etwas erstellen möchten. Das Gleiche gilt für while-Schleifen, wenn Sie etwas erstellen möchten. Das ist etwas, zu sein sehr, sehr vorsichtig. Also das war eine wirklich gute Problem in der Sinne, dass es zwei Dinge gezeigt. Es zeigte erste, Umfang. Und es zeigte auch die Speicherzuweisung. Weil ihr Jungs sollten wissen, dass Funktionen wachsen nach oben im Stapel. Und dass, wenn Sie anrufen Funktionen, die Sie erstellen im wesentlichen ein neuer Stapel an Speicher. Das ist sehr verschieden von was Ihr Netz-Speicher ist. Ja. Puh! Jeder OK dazu? Das war verwirrend. Sehr gute Themen über zu gehen, weil Sie wahrscheinlich geht etwas schwierig zu bekommen Dinge wie, dass auf dem Quiz. Ja. Cool. Ich werde setzen Sie 100 auf der einen Leitung und 10 auf der anderen. Ja, sehr gut. OK, jetzt euch erhalten die Möglichkeit, die Reisebüros zu sein. Sie erhalten zu beantworten alle die schöne E-Mails, die ich manchmal. Also, liebe Andi, ich sehe, ich glaube, so etwas ist falsch mit meinem Compiler. Ich bin mir sicher, dass mein Code korrekt ist, aber ich erhalte immer einen Segmentation Fault jedes Mal wenn ich laufen. Was ist los? Bitte helfen Sie, viel Liebe. Wenn Sie Jungs haben so etwas wie dass wie würden Sie reagieren? Dies sind tatsächlich sehr häufig Fragen wir werden Sie fragen. Ist, wenn, wir geben Ihnen eine Szenario wir uns geben, werde Ihre beste Vermutung auf, was los ist. Wer noch einen Stich an, was los ist? Ja? ZIELGRUPPE: Vielleicht dereferenziert die null, so etwas wie die Zeiger wird auf etwas null zeigt. PROFESSOR: Ja, das wäre ein sein Beispiel, wenn das passieren würde. Aber was ist das größere Bild von dem, was ist denn hier los? Publikum: Ist es Sie versuchen, auf den Speicher zuzugreifen, dass Sie nicht soll den Zugang zu haben? PROFESSOR: Genau. Also denken Sie an eine seg Fehler, ein Off Grenzen, eingeschränkten Bereich im Speicher dass Sie sollten nicht berühren. So ziemlich genau, wenn Sie versuchen, wie beispiels index--, Sie erklärte, habe ein Array von null bis neun. Aber Sie versuchen, die 10. zu berühren Wert, haben Sie keinen Zugriff auf das. Weil Sie es nicht erklärt haben. Und damit Ihr Computer wird an, dass wie sein aussehen, uh oh, Sie versuchen zu gehen außerhalb der Grenzen eines Index. Ich werde dir geben einen Segmentation Fault. Denken Sie an, wie Segment, nicht wahr? Ein zusätzliches Segment, ist die Schuld wenn Sie versuchen, etwas zu brechen und Sie sollten nicht da sein. Segmentation fault ist zu jeder Zeit Sie versuchen, Dinge zu berühren dass Sie sollten nicht berühren. So bekanntesten Beispiele sind ein Index. Natürlich, wenn Sie versuchen, zu berühren, das war null, das würde auch so gut funktionieren. Wenn Sie den Mauszeiger versuchte, Berühren Sie Dinge, die sich nicht berühren sollte, das könnte auch so gut funktionieren. Am typischsten du wirst Dies in einem Array. Jeder gut? ZIELGRUPPE: Also, wenn Sie wollen, zum 10. Punkt zugreifen und es gibt nur eine Grenze neun oder so etwas. PROFESSOR: Ja, genau. Ziemlich. Cool. Liebe Andi. So dass wir diese wunderbare habe Dinge genannt Sorten. Wenn Merge sort-- wie wir Säge Beispiel, wenn David tat die ganze Ding in class--, warum, wenn es so viel schneller als keines der anderen Art, warum haben wir einmal die Mühe zu wissen eine der anderen Arten? Was ist diese Frage wirklich fragen Sie? Was ist in der Drei word-- Publikum: Was ist der Trade-off? PROFESSOR: Genau. Das ist, was die Frage bittet. Was ist der Trade-off zwischen Merge sort Verse anderer Art? ZIELGRUPPE: Nimmt Speicher, oder? PROFESSOR: Sie benötigen zu erklären, dass ein bisschen mehr? Lassen Sie uns zunächst erklären, Merge Speicher. Wie funktioniert Merge sort zu arbeiten? Publikum: So funktioniert es durch Dividieren alles in Halb und dann zusammen setzen sie und Neuzuweisung es in Ordnung ist, wie jedes Mal, wenn Sie verschmelzen die Sätze. PROFESSOR: Ziemlich viel. So kann ich diese herauszuziehen, aber es wäre nehmen Sie mir fünf Minuten, um es herauszuziehen. Blicken zurück auf den Abschnitt Dias wo wir abgedeckt Merge sort. Genau. So ist die Art und Weise Merge sort Werke ist es Dinge, teilt in der Hälfte, und dann sieht es gerade am ersten Werte aller von ihnen und sortiert nur das. Kontinuierlich schafft neue Arrays und rückt die Dinge mehr und mehr um. Während also das ist wirklich, wirklich schnell, weil it's-- Sie wissen, eine binäre Suche ist n log n. Sie erstellen so viele verschiedenen Arrays, die Sie mit eine riesige Menge an Speicher. Und so, während es ist schneller, der Trade-off hier ist, dass Sie mehr Speicher sind. Und so, Hauch, sortiert und Suchanfragen wurden mehr in diesem Jahr eine Menge abgedeckt als sie es in früheren Jahren gewesen. Ihr solltet das sehen entsprechend am Quiz reflektiert. Ich würde auf jeden Fall verbringen Sie Zeit gehen über das, was all die verschiedenen Arten sind, wie binäre Suche, wie lineare Suche Arbeit. Wie Sie vielleicht Pseudo Code diejenigen heraus. Was sind die Laufzeiten? So etwas wie Laufzeiten ist sehr einfach, auf ein Notenblatt notieren, Recht? Es ist wirklich schwer, wenn Sie in der Mitte der Test und Sie haben, um das herauszufinden. Kopieren Sie es nach unten. Ich garantiere Ihnen, Sie gehen zu müssen, um das zu wissen. Was sind die Zielkonflikte? Worst case, best-Case-Szenarien für alle von ihnen, sehr kennenzulernen. Ja? Publikum: Müssen wir wissen, wie man Merge Bankleitzahl? Wie, müssen wir erinnere mich an die rekursive? PROFESSOR: Ich bezweifle es stark, gerade weil es wie ziemlich kompliziert. Aber es kann nicht durchführbar sein, wenn wir bitten Sie, Pseudo es verwenden aus. Ja. Yep, OK, eine weitere. Dies kann bis in gekommen sind Sie letzte Stück in ein wenig. Ja? Haben alle das gehört? OK, so ziemlich der erste alle, welche Art von Programm, würde Ihnen eine Ausgabe wie diese? Denken Sie daran, wir werden Sie aufgefordert, zu lernen, Diese neue Art von Debugging-Tool? Wie hieß es? Valgrind, rechts Es war ein Programm, in dem Sie könnte so nennen verfolgen alle die Speicher Sie Verwendung in Ihrem Programm und los war. Also, wenn Sie etwas haben, wie, auf jeden Fall verloren, 40 Bytes in einem Block. Wahrscheinlich sind Sie nicht Erinnern, um es zu befreien. Denn wenn Sie mit Byte Speicher sind, das bedeutet, Sie haben, dass der Speicher zugegriffen wird, aber Sie sind nicht in der Lage, frei zu haben. Also Sie machen wollen sicher, dass Sie auch Verwendung versenden-- das ist eine function-- alle frei des Speichers durch malloc neu zugeordnet. Cool. Also dieser Folie, werde ich es haben bis. Es ist überall in vielen Vorträge, in einer Menge von Abschnitt gleitet. Sie wollen sicherstellen, wirklich Sie wissen nur, all dies. Entweder in Ihrem Notizblatt oder wenn Sie möchte es zu merken, können Sie. Das ist wirklich, wirklich, wirklich wichtig. Auch eine sehr gute Frage, die wir stellen. Warum ist Selection sort-- Blick auf Auswahl sort-- alle Laufzeiten sind n quadriert. Unabhängig davon, wie die Liste kommt Sie so, also warum ist Selection sort-- Ich gebe Ihnen Kerle 30 Sekunde darüber nachdenken. Da ist es irgendwie verwirrend. Es beinhaltet einige begriffliche Denken. Warum sollten die Laufzeiten der gleiche sein an sowohl die schlechtesten und besten Case-Szenarien? Ja? Publikum: Da Auswahl Sortiert jeweils Position oder Platz in diesem kleinen Array Ding oder was auch immer. Also selbst im besten Fall, auch wenn es perfekt sortiert, es wäre immer noch wie, OK, sein. In meinem ersten Platz, den ich eine haben. Und durch alle von ihnen zu gehen. OK, ist einer der kleinsten. Und dann geht es wieder und ist wie, OK, zwei ist der kleinste aller Dinge. Aber es muss noch überprüfen jede und jeder. PROFESSOR: Ja. So zum Beispiel, sagen wir einfach, Wir haben eine Liste, bereits sortiert, ein Array 4.59. Die Art und Weise, dass Selection Art ist, dass es durch geht, ist es diese beiden überprüft. Dann überprüft er die beiden. Und dann überprüft, und es überprüft. Es hält die Überprüfung alle von ihnen, unabhängig davon, ob oder nicht es ist eigentlich sortiert. Denn das ist einfach die Art, wie die Art funktioniert. Und so ist diese Frage ein bisschen wie eine konzeptionelle Frage, wir bitten. Wo ersten, die Sie wissen, was Auswahl Sortiert ist, rechts, zu können um die Frage zu beantworten. Sie müssen in der Lage sein zu verstehen konzeptionell, was los ist. Und dann kann man es anwenden und denken, OK lassen Sie uns einfach vorstellen schlimmsten Fall. Sie sind alle in absteigender Reihenfolge. Wie würde das beeinflusst? Was, wenn es aufsteigender Reihenfolge? Wenn es bereits sortiert? Wie würde das die Laufzeiten auswirken? Und dann Selection Art, werden Sie feststellen, dass es nicht wirklich wichtig. Weil Sie die Überprüfung sind alle Werte unabhängig davon, was passiert. Und so gut, Dinge zu erinnern. Warum manche Arten unterscheiden sich von anderen und wie man am besten und den schlimmsten Fall würden alle von ihnen beeinflussen. Ich werde wirklich in Art getroffen denn das wird auf dem Quiz können. Ja. OK. Es gibt 6 Minuten verlassen. Ich kann drei Minuten Fragen. Ich kann auch hängen, um für wie 20 Minuten nach Abschnitt Wenn Sie Fragen und bitten möchten. Hat jemand einfach nur wirklich kurz Fragen oder konzeptionelle Fragen sie sind unklar, gerade jetzt? Ja? ZIELGRUPPE: Können Sie ein wenig sprechen Bit zu Bit-Operatoren? PROFESSOR: Ja. So Bit-Operatoren sind etwas, das Sie wahrscheinlich vielleicht wollen einfach nur auf Ihrem Blatt setzen. So quickly-- ich nicht will zu viel in die Tiefe gehen weil Harvard, in ihrer Bewertung Sitzung, überdachte es ziemlich gut. Bit-Operatoren, da ist fünf von ihnen, nicht wahr? Es ist das, das x oder eine Funktion ist, gibt es Et-Zeichen, was ist das und. Rohr, das das oder ist. Und dann haben Sie die beiden haben verschiedene Arten von Verschiebungen. Wenn ich Ihnen zwei Werte, wenn Ich gebe Ihnen, wie, eins und eins. Was würde das zu beurteilen? Wenn ich dir wahr und wahr, wahr ist? Was ist wahr oder falsch? Immer noch wahr, oder? Da gibt es eine oder. Wir werden höchstwahrscheinlich die Zahlen. Also denken Sie daran, eins gleich wahr, gleich Null ist falsch. Und wir könnte Ihnen diese Dinge und bitten Sie, uns zu sagen, was passiert. Harvard deckt sie innerhalb der ersten 10 Minuten nach ihrer Studie Sitzung wirklich, wirklich gut. So euch machen wollen sicher, Sie blicken auf das. ZIELGRUPPE: Ist pisa5 gehen auf das Quiz sein? PROFESSOR: Nein Noch nicht einmal an pisa5 schauen jetzt. Es ist schwer. Nur nicht einmal die Mühe Blick auf pisa5. Da jedoch einige Hinweise und Anregungen, I würde vorschlagen, Sie pisa5 starten sobald das Quiz ist vorbei. Dies wird das härteste sein Woche, aber dann ihr Jungs wird es auf den Hügeln weitergegeben von sanften grünen und Welpen, und es ist in Ordnung. Diese Klasse erhält signifikante einfacher nach dem fünften psoll. ZIELGRUPPE: Bürozeiten sind Sonntag, Montag? PROFESSOR: Ja, so wird der Bürozeiten der Sonntag auf Montag für die pset. Öffnungszeiten heute Abend im wesentlichen wird nur eine Bewertung für das Quiz zu sein. Wenn jemand zu kommen und fragen will, TAS eine Frage, wir werden da sein. Ich werde vielleicht noch eine Frage zu nehmen wenn jemand eine Frage? Ja? Publikum: Wenn man Definition von Knoten, [unverständlich] wenn Sie als nächstes sagen Knoten Sterne und dann, hat der Computer automatisch zu verstehen, dass Sie die sich auf einem anderen Zeiger? PROFESSOR: Nein Publikum: Sie müssen relink es [unverständlich]? PROFESSOR: Also im Grunde die Struktur eines Knotens ist, denken Sie daran, es ist wie Sie den Knoten zu erstellen und dann haben Sie einen Zeiger namens nächsten. Alles, was Sie tun, ist mit der Struktur gibt. Sie müssen zuweisen dass irgendwo Zeiger. Also die Rechner nicht wissen, was es noch zu tun. Sie müssen tatsächlich zuweisen, wenn Sie erstellen Ihre verknüpften Liste. Und das ist, was in erster Linie PSET 5 eingeschaltet. Also keine Sorgen über jeder, dass gerade jetzt. Publikum: So haben wir nicht brauchen, konzentrieren sich zu sehr auf die Link-Liste, nur der allgemeine Begriff? PROFESSOR: Just so ziemlich Stacks, Warteschlangen, Linklisten, Bäume, Hash-Tabellen. Gerade in der Lage sein zu wissen, was sie sind. Wir gehen nicht zu fragen, Sie etwas Bestimmtes gefallen denn wir haben nicht wirklich getan ein pset, dass die Abdeckungen von alledem noch. So in den letzten zwei Minuten vor Ich Ihnen frei, diesen Test zu töten. Ziemlich viel, wie, denken Sie, wie weit euch in dieser Klasse kommen. Ich erinnere mich, als zwei Wochen dieser Klasse, einige von euch für drei Stunden schriftlich Wasser. Wie lange würde es dauern, Jungs, um Wasser jetzt schreiben? 30 Sekunden, vielleicht? Denken Sie darüber nach, wie viel euch gelernt habe. CS ist ein wirklich, wirklich hart Thema. Es gibt keinen Zweifel, dass. Es ist schwer, das ist, warum niemand studiert es. Es ist nur schwer. Und es ist vollkommen in Ordnung. Und ich bin wirklich stolz darauf, dass jeder hat es das machte weit. Psets sind nicht einfach. Sie nehmen eine Menge Zeit. Ihr Jungs, ich werde nie zu fragen, die Sie schreiben das Spiel von 15 oder Vigenere auf der pset. Keine Notwendigkeit, nur ausflippen darüber. Alles, was wir hier testen ist zu bewerten, Ihre konzeptionellen Kenntnisse sowie wie einige Ihrer grundlegenden Fertigkeiten der Codierung. Der Test ist so ausgelegt wirklich eine Herausforderung. Wie es ausgelegt ist für Sie nicht bekommen 100. Es ist auch für Sie wahrscheinlich konzipiert nicht in der Lage, in 75 Minuten zu beenden. Und das ist völlig in Ordnung. Ich bin ein Student mich. Ich weiß, ich hasse es, wenn ich zu Fuß aus einem Quiz, wie, scheiße sein. Das war wirklich hart. Wahrscheinlich, was zu gehen happen-- und das ist völlig in Ordnung, Ich jetzt sage euch. Die Mittel, über diese Dinge sind nicht hoch überhaupt. Und für diejenigen unter Ihnen, habe immer, wie, dritt auf Ihr Problem-Sets, das bedeutet nicht, du bist gehen zu 60 Prozent in dieser Klasse zu bekommen. Wenn Sie auf die zu 60% Quiz, das nicht bedeutet, du bist zu gehen einen D in dieser Klasse. Wir sehen, vor allem ich, für diejenigen unter Ihnen, in meinem Abschnitt, Ich sehe, wie sehr euch alle arbeiten. Und ich im Auge behalten, dass. Ihr seid in Ordnung sein wird. Es gibt keine institutionelle Gedächtnis Glück am Ende des Semesters. Da alle Harvard Kinder erzählen ihre Freunde, oh, alles wird gut. Niemand wird sagen euch, dass hier. So, ich muss Ihnen sagen, dass Sie hier, Jungs. Ihr seid in Ordnung sein wird. Ich bin so stolz auf euch alle Jungs. Der Test wird schwer sein. Studieren Sie für sie, und danach einfach wegwerfen. Machen Sie sich bereit, neue Dinge zu lernen. Und essen Süßigkeiten. Wir haben haben viele Süßigkeiten. Sorgen für eine gemütliche Nachtruhe. Nicht nicht schlafen, weil das wäre wirklich schlimm sein. CS ist eine Menge von Logik. Wenn Sie nicht schlafen, man kann nicht funktionieren, und Ihr Gehirn kann nicht funktionieren. Und ich werde hier für die nächsten 20 sein Minuten, wenn jemand will, zu hängen, um. Ihr Jungs gehen, um es zu töten. Viel Glück.