[MUSIK SPIELEN] DAVID J. MALAN: Alles in Ordnung. Dies ist CS50 und dies ist der Beginn der Woche 2. Und Sie werden sich erinnern, dass über in den letzten paar Wochen, wir haben Computer Einführung Wissenschaft und wiederum, Programmierung. Und wir begannen die Geschichte haft Scratch, dass grafische Sprache vom MIT Media Lab. Und dann zuletzt, letzte Woche, haben wir eine higher-- eine Einführung niedrigerer Ebene Sprache bekannt wie C, etwas, das rein textuellen ist. Und in der Tat, wir das letzte Mal in diesem Zusammenhang untersucht eine Reihe von Konzepten. Dies erinnere, war das sehr erste Programm, das wir betrachtet. Und dieses Programm, ganz einfach, druckt, "Hallo, Welt." Aber es gibt so viel scheinbare Magie geht. Es ist das # include mit diesen spitzen Klammern. Es gibt int. Es gibt (void). Es gibt Klammern, geschweiften Klammern, Semikolons, und so vieles mehr. Und so, daran erinnern, dass wir eingeführt Scratch so dass wir konnten, im Idealfall, siehe Vergangenheit dass Syntax, die Sachen, die wirklich nicht alles, was intellektuell interessant, aber schon früh ist, absolut, ein bisschen schwierig wickeln Sie Ihren Geist herum. Und in der Tat, eine der am häufigsten früh auf die Dinge in einer Programmiersprache Klasse, vor allem für diejenigen weniger komfortabel, ist von zu frustriert und stolpern durch bestimmte syntaktische Fehler, nicht als logische Fehler zu erwähnen. Und so unter unseren Zielen heute, tatsächlich, Ihnen mit einigen ausstatten Problemlösungstechniken, wie lösen sich Probleme besser in Form von Debugging. Und Sie werden sich erinnern, auch, dass die Umwelt, die wir eingeführt zuletzt wurde CS50 IDE genannt. Dies ist web-basierte Software, die Damit können Sie in der Cloud zu programmieren, so zu sprechen, während zu halten alle Ihre Dateien wieder zusammen, wie wir wollen heute. Und erinnern daran, dass wir revisited hier diese Themen, darunter Funktionen und Schleifen, und Variablen und Booleschen Ausdrücken, und Bedingungen. Und tatsächlich ein paar mehr, dass wir aus der Welt der Scratch übersetzt in der Welt von C. Aber die grundlegende Gebäude Blöcke, sozusagen waren wirklich immer noch die gleiche letzte Woche. In der Tat, wir hatten wirklich nur ein verschiedene Puzzle-Stück, wenn man so will. Statt dieser lila speichern Block, wir statt hatte printf, das ist diese Funktion in C, dass ermöglicht es Ihnen, etwas zu drucken und formatieren Sie es auf dem Bildschirm. Wir führten den CS50 Bibliothek, wo Sie jetzt zur Verfügung get_char haben, und get_int und get_string, und einige andere Funktionen als gut, über die Sie Eingabe erhalten aus der eigenen Tastatur des Benutzers. Und wir haben auch einen Blick auf die Dinge wie these- bool und char, und Doppelzimmer, Schwimmer, int, long_long String. Und es gibt auch andere Datentypen in C Mit anderen Worten, wenn Sie erklären, eine Variable einen Wert zu speichern, oder wenn implementieren Sie eine Funktion dass gibt einen gewissen Wert, Sie können angeben, was Typ des Wertes, der ist. Ist es eine Zeichenfolge, wie ein Folge von Zeichen? Ist es eine Zahl, wie eine ganze Zahl? Ist es ein Gleitkomma Wert oder dergleichen? So in C, im Gegensatz zu Scratch, wir tatsächlich begann zu spezifizieren, welche Art von Daten wir zurückkehrten oder verwenden. Aber natürlich, wir liefen auch in einige grundlegende Grenzen der Informatik. Und insbesondere, diese Sprache C, Rückruf dass wir haben einen Blick auf Integer-Überlauf, die Realität dass, wenn Sie ein nur haben finite Menge an Speicher, oder speziell eine endliche Zahl von Bits, können Sie nur so hoch zu zählen. Und so sahen wir uns an diesem Beispiel hier wobei ein Zähler in einem Flugzeug, wenn tatsächlich läuft, lang genug wäre Überlauf und führen zu einer Software eine tatsächliche physische Potential Fehler. Wir haben uns auch bei Floating Punkt Unschärfen, die Realität daß nur eine endliche Anzahl von Bits, ob 32 oder 64 ist, Sie können nur so viele Zahlen angeben nach einem Komma, nach dem Sie beginnen ungenau zu bekommen. So zum Beispiel, ein Drittel in der Welt hier, in unserer menschlichen Welt, wir wissen, ist nur eine unendliche Zahl von 3s nach dem Komma. Aber ein Computer kann nicht notwendigerweise eine unendliche Anzahl von Zahlen darstellen wenn Sie erlauben es einige finite Menge an Informationen. So haben wir nicht nur statten Sie mit mehr Leistung in Bezug auf wie Sie könnten sich auszudrücken an eine Tastatur in der Programmierung, wir auch Mindestmaß beschränkt Sie können tatsächlich tun. Und in der Tat, Fehler und Irrtümer ergeben sich aus dieser Art von Fragen. Und in der Tat zu den Themen heute werden Themen wie das Debuggen zu sein und eigentlich auf der Suche unter der Haube an, wie die Dinge eingeführt wurden letzte Woche tatsächlich umgesetzt werden so dass Sie besser verstehen sowohl die Fähigkeiten und die Grenzen einer Sprache wie C Und in der Tat, werden wir die Schichten schälen zurück der einfachsten Datenstruktur, etwas, das ein Array genannt, die Scratch geschieht eine zu nennen "Liste." Es ist ein bisschen andere in diesem Zusammenhang. Und dann werden wir auch einer der Einführung erste unserer domänenspezifische Probleme in CS50, die Welt der Kryptographie, die Kunst der Scrambling oder in Chiffrierung Informationen so dass Sie geheime Botschaften schicken und dekodieren geheime Botschaften zwischen zwei Personen, A und B. Also, bevor wir Übergang zu dieser neuen Welt, Lassen Sie uns versuchen, Sie mit einigen ausstatten Techniken, mit denen Sie beseitigen oder reduzieren zumindest einige der Frustrationen dass Sie wahrscheinlich begegnet in der vergangenen Woche allein. In der Tat, vor Ihnen sind such-- einige Ihre erste Probleme in C. Und die Chancen, wenn Sie wie ich sind, das erste Mal, Sie versuchen, ein Programm zu tippen, auch wenn Sie denken logisch das Programm ist ziemlich einfach, Sie könnte sehr gut gegen eine Wand, und der Compiler wird nicht zur Zusammenarbeit. Machen oder Clang nicht gehen zu tun, tatsächlich Ihr Bieten. Und warum könnte das sein? Nun, lassen Sie uns einen Blick auf, vielleicht, ein einfaches Programm. Ich gehe voran gehen und speichern diese in eine Datei absichtlich buggy0.c genannt, weil ich weiß, dass es zu werden im Voraus fehlerhaft. Aber ich kann nicht erkennen, dass, wenn diese ist die erste oder zweite oder dritte Programm dass ich selbst mache eigentlich. Also werde ich voran gehen und tippen, int main (void). Und dann in meiner geschweiften Klammern, ein sehr vertraut ( "hallo, world-- Backslash, n ") - und ein Semikolon. Ich habe die Datei gespeichert. Jetzt werde ich nach unten gehen zu meinem Terminal-Fenster und geben Sie make buggy0, weil wieder, der Name der Datei ist heute buggy0.c. Also eingeben buggy0 machen, ein. Und, oh, mein Gott, erinnern vom letzten Mal dass keine Fehlermeldungen ist eine gute Sache. So ist keine Ausgabe eine gute Sache. Aber hier habe ich klar eine gewisse Anzahl von Fehlern. So ist die erste Zeile der Ausgabe nach machen buggy0 eingeben, Rückruf, ist ziemlich ausführliche Ausgabe des Clang. Unter der Haube, CS50 IDE ist so konfiguriert, eine ganze Reihe zu verwenden, von Optionen mit diesem Compiler so dass Sie nicht haben, an sie zu denken. Und das ist, dass alle ersten Zeile Mittel, die mit Clang beginnt. Aber danach, die Probleme beginnen, um ihr Aussehen zu machen. Buggy0.c auf der Linie 3, Zeichen 5, gibt es einen großen, roten Fehler. Was ist das? erklärt Implizit Bibliotheksfunktion printf mit Typ int (const char *, ...) [Werror]. Ich meine, es ist sehr schnell wird sehr obskur. Und natürlich auf den ersten Blick, würden wir nicht erwarten Sie zu verstehen, die Gesamtheit dieser Nachricht. Und so eine der Lehren heute geht um zu bemerken, zu versuchen, Muster oder ähnliche Dinge, um Fehler könnten Sie in der Vergangenheit begegnet. Also lassen Sie uns nur necken auseinander diese Worte, die bekannt vorkommen. Der große, rote Fehler ist eindeutig ein Symbol für etwas zu sein falsch. implizit erklärt Bibliotheksfunktion printf. Also selbst wenn ich nicht ganz verstehen, was Deklaration implizit Bibliotheksfunktion Mittel, das Problem sicher bezieht sich irgendwie printf. Und die Quelle dieser Ausgabe hat mit erklärt, es zu tun. Deklarieren eine Funktion es zum ersten Mal zu erwähnen. Und wir verwendet, um die Terminologie der vergangenen Woche von einer Funktion Prototyp deklarieren, entweder mit einer Zeile an der Spitze Ihrer Eigene Dateien oder in einer sogenannten Header-Datei. Und in welcher Datei haben wir sagen letzte Woche, dass printf ist Zitat, unquote, erklärt? In welcher Datei ist ihr Vorbild? Also, wenn Sie sich erinnern, das erste, was ich getippt, fast jedes Programm letzte Zeit-- und zufällig vor einem Moment gestartet Eingabe myself-- war dies ein hier-- hash-- #include