1 00:00:07,590 --> 00:00:09,920 [Powered by Google Translate] DAVID J. MALAN: All right, dies CS50 und das ist das 2 00:00:09,920 --> 00:00:15,250 Ende der Woche 1, sind so Karten in Studie und die Gesamtzahl der 3 00:00:15,250 --> 00:00:18,640 Klassenkameraden, dass Sie in diesem Jahr haben, ist 745. 4 00:00:18,640 --> 00:00:20,920 Und wir sind so begeistert, dass so viele von euch in der natürlich 5 00:00:20,920 --> 00:00:23,680 in diesem Semester, aber auch wenn dies natürlich ist so groß, 6 00:00:23,680 --> 00:00:26,090 erkennen, dass es diese Dinge ist wie Freitag Mittag, wie 7 00:00:26,090 --> 00:00:29,020 Bürozeiten, 15-köpfiges Abschnitte, und so weiter, 8 00:00:29,020 --> 00:00:30,590 sind wirklich bedeutete, diese intime erstellen 9 00:00:30,590 --> 00:00:31,140 Umwelt. 10 00:00:31,140 --> 00:00:34,070 Also auch wenn wir vielleicht einmal oder zweimal pro Woche versammeln sich hier in 11 00:00:34,070 --> 00:00:36,420 Sanders, wissen, dass viel von Ihrer Erfahrung in diesem Kurs 12 00:00:36,420 --> 00:00:39,330 wird sehr hands-on sein, auf der Seite von deinen Klassenkameraden 13 00:00:39,330 --> 00:00:40,730 und das Lehrpersonal. 14 00:00:40,730 --> 00:00:43,960 >> So hier gehen wir, Herbst 2012. 15 00:00:43,960 --> 00:00:47,530 So erinnern daran, dass wir das letzte Mal auf einem Zettel der beendeten 16 00:00:47,530 --> 00:00:50,460 Ungenauigkeit, reden über die Darstellung von Zahlen. 17 00:00:50,460 --> 00:00:52,950 Und wir sahen uns an der Ausfälle, was passiert ist, in der 18 00:00:52,950 --> 00:00:54,920 realen Welt, wenn es zu Missverständnissen kam 19 00:00:54,920 --> 00:00:55,890 wie Computer funktionieren. 20 00:00:55,890 --> 00:00:58,590 Nun, heute werden wir ein weiteres jener Ideen überdenken 21 00:00:58,590 --> 00:01:01,410 sowie weiterhin unsere Diskussion des CS50-Client 22 00:01:01,410 --> 00:01:04,090 und C und was es bedeutet, wirklich Programm. 23 00:01:04,090 --> 00:01:06,430 Aber zuerst, nur ein paar Wirbelwind Ankündigungen. 24 00:01:06,430 --> 00:01:08,930 >> Abschnitte beginnen an diesem Sonntag, und die erste Woche ist immer ein 25 00:01:08,930 --> 00:01:11,030 bisschen einen schnellen Start, denn wir haben nur in 26 00:01:11,030 --> 00:01:12,620 Ihrer Sektion Formen. 27 00:01:12,620 --> 00:01:14,450 Wir tun das gleiche, jetzt, mit den Lehr-Stipendiaten, jetzt 28 00:01:14,450 --> 00:01:16,410 dass sie ihre Pläne wissen, so dass wir mit dem Ziel, durch 29 00:01:16,410 --> 00:01:19,380 Samstag Morgen, um sich mit Ihnen mit Ihrem Abschnitt 30 00:01:19,380 --> 00:01:20,760 Zuordnung und TF. 31 00:01:20,760 --> 00:01:22,770 Erkennen, dass sie beginnen den nächsten Tag, Sonntag 32 00:01:22,770 --> 00:01:24,510 oder Montag oder Dienstag. 33 00:01:24,510 --> 00:01:27,730 Und dann werden wir aufnehmen Abschnitt Veränderungen, wie sie entstehen 34 00:01:27,730 --> 00:01:28,690 in den kommenden Tagen. 35 00:01:28,690 --> 00:01:31,590 Sprechzeiten sind unterdessen wieder heute Abend, 08.00 Uhr bis 11, 36 00:01:31,590 --> 00:01:33,740 Annenberg sowie morgen Abend. 37 00:01:33,740 --> 00:01:36,150 Auch wenn das Problem Sets sind in der Regel aufgrund donnerstags 38 00:01:36,150 --> 00:01:39,020 mittags, merkt man bis zu fünf späten Tage zu verbringen, 39 00:01:39,020 --> 00:01:42,430 damit die Verfügbarkeit der Bürozeiten donnerstags, wenn 40 00:01:42,430 --> 00:01:45,930 Sie Bargeld in einem dieser späten Tage und damit einreichen 41 00:01:45,930 --> 00:01:47,070 etwas auf Freitag. 42 00:01:47,070 --> 00:01:50,850 Lassen Sie mich darauf hin, dass Scratch unter den mehr Spaß macht, unter den 43 00:01:50,850 --> 00:01:52,390 mehr low key Problem Sets. 44 00:01:52,390 --> 00:01:55,160 Und ich würde auf diesen späten Tagen hängen, strategisch, nur 45 00:01:55,160 --> 00:01:57,380 zur späteren Verwendung in den Semesterferien, wenn das Leben beginnt, sich in die Quere kommen 46 00:01:57,380 --> 00:01:59,470 mit Mittelklausuren und andere Klassen. 47 00:01:59,470 --> 00:02:01,580 Problem Set 1, mittlerweile würde auf den Verlauf der geschrieben werden 48 00:02:01,580 --> 00:02:06,080 Website am Freitag, als an der Strecke zu Fuß sein 49 00:02:06,080 --> 00:02:08,789 durch Video, Willen, um 2:30 Uhr am Freitag gefilmt werden 50 00:02:08,789 --> 00:02:11,890 und dann online veröffentlicht am nächsten Tag. 51 00:02:11,890 --> 00:02:13,880 >> So landeten wir am Montag. 52 00:02:13,880 --> 00:02:15,450 Ich will - eigentlich beachten Sie hier. 53 00:02:15,450 --> 00:02:18,870 Da die Klassen - weil Sanders nicht genau zu verleihen 54 00:02:18,870 --> 00:02:22,220 sich lässig Q & A hin und her furchtbar gut, wir sind 55 00:02:22,220 --> 00:02:24,030 gehen, um etwas versuchen, ein wenig neu in diesem Jahr, wobei 56 00:02:24,030 --> 00:02:26,160 wenn Sie sich nicht wohl erhöhen Ihre Hand oder einfach nur 57 00:02:26,160 --> 00:02:28,800 lieber nicht heben Sie Ihre Hand in einem Raum wie diesem, 58 00:02:28,800 --> 00:02:30,710 werden wir einige der Lehre Stipendiaten und CAs haben 59 00:02:30,710 --> 00:02:33,260 Besatzung cs50.net/discuss während der Vorlesungszeit. 60 00:02:33,260 --> 00:02:35,440 Also, wenn Sie haben eine Frage, weil ich war völlig 61 00:02:35,440 --> 00:02:37,510 Unklar über etwas, oder du bist neugierig einige 62 00:02:37,510 --> 00:02:39,640 Thema, versuchen Entsendung es dort. 63 00:02:39,640 --> 00:02:42,670 Kennzeichnen Sie es mit einem Etikett der Vorlesung, und wir werden unser Bestes tun, 64 00:02:42,670 --> 00:02:45,430 heute und nächste Woche - wir werden versuchen, diese aus - zum Bereich IT 65 00:02:45,430 --> 00:02:47,990 entweder elektronisch, online, oder wenn es sich anfühlt, sollten wir 66 00:02:47,990 --> 00:02:50,430 wirklich auf sie en masse, einer der Lehre Stipendiaten oder 67 00:02:50,430 --> 00:02:52,080 CAs ihre Hand heben und fragen 68 00:02:52,080 --> 00:02:53,480 anonym in Ihrem Namen. 69 00:02:53,480 --> 00:02:55,650 So geben wir dies eine ausprobieren und sehen, wie gut das funktioniert. 70 00:02:55,650 --> 00:02:58,540 Aber, mit allen Mitteln, auch weiterhin an den Händen, wie Sie möchten zu erhöhen. 71 00:02:58,540 --> 00:03:11,420 >> So wir das letzte Mal gezeigt, dass 10% oder ein Zehntel nicht, in 72 00:03:11,420 --> 00:03:13,840 Tatsächlich 0,1, wie du vor vielen Jahren unterrichtet wurden. 73 00:03:13,840 --> 00:03:15,390 Es ist in der Tat ein Wert wie dieser. 74 00:03:15,390 --> 00:03:16,970 Aber das ist nicht ganz wahr, nicht wahr? 75 00:03:16,970 --> 00:03:19,585 Wir müssen nur diese Einschränkung in Computern, wodurch, wenn Sie 76 00:03:19,585 --> 00:03:22,450 nur eine begrenzte Menge an Speicher, RAM oder mehr 77 00:03:22,450 --> 00:03:25,220 speziell Bits, gut, es gibt nur eine endliche Anzahl 78 00:03:25,220 --> 00:03:26,980 Dinge, die Sie darstellen kann. 79 00:03:26,980 --> 00:03:29,780 Zum Beispiel, wenn wir die Zahl Null, und wir wollen 80 00:03:29,780 --> 00:03:32,790 stellen in binärer, unter Verwendung von acht Bits, wobei ein Bit, 81 00:03:32,790 --> 00:03:34,710 wieder ist eine Null oder eine Eins ist, könnten wir 82 00:03:34,710 --> 00:03:39,240 stellen sie als 00000000. 83 00:03:39,240 --> 00:03:41,160 Und das ist ein wenig unnötig wortreich. 84 00:03:41,160 --> 00:03:43,700 Just in dem Dezimalsystem in der realen Welt, 85 00:03:43,700 --> 00:03:47,040 in der Regel, wenn Sie die Nummer 123 schreiben wollen, müssen wir 86 00:03:47,040 --> 00:03:52,240 Menschen wahrscheinlich nicht schreiben 00000123, obwohl, 87 00:03:52,240 --> 00:03:53,940 funktional, das ist genau die gleiche Nummer. 88 00:03:53,940 --> 00:03:56,580 Wir haben gerade Drop führenden Nullen, so zu sprechen. 89 00:03:56,580 --> 00:03:58,270 >> In binären, können wir das gleiche tun. 90 00:03:58,270 --> 00:04:01,440 Binär-und Null, Null-und Binär ist nur Null. 91 00:04:01,440 --> 00:04:02,870 Sie brauchen nur ein einzelnes Bit. 92 00:04:02,870 --> 00:04:05,020 Aber noch einmal, die häufigste Maßeinheit in der Welt 93 00:04:05,020 --> 00:04:07,820 des Computing ist Byte acht Bit. 94 00:04:07,820 --> 00:04:09,720 Nur weil ein bisschen, ziemlich nutzlos. 95 00:04:09,720 --> 00:04:12,020 Acht Bits, nicht sehr nützlich, aber zumindest ist es mehr 96 00:04:12,020 --> 00:04:14,280 nützlich als eine einzelne Maßeinheit. 97 00:04:14,280 --> 00:04:17,100 Also mit acht Bits, wir stellen in der Regel binär. 98 00:04:17,100 --> 00:04:20,459 Also hier haben wir die Zahlen Null, eins, zwei, und dann, als 99 00:04:20,459 --> 00:04:24,200 Nate hat in unserem Video am vergangenen Mittwoch, können wir weiterhin 100 00:04:24,200 --> 00:04:25,940 Zählen bis zu sieben, acht ist. 101 00:04:25,940 --> 00:04:27,860 Und dann, wenn wir mehr und mehr Bits, wir 102 00:04:27,860 --> 00:04:29,880 zählen kann bis ins Unendliche. 103 00:04:29,880 --> 00:04:32,800 Aber wenn Sie nur eine begrenzte Anzahl dieser Bits, wie es 104 00:04:32,800 --> 00:04:35,030 der Fall in einem Computersystem oder sogar Flugkörpers 105 00:04:35,030 --> 00:04:36,670 System, gut, ja Sie haben nur einen 106 00:04:36,670 --> 00:04:37,900 endliche Menge an Präzision. 107 00:04:37,900 --> 00:04:41,290 Also, wenn Sie die Zahl wie 0,1 vertreten, auch wollen, die 108 00:04:41,290 --> 00:04:43,410 Computer auszuwählen und zu wählen. 109 00:04:43,410 --> 00:04:45,970 Und wenn es nur eine endliche Anzahl von Zahlen es kann 110 00:04:45,970 --> 00:04:50,490 darstellen, kann es in der Nähe 0,1 für dich kommen, aber es kann nicht 111 00:04:50,490 --> 00:04:53,730 zwangsläufig Ihnen genau den Wert, den Sie wollen. 112 00:04:53,730 --> 00:04:55,660 Und dies ist nur eine der Herausforderungen von Computern, 113 00:04:55,660 --> 00:04:57,090 unter der Haube, zum Glück. 114 00:04:57,090 --> 00:04:59,110 >> Als wir uns weiter bewegen, in dem Semester, diese untere Ebene 115 00:04:59,110 --> 00:05:02,310 Details werden viel weniger interessant, aber sicherlich die 116 00:05:02,310 --> 00:05:05,700 Anwendung dieser Ideen kann etwas sehr reale Welt 117 00:05:05,700 --> 00:05:06,760 Verzweigungen. 118 00:05:06,760 --> 00:05:08,190 Einer ist ein bisschen Spaß. 119 00:05:08,190 --> 00:05:12,150 Wie viele von euch haben die erstaunlichen Film Office Space gesehen? 120 00:05:12,150 --> 00:05:13,620 Wenn Sie nicht haben, das ist Ihre inoffizielle 121 00:05:13,620 --> 00:05:14,370 Hausaufgaben für die Woche. 122 00:05:14,370 --> 00:05:16,730 Aber in Office Space, nehmen die Stipendiaten in diesem Film 123 00:05:16,730 --> 00:05:19,900 Vorteil eben dieser Idee, aber sie tatsächlich gestohlen 124 00:05:19,900 --> 00:05:21,270 es aus einem anderen Film, den Sie haben könnten 125 00:05:21,270 --> 00:05:22,760 gesehen, sogar Jahre vor. 126 00:05:22,760 --> 00:05:24,920 Also lassen Sie mich Ihnen ein paar Sekunden dieser Trailer von 127 00:05:24,920 --> 00:05:27,470 diese erstaunliche Film und das ist sehr viel 128 00:05:27,470 --> 00:05:28,340 akademisch relevant. 129 00:05:28,340 --> 00:05:30,310 >> [SPIELT MOVIE] 130 00:05:30,310 --> 00:05:32,240 Eigentlich bin ich gefördert. 131 00:05:32,240 --> 00:05:33,360 Ich kann programmieren einen Virus, wird rippen, dass 132 00:05:33,360 --> 00:05:34,460 platzieren off big time. 133 00:05:34,460 --> 00:05:35,770 Nun, wie funktioniert es? 134 00:05:35,770 --> 00:05:37,836 Jedes Mal gibt es eine Bank Transaktion, bei Interesse ist 135 00:05:37,836 --> 00:05:40,154 Computertomographie, gibt es Tausende ein Tag, so endet der Computer 136 00:05:40,154 --> 00:05:41,040 mit diesen Fraktionen einen Cent. 137 00:05:41,040 --> 00:05:43,050 Aber ich werde nicht etwas Illegales zu tun. 138 00:05:43,050 --> 00:05:46,730 Illegal? Samir ist dies Amerika. 139 00:05:46,730 --> 00:05:48,010 Sie haben zu Gott schwören. 140 00:05:48,010 --> 00:05:51,870 Wenn niemand weiß, über dieses aber uns, alles in Ordnung? Keine Familie, keine 141 00:05:51,870 --> 00:05:52,490 Freundinnen, niemand. 142 00:05:52,490 --> 00:05:53,882 [Unverständlich]. 143 00:05:53,882 --> 00:05:57,594 Mach dir keine Sorgen, Mann, ich werde es niemandem sagen nicht. 144 00:05:57,594 --> 00:05:59,680 [Film endet] 145 00:05:59,680 --> 00:06:01,900 >> Alles klar, vielleicht fand ich diesen Film besser als die meisten 146 00:06:01,900 --> 00:06:05,530 Menschen hier, aber in jedem Fall, daß das Virus waren 147 00:06:05,530 --> 00:06:06,400 versuchen, zu erstellen - 148 00:06:06,400 --> 00:06:08,410 und in den Filmen, wann immer sie nennen würde etwas ein Virus, 149 00:06:08,410 --> 00:06:09,770 es ist generell nicht wirklich ein Virus. 150 00:06:09,770 --> 00:06:11,600 Es ist nur ein Programm, dass jemand etwas zu tun schrieb. 151 00:06:11,600 --> 00:06:13,800 Und in diesem Fall wurden die Jungs versuchen, ein Programm zu schreiben 152 00:06:13,800 --> 00:06:16,610 das nutzten ihre Firma namens Innotech der 153 00:06:16,610 --> 00:06:19,740 Rechensystem, wobei Computern auch, selbst wenn es 154 00:06:19,740 --> 00:06:21,350 um Geld geht, kann nicht unbedingt 155 00:06:21,350 --> 00:06:23,490 stellen Geld genau. 156 00:06:23,490 --> 00:06:27,630 So, obwohl Sie vielleicht $ 0,10 in Ihrem Bankkonto haben, 157 00:06:27,630 --> 00:06:31,060 0,10, gut, könnte der Computer tatsächlich denken, dass Sie 158 00:06:31,060 --> 00:06:33,560 diese vielen Cent in Ihrem Bankkonto. 159 00:06:33,560 --> 00:06:35,750 Und was diese Jungs wurden streben zu tun - und sie 160 00:06:35,750 --> 00:06:38,240 stahlen die Idee, schaltet es aus Superman III, wo 161 00:06:38,240 --> 00:06:41,210 Richard Pryor taten das gleiche - sie waren im Wesentlichen 162 00:06:41,210 --> 00:06:44,880 Schreiben von Programmen, die für alle der Hinterkante nehmen streben 163 00:06:44,880 --> 00:06:46,930 Zahlen, alle der winzigen, kleinen, kleinen Fraktionen 164 00:06:46,930 --> 00:06:50,160 Pfennige und Absaugen denen ab, so dass die Menschen nur 165 00:06:50,160 --> 00:06:52,620 Gedanken, oh, es ist nur $ 0,10 gibt, aber all jene 166 00:06:52,620 --> 00:06:54,410 Zahlen am Ende schließlich summieren. 167 00:06:54,410 --> 00:06:57,490 So eine wunderbare Idee und es ging nach hinten los urkomisch, dass 168 00:06:57,490 --> 00:06:58,250 bestimmten Film. 169 00:06:58,250 --> 00:07:01,800 >> Aber in der realen Welt auch gibt es viel mehr zu 170 00:07:01,800 --> 00:07:03,190 Auswirkungen dieser Art von Dingen. 171 00:07:03,190 --> 00:07:05,450 Und einer der Gründe für die in den Bereich der Tauchcomputer 172 00:07:05,450 --> 00:07:07,620 Wissenschaft ist wiederum ihre Anwendbarkeit nicht auf die 173 00:07:07,620 --> 00:07:09,740 Ingenieurwissenschaften allein, sondern nur um 174 00:07:09,740 --> 00:07:10,650 anderen Bereichen. 175 00:07:10,650 --> 00:07:14,760 Das ist also eine weniger unbeschwerte Blick auf, was schief gehen kann, aber 176 00:07:14,760 --> 00:07:17,630 Es ist auch recht Augenöffnung, denke ich, wenn es darum geht 177 00:07:17,630 --> 00:07:20,760 genau zu verstehen, wie allgegenwärtig Technologien wie 178 00:07:20,760 --> 00:07:22,870 Computer und Programmierung oder in diesen Tagen, 179 00:07:22,870 --> 00:07:23,930 in Form von Software. 180 00:07:23,930 --> 00:07:26,500 Also das nächste Clip ist nur etwa sechs Minuten, fährt 181 00:07:26,500 --> 00:07:30,320 wo wir aufgehört haben letztes Mal, aber erlaubt es uns, ein wenig aussehen 182 00:07:30,320 --> 00:07:33,370 mehr in die Tiefe an einem solchen zu diesen Fragen. 183 00:07:33,370 --> 00:07:35,270 Lassen Sie mich fahren Sie wo wir aufgehört haben, 184 00:07:35,270 --> 00:07:37,780 das war genau hier. 185 00:07:37,780 --> 00:07:41,580 Und wir haben Teil zwei von zwei, für etwa sechs Minuten hier. 186 00:07:41,580 --> 00:07:41,980 >> [PLAY MOVIE] 187 00:07:41,980 --> 00:07:45,430 Geplagt modernen Raketentechnik. 188 00:07:45,430 --> 00:07:49,280 Im Jahr 1991, mit dem Beginn des ersten Golfkriegs, der Patriot 189 00:07:49,280 --> 00:07:51,350 Raketen erlebt eine ähnliche Art von 190 00:07:51,350 --> 00:07:52,645 Anzahl Umstellung Problem. 191 00:07:52,645 --> 00:07:57,460 Und als Ergebnis wurden 20 Personen, 20 amerikanische Soldaten getötet 192 00:07:57,460 --> 00:08:01,130 und etwa 100 weitere verletzt, als der Patriot, der sollte 193 00:08:01,130 --> 00:08:03,400 gegen eingehende Scuds schützen, 194 00:08:03,400 --> 00:08:06,020 versäumt, eine Rakete abzufeuern. 195 00:08:06,020 --> 00:08:09,350 >> Als der Irak in Kuwait einmarschierte und Amerika startete eine Wüste 196 00:08:09,350 --> 00:08:13,530 Sturm Anfang 1991 waren Patriot Raketen-Batterien 197 00:08:13,530 --> 00:08:16,970 eingesetzt, um Saudi-Arabien und Israel aus den irakischen schützen 198 00:08:16,970 --> 00:08:19,810 Scud Raketenangriffen. 199 00:08:19,810 --> 00:08:23,740 Der Patriot ist ein US-Mittelstreckenraketen Oberfläche-zu-Luft-System, 200 00:08:23,740 --> 00:08:26,370 hergestellt von der Raytheon Company. 201 00:08:26,370 --> 00:08:30,860 Die Größe des Patriot Interzeptor selbst geht es darum, 202 00:08:30,860 --> 00:08:35,650 rund 20 Meter lang und wiegt etwa 2.000 Pfund. 203 00:08:35,650 --> 00:08:38,809 Und sie trägt einen Sprengkopf von ungefähr - ich denke, es ist etwa 204 00:08:38,809 --> 00:08:40,169 150 Pfund. 205 00:08:40,169 --> 00:08:45,820 Und der Gefechtskopf selbst ist eine hochexplosive die hat 206 00:08:45,820 --> 00:08:48,120 Fragmente drumherum. 207 00:08:48,120 --> 00:08:51,870 Die Hülle des Gefechtskopfes ist dafür ausgelegt, wie Schrot handeln. 208 00:08:51,870 --> 00:08:54,920 Die Raketen sind vier pro Behälter durchgeführt und sind 209 00:08:54,920 --> 00:08:57,850 transportiert von einem Sattelauflieger. 210 00:08:57,850 --> 00:09:02,940 >> Die Patriot-Raketenabwehrsystem geht mindestens bis 211 00:09:02,940 --> 00:09:05,530 20 Jahren. 212 00:09:05,530 --> 00:09:09,150 Es wurde ursprünglich als Luftabwehrflugkörper zu gestalten 213 00:09:09,150 --> 00:09:12,920 schießen Sie feindliche Flugzeuge, im ersten Golfkrieg. 214 00:09:12,920 --> 00:09:17,700 Wenn der Krieg entlang kam, wollte die Armee, es zu benutzen, um zu schießen 215 00:09:17,700 --> 00:09:19,880 unten Scuds, keine Flugzeuge. 216 00:09:19,880 --> 00:09:24,860 Die Air irakischen Force war nicht so sehr ein Problem, aber die Armee 217 00:09:24,860 --> 00:09:27,260 wurde über Scuds besorgt. 218 00:09:27,260 --> 00:09:30,810 Und so versuchten sie, den Patriot aktualisieren. 219 00:09:30,810 --> 00:09:33,770 Abfangen ein Feind Rakete reist am MACH 5 ging 220 00:09:33,770 --> 00:09:35,790 genug Herausforderung sein. 221 00:09:35,790 --> 00:09:39,460 Aber wenn der Patriot in Dienst gehetzt wurde, die Armee 222 00:09:39,460 --> 00:09:43,730 hatte keine Kenntnis von einem irakischen Modifikation, die ihre aus 223 00:09:43,730 --> 00:09:46,510 Scuds fast unmöglich zu schlagen. 224 00:09:46,510 --> 00:09:50,040 >> Was passiert ist, die Scuds, die waren 225 00:09:50,040 --> 00:09:51,360 kommen in instabil waren. 226 00:09:51,360 --> 00:09:52,266 Sie wurden Wackeln. 227 00:09:52,266 --> 00:09:56,300 Der Grund dafür war die Iraker, um 600 zu erhalten 228 00:09:56,300 --> 00:10:00,650 Kilometer von einem 300 km range missile, nahm 229 00:10:00,650 --> 00:10:02,423 Gewicht aus dem vorderen Gefechtskopf und 230 00:10:02,423 --> 00:10:03,990 machte der Gefechtskopf leichter. 231 00:10:03,990 --> 00:10:08,700 So, jetzt die Patriot versucht, an der Scud kommen, und die meisten 232 00:10:08,700 --> 00:10:11,192 die Zeit, die überwältigende Mehrheit der Zeit, wäre es 233 00:10:11,192 --> 00:10:13,450 nur durch die Scud fliegen. 234 00:10:13,450 --> 00:10:16,300 Nachdem die Patriot-System Betreiber erkannte die Patriot 235 00:10:16,300 --> 00:10:20,160 verfehlte ihr Ziel, sie den Patriot Sprengkopf detoniert. 236 00:10:20,160 --> 00:10:22,760 Um mögliche Verluste zu vermeiden, wurde es erlaubt 237 00:10:22,760 --> 00:10:25,100 auf den Boden fallen. 238 00:10:25,100 --> 00:10:29,400 Das war, was die meisten Leute sah, so groß Feuerbälle in den Himmel, 239 00:10:29,400 --> 00:10:34,930 und als Abschnitte von Scud Sprengköpfen missverstanden. 240 00:10:34,930 --> 00:10:37,490 >> Obwohl in den Nachthimmel erschien Patriots zu sein 241 00:10:37,490 --> 00:10:41,570 erfolgreich zerstört Scuds bei Dhahran, könnte es keine sein 242 00:10:41,570 --> 00:10:43,730 Fehler über seine Leistung. 243 00:10:43,730 --> 00:10:46,370 Dort verlor der Patriot Radarsystem Spur eines 244 00:10:46,370 --> 00:10:50,090 eingehende Scud und nie gestartet durch 245 00:10:50,090 --> 00:10:51,340 zu einem Software-Fehler. 246 00:10:54,030 --> 00:10:57,050 Es war die Israelis, die zum ersten Mal entdeckt, dass je länger 247 00:10:57,050 --> 00:11:02,000 das System eingeschaltet war, desto größer ist die Zeit Diskrepanz wurde, 248 00:11:02,000 --> 00:11:05,530 aufgrund einer Uhr im System-Computer eingebettet ist. 249 00:11:05,530 --> 00:11:09,060 Etwa zwei Wochen vor der Tragödie in Dhahran, der 250 00:11:09,060 --> 00:11:11,730 Israelis berichtet, das Verteidigungsministerium, dass die 251 00:11:11,730 --> 00:11:13,250 System wurde Zeit zu verlieren. 252 00:11:13,250 --> 00:11:15,610 Nach etwa acht Stunden läuft, bemerkt sie, dass die 253 00:11:15,610 --> 00:11:18,330 System wurde zusehends weniger genau. 254 00:11:18,330 --> 00:11:20,910 Das Verteidigungsministerium reagierte, indem er alle 255 00:11:20,910 --> 00:11:23,710 die Patriot-Batterien nicht zu verlassen, die Systeme 256 00:11:23,710 --> 00:11:25,450 für eine lange Zeit. 257 00:11:25,450 --> 00:11:28,010 Sie haben nie gesagt, was eine lange Zeit war - 8 Stunden, 10 258 00:11:28,010 --> 00:11:29,690 Stunden, 1.000 Stunden. 259 00:11:29,690 --> 00:11:31,940 Niemand wusste. 260 00:11:31,940 --> 00:11:35,020 >> Die Patriot-Batterie in der Kaserne am Dhahran stationiert 261 00:11:35,020 --> 00:11:39,030 und seine mangelhafte interne Uhr hatte über 100 Stunden auf bereits 262 00:11:39,030 --> 00:11:42,240 in der Nacht vom 25. Februar. 263 00:11:42,240 --> 00:11:46,580 Es nachgeführt Zeit mit einer Genauigkeit von ungefähr einem Zehntel einer Sekunde. 264 00:11:46,580 --> 00:11:48,830 Jetzt ein Zehntel der zweiten ist eine interessante Zahl, weil 265 00:11:48,830 --> 00:11:52,660 es kann nicht in binärer ausgedrückt werden, genau, was bedeutet, 266 00:11:52,660 --> 00:11:54,940 kann es nicht genau in einem ausgedrückt werden 267 00:11:54,940 --> 00:11:57,330 modernen digitalen Computers. 268 00:11:57,330 --> 00:11:59,130 Es ist schwer zu glauben. 269 00:11:59,130 --> 00:12:01,720 Aber nutzen dies als ein Beispiel. 270 00:12:01,720 --> 00:12:04,090 >> Lassen Sie uns die Nummer ein Drittel. 271 00:12:04,090 --> 00:12:07,950 Ein Drittel kann nicht dezimal ausgedrückt werden, genau. 272 00:12:07,950 --> 00:12:12,710 Ein Drittel wird 0,333 los für die Unendlichkeit. 273 00:12:12,710 --> 00:12:17,050 Es gibt keine Möglichkeit, dass mit absoluter Genauigkeit in dezimaler tun. 274 00:12:17,050 --> 00:12:19,340 Das ist genau die gleiche Art von Problem, das in passiert 275 00:12:19,340 --> 00:12:20,190 der Patriot. 276 00:12:20,190 --> 00:12:24,680 Je länger das System lief, desto schlechter ist die Zeitfehler wurde. 277 00:12:24,680 --> 00:12:28,640 Nach 100 Betriebsstunden war die Fehler in der Zeit nur 278 00:12:28,640 --> 00:12:29,870 etwa ein Drittel einer Sekunde. 279 00:12:29,870 --> 00:12:34,790 Aber in Bezug auf Targeting eine Rakete reist am MACH 5, 280 00:12:34,790 --> 00:12:39,140 es führte zu einem Tracking Error von über 600 Metern. 281 00:12:39,140 --> 00:12:42,510 Es wäre ein fataler Fehler für die Soldaten an Dhahran sein. 282 00:12:42,510 --> 00:12:48,680 >> Was passiert ist, eine Scud Einführung wurde von Frühwarnsystemen erkannt 283 00:12:48,680 --> 00:12:52,440 Satelliten und sie wussten, dass die Scud wurde ihr Kommen 284 00:12:52,440 --> 00:12:53,350 allgemeine Richtung. 285 00:12:53,350 --> 00:12:55,470 Sie wussten nicht, wo sie kam. 286 00:12:55,470 --> 00:12:58,210 Es war nun an der Radar-Komponente des Patriot 287 00:12:58,210 --> 00:13:01,920 System verteidigen Dhahran, zu lokalisieren und zu verfolgen die 288 00:13:01,920 --> 00:13:03,700 ankommenden feindlichen Rakete. 289 00:13:03,700 --> 00:13:05,390 Das Radar war sehr smart. 290 00:13:05,390 --> 00:13:07,570 Sie würden tatsächlich verfolgen die Position des Scud und dann 291 00:13:07,570 --> 00:13:10,340 vorherzusagen, wo es wäre wohl das nächste Mal die 292 00:13:10,340 --> 00:13:12,040 radar schickte einen Impuls aus. 293 00:13:12,040 --> 00:13:13,730 Das wurde als der Bereich Tor. 294 00:13:13,730 --> 00:13:18,820 Dann, wenn der Patriot entscheidet genug Zeit vergangen zu gehen 295 00:13:18,820 --> 00:13:22,600 zurück und überprüfen den nächsten Standort für diese ermittelten 296 00:13:22,600 --> 00:13:24,190 Objekt, geht es zurück. 297 00:13:24,190 --> 00:13:27,940 Also, wenn es wieder an die falsche Stelle ging es dann sieht keinen 298 00:13:27,940 --> 00:13:31,000 Objekt, und es entscheidet, dass es kein Objekt. 299 00:13:31,000 --> 00:13:34,370 Es war ein falscher Erkennung und lässt die Spur. 300 00:13:34,370 --> 00:13:37,630 >> Die eingehende Scud verschwand aus dem Radarschirm. 301 00:13:37,630 --> 00:13:41,300 Und Sekunden später schlug sie in die Kaserne. Die Scud 302 00:13:41,300 --> 00:13:44,730 getötet 28 und war der letzte feuerte während 303 00:13:44,730 --> 00:13:46,450 der erste Golfkrieg. 304 00:13:46,450 --> 00:13:50,570 Tragischerweise kam die aktualisierte Software Dhahran 305 00:13:50,570 --> 00:13:52,060 am folgenden Tag. 306 00:13:52,060 --> 00:13:56,210 Und die Software Fehler war behoben, schließen ein Kapitel in 307 00:13:56,210 --> 00:13:58,370 Die bewegte Geschichte des Patriot. 308 00:14:01,790 --> 00:14:04,990 PATRIOT ist eigentlich eine Abkürzung für "Phased Array Tracking- 309 00:14:04,990 --> 00:14:08,516 Abfangen von Target. " 310 00:14:08,516 --> 00:14:13,390 >> Alles klar, also ein viel traurige Ergebnis nicht ganz 311 00:14:13,390 --> 00:14:14,430 Verständnis dieser Welt. 312 00:14:14,430 --> 00:14:18,180 Und die Gerichte zum Mitnehmen, wirklich, aus dem Film ist, dass die Lösung 313 00:14:18,180 --> 00:14:20,790 es wurde neu starten Raketenabwehr 314 00:14:20,790 --> 00:14:21,770 jeder einmal in eine Weile. 315 00:14:21,770 --> 00:14:24,280 Und so wieder, eines der Ziele dieses Kurses, sicherlich 316 00:14:24,280 --> 00:14:26,900 auf einer bescheidenen Umfang als diesen Anwendungen besteht darin, 317 00:14:26,900 --> 00:14:30,710 wirklich offen jedermanns Augen zu genau, wie Sie gehen über 318 00:14:30,710 --> 00:14:34,380 Maschinen zum Herstellen tun, was Sie wollen, dass sie tun und wie Sie gehen 319 00:14:34,380 --> 00:14:37,180 zu tun, dass korrekt, während auf dem Weg, es zu tun 320 00:14:37,180 --> 00:14:38,810 gut, elegant, und so weiter. 321 00:14:38,810 --> 00:14:41,680 Und auch heute, lasst uns tauchen Sie ein in ein wenig mehr, aber 322 00:14:41,680 --> 00:14:44,210 so dass wir nicht zu schnell, vor allem für diejenigen, die weniger 323 00:14:44,210 --> 00:14:46,590 komfortabel, sondern auch so, dass wir halten das Interesse der 324 00:14:46,590 --> 00:14:49,390 die mehr Komfort, lass uns einfach schnell beginnen mit ein bisschen 325 00:14:49,390 --> 00:14:50,970 der Rückblick auf einige dieser Ideen. 326 00:14:50,970 --> 00:14:53,710 Und wieder weg fragen, sowohl in Person oder online, wenn Sie 327 00:14:53,710 --> 00:14:56,320 Fragen, so können wir halten alle auf der gleichen Seite. 328 00:14:56,320 --> 00:14:58,820 >> Also das CS50 Appliance, schnellen Schritt zurück, ist 329 00:14:58,820 --> 00:15:02,360 was, in Ihren eigenen Worten? 330 00:15:02,360 --> 00:15:06,454 Es ist OK, wenn Sie keine Ahnung, was diese Worte vielleicht noch haben. 331 00:15:06,454 --> 00:15:07,830 [Unverständlich] 332 00:15:07,830 --> 00:15:10,950 Okay, so eine universelle Schnittstelle für - 333 00:15:10,950 --> 00:15:11,900 dass wir alle teilen. 334 00:15:11,900 --> 00:15:12,470 Absolut. 335 00:15:12,470 --> 00:15:14,840 So konnten wir zum Beispiel sagen Sie zu einige gehen 336 00:15:14,840 --> 00:15:16,910 Website, laden Sie diese Software für Mac OS. 337 00:15:16,910 --> 00:15:19,140 Laden Sie diese Software für Windows, konfigurieren 338 00:15:19,140 --> 00:15:20,100 hin und her. 339 00:15:20,100 --> 00:15:22,370 Aber die Realität ist dann laufen wir in unzählige technische 340 00:15:22,370 --> 00:15:23,200 unterstützt Fragen. 341 00:15:23,200 --> 00:15:26,630 Und auch in diesen Tagen viel von dem, was ist Server-Seite getan, 342 00:15:26,630 --> 00:15:28,490 in der Welt der Computer, vor allem wenn es darum geht, 343 00:15:28,490 --> 00:15:31,460 Web-Entwicklung und Web-basierte Anwendungen, ist eigentlich 344 00:15:31,460 --> 00:15:35,110 häufig auf Unix-oder Linux-Computern durchgeführt, im Gegensatz zu 345 00:15:35,110 --> 00:15:36,800 Macs oder Windows PCs. 346 00:15:36,800 --> 00:15:39,240 >> So unter den upsides, dann der Verwendung dieses Ding namens 347 00:15:39,240 --> 00:15:41,500 CS50 Appliance ist, werden wir alle die gleiche Umgebung. 348 00:15:41,500 --> 00:15:43,670 Also jeder ist auf der gleichen Seite, egal welche Hardware Sie 349 00:15:43,670 --> 00:15:46,650 kam Campus mit, sondern wird auch in genau sein Dilettantismus 350 00:15:46,650 --> 00:15:48,230 die gleiche Umgebung, dass Sie in Richtung verwenden 351 00:15:48,230 --> 00:15:51,080 Semester Ende sowie für Web-Entwicklung, sowie in der 352 00:15:51,080 --> 00:15:53,580 Zukunft für reale Anwendungen davon. 353 00:15:53,580 --> 00:15:56,350 So konkret ist der CS50 Appliance ein freies Stück 354 00:15:56,350 --> 00:15:59,400 Software, die Ihnen ein anderes Betriebssystem laufen zu lassen, 355 00:15:59,400 --> 00:16:02,670 Linux, in diesem Fall auf dem eigenen Rechner, in einem Fenster. 356 00:16:02,670 --> 00:16:04,750 Jetzt können Sie nicht nur downloaden Sie das Gerät. 357 00:16:04,750 --> 00:16:08,170 Sie benötigen ein Programm, mit dem zu spielen oder lassen Sie das Gerät. 358 00:16:08,170 --> 00:16:11,220 Und das Stück Software wird im Allgemeinen als eine bekannte 359 00:16:11,220 --> 00:16:11,520 Hypervisor. 360 00:16:11,520 --> 00:16:14,050 Hypervisors kommen in Form von Produkten wie VMware, 361 00:16:14,050 --> 00:16:15,820 Virtual Box, Parallels. 362 00:16:15,820 --> 00:16:18,390 Alle Arten von Unternehmen machen Software, sowohl kostenlose als auch 363 00:16:18,390 --> 00:16:19,310 Gewerbe gleichermaßen. 364 00:16:19,310 --> 00:16:21,480 Was Sie in Problem finden Sie unter Set 1 sind Anleitungen zum 365 00:16:21,480 --> 00:16:23,440 erhalten kostenlose Software, mit der die 366 00:16:23,440 --> 00:16:25,000 Führen Sie den CS50 Appliance. 367 00:16:25,000 --> 00:16:28,060 Und wenn Sie das tun, haben Sie in einem Fenster auf Ihrem Mac oder PC, 368 00:16:28,060 --> 00:16:30,710 eine Desktop-Umgebung, die ganz so aussieht, wo 369 00:16:30,710 --> 00:16:33,100 es hat einen Startmenü-like, was in der 370 00:16:33,100 --> 00:16:34,510 linken unteren Ecke. 371 00:16:34,510 --> 00:16:38,030 Es verfügt über einen Home-Ordner, oder Home-Verzeichnis, in der linken oberen 372 00:16:38,030 --> 00:16:40,280 es kann ein Papierkorb, und so weiter. 373 00:16:40,280 --> 00:16:43,450 Also werden wir necken neben den notwendigen Angaben, wie wir gehen. 374 00:16:43,450 --> 00:16:46,430 >> Aber jetzt fangen wir in C. tauchen 375 00:16:46,430 --> 00:16:49,200 So C ist diese Programmiersprache, im Geiste 376 00:16:49,200 --> 00:16:52,390 Scratch, aber weit weniger grafische Oberfläche, sondern ironischerweise weit 377 00:16:52,390 --> 00:16:54,730 stärker, wenn Sie versierte mit ihm zu bekommen. 378 00:16:54,730 --> 00:16:58,970 So in C schreiben wir Programme, die von Schreiben von Quellcode, was 379 00:16:58,970 --> 00:17:01,640 Diese Englisch-ähnliche Syntax, ähnlich den Socken 380 00:17:01,640 --> 00:17:05,609 Beweis dafür, dass wir das letzte Mal, dass Sie ermöglicht haben 381 00:17:05,609 --> 00:17:07,910 express yourself ziemlich genau, wenn 382 00:17:07,910 --> 00:17:09,760 arcanely, an den Computer. 383 00:17:09,760 --> 00:17:11,960 >> Also, welche Art von Produkt-Software haben Sie tatsächlich benötigen 384 00:17:11,960 --> 00:17:15,520 Programme in einer Sprache wie C zu schreiben, auf der Grundlage unserer 385 00:17:15,520 --> 00:17:17,492 Gespräch am Montag? 386 00:17:17,492 --> 00:17:19,650 [Unverständlich] 387 00:17:19,650 --> 00:17:21,079 OK, Sie brauchen nur einen Texteditor. 388 00:17:21,079 --> 00:17:22,890 Sie benötigen keine spezielle Software 389 00:17:22,890 --> 00:17:24,460 per se zu schreiben Programme. 390 00:17:24,460 --> 00:17:27,220 Sie brauchen nur einen Texteditor wie Notepad, auf Windows, 391 00:17:27,220 --> 00:17:30,450 TextEdit auf dem Mac oder etwas namens gedit, in der Welt der 392 00:17:30,450 --> 00:17:32,020 Linux, die wir hier verwenden werden. 393 00:17:32,020 --> 00:17:33,750 Und das ist es, um die Programme zu schreiben. 394 00:17:33,750 --> 00:17:35,480 >> Aber Schreiben ist nur die Hälfte der Gleichung. 395 00:17:35,480 --> 00:17:36,630 Sie müssen dann, um sie auszuführen. 396 00:17:36,630 --> 00:17:38,320 Aber um das Ausführen von Programmen - 397 00:17:38,320 --> 00:17:39,600 Sie können nicht ausgeführt Quellcode. 398 00:17:39,600 --> 00:17:41,500 Sie haben stattdessen auf das, was sie als erstes tun? 399 00:17:41,500 --> 00:17:41,900 Yeah. 400 00:17:41,900 --> 00:17:43,200 DAVID J. MALAN: Sie müssen 401 00:17:43,200 --> 00:17:44,130 kompilieren. 402 00:17:44,130 --> 00:17:49,010 Und jemand anderes, Kompilieren des Quellcodes bedeutet - 403 00:17:49,010 --> 00:17:50,260 [Unverständlich] 404 00:17:52,300 --> 00:17:52,700 DAVID J. MALAN: Genau. 405 00:17:52,700 --> 00:17:54,430 Translating es Nullen und Einsen. 406 00:17:54,430 --> 00:17:57,150 Da alle von uns, in diesen Tagen haben Computer, die CPUs haben, 407 00:17:57,150 --> 00:18:00,350 fast die alle von der Firma Intel hergestellt und 408 00:18:00,350 --> 00:18:03,320 Intel Inside, bedeutet, dass es ist das Gehirn in Ihrer 409 00:18:03,320 --> 00:18:04,990 Computer, wie der CPU bekannt. 410 00:18:04,990 --> 00:18:07,570 Und eines der Dinge, dass Gehirn tut, ist, sie weiß, 411 00:18:07,570 --> 00:18:10,390 wie man Muster von Nullen und Einsen verstehen. 412 00:18:10,390 --> 00:18:13,240 Er weiß, was Bitmuster Zusätzlich stellt, was 413 00:18:13,240 --> 00:18:15,500 Muster stellt Subtraktionen, welches Muster der 414 00:18:15,500 --> 00:18:18,890 Bits repräsentieren Druck, und die Schaffung eines hörbaren Ton. 415 00:18:18,890 --> 00:18:22,450 >> So kurz, die CPU, die mit dem Betriebssystem gekoppelt ist, 416 00:18:22,450 --> 00:18:25,230 welches ein Stück Software, die auf der Oberseite der CPU ausgeführt wird, 417 00:18:25,230 --> 00:18:26,050 so zu sprechen. 418 00:18:26,050 --> 00:18:29,850 Gemeinsam wissen, diese beiden Stücke, wie man Programme, die ausgeführt werden 419 00:18:29,850 --> 00:18:31,070 wir Menschen zu schreiben. 420 00:18:31,070 --> 00:18:34,040 >> Also, wenn ich in den CS50 Appliance hier gehen, ich brauche zu öffnen 421 00:18:34,040 --> 00:18:35,660 bis einem Texteditor, und ich kann darauf zugreifen 422 00:18:35,660 --> 00:18:36,560 in einer Reihe von Möglichkeiten. 423 00:18:36,560 --> 00:18:39,060 Ich kann entweder gehen Sie zu Menü, Programmierung, 424 00:18:39,060 --> 00:18:40,230 und dann kann ich wählen - 425 00:18:40,230 --> 00:18:40,810 Nö, nicht das Menü. 426 00:18:40,810 --> 00:18:43,860 Ich kann auf Zubehör go / gedit hier zu öffnen 427 00:18:43,860 --> 00:18:45,090 mein kleiner Texteditor. 428 00:18:45,090 --> 00:18:48,030 Oder einfacher, kann ich auf dieses kleine Symbol in der unteren 429 00:18:48,030 --> 00:18:48,970 linken Ecke. 430 00:18:48,970 --> 00:18:50,430 Und jetzt bekomme ich diese Umgebung hier. 431 00:18:50,430 --> 00:18:52,590 Es ist ziemlich erinnert an einen einfachen Text-Editor, mit nur 432 00:18:52,590 --> 00:18:53,820 ein oder zwei Unterschiede. 433 00:18:53,820 --> 00:18:56,420 In der Spitze, wo der Cursor blinkt jetzt, das ist, wo 434 00:18:56,420 --> 00:18:57,900 Ich kann mit dem Schreiben beginnen meinem Code. 435 00:18:57,900 --> 00:19:00,415 Im Boden ist dieses Ding namens das Terminal-Fenster. 436 00:19:00,415 --> 00:19:03,400 Und welche Arten von Dingen kann ich dies tun 437 00:19:03,400 --> 00:19:04,960 sogenannte Terminal-Fenster? 438 00:19:04,960 --> 00:19:06,680 [Unverständlich] 439 00:19:06,680 --> 00:19:07,890 >> Okay, also werde ich Befehle ausführen. 440 00:19:07,890 --> 00:19:10,300 Und einige der Befehle, die wir am Montag lief waren ein wenig 441 00:19:10,300 --> 00:19:15,070 kryptisch auf den ersten, aber ls für die Liste, cd change directory, 442 00:19:15,070 --> 00:19:16,540 rm, für zu entfernen. 443 00:19:16,540 --> 00:19:19,680 Es ist also eine Art der alten Schule Art der Navigation Ihrer 444 00:19:19,680 --> 00:19:22,310 Computer, nur mit Ihrer Tastatur und textuelle Kommandos, 445 00:19:22,310 --> 00:19:24,130 und nicht, im Allgemeinen unter Verwendung einer Maus. 446 00:19:24,130 --> 00:19:25,960 Aber wir werden sehen, es dauerte nicht lange, dies tatsächlich gibt uns ein 447 00:19:25,960 --> 00:19:28,520 wenig mehr Leistung und ein wenig mehr Präzision, mit der die 448 00:19:28,520 --> 00:19:29,600 uns ausdrücken. 449 00:19:29,600 --> 00:19:31,330 Und dann hier auf der linken Seite, sind wir nur gehen, um zu sehen, 450 00:19:31,330 --> 00:19:34,360 wie wir mit dem Schreiben beginnen Software, eine kleine Zusammenfassung der 451 00:19:34,360 --> 00:19:36,350 Programm, das wir oben links geschrieben. 452 00:19:36,350 --> 00:19:38,360 Aber wir werden das noch einmal vor langer sehen. 453 00:19:38,360 --> 00:19:40,050 >> Also lasst uns etwas ziemlich einfach hier tun. 454 00:19:40,050 --> 00:19:43,440 Lassen Sie mich zunächst voran gehen und gehen Sie auf Datei, Speichern, und ich bin einfach 455 00:19:43,440 --> 00:19:45,970 gehen auf jharvard hier klicken, über links, und 456 00:19:45,970 --> 00:19:48,930 jharvard ist wieder der Name für mein Home-Ordner, meine 457 00:19:48,930 --> 00:19:52,110 persönliche Dateien, mir, jetzt ist John Harvard, wie Sie alle 458 00:19:52,110 --> 00:19:54,230 bald John Harvard in diesem Umfeld. 459 00:19:54,230 --> 00:19:57,360 Er hat diese Home-Verzeichnis haben, Eigene Dateien und so weiter, 460 00:19:57,360 --> 00:19:58,900 dass ich zu retten, wollen nun diese Datei in. 461 00:19:58,900 --> 00:20:01,520 Also werde ich es nennen hello.c. Dann werde ich gehen 462 00:20:01,520 --> 00:20:05,770 vor und klicken Sie auf Speichern, und jetzt, was ich hier habe, ist ein Register 463 00:20:05,770 --> 00:20:09,440 genannt hello.c, so viel wie eine andere Art von Editor. 464 00:20:09,440 --> 00:20:11,760 >> So, jetzt lass mich weitermachen und ein Programm schreiben. 465 00:20:11,760 --> 00:20:14,440 int main (void). 466 00:20:14,440 --> 00:20:18,150 Und dann habe ich nur beim letzten Mal, printf, für den Druck formatiert, 467 00:20:18,150 --> 00:20:22,120 ("Hallo Welt!" 468 00:20:22,120 --> 00:20:24,500 );. 469 00:20:24,500 --> 00:20:25,630 Fast abzuschließen. 470 00:20:25,630 --> 00:20:27,130 Aber ich vermisse ein paar Details. 471 00:20:27,130 --> 00:20:30,210 Was ist aus diesem Programm, dass ich wirklich brauchen für fehlende 472 00:20:30,210 --> 00:20:31,890 es tatsächlich zu kompilieren? 473 00:20:31,890 --> 00:20:32,130 Yeah. 474 00:20:32,130 --> 00:20:33,980 [Unverständlich]? 475 00:20:33,980 --> 00:20:35,770 >> DAVID J. MALAN: Ja, so brauche ich, um die Standard-Include 476 00:20:35,770 --> 00:20:36,700 I / O-Bibliothek. 477 00:20:36,700 --> 00:20:39,470 So muss dies über Haupt gehen, so bin ich gerade dabei, 478 00:20:39,470 --> 00:20:40,790 machen etwas Platz für sie gibt. 479 00:20:40,790 --> 00:20:44,420 Und ich werde tun, # include. 480 00:20:44,420 --> 00:20:46,570 Und beachten Sie die eckigen Klammern gibt. 481 00:20:46,570 --> 00:20:49,410 Und als beiseite, ist gedit ein wenig benutzerfreundlich, wenn 482 00:20:49,410 --> 00:20:52,420 manchmal ein wenig verwirrend, dass sie versucht, zu helfen, Ihre 483 00:20:52,420 --> 00:20:54,770 Augen bemerken, welche Zeilen mit dem, was. 484 00:20:54,770 --> 00:20:57,760 So die Tatsache, dass mein Cursor rechts neben diesem abgewinkelt ist 485 00:20:57,760 --> 00:21:00,600 Halter bemerken, wie es Hervorhebung der anderen abgewinkelten 486 00:21:00,600 --> 00:21:01,920 Halterung mit dieser. 487 00:21:01,920 --> 00:21:03,770 Und das ist nur meine Aufmerksamkeit auf die Tatsache lenken, dass ich 488 00:21:03,770 --> 00:21:04,460 eine Symmetrie. 489 00:21:04,460 --> 00:21:07,010 Und Symmetrie in der Programmierung ist generell eine gute Sache. 490 00:21:07,010 --> 00:21:10,270 Ebenso, wenn ich meinen Cursor an das Ende zu bewegen, bemerken, wie die 491 00:21:10,270 --> 00:21:13,630 geschweiften Klammern Line-Up zu zeigen, dass, ja, ich ein offenes eine haben 492 00:21:13,630 --> 00:21:15,160 und ein geschlossenes, sozusagen. 493 00:21:15,160 --> 00:21:16,640 >> Alles klar, und ich kann eine andere Sache. 494 00:21:16,640 --> 00:21:20,090 Es ist nicht unbedingt notwendig, aber gute Praxis, zu sagen, 495 00:21:20,090 --> 00:21:21,250 0 zurück. 496 00:21:21,250 --> 00:21:24,140 Und return 0 tut, was für uns hier? 497 00:21:24,140 --> 00:21:25,584 Oder bedeutet was? 498 00:21:25,584 --> 00:21:27,480 [Unverständlich] 499 00:21:27,480 --> 00:21:28,300 DAVID J. MALAN: Aber nichts ist falsch. 500 00:21:28,300 --> 00:21:30,280 Und ehrlich gesagt ist es für viel schief gehen in eine harte 501 00:21:30,280 --> 00:21:31,250 programmieren diese kurz. 502 00:21:31,250 --> 00:21:33,930 Also bin ich einfach nur Super ausdrücklich, dass alles gut ist. 503 00:21:33,930 --> 00:21:36,740 Ich, der Mensch, wenn ich dieses Programm ausführen, wird wahrscheinlich nie 504 00:21:36,740 --> 00:21:38,150 sehen, dass 0. 505 00:21:38,150 --> 00:21:41,070 Im Allgemeinen sind diese Zahlen, die von der Hauptstraße zurück 506 00:21:41,070 --> 00:21:43,540 nur hinten ihre Köpfe, um den Menschen bei der 507 00:21:43,540 --> 00:21:44,360 etwas schief geht. 508 00:21:44,360 --> 00:21:46,640 Und Sie bekommen ein kleines Pop-up sagen Systemfehler, ein, 509 00:21:46,640 --> 00:21:48,760 zwei, drei, oder was auch immer die Zahl war, dass 510 00:21:48,760 --> 00:21:50,100 tatsächlich zurückgegeben. 511 00:21:50,100 --> 00:21:52,870 So etwas anderes falsch? 512 00:21:52,870 --> 00:21:55,300 [Unverständlich] 513 00:21:55,300 --> 00:21:58,100 >> DAVID J. MALAN: Also das ist nicht so sehr eine funktionelle Fehler 514 00:21:58,100 --> 00:21:59,240 sondern eine ästhetische ein. 515 00:21:59,240 --> 00:22:02,340 Ich sollte wohl in einem Zeilenumbruch es legte an der 516 00:22:02,340 --> 00:22:05,240 Ende dieser Zeichenfolge, so dass wir tatsächlich bewegen Sie den Cursor auf 517 00:22:05,240 --> 00:22:08,340 die nächste Zeile, und das Programm sieht nur ein wenig schöner. 518 00:22:08,340 --> 00:22:10,340 >> So, jetzt lass mich gehen hinunter zu meinem Terminal-Fenster 519 00:22:10,340 --> 00:22:11,490 und Zoom-back in. 520 00:22:11,490 --> 00:22:13,390 Und dieses Ding hier ist es die Aufforderung genannt. 521 00:22:13,390 --> 00:22:16,760 Es ist nur daran erinnern, wer ich bin, jharvard @ Appliance, wo 522 00:22:16,760 --> 00:22:18,850 Gerät ist der Name des Computers, ich bin auf. 523 00:22:18,850 --> 00:22:22,380 In Klammern ist Tilde, die squiggle Symbol, das 524 00:22:22,380 --> 00:22:24,160 stellt dar, was? 525 00:22:24,160 --> 00:22:25,590 PUBLIKUM: Home-Verzeichnis. 526 00:22:25,590 --> 00:22:26,350 DAVID J. MALAN: Home-Verzeichnis. 527 00:22:26,350 --> 00:22:29,350 So das ist nur eine Abkürzung zu sagen du bist in 528 00:22:29,350 --> 00:22:32,780 Ihren persönlichen Ordner, wo alle Ihre Dateien gehen standardmäßig. 529 00:22:32,780 --> 00:22:36,080 So, jetzt hier, kann ich ls für die Liste eingeben. 530 00:22:36,080 --> 00:22:40,020 Und das einzige, was ich hier sehe, ist im Moment hello.c. 531 00:22:40,020 --> 00:22:41,770 Und das ist gut so, denn ich schrieb genau dies. 532 00:22:41,770 --> 00:22:44,380 >> Also lass mich gehen Sie vor und nicht machen hallo. 533 00:22:44,380 --> 00:22:46,830 Und ich merke, ich nicht den Befehl make hello.c. 534 00:22:46,830 --> 00:22:50,300 Stattdessen werde ich nur die Eingabe der Basis-Name der Datei, hallo. 535 00:22:50,300 --> 00:22:53,690 Und machen, wie wir am Montag gesehen haben, wird nur folgern, was ich will 536 00:22:53,690 --> 00:22:54,920 die. c-Datei. 537 00:22:54,920 --> 00:22:56,820 So jetzt habe ich getippt machen hallo. 538 00:22:56,820 --> 00:22:59,280 Jetzt sehe ich diese ziemlich langen Befehl und wird auch weiterhin 539 00:22:59,280 --> 00:23:00,480 sehen dies wieder und wieder. 540 00:23:00,480 --> 00:23:03,620 Aber klar, Klang, das Wort, das gerade erschienen ist, 541 00:23:03,620 --> 00:23:05,340 das ist die eigentliche Compiler. 542 00:23:05,340 --> 00:23:08,200 Machen, ist nur ein Build-Dienstprogramm. 543 00:23:08,200 --> 00:23:11,900 Es ist nur eine benutzerfreundliche Programm, das mir erspart, in der 544 00:23:11,900 --> 00:23:15,310 Langfristig, von zu tippen unglaublich mühsam lange 545 00:23:15,310 --> 00:23:17,020 Befehle wie dieser ein. 546 00:23:17,020 --> 00:23:18,950 So könnte man Clang manuell ausführen. 547 00:23:18,950 --> 00:23:20,530 Du könntest geben all das manuell. 548 00:23:20,530 --> 00:23:21,580 Just gets sehr mühsam. 549 00:23:21,580 --> 00:23:24,720 Und so machen, ist nur ein Programm, das unser Leben vereinfacht und 550 00:23:24,720 --> 00:23:27,120 läuft komplexere Befehle für uns. 551 00:23:27,120 --> 00:23:29,410 >> Alles klar, also jetzt, was Datei sollte ich 552 00:23:29,410 --> 00:23:31,540 in meinem aktuellen Verzeichnis? 553 00:23:31,540 --> 00:23:36,310 Nicht nur hello.c, sondern auch hallo. 554 00:23:36,310 --> 00:23:39,710 Also, wenn ich zu laufen hallo wollen, daran erinnern, dass ich dot slash sagen, 555 00:23:39,710 --> 00:23:42,220 wo dot Mittel in den aktuellen Ordner, wohin Sie gehen 556 00:23:42,220 --> 00:23:46,060 sind, und führen Sie dann das Programm namens hallo, und zwar jetzt, 557 00:23:46,060 --> 00:23:48,080 Ich habe Hallo Welt. 558 00:23:48,080 --> 00:23:51,640 Alles klar, alle Fragen auf dem Workflow oder die Syntax der 559 00:23:51,640 --> 00:23:52,890 was wir gerade getan? 560 00:23:55,380 --> 00:23:57,040 >> Alles klar, also nehmen wir Sachen herauf eine Kerbe wieder. 561 00:23:57,040 --> 00:24:00,430 Also das war nicht berauschend, nur ein Programm schreiben, dass nur 562 00:24:00,430 --> 00:24:01,790 immer sagt hallo, Welt. 563 00:24:01,790 --> 00:24:03,920 Also änderten wir es am Montag, zu sagen, hallo, David. 564 00:24:03,920 --> 00:24:06,560 Es ist ein wenig mehr persönliche, aber genauso hart wie die codierte 565 00:24:06,560 --> 00:24:07,410 erste Version. 566 00:24:07,410 --> 00:24:08,780 So gar nicht so überzeugend. 567 00:24:08,780 --> 00:24:13,120 Aber es gibt in C, Funktionen sicherlich neben 568 00:24:13,120 --> 00:24:15,700 print, Funktionen, die Sie Benutzereingaben lassen. 569 00:24:15,700 --> 00:24:17,990 Und die Art, wie wir dies tat, den anderen Tag, war wie folgt. 570 00:24:17,990 --> 00:24:21,440 Vor drucke ich tatsächlich etwas, das ich zum ersten Mal 571 00:24:21,440 --> 00:24:22,410 etwas von dem Benutzer. 572 00:24:22,410 --> 00:24:23,370 Also lassen Sie mich wieder tun. 573 00:24:23,370 --> 00:24:26,580 >> Kette s, wobei s ist nur eine zufällige Namen, hier für eine 574 00:24:26,580 --> 00:24:30,600 String entspricht GetString. 575 00:24:30,600 --> 00:24:32,070 So was GetString? 576 00:24:32,070 --> 00:24:34,630 Offensichtlich bekommt einen String, basierend auf seinen Namen. 577 00:24:34,630 --> 00:24:37,560 Aber was ist es, technisch? 578 00:24:37,560 --> 00:24:38,440 Es ist eine Funktion. 579 00:24:38,440 --> 00:24:41,790 Es ist also eine Funktion, die nicht mit C per se nicht kommen. 580 00:24:41,790 --> 00:24:43,660 CS50 Mitarbeiter schrieb. 581 00:24:43,660 --> 00:24:46,940 Und so dazu verwenden, können Sie nicht nur schließen stdio.h, 582 00:24:46,940 --> 00:24:49,630 Sie müssen auch was gehört? 583 00:24:49,630 --> 00:24:50,060 Yeah. 584 00:24:50,060 --> 00:24:54,210 So cs50.h, das ist nur eine Datei schrieben wir vor einigen Jahren. 585 00:24:54,210 --> 00:24:57,130 Wir installierten sie auf dem Gerät für Sie neben 586 00:24:57,130 --> 00:24:58,490 alle Standard-Dateien. 587 00:24:58,490 --> 00:25:00,500 Und so in diesen ersten Wochen der Klasse, verwenden wir 588 00:25:00,500 --> 00:25:02,820 dies nur zur Vereinfachung der Prozess des Tuns sehr grundlegende 589 00:25:02,820 --> 00:25:04,600 Dinge wie immer Benutzereingaben. 590 00:25:04,600 --> 00:25:07,370 Denn wie wir in ein paar Wochen sehen, bekommen Benutzereingaben in einem 591 00:25:07,370 --> 00:25:10,180 Sprache wie C ist eigentlich überraschend komplex, 592 00:25:10,180 --> 00:25:14,360 vor allem weil man nicht im Voraus wissen, in der Regel, wie 593 00:25:14,360 --> 00:25:17,030 viel Zeug der Benutzer wird geben in. 594 00:25:17,030 --> 00:25:20,340 Und wenn Sie nicht wissen, wie viele Daten zu erwarten ist, müssen Sie nicht 595 00:25:20,340 --> 00:25:22,380 wissen, wie viel Speicher zuweisen. 596 00:25:22,380 --> 00:25:25,480 Und wenn Sie tatsächlich eine kontradiktorische Benutzer, versucht 597 00:25:25,480 --> 00:25:28,180 in Ihr System zu hacken, Ihr Computer abstürzt, gut, 598 00:25:28,180 --> 00:25:31,600 Regel die erste Methode des Angriffs ist, wie ich auf habe 599 00:25:31,600 --> 00:25:34,950 Montag, geben Sie eine ganze lange Folge von zufälligen Zeichen, 600 00:25:34,950 --> 00:25:37,020 Enter und sehen, was bricht. 601 00:25:37,020 --> 00:25:40,800 Da in der Regel, wenn ein Programm bricht, deutet an, dass bei 602 00:25:40,800 --> 00:25:42,650 eine Sicherheitslücke, die möglicherweise. 603 00:25:42,650 --> 00:25:45,250 Es ist sicherlich deutet an Ihnen, dem Programmierer, gemacht a 604 00:25:45,250 --> 00:25:49,050 Fehler, aber gefährlich, könnten Sie gemacht haben a 605 00:25:49,050 --> 00:25:52,430 sicherheitsrelevanten Fehler, und in der Regel werden wir sehen, dass 606 00:25:52,430 --> 00:25:54,840 das ist wie Maschinen bis heute gefährdet sind, sowohl 607 00:25:54,840 --> 00:25:56,620 in der Welt des Web und Programme auf die 608 00:25:56,620 --> 00:25:58,070 Befehlszeile wie diese. 609 00:25:58,070 --> 00:25:58,350 >> Gut. 610 00:25:58,350 --> 00:26:00,460 So string s entspricht GetString. 611 00:26:00,460 --> 00:26:03,380 So konkret jetzt, was macht Linie 6 hier tun? 612 00:26:03,380 --> 00:26:05,640 So ist die Funktion auf der rechten erhält string, 613 00:26:05,640 --> 00:26:06,890 dauert, wie viele Argumente? 614 00:26:09,458 --> 00:26:09,900 Okay. 615 00:26:09,900 --> 00:26:10,400 So keine. 616 00:26:10,400 --> 00:26:11,360 Ein wenig Plausibilitätsprüfung. 617 00:26:11,360 --> 00:26:15,380 Ein Argument wiederum ist nur ein Eingang mit einer Funktion zum verändern 618 00:26:15,380 --> 00:26:17,250 sein normales Verhalten in gewisser Weise. 619 00:26:17,250 --> 00:26:19,540 Aber in diesem Fall, ich will nicht zu verändern 620 00:26:19,540 --> 00:26:20,650 das Verhalten GetString. 621 00:26:20,650 --> 00:26:22,430 Ich wollte nur einen String zu erhalten. 622 00:26:22,430 --> 00:26:25,190 Also habe ich nichts in den Klammern, und dann habe ich ein 623 00:26:25,190 --> 00:26:27,550 Semikolon Demarkieren das Ende der Zeile des Codes. 624 00:26:27,550 --> 00:26:29,840 Nun, das Gleichheitszeichen bedeutet nicht gleich, per se. 625 00:26:29,840 --> 00:26:32,690 Es bedeutet, Zuordnung, was bedeutet, setzen, was kommt 626 00:26:32,690 --> 00:26:36,060 ausgegeben am rechten Innenseite, was auf der linken Seite. 627 00:26:36,060 --> 00:26:39,400 >> Also auf der linken Seite, wir sagen, wir haben erklärt, ein 628 00:26:39,400 --> 00:26:41,630 String namens s. 629 00:26:41,630 --> 00:26:44,240 Genauer gesagt, haben wir Speicher innerhalb der zugeteilten 630 00:26:44,240 --> 00:26:46,340 wir stellen, welche die Bits, die eine Sequenz von repräsentiert 631 00:26:46,340 --> 00:26:46,850 Zeichen. 632 00:26:46,850 --> 00:26:49,400 Aber heute haben wir zugeteilt 633 00:26:49,400 --> 00:26:51,450 oder erklärt einen String zurück. 634 00:26:51,450 --> 00:26:51,790 Gut. 635 00:26:51,790 --> 00:26:54,760 So, jetzt, nachdem ich dies getan haben, möchte ich im Wert von stecken 636 00:26:54,760 --> 00:26:56,535 s, nicht der Wert des David. 637 00:26:56,535 --> 00:27:00,200 So, das ist falsch, warum? 638 00:27:03,060 --> 00:27:04,870 Das ist also nur buchstäblich die hartcodierte s. 639 00:27:04,870 --> 00:27:06,870 Es ist zu sagen, "Hallo, s", das ist nicht das, was ich will. 640 00:27:06,870 --> 00:27:07,790 So kann ich dies tun. 641 00:27:07,790 --> 00:27:10,330 Das Prozentzeichen ist ein Platzhalter, aber jetzt muss ich 642 00:27:10,330 --> 00:27:12,520 gehen in Druck ein zweites Argument. 643 00:27:12,520 --> 00:27:15,160 Daran erinnern, dass Argumente für Funktionen getrennt sind 644 00:27:15,160 --> 00:27:20,300 Kommas, so dass die nächsten Komma hier habe ich nach diesem das Schreiben s. 645 00:27:20,300 --> 00:27:23,740 Und in diesem Zusammenhang jetzt ist s die Variable, und printf, 646 00:27:23,740 --> 00:27:25,550 bei Empfang dieser beiden Eingängen - 647 00:27:25,550 --> 00:27:29,440 die Zeichenfolge auf der linken und der Variablennamen s auf der rechten - 648 00:27:29,440 --> 00:27:32,750 es stecken diese in die ehemalige für uns, und 649 00:27:32,750 --> 00:27:34,600 einfach ausdrucken einen schönen schönen String 650 00:27:34,600 --> 00:27:36,770 was auch immer es ist, dass wir eingetippt 651 00:27:36,770 --> 00:27:37,560 >> Also lasst uns versuchen. 652 00:27:37,560 --> 00:27:38,860 Werde weitermachen und Verkleinern, Rücken 653 00:27:38,860 --> 00:27:40,250 meine Terminal-Fenster. 654 00:27:40,250 --> 00:27:41,840 Zoom in auf der Unterseite hier. 655 00:27:41,840 --> 00:27:44,070 Erneut eingeben zu machen hallo. 656 00:27:44,070 --> 00:27:45,870 Clang scheint wurden erneut ausführen. 657 00:27:45,870 --> 00:27:49,280 Ich werde geben. / Hallo, Enter. 658 00:27:49,280 --> 00:27:52,145 Nichts scheint noch geschehen, aber es ist an dieser Eingabeaufforderung 659 00:27:52,145 --> 00:27:55,700 dass ich so etwas wie Nate eingeben, Enter, und jetzt haben wir 660 00:27:55,700 --> 00:27:56,380 Hallo, Nate. 661 00:27:56,380 --> 00:27:59,600 Und ich kann es wieder tun mit Rob, und so weiter. 662 00:27:59,600 --> 00:28:03,410 So jetzt hoffentlich dieses Programm verhält, wie ich will. 663 00:28:03,410 --> 00:28:05,720 >> Nun, nicht alles, was benutzerfreundlich. 664 00:28:05,720 --> 00:28:07,930 Ich habe keine Ahnung, was gerade von mir erwartet. 665 00:28:07,930 --> 00:28:09,620 So können wir sicher reinigen diese bis ein wenig. 666 00:28:09,620 --> 00:28:13,270 Lassen Sie mich gehen wieder hier, und statt nur Tauchen in und 667 00:28:13,270 --> 00:28:16,480 fragt den Benutzer nach einer Zeichenkette, lass mich ausdrücklich sagen, die 668 00:28:16,480 --> 00:28:17,750 Benutzer, was ich erwarte. 669 00:28:17,750 --> 00:28:21,610 So printf ("Geben Sie eine Zeichenfolge:" 670 00:28:21,610 --> 00:28:24,080 ); 671 00:28:24,080 --> 00:28:25,510 Also keine Variablen hier. 672 00:28:25,510 --> 00:28:26,750 Keine Prozentzeichen. 673 00:28:26,750 --> 00:28:28,550 Gerade die einfache englische Redewendung. 674 00:28:28,550 --> 00:28:34,030 Lassen Sie mich nun auf den Boden hier gehen und erneut mein Programm. 675 00:28:34,030 --> 00:28:35,380 Aber nichts scheint sich geändert zu haben. 676 00:28:35,380 --> 00:28:37,350 Warum? 677 00:28:37,350 --> 00:28:38,380 Ich muss es neu kompilieren. 678 00:28:38,380 --> 00:28:39,570 So einfach Fehler zu machen. 679 00:28:39,570 --> 00:28:41,700 Aber Sie müssen nicht nur die Datei speichern, sondern 680 00:28:41,700 --> 00:28:43,260 kompilieren Sie das Programm. 681 00:28:43,260 --> 00:28:46,640 Und so, wenn ich wieder zum Laufen zu bringen hallo, jetzt Clang läuft. 682 00:28:46,640 --> 00:28:51,800 Jetzt kann ich laufen. / Hallo. Und jetzt sehe ich "Geben Sie eine Zeichenfolge:". 683 00:28:51,800 --> 00:28:52,050 Okay. 684 00:28:52,050 --> 00:28:53,440 Jetzt ist es ein wenig mehr benutzerfreundlich. 685 00:28:53,440 --> 00:28:55,850 Nate, Geben, hallo, Nate. 686 00:28:55,850 --> 00:28:57,310 >> Nun, lassen wir noch einmal versuchen und denken 687 00:28:57,310 --> 00:28:58,080 über Eck Fällen. 688 00:28:58,080 --> 00:29:00,520 Also einfach in Scratch mögen, werden Sie aufgefordert oder werden 689 00:29:00,520 --> 00:29:03,180 gefördert im spec zu Art über das, was gehen könnte denken, 690 00:29:03,180 --> 00:29:06,610 falsch, wenn Sie nicht erwarten, alles, was der Benutzer tun könnte. 691 00:29:06,610 --> 00:29:08,050 Bugs, daher ergeben können. 692 00:29:08,050 --> 00:29:09,710 So geben Sie einen String - 693 00:29:09,710 --> 00:29:11,130 was ist eine Ecke Fall hier? 694 00:29:11,130 --> 00:29:13,320 Was ist ein Szenario, dass ich, der Programmierer, die möglicherweise nicht über 695 00:29:13,320 --> 00:29:16,070 erwartet? 696 00:29:16,070 --> 00:29:17,600 Yeah. 697 00:29:17,600 --> 00:29:17,920 Okay. 698 00:29:17,920 --> 00:29:22,060 So was, wenn ich in einer Reihe wie diese geben? 699 00:29:22,060 --> 00:29:22,500 Gut. 700 00:29:22,500 --> 00:29:24,490 So ist es immer noch funktioniert. 701 00:29:24,490 --> 00:29:25,880 Grammatisch macht keinen Sinn. 702 00:29:25,880 --> 00:29:27,180 Aber zumindest das Programm funktioniert. 703 00:29:27,180 --> 00:29:28,650 >> Was ist eine andere Ecke Fall? 704 00:29:28,650 --> 00:29:29,610 Etwas, das ich nicht erwartet hatte. 705 00:29:29,610 --> 00:29:31,590 Yeah? 706 00:29:31,590 --> 00:29:31,940 Okay. 707 00:29:31,940 --> 00:29:34,950 So könnten wir so etwas wie eine wirklich große Nummer. 708 00:29:34,950 --> 00:29:37,270 Also lasst uns dies tun hier. 709 00:29:37,270 --> 00:29:40,880 Lassen Sie mich den Zoomfaktor für eine Sekunde, lassen Sie mich hervorheben. 710 00:29:40,880 --> 00:29:42,250 Kann nicht kopieren und einfügen hier unten. 711 00:29:42,250 --> 00:29:42,470 Gut. 712 00:29:42,470 --> 00:29:44,440 So kann ich nicht kopieren und fügen Sie in diesem Terminal-Fenster, so dass wir 713 00:29:44,440 --> 00:29:46,950 nur simulieren. 714 00:29:46,950 --> 00:29:51,340 Lassen Sie mich zu verkleinern, gehen zu wickeln. 715 00:29:51,340 --> 00:29:52,700 Ich werde mich nicht dazu zu lange tun, denn es wird nicht 716 00:29:52,700 --> 00:29:54,440 tatsächlich in diesem Programm zu brechen. 717 00:29:54,440 --> 00:29:55,260 Aber es könnte. 718 00:29:55,260 --> 00:29:55,830 Enter. 719 00:29:55,830 --> 00:29:56,580 Aber es kam nicht. 720 00:29:56,580 --> 00:29:57,050 Gut. 721 00:29:57,050 --> 00:29:58,440 Aber es ist eine echte Ecke Fall. 722 00:29:58,440 --> 00:30:01,610 Und der einzige Grund, der korrekt verhalten, so 723 00:30:01,610 --> 00:30:05,820 sprechen, weil die CS50-Funktion GetString ist eigentlich 724 00:30:05,820 --> 00:30:08,040 entwickelt unter der Haube, wie wir in ein paar Wochen sehen, 725 00:30:08,040 --> 00:30:11,570 automatisch dafür mehr und mehr RAM, mehr und mehr 726 00:30:11,570 --> 00:30:14,330 Speicher aus dem Betriebssystem, wenn es erkennt, wow, 727 00:30:14,330 --> 00:30:16,670 Sie haben wirklich etwas ganz lange getippt. 728 00:30:16,670 --> 00:30:18,500 Nun, dies ist ein bisschen wie ein Notlüge. 729 00:30:18,500 --> 00:30:22,020 Wenn wir tatsächlich hielt eine ganze Weile und ich eingetippt 730 00:30:22,020 --> 00:30:24,640 so etwas wie 5 Milliarden Zeichen auf der Tastatur 731 00:30:24,640 --> 00:30:28,060 hier, oder wirklich getroffen copy-paste ein bisschen, wir womöglich 732 00:30:28,060 --> 00:30:29,730 konnte das Programm zum Absturz bringen. 733 00:30:29,730 --> 00:30:32,130 Nur ein wenig schwerer zu, dass mit einer endlichen simulieren 734 00:30:32,130 --> 00:30:33,740 Zeitdauer. 735 00:30:33,740 --> 00:30:37,320 >> Was ist eine andere Ecke Fall werden wir versuchen könnte? 736 00:30:37,320 --> 00:30:38,730 Yeah? 737 00:30:38,730 --> 00:30:39,020 Yeah. 738 00:30:39,020 --> 00:30:40,360 Also, warum nicht beantworten wir nichts? 739 00:30:40,360 --> 00:30:43,130 So haben wir eigentlich eine bestimmte Aktion durchführen, weil sonst 740 00:30:43,130 --> 00:30:45,060 das Programm geht, um dort zu blinken sitzen den ganzen Tag. 741 00:30:45,060 --> 00:30:46,860 Aber wenn ich einfach Enter drücken - 742 00:30:46,860 --> 00:30:48,780 OK, jetzt sieht immer noch falsch. 743 00:30:48,780 --> 00:30:51,670 Haben Sie nicht abstürzen, aber vielleicht gibt es jetzt die Möglichkeit, 744 00:30:51,670 --> 00:30:54,190 Beginn der Umsetzung einer strengeren Programm 745 00:30:54,190 --> 00:30:55,290 das tatsächlich überprüft. 746 00:30:55,290 --> 00:30:57,640 Und wenn die Zeichenfolge, der Satz, das Wort, das ich 747 00:30:57,640 --> 00:31:00,890 eingetippt hat die Länge 0, na ja, vielleicht sollte ich an der anschreien 748 00:31:00,890 --> 00:31:03,770 Benutzer oder sagen Sie ihm oder ihr einen String erneut eingeben, so dass 749 00:31:03,770 --> 00:31:06,560 wir eigentlich, was aussieht wie das richtige Verhalten und nicht 750 00:31:06,560 --> 00:31:08,570 nur komplette Kontrolle auf meiner Seite. 751 00:31:08,570 --> 00:31:11,130 >> Frage im Rücken? 752 00:31:11,130 --> 00:31:11,970 Dezimalzahl. 753 00:31:11,970 --> 00:31:13,120 So könnten wir versuchen das auch. 754 00:31:13,120 --> 00:31:16,840 1,10000005. 755 00:31:16,840 --> 00:31:19,470 Scheint, wie das wird nur funktionieren eigentlich okay. 756 00:31:19,470 --> 00:31:21,160 Und dem tatsächlich zu erwarten ist. 757 00:31:21,160 --> 00:31:24,550 Auch wenn wir vielleicht vertippt haben diese Zahl gibt, oder eine 758 00:31:24,550 --> 00:31:28,200 größere Anzahl früher erkennen, dass, wenn wir die Eingabe Benutzer 759 00:31:28,200 --> 00:31:31,070 Eingang und wir verwenden die GetString Funktion nicht 760 00:31:31,070 --> 00:31:34,380 Ob das, was ich eingeben sieht aus wie eine Nummer. 761 00:31:34,380 --> 00:31:36,720 Daran erinnern, dass nach ASCII, alles auf Ihrem 762 00:31:36,720 --> 00:31:39,920 Tastatur hat einen Wert, der einen zugeordnet werden können 763 00:31:39,920 --> 00:31:41,480 Charakter, ein char. 764 00:31:41,480 --> 00:31:44,490 Also in diesem Fall, auch wenn ich vielleicht eine Zahl, die 765 00:31:44,490 --> 00:31:48,190 Computer wird, daran zu denken, so zu sprechen, als String - 766 00:31:48,190 --> 00:31:49,870 etwas, das aussieht wie eine Reihe, ist aber 767 00:31:49,870 --> 00:31:51,090 nicht tatsächlich eine Zahl ist. 768 00:31:51,090 --> 00:31:53,450 Aber das ist eigentlich eine perfekte segue, denn jetzt können wir 769 00:31:53,450 --> 00:31:55,450 tatsächlich Übergang zum Schreiben von Programmen, die 770 00:31:55,450 --> 00:31:56,730 auch andere Datentypen. 771 00:31:56,730 --> 00:32:01,840 >> So neben der Verwendung von Zeichen, oder vielmehr, neben der Verwendung von Strings, 772 00:32:01,840 --> 00:32:04,510 erkennen, dass wir andere Datentypen in C besitzen sowie in 773 00:32:04,510 --> 00:32:05,230 anderen Sprachen. 774 00:32:05,230 --> 00:32:08,480 Ein char, wie der Name schon vermuten lässt, ist nur ein einzelnes Zeichen. 775 00:32:08,480 --> 00:32:12,150 Ein Schwimmer ist ein Gleitkommawert, und das ist nur ein schicker 776 00:32:12,150 --> 00:32:14,470 Art zu sagen, eine reelle Zahl - etwas, das eine Dezimalstelle hat 777 00:32:14,470 --> 00:32:17,410 Punkt es mit einigen Zahlen links und / oder rechts. 778 00:32:17,410 --> 00:32:21,370 Ein int ist eine ganze Zahl, die nur eine Zahl wie 123. 779 00:32:21,370 --> 00:32:24,170 Und nun noch interessanter sind Dinge wie double. 780 00:32:24,170 --> 00:32:28,540 Was haben wir gesagt eine doppelte war beim letzten Mal? 781 00:32:28,540 --> 00:32:30,050 Es ist 64, rechts. 782 00:32:30,050 --> 00:32:33,560 Während also in der Regel ein Schwimmer 32-bit - 783 00:32:33,560 --> 00:32:37,340 so dass es so lange im Speicher ist, verwendet es 32 Nullen und Einsen zu 784 00:32:37,340 --> 00:32:40,530 Werte darstellen - ein doppelter ist buchstäblich doppelt so, die 785 00:32:40,530 --> 00:32:43,810 bedeutet, dass Sie stellen entweder größere Zahlen oder 786 00:32:43,810 --> 00:32:45,810 Sie repräsentieren mehr genauen Zahlen. 787 00:32:45,810 --> 00:32:48,690 So können Sie noch mehr Zahlen nach dem Komma haben, aber 788 00:32:48,690 --> 00:32:51,520 Als der Bursche sagte in dem Video, sogar etwas einfacher 789 00:32:51,520 --> 00:32:55,360 konzeptionell wie 1/3 nicht exakt durch einen vertreten sein 790 00:32:55,360 --> 00:32:58,330 Computer, denn schließlich Sie laufen aus Bits und 791 00:32:58,330 --> 00:33:02,510 daher kann man nur .33333333 so viele Male auf 792 00:33:02,510 --> 00:33:05,050 welcher Stelle Sie müssen nur sagen, ich bin aus der Darstellung 793 00:33:05,050 --> 00:33:08,120 Raum, habe ich nur nennen es einen Tag und stellen es 794 00:33:08,120 --> 00:33:10,200 etwas unpräzise so. 795 00:33:10,200 --> 00:33:11,110 Und ein langer, langer - 796 00:33:11,110 --> 00:33:13,880 blöder Name, aber es ist, weil es einen Datentyp wie eine bekannte 797 00:33:13,880 --> 00:33:19,350 lange in C, die zufälligerweise ist oft 32 Bit, wie ein 798 00:33:19,350 --> 00:33:21,670 int ist 32 Bit, aber eine lange lange 799 00:33:21,670 --> 00:33:23,560 Regel 64 Bits. 800 00:33:23,560 --> 00:33:25,740 So ist es nur bedeutet, dass Sie größer darstellen 801 00:33:25,740 --> 00:33:26,990 Zahlen als diese. 802 00:33:26,990 --> 00:33:27,410 >> Gut. 803 00:33:27,410 --> 00:33:29,390 Also, wenn wir tatsächlich beginnen wollen repräsentieren Dinge, wir 804 00:33:29,390 --> 00:33:31,030 vielleicht kompliziertere Typen brauchen, und 805 00:33:31,030 --> 00:33:32,340 deshalb haben wir String haben. 806 00:33:32,340 --> 00:33:36,450 So in der CS50-Bibliothek, wird die Datei cs50.h genannt, haben wir 807 00:33:36,450 --> 00:33:41,110 tatsächlich erklärte ein Datentyp, so zu sprechen, als String, 808 00:33:41,110 --> 00:33:42,710 aber String nicht wirklich existieren. 809 00:33:42,710 --> 00:33:44,780 Dies ist wiederum eine dieser Schichten werden wir peel 810 00:33:44,780 --> 00:33:47,490 wieder in ein oder zwei Wochen und werfen es weg, und tatsächlich 811 00:33:47,490 --> 00:33:49,640 Blick unter die Haube an, was ein String tatsächlich ist, und 812 00:33:49,640 --> 00:33:50,840 wie es dargestellt wird. 813 00:33:50,840 --> 00:33:53,520 Wir werden auch auf boolesche Werte aussehen. 814 00:33:53,520 --> 00:33:56,040 >> Also, was war ein bool im Rahmen der Scratch? 815 00:33:59,154 --> 00:34:00,300 Es ist wahr oder falsch. 816 00:34:00,300 --> 00:34:03,900 So ist es nur ein Wert, der wahr oder falsch ist, ein-oder ausschalten, 1 oder 817 00:34:03,900 --> 00:34:06,140 0, wie Sie wollen, um die Welt zu sehen. 818 00:34:06,140 --> 00:34:09,739 So in C, dank der CS50-Bibliothek, die wiederum 819 00:34:09,739 --> 00:34:12,179 enthält eine andere Bibliothek unter der Haube haben wir 820 00:34:12,179 --> 00:34:14,909 Zugang zu einem Datentyp, der als bool ist, was wird 821 00:34:14,909 --> 00:34:18,730 wahrsten Sinne des Wortes können wir ordnen die Werte true oder false 822 00:34:18,730 --> 00:34:20,219 Dinge in einem Programm. 823 00:34:20,219 --> 00:34:23,880 >> So lassen Sie uns gehen hier und ein kleines Programm schreiben, dass 824 00:34:23,880 --> 00:34:26,330 tut etwas mit Zahlen statt. 825 00:34:26,330 --> 00:34:29,840 Also lassen Sie mich zurück zu dem CS50 Appliance gehen, lass mich gehen Sie vor und 826 00:34:29,840 --> 00:34:32,770 Erstellen einer neuen Datei hier genannt - 827 00:34:32,770 --> 00:34:35,460 lasst uns einfach sagen etwas Einfaches, wie math.c. 828 00:34:38,270 --> 00:34:38,710 Gut. 829 00:34:38,710 --> 00:34:41,600 Und jetzt gehen bis an die Spitze von meinem Programm, ich bin 830 00:34:41,600 --> 00:34:42,510 werde die üblichen zu tun - 831 00:34:42,510 --> 00:34:44,780 # Include, so dass ich verwenden können 832 00:34:44,780 --> 00:34:46,860 printf, int main (void) - 833 00:34:46,860 --> 00:34:49,270 wir kommen zurück, um schließlich, was int bedeutet, 834 00:34:49,270 --> 00:34:52,389 hier, was Leere bedeutet hier, aber jetzt weiß nur, dass 835 00:34:52,389 --> 00:34:54,270 Sie müssen Programme wie dieses zu starten. 836 00:34:54,270 --> 00:34:56,280 Jetzt werde ich nach vorne gehen und sagen, etwas ein wenig 837 00:34:56,280 --> 00:35:02,110 anders - printf ("Gib mir eine Zahl ein:" 838 00:35:02,110 --> 00:35:03,570 );. 839 00:35:03,570 --> 00:35:09,220 Dann werde ich int n = GetInt tun, weil es 840 00:35:09,220 --> 00:35:12,770 entpuppt GetInt ist eine weitere Funktion in der CS50-Bibliothek 841 00:35:12,770 --> 00:35:14,060 Neben GetString. 842 00:35:14,060 --> 00:35:17,340 Und jetzt werde ich etwas Dummes zu tun, wie "dank 843 00:35:17,340 --> 00:35:25,760 für die% d "für dezimal integer, und dann Komma n und 844 00:35:25,760 --> 00:35:26,620 dann 0 zurück. 845 00:35:26,620 --> 00:35:28,940 Also noch einmal, 0 zurück, hat nichts mit der Anzahl Ich bin zu tun 846 00:35:28,940 --> 00:35:30,080 die Benutzer zu fragen. 847 00:35:30,080 --> 00:35:33,620 Nur bedeutet am Ende, dass alle, vermutlich, ist gut. 848 00:35:33,620 --> 00:35:36,290 >> Also lass mich gehen, um meine Terminal-Fenster hier. 849 00:35:36,290 --> 00:35:39,590 Lassen Sie mich ein make Mathematik geben. 850 00:35:39,590 --> 00:35:41,360 Und noch etwas ist falsch. 851 00:35:41,360 --> 00:35:44,620 Machen Mathematik hat nicht funktioniert. 852 00:35:44,620 --> 00:35:46,170 Hier ist der erste unserer Fehlermeldungen. 853 00:35:46,170 --> 00:35:46,570 Warum? 854 00:35:46,570 --> 00:35:49,720 Ein wenig kryptisch, aber - 855 00:35:49,720 --> 00:35:50,060 Yeah. 856 00:35:50,060 --> 00:35:51,240 So cs50.h. 857 00:35:51,240 --> 00:35:53,900 Also noch einmal, besonders früh auf, dann schreiben Sie Ihre erste 858 00:35:53,900 --> 00:35:56,590 Programm für pset 1 in den Abschnitten, in Sprechstunden und 859 00:35:56,590 --> 00:35:59,050 ehrlich gesagt, es wird überwältigend sein manchmal, was diese Dinge 860 00:35:59,050 --> 00:36:00,000 wirklich sagen. 861 00:36:00,000 --> 00:36:01,890 Aber du wirst sehr schnell erkennen, dass sie beginnen zu fallen 862 00:36:01,890 --> 00:36:06,120 in Eimern wobei diese ein bedeutet, dass du off ein links 863 00:36:06,120 --> 00:36:08,290 der # enthält am Anfang der Datei. 864 00:36:08,290 --> 00:36:10,960 Und Clang, der Compiler wird informiert Sie über dies durch 865 00:36:10,960 --> 00:36:14,090 sagen, sondern fantasievoll, implizite Deklaration der 866 00:36:14,090 --> 00:36:15,990 Funktion GetInt ist ungültig. 867 00:36:15,990 --> 00:36:16,310 >> Gut. 868 00:36:16,310 --> 00:36:17,520 Also, was bedeutet das? 869 00:36:17,520 --> 00:36:22,080 Es bedeutet nur, Sie haben implizit deklariert GetInt in 870 00:36:22,080 --> 00:36:24,850 das Gefühl, dass Sie nicht explizit erklärt. 871 00:36:24,850 --> 00:36:27,300 Explizit deklarieren int, müssen Sie lehren 872 00:36:27,300 --> 00:36:28,740 Clang dass es existiert. 873 00:36:28,740 --> 00:36:32,020 Und die sehr einfache Lösung dafür ist es zu lehren, indem 874 00:36:32,020 --> 00:36:34,780 einschließlich dieser anderen Datei, cs50.h an 875 00:36:34,780 --> 00:36:35,850 der Anfang der Datei. 876 00:36:35,850 --> 00:36:40,380 Da buchstäblich, was # include tut, ist es sagt Clang 877 00:36:40,380 --> 00:36:44,030 ziemlich zu gehen finden Sie die Datei cs50.h, Kopieren, 878 00:36:44,030 --> 00:36:48,150 fügen Sie ihn automatisch in die Spitze von meinem Programm für mich, 879 00:36:48,150 --> 00:36:50,850 konvertieren und dann den Quellcode, um Nullen und Einsen. 880 00:36:50,850 --> 00:36:52,850 Aber das wäre natürlich sehr mühsam, wenn wir Menschen mussten 881 00:36:52,850 --> 00:36:55,370 zu gehen Kopieren und Einfügen diese großen Dateien die ganze Zeit, 882 00:36:55,370 --> 00:36:58,540 so # include tut einfach alles, was automatisch und ohne 883 00:36:58,540 --> 00:37:01,550 trüben meinen Code mit jemandem der Bibliothek. 884 00:37:01,550 --> 00:37:06,370 Und eine Bibliothek ist nur eine weitere Datei mit Funktionen und 885 00:37:06,370 --> 00:37:08,340 andere Dinge, die jemand anderes geschrieben hat, dass wir 886 00:37:08,340 --> 00:37:10,270 Nutzung um unserer selbst willen. 887 00:37:10,270 --> 00:37:10,580 >> Gut. 888 00:37:10,580 --> 00:37:11,200 Lassen Sie uns noch einmal versuchen. 889 00:37:11,200 --> 00:37:12,250 Machen math. 890 00:37:12,250 --> 00:37:13,120 Enter. 891 00:37:13,120 --> 00:37:13,530 Gut. 892 00:37:13,530 --> 00:37:14,880 So das scheint funktioniert zu haben. 893 00:37:14,880 --> 00:37:18,330 Also lassen Sie mich jetzt laufen Mathematik;. / Math. 894 00:37:18,330 --> 00:37:21,100 Geben Sie gibt mir eine Zahl, 123. 895 00:37:21,100 --> 00:37:22,620 Danke für die 123. 896 00:37:22,620 --> 00:37:24,490 Nun wollen wir versuchen, eine andere Ecke Fall. 897 00:37:24,490 --> 00:37:26,530 Ein String ist ziemlich großzügig, weil ein 898 00:37:26,530 --> 00:37:27,620 String kann alles sein. 899 00:37:27,620 --> 00:37:28,910 Kann wie Zahlen aussehen, aussehen 900 00:37:28,910 --> 00:37:30,600 Zeichen, wie Wörter zu suchen. 901 00:37:30,600 --> 00:37:31,900 Aber ein int ist ein int. 902 00:37:31,900 --> 00:37:34,370 So jetzt, wenn ich die schwierige Benutzer, und es sagt: "Gib mir 903 00:37:34,370 --> 00:37:38,730 eine Zahl, "was ist, wenn ich so etwas wie 0,1 zu tun versuchen? 904 00:37:38,730 --> 00:37:41,510 Nun, das ist eine Zahl, und es ist im Einklang mit der 905 00:37:41,510 --> 00:37:44,180 Grammatik habe ich hier, aber unter der Haube, ich bin der 906 00:37:44,180 --> 00:37:45,610 Natürlich mit der Funktion GetInt. 907 00:37:45,610 --> 00:37:46,610 >> Also mal sehen, was passiert. 908 00:37:46,610 --> 00:37:48,250 Geben Sie, erneut zu versuchen. 909 00:37:48,250 --> 00:37:48,560 Gut. 910 00:37:48,560 --> 00:37:50,570 Lassen Sie mich schwierig sein und einfach Enter drücken erneut. 911 00:37:50,570 --> 00:37:51,700 Enter, Enter. 912 00:37:51,700 --> 00:37:53,890 So, jetzt scheint es, dass GetInt ist ein wenig mehr 913 00:37:53,890 --> 00:37:55,240 mächtiger als GetString. 914 00:37:55,240 --> 00:37:58,540 Wir, die Mitarbeiter, so dass, wenn wir bemerken, umgesetzt 915 00:37:58,540 --> 00:38:02,100 Sie haben uns nicht gegeben eine int - und ein int ist eine Dezimalzahl 916 00:38:02,100 --> 00:38:04,785 mit Nullen, Einsen, Zweien, Dreien, Vieren, Fünfen, Sechsen, 917 00:38:04,785 --> 00:38:05,540 Siebener, Achter oder Neuner. 918 00:38:05,540 --> 00:38:06,310 Und das ist es. 919 00:38:06,310 --> 00:38:08,810 Keine Dezimalstellen, keine Zeichen, keine Satzzeichen. 920 00:38:08,810 --> 00:38:10,390 Es scheint, dass wir zusammenarbeiten müssen. 921 00:38:10,390 --> 00:38:13,680 So lassen Sie mich versuchen vier, fünf, sechs, und das bringt mich durch. 922 00:38:13,680 --> 00:38:16,760 Also wirklich, zu anal hier sollte ich wohl sagen: "Gib mir 923 00:38:16,760 --> 00:38:20,310 eine ganze Zahl ", um dem Benutzer zu vermitteln 924 00:38:20,310 --> 00:38:22,620 genau das, was ich vorhabe. 925 00:38:22,620 --> 00:38:24,090 >> Nun lassen Sie uns über unter der Haube zu denken. 926 00:38:24,090 --> 00:38:27,930 Wir gehen nicht auf, wie cs50.h umgesetzt wird heute aussehen, 927 00:38:27,930 --> 00:38:29,080 dass die Bibliothek. 928 00:38:29,080 --> 00:38:33,600 Aber wenn es sagt immer wiederholen, wiederholen, wiederholen, was die Programmierung 929 00:38:33,600 --> 00:38:36,970 Bau ich vermutlich mit unter der Haube, um 930 00:38:36,970 --> 00:38:39,000 implementieren, dass? 931 00:38:39,000 --> 00:38:39,980 Also nur eine Schleife, nicht wahr? 932 00:38:39,980 --> 00:38:41,930 Einer der einfachsten Ideen, dass wir auf Scratch sah. 933 00:38:41,930 --> 00:38:45,050 The Forever konstruieren, die Repeat konstruieren. 934 00:38:45,050 --> 00:38:47,320 Vermutlich in diesem Programm unter der Haube, auch 935 00:38:47,320 --> 00:38:49,470 obwohl es in C geschrieben ist und nicht verkratzt, es zu tun 936 00:38:49,470 --> 00:38:54,300 etwas namens entspricht immer, wenn der Benutzer nicht 937 00:38:54,300 --> 00:38:58,710 eingegeben in einem Integer, sagen wiederholen, wiederholen, wiederholen, wiederholen, so 938 00:38:58,710 --> 00:39:01,220 schließlich, wenn wir tun, um eine ganze Zahl, dann 939 00:39:01,220 --> 00:39:02,970 Ausbruch aus dieser Schleife. 940 00:39:02,970 --> 00:39:05,610 >> Also, was andere Funktionen können wir hier verwenden, CS50-Bibliothek? 941 00:39:05,610 --> 00:39:07,880 Nun, Art der offensichtlichen, zumindest auf der Grundlage der 942 00:39:07,880 --> 00:39:09,570 Datentypen, die wir jetzt wissen gibt. 943 00:39:09,570 --> 00:39:12,900 Wir implementierten GetString, GetInt, sondern in der gesamten 944 00:39:12,900 --> 00:39:15,680 ersten Wochen der Laufzeit können Sie auch GetFloat und 945 00:39:15,680 --> 00:39:18,870 GetDouble und GetLongLong um genau das zu bekommen 946 00:39:18,870 --> 00:39:20,030 Datentypen, die Sie wollen. 947 00:39:20,030 --> 00:39:24,030 Da der Schlüssel Detail dabei ist, dass im Gegensatz zu einigen Sprachen, 948 00:39:24,030 --> 00:39:26,630 wie Python und Ruby, wo man nicht unbedingt auf 949 00:39:26,630 --> 00:39:29,730 erklären, den Datentyp einer Variable - 950 00:39:29,730 --> 00:39:32,390 Sie müssen nicht den Computer sagen, welche Art von Zeug 951 00:39:32,390 --> 00:39:34,000 Sie gehen in die Variable setzen - 952 00:39:34,000 --> 00:39:36,640 in C, muss man immer so genau. 953 00:39:36,640 --> 00:39:40,060 Also, wenn Sie eine Variable namens n, ein Stück Speicher 954 00:39:40,060 --> 00:39:42,900 daß in diesem Fall geschieht mit 32 Bits werden vereinbarungsgemäß Sie 955 00:39:42,900 --> 00:39:45,660 müssen Sie den Computer zu sagen, dass diese Bits 956 00:39:45,660 --> 00:39:47,840 werde eine Nummer zu speichern - 957 00:39:47,840 --> 00:39:50,630 kein Zeichen, kein String, nicht ein Schwimmer. 958 00:39:50,630 --> 00:39:52,620 Und dies behebt das Problem, wir effektiv 959 00:39:52,620 --> 00:39:53,760 lief in der vergangenen Woche. 960 00:39:53,760 --> 00:39:57,050 Wenn wir mit Nullen und Einsen Zahlen repräsentieren nicht nur 961 00:39:57,050 --> 00:40:00,770 Zahlen, sondern As und Bs und Cs, wie in der Welt ist ein 962 00:40:00,770 --> 00:40:03,460 Computer gehen zu wissen, dass dieses Muster von Bits tatsächlich 963 00:40:03,460 --> 00:40:07,650 die Zahl 65, wie zu vertreten die entgegengesetzte 964 00:40:07,650 --> 00:40:09,860 Buchstaben A, die zufällig nach 965 00:40:09,860 --> 00:40:13,440 ASCII, erinnere, war gleichbedeutend mit 65? 966 00:40:13,440 --> 00:40:16,550 >> So dass diese Datentypen bereitzustellen Kontext zu dem Computer, so dass 967 00:40:16,550 --> 00:40:18,810 dass sie weiß, wenn diese Bits als interpretiert werden sollte 968 00:40:18,810 --> 00:40:23,660 INT oder als String zurück. 969 00:40:23,660 --> 00:40:26,500 Haben Sie Fragen, dann auf das? 970 00:40:26,500 --> 00:40:28,149 Yeah? 971 00:40:34,780 --> 00:40:35,270 DAVID J. MALAN: Gute Frage. 972 00:40:35,270 --> 00:40:39,140 Wenn wir nehmen stdio.h, speichern wir die Datei - 973 00:40:39,140 --> 00:40:44,360 Lassen Sie mich gehen, um das Terminal-Fenster und führen Sie make Mathematik, zoom 974 00:40:44,360 --> 00:40:45,530 an und geben Sie - 975 00:40:45,530 --> 00:40:47,700 jetzt bekomme ich einen anderen Fehler, weil ich implizit bin 976 00:40:47,700 --> 00:40:49,650 erklärt, was funktionieren jetzt? 977 00:40:49,650 --> 00:40:50,700 Printf. 978 00:40:50,700 --> 00:40:52,970 So jetzt habe ich ein neues Problem, dessen Lösung geschaffen 979 00:40:52,970 --> 00:40:53,890 im Wesentlichen gleich. 980 00:40:53,890 --> 00:40:55,365 Ich muss das zurück setzen. 981 00:40:55,365 --> 00:40:56,615 PUBLIKUM: [unverständlich] 982 00:41:03,534 --> 00:41:04,030 DAVID J. MALAN: Oh. 983 00:41:04,030 --> 00:41:04,850 Also, wenn ich out - 984 00:41:04,850 --> 00:41:05,360 Okay, yeah. 985 00:41:05,360 --> 00:41:08,960 Also, wenn ich entfernen Sie die Standard-I / O-Bibliothek die Aufnahme bis 986 00:41:08,960 --> 00:41:12,020 hier, und dann sagst du, wenn ich los printf erhalten, erhalten 987 00:41:12,020 --> 00:41:13,450 Befreien Sie sich von printf? 988 00:41:13,450 --> 00:41:13,810 Ja. 989 00:41:13,810 --> 00:41:18,450 Das sollte funktionieren, weil ich nicht mehr mit einem bin - hoppla. 990 00:41:18,450 --> 00:41:20,110 Habe ich nur liegen? 991 00:41:20,110 --> 00:41:21,650 Oh, okay. 992 00:41:21,650 --> 00:41:25,640 Dies wird nicht wegen eines neuen Fehler, den wir soeben vorgestellten arbeiten. 993 00:41:25,640 --> 00:41:28,390 Und dieses ist ein wenig mehr selbsterklärend. 994 00:41:28,390 --> 00:41:29,440 >> Was ist das Problem? 995 00:41:29,440 --> 00:41:30,680 Unbenutzte Variable n. 996 00:41:30,680 --> 00:41:34,040 So dieser Fehler ist das Ergebnis unserer nachdem die konfigurierte 997 00:41:34,040 --> 00:41:36,640 Gerät besonders pedantisch, um wirklich zu schreien 998 00:41:36,640 --> 00:41:39,060 Sie für jeden möglichen Fehler, auch wenn es irgendwie 999 00:41:39,060 --> 00:41:41,950 eine nicht-fataler Fehler wie diese - ist es wirklich so eine große 1000 00:41:41,950 --> 00:41:44,820 umgehen, dass ich ein int zugeordnet, legte eine Reihe drin, und dann 1001 00:41:44,820 --> 00:41:46,030 habe gerade nichts mit ihm? 1002 00:41:46,030 --> 00:41:47,020 So funktional, nein. 1003 00:41:47,020 --> 00:41:50,410 Das ist nicht, um das Programm zu brechen. 1004 00:41:50,410 --> 00:41:51,490 Es ist nur irgendwie dumm, nicht wahr? 1005 00:41:51,490 --> 00:41:54,220 Es gibt keinen Wert zu haben für diese Nummer gebeten, gespeichert 1006 00:41:54,220 --> 00:41:56,370 in einer Variablen, wenn Sie nie etwas zu tun 1007 00:41:56,370 --> 00:41:58,000 mit ihm, ob es drucken oder speichern. 1008 00:41:58,000 --> 00:42:00,270 So dass in diesem Fall wird so viel Clang anzuerkennen, und 1009 00:42:00,270 --> 00:42:02,010 es sagt nicht verwendete Variable n. 1010 00:42:02,010 --> 00:42:05,380 >> So können wir dieses Problem beheben, wenn wir wirklich wollen. 1011 00:42:05,380 --> 00:42:07,250 Aber auch dies ist kein guter Programmierstil jetzt. 1012 00:42:07,250 --> 00:42:09,310 So konnte ich nur tun dies - 1013 00:42:09,310 --> 00:42:12,060 gehen Sie hier, lassen Sie mich klar auf den Bildschirm, machen math. 1014 00:42:12,060 --> 00:42:13,090 Das funktioniert. 1015 00:42:13,090 --> 00:42:18,110 Jetzt kann ich betreibe meine Mathematik-Programm, nimmt Eingang - 1016 00:42:18,110 --> 00:42:18,700 gut, das war schlecht. 1017 00:42:18,700 --> 00:42:23,450 Nimmt die Eingabe, und das ist alles so ist, in diesem Fall. 1018 00:42:23,450 --> 00:42:25,220 >> Also eigentlich wollen wir versuchen eine andere Ecke Fall, dass wir 1019 00:42:25,220 --> 00:42:26,300 nicht früherer denken. 1020 00:42:26,300 --> 00:42:28,220 In diesem Fall - hier gehen wir zurück auf die eine, die eine ist 1021 00:42:28,220 --> 00:42:29,500 etwas mehr benutzerfreundlich. 1022 00:42:29,500 --> 00:42:32,580 Lassen Sie mich gehen wieder hier und laufen zu lassen math wieder. 1023 00:42:32,580 --> 00:42:34,190 Whoops, was habe ich falsch gemacht? 1024 00:42:34,190 --> 00:42:35,400 Got to weiter zurück rollen. 1025 00:42:35,400 --> 00:42:36,390 Okay. 1026 00:42:36,390 --> 00:42:38,490 Jetzt sind wir wieder in den ursprünglichen Zustand, in dem alle 1027 00:42:38,490 --> 00:42:39,990 ist hoffentlich gut. 1028 00:42:39,990 --> 00:42:43,360 Und jetzt, wenn ich Mathematik laufen, scheint 123 zu arbeiten. 1029 00:42:43,360 --> 00:42:46,010 Aber das ist nicht wirklich eine effektive Beweis, nur sagen 1030 00:42:46,010 --> 00:42:47,930 okay, das funktioniert. 1031 00:42:47,930 --> 00:42:49,120 789, das funktioniert. 1032 00:42:49,120 --> 00:42:50,100 Zeit zu unterbreiten. 1033 00:42:50,100 --> 00:42:51,870 Denn es gibt andere Ecke Fälle hier. 1034 00:42:51,870 --> 00:42:55,040 Ein String nicht wirklich geben uns viel Mühe, indem Sie einen 1035 00:42:55,040 --> 00:42:56,510 ganze Menge von Zeichen. 1036 00:42:56,510 --> 00:42:59,580 Aber was, wenn ich in dieser Art? 1037 00:42:59,580 --> 00:43:04,850 Schlagen die Zahl 1 eine ganze Menge, viel hier - 1038 00:43:04,850 --> 00:43:06,300 Alles in Ordnung, es wird ein wenig langweilig, so dass ich zu gehen 1039 00:43:06,300 --> 00:43:10,040 halten hier, und ich werde Enter drücken. 1040 00:43:10,040 --> 00:43:11,290 >> Was zum Teufel ist passiert? 1041 00:43:14,110 --> 00:43:17,680 So kann dies tatsächlich erklärt werden. 1042 00:43:17,680 --> 00:43:18,920 So hat es gedauert, es als Binary? 1043 00:43:18,920 --> 00:43:21,130 Ein guter Gedanke, aber nein, es ist nicht die Tatsache, dass es dauerte 1044 00:43:21,130 --> 00:43:22,815 als binäre, weil ja, das war nur eine Art 1045 00:43:22,815 --> 00:43:23,080 Zufall. 1046 00:43:23,080 --> 00:43:23,930 Wir können dies wieder zu tun. 1047 00:43:23,930 --> 00:43:26,530 Es gibt also keine 2 im binären System, das ist 1048 00:43:26,530 --> 00:43:27,420 wahrscheinlich genug sowieso. 1049 00:43:27,420 --> 00:43:28,780 Enter. 1050 00:43:28,780 --> 00:43:30,140 Das war also nicht das Problem. 1051 00:43:30,140 --> 00:43:31,390 Was sonst noch? 1052 00:43:34,650 --> 00:43:35,400 Genau. 1053 00:43:35,400 --> 00:43:37,830 >> So denken Sie zurück an, was für ein int eigentlich ist. 1054 00:43:37,830 --> 00:43:40,970 Es ist 32 Bit, die zusammen interpretiert 1055 00:43:40,970 --> 00:43:42,090 als Nummer. 1056 00:43:42,090 --> 00:43:44,730 Wenn Sie 32 Bit haben, bedeutet dies, dass jedes der Bits kann 1057 00:43:44,730 --> 00:43:46,690 eine 0 oder eine 1, 0 oder eine 1 ist. 1058 00:43:46,690 --> 00:43:49,090 Das heißt also, es gibt zwei Möglichkeiten, dieses Bit 1059 00:43:49,090 --> 00:43:51,140 zwei Möglichkeiten dafür, zwei Möglichkeiten hierfür 1060 00:43:51,140 --> 00:43:52,570 bit - das ist also 2 mal 2 mal - 1061 00:43:52,570 --> 00:43:55,480 das ist also 2 bis 32 der Leistung ist die Gesamtzahl der 1062 00:43:55,480 --> 00:43:58,960 Permutationen von Nullen und Einsen, wenn Sie 32 haben 1063 00:43:58,960 --> 00:44:01,400 Platzhalter, Nullen oder Einsen, vor Ihnen. 1064 00:44:01,400 --> 00:44:04,250 Also, wenn ich 2 haben die 32, mathematisch, was ist? 1065 00:44:07,080 --> 00:44:07,840 Es ist also eine ganze Menge. 1066 00:44:07,840 --> 00:44:09,910 Es ist 4 Milliarden, geben oder nehmen. 1067 00:44:09,910 --> 00:44:13,510 Und 4 Milliarden scheint nicht zu sein, was wurde hier gedruckt. 1068 00:44:13,510 --> 00:44:16,290 In der Tat sieht das näher bei 2 Milliarden Euro. 1069 00:44:16,290 --> 00:44:17,970 Aber dies ist kein Zufall. 1070 00:44:17,970 --> 00:44:21,590 Die Tatsache, dass der Computer hat meine große Anzahl falsch interpretiert, 1071 00:44:21,590 --> 00:44:24,260 meine große Folge von Einsen und dann meine riesige Abfolge von Zweien, 1072 00:44:24,260 --> 00:44:26,880 wie etwa 2 Milliarden wird erläutert, wie? 1073 00:44:30,250 --> 00:44:32,180 Es gibt eine Kappe auf dem int. 1074 00:44:32,180 --> 00:44:34,970 Es gibt eine sicherlich eine maximale Wert, den Sie darstellen kann. 1075 00:44:34,970 --> 00:44:36,370 Aber es ist in der Regel 4 Milliarden, nicht wahr? 1076 00:44:36,370 --> 00:44:39,100 Wenn 2 der 32 ist rund 4 Milliarden, das scheint, wie 1077 00:44:39,100 --> 00:44:40,350 das ist die größte Anzahl. 1078 00:44:42,420 --> 00:44:45,240 Also nicht ein Rest, aber ein guter Gedanke. 1079 00:44:45,240 --> 00:44:46,340 Negative Zahlen. 1080 00:44:46,340 --> 00:44:49,570 Also, wenn Sie haben 4 Milliarden mögliche Dinge, die Sie 1081 00:44:49,570 --> 00:44:52,970 stellen mit diesen verschiedenen Permutationen von 32 0 und 1082 00:44:52,970 --> 00:44:55,600 1s, na ja, liegt es nahe, dass wir Menschen vielleicht wollen 1083 00:44:55,600 --> 00:44:57,110 stellen nicht nur positive ganze Zahlen 1084 00:44:57,110 --> 00:44:58,240 aber negative Zahlen. 1085 00:44:58,240 --> 00:45:00,410 Und in der Tat, das ist die Annahme, dass C macht. 1086 00:45:00,410 --> 00:45:03,550 So mit 32 Bit, können Sie repräsentieren etwa minus 2 1087 00:45:03,550 --> 00:45:06,630 Milliarden den ganzen Weg bis zum positiven 2 Milliarden. 1088 00:45:06,630 --> 00:45:08,750 Und so in diesem Fall, was wir wirklich sehen, ist nur 1089 00:45:08,750 --> 00:45:13,600 Rande der Kapazität unserer integer, und wir haben, so 1090 00:45:13,600 --> 00:45:15,860 zu sprechen, zum Überlauf einer Integer. 1091 00:45:15,860 --> 00:45:19,180 Wir haben versucht, mehr Bits hinein stopfen, als tatsächlich passen. 1092 00:45:19,180 --> 00:45:22,960 So das Ergebnis ist, dass wir im Wesentlichen haben alle 1-Bits. 1093 00:45:22,960 --> 00:45:25,280 Wir haben umgedreht alle unsere Bits auf, haben wir versucht zu repräsentieren 1094 00:45:25,280 --> 00:45:27,630 die größte Zahl möglich, aber es ist eindeutig nicht annähernd 1095 00:45:27,630 --> 00:45:30,960 groß genug, um die beiden Dinge, die ich gerade geschrieben habe in. stellen 1096 00:45:30,960 --> 00:45:31,730 Yeah? 1097 00:45:31,730 --> 00:45:32,980 PUBLIKUM: [unverständlich] 1098 00:45:37,230 --> 00:45:37,830 >> DAVID J. MALAN: Gute Frage. 1099 00:45:37,830 --> 00:45:40,080 Warum können wir nicht einfach darzustellen, dass negative 1100 00:45:40,080 --> 00:45:41,500 Anmeldung als nur ein Zeichen? 1101 00:45:41,500 --> 00:45:44,200 Also haben wir absolut konnte, und wir könnten dann speichern 1102 00:45:44,200 --> 00:45:45,470 ein zusätzliches Bit. 1103 00:45:45,470 --> 00:45:49,100 Aber du bist immer noch zu müssen, dass dash darstellen, und 1104 00:45:49,100 --> 00:45:50,700 das wird, kostet Sie zumindest etwas, 1105 00:45:50,700 --> 00:45:52,220 vermutlich ein bisschen. 1106 00:45:52,220 --> 00:45:55,610 Also ja, könnten wir 32 Bit für unsere Nummer, aber jetzt 1107 00:45:55,610 --> 00:45:57,610 Wir brauchen ein neues etwas für unsere Bindestrich 1108 00:45:57,610 --> 00:45:58,810 Symbol, das Minuszeichen. 1109 00:45:58,810 --> 00:46:01,470 So, jetzt haben wir 33-Bit-Werte, die wir tun könnten, aber es ist 1110 00:46:01,470 --> 00:46:02,570 einfach nicht so, wie es gemacht wird. 1111 00:46:02,570 --> 00:46:05,140 Wir haben ein Urteil Anruf Jahren, ist 32 Bit Art der 1112 00:46:05,140 --> 00:46:06,170 Maßeinheit hier. 1113 00:46:06,170 --> 00:46:08,120 So werden wir zu einem dieser Bits effektiv zu nutzen, um 1114 00:46:08,120 --> 00:46:12,950 stellen Negativität, und 31 Bits, um die Zahl darzustellen. 1115 00:46:12,950 --> 00:46:15,550 Weitere Fragen? 1116 00:46:15,550 --> 00:46:15,670 Gut. 1117 00:46:15,670 --> 00:46:16,030 Das ist eine Menge. 1118 00:46:16,030 --> 00:46:17,930 Warum gehen wir nicht voran gehen und nehmen unsere fünf Minuten Pause hier? 1119 00:46:23,580 --> 00:46:24,270 >> Gut. 1120 00:46:24,270 --> 00:46:31,250 Also noch einmal, um nicht überbetonen die mathematischen Anwendungen 1121 00:46:31,250 --> 00:46:33,840 der Programmierung, lass uns einfach abzupfen dieses ein Beispiel 1122 00:46:33,840 --> 00:46:36,590 bevor wir in anderen Konstrukten zu verschieben, nur weil es 1123 00:46:36,590 --> 00:46:39,430 wird ein paar gemeinsame Stolperstein Punkte auf einige zeigen 1124 00:46:39,430 --> 00:46:41,520 die Grundlagen, wenn es um das Schreiben von Programmen kommt. 1125 00:46:41,520 --> 00:46:44,360 In diesem Fall tut arithmetische Ausdrücke, die einige haben 1126 00:46:44,360 --> 00:46:48,010 Interessant Relevanz für die Syntax. 1127 00:46:48,010 --> 00:46:50,430 >> So ist dies nur eine Formel, mit denen wir wandeln 1128 00:46:50,430 --> 00:46:52,690 Temperaturen von Fahrenheit in Celsius. 1129 00:46:52,690 --> 00:46:54,600 Wenn Sie nicht erinnere, das ist nur die Formel. 1130 00:46:54,600 --> 00:46:58,870 Also, wenn wir stecken in Fahrenheit Wert von 32 Grad, das ist 1131 00:46:58,870 --> 00:47:02,850 Einfrieren, das wird zu 32 minus 32 gleich 0 ist, und in der Tat, 1132 00:47:02,850 --> 00:47:05,130 0 in Celsius ist auch dem Gefrierpunkt. 1133 00:47:05,130 --> 00:47:08,210 So schnell sanity es zu überprüfen - das ist die bekannte Formel. 1134 00:47:08,210 --> 00:47:10,880 Laß mich hinübergehen, um das Gerät, obwohl, und beginnen 1135 00:47:10,880 --> 00:47:13,920 Schreiben Sie ein Programm namens, wie, f2c, "Fahrenheit 1136 00:47:13,920 --> 00:47:15,920 Celsius dot c ". 1137 00:47:15,920 --> 00:47:18,930 Und an der Spitze hier, ich werde beginnen mit # include 1138 00:47:18,930 --> 00:47:22,190 stdio.h, und ich werde int main (void) zu tun, und 1139 00:47:22,190 --> 00:47:24,680 wieder, wir kommen zurück in die Zukunft, was bedeutet, int 1140 00:47:24,680 --> 00:47:26,820 gibt und was void bedeutet es. 1141 00:47:26,820 --> 00:47:28,770 Und jetzt lassen Sie mich gehen Sie vor und Umsetzung eines Programms, dass 1142 00:47:28,770 --> 00:47:31,170 Wesentlichen funktioniert diese Umwandlung für uns. 1143 00:47:31,170 --> 00:47:36,830 >> So printf, sagen wir mal, Temperatur in Fahrenheit. 1144 00:47:36,830 --> 00:47:40,140 Und dann lassen Sie mich weiter zu machen und den Wert des Benutzers. 1145 00:47:40,140 --> 00:47:43,120 Welche Art von Wert sollte ich von dem Benutzer zu bekommen, wenn ich will 1146 00:47:43,120 --> 00:47:45,620 sie geben mir eine Temperatur in Fahrenheit? 1147 00:47:45,620 --> 00:47:48,090 Yeah? 1148 00:47:48,090 --> 00:47:50,090 Was würden Sie vorschlagen? 1149 00:47:50,090 --> 00:47:50,410 Yeah. 1150 00:47:50,410 --> 00:47:51,960 So float fühlt sich ziemlich vernünftig. 1151 00:47:51,960 --> 00:47:53,950 Wir haben wieder nur ein paar Optionen, die 1152 00:47:53,950 --> 00:47:55,310 Wir haben bisher gesehen. 1153 00:47:55,310 --> 00:48:00,100 Wir haben Dinge wie char, double, float, int, long long, 1154 00:48:00,100 --> 00:48:01,150 bool, string. 1155 00:48:01,150 --> 00:48:03,510 So davon, fühlt float ziemlich vernünftig. 1156 00:48:03,510 --> 00:48:06,340 Wir könnten eine doppelte, rechts, denn wenn wir wirklich wollen, 1157 00:48:06,340 --> 00:48:07,580 stellen eines Menschen Temperatur - 1158 00:48:07,580 --> 00:48:10,730 98,60000 - 1159 00:48:10,730 --> 00:48:12,990 konnten wir mit 64 Bit zu tun, aber es fühlt sich an wie 1160 00:48:12,990 --> 00:48:14,200 Overkill für die Temperatur. 1161 00:48:14,200 --> 00:48:16,380 Also lass uns einfach gehen mit Schwimmer. 1162 00:48:16,380 --> 00:48:18,100 Jetzt brauche ich eine Variable. 1163 00:48:18,100 --> 00:48:20,500 Nur um die Dinge einfach halten, werde ich es nennen f, aber ich 1164 00:48:20,500 --> 00:48:23,370 könnte genauso richtig nennen es Temperatur, 1165 00:48:23,370 --> 00:48:24,600 aber entweder ist in Ordnung. 1166 00:48:24,600 --> 00:48:27,610 So schweben f = GetFloat. 1167 00:48:27,610 --> 00:48:30,220 Sobald ich jetzt beschlossen haben, GetFloat verwenden, obwohl ich 1168 00:48:30,220 --> 00:48:33,340 müssen ein Korrektur vorzunehmen. 1169 00:48:33,340 --> 00:48:33,720 Yeah. 1170 00:48:33,720 --> 00:48:37,460 Also müssen wir # include müssen, da sonst die Compiler 1171 00:48:37,460 --> 00:48:39,000 gehen, um uns zu schreien. 1172 00:48:39,000 --> 00:48:41,720 Jetzt, da ich einen Schwimmer haben, lassen Sie mich gehen Sie vor und tun das 1173 00:48:41,720 --> 00:48:42,460 Konvertierung. 1174 00:48:42,460 --> 00:48:44,980 >> So lassen Sie mich zunächst auch in die Gewohnheit zu bekommen hier 1175 00:48:44,980 --> 00:48:46,310 kommentierte mein Code. 1176 00:48:46,310 --> 00:48:49,820 Also noch einmal, ist ein Kommentar nur eine Notation für das menschliche, das ist 1177 00:48:49,820 --> 00:48:52,600 nicht Teil des Programms per se, aber es ein, hilft Ihnen 1178 00:48:52,600 --> 00:48:55,010 verstehen, was Sie am nächsten Morgen tat, oder die nächste 1179 00:48:55,010 --> 00:48:57,570 Monat, hilft es, Ihren Unterricht Kollegen verstehen, was du getan hast 1180 00:48:57,570 --> 00:48:59,230 oder was Sie zu tun gedenke, so ist es 1181 00:48:59,230 --> 00:49:00,950 in der Regel sehr gute Praxis. 1182 00:49:00,950 --> 00:49:02,940 Alle paar Zeilen Code, schreiben Sie einen Kommentar zu 1183 00:49:02,940 --> 00:49:04,490 Sie oder Ihre Kollegen. 1184 00:49:04,490 --> 00:49:08,460 Also hier, ich werde sagen: "Benutzer fragen, für die Temperatur." 1185 00:49:08,460 --> 00:49:10,890 Muss nicht ein vollständiger Satz, nur eine kurze Phrase sein. 1186 00:49:10,890 --> 00:49:14,270 Aber die Idee, die hinter kommentieren in C ist, dass jede Ihrer 1187 00:49:14,270 --> 00:49:17,980 Kommentare sollten befähigen Sie - oder, sagen wir, ein TF oder einen Kollegen - 1188 00:49:17,980 --> 00:49:21,290 Ihr Programm überfliegen und wissen genau, was sie tut, indem sie nicht 1189 00:49:21,290 --> 00:49:24,650 so viel Lesen des Codes, sondern durch das Lesen der Kommentare, die 1190 00:49:24,650 --> 00:49:26,220 sollte prägnant und klar. 1191 00:49:26,220 --> 00:49:29,030 Alles klar, also lassen Sie mich jetzt voran gehen und sagen, "Konvertieren 1192 00:49:29,030 --> 00:49:32,660 Fahrenheit in Celsius. "Also werde ich weitermachen und tun, 1193 00:49:32,660 --> 00:49:34,340 sagen wir mal, float c. 1194 00:49:34,340 --> 00:49:36,610 Wir halten Celsius als Fließkommazahl. 1195 00:49:36,610 --> 00:49:37,630 >> Und lassen Sie mich einen Stich an diese. 1196 00:49:37,630 --> 00:49:40,350 Die Formel ist wiederum hier oben. 1197 00:49:40,350 --> 00:49:45,510 Als 5/9 mal F minus 32. 1198 00:49:45,510 --> 00:49:46,360 Also lasst uns dies tun. 1199 00:49:46,360 --> 00:49:50,450 So 5 von 9 geteilt, minus - 1200 00:49:50,450 --> 00:49:52,330 hoppla, durcheinander ich es schon. 1201 00:49:52,330 --> 00:49:53,070 Times. 1202 00:49:53,070 --> 00:49:56,550 So 5/9 mal F minus 32. 1203 00:49:56,550 --> 00:49:59,650 So F minus 32, Semikolon. 1204 00:49:59,650 --> 00:50:02,000 Und jetzt, hier unten, ich werde weitermachen 1205 00:50:02,000 --> 00:50:03,220 und sagen, drucken Ergebnis. 1206 00:50:03,220 --> 00:50:05,160 Und dieser Teil ist einfach. Printf. 1207 00:50:05,160 --> 00:50:07,980 Wie kann ich über das Drucken dies gehen? 1208 00:50:07,980 --> 00:50:16,890 Nun, ich könnte sagen: "Diese Zahl in Celsius% f \ n", 1209 00:50:16,890 --> 00:50:18,060 nur für einige Ästhetik. 1210 00:50:18,060 --> 00:50:20,450 Und dann, welchen Wert will ich hier als printf den Stecker 1211 00:50:20,450 --> 00:50:21,360 zweite Argument? 1212 00:50:21,360 --> 00:50:21,650 Okay. 1213 00:50:21,650 --> 00:50:22,540 Also einfach c. 1214 00:50:22,540 --> 00:50:24,760 Also werden wir mit diesem zu starten und dann nur 0 zurück. 1215 00:50:24,760 --> 00:50:25,960 Auch hier hat es nichts mit der Mathematik zu tun. 1216 00:50:25,960 --> 00:50:27,610 Es bedeutet nur, alles ist gut. 1217 00:50:27,610 --> 00:50:31,210 >> Nun, dies ist richtig, dieses Programm? 1218 00:50:31,210 --> 00:50:31,520 Gut. 1219 00:50:31,520 --> 00:50:33,630 So habe ich einige Fehler gemacht. 1220 00:50:33,630 --> 00:50:35,980 Selbst wenn Sie keine Ahnung, was die Programmierung haben, können Sie sortieren 1221 00:50:35,980 --> 00:50:37,120 des folgern zurück zur Grundschule, was die 1222 00:50:37,120 --> 00:50:38,740 Fehler hier sein könnte. 1223 00:50:38,740 --> 00:50:40,050 Was ist einer der ersten? 1224 00:50:40,050 --> 00:50:41,256 PUBLIKUM: [unverständlich] 1225 00:50:41,256 --> 00:50:41,660 DAVID J. MALAN: Yeah. 1226 00:50:41,660 --> 00:50:42,940 Daher freuen wir uns fehlenden Klammern. 1227 00:50:42,940 --> 00:50:45,420 Es war vorsätzliche, dass ich Klammern haben in der Keynote 1228 00:50:45,420 --> 00:50:48,130 schieben hier, weil es ist eigentlich dieser Begriff von Ordnung 1229 00:50:48,130 --> 00:50:51,590 von Operationen oder Vorrang, wobei bestimmte Operationen - 1230 00:50:51,590 --> 00:50:52,890 Multiplikation - 1231 00:50:52,890 --> 00:50:56,000 haben eine höhere Bindung, haben eine höhere Priorität, als die Dinge 1232 00:50:56,000 --> 00:50:58,050 wie Addition oder Subtraktion. 1233 00:50:58,050 --> 00:51:00,550 So haben wir seit Jahren gemacht, nur um klare genau machen 1234 00:51:00,550 --> 00:51:02,840 was mathematische Operation zuerst getan werden sollte. 1235 00:51:02,840 --> 00:51:05,010 Also sollte ich wohl genau diese zu imitieren. 1236 00:51:05,010 --> 00:51:08,990 Andernfalls wird der Computer vermutlich werde versuchen zu tun 1237 00:51:08,990 --> 00:51:13,090 so etwas wie divide 5 von 9, dann multiplizieren F, dann subtrahieren 1238 00:51:13,090 --> 00:51:14,850 32 von der ganzen Sache. 1239 00:51:14,850 --> 00:51:16,480 Was ist in der Tat nicht, was wir tun wollen. 1240 00:51:16,480 --> 00:51:17,340 Also lasst uns klammern. 1241 00:51:17,340 --> 00:51:20,860 Lasst meinen Klammern hier, Klammern hier. 1242 00:51:20,860 --> 00:51:22,670 Setzen wir dies hier. 1243 00:51:22,670 --> 00:51:25,130 Hier habe ich gerade bemerkt, andere Fehler, den ich auf dem Weg gemacht. 1244 00:51:25,130 --> 00:51:25,680 Yeah? 1245 00:51:25,680 --> 00:51:26,930 PUBLIKUM: [unverständlich] 1246 00:51:29,632 --> 00:51:30,130 >> DAVID J. MALAN: Ah. 1247 00:51:30,130 --> 00:51:30,470 Gut. 1248 00:51:30,470 --> 00:51:32,400 So haben wir eigentlich die gleiche Zahl 1249 00:51:32,400 --> 00:51:34,020 Geschäftsbereich Thema von vorhin. 1250 00:51:34,020 --> 00:51:35,800 Ich das korrigieren, mal sehen, was das Symptom. 1251 00:51:35,800 --> 00:51:36,990 Aber wir gehen zu müssen, eine richtige 1252 00:51:36,990 --> 00:51:37,680 andere Fehler hier. 1253 00:51:37,680 --> 00:51:38,015 Yeah? 1254 00:51:38,015 --> 00:51:39,540 PUBLIKUM: [unverständlich] 1255 00:51:39,540 --> 00:51:40,070 DAVID J. MALAN: Ja. 1256 00:51:40,070 --> 00:51:43,130 Also, dummer Fehler ich gemacht habe, aber unglaublich wichtig. 1257 00:51:43,130 --> 00:51:45,870 Der Computer ist nicht einfach nur ein Auge zudrücken und lassen 1258 00:51:45,870 --> 00:51:48,770 me nutzen Kapital F, als ich erklärte, tatsächlich die Variable 1259 00:51:48,770 --> 00:51:51,360 als Kleinbuchstaben f hier in Zeile 8. 1260 00:51:51,360 --> 00:51:54,470 Also muss ich in Zeile 11 meine Aktivierung korrigieren, die ein 1261 00:51:54,470 --> 00:51:56,820 vorhin war eine Hauptstadt F aus Versehen. 1262 00:51:56,820 --> 00:51:57,610 Was ist hier? 1263 00:51:57,610 --> 00:51:59,980 Sollte dies Kleinbuchstaben als auch? 1264 00:51:59,980 --> 00:52:02,260 Es sollte, aber das ist ein Zufall. 1265 00:52:02,260 --> 00:52:05,070 Das% f hat nichts mit der Variablen zu tun. 1266 00:52:05,070 --> 00:52:07,980 Also einfach sein super hier klar, lass mich gehen Sie vor und 1267 00:52:07,980 --> 00:52:10,710 Benennen Sie diese kurz, "Temperatur". Lassen Sie mich umbenennen 1268 00:52:10,710 --> 00:52:15,050 Diese "Temperatur". Lassen Sie mich nicht umzubenennen. 1269 00:52:15,050 --> 00:52:18,180 Denn wieder,% f global bedeutet, "floating point Wert." 1270 00:52:18,180 --> 00:52:19,950 Hat nichts mit meiner variable tun. 1271 00:52:19,950 --> 00:52:23,080 Aber "Temperatur" überall ist nur ein wenig wortreich, 1272 00:52:23,080 --> 00:52:25,370 so werde ich zurück zu meinem kleinen "f" s. 1273 00:52:25,370 --> 00:52:27,890 >> Nun, lassen Sie mich gehen Sie vor bis zu meinem Fenster hier. 1274 00:52:27,890 --> 00:52:29,190 Machen f2c - 1275 00:52:29,190 --> 00:52:31,200 das war wieder die beliebigen Namen I 1276 00:52:31,200 --> 00:52:32,590 gaben auf diese Datei. 1277 00:52:32,590 --> 00:52:33,690 Scheint zusammengestellt. 1278 00:52:33,690 --> 00:52:35,080 Lassen Sie mich laufen f2c. 1279 00:52:35,080 --> 00:52:35,780 Enter. 1280 00:52:35,780 --> 00:52:37,786 Temperatur in Fahrenheit - lasst uns ein einfaches ein. 1281 00:52:37,786 --> 00:52:39,370 32. 1282 00:52:39,370 --> 00:52:40,910 OK, zu korrigieren. 1283 00:52:40,910 --> 00:52:45,910 Aber, wenn ich jetzt tun 212 zum Kochen - 1284 00:52:45,910 --> 00:52:46,630 damn. 1285 00:52:46,630 --> 00:52:47,030 Gut. 1286 00:52:47,030 --> 00:52:50,780 Also, offensichtlich nicht korrigieren, wenn Ihr TF versucht 1287 00:52:50,780 --> 00:52:51,800 mindestens zwei Werten. 1288 00:52:51,800 --> 00:52:53,340 Also, was ist das Problem? 1289 00:52:53,340 --> 00:52:55,970 Nun, haben Sie bereits mit dem Finger auf das, was das Problem ist. 1290 00:52:55,970 --> 00:52:57,600 Aber warum ist das so? 1291 00:52:57,600 --> 00:53:00,630 Hier oben, wenn ich tue, die Mathematik von 5 von 9 unterteilt. 1292 00:53:00,630 --> 00:53:02,190 So konzeptionell, das ist vollkommen richtig. 1293 00:53:02,190 --> 00:53:03,690 Völlig im Einklang mit der Formel. 1294 00:53:03,690 --> 00:53:05,940 Aber Computer nur tun genau das, was Sie 1295 00:53:05,940 --> 00:53:06,760 ihnen sagen, zu tun. 1296 00:53:06,760 --> 00:53:08,940 Und was wir tatsächlich sagen, der Computer ist hier 1297 00:53:08,940 --> 00:53:12,320 teilen die Zahl 5 durch die Zahl 9 1298 00:53:12,320 --> 00:53:13,670 und gib mir das Ergebnis. 1299 00:53:13,670 --> 00:53:16,230 Das Problem ist aber, wenn Sie eine Division mit keine Daten 1300 00:53:16,230 --> 00:53:20,220 Typen, ist die Ausgabe die gleichen Datentyp wie der Eingänge. 1301 00:53:20,220 --> 00:53:23,670 Und dann, wenn die beiden Eingänge beide ints sind, ist der Ausgang gehen 1302 00:53:23,670 --> 00:53:25,110 ein int sein. 1303 00:53:25,110 --> 00:53:28,770 Und so 5 von 9 unterteilt ist Punkt etwas. 1304 00:53:28,770 --> 00:53:32,320 Aber was ist die nächste ganze Zahl auf etwas hinweisen? 1305 00:53:32,320 --> 00:53:33,630 Also, es ist eigentlich 0. 1306 00:53:33,630 --> 00:53:36,620 So wie wir am Montag diskutiert, alles nach dem Komma 1307 00:53:36,620 --> 00:53:37,940 Punkt wird abgeschnitten. 1308 00:53:37,940 --> 00:53:39,495 Es wird nur weggeworfen. 1309 00:53:39,495 --> 00:53:42,760 Dies ist also eine vollständige Fehler, denn ich könnte genauso gut 1310 00:53:42,760 --> 00:53:44,700 multiplizieren alles von 0 hier. 1311 00:53:44,700 --> 00:53:46,550 >> Jetzt kann ich dies in ein paar Möglichkeiten zu beheben. 1312 00:53:46,550 --> 00:53:48,080 Ich konnte dies tun. 1313 00:53:48,080 --> 00:53:50,490 5,0 von 9,0 geteilt. 1314 00:53:50,490 --> 00:53:52,110 Technisch kann ich nicht einmal das zu tun. 1315 00:53:52,110 --> 00:53:55,780 Es genügt, um nur noch eine der Zahlen a float - 1316 00:53:55,780 --> 00:53:58,290 oder Doppel - indem Sie den Dezimalpunkt hier. 1317 00:53:58,290 --> 00:54:01,740 Weil das, was jetzt passiert ist, wenn Sie eine ganze Zahl von spalten 1318 00:54:01,740 --> 00:54:04,670 ein Schwimmer oder ein Doppelbett, ist der Computer gehen zu realisieren 1319 00:54:04,670 --> 00:54:06,830 oh, ist einer von denen genauer. 1320 00:54:06,830 --> 00:54:09,420 Lassen Sie mich irren auf der Seite der Ihnen mehr Präzision als 1321 00:54:09,420 --> 00:54:10,310 Sie bestimmt. 1322 00:54:10,310 --> 00:54:12,700 So wird es konvertieren Sie das Ergebnis - 1323 00:54:12,700 --> 00:54:16,240 es wird das Ergebnis als Gleitkommazahl sowie zurückzukehren. 1324 00:54:16,240 --> 00:54:17,330 So das funktionieren würde. 1325 00:54:17,330 --> 00:54:18,060 Das würde funktionieren. 1326 00:54:18,060 --> 00:54:20,010 Und es gibt einen weiteren Mechanismus, den wir in Stilen 1327 00:54:20,010 --> 00:54:21,390 näher nächste Woche. 1328 00:54:21,390 --> 00:54:24,690 Sie können tatsächlich als Programmierer, sagen dem Computer 1329 00:54:24,690 --> 00:54:27,930 tatsächlich behandeln ein Datentyp wie 1330 00:54:27,930 --> 00:54:29,260 wäre sie eine andere. 1331 00:54:29,260 --> 00:54:30,990 >> So konnte ich tatsächlich tun dies. 1332 00:54:30,990 --> 00:54:35,280 In Klammern kann ich sagen, so etwas wie (float), offene 1333 00:54:35,280 --> 00:54:36,350 paren, in der Nähe paren. 1334 00:54:36,350 --> 00:54:39,050 Und das ist, was heißt "Casting". Wiederum weitere 1335 00:54:39,050 --> 00:54:39,940 auf dieser nächste Woche. 1336 00:54:39,940 --> 00:54:42,280 Doch dies ist nur die programmatische Möglichkeit zu sagen, 1337 00:54:42,280 --> 00:54:45,910 der Computer, ja, ich weiß, 9 ist eine ganze oder eine lang. 1338 00:54:45,910 --> 00:54:47,700 Ich weiß, es ist nicht eine Fließkommazahl. 1339 00:54:47,700 --> 00:54:49,420 Sondern behandeln sie als solche sowieso. 1340 00:54:49,420 --> 00:54:52,000 So ein Datentyp umgewandelt bedeutet zu konvertieren 1341 00:54:52,000 --> 00:54:53,310 von einem zum anderen. 1342 00:54:53,310 --> 00:54:55,790 Ehrlich gesagt, das nur ein wenig hässlich ist, so würde ich vorschlagen, wir gehen 1343 00:54:55,790 --> 00:54:58,830 wieder auf den ursprünglichen Vorschlag nur das Umwandeln 1344 00:54:58,830 --> 00:55:00,770 diese Dinge Gleitkommawerte manuell. 1345 00:55:00,770 --> 00:55:02,890 Denn jetzt ist es einfach super klar, was los ist, und 1346 00:55:02,890 --> 00:55:04,280 es ist nicht alles, was ablenken. 1347 00:55:04,280 --> 00:55:06,710 >> Also lasst uns jetzt gehen zurück in mein Terminal-Fenster. 1348 00:55:06,710 --> 00:55:07,990 Machen f2c. 1349 00:55:07,990 --> 00:55:09,430 Lassen Sie mich gehen Sie vor und führen Sie dieses. 1350 00:55:09,430 --> 00:55:12,340 Und als beiseite, lassen Sie sich langweilen Eingabe dieser Befehle 1351 00:55:12,340 --> 00:55:14,910 wieder und wieder, zu realisieren, dass die Computer, wie Linux hier, 1352 00:55:14,910 --> 00:55:16,010 sind in der Regel ziemlich schlau. 1353 00:55:16,010 --> 00:55:18,890 Und wenn ich oben schlagen, können wir durch meinen ganzen Geschichte gehen 1354 00:55:18,890 --> 00:55:20,380 Kommandos, Up and Down. 1355 00:55:20,380 --> 00:55:23,840 Also in diesem Fall hier, kann ich einfach hingehen Bis zu make f2c. 1356 00:55:23,840 --> 00:55:25,830 Ich werde angeschrien, weil ich genau das tat vor einer Sekunde. 1357 00:55:25,830 --> 00:55:27,030 Es ist bereits up to date. 1358 00:55:27,030 --> 00:55:30,720 So, jetzt kann ich laufen f2c wieder. 1359 00:55:30,720 --> 00:55:33,260 Lassen Sie uns versuchen 32 Fahrenheit. 1360 00:55:33,260 --> 00:55:36,720 Nun wollen wir versuchen, 212 Fahrenheit. 1361 00:55:36,720 --> 00:55:37,250 >> Puh. 1362 00:55:37,250 --> 00:55:38,250 Scheint zu funktionieren. 1363 00:55:38,250 --> 00:55:41,760 Nun, dies ist gut, aber es fühlt sich ein wenig willkürlich, dass 1364 00:55:41,760 --> 00:55:44,890 Ich zeige sechs Zahlen nach den Dezimalstellen. 1365 00:55:44,890 --> 00:55:45,070 Right? 1366 00:55:45,070 --> 00:55:47,830 Wenn Sie das Wetter Person TV, bist du eine Art doofus 1367 00:55:47,830 --> 00:55:49,150 wenn du liest die Temperatur auf 1368 00:55:49,150 --> 00:55:50,070 Dieses Maß an Präzision. 1369 00:55:50,070 --> 00:55:51,270 Also lasst uns erleichtern dies. 1370 00:55:51,270 --> 00:55:53,880 Lassen Sie uns also tatsächlich gehen hier, um meine printf. 1371 00:55:53,880 --> 00:55:55,490 Und ja, ich will zu schweben. 1372 00:55:55,490 --> 00:55:57,570 Aber ich will jetzt angeben, die Präzision. 1373 00:55:57,570 --> 00:55:59,070 Und ich werde ein wenig prägnante sein. 1374 00:55:59,070 --> 00:56:03,090 Ich werde sagen, gib mir ein Punkt nach der Dezimalstelle. 1375 00:56:03,090 --> 00:56:07,590 Also anstatt zu sagen% f, werde ich sagen,% .1 f. 1376 00:56:07,590 --> 00:56:09,760 Und dies bedeutet nur, mir eine Position 1377 00:56:09,760 --> 00:56:11,410 nach dem Komma. 1378 00:56:11,410 --> 00:56:11,700 Gut. 1379 00:56:11,700 --> 00:56:12,570 Lassen Sie uns noch einmal versuchen. 1380 00:56:12,570 --> 00:56:15,590 Lassen Sie mich erneut ausführen, nachdem kompilieren. 1381 00:56:15,590 --> 00:56:18,160 Und jetzt tippe ich in 32, und ich bekomme wieder eine 1382 00:56:18,160 --> 00:56:19,310 prägnanter Wert. 1383 00:56:19,310 --> 00:56:22,480 Und ich kann in geben, jetzt, 212, und wieder eine knappere 1384 00:56:22,480 --> 00:56:23,260 Wert als gut. 1385 00:56:23,260 --> 00:56:25,190 Und es gibt andere Dinge, die Sie mit printf tun können. 1386 00:56:25,190 --> 00:56:27,950 Sie können tatsächlich geben, wie weit die Zahl sein sollte. 1387 00:56:27,950 --> 00:56:30,900 Wenn Sie Polsterung auf sie haben wollen, so können Sie mit der rechten Maustaste ausrichten oder 1388 00:56:30,900 --> 00:56:32,360 linksbündig alle Ihre Zahlen oder 1389 00:56:32,360 --> 00:56:33,400 versuchen Zentrum Dinge. 1390 00:56:33,400 --> 00:56:35,340 So erkennen, gibt es kleine Tricks, die Sie dort tun kann. 1391 00:56:35,340 --> 00:56:38,420 Aber sie gerade laufen auf Format-Codes, 1392 00:56:38,420 --> 00:56:39,600 wie wir dort haben. 1393 00:56:39,600 --> 00:56:41,090 >> So im Sinne dieser Ausgabe von Vorrang. 1394 00:56:41,090 --> 00:56:43,820 Dies ist eine sehr langweilige Tabelle zu durchlaufen methodisch. 1395 00:56:43,820 --> 00:56:46,780 Aber klar, dass die Autoren von C haben sich mit dem zu kommen 1396 00:56:46,780 --> 00:56:50,190 Regeln geben, die die Betreiber höher haben 1397 00:56:50,190 --> 00:56:53,680 Vorrang, mehr Bindekraft, als andere. 1398 00:56:53,680 --> 00:56:55,890 Während also in der Grundschule, wir in der Regel wusste, dass es 1399 00:56:55,890 --> 00:56:58,930 Multiplikation und Division, dann Addition und Subtraktion, 1400 00:56:58,930 --> 00:56:59,950 dann einige andere Sachen. 1401 00:56:59,950 --> 00:57:01,720 In einer Welt der Programmierung, gibt es eine viel 1402 00:57:01,720 --> 00:57:03,360 längere Liste von Dingen. 1403 00:57:03,360 --> 00:57:05,150 Und das ist nicht etwas wert Auswendiglernen jetzt. 1404 00:57:05,150 --> 00:57:07,310 Du wirst es vor langer gewöhnen. 1405 00:57:07,310 --> 00:57:10,690 Aber genau wie in der Grundschule, Klammern in der Regel lösen 1406 00:57:10,690 --> 00:57:12,990 die Themen Vorrang, indem sie super klar die 1407 00:57:12,990 --> 00:57:15,620 Computer und Mensch gleichermaßen, was beabsichtigt ist. 1408 00:57:15,620 --> 00:57:17,770 So halten diese nur ein wenig Spickzettel gibt. 1409 00:57:17,770 --> 00:57:21,690 Aber die meisten dieser Details, die wir nicht zu bekommen für einige Zeit. 1410 00:57:21,690 --> 00:57:21,900 >> Gut. 1411 00:57:21,900 --> 00:57:24,120 Jetzt wollen wir aufbauen und weg von dieser dummen, kleinen 1412 00:57:24,120 --> 00:57:25,460 mathematische Beispiele. 1413 00:57:25,460 --> 00:57:27,500 Immer noch die gleichen Grundlagen, sondern beginnen 1414 00:57:27,500 --> 00:57:29,960 uns auszudrücken ein wenig mehr wie Scratch. 1415 00:57:29,960 --> 00:57:31,660 So in Scratch, hatten wir diese Boolesche Ausdrücke. 1416 00:57:31,660 --> 00:57:34,890 Und in Englisch, ist ein boolescher Ausdruck, was? 1417 00:57:34,890 --> 00:57:35,580 Wahr oder falsch. 1418 00:57:35,580 --> 00:57:38,300 Es ist etwas, das wahr oder falsch bewertet. 1419 00:57:38,300 --> 00:57:39,060 1 oder 0 ist. 1420 00:57:39,060 --> 00:57:39,870 Oder ausschalten. 1421 00:57:39,870 --> 00:57:41,000 Was auch immer Sie es nennen wollen. 1422 00:57:41,000 --> 00:57:43,210 Jetzt in Scratch, sah die Puzzleteile so. 1423 00:57:43,210 --> 00:57:45,850 Und das ist die Kombination, auf der Unterseite befindet, von drei 1424 00:57:45,850 --> 00:57:47,980 Puzzleteile. 1425 00:57:47,980 --> 00:57:48,980 Eine Verbindung - 1426 00:57:48,980 --> 00:57:51,710 etwas, das leer und blank ist. 1427 00:57:51,710 --> 00:57:53,970 Und dann zwei boolesche Ausdrücke darin. 1428 00:57:53,970 --> 00:57:56,460 So kann man Nest Boolesche Ausdrücke mehr zu bekommen 1429 00:57:56,460 --> 00:57:59,360 kompliziert Boolesche Ausdrücke. 1430 00:57:59,360 --> 00:58:03,930 Zum Beispiel, wenn es ist Samstag, und es ist schön 1431 00:58:03,930 --> 00:58:06,180 Wetter, dann nach draußen gehen. 1432 00:58:06,180 --> 00:58:07,500 Oder etwas Willkürliches so. 1433 00:58:07,500 --> 00:58:10,090 So können Sie an boolesche Ausdrücke zu kommen mit einer 1434 00:58:10,090 --> 00:58:12,780 größeren Wahrheitsgehalt, deren Beantwortung basiert 1435 00:58:12,780 --> 00:58:13,800 auf den kleineren. 1436 00:58:13,800 --> 00:58:15,770 >> Jetzt, in C, zum Glück, ist diese Zuordnung 1437 00:58:15,770 --> 00:58:16,720 eigentlich ziemlich einfach. 1438 00:58:16,720 --> 00:58:18,820 Klammern dazu beitragen, dass die Dinge hier zu löschen. 1439 00:58:18,820 --> 00:58:21,700 && Ist, was bedeutet, "und." Damit ist, wie 1440 00:58:21,700 --> 00:58:24,700 wir werden diese Blöcke from Scratch zu C. konvertieren 1441 00:58:24,700 --> 00:58:27,590 Und für die Bedingungen, die wir sahen in Scratch, auf der linken 1442 00:58:27,590 --> 00:58:31,150 Seite gibt, kann ich sie ähnlich in der Hierarchie C. Wenn x kleiner 1443 00:58:31,150 --> 00:58:32,970 als y, dann tun Sie dies. 1444 00:58:32,970 --> 00:58:35,100 Sonst wenn x größer als y ist, dann dies tun. 1445 00:58:35,100 --> 00:58:38,030 Else sie logischerweise gleich sein, so sagen 1446 00:58:38,030 --> 00:58:39,140 dass sie gleich sind. 1447 00:58:39,140 --> 00:58:41,210 So können wir jetzt damit beginnen, diese Dinge aufzubauen. 1448 00:58:41,210 --> 00:58:42,170 >> So lasst uns ein Beispiel. 1449 00:58:42,170 --> 00:58:45,550 Lassen Sie mich öffnen eine Datei, die auf dem Kurs der Website, dass es 1450 00:58:45,550 --> 00:58:47,270 Ich schrieb im Voraus. 1451 00:58:47,270 --> 00:58:50,540 Das nennt man nonswitch.c. 1452 00:58:50,540 --> 00:58:52,270 Und wir werden sehen, warum in nur einem Augenblick. 1453 00:58:52,270 --> 00:58:54,770 So in dieser Datei - nonswitch.c-- 1454 00:58:54,770 --> 00:58:56,830 zuerst erkennen, dass es eine ganze Reihe von 1455 00:58:56,830 --> 00:58:58,460 Kommentare am Anfang. 1456 00:58:58,460 --> 00:59:00,110 Das ist nur Erläuterung der Name der Datei, was es 1457 00:59:00,110 --> 00:59:01,260 tut, und so weiter. 1458 00:59:01,260 --> 00:59:04,390 Und es offenbar demonstriert die Verwendung von Boolean AND-ing - 1459 00:59:04,390 --> 00:59:06,220 conjoining zwei Ausdrücke. 1460 00:59:06,220 --> 00:59:07,670 >> Also mal sehen, wie dieses Programm funktioniert. 1461 00:59:07,670 --> 00:59:10,840 Ich schließe meine beiden Dateien, cs50.h und stdio.h. 1462 00:59:10,840 --> 00:59:13,180 Wenn ich nach unten scrollen, jetzt, um das Programm, ist es ein wenig länger 1463 00:59:13,180 --> 00:59:15,730 als wir vorher geschrieben, aber ziemlich lesbar. 1464 00:59:15,730 --> 00:59:18,360 Also habe ich zuerst auf die Benutzer drucken, on line 18, 1465 00:59:18,360 --> 00:59:20,460 "Gib mir eine ganze Zahl zwischen 1 und 10". So 1466 00:59:20,460 --> 00:59:21,530 das ist recht. 1467 00:59:21,530 --> 00:59:23,410 Jetzt bekomme ich die integer. 1468 00:59:23,410 --> 00:59:25,380 Aber erkennen, dass GetInt - ziemlich einfach. 1469 00:59:25,380 --> 00:59:26,510 Ist es nur geht, um einen int zu bekommen. 1470 00:59:26,510 --> 00:59:28,830 Es wird, um sicherzustellen, dass es ein int zu bekommen und nicht ein 1471 00:59:28,830 --> 00:59:30,060 String oder ein Schwimmer. 1472 00:59:30,060 --> 00:59:32,390 Aber es wird nicht jede Art von Grenze Kontrolle zu tun. 1473 00:59:32,390 --> 00:59:34,750 Es wird nicht zu filtern die Zahlen zwischen a sein 1474 00:59:34,750 --> 00:59:35,630 bestimmten Bereichs. 1475 00:59:35,630 --> 00:59:37,730 Also müssen wir, dass wir uns zu implementieren. 1476 00:59:37,730 --> 00:59:40,680 Also einfach in Scratch gefallen, wo ich eine Konjunktion von do 1477 00:59:40,680 --> 00:59:43,560 zwei Ausdrücke, kann ich das in C wie folgt. 1478 00:59:43,560 --> 00:59:48,660 Wenn n größer als oder gleich 1 ist, und n kleiner als und 1479 00:59:48,660 --> 00:59:52,220 oder gleich 3, ich bin sehr willkürlich Dekret gehen, dass 1480 00:59:52,220 --> 00:59:53,830 Nummer eine kleine Zahl sein. 1481 00:59:53,830 --> 00:59:56,730 Nur aus Gründen einer Anweisung. 1482 00:59:56,730 --> 01:00:00,210 Else if n zwischen 4 und 6, print "Sie haben eine mittlere 1483 01:00:00,210 --> 01:00:03,440 Nummer. "Else, wenn n liegt zwischen 7 und 10, print" Sie nahm ein 1484 01:00:03,440 --> 01:00:06,390 große Nummer. "Else print" Sie holen eine ungültige Nummer. " 1485 01:00:06,390 --> 01:00:07,900 Da logischerweise folgt, dass, wenn wir habe 1486 01:00:07,900 --> 01:00:09,230 erschöpft unserem Sortiment. 1487 01:00:09,230 --> 01:00:12,400 >> So klar, dass das nicht ganz, wie wir mehr als Schreib-oder 1488 01:00:12,400 --> 01:00:15,000 gleich in einer Mathe-Unterricht. 1489 01:00:15,000 --> 01:00:15,160 Right? 1490 01:00:15,160 --> 01:00:17,430 In der Regel ziehen sie wie diese, mit der Linie darunter. 1491 01:00:17,430 --> 01:00:19,250 Aber es gibt keine solche Taste auf meiner Tastatur. 1492 01:00:19,250 --> 01:00:22,390 So das Zeichen nach C zur Expression von größer oder 1493 01:00:22,390 --> 01:00:25,770 gleich ist zwei Zeichen, und das Symbol für weniger als 1494 01:00:25,770 --> 01:00:29,100 oder gleich ist zwei Zeichen sowie. 1495 01:00:29,100 --> 01:00:29,330 Gut. 1496 01:00:29,330 --> 01:00:31,910 Also, wenn ich dieses Programm ausführen, können Sie wahrscheinlich erraten, was es ist 1497 01:00:31,910 --> 01:00:32,650 tun werde. 1498 01:00:32,650 --> 01:00:36,180 Wenn ich voran gehen und machen nonswitch, Enter. 1499 01:00:36,180 --> 01:00:38,130 Und dann laufen nonswitch. 1500 01:00:38,130 --> 01:00:39,530 Gib mir eine Zahl zwischen 1 und 10. 1501 01:00:39,530 --> 01:00:40,870 Ich werde ihm 11. 1502 01:00:40,870 --> 01:00:42,280 Ich nahm eine ungültige Nummer. 1503 01:00:42,280 --> 01:00:44,090 Lassen Sie mich versuchen, die Nummer 3. 1504 01:00:44,090 --> 01:00:45,990 Ich nahm eine kleine Anzahl. 1505 01:00:45,990 --> 01:00:48,360 So ziemlich einfach da. 1506 01:00:48,360 --> 01:00:52,230 >> Was ist, wenn ich will, um das Verhalten dieses Programm zu ändern und 1507 01:00:52,230 --> 01:00:54,250 etwas ein wenig anders statt? 1508 01:00:54,250 --> 01:00:57,620 Lassen Sie mich gehen Sie vor und sagen. 1509 01:00:57,620 --> 01:00:59,480 Lassen Sie mich loswerden all dies. 1510 01:00:59,480 --> 01:01:03,780 Und lassen Sie mich sagen, wenn (n == 42). 1511 01:01:03,780 --> 01:01:08,730 Und dann werde ich nach vorne gehen und sagen print "Du hast dir das 1512 01:01:08,730 --> 01:01:16,340 richtige Antwort. "Else wir gehen voran gehen und sagen, 1513 01:01:16,340 --> 01:01:18,460 printf ("Sie haben die 1514 01:01:18,460 --> 01:01:21,170 falsche Antwort ");. Okay. 1515 01:01:21,170 --> 01:01:22,040 Nur weil. 1516 01:01:22,040 --> 01:01:23,890 >> Jetzt, ein paar Punkte, die wir hier machen. 1517 01:01:23,890 --> 01:01:26,570 Eines habe ich nicht geben Sie das Symbol, dass Sie denken, ist die 1518 01:01:26,570 --> 01:01:27,390 vernünftigste. 1519 01:01:27,390 --> 01:01:30,110 Wenn ich auf Gleichheit prüfen wollen, stellt sich heraus, die Sie nicht verwenden die 1520 01:01:30,110 --> 01:01:30,910 Gleichheitszeichen. 1521 01:01:30,910 --> 01:01:34,000 Sie verwenden stattdessen die gleiche Gleichheitszeichen. 1522 01:01:34,000 --> 01:01:36,440 Und warum könnte das sein, nur intuitiv? 1523 01:01:36,440 --> 01:01:37,030 Yeah. 1524 01:01:37,030 --> 01:01:39,330 PUBLIKUM: [unverständlich] 1525 01:01:39,330 --> 01:01:39,615 DAVID J. MALAN: Richtig. 1526 01:01:39,615 --> 01:01:41,630 Das Gleichheitszeichen ist bereits für die Zuordnung verwendet. 1527 01:01:41,630 --> 01:01:43,020 Jemand habe nicht wirklich glaube, das durch. 1528 01:01:43,020 --> 01:01:45,820 Und jetzt, wenn es um die Gleichstellung Prüfung kommt, müssen wir 1529 01:01:45,820 --> 01:01:48,850 expliziter sein, und sagen gleich entspricht. 1530 01:01:48,850 --> 01:01:52,110 Ein sehr häufiger Fehler ist es, dies zu tun. 1531 01:01:52,110 --> 01:01:54,800 Und wenn in der Bürozeiten oder irgendwann nächste Woche oder in der 1532 01:01:54,800 --> 01:01:58,340 nächsten zwei Wochen werden Sie etwas tun und dann 1533 01:01:58,340 --> 01:02:00,920 kämpfen mit ihm für 10, 20 Minuten, um herauszufinden, 1534 01:02:00,920 --> 01:02:03,330 was das verdammte Bug ist, erkennen, dass Sie einer von denen sind 1535 01:02:03,330 --> 01:02:04,470 Menschen, die diese Fehler gemacht. 1536 01:02:04,470 --> 01:02:06,030 So, super einfach zu machen. 1537 01:02:06,030 --> 01:02:08,240 Aber das Ziel ist jetzt abzuwehren diesen Fehler. 1538 01:02:08,240 --> 01:02:11,840 Dies könnte zu bewerten, weil das, was ist das wirklich sagen? 1539 01:02:11,840 --> 01:02:15,010 Wenn n erhält 42. 1540 01:02:15,010 --> 01:02:18,250 So das Verb Menschen nutzen, mündlich, die zum Ausdruck bringen 1541 01:02:18,250 --> 01:02:21,800 Begriff der Zuordnung "bekommt." Also, wenn n erhält 42. 1542 01:02:21,800 --> 01:02:24,060 Das heißt also, weisen 42 bis n. 1543 01:02:24,060 --> 01:02:26,250 Jetzt habe ich ein Boolean Ausdruck in Klammern, 1544 01:02:26,250 --> 01:02:30,230 Innere dieser Bedingung ist, deren Wert 42. 1545 01:02:30,230 --> 01:02:30,390 Right? 1546 01:02:30,390 --> 01:02:32,690 Denn wenn Sie es beurteilen von innen heraus, die insgesamt 1547 01:02:32,690 --> 01:02:34,100 Antwort, jetzt ist 42. 1548 01:02:34,100 --> 01:02:37,360 >> Also, wenn ich Ihnen die Frage gestellt, "wenn (42)," was ist 1549 01:02:37,360 --> 01:02:38,410 das wirklich sagen? 1550 01:02:38,410 --> 01:02:40,990 Nun, man kann Boolean Ausdrücke nur wahr oder falsch sein. 1551 01:02:40,990 --> 01:02:42,010 1 oder 0 ist. 1552 01:02:42,010 --> 01:02:43,010 Oder ausschalten. 1553 01:02:43,010 --> 01:02:45,240 So scheinen wir eine Ecke Fall hier zu haben, wobei alle a 1554 01:02:45,240 --> 01:02:50,060 Plötzlich, ich sage ", wenn (42)". Das ist nicht ein boolescher Wert. 1555 01:02:50,060 --> 01:02:54,500 Also, was Computern zu tun, ist es aber im wesentlichen entspricht 1556 01:02:54,500 --> 01:02:58,620 alles, was nicht 0 interpretiert wird um wahr zu sein. 1557 01:02:58,620 --> 01:02:59,340 Ein. 1558 01:02:59,340 --> 01:02:59,690 On. 1559 01:02:59,690 --> 01:03:01,510 Sie sind alle funktionell gleichwertig. 1560 01:03:01,510 --> 01:03:05,070 Nur der Wert 0 oder das Schlüsselwort falsch, wie wir 1561 01:03:05,070 --> 01:03:07,860 schließlich sehen, ist eigentlich falsch. 1562 01:03:07,860 --> 01:03:15,040 So ", wenn (42)" tatsächlich wahr sein, weil es nicht null ist. 1563 01:03:15,040 --> 01:03:18,620 So um genauer zu sein hier ist ein boolescher Wert wirklich nicht so 1564 01:03:18,620 --> 01:03:20,680 viel wahr oder falsch, aber für diese 1565 01:03:20,680 --> 01:03:24,650 Fall, wenn die Zahl 0 oder ungleich Null ist. 1566 01:03:24,650 --> 01:03:26,330 So falsch oder nicht falsch. 1567 01:03:26,330 --> 01:03:28,640 Und das ermöglicht es uns, umso mehr umfassen 1568 01:03:28,640 --> 01:03:30,980 Möglichkeiten in der Klammerausdruck. 1569 01:03:30,980 --> 01:03:33,840 Also müssen wir, noch so sorgfältig, sagen - 1570 01:03:33,840 --> 01:03:35,620 if (n == 42). 1571 01:03:35,620 --> 01:03:39,100 Ganz einfach, weil wir brauchen, um einen Test der Gleichheit geben, 1572 01:03:39,100 --> 01:03:40,930 nicht eine Zuweisung eines Wertes. 1573 01:03:40,930 --> 01:03:42,830 >> Was ist erwähnenswert, hier? 1574 01:03:42,830 --> 01:03:46,030 Diese geschweiften Klammern sind eigentlich nicht notwendig. 1575 01:03:46,030 --> 01:03:48,650 Ich mache sie einfach zu sein nit-wählerisch hier. 1576 01:03:48,650 --> 01:03:51,350 Aber wenn Sie eine Bedingung, die nur eine Zeile 1577 01:03:51,350 --> 01:03:55,100 Code, als Bequemlichkeit, müssen Programmierer nicht verwenden müssen, 1578 01:03:55,100 --> 01:03:56,030 die geschweiften Klammern. 1579 01:03:56,030 --> 01:03:59,370 Es genügt, nur Gedankenstrich aus ästhetischen Gründen und 1580 01:03:59,370 --> 01:04:01,050 dann schreiben Sie Ihre Code-Zeile. 1581 01:04:01,050 --> 01:04:04,160 Nur wenn Sie zwei Zeilen Code zu schreiben - für 1582 01:04:04,160 --> 01:04:08,230 So else printf ("Bye!"). Wenn Sie wollen, 1583 01:04:08,230 --> 01:04:09,540 , dass wird diese unterbrochen. 1584 01:04:09,540 --> 01:04:11,700 Sie können Gedankenstrich alles, was Sie wollen, aber die Tatsache, dass Sie 1585 01:04:11,700 --> 01:04:14,600 getippt zwei Zeilen Code, ohne mit geschweiften Klammern 1586 01:04:14,600 --> 01:04:16,860 bedeutet, dass dieses Programm nicht richtig oder vielleicht laufen würde 1587 01:04:16,860 --> 01:04:18,530 nicht einmal richtig zu kompilieren. 1588 01:04:18,530 --> 01:04:21,040 So jetzt, um ehrlich zu sein, ich denke, die beste Gewohnheit ist nur 1589 01:04:21,040 --> 01:04:24,460 Verwenden Sie die geschweiften Klammern, und Sie werden feststellen, dass sie machen 1590 01:04:24,460 --> 01:04:25,750 super klar, was los ist. 1591 01:04:25,750 --> 01:04:29,410 >> Auch als beiseite - besonders wenn Sie zu denen, die verwendet 1592 01:04:29,410 --> 01:04:31,700 die empfohlenen Bücher oder Online-Ressourcen - 1593 01:04:31,700 --> 01:04:33,480 erkennen, dass es diese Vorstellung von Stil 1594 01:04:33,480 --> 01:04:34,130 Programmierung. 1595 01:04:34,130 --> 01:04:37,280 Und manche Leute eigentlich lieber um die geschweiften Klammern gesetzt 1596 01:04:37,280 --> 01:04:38,720 hier auf einer Linie. 1597 01:04:38,720 --> 01:04:41,520 Einige Leute ziehen es lächerlich, Dinge zu tun, 1598 01:04:41,520 --> 01:04:43,830 wie steckte sie hier. 1599 01:04:43,830 --> 01:04:45,140 Es gibt keine falsche Antwort, wenn es darum geht, 1600 01:04:45,140 --> 01:04:46,710 Stil, aber das ist falsch. 1601 01:04:46,710 --> 01:04:47,700 Aber manche Leute es tun. 1602 01:04:47,700 --> 01:04:49,160 [Gelächter] 1603 01:04:49,160 --> 01:04:51,760 DAVID J. MALAN: So erwähne ich das jetzt, weil so 1604 01:04:51,760 --> 01:04:54,400 Sie lesen auf Dinge in Bücher oder online, wirst du bekommen 1605 01:04:54,400 --> 01:04:55,990 verschiedene Meldungen von verschiedenen Lehrern und 1606 01:04:55,990 --> 01:04:56,730 verschiedenen Autoren. 1607 01:04:56,730 --> 01:04:58,640 Und genau erkennen, dass, funktionell, sind sie 1608 01:04:58,640 --> 01:05:00,740 allgemein äquivalent, aber einheitlich sein. 1609 01:05:00,740 --> 01:05:02,850 Also in diesem Fall, werden wir auf dem lockigen standardisieren 1610 01:05:02,850 --> 01:05:04,650 Zahnspangen Schlange hier auf der linken Seite. 1611 01:05:04,650 --> 01:05:04,910 >> Gut. 1612 01:05:04,910 --> 01:05:07,040 So lassen Sie uns jetzt gehen und laufen das, und sehen, was passiert 1613 01:05:07,040 --> 01:05:07,780 mit diesem Programm. 1614 01:05:07,780 --> 01:05:09,970 Machen nonswitch. 1615 01:05:09,970 --> 01:05:11,040 Dann laufen nonswitch. 1616 01:05:11,040 --> 01:05:13,900 Gib mir eine Zahl zwischen 0 und - so ist das nicht relevant 1617 01:05:13,900 --> 01:05:16,480 mehr, aber ich werde einfach willkürlich sagen 42. 1618 01:05:16,480 --> 01:05:17,850 Und ich nahm die richtige Antwort. 1619 01:05:17,850 --> 01:05:20,430 Nun, lasst uns tatsächlich nehmen diese in eine andere Richtung. 1620 01:05:20,430 --> 01:05:22,070 Es stellt sich heraus, es gibt einige andere Syntax haben wir 1621 01:05:22,070 --> 01:05:23,480 können in einem Programm verwenden. 1622 01:05:23,480 --> 01:05:27,310 Hier ist ein neues Stück Syntax, die funktional ist die gleiche, 1623 01:05:27,310 --> 01:05:30,680 aber nur stellt eine weitere Möglichkeit, uns auszudrücken. 1624 01:05:30,680 --> 01:05:32,830 Also das ist eine so genannte "Switch-Anweisung." Und ein 1625 01:05:32,830 --> 01:05:34,820 Switch-Anweisung arbeitet wie folgt. 1626 01:05:34,820 --> 01:05:37,580 Es dauert in Klammern einen Wert, den Sie 1627 01:05:37,580 --> 01:05:38,860 "Schalter" auf. 1628 01:05:38,860 --> 01:05:41,490 Sie wollen sich anders zu verhalten basierend auf ihren Wert. 1629 01:05:41,490 --> 01:05:44,360 Dies bedeutet also Schalter auf dem Wert von n ist. 1630 01:05:44,360 --> 01:05:45,480 Und was bedeutet das? 1631 01:05:45,480 --> 01:05:50,530 Nun, wenn n = 1 oder 2 oder 3, gehen Sie vor und ausdrucken "Du 1632 01:05:50,530 --> 01:05:52,680 nahm eine große Anzahl "und dann brechen. 1633 01:05:52,680 --> 01:05:55,720 Der Grund für den Bruch ist, daß der Weg C arbeitet wie 1634 01:05:55,720 --> 01:05:59,790 sobald es einen Fall, dass übereinstimmt feststellt, startet es die Ausführung 1635 01:05:59,790 --> 01:06:01,610 der gesamte Code darunter. 1636 01:06:01,610 --> 01:06:04,580 Also, wenn ich eine Zeile Code haben, wie ich hier auf der Leitung 27 zu tun, es 1637 01:06:04,580 --> 01:06:05,360 ausgeführt. 1638 01:06:05,360 --> 01:06:07,520 Wenn ich eine andere Linie hier hinzufügen, wird es ausgeführt. 1639 01:06:07,520 --> 01:06:09,350 Eine andere Linie hier, wird es ausgeführt. 1640 01:06:09,350 --> 01:06:12,460 Das Programm stoppt die Ausführung, was unter dem 1641 01:06:12,460 --> 01:06:14,680 anwendbaren case-Anweisung, wenn ich explizit 1642 01:06:14,680 --> 01:06:17,210 sagen "zu brechen." So falsch. 1643 01:06:17,210 --> 01:06:19,220 Rechts, in diesem Fall als Ergebnis. 1644 01:06:19,220 --> 01:06:22,130 Fall 4 oder 5 oder 6, ähnlich, wird 1645 01:06:22,130 --> 01:06:23,160 drucken Sie eine Nachricht. 1646 01:06:23,160 --> 01:06:24,410 In diesem Fall mittlere Anzahl. 1647 01:06:24,410 --> 01:06:25,200 Brechen. 1648 01:06:25,200 --> 01:06:28,160 Fall 7, 8, 9, 10, es geht um auszudrucken "Du hast einen großen 1649 01:06:28,160 --> 01:06:28,950 Nummer. "Break. 1650 01:06:28,950 --> 01:06:31,290 Und dann gibt es buchstäblich ein Schlüsselwort heißt "default" 1651 01:06:31,290 --> 01:06:34,090 Das ist effektiv wie der "else" zu konstruieren. 1652 01:06:34,090 --> 01:06:36,010 So eine neue Syntax, aber intellektuell, 1653 01:06:36,010 --> 01:06:37,060 überhaupt nichts Neues. 1654 01:06:37,060 --> 01:06:38,280 Es ist genau wie der Scratch. 1655 01:06:38,280 --> 01:06:41,040 Wenn else if, else if, eine Art Block. 1656 01:06:41,040 --> 01:06:44,560 >> Damit ist das Einschalten Version dieses Programms. 1657 01:06:44,560 --> 01:06:46,280 Aber beachten Sie, dass wir es getan haben mit Zahlen hier. 1658 01:06:46,280 --> 01:06:49,040 Lassen Sie mich eröffnen eine zweite Version, nur um zu zeigen 1659 01:06:49,040 --> 01:06:50,670 etwas mehr Beton. 1660 01:06:50,670 --> 01:06:52,840 Also hier haben wir Klassen statt. 1661 01:06:52,840 --> 01:06:55,540 Stellt sich heraus, Sie Schalter nicht nur auf ganze Zahlen verwendet werden können, sondern auf 1662 01:06:55,540 --> 01:06:56,340 Zeichen. 1663 01:06:56,340 --> 01:06:58,930 Nicht in allen Datentypen, aber zumindest auf Zeichen. 1664 01:06:58,930 --> 01:07:02,670 Also hier konnten wir etwas tun, wenn der Wert von C, dass 1665 01:07:02,670 --> 01:07:06,230 der Benutzer eingegeben wird, in der Leitung 19 unter Verwendung der Funktion GetChar, 1666 01:07:06,230 --> 01:07:09,410 ist das Kapital A-oder Kleinbuchstaben a, lasst interpretieren als Klasse, 1667 01:07:09,410 --> 01:07:11,340 und sagen, sie nahm eine ausgezeichnete Qualität. 1668 01:07:11,340 --> 01:07:14,690 Und entlang der Switch-Anweisung, wir haben andere 1669 01:07:14,690 --> 01:07:17,950 Fällen für "B"-Werte und "C" s, und so weiter. 1670 01:07:17,950 --> 01:07:19,780 Aber lassen Sie uns nun runden eine andere Sache. 1671 01:07:19,780 --> 01:07:21,130 Und wieder, Art des Fliegens durch 1672 01:07:21,130 --> 01:07:22,200 einige dieser Beispiele. 1673 01:07:22,200 --> 01:07:26,990 Aber es ist wirklich so, dass wir sie anwenden, jetzt - 1674 01:07:26,990 --> 01:07:28,880 oder wirklich nur übersetzen sie nun - 1675 01:07:28,880 --> 01:07:32,220 bis C. 1676 01:07:32,220 --> 01:07:33,310 >> Also lass mich gehen Sie vor und tun dies. 1677 01:07:33,310 --> 01:07:34,830 Ich werde zu öffnen eine neue Datei. 1678 01:07:34,830 --> 01:07:39,430 Und ich werde tun include. 1679 01:07:39,430 --> 01:07:42,770 Und dann werde ich int main (void) zu tun. 1680 01:07:42,770 --> 01:07:46,390 Lassen Sie mich diese Datei speichern als loop.c. 1681 01:07:46,390 --> 01:07:48,280 Nur als Beispiel. 1682 01:07:48,280 --> 01:07:49,910 Und ich werde weitermachen und gehen Sie folgendermaßen vor. 1683 01:07:49,910 --> 01:07:54,180 Ich möchte eine sehr mühsame Programm zu schreiben. 1684 01:07:54,180 --> 01:07:56,170 So 10. 1685 01:07:56,170 --> 01:07:58,862 Lassen Sie uns dies tun. 1686 01:07:58,862 --> 01:07:59,320 9. 1687 01:07:59,320 --> 01:08:00,360 Gut. 1688 01:08:00,360 --> 01:08:02,120 Sobald Sie tun dies in der Programmierung beginnen, sind Sie 1689 01:08:02,120 --> 01:08:03,490 wahrscheinlich etwas falsch. 1690 01:08:03,490 --> 01:08:04,950 Aber wir werden es trotzdem starten. 1691 01:08:04,950 --> 01:08:05,430 Oops. 1692 01:08:05,430 --> 01:08:06,950 Das ist eigentlich falsch. 1693 01:08:06,950 --> 01:08:08,230 7. 1694 01:08:08,230 --> 01:08:09,440 6. 1695 01:08:09,440 --> 01:08:10,750 5. 1696 01:08:10,750 --> 01:08:11,200 4. 1697 01:08:11,200 --> 01:08:12,450 Nichts wird passieren, wenn wir auf 0 zu bekommen. 1698 01:08:12,450 --> 01:08:13,290 3. 1699 01:08:13,290 --> 01:08:14,590 2. 1700 01:08:14,590 --> 01:08:15,630 Ein. 1701 01:08:15,630 --> 01:08:16,020 Okay. 1702 01:08:16,020 --> 01:08:17,560 0. 1703 01:08:17,560 --> 01:08:18,689 Löschen. 1704 01:08:18,689 --> 01:08:19,029 >> Gut. 1705 01:08:19,029 --> 01:08:20,029 So 0 zurück. 1706 01:08:20,029 --> 01:08:22,010 So dieses Programm ist offensichtlich werde, was es sehr zu tun 1707 01:08:22,010 --> 01:08:23,310 mühsam sagt, es tun werde. 1708 01:08:23,310 --> 01:08:24,060 Es wird all jene drucken 1709 01:08:24,060 --> 01:08:25,290 Werte, von oben nach unten. 1710 01:08:25,290 --> 01:08:27,140 So lass mich machen Schleife. 1711 01:08:27,140 --> 01:08:28,640 Und dann - hoppla. 1712 01:08:28,640 --> 01:08:29,700 Machen Schleife. 1713 01:08:29,700 --> 01:08:31,479 Ich war im falschen Verzeichnis. 1714 01:08:31,479 --> 01:08:33,300 Und nun lassen Sie mich laufen Schleife. 1715 01:08:33,300 --> 01:08:34,140 Enter. 1716 01:08:34,140 --> 01:08:34,620 Woohoo. 1717 01:08:34,620 --> 01:08:35,270 Very nice. 1718 01:08:35,270 --> 01:08:36,279 Nice, langes Programm. 1719 01:08:36,279 --> 01:08:38,109 >> Alles klar, aber jetzt machen wir das besser. 1720 01:08:38,109 --> 01:08:40,810 Just in Scratch möchten, wenn Sie einen Looping begonnen 1721 01:08:40,810 --> 01:08:43,149 Konstrukt, anstatt nur das Kopieren und Einfügen alle der 1722 01:08:43,149 --> 01:08:45,580 Puzzleteile, lassen Sie mich dieses Ding. 1723 01:08:45,580 --> 01:08:48,609 Also in C, gibt es verschiedene Schleifenkonstrukte, 1724 01:08:48,609 --> 01:08:50,540 von denen sieht wie folgt aus. 1725 01:08:50,540 --> 01:08:55,069 A "für" Schleife hat drei Dinge, die durch zwei Semikolons getrennt. 1726 01:08:55,069 --> 01:08:57,770 Und dann, im Inneren des Körpers der Schleife, sozusagen - die 1727 01:08:57,770 --> 01:08:59,390 Zeug in der geschweiften Klammern - 1728 01:08:59,390 --> 01:09:01,010 wir können etwas wieder und wieder zu tun. 1729 01:09:01,010 --> 01:09:02,310 Also, was ich hier habe auf dem Bildschirm, ist dies 1730 01:09:02,310 --> 01:09:03,300 buchstäblich nur ein Kommentar. 1731 01:09:03,300 --> 01:09:05,380 Die / / bedeutet, hier kommt ein Kommentar. 1732 01:09:05,380 --> 01:09:06,180 Dies ist kein Code. 1733 01:09:06,180 --> 01:09:08,890 Dies ist nur auf Englisch, für mich, der Mensch. 1734 01:09:08,890 --> 01:09:11,300 >> So Initialisierungen, Bedingungen und Updates. 1735 01:09:11,300 --> 01:09:12,770 Nun, lassen Sie, wie das funktioniert. 1736 01:09:12,770 --> 01:09:15,520 Dies ermöglicht es mir, dieses Programm wie folgt umschreiben. 1737 01:09:15,520 --> 01:09:16,399 For - 1738 01:09:16,399 --> 01:09:18,029 so hier kommt meine Schleife - 1739 01:09:18,029 --> 01:09:19,439 int i - 1740 01:09:19,439 --> 01:09:21,330 Hier kommt eine Variable namens "i" - 1741 01:09:21,330 --> 01:09:23,140 bekommt initialisiert bis 10 ist. 1742 01:09:23,140 --> 01:09:25,260 So gibt es meiner Initialisierung. 1743 01:09:25,260 --> 01:09:29,450 Ich möchte diese Schleife so lange "i" ist größer als oder tun 1744 01:09:29,450 --> 01:09:30,899 gleich 0 ist. 1745 01:09:30,899 --> 01:09:32,880 Und bei jeder Iteration dieser Schleife, möchte ich 1746 01:09:32,880 --> 01:09:34,979 bis i tun -. 1747 01:09:34,979 --> 01:09:36,310 So sahen wir + + am Montag. 1748 01:09:36,310 --> 01:09:37,660 - Ist das Gegenteil. 1749 01:09:37,660 --> 01:09:39,410 Es vermindert den Wert um 1 erhöht. 1750 01:09:39,410 --> 01:09:43,319 Innerhalb dieser Schleife, möchte ich etwas zu tun. 1751 01:09:43,319 --> 01:09:46,390 Also werde ich so etwas wie printf sagen. 1752 01:09:46,390 --> 01:09:48,939 Ich will nicht bis 10 jetzt sagen, da dies offensichtlich nur 1753 01:09:48,939 --> 01:09:50,000 gehen auf den gleichen Wert zu drucken. 1754 01:09:50,000 --> 01:09:52,246 Was will ich stattdessen, wahrscheinlich drucken? 1755 01:09:52,246 --> 01:09:52,590 Yeah. 1756 01:09:52,590 --> 01:09:55,270 So "i". So% d, i. 1757 01:09:55,270 --> 01:09:57,340 >> So werde ich eine dieser Ideen aus früheren stehlen - 1758 01:09:57,340 --> 01:09:59,640 diese Substitution für Format-Codes - 1759 01:09:59,640 --> 01:10:01,620 und dann hier unten, am Boden, ich 0 zurück, nur 1760 01:10:01,620 --> 01:10:02,710 für eine gute Maßnahme. 1761 01:10:02,710 --> 01:10:04,740 Aber jetzt habe ich eine prägnante Programm. 1762 01:10:04,740 --> 01:10:07,490 Es ist nur ein paar Zeilen, und nicht etwa 10 oder 11 Zeilen. 1763 01:10:07,490 --> 01:10:09,440 Lassen Sie mich zu meinem Eingabeaufforderung hier unten gehen. 1764 01:10:09,440 --> 01:10:10,630 Remake Schleife. 1765 01:10:10,630 --> 01:10:12,140 Führen Schleife. 1766 01:10:12,140 --> 01:10:13,570 Und es wird die gleiche sein. 1767 01:10:13,570 --> 01:10:15,550 Jetzt ist das Programm nicht mehr interessant. 1768 01:10:15,550 --> 01:10:17,180 Aber jetzt kann ich geben etwas wie dieses. 1769 01:10:17,180 --> 01:10:18,970 Ich kann dies auf 100 ändern. 1770 01:10:18,970 --> 01:10:21,400 Ich kann dann neu kompilieren meinem Programm. 1771 01:10:21,400 --> 01:10:23,360 Und dann kann ich wieder mein Programm. 1772 01:10:23,360 --> 01:10:26,390 Und jetzt geht es super-schnell auf den heutigen Computern. 1773 01:10:26,390 --> 01:10:27,820 Aber da habe ich - 1774 01:10:27,820 --> 01:10:29,620 und tatsächlich, hat mein scrollback Puffer nicht 1775 01:10:29,620 --> 01:10:30,890 sogar so weit gehen. 1776 01:10:30,890 --> 01:10:31,680 Dort gehen wir. 1777 01:10:31,680 --> 01:10:34,090 So, da haben wir alle 100. 1778 01:10:34,090 --> 01:10:35,880 Aber es ist leicht zu Fehler machen. 1779 01:10:35,880 --> 01:10:37,920 Was wird das erwartete Verhalten, wenn ich 1780 01:10:37,920 --> 01:10:41,150 versehentlich tun? 1781 01:10:41,150 --> 01:10:42,550 So fühlt es sich wie unendlich. 1782 01:10:42,550 --> 01:10:44,670 Also lasst uns sehen, ob der Computer verhält. 1783 01:10:44,670 --> 01:10:47,020 >> Also lassen Sie mich voran gehen und Schleife. 1784 01:10:47,020 --> 01:10:48,355 Und lassen Sie mich laufen Schleife. 1785 01:10:53,590 --> 01:10:55,210 Also lasst uns kommen zurück zu, dass in nur einem Augenblick. 1786 01:10:55,210 --> 01:10:56,720 Wir lassen diesen Lauf. 1787 01:10:56,720 --> 01:10:59,520 Denn was sollten wir zählen bis minimal? 1788 01:10:59,520 --> 01:11:02,200 Wahrscheinlich mindestens 2 Milliarden, wenn wir, dass viele Bits und 1789 01:11:02,200 --> 01:11:03,660 verwenden wir positive Werte. 1790 01:11:03,660 --> 01:11:04,890 Also lasst uns springen wieder hier. 1791 01:11:04,890 --> 01:11:07,810 Neben diesen Arten von Schleifen, haben wir sogenannte, während 1792 01:11:07,810 --> 01:11:09,430 Schleifen. So, wie in Scratch, musste man immer 1793 01:11:09,430 --> 01:11:11,240 Blöcke, und man musste Repeat Blöcke. 1794 01:11:11,240 --> 01:11:13,270 Auch in C, man muss nur andere Wege 1795 01:11:13,270 --> 01:11:14,260 sich auszudrücken. 1796 01:11:14,260 --> 01:11:17,110 So haben Sie diese Vorstellung von einer while-Schleife, die Ihnen erlaubt, 1797 01:11:17,110 --> 01:11:18,860 äußern Sie sich ein wenig anders. 1798 01:11:18,860 --> 01:11:21,490 Und dann haben Sie etwas namens eine do-while-Schleife, 1799 01:11:21,490 --> 01:11:24,200 die arbeitet etwas anders als gut. 1800 01:11:24,200 --> 01:11:25,320 Und wir werden diese auseinander zu necken im Laufe der Zeit. 1801 01:11:25,320 --> 01:11:28,630 >> Aber lassen Sie uns einen Blick auf diese letzte hier. 1802 01:11:28,630 --> 01:11:30,160 Wenn wir in - 1803 01:11:30,160 --> 01:11:31,466 noch läuft. 1804 01:11:31,466 --> 01:11:32,770 Es ist ziemlich unendlich. 1805 01:11:32,770 --> 01:11:36,870 Also lass mich in positive zu gehen, und zeigen, wie wir tatsächlich 1806 01:11:36,870 --> 01:11:39,410 regeln Benutzereingaben ein wenig mehr effektiv. 1807 01:11:39,410 --> 01:11:40,910 Es ist ein ziemlich kurzes Programm. 1808 01:11:40,910 --> 01:11:43,730 Und hier haben wir, in Haupt-, ein int n Erklärung. 1809 01:11:43,730 --> 01:11:46,570 Also gib mir eine Variable namens n. Nun, ich buchstäblich sagen, 1810 01:11:46,570 --> 01:11:48,340 "Tun." Und dann habe ich noch offenen geschweiften 1811 01:11:48,340 --> 01:11:49,630 Klammer, in der Nähe geschweiften Klammer. 1812 01:11:49,630 --> 01:11:52,000 Und dann bemerken, gleich danach, sagt sie, während n 1813 01:11:52,000 --> 01:11:53,790 kleiner als 1 ist. 1814 01:11:53,790 --> 01:11:55,300 So bemerken, dass diese Zeilen - 1815 01:11:55,300 --> 01:11:56,740 19 bis 24 - 1816 01:11:56,740 --> 01:11:59,450 komponieren gemeinsam eine do-while-Schleife. 1817 01:11:59,450 --> 01:12:01,280 Und wieder eine neue Syntax, keine neue Idee. 1818 01:12:01,280 --> 01:12:03,740 Es ist nur eine andere Art Looping, syntaktisch. 1819 01:12:03,740 --> 01:12:04,890 Was bedeutet dies tun? 1820 01:12:04,890 --> 01:12:08,000 Gehen Sie folgendermaßen vor, während n kleiner als 1 ist. 1821 01:12:08,000 --> 01:12:09,080 So was will ich tun? 1822 01:12:09,080 --> 01:12:11,390 Ich verlange, dass Sie mir eine positive ganze Zahl ist. 1823 01:12:11,390 --> 01:12:14,110 Dann habe ich tatsächlich versuchen, eine ganze Zahl von Benutzer zu erhalten. 1824 01:12:14,110 --> 01:12:16,740 Aber in Bezug auf die Reihenfolge der Operationen hier, weil das 1825 01:12:16,740 --> 01:12:21,850 während Bedingung ist hier unten, ich bin dann gehen, um zu überprüfen, ist n 1826 01:12:21,850 --> 01:12:23,100 weniger als 1? 1827 01:12:23,100 --> 01:12:24,600 So nehme an, dass der Benutzer - 1828 01:12:24,600 --> 01:12:26,450 Nachdem auf diese Weise verlangt - 1829 01:12:26,450 --> 01:12:29,190 Typen im Wert 0. 1830 01:12:29,190 --> 01:12:34,510 Diese Bedingung wird wahr oder falsch sein? 1831 01:12:34,510 --> 01:12:35,820 Nun, es ist eigentlich los, um wahr zu sein. 1832 01:12:35,820 --> 01:12:38,700 Wegen n = 0, und 0 kleiner als 1 ist. 1833 01:12:38,700 --> 01:12:40,140 Also, was bedeutet das? 1834 01:12:40,140 --> 01:12:41,160 Es wieder tun. 1835 01:12:41,160 --> 01:12:41,990 Es wieder tun. 1836 01:12:41,990 --> 01:12:42,640 Es wieder tun. 1837 01:12:42,640 --> 01:12:46,080 Nur einmal, dass diese Bedingung als falsch ausgewertet. 1838 01:12:46,080 --> 01:12:47,510 Wenn ich schreibe in 42. 1839 01:12:47,510 --> 01:12:49,690 Nun nein, ist 42 nicht weniger als 1 ist. 1840 01:12:49,690 --> 01:12:52,320 Deshalb ist diese Schleife getan ausgeführt wird. 1841 01:12:52,320 --> 01:12:54,650 Und so an diesem Punkt wird das Programm sagen, vielen Dank für 1842 01:12:54,650 --> 01:12:57,530 die 42, in diesem Fall. 1843 01:12:57,530 --> 01:13:00,320 Jetzt haben Sie auf diese Weise, sich auszudrücken - 1844 01:13:00,320 --> 01:13:02,360 Wir sollten nicht darauf warten zu beenden. 1845 01:13:02,360 --> 01:13:03,620 Es wird einige Zeit dauern. 1846 01:13:03,620 --> 01:13:04,990 Fortgesetzt werden beim nächsten Mal vielleicht. 1847 01:13:04,990 --> 01:13:08,050 >> Aber jetzt haben Sie die Möglichkeit, um hoffentlich ein Verständnis 1848 01:13:08,050 --> 01:13:09,060 bisschen Geek Humor. 1849 01:13:09,060 --> 01:13:11,560 Entschuldigungen. 1850 01:13:11,560 --> 01:13:13,620 Dies ist nicht repräsentativ für Humor in der Informatik 1851 01:13:13,620 --> 01:13:14,870 Welt, aber es ist süß. 1852 01:13:21,020 --> 01:13:23,890 [Lacht] Lassen Sie uns Ende dieser Bemerkung. 1853 01:13:23,890 --> 01:13:25,750 Und wir werden uns am Montag sehen. 1854 01:13:25,750 --> 01:13:31,629 [Applaus]