1 00:00:00,000 --> 00:00:11,952 2 00:00:11,952 --> 00:00:13,800 >> David J. MALAN: Das ist also CS50. 3 00:00:13,800 --> 00:00:18,970 Und das war CS50 eigenen Colton Ogden, für mehr, die Musik ist man 4 00:00:18,970 --> 00:00:22,820 Download unter soundcloud.com/cs50. 5 00:00:22,820 --> 00:00:26,690 >> Also konzentrieren wir uns heute umso mehr auf die Kunst der Programmierung. 6 00:00:26,690 --> 00:00:28,980 Und wir nehmen, wo wir aufge aus der vergangenen Woche, wobei der Schwerpunkt 7 00:00:28,980 --> 00:00:31,660 Scratch auf, die dies grafische Programmiersprache. 8 00:00:31,660 --> 00:00:35,490 Und die Dinge auf eine niedrigere Ebene, mit einem eher traditionellen Programmierung 9 00:00:35,490 --> 00:00:38,420 Sprache als C bekannt, aber auf dem Weg, zu realisieren, 10 00:00:38,420 --> 00:00:40,730 , die die gleichen Ideen, die wir etwa am vergangenen Freitag gesprochen 11 00:00:40,730 --> 00:00:44,390 nicht nur in diesem wiederholen Sprache C, sondern in fast allen anderen 12 00:00:44,390 --> 00:00:46,350 dass wir dieses Semester. 13 00:00:46,350 --> 00:00:50,247 >> Also dieses Ding namens wir hier, was beim letzten Mal? 14 00:00:50,247 --> 00:00:51,830 Dies ist repräsentativ für eine Aussage. 15 00:00:51,830 --> 00:00:53,080 So nannten wir diese Aussage. 16 00:00:53,080 --> 00:00:54,100 Und sie tut etwas. 17 00:00:54,100 --> 00:00:56,910 Es ist ein Befehl, der ein Computer oder Scratch könnte auszuführen. 18 00:00:56,910 --> 00:00:59,910 Und nun lassen Sie uns auch starten so etwas eine Funktion aufrufen, 19 00:00:59,910 --> 00:01:02,070 Gründen wir bald sehen werden. 20 00:01:02,070 --> 00:01:03,681 >> Inzwischen sahen wir Dinge wie diese. 21 00:01:03,681 --> 00:01:05,680 Und diese sind in der Regel wie das, was konstruieren bekannt? 22 00:01:05,680 --> 00:01:06,240 >> ZIELGRUPPE: Loop. 23 00:01:06,240 --> 00:01:06,860 >> David J. MALAN: Also eine Schleife. 24 00:01:06,860 --> 00:01:07,943 So ziemlich einfach. 25 00:01:07,943 --> 00:01:09,470 Es ist buchstäblich das tut, was es sagt. 26 00:01:09,470 --> 00:01:12,210 Und in Scratch, wenn Sie wollen stopfen mehr Puzzleteile drin, 27 00:01:12,210 --> 00:01:13,950 das Stück wird wachsen, um es fit. 28 00:01:13,950 --> 00:01:16,790 Und wir werden sehen, dass in C wir können das gleiche tun. 29 00:01:16,790 --> 00:01:20,000 >> Eine andere Art von Schleife, obwohl, in Scratch vielleicht für immer, 30 00:01:20,000 --> 00:01:21,820 oder es gibt eine beliebige Anzahl von anderen Ansätzen. 31 00:01:21,820 --> 00:01:24,150 Aber lassen Sie uns einen mehr Generalist Look, mit einem Gesicht 32 00:01:24,150 --> 00:01:27,402 Das ist wahrscheinlich sehr vertraut, bei Schleifen im Allgemeinen. 33 00:01:27,402 --> 00:01:29,110 Mark Zuckerberg: Ein Sache, dass Computer 34 00:01:29,110 --> 00:01:31,860 sind wirklich gut ist Befehle wiederholen. 35 00:01:31,860 --> 00:01:33,910 Als eine Person, würden Sie den wirklich langweilig, wenn Sie 36 00:01:33,910 --> 00:01:36,730 musste das gleiche tun viele Male in Folge. 37 00:01:36,730 --> 00:01:40,530 Aber ein Computer kann das gleiche tun Millionen oder sogar Milliarden von Zeiten, 38 00:01:40,530 --> 00:01:43,290 und sich nicht langweilen, und in der Lage zu, dass die Durchführung wirklich gut. 39 00:01:43,290 --> 00:01:45,650 >> So zum Beispiel, wenn I wollte alle wünschen 40 00:01:45,650 --> 00:01:48,840 auf Facebook alles Gute zum Geburtstag indem Sie ihnen eine E-Mail, 41 00:01:48,840 --> 00:01:51,550 es könnte mich mehr als eine nehmen Jahrhundert tatsächlich schreiben 42 00:01:51,550 --> 00:01:53,000 all diese E-Mails an alle. 43 00:01:53,000 --> 00:01:57,780 Aber mit nur ein paar Zeilen Code, kann ich haben ein System eine E-Mail an alle 44 00:01:57,780 --> 00:01:59,930 auf Facebook wollen ihnen alles Gute zum Geburtstag. 45 00:01:59,930 --> 00:02:02,730 Also das ist, was Schleifen sind und warum sie sind wertvoll und etwas 46 00:02:02,730 --> 00:02:04,740 dass Computer kann sehr gut tun. 47 00:02:04,740 --> 00:02:05,630 >> David J. MALAN: Also, wenn Sie haben die Empfänger gewesen 48 00:02:05,630 --> 00:02:07,820 von einigen der CS50 und Dropbox Space spät, 49 00:02:07,820 --> 00:02:10,590 Das ist eigentlich genau das, was wir zu tun, mit Code ganz so. 50 00:02:10,590 --> 00:02:12,600 Wir haben im Wesentlichen eine große Tabellenkalkulation, in die 51 00:02:12,600 --> 00:02:15,016 Leute wurden ihre Eingabe Namen und E-Mail-Adressen. 52 00:02:15,016 --> 00:02:18,160 Und wir schrieben ein klein wenig Code, können über diese Adressen durchlaufen 53 00:02:18,160 --> 00:02:21,860 und eindeutige Adressen spuckte in Fall, dass jemand mehrmals vorgelegt. 54 00:02:21,860 --> 00:02:25,120 Und danach, wir senden Ihnen eine automatisierte E-Mail von der CS50 bot, 55 00:02:25,120 --> 00:02:27,190 einschließlich der Gutschein-Code. 56 00:02:27,190 --> 00:02:29,290 >> Jetzt haben wir uns auch bei dieses Konstrukt letzten Mal. 57 00:02:29,290 --> 00:02:33,100 Und dies ist ein besonderer Beispiel dafür, was? 58 00:02:33,100 --> 00:02:35,050 Also, ja, ein boolescher Ausdruck. 59 00:02:35,050 --> 00:02:37,050 Und die Form ist gemeint, zu erfassen als auch. 60 00:02:37,050 --> 00:02:39,966 Alle diese Fragen der bilden wahr oder falsch in Scratch 61 00:02:39,966 --> 00:02:41,590 wird ein wenig so aussehen. 62 00:02:41,590 --> 00:02:43,200 Und wir nennen dies eine Booleschen Ausdruck. 63 00:02:43,200 --> 00:02:46,170 Das ist in der Tat wahr oder falsch, ja oder nein. 64 00:02:46,170 --> 00:02:49,150 Es ist ein Weg der Beantwortung einer Frage. 65 00:02:49,150 --> 00:02:52,420 >> Und in der Zwischenzeit können Sie diese verwenden, Boolean Ausdrücke in der Konstrukte 66 00:02:52,420 --> 00:02:54,720 wie denen von ihnen, Natürlich sind die Bedingungen 67 00:02:54,720 --> 00:02:57,259 oder Niederlassungen, sprichwörtliche Gabeln in der Straße. 68 00:02:57,259 --> 00:02:59,550 Und sie sehen nicht nur können wie diese, aber sie können auch 69 00:02:59,550 --> 00:03:02,080 mit ihnen haben Neubauten verbunden. 70 00:03:02,080 --> 00:03:05,820 Und Sie können tatsächlich eine Drei-Wege- Gabel in der Straße oder ein Vier-Wege-Gabel 71 00:03:05,820 --> 00:03:08,340 in der Straße, einfach durch nisten diese Dinge, 72 00:03:08,340 --> 00:03:10,510 wie Sie im Scratch sehen wenn Sie nicht bereits haben. 73 00:03:10,510 --> 00:03:13,550 Und wie Sie in C als auch tun können. 74 00:03:13,550 --> 00:03:16,810 >> Nehmen wir ein anderes Generalist Blick auf ein alumnist, als auch, die 75 00:03:16,810 --> 00:03:21,490 vielleicht einen anderen Ansatz vorstellen auf diese Dinge genannt Bedingungen. 76 00:03:21,490 --> 00:03:24,060 >> BILL GATES: Menschen machen Entscheidungen jeden Tag. 77 00:03:24,060 --> 00:03:27,530 Zum Beispiel, bevor Sie außerhalb Sie gehen Art eine if-Anweisung, die besagt, 78 00:03:27,530 --> 00:03:31,480 wenn es regnet, dann ich brauche, um meine Jacke zu bekommen. 79 00:03:31,480 --> 00:03:36,820 Und Computer sind erstaunlich, wenn Sie entscheiden, diese Art von Aussagen, 80 00:03:36,820 --> 00:03:42,280 dass sie zuverlässig ausführen kann diese Dinge zu unglaublichen Geschwindigkeit. 81 00:03:42,280 --> 00:03:48,240 Und so ein Computer-Programm wirklich ist ein wenig Mathematik und einige 82 00:03:48,240 --> 00:03:53,050 if-Anweisungen, wo die Entscheidung wird gemacht. 83 00:03:53,050 --> 00:03:55,020 >> David J. MALAN: So wie Sie vielleicht wissen, war es 84 00:03:55,020 --> 00:03:57,880 Leute wie Bill Gates, Paul Allen, und andere 85 00:03:57,880 --> 00:04:00,240 dass wirklich begann die sogenannten Personalcomputer 86 00:04:00,240 --> 00:04:01,990 Revolution vor einigen Jahren. 87 00:04:01,990 --> 00:04:04,140 Ich dachte, bevor wir tauchen in etwas Organisatorisches, 88 00:04:04,140 --> 00:04:09,920 wir würden eine Geschichte von der Albuquerque beziehen, New Mexico Museum of Natural History 89 00:04:09,920 --> 00:04:13,650 und Wissenschaft, wo einige von Bill Gates ' und Paul Allen frühesten Geschichten 90 00:04:13,650 --> 00:04:17,470 sind erzählte, wie wir jetzt heutigen PCs und Macs und mehr. 91 00:04:17,470 --> 00:04:22,390 Dafür aber brauchen wir zwei Freiwillige , die haben sehr gute Erzählung Stimmen 92 00:04:22,390 --> 00:04:23,735 ein Skript vorlesen. 93 00:04:23,735 --> 00:04:25,530 >> Alle Rechte, wie etwa auf der Rückseite gibt. 94 00:04:25,530 --> 00:04:26,120 Komm auf. 95 00:04:26,120 --> 00:04:27,770 Und wie vor hier. 96 00:04:27,770 --> 00:04:28,340 Komm runter. 97 00:04:28,340 --> 00:04:29,600 Nehmen Sie Ihre Plätze hier. 98 00:04:29,600 --> 00:04:32,444 Wie euch kommen, ein paar der Verwaltungs Ankündigungen. 99 00:04:32,444 --> 00:04:34,360 Schneiden, der Prozess der Auswahl eines Abschnitts, 100 00:04:34,360 --> 00:04:36,068 wird diese starten Mittwoch bis Freitag. 101 00:04:36,068 --> 00:04:38,400 Mehr dazu im kommenden Mittwoch in Vortrag. 102 00:04:38,400 --> 00:04:41,770 >> Super Abschnitte sind unterdessen etwas, das wir bieten nächste Woche 103 00:04:41,770 --> 00:04:45,310 wobei die gesamte Klasse wird aufgefordert, in relativ großem Umfang teilnehmen 104 00:04:45,310 --> 00:04:47,690 Abschnitte, einen mehr bequem, ein weniger komfortabel. 105 00:04:47,690 --> 00:04:51,340 Und wir werden die Einzelheiten bekannt geben , dass, wie auch später in dieser Woche. 106 00:04:51,340 --> 00:04:53,310 >> Inzwischen Abschnitte, selbst, beginnt 107 00:04:53,310 --> 00:04:57,241 in Woche drei der natürlich Null-Index, was bedeutet, das sind ein paar Wochen 108 00:04:57,241 --> 00:04:57,740 heraus. 109 00:04:57,740 --> 00:04:58,450 Also keine Sorgen machen. 110 00:04:58,450 --> 00:05:01,014 Sie haben noch nicht verpasst etwas in diese Richtung. 111 00:05:01,014 --> 00:05:03,930 Mittlerweile in der Zwischenzeit, wenn Sie Fragen administrativ, 112 00:05:03,930 --> 00:05:08,120 E-Mail mich und Devon und Gabe und Rob an diese Adresse hier. 113 00:05:08,120 --> 00:05:10,320 >> Schließlich Problem eingestellt 0 ist natürlich aus. 114 00:05:10,320 --> 00:05:12,320 Sie können es bemerkt haben auf der Website des Kurses. 115 00:05:12,320 --> 00:05:14,840 Es sollte Ihnen mit Alle Antworten auf die Fragen 116 00:05:14,840 --> 00:05:18,250 Sie auf dem Weg zur haben könnte immer mit dem Problem-Set gestartet. 117 00:05:18,250 --> 00:05:21,430 Aber wenn Sie sich selbst zu finden in der Notwendigkeit einer helfenden Hand, 118 00:05:21,430 --> 00:05:25,020 mit allen Mitteln zu besuchen Bürozeiten Montag, Dienstag, Mittwoch, Donnerstag 119 00:05:25,020 --> 00:05:27,290 dieser Woche in den Abend in vier Speisesäle. 120 00:05:27,290 --> 00:05:31,650 Sehen, dass es für die URL-Angaben von wo der Bürozeiten sind. 121 00:05:31,650 --> 00:05:34,000 >> Jetzt treffen wir uns unserer zwei Gäste heute hier. 122 00:05:34,000 --> 00:05:34,740 Wie heißen Sie? 123 00:05:34,740 --> 00:05:35,290 >> JAY PAUL: Jay Paul. 124 00:05:35,290 --> 00:05:36,880 >> David J. MALAN: Jay Paul, schön, Sie zu treffen. 125 00:05:36,880 --> 00:05:37,330 >> HIKARI: Hikari. 126 00:05:37,330 --> 00:05:37,975 >> David J. MALAN: Hikari? 127 00:05:37,975 --> 00:05:38,250 >> HIKARI: Hikari. 128 00:05:38,250 --> 00:05:38,810 >> David J. MALAN: Hikari. 129 00:05:38,810 --> 00:05:39,790 Schön, dass Sie so gut zu erfüllen. 130 00:05:39,790 --> 00:05:42,123 Jay Paul und Hikari haben in vor ihnen auf diese Musik 131 00:05:42,123 --> 00:05:45,100 steht zwei Skripte, die ich gedruckt heute Morgen von der New Mexico 132 00:05:45,100 --> 00:05:46,692 Museum of Natural History and Science. 133 00:05:46,692 --> 00:05:48,400 Und was ich dachte, Ich würde auf dem Overhead zu tun 134 00:05:48,400 --> 00:05:52,830 wird begleiten Ihre Rezitation des Skripts und dieser Geschichte 135 00:05:52,830 --> 00:05:54,700 mit einigen Bildern, ohne Überraschungen. 136 00:05:54,700 --> 00:05:57,512 >> Und was ich getan habe, im Voraus auf Ihrem Skript prehighlight 137 00:05:57,512 --> 00:05:59,470 was Sie lesen sollten, und was Sie lesen. 138 00:05:59,470 --> 00:06:00,920 Und wir werden im Wesentlichen nur alternative Absätze. 139 00:06:00,920 --> 00:06:03,211 So ist es viel, wie Sie vielleicht im Englischunterricht getan haben. 140 00:06:03,211 --> 00:06:06,875 Das ist wirklich zwingen das Publikum in Ihrer Geschichte glauben hier. 141 00:06:06,875 --> 00:06:07,600 Sollen wir? 142 00:06:07,600 --> 00:06:13,272 So ist die Geschichte hier ist, haben wir ein BASIC, und es beginnt in Cambridge. 143 00:06:13,272 --> 00:06:18,750 >> JAY PAUL: Es war Winter, 1974 in Cambridge, Massachusetts 144 00:06:18,750 --> 00:06:20,240 wo die Winter kalt werden kann. 145 00:06:20,240 --> 00:06:22,800 Ein bärtiger, langhaariger Studienabbrecher mit dem Namen 146 00:06:22,800 --> 00:06:27,280 Paul Allen wurde in Harvard drudging Square, in Gedanken versunken. 147 00:06:27,280 --> 00:06:31,050 Seine Hauptsorge in diesen Tagen war, wie man seinem Freund Bill Gates zu bekommen, 148 00:06:31,050 --> 00:06:34,974 die Schule verlassen und gehen in das Geschäft mit ihm. 149 00:06:34,974 --> 00:06:37,890 HIKARI: Die beiden bereits gegangen war durch eine Reihe von Unternehmensgründungen 150 00:06:37,890 --> 00:06:40,850 zusammen, beginnend im Lakeside Schule in Seattle, wo 151 00:06:40,850 --> 00:06:45,220 sie in der freien Zeit, um Computer bezahlt wurden Testen einer PDP-10-Computer zu einem lokalen Zeit 152 00:06:45,220 --> 00:06:46,580 Sharing-Unternehmen. 153 00:06:46,580 --> 00:06:50,930 Der jüngste Plan war gewesen zu beenden Schule und bilden ein Software-Unternehmen. 154 00:06:50,930 --> 00:06:53,440 Allen hatte Washington verlassen State University. 155 00:06:53,440 --> 00:06:58,380 Aber in der letzten Minute, Tore beschlossen, mit der Harvard-Stick. 156 00:06:58,380 --> 00:07:02,080 >> JAY PAUL: An diesem Tag, überqueren Harvard Quadrat, Allen entdeckte den Januar 157 00:07:02,080 --> 00:07:07,530 1975 Ausgabe von Popular Electronics mit dem Anhalten der Erde Überschrift, 158 00:07:07,530 --> 00:07:11,900 Die weltweit erste Minicomputer Kit Commercial Models Rivalen. 159 00:07:11,900 --> 00:07:14,430 Unter der Schlagzeile war ein Bild von einer kleinen Box 160 00:07:14,430 --> 00:07:16,160 mit Lichtern und Schaltern geschmückt. 161 00:07:16,160 --> 00:07:19,770 Es war der MITS Altair 8800 genannt. 162 00:07:19,770 --> 00:07:24,100 Und Allen wusste das war, was er gesucht hatte. 163 00:07:24,100 --> 00:07:26,350 >> HIKARI: Tage der Diskussion. 164 00:07:26,350 --> 00:07:30,170 Allen und Gates-verstand der Bedeutung des Altair. 165 00:07:30,170 --> 00:07:32,480 Sie hatten oft gesprochen über Mikroprozessoren 166 00:07:32,480 --> 00:07:35,250 und warteten auf das, was zu sehen würde mit ihnen geschehen. 167 00:07:35,250 --> 00:07:39,770 Jetzt gab es ein Minicomputer-Kit auf die Abdeckung von Popular Electronics. 168 00:07:39,770 --> 00:07:42,830 Es hatte noch anscheinend keine Software. 169 00:07:42,830 --> 00:07:46,830 Sie stellten sich eine Nation von Programmierer auf MITS absteigend. 170 00:07:46,830 --> 00:07:49,590 Und so Ed Roberts genannt, der Kopf des Unternehmens, 171 00:07:49,590 --> 00:07:53,330 behauptet, eine Version des haben Programmiersprache BASIC fast fertig 172 00:07:53,330 --> 00:07:54,710 für den Altair. 173 00:07:54,710 --> 00:07:55,570 Sie tat es nicht. 174 00:07:55,570 --> 00:07:58,910 Roberts und muss gewusst haben, taten sie nicht. 175 00:07:58,910 --> 00:08:03,170 Er wurde immer 10 Anrufe pro Tag von Menschen, die ein Grund fast fertig hatte. 176 00:08:03,170 --> 00:08:05,570 Und seine Antwort Lager war: "Die erste Person, 177 00:08:05,570 --> 00:08:11,090 , die sich zeigt, mit einer Arbeits BASIC, bekommt den Zuschlag. " 178 00:08:11,090 --> 00:08:13,910 >> JAY PAUL: Gates und Allen hatte noch nie einen gesehen, Altair. 179 00:08:13,910 --> 00:08:17,600 Sie hatte noch nie gesehen, die Intel 8080 Mikroprozessor 180 00:08:17,600 --> 00:08:19,060 im Herzen des Altair. 181 00:08:19,060 --> 00:08:21,470 Aber ein paar Jahre früher Allen hatte ein Programm geschrieben 182 00:08:21,470 --> 00:08:25,220 auf einem Mainframe-Computer emuliert der Betrieb einer früheren Intel 183 00:08:25,220 --> 00:08:26,217 Mikroprozessor. 184 00:08:26,217 --> 00:08:28,300 Und dieses Mal sie würde das gleiche tun. 185 00:08:28,300 --> 00:08:31,530 186 00:08:31,530 --> 00:08:34,380 >> HIKARI: mit einem Intel 8080 Hand an seiner Seite, 187 00:08:34,380 --> 00:08:37,770 Allen setzte sich an einen Harvard PDP-10-Computer 188 00:08:37,770 --> 00:08:42,010 und schrieb den Emulator und Software Werkzeuge notwendig, um die Programmierung zu tun. 189 00:08:42,010 --> 00:08:45,820 Unterdessen ging nicht mehr Tore Klassen und widmete sich 190 00:08:45,820 --> 00:08:48,120 der Gestaltung des BASIC, nach allen Regeln 191 00:08:48,120 --> 00:08:53,130 er wusste um die Größe zu bekommen unten 4 Kilobyte. 192 00:08:53,130 --> 00:08:55,870 >> JAY PAUL: Out in Albuquerque, Ed Roberts bekam einen Anruf von Gates 193 00:08:55,870 --> 00:08:59,754 Bitte um Details darüber, wie die Altair behandelt spezifischen Routinen. 194 00:08:59,754 --> 00:09:01,170 Niemand hat je gefragt hatte, dass vor. 195 00:09:01,170 --> 00:09:02,670 Und Roberts begann interessieren. 196 00:09:02,670 --> 00:09:05,240 197 00:09:05,240 --> 00:09:07,970 >> HIKARI: Mit der Entwicklung Werkzeuge und das Design fertig ist, 198 00:09:07,970 --> 00:09:10,780 Gates und Allen schrieb der Code auf dem PDP-10, 199 00:09:10,780 --> 00:09:16,060 Anwerbung andere Harvard-Student, Monte Davidoff, auf mathematische Routinen zu schreiben. 200 00:09:16,060 --> 00:09:19,450 Nach einer letzten Nacht des Programmierung, bekam Allen auf einer Ebene 201 00:09:19,450 --> 00:09:22,970 zu liefern ihre BASIC zu MITS. 202 00:09:22,970 --> 00:09:25,800 Er verbrachte die Ebene reiten besorgniserregend. 203 00:09:25,800 --> 00:09:28,490 Und zurück in Cambridge Gates war besorgniserregend. 204 00:09:28,490 --> 00:09:32,100 Sie hatten ihre BASIC und getestet es auf dem Emulator gearbeitet hatte. 205 00:09:32,100 --> 00:09:35,444 Aber was, wenn der Emulator war falsch? 206 00:09:35,444 --> 00:09:37,360 JAY PAUL: Wie der Ebene näherte Albuquerque, 207 00:09:37,360 --> 00:09:40,070 Allen erkannt, dass ihre BASIC, jetzt ordentlich enthalten 208 00:09:40,070 --> 00:09:42,460 auf einer kleinen Rolle Lochstreifen, würde 209 00:09:42,460 --> 00:09:44,970 nutzlos ohne einen separaten Programm, eine so genannte Lader, dass 210 00:09:44,970 --> 00:09:47,550 würde die Altair, wie sagen , um das Papierband gelesen 211 00:09:47,550 --> 00:09:49,620 in den Fernschreiber zugeführt. 212 00:09:49,620 --> 00:09:52,970 Er nahm sein Notizbuch und schnell unten ein Ladeprogramm kritzelte 213 00:09:52,970 --> 00:09:56,819 in Assembler, dann manuell übersetzt, die in den 1 und 0 214 00:09:56,819 --> 00:09:57,985 der Altair verstehen würde. 215 00:09:57,985 --> 00:10:00,530 216 00:10:00,530 --> 00:10:03,830 >> HIKARI: Allen erwartete ein sauber, wenig, High-Tech-Unternehmen 217 00:10:03,830 --> 00:10:05,470 von Männern in Anzügen laufen. 218 00:10:05,470 --> 00:10:09,210 So war er überrascht, als Roberts erfüllt ihn am Flughafen sah aus wie einer Ranch 219 00:10:09,210 --> 00:10:10,270 Hand. 220 00:10:10,270 --> 00:10:12,070 Roberts war auch überrascht. 221 00:10:12,070 --> 00:10:16,340 Als er ließ die Harvard Programmierer bei einem teuren Hotel, 222 00:10:16,340 --> 00:10:20,790 Allen musste gestehen, dass er konnte den Raum nicht leisten. 223 00:10:20,790 --> 00:10:24,510 >> JAY PAUL: MITS, selbst, war in einer staubigen Einkaufszentrum entfernt. 224 00:10:24,510 --> 00:10:27,040 Innen auf einem unübersichtlich Werkbank war ein Altair 225 00:10:27,040 --> 00:10:30,390 mit 5 Kilobyte geladen Speicher und durch ein Kabel verbunden 226 00:10:30,390 --> 00:10:32,030 auf einen Fernschreiber. 227 00:10:32,030 --> 00:10:37,200 Roberts und Chief Engineer, Bill Yates, wartete gespannt 228 00:10:37,200 --> 00:10:40,660 als Allen schaltet sein loader Programm in den Altair. 229 00:10:40,660 --> 00:10:44,980 Der Fernschreiber begann tuckern wie es gezogen Papierbandes durch den Bandleser. 230 00:10:44,980 --> 00:10:47,215 Es dauerte vielleicht 15 Minuten , um das Programm zu laden. 231 00:10:47,215 --> 00:10:52,110 Dann abrupt gedruckt der Fernschreiber ein Speicheraufforderung, dann ein fertig Aufforderung 232 00:10:52,110 --> 00:10:55,340 und Allen begann eingeben ein paar Testbefehle. 233 00:10:55,340 --> 00:10:57,400 Zu jedermanns Erstaunen, Die Software funktioniert. 234 00:10:57,400 --> 00:10:58,525 Es gab Fehler, natürlich. 235 00:10:58,525 --> 00:11:02,070 Aber die Hauptsache war, es hat funktioniert. 236 00:11:02,070 --> 00:11:06,570 >> HIKARI: Später auf dem Weg in eine $ 3,00 Mittagessen im Pancho, flog eine Wespe 237 00:11:06,570 --> 00:11:10,470 im Fenster des Aufnahme LKW und stach Allen auf den Arm. 238 00:11:10,470 --> 00:11:13,070 Aber an diesem Punkt nichts könnte die Stimmung verderben. 239 00:11:13,070 --> 00:11:17,210 Der Altair hatte nun ihre BASIC, die erste kommerzielle Software für ein Haus 240 00:11:17,210 --> 00:11:23,260 Computer, von Paul Allen und Bill gemacht Gates, das Geschäft als Microsoft. 241 00:11:23,260 --> 00:11:25,336 >> David J. MALAN: Viele Dank an unsere beiden Leser. 242 00:11:25,336 --> 00:11:30,690 >> [Applaus] 243 00:11:30,690 --> 00:11:32,520 >> David J. MALAN: Jetzt Sie haben Ihre Wahl, 244 00:11:32,520 --> 00:11:35,880 bevor Sie verlassen, von einem glitzernden oder ein Glühen in der dark-- oh, 245 00:11:35,880 --> 00:11:40,810 warten Sie eine Sekunde, wait-- prickelnde und ein Leuchten in der Dunkelheit Elefanten 246 00:11:40,810 --> 00:11:42,534 von CS50 eigenen Cheng Gong. 247 00:11:42,534 --> 00:11:43,450 HIKARI: Aw, danke. 248 00:11:43,450 --> 00:11:45,324 David J. MALAN: Alle Recht, ich danke Ihnen so sehr. 249 00:11:45,324 --> 00:11:49,855 [Applaus] 250 00:11:49,855 --> 00:11:51,105 David J. MALAN: Also wahre Geschichte. 251 00:11:51,105 --> 00:11:54,380 Dies ist, dass alle diese sagen Maschinen und der Leichtigkeit, mit der man 252 00:11:54,380 --> 00:11:56,270 nutzen sie jetzt und nehmen Sie für selbstverständlich, wirklich 253 00:11:56,270 --> 00:12:00,070 begann hier, nur ein paar Schritte von dieser tatsächlichen Theater. 254 00:12:00,070 --> 00:12:03,930 Und jetzt heute, wenn Sie noch nicht, dies ist Maxwell Dworkin, der Computer 255 00:12:03,930 --> 00:12:05,810 Wissenschaften Gebäude, auch um die Ecke. 256 00:12:05,810 --> 00:12:09,760 Und auf der zweiten Etage dieses Gebäude hängen drei Seiten 257 00:12:09,760 --> 00:12:12,740 von der Original-Quellcode, Bill Gates und Paul Allen schrieb. 258 00:12:12,740 --> 00:12:14,770 In der Tat, wenn Sie den Einsatz heran in Ihnen nicht nur sehen können 259 00:12:14,770 --> 00:12:17,350 die Namen in der Originaltyp, aber auch 260 00:12:17,350 --> 00:12:22,100 ihre Unterschriften, die sie schmückte ein paar Jahren, als sie zuletzt besucht. 261 00:12:22,100 --> 00:12:25,800 >> Aber was besonders überzeugend war etwa das ist, was sie sich vorgenommen haben 262 00:12:25,800 --> 00:12:29,760 war es, ein Programm zu schreiben, das wäre ermöglichen anderen Menschen zu schreiben 263 00:12:29,760 --> 00:12:30,950 ihre eigenen Programme. 264 00:12:30,950 --> 00:12:34,280 Zu der Zeit alles, was es mit diese Maschine durch MITS Altair gemacht. 265 00:12:34,280 --> 00:12:40,020 Und alles, was sie brauchte, war ein Weg gefunden so dass es leicht für Bastler und Leute 266 00:12:40,020 --> 00:12:45,300 wie wir in diesem Raum tatsächlich Programm dass ohne das Verständnis unbedingt 267 00:12:45,300 --> 00:12:49,060 Assembler-Code oder Maschinen Code, oder, Gott bewahre, 0 und 1. 268 00:12:49,060 --> 00:12:51,190 Wir Programmierer, wie die in diesem Zimmer, wir 269 00:12:51,190 --> 00:12:54,070 wollen in der Lage sein, um auszudrücken, uns viel mehr wie Pseudo-Code 270 00:12:54,070 --> 00:12:57,330 auch wenn es ein bisschen mehr nit wählerisch, als wir letzte Woche gesprochen. 271 00:12:57,330 --> 00:13:00,970 Wir wollen nicht, Code so schreiben, die Paul Allen und Bill Gates haben. 272 00:13:00,970 --> 00:13:04,850 Wir, stattdessen wollen, Code zu schreiben, dass sieht ein wenig benutzerfreundlich. 273 00:13:04,850 --> 00:13:07,150 >> Nun ist dies eine Sprache wie BASIC bekannt. 274 00:13:07,150 --> 00:13:11,497 Und die Zeilennummern gibt es, was Sie verwenden, um einfach nummerieren Sie die Zeilen Code 275 00:13:11,497 --> 00:13:12,330 dass du schreibst. 276 00:13:12,330 --> 00:13:14,038 Wir haben nicht einmal zu zu tun, dass in diesen Tagen. 277 00:13:14,038 --> 00:13:16,060 Aber sehen Sie hier wie PRINT "Hallo, Welt" 278 00:13:16,060 --> 00:13:18,660 wäre in der Tat vermutlich genau das zu drucken. 279 00:13:18,660 --> 00:13:22,710 Und so was Bill und Paul tat, war Menschen zu ermöglichen, Code wie diesen schreiben 280 00:13:22,710 --> 00:13:27,240 statt von--, wenn Sie einen Blick auf die nehmen Informatik wall-- Code wie diesen. 281 00:13:27,240 --> 00:13:29,290 >> Tatsächlich CS50 kürzlich Gelegenheit hatte, 282 00:13:29,290 --> 00:13:32,540 mit Professor Harry Lewis sitzen in der Informatik-Abteilung, die sich 283 00:13:32,540 --> 00:13:34,640 tatsächlich gelehrt Bill Vor einigen Jahren Gates, 284 00:13:34,640 --> 00:13:38,460 und steht hier vor diese drei Seiten von Auszügen. 285 00:13:38,460 --> 00:13:39,560 Lassen Sie uns einen Blick. 286 00:13:39,560 --> 00:13:45,520 >> HARRY Lewis: Was Sie hier haben, ist eine Angebot eines frühen Stück Software 287 00:13:45,520 --> 00:13:50,240 von Bill Gates und Paul geschrieben Allen, die Gründer von Microsoft. 288 00:13:50,240 --> 00:13:52,570 So dass der Code ist interessant aus zwei Gründen. 289 00:13:52,570 --> 00:13:55,480 Zunächst wurde es Microsoft Das erste Produkt, 290 00:13:55,480 --> 00:14:01,810 , die ein Interpreter für war die Programmiersprache BASIC. 291 00:14:01,810 --> 00:14:04,940 Und zweitens war einer der ersten Versuche 292 00:14:04,940 --> 00:14:10,580 einen Dolmetscher, so gewöhnlichen erstellen Menschen könnten PCs zu verwenden. 293 00:14:10,580 --> 00:14:12,670 >> So Bill Gates war ein Bachelor in Harvard. 294 00:14:12,670 --> 00:14:14,820 Ich begann Unterricht an der Harvard im Jahr 1974. 295 00:14:14,820 --> 00:14:16,560 Dies wurde 1975 durchgeführt. 296 00:14:16,560 --> 00:14:20,180 So war es in seiner Karriere früh und am Anfang meiner Karriere. 297 00:14:20,180 --> 00:14:23,790 Ich eigentlich in lehrte Bill ein Kurs um diese Zeit. 298 00:14:23,790 --> 00:14:27,130 Paul Allen war nicht ein Harvard-Student, aber er 299 00:14:27,130 --> 00:14:31,020 war eine der High School Klassenkamerad von Bill Gates. 300 00:14:31,020 --> 00:14:33,740 Wenn Sie kommen und schauen bei der Auflistung, werden Sie 301 00:14:33,740 --> 00:14:36,230 tatsächlich eine dritte zu finden Name, Monte Davidoff, 302 00:14:36,230 --> 00:14:39,260 die Gates 'Klassenkamerad war hier in Harvard. 303 00:14:39,260 --> 00:14:41,340 >> OK, hier ist so ein interessanten Kommentar hier oben. 304 00:14:41,340 --> 00:14:47,150 Er sagt: "In 4K kann Quadratwurzel löschen aber für Schleifen sollte immer noch funktionieren. " 305 00:14:47,150 --> 00:14:53,080 OK, also, was das bedeutet, es ist, dass zwei Möglichkeiten, dieses Programm zu kompilieren. 306 00:14:53,080 --> 00:14:57,860 Einer war auf einer Version laufen dieser Altair Computer 307 00:14:57,860 --> 00:15:04,310 dass nur hatte 4K Worte Speicher 4096 Speicherworte. 308 00:15:04,310 --> 00:15:07,050 Aber die große Version hatte 8K. 309 00:15:07,050 --> 00:15:09,770 Und so was sagt, ist dies daß im 4K-Version 310 00:15:09,770 --> 00:15:12,770 Sie hatte einige löschen Code, um es fit. 311 00:15:12,770 --> 00:15:14,790 Und eines der Dinge, die gelöscht werden würde 312 00:15:14,790 --> 00:15:16,290 würde die Quadratwurzel Routine werden. 313 00:15:16,290 --> 00:15:20,360 Aber anscheinend die for-Schleifen sollten noch 314 00:15:20,360 --> 00:15:26,392 arbeiten, auch wenn Sie die Erstellung unten bist nur für die 4K-Version des Computers. 315 00:15:26,392 --> 00:15:29,350 David J. MALAN: Also eines der Themen, wie wir in der Informatik sehen, 316 00:15:29,350 --> 00:15:31,430 ist dieser Begriff der Schichtung und Abstraktion, 317 00:15:31,430 --> 00:15:34,670 und wirklich auf den Schultern von Leuten, die vor uns gekommen sind, nicht 318 00:15:34,670 --> 00:15:37,890 Anders als einige der Bill Gates und Paul Allen Erzählung hier. 319 00:15:37,890 --> 00:15:40,080 Und was das bedeutet, ist dass wir heute für selbst 320 00:15:40,080 --> 00:15:43,490 gewährt, dass die Dinge tatsächlich für uns einfacher Code zu schreiben. 321 00:15:43,490 --> 00:15:47,170 Tatsächlich Code, wie wir am Freitag sagte, ist mehr technisch als Source-Code bekannt. 322 00:15:47,170 --> 00:15:52,210 Und es ist diese englische ähnliche Syntax das ist mehr richtig und besser definierten 323 00:15:52,210 --> 00:15:55,480 als so etwas wie Pseudo-Code, für die es keine formale Definition. 324 00:15:55,480 --> 00:15:58,320 >> Und heute, was wir zu konzentrieren, ist Quellcode 325 00:15:58,320 --> 00:16:01,010 das sieht aus wie dieses, das zwar auf den ersten Blick 326 00:16:01,010 --> 00:16:02,690 sieht völlig kryptisch. 327 00:16:02,690 --> 00:16:08,540 Und ehrlich gesagt, es ist viel mehr ästhetisch komplexer als die zugrunde liegende Programm ist. 328 00:16:08,540 --> 00:16:13,300 All dies Programm tut, Abruf wird was haben wir gesagt? 329 00:16:13,300 --> 00:16:14,990 Er druckt nur "Hallo Welt." 330 00:16:14,990 --> 00:16:19,600 Und doch alle Sachen, die wir brauchen, schauen um diesem sehr einfachen Satz zu wickeln. 331 00:16:19,600 --> 00:16:21,750 Aber es dauerte nicht lange alle Diese Linien und mehr 332 00:16:21,750 --> 00:16:24,800 wird viel besser für Sie Sinn machen. 333 00:16:24,800 --> 00:16:26,940 >> Und die Strömung ist wie folgt. 334 00:16:26,940 --> 00:16:31,220 Was wir brauchen, die uns zur Verfügung ist es, Code zu nehmen, wie Quelle 335 00:16:31,220 --> 00:16:32,340 Code, den wir gerade gesehen haben. 336 00:16:32,340 --> 00:16:35,060 Und wir brauchen ein neues Programm um es zu durchlaufen. 337 00:16:35,060 --> 00:16:39,130 Wir müssen Algorithmen, kann Source-Code zu konvertieren, wie dieses, 338 00:16:39,130 --> 00:16:41,932 in Objektcode, die 0 und 1. 339 00:16:41,932 --> 00:16:43,890 In anderen Worten, was wir gehen heute zu lernen 340 00:16:43,890 --> 00:16:46,620 wird, wie dies zu tun, schreibe Quellcode bis oben, 341 00:16:46,620 --> 00:16:49,930 geben sie als Eingang zu einem besonderen Programm als Compiler bekannt, 342 00:16:49,930 --> 00:16:52,140 und wir werden Objekt-Code zu erzeugen. 343 00:16:52,140 --> 00:16:54,600 Das ist nur eine andere Art von sagen wir etwas nehmen 344 00:16:54,600 --> 00:16:58,350 Das sieht dann so, geben sie in ein Programm namens einen Compiler, 345 00:16:58,350 --> 00:17:01,210 Herstellung Objektcode das sieht so aus. 346 00:17:01,210 --> 00:17:04,720 >> Das sind also buchstäblich die Muster von 0 und 1 347 00:17:04,720 --> 00:17:08,550 , die von einem verstanden werden Intel-Computer in diesen Tagen, 348 00:17:08,550 --> 00:17:12,480 dass, wenn die von der CPU interpretiert, die Köpfe innerhalb eines Computers, 349 00:17:12,480 --> 00:17:16,130 buchstäblich ausdrucken, Ganz einfach, "Hallo Welt". 350 00:17:16,130 --> 00:17:19,670 Jetzt gibt es viel mehr 0 und 1, als Sie hoffe, dass vielleicht für notwendig. 351 00:17:19,670 --> 00:17:22,520 Aber das ist, weil wir bauen auf einem viel Komplexität 352 00:17:22,520 --> 00:17:24,270 dass wir von nun an für selbstverständlich halten. 353 00:17:24,270 --> 00:17:27,869 Mit anderen Worten, viele kluge Leute haben uns eine Menge coole Tools gegeben 354 00:17:27,869 --> 00:17:32,480 und leistungsfähige Software, mit der wir können jetzt eigene Projekte. 355 00:17:32,480 --> 00:17:33,400 >> Also lassen Sie uns beginnen. 356 00:17:33,400 --> 00:17:36,640 Während im letzten Freitag, und für Problem-Set 0 diese Woche, 357 00:17:36,640 --> 00:17:39,000 Sie werden in einer Spiel werden Welt, die so aussieht. 358 00:17:39,000 --> 00:17:42,180 Ab heute und für Problem Set 1 nächste Woche, den Code 359 00:17:42,180 --> 00:17:45,410 wird sich ein wenig mehr sehen kryptisch, aber funktional ist 360 00:17:45,410 --> 00:17:46,940 geht das gleiche zu sein. 361 00:17:46,940 --> 00:17:50,770 So Ankündigung, top ist Scratch, Boden ist C. Ehrlich gesagt Scratch 362 00:17:50,770 --> 00:17:52,780 ist viel mehr Benutzer freundlich und zugänglich. 363 00:17:52,780 --> 00:17:56,890 Aber wenn Sie jetzt vergleichen visuell oben nach Boden, es ist irgendwie eins zu eins 364 00:17:56,890 --> 00:17:59,690 Korrespondenz zwischen der Puzzleteile und die Sprache 365 00:17:59,690 --> 00:18:00,870 wir sind dabei, mit zu spielen. 366 00:18:00,870 --> 00:18:04,420 Insbesondere heißt, die blaue Puzzleteil bis oben, 367 00:18:04,420 --> 00:18:08,370 ist offenbar äquivalent zu welchem ​​Stichwort oder spezielle Begriff in dieser Sprache 368 00:18:08,370 --> 00:18:09,062 namens C? 369 00:18:09,062 --> 00:18:09,770 ZIELGRUPPE: Printf. 370 00:18:09,770 --> 00:18:10,728 David J. MALAN printf. 371 00:18:10,728 --> 00:18:12,140 Das bedeutet, formatierte Druck. 372 00:18:12,140 --> 00:18:15,240 Und das ist nur eine Phantasie Art zu sagen, printf in C 373 00:18:15,240 --> 00:18:18,615 wird, eine Erklärung oder eine Funktion sein die Drucke etwas auf den Bildschirm. 374 00:18:18,615 --> 00:18:19,990 Was bedeutet es für den Bildschirm zu drucken? 375 00:18:19,990 --> 00:18:23,627 Was auch immer Sie es sagen, nach innen von Zitaten, innerhalb von Klammern. 376 00:18:23,627 --> 00:18:25,460 Also noch einmal, zugegeben, es gibt eine Menge Sachen 377 00:18:25,460 --> 00:18:27,990 dass Sie im Auge zu behalten, Klammern, Anführungszeichen, Semikolon, 378 00:18:27,990 --> 00:18:28,656 und all dies. 379 00:18:28,656 --> 00:18:30,600 Aber all das ist eine Art der neben dem Punkt. 380 00:18:30,600 --> 00:18:33,660 Die interessant Mitnehmen für jetzt ist, dass das Wort Block in Scratch 381 00:18:33,660 --> 00:18:37,520 ist so ziemlich gleichwertig die printf-Anweisung in C 382 00:18:37,520 --> 00:18:41,390 >> Inzwischen hat die gelbe Puzzleteil bis oben, wenn grüne Flagge angeklickt wird, 383 00:18:41,390 --> 00:18:44,736 vermutlich äquivalent zu dem, was hier Keyword? 384 00:18:44,736 --> 00:18:45,360 ZIELGRUPPE: Main. 385 00:18:45,360 --> 00:18:46,359 David J. MALAN: Also Haupt. 386 00:18:46,359 --> 00:18:47,410 Vielleicht int, vielleicht nichtig. 387 00:18:47,410 --> 00:18:51,280 Aber Haupt Art von Sounds wie es ist wichtig, und ist es auch. 388 00:18:51,280 --> 00:18:54,080 Also, wenn grüne Flagge angeklickt ist wieder das Puzzlestück 389 00:18:54,080 --> 00:18:56,390 dass startet ein Scratch gesamte Programm. 390 00:18:56,390 --> 00:19:02,140 Aber wir werden jetzt telefonieren dass die Haupt, diese Funktion als Haupt bekannt. 391 00:19:02,140 --> 00:19:06,410 >> Nun wir werden mittlerweile verallgemeinern dies wie folgt. 392 00:19:06,410 --> 00:19:08,780 Wir nennen könnte sagen, eine Funktion. 393 00:19:08,780 --> 00:19:10,580 Und es aussehen könnte, speziell wie diese. 394 00:19:10,580 --> 00:19:11,770 Nun, was ist mit Schleifen? 395 00:19:11,770 --> 00:19:16,540 Wenn wir die Konvertierung zu starten wollen oder Übersetzen mehr in Scratch zu C, 396 00:19:16,540 --> 00:19:19,400 dieses Ding hier offenbar nur sagt "Hallo Welt" für immer. 397 00:19:19,400 --> 00:19:23,060 Also, wenn Sie diese zuordnen Skripte mit einer Katze im Scratch, 398 00:19:23,060 --> 00:19:26,560 es nur geht, um immer wieder sagen in einer Art von Comic-Blase, 399 00:19:26,560 --> 00:19:29,922 "Hallo Welt, hallo Welt, hallo Welt ", bis zum Überdruss, für immer. 400 00:19:29,922 --> 00:19:33,130 Wenn wir etwas tun wollen ähnlich C, es wird schauen ein wenig kryptisch. 401 00:19:33,130 --> 00:19:35,463 Aber wir können das gleiche zu erreichen Ergebnisse, wie wir schließlich 402 00:19:35,463 --> 00:19:36,861 herauszufinden, mit Syntax wie diese. 403 00:19:36,861 --> 00:19:39,360 Ich werde printf wieder zu benutzen, denn am Ende des Tages 404 00:19:39,360 --> 00:19:42,040 Ich möchte print "Hallo Welt". 405 00:19:42,040 --> 00:19:45,610 Und ich bin offenbar mit einem Stichwort, das nicht immer. 406 00:19:45,610 --> 00:19:47,320 Es ist stattdessen das Wort, während. 407 00:19:47,320 --> 00:19:49,650 Aber nur semantisch in Englisch, während Art von 408 00:19:49,650 --> 00:19:52,120 schlägt eine Art Schleife oder Zyklus. 409 00:19:52,120 --> 00:19:55,070 >> So dass passiert zu sein, das Stichwort, das C verwendet. 410 00:19:55,070 --> 00:20:00,700 Und während wahr ist, warum tut, während wahr effektiv für immer das? 411 00:20:00,700 --> 00:20:04,240 Nun, während, wie wir bald schätzen umso mehr, 412 00:20:04,240 --> 00:20:08,140 hat diese in Klammern daneben wo Sie einen Booleschen Ausdruck setzen können. 413 00:20:08,140 --> 00:20:11,360 Und so lange, daß Ausdruck ist wahr, dieser Code, 414 00:20:11,360 --> 00:20:14,750 zwischen diesen beiden bezeichnet geschweiften Klammern, wie wir sie nennen, 415 00:20:14,750 --> 00:20:16,880 einfach weiter immer wieder läuft. 416 00:20:16,880 --> 00:20:18,410 >> So wahr ist wahr. 417 00:20:18,410 --> 00:20:20,900 So, während wahre Mittel nur tun dies immer. 418 00:20:20,900 --> 00:20:23,480 Es ist fast ein dummer zu konstruieren, um sich auszudrücken. 419 00:20:23,480 --> 00:20:26,590 Aber es gab keinen immer Schlüsselwort in C Es war Zeit. 420 00:20:26,590 --> 00:20:29,390 Und es war eine sehr einfache Boolean Ausdruck wie wahr. 421 00:20:29,390 --> 00:20:32,210 Und so werden wir sehen,, erreicht das gleiche Ergebnis. 422 00:20:32,210 --> 00:20:33,890 >> Wie sonst könnte man eine Schleife zu implementieren? 423 00:20:33,890 --> 00:20:36,980 Nun, in Scratch Dir vielleicht Festcode eine bestimmte Anzahl 424 00:20:36,980 --> 00:20:39,430 der Iterationen in der Schleife hier. 425 00:20:39,430 --> 00:20:43,210 Und so, dass ist genau das, was wir könnte in dieser Version von C zu tun, 426 00:20:43,210 --> 00:20:46,140 wobei wir eine for-Schleife so genannte. 427 00:20:46,140 --> 00:20:49,850 Und die for-Schleife wird hier zu durchlaufen, etwas kryptisch, 428 00:20:49,850 --> 00:20:54,100 von dem Wert 0 auf bis um aber kleiner als 10 ist. 429 00:20:54,100 --> 00:20:55,955 >> Jetzt Variablen in Scratch. 430 00:20:55,955 --> 00:20:57,830 Sie werden vielleicht nicht gehabt haben Anlass, diese zu verwenden. 431 00:20:57,830 --> 00:21:02,516 Aber was ist der Punkt, in der Regel einer Variablen haben wir gesagt letzte Woche? 432 00:21:02,516 --> 00:21:03,015 Was ist das? 433 00:21:03,015 --> 00:21:03,780 >> ZIELGRUPPE: Punkte. 434 00:21:03,780 --> 00:21:05,200 >> David J. MALAN: Zu Punkt? 435 00:21:05,200 --> 00:21:05,700 Oh, verweist. 436 00:21:05,700 --> 00:21:07,620 OK, die Verfolgung von Punkten, zum Beispiel in einem Spiel. 437 00:21:07,620 --> 00:21:09,510 Oder allgemeiner tun was mit der Variablen? 438 00:21:09,510 --> 00:21:10,450 Was ist der Nutzen davon? 439 00:21:10,450 --> 00:21:10,825 >> ZIELGRUPPE: Speicher. 440 00:21:10,825 --> 00:21:11,750 >> David J. MALAN: Ja, so Speicher. 441 00:21:11,750 --> 00:21:13,000 Es ist etwas für die Speicherung. 442 00:21:13,000 --> 00:21:17,336 Und die Art von dummen visuelle ich letzte Mal war, als dieser Glasschale. 443 00:21:17,336 --> 00:21:19,710 Und wenn wir zu speichern wollte etwas in einer Variablen, 444 00:21:19,710 --> 00:21:21,918 zum Beispiel jetzt die Wert ist, weil es sechs 445 00:21:21,918 --> 00:21:23,450 sind sechs Tischtennisbälle in hier. 446 00:21:23,450 --> 00:21:26,158 Es ist nur eine Art von Speicher Container, der unter der Haube 447 00:21:26,158 --> 00:21:30,030 wird mit den Bits, 0 und 1 umgesetzt, jedoch ein Computer passiert, das zu tun. 448 00:21:30,030 --> 00:21:32,900 >> So in Scratch, wenn wir wollen eine Variable haben, 449 00:21:32,900 --> 00:21:34,840 können wir eine orange-Block wie folgt verwenden. 450 00:21:34,840 --> 00:21:37,050 Wir werden diese Zähler nennen in diesem speziellen Fall. 451 00:21:37,050 --> 00:21:38,890 Ich initialisiert auf 0. 452 00:21:38,890 --> 00:21:41,080 Und was es ich dann tun? 453 00:21:41,080 --> 00:21:44,780 Für immer, sagen Zähler, die, wenn Sie spielen mit, dass in Scratch, 454 00:21:44,780 --> 00:21:45,780 Sie sehen nur Kratzer. 455 00:21:45,780 --> 00:21:49,920 Die Katze oder was auch immer Sie anziehen Kostüm ihm wird die Zahl in Frage zu sprechen. 456 00:21:49,920 --> 00:21:52,840 >> Änderungszähler um 1 ist wie um 1 erhöht. 457 00:21:52,840 --> 00:21:56,580 Und so ist dies zu gehen zählen, was so was? 458 00:21:56,580 --> 00:21:59,114 Von 0 til Infinity oder bis Scratch Pausen, 459 00:21:59,114 --> 00:22:01,030 oder bis Sie eine Art verlieren das Interesse an beobachten 460 00:22:01,030 --> 00:22:02,650 wie hoch er tatsächlich zählen. 461 00:22:02,650 --> 00:22:04,800 >> Also, wie könnten wir wandeln diese zu C? 462 00:22:04,800 --> 00:22:06,480 Es wird schauen ein wenig kryptisch. 463 00:22:06,480 --> 00:22:08,896 Aber noch einmal, wenn Sie bei jedem Blick dieser Leitungen einzeln 464 00:22:08,896 --> 00:22:10,410 sie Art von Formation im Allgemeinen. 465 00:22:10,410 --> 00:22:13,526 Also scheinbar int zu gehen haben eine besondere Bedeutung in C. 466 00:22:13,526 --> 00:22:14,400 Wir werden das wieder zu sehen. 467 00:22:14,400 --> 00:22:15,810 Nebenbei bedeutet Ganzzahl. 468 00:22:15,810 --> 00:22:16,990 Also es bedeutet nur, Nummer. 469 00:22:16,990 --> 00:22:18,920 Also das ist die Art der Glasschüssel ich will, eine 470 00:22:18,920 --> 00:22:21,120 dass die Zahlen speichern kann, Ping-Pong-Bälle nicht. 471 00:22:21,120 --> 00:22:25,520 Und ich werde das Gleichheitszeichen verwenden da, um es zuordnen einen Wert von 0 ist. 472 00:22:25,520 --> 00:22:29,440 Also das ist ganz wie Set Zähler auf 0, aber in C. 473 00:22:29,440 --> 00:22:32,840 >> Unterdessen, während wahr, war, dass Äquivalent, natürlich, für immer, 474 00:22:32,840 --> 00:22:35,980 auch wenn es ein wenig kryptisch, und dann innerhalb der geschweiften Klammern. 475 00:22:35,980 --> 00:22:39,188 Und Sie diese geschweiften Klammern denken kann, die Sie auf der Tastatur eingeben, 476 00:22:39,188 --> 00:22:43,110 als wirklich zu sein wie die Krümmung in Diese gelben Schleife Blöcke in Scratch. 477 00:22:43,110 --> 00:22:45,700 Es umfasst mehrere Zeilen von Code. 478 00:22:45,700 --> 00:22:48,120 >> Printf ist immer ein wenig beängstigend, weil ich jetzt 479 00:22:48,120 --> 00:22:51,120 siehe zitiert nicht nur in Klammern. 480 00:22:51,120 --> 00:22:55,160 Aber was ist sonst noch neu syntaktisch in diesem Beispiel? 481 00:22:55,160 --> 00:22:57,300 Es gibt ein Prozent d. 482 00:22:57,300 --> 00:22:58,551 Und dann Backslash n ist da. 483 00:22:58,551 --> 00:23:00,883 Wir sahen, dass vor, auch obwohl ich nicht erwähnen. 484 00:23:00,883 --> 00:23:01,886 Dann gibt es noch ein Komma. 485 00:23:01,886 --> 00:23:03,010 Und dann gibt es einen Zähler. 486 00:23:03,010 --> 00:23:05,010 >> Aber wir werden sehen, in nur Moment, dass dies nur 487 00:23:05,010 --> 00:23:09,080 ein Standard-Art zu sagen, ein Druck "Dezimalzahl", Zitat, Zitat Ende, 488 00:23:09,080 --> 00:23:10,500 einige Dezimalzahl. 489 00:23:10,500 --> 00:23:13,370 Aber ich werde dir später was das Dezimalzahl ist. 490 00:23:13,370 --> 00:23:16,835 Also die Tatsache, dass es ein Komma in dieser Zeile printf Sprichwort, 491 00:23:16,835 --> 00:23:18,710 bedeutet, gehen Sie vor und Druck einige Dezimalzahl. 492 00:23:18,710 --> 00:23:23,110 Oh, und übrigens, ist die Anzahl unabhängig von dem Wert dieser Variablen ist. 493 00:23:23,110 --> 00:23:25,880 Und so mehr zu machen Klar, werden wir ein Beispiel zu sehen 494 00:23:25,880 --> 00:23:30,930 es dauerte nicht lange mit genau printf im Rahmen des echten C-Programme. 495 00:23:30,930 --> 00:23:33,472 >> Jetzt nur noch zum Abschluss einige dieser Konstrukte. 496 00:23:33,472 --> 00:23:36,680 Boolesche Ausdrücke, haben Sie möglicherweise nicht Anlass, diese in Ihrem Programm verwenden 497 00:23:36,680 --> 00:23:39,450 aber Sie könnten sehr gut, vor allem, wenn unter Bedingungen. 498 00:23:39,450 --> 00:23:43,460 Und so sind diese zwei Beispiele aus Kratzen meine, wenn x kleiner als y ist, 499 00:23:43,460 --> 00:23:48,770 oder wenn x kleiner als y und y kleiner ist als z, wie könnten wir übersetzen das? 500 00:23:48,770 --> 00:23:50,810 >> Nun, in C, es ist nur werde so aussehen. 501 00:23:50,810 --> 00:23:55,300 Ein wenig kryptisch, mehr Klammern, einige seltsame Et-Zeichen, aber im Grunde 502 00:23:55,300 --> 00:23:59,160 die Ideen sind so einfach, wie sie sind in der Puzzle-Stück Welt. 503 00:23:59,160 --> 00:24:02,690 Wir einfach überprüfen, ob etwas weniger als etwas anderes. 504 00:24:02,690 --> 00:24:03,910 >> Wie wäre es mit Bedingungen? 505 00:24:03,910 --> 00:24:09,710 Auf den Punkt gebracht in Englisch, was hat das Stück von Scratch-Code haben würden Sie sagen? 506 00:24:09,710 --> 00:24:11,050 >> ZIELGRUPPE: Vergleicht zwei Zahlen. 507 00:24:11,050 --> 00:24:13,760 >> David J. MALAN: Vergleicht zwei Nummern, und wenn x kleiner als y ist, 508 00:24:13,760 --> 00:24:14,860 es sagt so viel. 509 00:24:14,860 --> 00:24:18,080 Wenn x größer als y ist, es sagt so viel, sonst 510 00:24:18,080 --> 00:24:20,740 wenn x gleich y ist es sagt so viel. 511 00:24:20,740 --> 00:24:22,180 Wo habe x und y kommen? 512 00:24:22,180 --> 00:24:22,680 Wer weiß. 513 00:24:22,680 --> 00:24:25,380 Dieses Stück von Scratch Code ist aus dem Zusammenhang gerissen. 514 00:24:25,380 --> 00:24:29,050 Aber was wir jetzt tun wollen, ist zu übersetzen dies nur für einen Moment, um zu sehen. 515 00:24:29,050 --> 00:24:31,660 >> So wie Sie sich bequem in dieser Woche in Problem-Set 516 00:24:31,660 --> 00:24:34,190 0 spielen in dieser Welt auf der linken Seite, zu verwirklichen 517 00:24:34,190 --> 00:24:36,940 , dass die Ideen nicht ändern diese Woche oder nächste oder darüber hinaus. 518 00:24:36,940 --> 00:24:38,690 Tragen wir einfach zu Schreiben beginnen Dinge 519 00:24:38,690 --> 00:24:41,240 in einer anderen Weise mit den Tastatur anstelle der Maus. 520 00:24:41,240 --> 00:24:44,577 >> So dass, wenn x kleiner als y ist, und es gibt einige Klammern gibt, 521 00:24:44,577 --> 00:24:47,160 dann gibt es einige geschweiften Klammern erneut, um Art von kapseln 522 00:24:47,160 --> 00:24:48,970 genau wie die gelben Puzzleteile zu tun. 523 00:24:48,970 --> 00:24:53,000 Und ich werde printf x kleiner als y und so weiter. 524 00:24:53,000 --> 00:24:56,540 >> Das Schöne an C, wie Sie hier sehen können, 525 00:24:56,540 --> 00:25:00,480 ist, dass Sie diese Verschachtelung nicht bekommen, nisten, nisten, das ist unbedingt 526 00:25:00,480 --> 00:25:02,220 gehen, um den Code auf der rechten Seite zu schieben. 527 00:25:02,220 --> 00:25:04,990 Sie können statt alles zu haben Lineup ordentlich gefallen. 528 00:25:04,990 --> 00:25:08,960 Aber das ist nur ein ästhetisches Detail wir uns wieder sehen, bevor lang. 529 00:25:08,960 --> 00:25:09,660 >> In Ordnung. 530 00:25:09,660 --> 00:25:13,290 Also das bringt uns zurück zu Diese kryptische suchen Programm. 531 00:25:13,290 --> 00:25:15,180 Lassen Sie uns einige Code tatsächlich zu schreiben. 532 00:25:15,180 --> 00:25:16,830 Nun, wie denken Sie über das Schreiben von Code gehen? 533 00:25:16,830 --> 00:25:21,310 All die Jahre, die Sie besessen haben einem Mac oder PC, Desktop oder Laptop, 534 00:25:21,310 --> 00:25:24,520 Sie haben tatsächlich die Möglichkeit hatte zu dem Schreiben beginnen Programmiercode. 535 00:25:24,520 --> 00:25:27,050 Aber du bist wahrscheinlich fehlt eine spezielle Art von Programm. 536 00:25:27,050 --> 00:25:28,470 Sie können sicher Code schreiben. 537 00:25:28,470 --> 00:25:30,740 Aber man kann nicht unbedingt, aus der Box, 538 00:25:30,740 --> 00:25:34,210 konvertieren, dass Quellcode in Objektcode, die 0 und 1 539 00:25:34,210 --> 00:25:35,619 ohne das, was auf Ihrem Computer? 540 00:25:35,619 --> 00:25:36,410 ZIELGRUPPE: Compiler. 541 00:25:36,410 --> 00:25:37,630 David J. MALAN: Also ein Compiler, richtig. 542 00:25:37,630 --> 00:25:39,730 Jetzt sind die meisten von Ihnen wahrscheinlich besitzen nicht einen Compiler, 543 00:25:39,730 --> 00:25:41,259 habe noch nie einen Compiler heruntergeladen. 544 00:25:41,259 --> 00:25:44,300 Aber Sie werden sehen, Sie können es herunterladen wie die meisten anderen Stück Software. 545 00:25:44,300 --> 00:25:47,470 In der Welt des Mac OS, können Sie downloaden oder bereits heruntergeladen 546 00:25:47,470 --> 00:25:50,437 etwas namens Xcode oder GCC oder Clang. 547 00:25:50,437 --> 00:25:52,270 Wenn Sie von der kommen Windows-Welt, die Dir vielleicht 548 00:25:52,270 --> 00:25:56,190 Visual Studio heruntergeladen, Visual Basic, Umgebungen wie das. 549 00:25:56,190 --> 00:25:59,200 Es gibt Dutzende von Compilern in diesen Tagen, die Sie verwenden können. 550 00:25:59,200 --> 00:26:01,940 Aber die kurze von hier ist, dass es ein Schmerz sein 551 00:26:01,940 --> 00:26:04,480 und, ehrlich gesagt, ein technologischer Alptraum für hunderte 552 00:26:04,480 --> 00:26:07,680 von Menschen mit unterschiedlichen Computer-Konfigurationen, um alle 553 00:26:07,680 --> 00:26:09,800 konfigurieren ihre Maschinen in genau der gleichen Weise 554 00:26:09,800 --> 00:26:11,700 so dass wir alle auf der gleichen Seite befinden. 555 00:26:11,700 --> 00:26:15,240 >> Also, was wir stattdessen tun in CS50 ist geben wir Ihnen 556 00:26:15,240 --> 00:26:18,349 ein Standard-Umgebung, eine Linux-Umgebung, ist 557 00:26:18,349 --> 00:26:20,140 gehen, um ein wenig aussehen so etwas wie dieses. 558 00:26:20,140 --> 00:26:22,980 Sie werden mehr von diesem in die sehen Problem Set 1-Spezifikation, die 559 00:26:22,980 --> 00:26:25,330 online gehen an diesem Freitag Abend. 560 00:26:25,330 --> 00:26:28,360 >> Und was das bedeutet ist, dass Sie von nun an 561 00:26:28,360 --> 00:26:32,060 sind in der Lage zu sein, herunterladen und installieren ein Programm 562 00:26:32,060 --> 00:26:33,650 genannt CS50 Appliance. 563 00:26:33,650 --> 00:26:36,275 Und du wirst download und installieren Sie ein anderes Programm namens 564 00:26:36,275 --> 00:26:40,300 ein Hypervisor, der nur eine ist andere Art, dies zu erreichen. 565 00:26:40,300 --> 00:26:44,600 Egal, ob Sie einen Mac oder PC oder besitzen Linux-Rechner oder ein Solaris-Computer, 566 00:26:44,600 --> 00:26:46,830 oder was auch immer verrückt Betriebs System Sie laufen, 567 00:26:46,830 --> 00:26:49,820 Sie gehen, um ein Programm download genannt Hypervisor, ist 568 00:26:49,820 --> 00:26:53,350 werde die CS50 laufen Gerät auf Ihrem Computer 569 00:26:53,350 --> 00:26:55,430 Egal, was Ihr Betriebssystem ist. 570 00:26:55,430 --> 00:27:00,640 Ein Hypervisor mit anderen Worten wandelt unsere Sachen zu welcher Sprache auch immer, 571 00:27:00,640 --> 00:27:03,850 was auch immer die Anweisungen Ihres eigenen Computer versteht. 572 00:27:03,850 --> 00:27:04,962 >> Das ist also eine Schichtung. 573 00:27:04,962 --> 00:27:06,920 Und wieder ist diese Art von thematischen in Computer 574 00:27:06,920 --> 00:27:08,722 Wissenschaft, das Gebäude am Anfang der Dinge. 575 00:27:08,722 --> 00:27:09,680 Vielleicht haben Sie von Windows. 576 00:27:09,680 --> 00:27:10,710 Vielleicht haben Sie Mac OS. 577 00:27:10,710 --> 00:27:12,960 Aber ab nächster Woche sind Sie werde heruntergeladen haben 578 00:27:12,960 --> 00:27:14,980 eine kostenlose Software rief der Hypervisor. 579 00:27:14,980 --> 00:27:17,800 Du wirst ein Stück heruntergeladen haben Software namens der CS50 Appliance. 580 00:27:17,800 --> 00:27:21,050 >> Das wird in den Hypervisor laufen, die gehen, um auf Ihrem Computer ausführen. 581 00:27:21,050 --> 00:27:23,030 Und das Endergebnis ist, dass alle von uns 582 00:27:23,030 --> 00:27:26,220 haben ein einfaches Fenster wie diese auf Ihrem Mac oder PC 583 00:27:26,220 --> 00:27:30,160 Das gibt uns die Illusion von allen dasselbe Betriebssystem, 584 00:27:30,160 --> 00:27:32,800 ohne weitere Auswirkungen auf Ihren Computer. 585 00:27:32,800 --> 00:27:34,870 Und Sie können den Vollbild es und im Wesentlichen verhalten 586 00:27:34,870 --> 00:27:37,550 als ob Sie laufen ein Betriebssystem namens Linux, 587 00:27:37,550 --> 00:27:40,270 Das ist, was der CS50 Appliance basiert. 588 00:27:40,270 --> 00:27:42,930 >> Lassen Sie uns also tatsächlich nutzen diese Jetzt, ein Programm zu schreiben. 589 00:27:42,930 --> 00:27:45,450 Sie können ein Programm schreiben mit Microsoft Word. 590 00:27:45,450 --> 00:27:48,160 Sie können ein Programm schreiben mit TextEdit oder Notepad, 591 00:27:48,160 --> 00:27:51,880 oder WordPad oder so ziemlich jedem Wort Verarbeitungsprogramm Sie je benutzt habe. 592 00:27:51,880 --> 00:27:55,174 Aber die Realität ist, sollten Sie nicht verwenden wirklich eines dieser Programme. 593 00:27:55,174 --> 00:27:57,840 Sie sicherlich nicht verwenden sollte so etwas wie Microsoft Word, die 594 00:27:57,840 --> 00:28:01,120 hat mutig ausgerichtet und Kursivschrift und größere Schriften und kleineren Schriften, 595 00:28:01,120 --> 00:28:03,560 weil der Computer nicht kümmern, dass jeder. 596 00:28:03,560 --> 00:28:05,600 Alle der Computer werde über ist egal 597 00:28:05,600 --> 00:28:09,040 Englisch wie Anweisungen in C geschrieben 598 00:28:09,040 --> 00:28:12,050 >> Also, was wir tun, im Inneren des CS50-Appliance 599 00:28:12,050 --> 00:28:14,290 ist ein Programm verwenden, frei verfügbar ist, und es 600 00:28:14,290 --> 00:28:17,360 in dieser vorinstalliert Gerät, genannt Gedit. 601 00:28:17,360 --> 00:28:22,280 Und Gedit ist nur ein super einfach Texteditor wie TextEdit Mac OS ist, 602 00:28:22,280 --> 00:28:26,200 wie Windows Notepad, die zu gehen ist schauen ein wenig so etwas wie dieses. 603 00:28:26,200 --> 00:28:28,910 >> Lassen Sie uns also eigentlich nicht Blick auf Folien dafür. 604 00:28:28,910 --> 00:28:32,580 Aber lassen Sie uns gehen tatsächlich in die Umwelt selbst. 605 00:28:32,580 --> 00:28:36,090 Ich werde weitermachen und melden Sie sich an, in dieser anderen Fenster, 606 00:28:36,090 --> 00:28:40,910 meine CS50 Appliance, die ich habe auf meinem Laptop vorinstalliert hier. 607 00:28:40,910 --> 00:28:43,771 >> Beachten Sie, dass, wie Windows und Mac OS, es hat einige Menüs. 608 00:28:43,771 --> 00:28:45,520 Wie Windows es bringt es dort unten statt 609 00:28:45,520 --> 00:28:47,020 von Mac OS, die es setzt dort unten. 610 00:28:47,020 --> 00:28:48,930 Aber die Realität ist, dass es alle Arten von der gleichen. 611 00:28:48,930 --> 00:28:50,770 Und hier ist eine ganze Bündel von Software. 612 00:28:50,770 --> 00:28:51,770 Es gibt Dropbox. 613 00:28:51,770 --> 00:28:54,780 Es gibt eine ganze Reihe von Zubehör, grafische Programme, die wir 614 00:28:54,780 --> 00:28:56,430 späteren Verwendung in dem Ausdruck für die Problem Sets. 615 00:28:56,430 --> 00:28:59,650 Es gibt ein Web-Browser in so gebaut dass dies ein vollwertiges Computer 616 00:28:59,650 --> 00:29:01,240 innerhalb eines Computers. 617 00:29:01,240 --> 00:29:04,170 >> Aber ich werde das auf ganz links weißes Symbol hier, 618 00:29:04,170 --> 00:29:05,890 Das ist das Symbol für Gedit. 619 00:29:05,890 --> 00:29:09,650 Und es geht um ein Fenster zu öffnen dass drei Platten, um sie, 620 00:29:09,650 --> 00:29:12,590 eine linke, eine obere und eine untere. 621 00:29:12,590 --> 00:29:16,071 >> Jetzt ist es in diesem oben rechts eine, die Ich werde einige Code tatsächlich zu schreiben. 622 00:29:16,071 --> 00:29:16,820 Also lassen Sie uns dies tun ,. 623 00:29:16,820 --> 00:29:19,040 Ich werde Sie auf Datei, Speichern. 624 00:29:19,040 --> 00:29:22,100 Und Sie je gesehen haben könnte Dies insbesondere vor dem Fenster. 625 00:29:22,100 --> 00:29:23,620 Aber das ist wie Mac OS oder Windows. 626 00:29:23,620 --> 00:29:25,490 Es ist nur ein Fenster mit allen Ordnern 627 00:29:25,490 --> 00:29:27,290 dass ich im Inneren des Computers. 628 00:29:27,290 --> 00:29:30,320 >> Und ich werde, um zu speichern die Datei als hello.c. 629 00:29:30,320 --> 00:29:32,690 Und ich werde gehen Sie vor und klicken Sie auf Speichern. 630 00:29:32,690 --> 00:29:36,364 Und jetzt merke ich, haben ein Register links oben genannt hello.c. 631 00:29:36,364 --> 00:29:38,280 Also wahrscheinlich ziemlich vertraut, auch wenn Sie nicht haben 632 00:29:38,280 --> 00:29:40,240 vor verwendet diese besondere Programm. 633 00:29:40,240 --> 00:29:44,890 >> Und jetzt werde ich in jenen Typ ziemlich kryptischen Befehlsfolge 634 00:29:44,890 --> 00:29:46,360 sahen wir vor einem Augenblick. 635 00:29:46,360 --> 00:29:49,330 Gehören Standard-I / O.h. 636 00:29:49,330 --> 00:29:50,600 Mehr dazu in Kürze. 637 00:29:50,600 --> 00:29:55,670 Int main Leere, offene lockige Klammer, geschweifte Klammer geschlossen. 638 00:29:55,670 --> 00:30:01,570 Und dann gibt es innerhalb der ich denke, ist wo wir "Hallo Welt", Semikolon. 639 00:30:01,570 --> 00:30:03,100 Und jetzt retten. 640 00:30:03,100 --> 00:30:08,780 >> Das ist also ein Programm in C geschrieben, geschrieben, daher im Quellcode. 641 00:30:08,780 --> 00:30:10,720 Aber ich kann nicht einfach führen Sie dieses Programm. 642 00:30:10,720 --> 00:30:13,390 Ich Art zu verdoppeln wollen Klicken Sie auf ein Symbol, irgendwo, 643 00:30:13,390 --> 00:30:16,390 aber andere kein Symbol vorhanden ist als die Source-Code-Datei. 644 00:30:16,390 --> 00:30:20,359 Was wiederum ist der Prozess jetzt, Ich muss diese Datei durchlaufen? 645 00:30:20,359 --> 00:30:21,150 ZIELGRUPPE: Compiler. 646 00:30:21,150 --> 00:30:22,399 David J. MALAN: Also ein Compiler. 647 00:30:22,399 --> 00:30:24,890 So in verschiedenen Computern, die Sie tun dies auf unterschiedliche Weise. 648 00:30:24,890 --> 00:30:27,480 Aber was wir hier getan in die CS50 Appliance, ist 649 00:30:27,480 --> 00:30:31,260 Vertreter, wie Sie tun dies auf vielen verschiedenen Systemen, 650 00:30:31,260 --> 00:30:34,036 ist, ich bin einfach da, um einen Befehl namens machen. 651 00:30:34,036 --> 00:30:35,660 Und machen Sie buchstäblich das tun. 652 00:30:35,660 --> 00:30:36,640 Machen Sie mir ein Programm. 653 00:30:36,640 --> 00:30:39,060 >> So machen wird gehen führen Sie einen Compiler für mich. 654 00:30:39,060 --> 00:30:42,160 Und der Name des Programms, Ich will, ist, hallo. 655 00:30:42,160 --> 00:30:43,510 Jetzt machen, ist ein Programm. 656 00:30:43,510 --> 00:30:47,170 Und machen schlau genug, um es erkennen, dass, wenn ich sage, machen hallo, 657 00:30:47,170 --> 00:30:50,980 es wird automatisch aussehen nach einer Datei namens hello.c 658 00:30:50,980 --> 00:30:53,420 nur weil das die so, wie es konfiguriert. 659 00:30:53,420 --> 00:31:00,300 >> Also, wenn ich jetzt treffen hier eingeben, diese verrückt kryptischen Zeile wurde gerade ausgeführt. 660 00:31:00,300 --> 00:31:02,720 Und glauben Sie mir, bevor lang, innerhalb von nur Tagen 661 00:31:02,720 --> 00:31:05,590 Sie werden verstehen, was das alles diesen Unsinn Mittel. 662 00:31:05,590 --> 00:31:11,150 Aber jetzt weiß nur, dass machen ausgelösten Ausführung eines Compilers. 663 00:31:11,150 --> 00:31:13,290 Mit anderen Worten, es fand ein Compiler auf meinem Computer 664 00:31:13,290 --> 00:31:14,820 das ist vorinstalliert auf dem CS50 Appliance 665 00:31:14,820 --> 00:31:16,560 dass wir, Sie in Set 1 Hand Problem. 666 00:31:16,560 --> 00:31:20,990 Und es nahm dann als hello.c Eingang und anscheinend hergestellt 667 00:31:20,990 --> 00:31:23,040 0 und 1 als Ausgabe. 668 00:31:23,040 --> 00:31:29,410 >> Und standardmäßig, was es tut, ist es spart diese 0 und 1 in einer Datei namens hallo. 669 00:31:29,410 --> 00:31:33,180 Und obwohl dieser Syntax zu Macht sein neu für Sie, einfach sagen, dot 670 00:31:33,180 --> 00:31:37,110 Schrägstrich hallo wird den sein Mittel, mit denen ich dieses Programm. 671 00:31:37,110 --> 00:31:40,360 >> Für jetzt und für mindestens ein paar Wochen fast alle Programme 672 00:31:40,360 --> 00:31:44,230 Wir schreiben gehen, um in sein Schwarz-Weiß-Textfenster. 673 00:31:44,230 --> 00:31:47,006 Keine Maus, kein Klicken, keine Fenster, keine Symbole. 674 00:31:47,006 --> 00:31:49,630 Wir werden es einfach zu halten und konzentrieren sich auf die zugrunde liegenden Ideen 675 00:31:49,630 --> 00:31:52,490 zunächst, bevor wir um etwas zu bekommen höheren Ebene, beispielsweise, 676 00:31:52,490 --> 00:31:56,410 wie das Arcade-Spiel, das wir gesprochen etwa in der ersten Vorlesung der vergangenen Woche. 677 00:31:56,410 --> 00:32:00,820 >> Also, wenn ich getroffen Geben Sie hier, es ist Gegenwert in einer Nur-Text-Umfeld 678 00:32:00,820 --> 00:32:03,272 zu verdoppeln auf ein Symbol namens hallo. 679 00:32:03,272 --> 00:32:05,480 Was erwarten Sie von Wille passieren, wenn ich dann Enter drücken? 680 00:32:05,480 --> 00:32:07,120 >> ZIELGRUPPE: Es wird "Hallo Welt." Drucken 681 00:32:07,120 --> 00:32:10,000 >> David J. MALAN: Hoffentlich es wird "Hallo Welt." drucken 682 00:32:10,000 --> 00:32:11,370 Und in der Tat es tat. 683 00:32:11,370 --> 00:32:13,690 Jetzt gibt es schon einige kryptische Syntax hier. 684 00:32:13,690 --> 00:32:15,950 Lassen Sie uns für nur zurückspulen ein Moment, und sehen, ob wir 685 00:32:15,950 --> 00:32:19,530 kann nicht nur durch die Ableitung starten Basteln, Ausprobieren und Fehler, 686 00:32:19,530 --> 00:32:21,130 , was ist denn hier los. 687 00:32:21,130 --> 00:32:23,609 Was ist, wenn ich von dem Backslash n los? 688 00:32:23,609 --> 00:32:25,650 Nun, einige von euch, die haben vor wahrscheinlich programmiert 689 00:32:25,650 --> 00:32:27,054 wissen sofort, was das bedeutet. 690 00:32:27,054 --> 00:32:29,220 Aber für diejenigen von euch, die haben nie programmiert, 691 00:32:29,220 --> 00:32:34,052 zumindest auf sich selbst zu denken, was los ist zu ändern, wenn ich erneut dieses Programm? 692 00:32:34,052 --> 00:32:37,010 Also werde ich wieder nach unten zu gehen, meine kleine schwarze und weiße Fenster, das 693 00:32:37,010 --> 00:32:39,290 ist das Fenster, in dem Ich kann dies zu kompilieren. 694 00:32:39,290 --> 00:32:41,130 Ich werde hallo neu kompilieren. 695 00:32:41,130 --> 00:32:43,520 Wir werden das gleiche sehen kryptischen Befehlsfolge. 696 00:32:43,520 --> 00:32:45,719 Und ich werde Punktstrich tun hallo. 697 00:32:45,719 --> 00:32:48,260 Und nun jemand, wenn Sie möchten, die noch nie programmiert hat, 698 00:32:48,260 --> 00:32:49,770 Was diesmal anders sein könnte? 699 00:32:49,770 --> 00:32:50,020 Ja. 700 00:32:50,020 --> 00:32:51,840 >> ZIELGRUPPE: Es wird nicht aufhören Druck "Hallo Welt". 701 00:32:51,840 --> 00:32:52,660 >> David J. MALAN: Es wird zu-- leid? 702 00:32:52,660 --> 00:32:54,210 >> ZIELGRUPPE: Es wird nicht aufhören ihn zu drucken? 703 00:32:54,210 --> 00:32:55,810 >> David J. MALAN: Es wird nicht mehr drucken "Hallo Welt". 704 00:32:55,810 --> 00:32:56,560 Also keine schlechte Idee. 705 00:32:56,560 --> 00:32:58,633 Andere Ideen? 706 00:32:58,633 --> 00:32:59,132 Ja. 707 00:32:59,132 --> 00:33:00,060 >> ZIELGRUPPE: Fehlermeldung? 708 00:33:00,060 --> 00:33:01,750 >> David J. MALAN: Fehler Nachricht, OK, könnte sein. 709 00:33:01,750 --> 00:33:02,250 Was sonst? 710 00:33:02,250 --> 00:33:05,479 ZIELGRUPPE: Es könnte der Druck Halterung mit dem Semikolon als auch? 711 00:33:05,479 --> 00:33:08,270 David J. MALAN: Könnte das zu drucken Halterung mit dem Semikolon als gut. 712 00:33:08,270 --> 00:33:11,950 Also vielleicht ist dann, dass einige Backslash Art terminous, die wichtig ist. 713 00:33:11,950 --> 00:33:14,860 Alle anderen Gedanken? 714 00:33:14,860 --> 00:33:16,412 >> Also alles gute Ideen. 715 00:33:16,412 --> 00:33:18,370 Und in der Tat, es geht um eine Fehlermeldung. 716 00:33:18,370 --> 00:33:20,400 Das ist wahrscheinlich am ehesten die Antwort im Allgemeinen 717 00:33:20,400 --> 00:33:22,420 für die nächsten Wochen wie wir lernen, hier zu codieren. 718 00:33:22,420 --> 00:33:27,680 >> Aber jetzt erinnern, dass Computer nur tun, was Sie sagen, zu tun. 719 00:33:27,680 --> 00:33:30,400 Ähnlich wie die lächerliche Erdnuss Butter und Gelee Beispiel. 720 00:33:30,400 --> 00:33:33,860 Unsere menschliche Computer wurden nur angenommen zu tun, was Sie ihnen gesagt, zu tun. 721 00:33:33,860 --> 00:33:36,250 Also in diesem Fall, wenn Sie nicht sagen, den Computer 722 00:33:36,250 --> 00:33:41,190 , dass die blinkenden Cursor auf den Umzug nächsten Zeile, es ist nicht dabei, es zu tun. 723 00:33:41,190 --> 00:33:45,390 Also, wenn ich dieses Programm jetzt, den Unterschied bemerken. 724 00:33:45,390 --> 00:33:46,900 >> Sieht aus wie ein Bug. 725 00:33:46,900 --> 00:33:49,190 Es ist ein ästhetischer Fehler, vielleicht. 726 00:33:49,190 --> 00:33:53,310 Aber was ist anders an diesem Ausgang gegenüber dem letzten offensichtlich? 727 00:33:53,310 --> 00:33:53,810 Ja. 728 00:33:53,810 --> 00:33:54,920 >> ZIELGRUPPE: Es hat nicht eine neue Linie zu tun. 729 00:33:54,920 --> 00:33:56,586 >> David J. MALAN: Es hat nicht tun eine neue Zeile. 730 00:33:56,586 --> 00:33:58,740 Jetzt diejenigen, die haben vielleicht gemacht Web-Seiten 731 00:33:58,740 --> 00:34:01,910 vor, können Sie von dem Know BR-Tag oder das Absatz-Tag, 732 00:34:01,910 --> 00:34:03,120 sehr ähnlich im Geist. 733 00:34:03,120 --> 00:34:06,680 Ein Web-Browser wird Sie bis ignorieren Sie sagen, was genau zu tun ist. 734 00:34:06,680 --> 00:34:10,020 Ebenso ist eine Sprache wie C nur tun, was Sie sagen, es zu tun. 735 00:34:10,020 --> 00:34:12,730 >> Also der Grund, dass all diesen Beispielen, 736 00:34:12,730 --> 00:34:15,350 Bisher haben solche beiläufig hatte diese Backslash 737 00:34:15,350 --> 00:34:18,560 dort, ist, dass die Mittel mit denen Sie sich ausdrücken 738 00:34:18,560 --> 00:34:21,380 als neue Zeile, so zu sprechen. 739 00:34:21,380 --> 00:34:26,219 Und Sie können Art zu schätzen wissen, vielleicht, dass dies Art von dumm aussehen 740 00:34:26,219 --> 00:34:27,070 wenn sonst nichts. 741 00:34:27,070 --> 00:34:29,150 Wenn ich wollte eine neue Linie, nur Enter drücken und dann Art 742 00:34:29,150 --> 00:34:32,219 von Schlachten den Code so sollte eigentlich nicht reiben Sie den richtigen Weg. 743 00:34:32,219 --> 00:34:33,830 Und auch wenn Sie nicht zu tun wirklich, an dieser Stelle, 744 00:34:33,830 --> 00:34:35,830 Sie werden erkennen, dass Dies ist kein besonders 745 00:34:35,830 --> 00:34:37,870 gut aussehende Stück Code. 746 00:34:37,870 --> 00:34:39,969 >> Und so, wie die Welt Vor Jahren ist beschlossen 747 00:34:39,969 --> 00:34:43,420 dass, wenn Sie auf das setzen wollen Cursor auf einer neuen Zeile explizit, 748 00:34:43,420 --> 00:34:46,332 müssen Sie explizit sagen neue Linie, Backslash n. 749 00:34:46,332 --> 00:34:48,040 Und es gibt einige andere Symbole wie die. 750 00:34:48,040 --> 00:34:50,719 Aber jetzt werden wir nur konzentrieren sich auf Backslash n. 751 00:34:50,719 --> 00:34:53,790 >> Jetzt machen wir das Programm ein wenig interessanter. 752 00:34:53,790 --> 00:34:59,200 Ich werde weitermachen und dieses Mal öffnen, eine neue Datei. 753 00:34:59,200 --> 00:35:02,520 Ich werde diese wie hallo-1.c speichern. 754 00:35:02,520 --> 00:35:05,540 Und nur zum Spaß, ich bin zu gehen gehen lege sie in meine Dropbox-Ordner. 755 00:35:05,540 --> 00:35:09,030 >> Wie Sie in der CS50 sehen Dokumentation für das Gerät, 756 00:35:09,030 --> 00:35:11,210 noch in dieser Woche für Problem Set 1, wir fördern 757 00:35:11,210 --> 00:35:13,230 Sie Dropbox nutzen oder einige gleichwertige Leistung, 758 00:35:13,230 --> 00:35:15,430 weil dann alle Ihre Code werde automatisch gesichert werden. 759 00:35:15,430 --> 00:35:17,830 Und damit ist, warum ich habe Hier in diesen Ordner verschwunden. 760 00:35:17,830 --> 00:35:20,230 >> Und jetzt werde ich ein schreiben etwas anderes Programm. 761 00:35:20,230 --> 00:35:24,740 Gehören Standard-I / O.h, int main nichtig. 762 00:35:24,740 --> 00:35:29,660 Und dann hier printf, hallo Welt, Das ist genau die gleiche wie zuvor. 763 00:35:29,660 --> 00:35:32,450 >> Aber jetzt möchte ich etwas drucken das ist ein wenig anders. 764 00:35:32,450 --> 00:35:34,800 Ich möchte ausdrucken, sagen: "Hallo, David." 765 00:35:34,800 --> 00:35:37,590 Alles klar, so offensichtlich, es sollte hoffentlich 766 00:35:37,590 --> 00:35:40,360 der Fall, dass, wenn ich neu zu kompilieren, Dieses Programm, das erneut ausführen, 767 00:35:40,360 --> 00:35:41,840 es geht zu sagen "hallo, David." 768 00:35:41,840 --> 00:35:45,160 >> Aber was, wenn ich die Einführung Diese Art der variablen 769 00:35:45,160 --> 00:35:49,240 die Vorstellung von einem Behälter, die gehen zu speichern D-a-v-i-d und nicht hart codieren es 770 00:35:49,240 --> 00:35:50,600 in meinem Programm. 771 00:35:50,600 --> 00:35:53,430 Nun was ist, wenn ich starten so etwas tun? 772 00:35:53,430 --> 00:35:57,120 >> String s, so ist eine Variable. 773 00:35:57,120 --> 00:36:00,250 Wenn Sie möchten, eine Zeichenfolge, a.k.a. ein Wort oder eine Phrase. 774 00:36:00,250 --> 00:36:03,485 Eine Folge von Zeichen ist, was wir in der Programmierung rufen Sie einen String. 775 00:36:03,485 --> 00:36:06,610 Wir gehen nur generisch Anruf es s, weil es eine schöne einfache Namen. 776 00:36:06,610 --> 00:36:08,010 Aber ich könnte es etwas. 777 00:36:08,010 --> 00:36:12,920 >> Ich werde String S gleich sagen Zitat unquote: "David," Semikolon. 778 00:36:12,920 --> 00:36:18,330 Und jetzt möchte ich einfügen D-a-v-i-d in das, was ich bin Druck. 779 00:36:18,330 --> 00:36:23,720 Und bevor wir sahen einen Teaser auf der Bildschirm einige spezielle Syntax 780 00:36:23,720 --> 00:36:26,050 dass es uns ermöglicht, Ersatz in einem Wert. 781 00:36:26,050 --> 00:36:29,250 Was war die besondere Symbol vor ein paar Dias? 782 00:36:29,250 --> 00:36:30,040 >> Also Prozent. 783 00:36:30,040 --> 00:36:33,830 Zu der Zeit war es Prozent d für Dezimalzahl. 784 00:36:33,830 --> 00:36:35,850 Das scheint nicht wirklich relevant. 785 00:36:35,850 --> 00:36:38,650 Stellt sich heraus, es ist ein weiterer Prozentzeichen, 786 00:36:38,650 --> 00:36:42,810 Das ist s Prozent, die steht für einen Platzhalter für eine Zeichenfolge. 787 00:36:42,810 --> 00:36:49,350 >> So, jetzt sehr einfach, ich bin gehen wird machen hallo-1, 788 00:36:49,350 --> 00:36:54,210 da diese Datei heißt hallo-1.c, und drücken Sie Enter. 789 00:36:54,210 --> 00:36:56,230 Und ich vermasselt. 790 00:36:56,230 --> 00:36:57,394 Was ist los? 791 00:36:57,394 --> 00:37:00,560 Nun, hier ist, wo wir beginnen schätzen, dass wir in diesem Befehl sind 792 00:37:00,560 --> 00:37:02,810 Zeilenumgebung, diese Nur Text-Umgebung. 793 00:37:02,810 --> 00:37:06,114 Es gibt keine auf die Symbole wie Ordner jetzt. 794 00:37:06,114 --> 00:37:07,280 Und zurück denke vor einem Augenblick. 795 00:37:07,280 --> 00:37:10,740 In welchem ​​Ordner habe ich gesagt Ich war mein Code sparen? 796 00:37:10,740 --> 00:37:11,657 So dass die Dropbox-Ordner. 797 00:37:11,657 --> 00:37:12,989 Hätte nichts genannt haben. 798 00:37:12,989 --> 00:37:14,530 Aber es passiert, genannt Dropbox werden. 799 00:37:14,530 --> 00:37:18,380 Also habe ich irgendwie müssen Doppelklick auf dass Dropbox-Ordner, um zu bekommen 800 00:37:18,380 --> 00:37:21,657 in sie und meine Code aufgerufen hallo-1.c. 801 00:37:21,657 --> 00:37:24,490 In der Tat, lassen Sie mich gehen Sie vor und minimieren Fenster für einen Moment. 802 00:37:24,490 --> 00:37:27,560 Genau wie Windows und Mac OS, Ordner vorhanden sind in Linux. 803 00:37:27,560 --> 00:37:29,410 Es gibt Ordner in der CS50 Appliance. 804 00:37:29,410 --> 00:37:32,380 Es ist nur jetzt sind wir beschränken uns dieser Textumgebung. 805 00:37:32,380 --> 00:37:34,700 >> Aber wenn ich einen Doppelklick auf Dropbox, es bemerken 806 00:37:34,700 --> 00:37:37,210 ist die Datei, die ich möchte zu kompilieren. 807 00:37:37,210 --> 00:37:41,430 Aber ich brauche diese Schwarz-Weiß- Terminal-Fenster, so zu sprechen. 808 00:37:41,430 --> 00:37:45,750 Aber ich brauche, deshalb auf, sich in diesen Ordner oder Verzeichnis. 809 00:37:45,750 --> 00:37:48,290 So etwas obskur, aber Sie werden verwendet, um dieses zu bekommen auch. 810 00:37:48,290 --> 00:37:50,430 >> In der Welt von Linux, was wiederum die Betriebs 811 00:37:50,430 --> 00:37:54,860 System, das wir innerhalb des CS50 laufen Gerät, es gibt einen Befehl namens CD. 812 00:37:54,860 --> 00:37:58,310 Das bedeutet, ich kann CD, Raum, Dropbox zu tun. 813 00:37:58,310 --> 00:37:59,900 CD, Verzeichnis wechseln. 814 00:37:59,900 --> 00:38:00,400 Rechts. 815 00:38:00,400 --> 00:38:02,890 Zurück in den Tag, wenn die Leute waren erfinden Computer und Betriebs 816 00:38:02,890 --> 00:38:05,806 Systeme wie diese, wollte sie geben die wenigsten Tastatureingaben möglich. 817 00:38:05,806 --> 00:38:08,760 Der einfachste Weg sich zu sagen, change directory war CD. 818 00:38:08,760 --> 00:38:13,910 >> Also, wenn ich auf CD, Raum Dropbox, bemerken, was hier verändert. 819 00:38:13,910 --> 00:38:16,480 Innerhalb von Klammern Das Gerät ist eine Art 820 00:38:16,480 --> 00:38:19,360 von mir und humoring erinnert mich, wo ich bin. 821 00:38:19,360 --> 00:38:21,480 So dass die geöffneten Ordner ist Dropbox. 822 00:38:21,480 --> 00:38:24,950 Wenn ich jetzt für ls Liste wieder prägnant, 823 00:38:24,950 --> 00:38:27,540 weil die Leute wollten nicht Geben Sie wieder in den Tag l-i-s-t. 824 00:38:27,540 --> 00:38:29,300 So dass sie stattdessen machte es ls. 825 00:38:29,300 --> 00:38:30,110 >> Eingeben. 826 00:38:30,110 --> 00:38:35,740 Beachten Sie, ich sehe zwei Dinge, hallo-1.c, und dann wird diese kryptische Sache, Quelle 1m. 827 00:38:35,740 --> 00:38:38,310 Das ist nur meine Art zu sagen, Quellcode für Woche 1 Montag. 828 00:38:38,310 --> 00:38:42,020 Das ist ein Ordner ich heruntergeladen CS50-Website, die ich gemacht heute früher 829 00:38:42,020 --> 00:38:43,990 und setzen Sie ihn einfach in die Gerät im Voraus. 830 00:38:43,990 --> 00:38:47,550 >> Aber jetzt das einzige, was wir kümmern uns macht dieses Programm. 831 00:38:47,550 --> 00:38:50,440 Also, wenn ich make hallo-1, ein. 832 00:38:50,440 --> 00:38:51,320 Verdammt. 833 00:38:51,320 --> 00:38:53,060 Etwas ist schief gelaufen. 834 00:38:53,060 --> 00:38:54,580 Also lassen Sie necken diese auseinander. 835 00:38:54,580 --> 00:38:58,489 Und leider ist dies, wo die Dinge ein wenig stressig auf den ersten, 836 00:38:58,489 --> 00:39:00,280 zumindest, wenn Sie noch noch nie zuvor programmiert. 837 00:39:00,280 --> 00:39:00,980 >> Mein Gott. 838 00:39:00,980 --> 00:39:04,990 Ich schrieb ein zwei Zeilenprogramm und Ich habe vier Linien von Fehlern. 839 00:39:04,990 --> 00:39:07,180 Also, was ist denn hier los. 840 00:39:07,180 --> 00:39:11,370 In erster Linie immer wieder zurück blättern und finden die erste Fehlermeldung, 841 00:39:11,370 --> 00:39:15,730 weil oft nur Compiler verwirrt durch das, was Sie und ich. 842 00:39:15,730 --> 00:39:17,000 Compiler sind ziemlich dumm. 843 00:39:17,000 --> 00:39:18,360 Sie werden nur das tun, was Sie ihnen sagen, zu tun. 844 00:39:18,360 --> 00:39:21,484 Und wenn man sie zu verwirren, nur sind sie gehen zu Art werfen ihre Hände 845 00:39:21,484 --> 00:39:25,010 und vielleicht auch mehr Fehlermeldungen werfen als tatsächlich relevant. 846 00:39:25,010 --> 00:39:26,380 >> Also schauen wir uns an der ersten. 847 00:39:26,380 --> 00:39:27,540 Super kryptisch auf den ersten. 848 00:39:27,540 --> 00:39:31,050 Aber beachten Sie, hier ist der Name des Datei, in der ich vermasselt offenbar. 849 00:39:31,050 --> 00:39:36,570 Colon 5, 5 Doppelpunkt bedeutet nur, auf Linie 5 an der fünften Stelle. 850 00:39:36,570 --> 00:39:39,760 So fünften Spalte von Zeichen, wenn man will, Fehler. 851 00:39:39,760 --> 00:39:41,870 Verwendung von nicht deklarierter Bezeichner-String. 852 00:39:41,870 --> 00:39:43,120 Meinten Sie Standard-n? 853 00:39:43,120 --> 00:39:44,850 >> Nein, ich meinte String. 854 00:39:44,850 --> 00:39:47,640 Und dann ist es Art ist Kopieren und Einfügen 855 00:39:47,640 --> 00:39:50,700 was ich getippt, um wirklich zu ziehen meine darauf, wo ich es vermasselt. 856 00:39:50,700 --> 00:39:54,260 Also aus irgendeinem Grund C, oder zumindest der Compiler 857 00:39:54,260 --> 00:39:56,470 versteht nicht, das Wort String. 858 00:39:56,470 --> 00:39:57,890 Und das ist, weil wir es auf. 859 00:39:57,890 --> 00:40:01,440 So String existiert nicht in C. Was tut CS50, 860 00:40:01,440 --> 00:40:03,380 In den ersten paar Wochen nur der Klasse, 861 00:40:03,380 --> 00:40:05,700 ist bieten wir eine Ausbildung Räder, so zu sprechen. 862 00:40:05,700 --> 00:40:11,160 Und wir setzen diese Ausbildung Räder innerhalb einer speziellen Datei namens CS50.h. 863 00:40:11,160 --> 00:40:14,970 >> Also das ist der zweite von zwei Datei Namen, die offenbar in Punkt h beenden. 864 00:40:14,970 --> 00:40:16,300 Lassen Sie uns zurückzuspulen. 865 00:40:16,300 --> 00:40:19,360 Printf ist eine Aussage oder Funktion dass offenbar etwas druckt 866 00:40:19,360 --> 00:40:20,580 auf dem Bildschirm. 867 00:40:20,580 --> 00:40:23,470 Aber du hast mich nicht sehen printf implementieren, richtig. 868 00:40:23,470 --> 00:40:26,360 Jemand vor Jahren umgesetzt printf. 869 00:40:26,360 --> 00:40:30,420 In welcher Datei könnte er wetten oder sie setzen die Umsetzung 870 00:40:30,420 --> 00:40:34,270 für printf, der Code für printf? 871 00:40:34,270 --> 00:40:36,860 >> In einer Datei namens Standard-I / O.h. 872 00:40:36,860 --> 00:40:39,930 In der Tat, es ist wahrscheinlich in zwei Dateien, Standard-I / O.h, 873 00:40:39,930 --> 00:40:42,650 die für Header steht Datei und Standard-I / O.c, 874 00:40:42,650 --> 00:40:44,060 das steht für C-Quellcode. 875 00:40:44,060 --> 00:40:48,220 Damit er oder sie vor einigen Jahren plumpste der Code, der sie in diese Datei geschrieben 876 00:40:48,220 --> 00:40:51,240 so dass Leute wie uns Jahre später sind es, 877 00:40:51,240 --> 00:40:53,040 so zu sprechen, in unserer eigenen Programme. 878 00:40:53,040 --> 00:40:56,320 >> Und in der Tat, das ist, was das Pfund-Zeichen gefolgt von dem Wort gehören tut. 879 00:40:56,320 --> 00:41:00,250 Es sieht auf der lokalen Festplatte, findet die Datei mit dem Namen Standard-I / O.h, 880 00:41:00,250 --> 00:41:03,840 und dann effektiv Kopien und fügt es in meiner eigenen Datei. 881 00:41:03,840 --> 00:41:07,210 So, jetzt mein Programm weiß, wie man auf dem Bildschirm anzuzeigen. 882 00:41:07,210 --> 00:41:11,120 >> So von dieser Logik, wobei wird String definiert? 883 00:41:11,120 --> 00:41:12,260 >> ZIELGRUPPE: CS50.h. 884 00:41:12,260 --> 00:41:13,290 >> David J. MALAN: CS50.h. 885 00:41:13,290 --> 00:41:15,540 Und in der Tat, das ist, was wir, der Kern Personal, getan haben. 886 00:41:15,540 --> 00:41:19,590 Wir haben ein paar Datentypen erfunden, so zu sprechen, wie ein String, 887 00:41:19,590 --> 00:41:22,370 zusätzlich zu, die Sie erhalten kostenlos, wie ein int. 888 00:41:22,370 --> 00:41:26,010 Und wir werden andere wie ein Char zu sehen für ein Zeichen und ein paar mehr. 889 00:41:26,010 --> 00:41:30,670 Innere CS50.h offenbar zumindest einige Erwähnung von String. 890 00:41:30,670 --> 00:41:34,980 >> So, jetzt lassen Sie mich gehen Sie vor und erneut Make hallo-1. 891 00:41:34,980 --> 00:41:37,100 Ich werde wieder vergrößern und kreuze meine Finger. 892 00:41:37,100 --> 00:41:41,370 Nun gemacht zu einem ändere ich die meisten Dinge fixiert. 893 00:41:41,370 --> 00:41:42,100 Aber verdammt noch mal. 894 00:41:42,100 --> 00:41:44,290 Mehr Prozente als Daten Argumente. 895 00:41:44,290 --> 00:41:45,980 Was habe ich dieses Mal falsch gemacht? 896 00:41:45,980 --> 00:41:47,420 >> So ist es immer noch ziemlich kryptisch. 897 00:41:47,420 --> 00:41:51,560 Aber dieser Fehler auf Zeile 7 und 21 Zeichen. 898 00:41:51,560 --> 00:41:53,880 So gehen wir schauen hier. 899 00:41:53,880 --> 00:41:55,350 Es ist ein wenig subtiler. 900 00:41:55,350 --> 00:41:59,167 Aber wenn Sie darüber nachdenken, was die grundlegenden Ideen, die hier sind, 901 00:41:59,167 --> 00:42:00,500 vielleicht können wir dieses necken auseinander. 902 00:42:00,500 --> 00:42:02,300 >> So printf ist der Name der Funktion. 903 00:42:02,300 --> 00:42:04,960 Klammern, so weit, ist genau wie das, was wir setzen um 904 00:42:04,960 --> 00:42:07,005 der Stoff, wir sind vorbei als Eingänge an eine Funktion. 905 00:42:07,005 --> 00:42:08,921 Alles in Ordnung, nur eine beliebige menschliche Konvention. 906 00:42:08,921 --> 00:42:09,919 Verwenden Sie Klammern. 907 00:42:09,919 --> 00:42:12,460 Innerhalb dieser Klammern wir haben doppelte Anführungszeichen setzen, 908 00:42:12,460 --> 00:42:14,810 und dann ein String wie "Hallo Welt". 909 00:42:14,810 --> 00:42:18,160 >> Aber in diesem früheren Beispiel sehr kurz taten wir uns mit Scratch. 910 00:42:18,160 --> 00:42:22,590 Und wir hatten die d Prozent, was sonst war in dieser Klammern 911 00:42:22,590 --> 00:42:23,730 dass ich rief verbal? 912 00:42:23,730 --> 00:42:24,230 Ja. 913 00:42:24,230 --> 00:42:28,166 >> ZIELGRUPPE: So ist es, was du nimmst [Unverständlich] aus [unverständlich] 914 00:42:28,166 --> 00:42:30,200 was diese [unverständlich]? 915 00:42:30,200 --> 00:42:31,200 David J. MALAN: Genau. 916 00:42:31,200 --> 00:42:32,700 So hatten wir die d Prozent. 917 00:42:32,700 --> 00:42:36,620 Aber dann hatten wir in der Nähe Zitat, Komma, Zähler. 918 00:42:36,620 --> 00:42:37,120 Rechts. 919 00:42:37,120 --> 00:42:40,680 Wir angegeben, was wir wollen als Platzhalter zu tun. 920 00:42:40,680 --> 00:42:44,621 Also, was ich hier zu tun ist Komma, was wollen Sie mich zu setzen? 921 00:42:44,621 --> 00:42:45,120 ZIELGRUPPE: S. 922 00:42:45,120 --> 00:42:46,828 David J. MALAN: S, weil s in diesem Fall 923 00:42:46,828 --> 00:42:48,700 ist der Name des Speicherbehälters. 924 00:42:48,700 --> 00:42:50,180 Es ist der Name dieser Glasschale. 925 00:42:50,180 --> 00:42:53,610 Während es vorher war, dass Gegen einfache Scratch Beispiel haben wir uns. 926 00:42:53,610 --> 00:42:56,630 So, jetzt gemacht zu zwei Änderungen, lassen Sie mich heran 927 00:42:56,630 --> 00:42:59,800 und versuchen Sie noch einmal auf kompilieren dieses Programm. 928 00:42:59,800 --> 00:43:01,596 >> Jetzt sehe ich, dass die kryptischen Zeile. 929 00:43:01,596 --> 00:43:03,470 Aber das ist eigentlich die Namen der Compiler. 930 00:43:03,470 --> 00:43:04,886 Clang ist der Name des Compilers. 931 00:43:04,886 --> 00:43:07,100 Machen, ist nur meine Rettung der Kopfschmerz von immer 932 00:43:07,100 --> 00:43:09,830 Eingabe, dass die lange verrückt Befehl aus. 933 00:43:09,830 --> 00:43:14,900 So, jetzt, wenn ich Punkt Schrägstrich hallo-1, Ich sollte 'Hallo, David. " 934 00:43:14,900 --> 00:43:16,450 >> Ziemlich berauschend, wenn auch, oder? 935 00:43:16,450 --> 00:43:18,158 Wir hätten tun können dies viel einfacher 936 00:43:18,158 --> 00:43:20,940 ohne darüber zu reden Variablen und CS50.h und das alles. 937 00:43:20,940 --> 00:43:23,080 So machen wir es ein wenig interessanter. 938 00:43:23,080 --> 00:43:31,010 >> Neben CS50.h, mit Dingen wie String 939 00:43:31,010 --> 00:43:34,550 erklärt, die CS50-Bibliothek hat auch ein paar Funktionen. 940 00:43:34,550 --> 00:43:38,520 Vor so einfach wie Jahre, schrieb jemand printf und steckte es in Standard-I / O.h 941 00:43:38,520 --> 00:43:39,530 und einige andere Datei. 942 00:43:39,530 --> 00:43:44,010 >> Wir, die Mitarbeiter CS50, schrieb eine Funktion genannt GetChar, GetDouble, GetFloat, 943 00:43:44,010 --> 00:43:47,610 Getint, GetLongLong, GetString, und wir setzen diese in einer Datei 944 00:43:47,610 --> 00:43:49,890 genannt CS50.h und CS50.c. 945 00:43:49,890 --> 00:43:51,880 Und wir haben sie im Inneren des CS50 Appliance. 946 00:43:51,880 --> 00:43:53,880 Und Menschen können auch laden Sie sie online, wenn sie 947 00:43:53,880 --> 00:43:55,880 wollen sie auf setzen ihre eigenen Computer als auch. 948 00:43:55,880 --> 00:44:00,880 Welches ist zu sagen, dass wir geschaffen haben, Funktionen, die Eingabe von dem Benutzer zu erhalten. 949 00:44:00,880 --> 00:44:02,930 Ich weiß nicht, was alle Diese Datentypen sind. 950 00:44:02,930 --> 00:44:06,490 Getint ist irgendwie einfach, wie bekommen eine ganze Zahl irgendwie vom Benutzer. 951 00:44:06,490 --> 00:44:09,980 Und GetString ist wohl gefallen ein Wort oder ein Satz von dem Benutzer. 952 00:44:09,980 --> 00:44:11,770 >> Also konzentrieren wir uns auf das. 953 00:44:11,770 --> 00:44:14,710 Und ich werde wieder in die gehen Gerät und ich werde weitermachen 954 00:44:14,710 --> 00:44:20,790 und diese Datei als zu sparen, nennen wir es hallo-2.c als meine zweite Version. 955 00:44:20,790 --> 00:44:23,030 Und wir machen ein paar Änderungen. 956 00:44:23,030 --> 00:44:25,800 >> Dieses Mal statt harte Kodierung David, die 957 00:44:25,800 --> 00:44:29,120 macht eine unglaublich konsequente aber berauschend Programm, 958 00:44:29,120 --> 00:44:32,640 was, wenn ich stattdessen tun GetString? 959 00:44:32,640 --> 00:44:35,660 Jetzt bemerken GetString hat eine öffnende Klammer, 960 00:44:35,660 --> 00:44:38,500 geschlossene Klammer, weil es muss nicht jede Eingabe. 961 00:44:38,500 --> 00:44:40,850 Es nur geht zu holen ein String von dem Benutzer. 962 00:44:40,850 --> 00:44:42,460 >> Und nun ein Wort über andere Syntax. 963 00:44:42,460 --> 00:44:45,439 Semikolon am Ende nur eine einzige Zeile Code. 964 00:44:45,439 --> 00:44:46,730 Sie brauchen sie nicht überall. 965 00:44:46,730 --> 00:44:48,896 Aber das bedeutet nur, ich bin Mit dieser Codezeile getan. 966 00:44:48,896 --> 00:44:51,080 Lassen Sie mich auf einen anderen verschieben Anweisung oder Funktion. 967 00:44:51,080 --> 00:44:53,010 String deklariert eine Variable. 968 00:44:53,010 --> 00:44:55,920 String ist wie gesagt geben Sie mir eine Schüssel, bitte. 969 00:44:55,920 --> 00:44:57,940 Und lassen Sie mich einen String in ihm. 970 00:44:57,940 --> 00:44:59,430 >> Und jetzt das Gleichheitszeichen. 971 00:44:59,430 --> 00:45:03,510 Was ist das Gleichheitszeichen im wesentlichen äquivalent zu? 972 00:45:03,510 --> 00:45:04,500 >> ZIELGRUPPE: Weisen. 973 00:45:04,500 --> 00:45:06,190 >> David J. MALAN: Ja, ein Wert zugewiesen. 974 00:45:06,190 --> 00:45:09,872 Also, wenn ich zum Beispiel Anruf Diese Funktion GetString, 975 00:45:09,872 --> 00:45:12,830 und wir werden in einem Moment, dass ist zu sehen geht der Benutzer zur Angabe einer Zeichenfolge aufzufordern. 976 00:45:12,830 --> 00:45:17,810 Das ist wie lasse mich dann schreiben D-A-V-I-d auf ein Stück Papier. 977 00:45:17,810 --> 00:45:21,060 Und wenn ich sage String s gleich GetString, 978 00:45:21,060 --> 00:45:24,140 gleich nicht wirklich bedeutet gleich in der C-Programmierung. 979 00:45:24,140 --> 00:45:27,880 Es bedeutet, zuweisen von rechts Seite zu der linken Seite. 980 00:45:27,880 --> 00:45:29,510 >> Also habe ich einen String bekommen. 981 00:45:29,510 --> 00:45:32,785 Und das Gleichheitszeichen bedeutet, legen Sie sie in dem Vorratsbehälter genannt s. 982 00:45:32,785 --> 00:45:36,730 Und dann diese aus, um printf eigentlich nicht sein Ding. 983 00:45:36,730 --> 00:45:39,790 >> So das Ergebnis dann wird um ein wenig anders aussehen. 984 00:45:39,790 --> 00:45:40,840 Lassen Sie uns machen hallo-2. 985 00:45:40,840 --> 00:45:43,940 986 00:45:43,940 --> 00:45:45,260 Entweder könnte funktionieren. 987 00:45:45,260 --> 00:45:46,450 Sie folgende entlang. 988 00:45:46,450 --> 00:45:47,940 Machen hallo-2 gearbeitet. 989 00:45:47,940 --> 00:45:52,640 Dot Slash hallo-2, ein. 990 00:45:52,640 --> 00:45:54,620 >> Ich scheine eine unendliche zu haben, Schleife oder so etwas. 991 00:45:54,620 --> 00:45:55,453 Nichts ist passiert. 992 00:45:55,453 --> 00:45:56,134 Warum? 993 00:45:56,134 --> 00:45:57,805 >> ZIELGRUPPE: Es macht eine Endlosschleife. 994 00:45:57,805 --> 00:45:59,430 David J. MALAN: Es ist eine Endlosschleife. 995 00:45:59,430 --> 00:46:02,710 Es ist eine Art wartet auf mich zu tatsächlich erbringen es mit einigen Input. 996 00:46:02,710 --> 00:46:05,800 Also lassen Sie mich gehen Sie vor und geben in David, und drücken Sie Enter. 997 00:46:05,800 --> 00:46:07,230 Und jetzt heißt es: "Hallo, David." 998 00:46:07,230 --> 00:46:09,040 Wenn ich es noch einmal. 999 00:46:09,040 --> 00:46:11,530 Lassen Sie uns geben Rob, "Hallo, Rob." 1000 00:46:11,530 --> 00:46:13,900 >> Jetzt ist das Schlimmste Benutzerschnittstelle überhaupt. 1001 00:46:13,900 --> 00:46:16,110 Der Benutzer ist offenbar sollen wissen, was zu tun ist. 1002 00:46:16,110 --> 00:46:17,120 Aber egal. 1003 00:46:17,120 --> 00:46:19,570 Mit Hilfe dieser selben Gebäude Blöcke wie im Scratch, 1004 00:46:19,570 --> 00:46:24,980 können wir das Problem lösen und sagen, so etwas wie Ihren Namen bitte, Dickdarm, 1005 00:46:24,980 --> 00:46:27,820 Raum, geschlossen Zitat, in der Nähe Klammern, Semikolon. 1006 00:46:27,820 --> 00:46:30,680 So viel wieder Albernheit mit der Syntax. 1007 00:46:30,680 --> 00:46:34,040 >> Beachten Sie aber, ich habe soeben ein Puzzle-Stück über diesem ein 1008 00:46:34,040 --> 00:46:35,280 und oberhalb dieser. 1009 00:46:35,280 --> 00:46:38,870 So, jetzt, wenn ich diese erneut, hallo-2, ein. 1010 00:46:38,870 --> 00:46:41,180 Warten Sie eine Minute. 1011 00:46:41,180 --> 00:46:41,830 Was ist los? 1012 00:46:41,830 --> 00:46:43,570 Es ist nicht anders verhalten. 1013 00:46:43,570 --> 00:46:44,200 Ja. 1014 00:46:44,200 --> 00:46:46,010 >> ZIELGRUPPE: Sie lief nicht wieder zu machen. 1015 00:46:46,010 --> 00:46:47,968 >> David J. MALAN: Ich habe nicht make erneut ausführen, richtig. 1016 00:46:47,968 --> 00:46:49,430 Also ich habe mein Quellcode geändert. 1017 00:46:49,430 --> 00:46:50,638 Aber noch einmal, es ist das Fluss. 1018 00:46:50,638 --> 00:46:54,530 Source-Code durch den Compiler gibt Sie neue Objektcode oder 0 und 1. 1019 00:46:54,530 --> 00:47:00,209 Also muss ich eigentlich Wiederholung Make hallo-2 ein. 1020 00:47:00,209 --> 00:47:01,750 OK, scheint etwas passiert zu sein. 1021 00:47:01,750 --> 00:47:04,220 Dot Slash hallo-2. 1022 00:47:04,220 --> 00:47:05,390 Ihr Name bitte. 1023 00:47:05,390 --> 00:47:09,990 Und jetzt klar zu sein, warum ist der Cursor auf der gleichen Linie? 1024 00:47:09,990 --> 00:47:10,490 Genau. 1025 00:47:10,490 --> 00:47:13,020 Ich habe nicht den Backslash n hier oben in meinem Code. 1026 00:47:13,020 --> 00:47:16,110 So, jetzt kann ich schreiben so etwas wie Daven, Enter. 1027 00:47:16,110 --> 00:47:18,710 Ich kann es wieder zu laufen, und geben Sie so etwas wie Gabe, Geben, 1028 00:47:18,710 --> 00:47:22,250 und wir bekommen ein anderes Programm wieder und wieder und wieder. 1029 00:47:22,250 --> 00:47:28,940 >> Jetzt letztlich wir gehen zu müssen, , ein paar verschiedene Möglichkeiten zu nutzen. 1030 00:47:28,940 --> 00:47:32,860 Wir müssen schließlich einige vorstellen Bedingungen, die Dinge bedingt zu tun. 1031 00:47:32,860 --> 00:47:35,550 Vielleicht Schlaufen, so dass wir tun können, Dinge wieder und wieder. 1032 00:47:35,550 --> 00:47:38,220 >> Vielleicht wäre es schön, wenn wir könnte unsere eigene Funktionen zu implementieren, 1033 00:47:38,220 --> 00:47:41,355 wie wir unsere eigenen zu implementieren printf oder unsere eigene Version von GetString 1034 00:47:41,355 --> 00:47:45,870 und GetFlow, weil letztlich auch mit diesem Befehl Zeilenumgebung 1035 00:47:45,870 --> 00:47:49,780 können wir auch tun, die meisten optisch interessante Dinge. 1036 00:47:49,780 --> 00:47:51,950 >> Tatsächlich abschließend lassen Sie mich dies zu tun. 1037 00:47:51,950 --> 00:47:54,020 Ich werde weitermachen und schließen Sie diese Fenster 1038 00:47:54,020 --> 00:47:57,400 und öffnen Sie dieses Symbol, hier, Das ist nur eine größere 1039 00:47:57,400 --> 00:48:00,020 Version, die eingebettete Terminal-Fenster. 1040 00:48:00,020 --> 00:48:02,329 So Gedit hat nicht nur der Ort für meinen Code, 1041 00:48:02,329 --> 00:48:05,620 sondern auch ein in Terminal-Fenster gebaut, die Schwarz-Weiß-Fenster, in dem ich laufen kann 1042 00:48:05,620 --> 00:48:06,230 Befehle. 1043 00:48:06,230 --> 00:48:08,600 >> Ich bin zufällig zu öffnen eine größere Version davon. 1044 00:48:08,600 --> 00:48:11,170 Und jetzt werde ich gehen in der Ordner, den hab ich schon 1045 00:48:11,170 --> 00:48:13,150 im Voraus setzen auf der Website des Kurses. 1046 00:48:13,150 --> 00:48:16,720 Und ich werde weitermachen und öffnen Sie eine Datei namens thadgavin.c, 1047 00:48:16,720 --> 00:48:18,710 , die von jemand anderem geschrieben wurde. 1048 00:48:18,710 --> 00:48:21,220 >> Und wenn wir uns das an, Dies ist nicht die Art von Code 1049 00:48:21,220 --> 00:48:24,370 wir werden da sein Schreiben Das Ziel dieses Code 1050 00:48:24,370 --> 00:48:28,450 war es, die schönsten schreiben Suche Code, dass er oder sie konnte, 1051 00:48:28,450 --> 00:48:31,290 unabhängig davon, ob oder nicht ein anderer Mensch je könnte 1052 00:48:31,290 --> 00:48:33,660 verstehen diesen Code. 1053 00:48:33,660 --> 00:48:37,050 >> In der Tat, gibt es jedes Jahr, was genannt verschleiert C Wettbewerb, der 1054 00:48:37,050 --> 00:48:39,570 ist für echte Freaks, die schreiben Code, die sonst niemand lesen kann, 1055 00:48:39,570 --> 00:48:42,050 aber das macht etwas entweder wirklich einfach oder wirklich erstaunlich. 1056 00:48:42,050 --> 00:48:43,890 Und wir dachten, wir würden Schluss mit diesem Blick 1057 00:48:43,890 --> 00:48:48,300 auf etwas, das ziemlich erstaunlich ist Sie könnte schon einmal gesehen zu haben. 1058 00:48:48,300 --> 00:48:52,650 Aber wir werden an diesem Ende Note, Punkt Schrägstrich, thadgavin. 1059 00:48:52,650 --> 00:48:53,860 Das ist dann, was sie erwartet. 1060 00:48:53,860 --> 00:48:57,140 1061 00:48:57,140 --> 00:48:58,500 >> Das ist es für CS50. 1062 00:48:58,500 --> 00:48:59,935 Wir werden Sie am Mittwoch sehen. 1063 00:48:59,935 --> 00:49:04,284 1064 00:49:04,284 --> 00:49:10,016 >> [Musik zu spielen] 1065 00:49:10,016 --> 00:53:31,883