1 00:00:00,000 --> 00:00:02,880 >> [Musikwiedergabe] 2 00:00:02,880 --> 00:00:10,580 3 00:00:10,580 --> 00:00:13,500 >> Sprecher 1: Dies ist CS50 und Dies ist der Beginn der zweiten Woche. 4 00:00:13,500 --> 00:00:18,400 Also, lassen Sie tauchen rechts in etwas, das ist fehlerhaft, so zu sprechen. 5 00:00:18,400 --> 00:00:24,015 So, hier ist mehr als CS50 IDE und ich habe zog im Voraus diese screen-- verdammt 6 00:00:24,015 --> 00:00:25,070 es. 7 00:00:25,070 --> 00:00:25,760 Spoiler Alarm. 8 00:00:25,760 --> 00:00:26,260 Gut. 9 00:00:26,260 --> 00:00:29,060 Ich habe mir diesen Bildschirm hier gezogen wird, die einen sehr einfaches Programm. 10 00:00:29,060 --> 00:00:32,659 Wenn wir nach unten scrollen, die meisten dies ist nur Kommentare, 11 00:00:32,659 --> 00:00:36,730 aber hier in den Zeilen 13 bis 17 haben wir ein Programm. 12 00:00:36,730 --> 00:00:40,580 >> Es ist syntaktisch gültig, das heißt, wenn Ich kompilieren, wird es kompilieren und ausführen, 13 00:00:40,580 --> 00:00:41,920 aber es ist fehlerhaft. 14 00:00:41,920 --> 00:00:47,330 Dieses Programm behauptet, in den Kommentaren up top, dass es 10 Sterne zu drucken, 15 00:00:47,330 --> 00:00:48,870 aber es nicht tut. 16 00:00:48,870 --> 00:00:53,290 Und basierend auf Ihrer Erfahrung, oder bald Erfahrungen mit C, 17 00:00:53,290 --> 00:00:56,820 können Sie logischerweise zu erkennen Deshalb ist dies in der Tat, Buggy? 18 00:00:56,820 --> 00:00:57,804 Ja? 19 00:00:57,804 --> 00:00:59,220 Publikum: Es geht von Null bis 10. 20 00:00:59,220 --> 00:01:01,884 Das ist 11 Iterationen. 21 00:01:01,884 --> 00:01:02,550 Sprecher 1: Ja. 22 00:01:02,550 --> 00:01:06,030 Also, es ist von Null gehen nach oben durch und gleich 10, 23 00:01:06,030 --> 00:01:08,140 was natürlich 11 Iterationen. 24 00:01:08,140 --> 00:01:10,020 Also, es ist zu gehen Druck in der Tat 11 Sternen. 25 00:01:10,020 --> 00:01:13,040 Also, die Informatik-Konvention in den meisten Programmiersprachen 26 00:01:13,040 --> 00:01:15,270 ist in der Tat nur um Zählen beginnen bei Null, 27 00:01:15,270 --> 00:01:18,800 aber zählen bis zu, aber nicht durch die Wert, den Sie wirklich interessieren. 28 00:01:18,800 --> 00:01:21,216 >> Nun, dies ist eine Sache, dauert ein wenig gewöhnungsbedürftig 29 00:01:21,216 --> 00:01:25,350 und sogar Kratzer, entworfen, wie es ist für Nicht-Programmierer oder Nicht-Computer 30 00:01:25,350 --> 00:01:28,070 Wissenschaftler und für Kinder weitgehend, ist so konzipiert, haben 31 00:01:28,070 --> 00:01:29,570 Sie beginnen zu zählen in der Regel an einem. 32 00:01:29,570 --> 00:01:30,277 Und das ist in Ordnung. 33 00:01:30,277 --> 00:01:33,110 Sie können absolut Zählen beginnen an einem, wenn das ist noch komfortabler. 34 00:01:33,110 --> 00:01:37,210 Und zählen Sie bis und bis 10, aber Sie werden erkennen, besonders in dieser Woche 35 00:01:37,210 --> 00:01:39,950 und darüber hinaus, dass nur so viele Dinge in der Programmierung 36 00:01:39,950 --> 00:01:42,465 davon ausgehen, dass 0 die erste stelligen, mit denen Sie zu zählen, 37 00:01:42,465 --> 00:01:45,590 dass Sie gehen, es leichter zu finden sind nur um in diese Gewohnheit Ausgangs erhalten 38 00:01:45,590 --> 00:01:49,490 von null und zum Zählen bis zu einem Wert Sie interessieren gerade jetzt von der 39 00:01:49,490 --> 00:01:49,990 erhalten zu gehen. 40 00:01:49,990 --> 00:01:50,990 >> So, das ist festgelegt, dass. 41 00:01:50,990 --> 00:01:53,670 Wir änderten die kleiner oder gleich zu knapp. 42 00:01:53,670 --> 00:01:56,050 Werfen wir einen Blick auf ein zweites Beispiel. 43 00:01:56,050 --> 00:01:59,585 >> Also, auch behauptet, dieses Programm in seiner kommentiert up top, dass es zu drucken sollte 44 00:01:59,585 --> 00:02:02,260 zehn Sterne, aber es funktioniert nicht. 45 00:02:02,260 --> 00:02:05,540 Was ist der Fehler hier? 46 00:02:05,540 --> 00:02:07,930 >> Also, what-- und sorry, lassen Sie uns klar sein. 47 00:02:07,930 --> 00:02:08,610 10 Sterne. 48 00:02:08,610 --> 00:02:11,644 Eine pro Zeile, aber es funktioniert nicht. 49 00:02:11,644 --> 00:02:14,810 Also, in der Tat, lassen Sie mich gehen Sie vor und kompilieren dieses, weil es ein bisschen weniger 50 00:02:14,810 --> 00:02:16,900 Löschen basierend auf dieser Beschreibung. 51 00:02:16,900 --> 00:02:18,720 Lassen Sie mich in unser Quellverzeichnis zu gehen. 52 00:02:18,720 --> 00:02:25,110 Machen buggy einen Punkt Schrägstrich, Buggy ein. 53 00:02:25,110 --> 00:02:28,680 OK, ich sehe, 11 Sterne, die ist nach wie vor problematisch, 54 00:02:28,680 --> 00:02:30,090 aber sie sind auch alle in einer Zeile. 55 00:02:30,090 --> 00:02:31,500 Was ist das Problem hier? 56 00:02:31,500 --> 00:02:32,339 Ja. 57 00:02:32,339 --> 00:02:33,255 ZIELGRUPPE: [unverständlich]. 58 00:02:33,255 --> 00:02:36,194 59 00:02:36,194 --> 00:02:36,860 Sprecher 1: Ja. 60 00:02:36,860 --> 00:02:40,210 Das ist also eine Feinheit, die Sie erinnere mich machen kurze Erwähnung. 61 00:02:40,210 --> 00:02:42,793 Auch wenn alles gut aussieht hübsch, und es ist schön eingerückt, 62 00:02:42,793 --> 00:02:45,850 und es sieht Scratch-like in dieser Leitung 16 und 17 sind, 63 00:02:45,850 --> 00:02:47,600 Tatsächlich eingerückt darunter for-Schleife. 64 00:02:47,600 --> 00:02:48,400 Das ist unwesentlich. 65 00:02:48,400 --> 00:02:50,460 Der Computer funktioniert nicht wissen oder sehen Leerzeichen. 66 00:02:50,460 --> 00:02:52,910 Weißraum ist nur für uns Menschen, stilistisch. 67 00:02:52,910 --> 00:02:57,010 Der Computer kann wissen, wann Sie haben geschweiften Klammern, dar, der, in der Tat, 68 00:02:57,010 --> 00:02:58,280 dieses Problem zu beheben. 69 00:02:58,280 --> 00:03:02,350 >> Also, wenn wir in ging tatsächlich und in diesen geschweiften Klammern explizit setzen 70 00:03:02,350 --> 00:03:05,220 das wäre dieses Problem zu beheben, indem macht deutlich, an den Compiler 71 00:03:05,220 --> 00:03:07,930 dass ich ausführen möchten eigentlich zwei Codezeilen wieder, 72 00:03:07,930 --> 00:03:09,220 wieder und wieder. 73 00:03:09,220 --> 00:03:11,680 Aber was ist die grundlegende Erklärung? 74 00:03:11,680 --> 00:03:12,180 Recht? 75 00:03:12,180 --> 00:03:15,260 Wir wissen nicht genau brauchen geschweiften Klammern die ganze Zeit, 76 00:03:15,260 --> 00:03:18,210 obwohl es wahrscheinlich am besten Praxis in diese Gewohnheit sowieso 77 00:03:18,210 --> 00:03:20,878 obwohl es zwei fügt Zeichen, um Ihren Code. warum? 78 00:03:20,878 --> 00:03:22,380 >> ZIELGRUPPE: [unverständlich]? 79 00:03:22,380 --> 00:03:24,630 Sprecher 1: Ja, das ist also eine andere Lösung überhaupt. 80 00:03:24,630 --> 00:03:25,130 Recht? 81 00:03:25,130 --> 00:03:28,250 Vor allem, wenn auf den ersten Blick Sie nicht wirklich zu schätzen, was los ist. 82 00:03:28,250 --> 00:03:31,070 Gut sicher, wir könnten tun Sie zwei Dinge auf einmal 83 00:03:31,070 --> 00:03:32,710 und vermeiden Sie nur das Problem überhaupt. 84 00:03:32,710 --> 00:03:36,080 Und das ist in Ordnung, aber jetzt, für heutige Zwecke, was 85 00:03:36,080 --> 00:03:38,200 ist die Erklärung für den Fehler? 86 00:03:38,200 --> 00:03:39,810 Warum waren alle diese Sterne auf einer Linie? 87 00:03:39,810 --> 00:03:40,806 Ja? 88 00:03:40,806 --> 00:03:43,296 >> Publikum: Es scheint, dass, wenn Du hast eine Zeile Code, 89 00:03:43,296 --> 00:03:46,649 können Sie es ohne diejenigen tun kann. 90 00:03:46,649 --> 00:03:47,440 Sprecher 1: Genau. 91 00:03:47,440 --> 00:03:48,750 Dies ist nur eine menschliche Konvention. 92 00:03:48,750 --> 00:03:50,750 Die Menschen erkennen, dass es eine wenig ärgerlich oder mühsame 93 00:03:50,750 --> 00:03:53,470 In den geschweiften Klammern haupt stellen zu müssen der Zeit, wenn alles, was Sie tun möchten, 94 00:03:53,470 --> 00:03:55,090 ist auszuführen, eine Zeile Code. 95 00:03:55,090 --> 00:03:57,660 Also entschied Menschen einige Zeit her, dass das ist in Ordnung. 96 00:03:57,660 --> 00:04:01,180 Wenn Sie alle Ihre Schleife setzen wollen nur auf diesem eine Zeile wie diese, 97 00:04:01,180 --> 00:04:04,030 das ist in Ordnung mit der Single Semikolon am Ende. 98 00:04:04,030 --> 00:04:07,210 Sie können jedoch nur eine solche zu tun Linie ohne den geschweiften Klammern. 99 00:04:07,210 --> 00:04:09,900 >> Also, wenn CS50 Styleguide so werden Sie darauf hinweisen, 100 00:04:09,900 --> 00:04:11,980 Sie, denn in der Regel zu sehen Es ist gute Gewohnheit 101 00:04:11,980 --> 00:04:14,920 um in diese zu bekommen, bis Sie recht komfortabel verirrte 102 00:04:14,920 --> 00:04:17,404 von dieser Art von Konventionen und sein eigenes Ding. 103 00:04:17,404 --> 00:04:18,820 So lange, wie Sie sich selbst im Einklang sind. 104 00:04:18,820 --> 00:04:21,540 Und wir werden mehr darüber zu sprechen Stil ein wenig im Laufe des Tages. 105 00:04:21,540 --> 00:04:23,200 >> Also, lassen Sie mich eröffnen ein anderes Programm. 106 00:04:23,200 --> 00:04:24,930 Natürlich sollten wir ändere den 10 als gut. 107 00:04:24,930 --> 00:04:32,470 Lassen Sie mich gehen Sie vor und schreiben Sie eine echte Schnellprogramm, das ich nennen, 108 00:04:32,470 --> 00:04:38,140 lassen Sie uns sagen, dot Schleife C. So, dot Schleife C. Und in Schleifenpunkt C werde ich haben, 109 00:04:38,140 --> 00:04:41,970 sind Standard-I / O- dot H int main nichtig. 110 00:04:41,970 --> 00:04:44,020 Und jetzt lass uns einfach zu tun, in der Tat, eine Schleife. 111 00:04:44,020 --> 00:04:46,020 So, 4 int I erhält Null. 112 00:04:46,020 --> 00:04:48,660 I weniger als etwa 50. 113 00:04:48,660 --> 00:04:49,950 Ich und, und. 114 00:04:49,950 --> 00:04:53,350 Und dann lassen Sie uns hier gehen Sie vor und weiß drucken F. 115 00:04:53,350 --> 00:04:56,400 Und dann möchte ich zu drucken I und eine neue Linie, Strichpunkt. 116 00:04:56,400 --> 00:05:00,015 >> Und dies sollte alle drucken Zahlen von null bis 50? 117 00:05:00,015 --> 00:05:02,900 118 00:05:02,900 --> 00:05:03,680 Ein paar Kopf nickt. 119 00:05:03,680 --> 00:05:04,270 Einige nos. 120 00:05:04,270 --> 00:05:05,339 Was ist schon die Wanze? 121 00:05:05,339 --> 00:05:06,630 Was ist der einfache Fehler, den ich gemacht? 122 00:05:06,630 --> 00:05:07,170 Ja. 123 00:05:07,170 --> 00:05:08,544 >> ZIELGRUPPE: [unverständlich]. 124 00:05:08,544 --> 00:05:09,210 Sprecher 1: Ja. 125 00:05:09,210 --> 00:05:11,520 Also auch wenn es aussieht wie das ist, was ich will, 126 00:05:11,520 --> 00:05:13,920 daran erinnern, dass ich es auch nur ein ASCII-Zeichen. 127 00:05:13,920 --> 00:05:14,955 >> Also, wenn ich sage, print "I." 128 00:05:14,955 --> 00:05:16,670 Es ist buchstäblich gehen I. So drucken, wenn ich 129 00:05:16,670 --> 00:05:20,030 möchte Plug-in-Platzhalter Wert ich eigentlich dies tun müssen 130 00:05:20,030 --> 00:05:22,630 und dann die Plug-in- Wert von I dynamisch. 131 00:05:22,630 --> 00:05:25,200 Ansonsten bin ich gerade dabei, erhalten 50 I auf dem Bildschirm. 132 00:05:25,200 --> 00:05:28,140 >> Also, lassen Sie mich gehen Sie vor und machen diese Schleife, führen Sie es, 133 00:05:28,140 --> 00:05:30,650 und in der Tat, wir haben alle der Weg nach oben durch 49. 134 00:05:30,650 --> 00:05:34,140 Und wenn ich einen Bildlauf in der Zeit zurück Ich sehe, die Zahl Null am Anfang. 135 00:05:34,140 --> 00:05:36,050 >> Nun, was ist, wenn ich irgendwie vermasseln? 136 00:05:36,050 --> 00:05:37,800 Was passiert, wenn ich das tun? 137 00:05:37,800 --> 00:05:40,120 Nur weil ich denke nicht. 138 00:05:40,120 --> 00:05:40,970 Was ist das Programm. 139 00:05:40,970 --> 00:05:43,970 Sobald erneut kompiliert und ausgeführt, gehen, um logisch zu tun? 140 00:05:43,970 --> 00:05:44,870 >> ZIELGRUPPE: Nichts. 141 00:05:44,870 --> 00:05:45,661 >> Sprecher 1: Nichts. 142 00:05:45,661 --> 00:05:47,156 Warum ist das so? 143 00:05:47,156 --> 00:05:49,124 >> ZIELGRUPPE: I ist für Null ausgelegt. 144 00:05:49,124 --> 00:05:51,899 So ist die Bedingung falsch ist. 145 00:05:51,899 --> 00:05:52,940 Sprecher 1: Ja, genau. 146 00:05:52,940 --> 00:05:55,110 Der gesamte Code korrekt ist, syntaktisch. 147 00:05:55,110 --> 00:05:57,310 Dies wird dies zu kompilieren Code ausgeführt wird, aber es ist nicht 148 00:05:57,310 --> 00:06:00,110 gehen, um etwas Sinnvolles zu tun weil ich zu initialisieren I auf Null. 149 00:06:00,110 --> 00:06:02,240 Wir haben dann zu überprüfen, ist, dass ich mehr als 50? 150 00:06:02,240 --> 00:06:03,810 Offensichtlich nicht, ist es nicht. 151 00:06:03,810 --> 00:06:05,760 So wird die Schleife nie ausgeführt überhaupt. 152 00:06:05,760 --> 00:06:09,580 >> Was, wenn wir etwas tun, ein wenig leichtsinnig? 153 00:06:09,580 --> 00:06:12,890 Also, was ist, wenn wir tun, wie int I erhält Null. 154 00:06:12,890 --> 00:06:15,640 Und jetzt lassen Sie mich die während verwenden Schleife, die eine weitere Bedingung war. 155 00:06:15,640 --> 00:06:21,810 Und während ich sage, wenn ich größer als oder gleich Null ist, und dann in der hier bin 156 00:06:21,810 --> 00:06:26,070 gehen Sie vor und speichern Sie die Datei, stellen Schleife. 157 00:06:26,070 --> 00:06:27,070 Und ich bin dabei, sie auszuführen. 158 00:06:27,070 --> 00:06:30,230 Was werde ich das zu sehen Zeit mit einer while-Schleife? 159 00:06:30,230 --> 00:06:30,852 Ja. 160 00:06:30,852 --> 00:06:32,120 >> Publikum: Eine Endlosschleife? 161 00:06:32,120 --> 00:06:35,360 >> Sprecher 1: Eine Endlosschleife? 162 00:06:35,360 --> 00:06:36,662 Ja, und warum? 163 00:06:36,662 --> 00:06:38,120 ZIELGRUPPE: Weil es immer Null. 164 00:06:38,120 --> 00:06:38,786 Sprecher 1: Ja. 165 00:06:38,786 --> 00:06:40,100 Also, ich als Null initialisiert. 166 00:06:40,100 --> 00:06:44,470 Selbstverständlich ist, dass ich immer größer oder gleich 0 als Ergebnis. 167 00:06:44,470 --> 00:06:46,460 Also, ich bin gerade dabei, sehen dies unendlich. 168 00:06:46,460 --> 00:06:49,850 Und nun, dies hat sich sofort zu kommen oder zweimal, um der natürlich Köpfe. 169 00:06:49,850 --> 00:06:52,417 Was passiert, wenn Sie haben eine Endlos-Schleife? 170 00:06:52,417 --> 00:06:53,314 >> ZIELGRUPPE: Steuer C. 171 00:06:53,314 --> 00:06:53,980 Sprecher 1: Ja. 172 00:06:53,980 --> 00:06:56,250 So Steuerung C wird schließlich zu reagieren. 173 00:06:56,250 --> 00:06:59,520 Leider haben wir ausgedruckt Millionen und Abermillionen von Nullen schon 174 00:06:59,520 --> 00:07:01,520 so dass der Computer Art bekam vor mir. 175 00:07:01,520 --> 00:07:03,394 Also, es geht zu ignorieren, mich für ein wenig. 176 00:07:03,394 --> 00:07:06,560 Aber wenn Sie nur getroffen Steuerung C ein paar Mal auf Ihrem Mac oder PC-Tastatur, 177 00:07:06,560 --> 00:07:08,790 schließlich sollte es tatsächlich zu beenden. 178 00:07:08,790 --> 00:07:11,770 Und wenn nicht, werden wir Ihnen zeigen einige Techniken, es dauerte nicht lange, wo Sie 179 00:07:11,770 --> 00:07:14,850 kann tatsächlich gewaltsam Programme zu töten, ähnlich wie in Windows und Mac OS, 180 00:07:14,850 --> 00:07:15,562 wenn es sein muss. 181 00:07:15,562 --> 00:07:16,770 Aber lassen Sie uns versuchen, etwas anderes. 182 00:07:16,770 --> 00:07:19,895 Lassen Sie tatsächlich erhöhen I. Ist Diese immer noch unendlich zu sein? 183 00:07:19,895 --> 00:07:22,870 184 00:07:22,870 --> 00:07:25,140 Lassen Sie mich dies auszuführen. 185 00:07:25,140 --> 00:07:27,090 Und jetzt können Sie Art sehen, was passiert. 186 00:07:27,090 --> 00:07:30,140 Auch dies ist eine Endlosschleife. 187 00:07:30,140 --> 00:07:33,080 Aber das ist ein bisschen wie eine Fangfrage. 188 00:07:33,080 --> 00:07:35,460 Das wird für immer Nummern zu drucken? 189 00:07:35,460 --> 00:07:36,647 >> ZIELGRUPPE: Nein 190 00:07:36,647 --> 00:07:37,230 Sprecher 1: No. 191 00:07:37,230 --> 00:07:37,620 Warum? 192 00:07:37,620 --> 00:07:38,820 Ich habe gehört, einige nos hier. 193 00:07:38,820 --> 00:07:41,859 Someone-- Ja. 194 00:07:41,859 --> 00:07:44,275 ZIELGRUPPE: Sie haben nicht genug Bits, die wirklich weiterzumachen. 195 00:07:44,275 --> 00:07:44,730 Sprecher 1: In Ordnung. 196 00:07:44,730 --> 00:07:46,000 Also ich habe nicht genug Bits, um weiterzumachen. 197 00:07:46,000 --> 00:07:47,124 Also, was wird passieren? 198 00:07:47,124 --> 00:07:49,320 Es ist nur zu stoppen? 199 00:07:49,320 --> 00:07:52,542 >> ZIELGRUPPE: An einem bestimmten Punkt es wird herunter the-- 200 00:07:52,542 --> 00:07:54,500 Sprecher 1: Es wird herunter die Schleife nach unten, aber warum? 201 00:07:54,500 --> 00:07:57,950 Was wird in die passieren Ganz am Ende seine Grenzen? 202 00:07:57,950 --> 00:07:58,479 Ja? 203 00:07:58,479 --> 00:08:00,520 Publikum: Es radeln zurück zu negativen Zahlen. 204 00:08:00,520 --> 00:08:02,900 Sprecher 1: Um negative Zahlen oder wenn wir nur die Behandlung positiv, 205 00:08:02,900 --> 00:08:03,570 Null wenigstens. 206 00:08:03,570 --> 00:08:04,550 Also ja, absolut. 207 00:08:04,550 --> 00:08:08,059 Daran erinnern, dass wir uns das letzte Mal, dass sah, wenn Sie erhöhen Sie Ihre Bits einmal zu oft, 208 00:08:08,059 --> 00:08:10,225 und Sie es Fore Lauf die Kapazität des int 209 00:08:10,225 --> 00:08:13,058 oder was auch immer der Datentyp, du bist gehen zu umschlingen, wahrscheinlich, 210 00:08:13,058 --> 00:08:14,020 zwei negativen Zahlen. 211 00:08:14,020 --> 00:08:16,644 Oder wenn Sie angeben haben, dass Ihr Bereich sollte nur positiv sein, 212 00:08:16,644 --> 00:08:18,560 was Sie tun können, aber wir haben nicht so noch nicht gesehen, 213 00:08:18,560 --> 00:08:21,420 Sie könnten zumindest wieder auf Null enden. 214 00:08:21,420 --> 00:08:22,410 Obwohl, eigentlich ja. 215 00:08:22,410 --> 00:08:24,320 In diesem Fall negativ Zahlen, wobei 216 00:08:24,320 --> 00:08:26,870 die Schleife wird beendet da I nicht in der Tat 217 00:08:26,870 --> 00:08:29,220 größer als oder gleich Null, wenn es negativ ist. 218 00:08:29,220 --> 00:08:31,780 >> Also leider, wie lange müssten wir warten? 219 00:08:31,780 --> 00:08:35,490 Im Moment haben wir vorhaben was, 2 Millionen-ish? 220 00:08:35,490 --> 00:08:37,705 Wir sind wie 2 Milliarden, wir werden warten müssen 221 00:08:37,705 --> 00:08:39,330 bis wir tatsächlich sehen, dieses Symptom. 222 00:08:39,330 --> 00:08:46,200 Aber wir können es ein wenig schneller zu sehen, maybe-- mal sehen, ob wir unterbrechen kann. 223 00:08:46,200 --> 00:08:46,700 Komm schon. 224 00:08:46,700 --> 00:08:49,500 225 00:08:49,500 --> 00:08:51,331 Auch die Menüs langsam erscheinen. 226 00:08:51,331 --> 00:08:51,830 Gut. 227 00:08:51,830 --> 00:08:54,270 Also, wir zurückkommen, bevor lang. 228 00:08:54,270 --> 00:08:56,320 Es ist eine gute Zeit-- es verdammt, Welpen. 229 00:08:56,320 --> 00:08:58,280 >> Es ist eine gute Zeit für ein paar Ankündigungen. 230 00:08:58,280 --> 00:09:01,225 Also, wenn du Dich in YHack engagieren, 231 00:09:01,225 --> 00:09:03,600 dem ein Ereignis sein wird von unseren Freunden an der Yale gesponsert. 232 00:09:03,600 --> 00:09:05,990 Und in der Tat, einige der Kurs des TFs in Yale beteiligt sind mit diesem. 233 00:09:05,990 --> 00:09:08,610 YHack ist eine internationale Hack-a-thon gehostet und hielt 234 00:09:08,610 --> 00:09:12,395 an der Yale, die Zusammenführung 1500 Gleichgesinnten Hacker und alle Kreativen 235 00:09:12,395 --> 00:09:13,120 der ganzen Welt. 236 00:09:13,120 --> 00:09:14,610 Wenn dies von Interesse ist, nehmen Sie hier einen Blick. 237 00:09:14,610 --> 00:09:17,401 Wenn dies zu kurz auf die Bildschirm, einen Blick auf den heutigen Dias 238 00:09:17,401 --> 00:09:19,622 für die URL für yhack.org. 239 00:09:19,622 --> 00:09:21,080 Also, auch ein paar schnellen Ankündigungen. 240 00:09:21,080 --> 00:09:24,410 Also, offiziell Abschnitte beginnen nächste Woche hier und New Haven. 241 00:09:24,410 --> 00:09:27,660 Denken Sie daran, werden Sie immer ein E-Mail später an diesem Wochenende sehr wahrscheinlich. 242 00:09:27,660 --> 00:09:29,390 Es dauert lange für CS50 Abschnitt, 243 00:09:29,390 --> 00:09:32,080 bei all den Menschen in der Klasse und alle bewegen. 244 00:09:32,080 --> 00:09:34,871 Und all die Lehre Fellows ' Zeitpläne werden auch noch verfestigen, 245 00:09:34,871 --> 00:09:38,110 sondern für eine E-Mail, und wenn notwendig bleibt dran werden, können Sie re-Abschnitt dort nach. 246 00:09:38,110 --> 00:09:39,580 >> Study.cs50.net. 247 00:09:39,580 --> 00:09:43,280 Also, auch wenn Sie eine Konstante Teilnehmer sind an Abschnitten, erkennen, dass fast alle 248 00:09:43,280 --> 00:09:46,786 der Ressourcen verwenden wir in den Abschnitten sind CS50 öffentlich verfügbar 249 00:09:46,786 --> 00:09:48,460 Studieren Sie an dieser URL hier. 250 00:09:48,460 --> 00:09:51,630 Also, wenn Sie jemals eine Überprüfung erneut Material aus dem Abschnitt, oder lesen Sie die Zukunft, 251 00:09:51,630 --> 00:09:54,170 oder Sie können nicht machen es einige Wochen, erkennen, dass Probenobjektträger, 252 00:09:54,170 --> 00:09:58,210 und Probleme, und Definitionen, und mehr sind auch dort. 253 00:09:58,210 --> 00:10:00,645 >> Bürozeiten wieder heute, und morgen, und am Mittwoch, 254 00:10:00,645 --> 00:10:03,020 und Donnerstag überprüfen Sie den Kurs des Website für den Zeitplan. 255 00:10:03,020 --> 00:10:05,690 >> Und auch jetzt starten heute CS50 diskutieren. 256 00:10:05,690 --> 00:10:09,230 Also, wenn, und wenn Sie Fragen haben, einander oder für das Personal der natürlich 257 00:10:09,230 --> 00:10:12,099 und sind in der Regel Arbeits auf einigen Problem-Set, 258 00:10:12,099 --> 00:10:15,015 erkennen, dass Sie nicht unbedingt tun, müssen für das menschliche nächsten Einschalten. 259 00:10:15,015 --> 00:10:17,810 Wenn es niemand gibt, können Sie erreichen heraus zu uns und Klassenkameraden 260 00:10:17,810 --> 00:10:19,890 online über CS50 diskutieren. 261 00:10:19,890 --> 00:10:22,600 So ist dies eine Diskussion Bord für den Kurs, 262 00:10:22,600 --> 00:10:24,550 und erkennen, dass diese ist vielleicht das beste 263 00:10:24,550 --> 00:10:28,480 Ort zu starten, wenn Sie Fragen, wenn außerhalb der Bürozeiten 264 00:10:28,480 --> 00:10:29,470 insbesondere. 265 00:10:29,470 --> 00:10:31,070 >> Pakete werden zu starten in dieser Woche. 266 00:10:31,070 --> 00:10:33,170 Bei Feuer und Eis [Unverständlich] in New Haven. 267 00:10:33,170 --> 00:10:35,379 Schauen Sie sich den Verlauf des Website auszuwerten, um RSVP. 268 00:10:35,379 --> 00:10:36,753 Wer zuerst kommt, mahlt zuerst dafür. 269 00:10:36,753 --> 00:10:39,380 Wenn Sie nicht in dieser Woche zu erhalten wir werden diese am jeden Freitag zu tun 270 00:10:39,380 --> 00:10:40,400 während der Laufzeit. 271 00:10:40,400 --> 00:10:41,830 >> OK, und nun ein Wort über Einstufung. 272 00:10:41,830 --> 00:10:44,690 Zumal wir Probleme geben set on, das in dieser Woche heraus ist, 273 00:10:44,690 --> 00:10:46,670 und Problem setzen zwei und danach. 274 00:10:46,670 --> 00:10:51,680 Wie können wir über die Auswertung P Sätze gehen und die Bewertung der Qualität davon? 275 00:10:51,680 --> 00:10:55,560 Also, es ist vier Achsen, die wir in CS50, und sie sind diese vier hier. 276 00:10:55,560 --> 00:10:59,200 >> Umfang, der auf einem numerischen einfängt Grundlage, wie viel von dem P-Set 277 00:10:59,200 --> 00:10:59,860 haben Sie zu bewältigen. 278 00:10:59,860 --> 00:11:02,890 Es entspricht in etwa mit Anstrengung, und es ist unsere Art der Erfassung 279 00:11:02,890 --> 00:11:05,190 haben sie versucht, die Hälfte der P gesetzt, alle von der P-Set. 280 00:11:05,190 --> 00:11:08,860 Dies ist ein einfach ein perfekter zu werden Werte auf, wenn Sie tun, in der Tat, 281 00:11:08,860 --> 00:11:11,020 versuchen, jeden Aspekt des P-Set. 282 00:11:11,020 --> 00:11:12,010 Also, sollte man nicht vergessen. 283 00:11:12,010 --> 00:11:13,420 >> Korrektheit ist genau das. 284 00:11:13,420 --> 00:11:17,760 Gibt es in Ihrem Code-Arbeit als die Spezifikation und wie die Angestellten "Probenlösung 285 00:11:17,760 --> 00:11:19,730 schlagen vor, dass Sie Ihren Code sollte in der Tat, zu arbeiten. 286 00:11:19,730 --> 00:11:23,260 Prüfen Sie 50, wenn man es nicht erreicht haben doch ist in einem P-Spezifikation festgelegt 287 00:11:23,260 --> 00:11:25,060 und wird in der Regel geben Ihnen ja / keine Antwort 288 00:11:25,060 --> 00:11:26,518 darüber, ob der Code richtig ist. 289 00:11:26,518 --> 00:11:30,680 Zumindest so weit, wir gehen um es auf Grund der Prüfungen auswerten 290 00:11:30,680 --> 00:11:32,430 dass wir laufen innerhalb dieses Programms. 291 00:11:32,430 --> 00:11:33,850 >> Design ist mehr subjektiv. 292 00:11:33,850 --> 00:11:35,994 Dies ist, wie gut geschrieben ist Ihr Code. 293 00:11:35,994 --> 00:11:38,410 Und das ist etwas, Sie werden besser mit der Zeit zu bekommen, 294 00:11:38,410 --> 00:11:41,201 und es ist etwas, dass wir bieten mehr qualitative Feedback auf. 295 00:11:41,201 --> 00:11:43,350 Und nach Design ich könnte es dauerte nicht lange, dass Sie 296 00:11:43,350 --> 00:11:47,650 vielleicht in einigen P versucht sein gesetzt, um etwas loopingly tun, 297 00:11:47,650 --> 00:11:51,590 sondern vielleicht drei oder vier, oder fünf verschachtelten Vordergrund Schleifen oder verschachtelt, während 298 00:11:51,590 --> 00:11:52,090 Schleifen. 299 00:11:52,090 --> 00:11:54,130 Dass in der Regel sollte starten, um Sie zurückschrecken 300 00:11:54,130 --> 00:11:56,070 und würde in der Regel sein als schlechtes Design. 301 00:11:56,070 --> 00:11:59,490 Und Sie beginnen, in der Klasse sehen und aus der Klasse gute Möglichkeiten, Dinge zu tun, 302 00:11:59,490 --> 00:12:02,920 schlechte Wege, Dinge zu tun, dass vielleicht alle richtig sein, aber nicht 303 00:12:02,920 --> 00:12:04,304 unbedingt gut gestaltet. 304 00:12:04,304 --> 00:12:05,220 Wie das Schreiben eines Aufsatzes. 305 00:12:05,220 --> 00:12:08,100 Möglicherweise können Sie Wörter auf ein gesetzt sein Seite, die grammatikalisch korrekt sind, 306 00:12:08,100 --> 00:12:10,016 aber der Aufsatz oder die These sie sind nur 307 00:12:10,016 --> 00:12:11,810 völlig inkohärent oder nicht überzeugend. 308 00:12:11,810 --> 00:12:15,930 Und damit könnte der analogen in die sein schriftliche Welt der schlecht oder gut Design. 309 00:12:15,930 --> 00:12:18,490 >> Und Style, auch das ist ziemlich subjektiv. 310 00:12:18,490 --> 00:12:20,060 Aber zumindest erwarten wir Konsistenz. 311 00:12:20,060 --> 00:12:21,480 Dies ist, wie hübsch ist Ihr Code. 312 00:12:21,480 --> 00:12:22,840 Sind die Dinge schön eingerückt? 313 00:12:22,840 --> 00:12:26,600 Sind Ihre Variablen auch mit dem Namen / Sind alle Ihrer Klammern und geschweifte Klammern 314 00:12:26,600 --> 00:12:27,920 ausgerichtet sind, wie sie sein sollte? 315 00:12:27,920 --> 00:12:31,490 Wir haben eine CS50-Styleguide als das Problem Set wird Sie am Punkt. 316 00:12:31,490 --> 00:12:33,730 Diejenigen, bequemer sind Willkommen, zum von der streun 317 00:12:33,730 --> 00:12:35,771 so lange, wie Sie sich selbst konsistent sind. 318 00:12:35,771 --> 00:12:38,020 Und auch dies ist eine Lektion wir werden im Abschnitt zu verstärken. 319 00:12:38,020 --> 00:12:40,990 Also, wenn das alles war ein wenig schnell, realisieren die P-Set und Sektionen 320 00:12:40,990 --> 00:12:42,900 wird schon bald mehr in die Tiefe zu gehen. 321 00:12:42,900 --> 00:12:45,490 >> Aber im Allgemeinen haben wir sehr wenige Schaufeln CS50. 322 00:12:45,490 --> 00:12:48,170 Scores sind in der Regel auf einer Skala von 2.59 oder 4.59. 323 00:12:48,170 --> 00:12:50,836 Wir sind literally-- und ich kann nicht sagen, Reicht das in der ersten Woche. 324 00:12:50,836 --> 00:12:51,582 Drei ist gut. 325 00:12:51,582 --> 00:12:54,290 Also, auch wenn, ja, drei von fünf normalerweise, mathematisch, 326 00:12:54,290 --> 00:12:57,240 könnte ein 60 Prozent oder wie ein D minus sein. 327 00:12:57,240 --> 00:12:58,840 Drei ist in der Tat gut. 328 00:12:58,840 --> 00:13:01,050 Und in der Tat zu erwarten die meisten Schüler in der Klasse 329 00:13:01,050 --> 00:13:04,280 um starten den Begriff zu zweit, zu dritt, und Vieren. 330 00:13:04,280 --> 00:13:05,510 Wahrscheinlich nicht so viele Fünfer. 331 00:13:05,510 --> 00:13:06,661 Nicht zu viele Einsen. 332 00:13:06,661 --> 00:13:08,910 Aber in der Regel zu starten in dass Sweet-Spot in der Kurve 333 00:13:08,910 --> 00:13:11,694 so daß, wenn die Zeit fortschreitet, es gibt tatsächlich Raum für, 334 00:13:11,694 --> 00:13:13,360 und Chancen für die oberen Progression. 335 00:13:13,360 --> 00:13:15,810 Also, bitte nicht gleichsetzen mit drei 60% liegen. 336 00:13:15,810 --> 00:13:17,410 Es ist viel abstrakter als das. 337 00:13:17,410 --> 00:13:20,160 Die Formel, mit der wir berechnen Noten wird wie folgt gewichtet. 338 00:13:20,160 --> 00:13:21,610 Korrektheit lohnt sich am meisten. 339 00:13:21,610 --> 00:13:23,010 Design lohnt sich ein bisschen weniger. 340 00:13:23,010 --> 00:13:24,490 Stil lohnt sich ein bisschen weniger. 341 00:13:24,490 --> 00:13:26,950 Und dies in der Regel erfasst die Zeitspanne 342 00:13:26,950 --> 00:13:29,800 das geht in immer jeweils dieser Achsen genau richtig. 343 00:13:29,800 --> 00:13:31,810 Stil ist super einfach, sollte super schnell sein, 344 00:13:31,810 --> 00:13:33,657 aber es ist eine einfache Gewohnheit zu faul zu. 345 00:13:33,657 --> 00:13:35,490 Korrektheit aussehen könnte Sie die meisten der Zeit. 346 00:13:35,490 --> 00:13:38,990 Jagd nach etwas bug Macht nehmen, dass zusätzliche Stunde oder mehr, 347 00:13:38,990 --> 00:13:41,737 und so weiter, das Punkte letztlich erfasst, dass. 348 00:13:41,737 --> 00:13:43,070 Und so, jetzt ein ernster Wort. 349 00:13:43,070 --> 00:13:45,240 Seit CS50 hat der Unterscheidung, für eine bessere 350 00:13:45,240 --> 00:13:47,440 oder zum Schlechten, des Seins vielleicht besser kennen 351 00:13:47,440 --> 00:13:50,065 mit Fragen der akademischen Ehrlichkeit als die meisten jedem anderen Kurs. 352 00:13:50,065 --> 00:13:53,720 Und in der Tat ist es nach meinem Wissen, dass senden wir mehr Studenten leider 353 00:13:53,720 --> 00:13:56,690 zu disziplinarischen Zwecken jedes Jahr als Folge. Also, 354 00:13:56,690 --> 00:13:59,040 im Interesse der vollen Offenlegung, lassen Sie uns kurz zu sprechen 355 00:13:59,040 --> 00:14:02,820 über, was an in CS50, und was Sie tun können, und was Sie bewusst sein kann. 356 00:14:02,820 --> 00:14:05,530 >> So, hier seit 2007, als Ich erbte den Kurs, 357 00:14:05,530 --> 00:14:07,870 ist die Anzahl der Ad Vorstands Fällen. 358 00:14:07,870 --> 00:14:10,690 Ad Board ist Harvard Disziplinar Körper oder jetzt Honor Counsel, 359 00:14:10,690 --> 00:14:13,790 , auf die Fälle bezeichnet, wenn Schüler, etwas zu tun, dass der Kurs der 360 00:14:13,790 --> 00:14:15,470 Lehrplan hält unvernünftig. 361 00:14:15,470 --> 00:14:17,220 Es gibt keinen wirklichen Muster hier, würde ich sagen. 362 00:14:17,220 --> 00:14:19,530 Es schwankt über die Jahre, aber im Allgemeinen 363 00:14:19,530 --> 00:14:22,262 dies ist die Anzahl von Fälle, die bezeichnet werden. 364 00:14:22,262 --> 00:14:23,970 Die Zahl der Studierenden , die beteiligt sind? 365 00:14:23,970 --> 00:14:25,290 Auch sie variiert. 366 00:14:25,290 --> 00:14:27,930 In der Regel im letzten Jahr für Beispiel 29 Studenten an der Harvard- 367 00:14:27,930 --> 00:14:29,740 waren Ad Boarded, so zu sprechen. 368 00:14:29,740 --> 00:14:32,670 Von denen 29 Studierende, zwei von ihnen vor Studenten, 369 00:14:32,670 --> 00:14:35,610 WHO-Kooperations wurden in einigen unerwünschte Art und Weise. 370 00:14:35,610 --> 00:14:38,400 Und dann in Bezug auf die Prozentsatz, ist es in der Regel etwa 3% 371 00:14:38,400 --> 00:14:41,360 der Klasse, leider macht diese Art von Entscheidungen. 372 00:14:41,360 --> 00:14:44,470 >> Also, im letzten Jahr war es 3,5% der CS50 der Studentenschaft 373 00:14:44,470 --> 00:14:46,820 das war Ad Boarded, so zu sprechen. 374 00:14:46,820 --> 00:14:48,490 >> Also, was bedeutet all das? 375 00:14:48,490 --> 00:14:49,660 Und was machen wir eigentlich? 376 00:14:49,660 --> 00:14:52,930 >> Also, für die vollständige Offenlegung, wir absolut, als Informatiker, 377 00:14:52,930 --> 00:14:57,620 haben Software-Tools zur Verfügung und es ist für uns sehr einfach, in Fairness, 378 00:14:57,620 --> 00:15:00,980 Das ist anderen Klassenkameraden, die nicht Überqueren Sie diese Zeilen zu überqueren vergleichen 379 00:15:00,980 --> 00:15:04,570 jede Vorlage in diesem Jahr gegen jeden Vorlage für den letzten acht Jahren. 380 00:15:04,570 --> 00:15:05,445 Software tut dies. 381 00:15:05,445 --> 00:15:07,440 Und letztlich ist es menschlichen Augen, die entscheiden, 382 00:15:07,440 --> 00:15:11,410 ob oder ob nicht, einige beziehen Rolle für die weitere Rechtssprechung, 383 00:15:11,410 --> 00:15:12,737 aber Software hilft sicherlich. 384 00:15:12,737 --> 00:15:15,820 Und das, ehrlich gesagt, weshalb ich denke, dass Wir haben so großer Zahl in CS50. 385 00:15:15,820 --> 00:15:18,540 Es ist nicht, weil CS50 Studenten oder CS Studenten mehr 386 00:15:18,540 --> 00:15:20,840 sind in der Regel nicht weniger ehrlich als alle anderen Studenten, 387 00:15:20,840 --> 00:15:22,340 es ist nur, wir haben die Werkzeuge und Techniken 388 00:15:22,340 --> 00:15:24,095 , mit dem dieser erste Durchgang zu nehmen. 389 00:15:24,095 --> 00:15:25,960 >> Aber wir halten ein Auge Auf all diese Dinge 390 00:15:25,960 --> 00:15:30,340 sowie wiederum im Interesse der in Anerkennung der Arbeit, die gesetzt ist 391 00:15:30,340 --> 00:15:32,397 in von einem Super-Mehrheit der Klasse. 392 00:15:32,397 --> 00:15:34,230 Und der Kurs Politik auf akademische Ehrlichkeit, 393 00:15:34,230 --> 00:15:37,021 auch wenn es eine Reihe von Absätzen lang mit einem Bündel von Kugeln 394 00:15:37,021 --> 00:15:40,490 die hoffentlich sind gut lesbar, es wirklich einkochen, vernünftig zu sein. 395 00:15:40,490 --> 00:15:44,000 Und das beste Faustregel, dass bieten wir innerhalb des Lehrplans 396 00:15:44,000 --> 00:15:46,020 ist dies das Wesen aller Arbeiten, die Sie 397 00:15:46,020 --> 00:15:47,850 unterwerfen sich diesem Kurs müssen Sie Ihre eigenen. 398 00:15:47,850 --> 00:15:51,510 Und zwar in fast alle, genannten Fällen für Disziplinarmaßnahmen 399 00:15:51,510 --> 00:15:55,640 es, weil einige Studenten spät war Nacht in der Regel eingeschaltet sein oder ihr Code 400 00:15:55,640 --> 00:15:58,130 über geradezu zu einem Klassenkameraden, die dann nahm er 401 00:15:58,130 --> 00:16:00,840 in seiner Gesamtheit oder deutlich davon. 402 00:16:00,840 --> 00:16:02,680 >> Aber wirklich, das ist OK. 403 00:16:02,680 --> 00:16:04,684 Und in der Tat, im Büro Stunden, die Zettel 404 00:16:04,684 --> 00:16:07,850 Sie übergeben worden waren, wenn Sie mit Büro kam Stunden letzte Woche ermutigt, so viel. 405 00:16:07,850 --> 00:16:09,710 Sie haben völlig begrüßt und gefördert 406 00:16:09,710 --> 00:16:12,340 Problem Sätze mit Klassenkameraden zu diskutieren. 407 00:16:12,340 --> 00:16:14,461 Um sich gegenseitig zu helfen, wenn stolpern. 408 00:16:14,461 --> 00:16:17,710 Aber in der Regel die Faustregel sollte sei es, ", wenn Sie um Hilfe bitten, 409 00:16:17,710 --> 00:16:20,412 Sie können Ihren Code, anderen zu zeigen, aber Sie können nicht sehen können ihre. " 410 00:16:20,412 --> 00:16:22,620 Also, mit anderen Worten, wenn ich mich kämpfen mit einigen P-Set 411 00:16:22,620 --> 00:16:25,290 und ich sitze da in der Speisesaal oder in der Bibliothek, 412 00:16:25,290 --> 00:16:28,470 oder im Klassenzimmer versuchen, einige Fehler zu finden, 413 00:16:28,470 --> 00:16:30,340 Ich kann sicherlich zeigen mein Code auf meinem Bildschirm 414 00:16:30,340 --> 00:16:32,590 um die Sitznachbarn mir sicher das Personal, 415 00:16:32,590 --> 00:16:33,600 sondern auch ein Klassenkamerad. 416 00:16:33,600 --> 00:16:36,580 Aber wenn die Lösung, mein Klassenkamerad bietet ist, oh, 417 00:16:36,580 --> 00:16:39,200 hier nur einen Blick auf das, was Ich habe, dass die Linie überquert. 418 00:16:39,200 --> 00:16:43,120 >> Und ich würde es wagen, sagen, das ist in der Regel eine vernünftige Sache für die meisten Menschen 419 00:16:43,120 --> 00:16:45,030 sehr einfach vor Ort die Linie. 420 00:16:45,030 --> 00:16:47,195 Und so finden Sie im Syllabus für mehr Details. 421 00:16:47,195 --> 00:16:49,070 Und nun zu den mehr umstrittensten Aspekte 422 00:16:49,070 --> 00:16:52,529 der CS50 Lehrplan, dass ich dachte, ich würde zum Schluß hier zu sprechen 423 00:16:52,529 --> 00:16:53,820 ist die sogenannte Bedauern Klausel. 424 00:16:53,820 --> 00:16:55,340 So, hier ist das Kleingedruckte. 425 00:16:55,340 --> 00:16:58,090 Aber im Allgemeinen haben wir gesehen, in den letzten 8 Jahren sowie 426 00:16:58,090 --> 00:17:01,510 dass in der Tat fast alle CS50 ist Fälle von akademischen Unredlichkeit 427 00:17:01,510 --> 00:17:04,390 waren das Ergebnis von nur schlechte Entscheidungs ​​spät in der Nacht. 428 00:17:04,390 --> 00:17:07,144 Das Ergebnis von Stress, ist das Ergebnis der Mangel an Ernährung, Mangel an Schlaf, 429 00:17:07,144 --> 00:17:09,560 zu viele P-Sets, zu viele Fristen, zu viele Verpflichtungen. 430 00:17:09,560 --> 00:17:13,520 Stress Aufbau in einer 2.00, 3.00 Uhr, 04.00 Uhr, mit einer Frist droht. 431 00:17:13,520 --> 00:17:17,020 Die meisten Studenten in diesen Fällen haben gerade schlechte Entscheidungen getroffen 432 00:17:17,020 --> 00:17:20,619 daß sie sehr wohl bedauern die Am nächsten Morgen, wenn nicht Minuten später, 433 00:17:20,619 --> 00:17:25,490 aber bis zum letzten Jahr gab es keine Ablassventil, dass diese Schüler konnten 434 00:17:25,490 --> 00:17:29,140 tatsächlich eröffnen, um tatsächlich die Adresse Problem Kopf auf, ohne Angst, 435 00:17:29,140 --> 00:17:30,850 von der Hochschule gebootet insgesamt. 436 00:17:30,850 --> 00:17:33,260 >> Und in der Tat haben wir Dieses Bedauern Klausel im letzten Jahr, 437 00:17:33,260 --> 00:17:35,970 die besagt, dass, wenn innerhalb von 72 Stunden, drei Tage, 438 00:17:35,970 --> 00:17:37,970 überqueren eine Linie im Lehrplan vorgeschriebenen 439 00:17:37,970 --> 00:17:41,178 Sie vorne kommen, um eine der Verlauf der Köpfe und wir werden einen Chat über sie haben. 440 00:17:41,178 --> 00:17:43,720 Es gibt immer noch einige Ergebnis entgegen, was 441 00:17:43,720 --> 00:17:44,990 wurde das Gegenteil ausgewiesen. 442 00:17:44,990 --> 00:17:49,190 Es gibt noch einige Ergebnis, ist umsetzbare durch den Verlauf, 443 00:17:49,190 --> 00:17:51,611 Nullstellung Regel eine P-Set oder sich eine andere Aktion, 444 00:17:51,611 --> 00:17:53,610 aber wir werden in der Tat, hand es selbst und nicht 445 00:17:53,610 --> 00:17:58,460 beziehen sie höher waren das Ergebnis vielleicht viel schwerer. 446 00:17:58,460 --> 00:18:01,810 Und in der Tat, zu teilen, was passiert im vergangenen Jahr, in den acht Jahren, und jetzt 447 00:18:01,810 --> 00:18:04,950 neun Jahren der Unterricht des Kurses und nach dem Basteln mit verschiedenen Drehknöpfe, 448 00:18:04,950 --> 00:18:07,866 Drehen verschiedenen Skalen in den letzten mehrere Jahre auf die akademische Ehrlichkeit, 449 00:18:07,866 --> 00:18:11,920 und zu sehen, nach den Daten ohne ersichtlichen Auswirkungen, auch von Reden wie diese, 450 00:18:11,920 --> 00:18:15,490 Dies war mit Abstand das Beste, was wir pädagogisch eingeführt 451 00:18:15,490 --> 00:18:18,090 seit acht Jahren zusammen diese Linien in CS50. 452 00:18:18,090 --> 00:18:21,010 >> 19 Schüler meldeten sich unter dieser Klausel im letzten Jahr. 453 00:18:21,010 --> 00:18:23,389 Wir haben keine Maßnahmen zur sieben dieser Studenten, 454 00:18:23,389 --> 00:18:25,430 Bestimmen, dass sie unnötig Sorgen. 455 00:18:25,430 --> 00:18:27,304 Sie waren nicht in der Tat eine Grenze überschritten, aber es 456 00:18:27,304 --> 00:18:28,960 war ein gutes Gespräch, um dennoch zu haben. 457 00:18:28,960 --> 00:18:31,190 Wir genullt 11 der Punkte daß eingereicht. 458 00:18:31,190 --> 00:18:33,840 Und in einem Fall wir fragten ein Studenten, um ein Problem zu tun gesetzt. 459 00:18:33,840 --> 00:18:36,370 Aber mehr überzeugende, ehrlich gesagt, mit diesen 19-Chats, 460 00:18:36,370 --> 00:18:39,020 die Art und Weise mehr als ich erwartet haben, wobei jeder von ihnen 461 00:18:39,020 --> 00:18:41,370 10 Minuten, um vielleicht eine Stunde lang, brachte auch 462 00:18:41,370 --> 00:18:44,920 um eine Reihe von Fragen in Bezug auf Licht familiäre Probleme, Freund Fragen, 463 00:18:44,920 --> 00:18:46,940 Fragen der psychischen Gesundheit dass wir dann engagiert, 464 00:18:46,940 --> 00:18:50,200 mit den Studenten Segen, wohnhaft dean, oder Freunden, oder jede andere Zahl 465 00:18:50,200 --> 00:18:51,450 der Support-Ressourcen. 466 00:18:51,450 --> 00:18:54,454 So dass dieses war mit Abstand eines der besten Einsatzmöglichkeiten unserer Zeit 467 00:18:54,454 --> 00:18:55,870 und einer der Interventionen. 468 00:18:55,870 --> 00:18:58,870 >> Mit dieser sagte, es hatte keine Eingang auf der Erfassungsrate über 469 00:18:58,870 --> 00:19:00,909 akademischer Unehrlichkeit im Allgemeinen. 470 00:19:00,909 --> 00:19:02,950 Und ich wage zu behaupten, diese Teilmenge Studenten im letzten Jahr 471 00:19:02,950 --> 00:19:06,350 war eine demographische, dass wir zuvor noch nie identifiziert 472 00:19:06,350 --> 00:19:08,140 und hatte noch nie mit vor verbunden. 473 00:19:08,140 --> 00:19:10,020 Und so wurden diese wunderbare Erfolgsgeschichten 474 00:19:10,020 --> 00:19:13,390 auch wenn sie ans Licht gebracht wurden in weniger als optimalen Bedingungen. 475 00:19:13,390 --> 00:19:15,640 Also, denken Sie daran, wie Sie zu machen, vielleicht, 476 00:19:15,640 --> 00:19:17,390 einige schlechte Entscheidung selbst spät in der Nacht, 477 00:19:17,390 --> 00:19:20,151 dass es den Rückgriff so lange wie die Schüler in dieser Situation 478 00:19:20,151 --> 00:19:23,400 besitzen und nach vorne zu kommen, so dass wir diese Art von Chat und mit ihr umgehen 479 00:19:23,400 --> 00:19:27,310 in einer Weise, dass die Bildungs ​​ist, und dann können wir es hinter uns am nächsten Tag. 480 00:19:27,310 --> 00:19:30,335 >> So ohne weiteres, nehmen Sie die edge off dieses Gesprächs, 481 00:19:30,335 --> 00:19:35,080 der Grund, die Welpen sind up ist nur um das Eis für einen Moment zu brechen. 482 00:19:35,080 --> 00:19:39,560 Und leider sind sie alle entschlafen, aber was angeblich hier geschehen 483 00:19:39,560 --> 00:19:41,760 war jeder sollte Ehrfurcht und Art der Entspannung 484 00:19:41,760 --> 00:19:43,910 nach, dass sehr schwere Gespräch. 485 00:19:43,910 --> 00:19:46,930 Aber anscheinend habe ich die Welpen in den Schlaf. 486 00:19:46,930 --> 00:19:50,070 Aber wenn Sie CS50 gehen Website Strich Welpen, 487 00:19:50,070 --> 00:19:51,610 Sie können sie den ganzen Tag lang zu beobachten. 488 00:19:51,610 --> 00:19:55,280 Besonders vielleicht 2.00 oder 03.00 oder 04.00 Uhr in der Nacht 489 00:19:55,280 --> 00:19:57,480 ein wenig Stressabbau dort zu sehen. 490 00:19:57,480 --> 00:19:58,805 Das ist also Slash Welpen. 491 00:19:58,805 --> 00:20:01,700 492 00:20:01,700 --> 00:20:02,200 Gut. 493 00:20:02,200 --> 00:20:03,020 War das nicht lustig? 494 00:20:03,020 --> 00:20:04,200 OK. 495 00:20:04,200 --> 00:20:07,140 Also, bis zu einem gewissen Computer wieder Wissenschaft, wenn ich darf. 496 00:20:07,140 --> 00:20:10,600 >> Also, erinnern daran, dass wir das letzte Mal gestartet suchen nicht nur am Main, die 497 00:20:10,600 --> 00:20:13,930 war die Standardfunktion, die bei grüne Flagge geklickt Äquivalent, 498 00:20:13,930 --> 00:20:16,999 aber wir auch kurz begonnen Schreiben einige unserer eigenen Funktionen. 499 00:20:16,999 --> 00:20:20,040 Und bisher keine dieser Funktionen haben sich als besonders groß oder fleischig gewesen. 500 00:20:20,040 --> 00:20:24,570 Sie werden in solche größeren erhalten Funktionen wahrscheinlich, P set 2, P 3 festgelegt, 501 00:20:24,570 --> 00:20:26,410 auf jeden Fall P set 4 und weiter. 502 00:20:26,410 --> 00:20:29,340 Gerade jetzt die meisten Ihrer Programme, wenn nicht alle von ihnen, natürlich für P 503 00:20:29,340 --> 00:20:31,550 Satz 1 kann vollständig im Haupt erfolgen. 504 00:20:31,550 --> 00:20:33,810 Wenn Ihr Programm nur fünf Linien, 10 Linien, 505 00:20:33,810 --> 00:20:37,070 sogar 20 Zeilen lang, perfekt vernünftig, es zu schreiben 506 00:20:37,070 --> 00:20:40,930 alle in Haupt und nicht um komplizierte Über Ihren Code, aber das, was wir heute tun 507 00:20:40,930 --> 00:20:44,360 und weiter versucht, auch präsentieren einige gute Design-Techniken 508 00:20:44,360 --> 00:20:48,660 so dass, wenn Ihr Code bekommt mehr kompliziert und wie die Probleme 509 00:20:48,660 --> 00:20:51,690 Sie lösen wollen, und noch härter werden interessanter Sie, Art, 510 00:20:51,690 --> 00:20:55,850 die Werkzeuge in der Toolbox, mit der gute Lösungen zu denen entwerfen. 511 00:20:55,850 --> 00:21:01,210 >> Also, lassen Sie uns einen kurzen Blick zurück auf dieses Programm von meinem letzten Woche, die 512 00:21:01,210 --> 00:21:06,550 war Funktionen Nullpunkt C. Und feststellen, dass, ganz einfach, 513 00:21:06,550 --> 00:21:10,310 es sieht aus wie dies mit zwei Funktionen, Haupt- und Druck Namen. 514 00:21:10,310 --> 00:21:13,160 Und wieder zurück oder vielleicht denken, Reverse Engineering heute 515 00:21:13,160 --> 00:21:16,880 was war die Motivation für die Einführung eine Funktion in Zeile 28 aufgerufen, 516 00:21:16,880 --> 00:21:18,180 Druck Name? 517 00:21:18,180 --> 00:21:21,745 Oder was war das ein Beispiel für die in Bezug auf ein Prinzip oder Lieferservice, 518 00:21:21,745 --> 00:21:22,605 wenn du würdest. 519 00:21:22,605 --> 00:21:26,560 520 00:21:26,560 --> 00:21:27,300 Einige Geräusche. 521 00:21:27,300 --> 00:21:28,830 Was? 522 00:21:28,830 --> 00:21:32,210 >> Ja, so Funktionale Dekomposition ist eine Art, die andere Art zu sagen, 523 00:21:32,210 --> 00:21:34,690 zersetzen sich Ihr Programm in ihre Bestandteile 524 00:21:34,690 --> 00:21:37,530 und dann die Teile verwenden eine ganze zubauen. 525 00:21:37,530 --> 00:21:39,620 So auch ist, dass nur eine Art der einen Schluck schon, 526 00:21:39,620 --> 00:21:42,050 aber das ist vielleicht sogar besseres Beispiel für etwas, 527 00:21:42,050 --> 00:21:43,081 gerade angerufen Abstraktion. 528 00:21:43,081 --> 00:21:43,580 Recht? 529 00:21:43,580 --> 00:21:46,950 Abstraktion wird einer sein, der wiederkehrende Themen in CS50 530 00:21:46,950 --> 00:21:49,085 und Informatik allgemeiner da es 531 00:21:49,085 --> 00:21:53,060 eine Technik, mit der Sie lösen können Probleme effektiver, weil Sie 532 00:21:53,060 --> 00:21:56,807 können Lösungen mehr schreiben intuitiv und in einer Weise, die skaliert 533 00:21:56,807 --> 00:21:58,390 und ist von anderen Menschen verständlich. 534 00:21:58,390 --> 00:21:59,860 Was mache ich damit? 535 00:21:59,860 --> 00:22:04,340 >> So, wohl ist es viel besser lesbar zu einem Programm wie folgt aussehen, 536 00:22:04,340 --> 00:22:05,990 Super Kurz obwohl es. 537 00:22:05,990 --> 00:22:10,050 Wenn Sie in Zeile 22 sehen, dass es eine Funktion aufgerufen, Print Namen. 538 00:22:10,050 --> 00:22:12,620 Dieser Name allein sagt, was sie tut. 539 00:22:12,620 --> 00:22:15,780 Diese Funktion nimmt offenbar Eingangs zwischen seinen Klammern, 540 00:22:15,780 --> 00:22:18,600 und anscheinend etwas tut, Vermutlich gibt den Namen. 541 00:22:18,600 --> 00:22:20,880 Und so, obwohl wir unbedingt haben könnte 542 00:22:20,880 --> 00:22:25,280 das getan, was wir getan haben vor einer Woche, die war nehmen Sie nur diese aktuelle Code-Zeile, 543 00:22:25,280 --> 00:22:28,710 bekommen die Befreiung von diesem, und erhalten die Befreiung von diesem alle zusammen, 544 00:22:28,710 --> 00:22:31,436 wir Art abstrahiert entfernt der Begriff Drucken eines Namens. 545 00:22:31,436 --> 00:22:33,060 Es ist mir egal, wenn Sie Druck def sind. 546 00:22:33,060 --> 00:22:35,601 Es ist mir egal, wenn Sie eine Prozent S und ein Backslash N. Diese 547 00:22:35,601 --> 00:22:37,270 sind unglaublich undurchschaubaren Details. 548 00:22:37,270 --> 00:22:40,090 Was ich kümmern uns um als Programmierer einen Namen Druck. 549 00:22:40,090 --> 00:22:43,414 Und so was könnte besser sein, das zu tun als durch den Aufruf einer Funktion, Print-Name? 550 00:22:43,414 --> 00:22:46,330 Und so war eine der Motivationen, dass für so etwas zu tun. 551 00:22:46,330 --> 00:22:50,370 Erstellen Sie den Code besser lesbar und mehr wiederverwendbar, und auch weitgehend selbsterklärend. 552 00:22:50,370 --> 00:22:52,120 Nun, lassen Sie uns einen Blick bei einem anderen Beispiel, 553 00:22:52,120 --> 00:22:56,220 Welche Funktionen war, die wir hier über hatten. 554 00:22:56,220 --> 00:23:00,367 >> Also, das ist eine vielleicht noch geboten, als in diesem Fall 555 00:23:00,367 --> 00:23:01,700 Ich möchte nicht nur einen int zu erhalten. 556 00:23:01,700 --> 00:23:03,320 Ich möchte eine positive int zu erhalten. 557 00:23:03,320 --> 00:23:06,470 Und es zeigt sich eine positive um int Sie eine Reihe von Beinarbeit zu tun haben. 558 00:23:06,470 --> 00:23:06,969 Recht? 559 00:23:06,969 --> 00:23:09,600 Es ist nicht einfach eine Zeile rufen Sie wie Print Name war, 560 00:23:09,600 --> 00:23:11,480 Das ist zwar weniger zwingend. 561 00:23:11,480 --> 00:23:16,000 >> Um eine positive int zu bekommen, logically-- lassen Sie mich zurück nach unten scrollen, um dies zu verbergen. 562 00:23:16,000 --> 00:23:18,887 Was hast du zu tun? 563 00:23:18,887 --> 00:23:20,720 Wie alle Werkzeuge, die wir im Moment sind 564 00:23:20,720 --> 00:23:24,440 Dinge wie Druck def von Standard Bibliothek und auch von CS50-Bibliothek 565 00:23:24,440 --> 00:23:26,990 Wir haben Holen Sie Int und Erhalten Float, Holen Sie sich Lang Lang, Get String, 566 00:23:26,990 --> 00:23:29,260 aber die einzige, Germane, ist im Moment Holen Int. 567 00:23:29,260 --> 00:23:32,970 Also, wenn das einzige Werkzeug, das Sie haben in Ihren Werkzeugkasten ist Erhalten Sie Int, 568 00:23:32,970 --> 00:23:35,505 wie gehen wir über die Implementierung gehen es positive int bekommen? 569 00:23:35,505 --> 00:23:35,929 >> ZIELGRUPPE: Erstellen Sie ein Protokoll und überprüfen ab, ob die Eingabe, die sie gaben 570 00:23:35,929 --> 00:23:36,762 positiv war oder nicht. 571 00:23:36,762 --> 00:23:39,390 572 00:23:39,390 --> 00:23:40,640 >> Sprecher 1: Perfect. 573 00:23:40,640 --> 00:23:41,200 Genau. 574 00:23:41,200 --> 00:23:43,950 Ein weiteres Werkzeug, das wir in haben unsere Toolbox von ein oder zwei Wochen vor 575 00:23:43,950 --> 00:23:45,419 ist nur der Schleifenkonstrukt. 576 00:23:45,419 --> 00:23:48,210 Und so, ja, wenn wir eine Weile, Schleife oder ein Do While-Schleife oder eine Vordergrund 577 00:23:48,210 --> 00:23:50,850 Schleifen wir wahrscheinlich weg konnte mit einem der unter in irgendeiner Form. 578 00:23:50,850 --> 00:23:55,140 Wir können den Begriff der get umsetzen positive int nur mit Hilfe Holen Sie Int, 579 00:23:55,140 --> 00:23:57,830 und dann nur halten sie ruft wieder und halten Sie bedrängen den Benutzer 580 00:23:57,830 --> 00:24:00,320 bis er oder sie tatsächlich gibt uns, was wir wollen. 581 00:24:00,320 --> 00:24:03,260 >> Und nun, dies Abstraktion des Prozesses 582 00:24:03,260 --> 00:24:05,680 des Erhaltens einer positiven int in eine Funktion mit dem Namen 583 00:24:05,680 --> 00:24:08,930 Erhalten Positive Int ist ein wenig mehr überzeugende, weil sieh dir das an. 584 00:24:08,930 --> 00:24:10,990 Diese sind wie 10 plus Codezeilen, 585 00:24:10,990 --> 00:24:15,090 werden in immer eine positive int beteiligt, und ich weiß nicht wirklich, wie Sie es tun. 586 00:24:15,090 --> 00:24:17,850 Meinetwegen ist, dass man kann es tun, und so habe ich 587 00:24:17,850 --> 00:24:21,660 versteckt all die Details hinter ein Funktion namens Get Positive int, dass, 588 00:24:21,660 --> 00:24:23,430 In der Tat hat hierzu while-Schleife. 589 00:24:23,430 --> 00:24:27,660 >> Und sehen Sie in der vergangenen Woche für die Syntax gibt, aber es ist einfach erklärt, N, 590 00:24:27,660 --> 00:24:29,800 und es druckt die Anweisung an den Benutzer. 591 00:24:29,800 --> 00:24:33,330 Er fordert Erhalten Sie Int und dann überprüft er dieser Zustand wieder und wieder, 592 00:24:33,330 --> 00:24:35,230 wieder, bis der Benutzer zusammenwirkt. 593 00:24:35,230 --> 00:24:38,000 >> So, jetzt, einige Plausibilitätsprüfungen. 594 00:24:38,000 --> 00:24:40,370 Für diejenigen, die vielleicht vertraut mit etwas Programmierung, 595 00:24:40,370 --> 00:24:46,410 Deshalb wird N erklärt, warum muss ich erstellen N außerhalb des do while-Schleife? 596 00:24:46,410 --> 00:24:50,370 Warum ist es in Zeile 29 und nicht auf, wie 33, zum Beispiel. 597 00:24:50,370 --> 00:24:53,529 >> ZIELGRUPPE: Weil, wenn Sie erklären draußen, es Art 598 00:24:53,529 --> 00:24:56,688 mehr, den größeren scope-- 599 00:24:56,688 --> 00:24:58,146 >> Sprecher 1: Gut. 600 00:24:58,146 --> 00:24:59,604 >> ZIELGRUPPE: --und, wenn Sie erklären, es innerhalb der Schleife, [unverständlich] 601 00:24:59,604 --> 00:25:00,979 weil sie nicht darüber wissen. 602 00:25:00,979 --> 00:25:02,819 603 00:25:02,819 --> 00:25:03,610 Sprecher 1: Genau. 604 00:25:03,610 --> 00:25:06,330 Wenn ich simplify-- können es ist eine Frage des Umfangs. 605 00:25:06,330 --> 00:25:11,530 Und Bereich bezieht sich auf den Kontext, in die eine variable bestehendes oder nutzbar. 606 00:25:11,530 --> 00:25:15,050 Und das Schöne Faustregel gilt hier, dass in der Regel, wenn Sie erklären, oder erstellen 607 00:25:15,050 --> 00:25:21,642 eine Variable können Sie nur es im Inneren der am nächsten umarmt geschweiften Klammern. 608 00:25:21,642 --> 00:25:22,600 Also, was bedeutet das? 609 00:25:22,600 --> 00:25:26,551 Wenn ich stattdessen rückgängig machen und gehen Sie mit etwas, das ein wenig einfacher anfühlt. 610 00:25:26,551 --> 00:25:27,050 Recht? 611 00:25:27,050 --> 00:25:29,360 >> Zeile 32 sieht einfach sauberer zu mir jetzt. 612 00:25:29,360 --> 00:25:31,500 Ich mache beides auf einmal und dann die Zuordnung 613 00:25:31,500 --> 00:25:33,070 die rechte Hand auf die linke Hand. 614 00:25:33,070 --> 00:25:35,180 Das Problem ist nun basierend auf daß Definition des Anwendungsbereichs 615 00:25:35,180 --> 00:25:41,130 daß N in Zeilen verwendet werden 31 und 32 innerhalb dieser Schleife 616 00:25:41,130 --> 00:25:45,100 aber wo die von dieser Festlegung es kann nicht verwendet werden? 617 00:25:45,100 --> 00:25:45,660 Im Einklang was? 618 00:25:45,660 --> 00:25:46,160 Ja. 619 00:25:46,160 --> 00:25:47,490 >> ZIELGRUPPE: 35. 620 00:25:47,490 --> 00:25:49,180 >> Sprecher 1: 35. 621 00:25:49,180 --> 00:25:50,480 Auf jeden Fall nicht 35. 622 00:25:50,480 --> 00:25:52,349 Und auch dort, wo sonst? 623 00:25:52,349 --> 00:25:52,890 ZIELGRUPPE: 34. 624 00:25:52,890 --> 00:25:55,040 Sprecher 1: Selbst 34 problematisch, weil es 625 00:25:55,040 --> 00:25:56,450 außerhalb der geschweiften Klammern. 626 00:25:56,450 --> 00:25:58,200 Und so in der Tat wollen wir mal sehen, was passiert. 627 00:25:58,200 --> 00:25:58,700 Recht? 628 00:25:58,700 --> 00:26:00,722 Dies könnte ein wenig scheinen intuitive oder auch nicht, 629 00:26:00,722 --> 00:26:02,680 aber mal sehen, was die Compiler zu sagen hat, wenn 630 00:26:02,680 --> 00:26:04,730 Wir gehen in die heutige Quellverzeichnis. 631 00:26:04,730 --> 00:26:08,950 Machen Sie eine Funktion. 632 00:26:08,950 --> 00:26:11,231 Oh mein Gott. 633 00:26:11,231 --> 00:26:12,980 Nun, ich endlich fertig dass durch die Art und Weise. 634 00:26:12,980 --> 00:26:14,030 Gut. 635 00:26:14,030 --> 00:26:15,510 Und was ist das Problem hier? 636 00:26:15,510 --> 00:26:17,430 Sehr geheimnisvollen, zu betrachten. 637 00:26:17,430 --> 00:26:19,570 Aber hier ist, was ich typed-- Schliesser ein. 638 00:26:19,570 --> 00:26:21,640 Hier ist, was induzierte zu machen, das ist eigentlich 639 00:26:21,640 --> 00:26:23,705 Verwendung der Compiler-Klang mit einigen dieser Flags 640 00:26:23,705 --> 00:26:25,080 dass wir uns wieder sehen, es dauerte nicht lange. 641 00:26:25,080 --> 00:26:26,829 Und wieder sehen immer bei der ersten Fehler 642 00:26:26,829 --> 00:26:30,540 weil es einfach nur vielleicht eine kaskadierende bedeutungslos Wirkung auf andere Linien. 643 00:26:30,540 --> 00:26:34,410 >> Also, was das bedeutet, ist, dass die Problem ist, in Funktion 1.c. 644 00:26:34,410 --> 00:26:36,890 Es ist auf der Leitung 32. 645 00:26:36,890 --> 00:26:39,712 Und es ist in Spalte oder Charakter, 13. 646 00:26:39,712 --> 00:26:42,670 Also, wenn Ihr Texteditor, der kann Ihnen helfen, festzustellen, wo das Problem ist. 647 00:26:42,670 --> 00:26:47,079 Also, wenn ich nach oben, was ist die Leitung 32? 648 00:26:47,079 --> 00:26:49,120 Das ist in der Tat diese eine das ist bereits markiert 649 00:26:49,120 --> 00:26:50,607 Recht hier-- unbenutzte Variablen n. 650 00:26:50,607 --> 00:26:51,440 Aber es ist nicht ungenutzt. 651 00:26:51,440 --> 00:26:52,320 Ich benutze sie. 652 00:26:52,320 --> 00:26:56,110 Aber der Compiler verwirrt, weil es existiert nur innerhalb dieses Umfangs. 653 00:26:56,110 --> 00:26:57,727 Und so kann ich nicht verwenden Sie es hier. 654 00:26:57,727 --> 00:26:58,560 Ich kann es nicht benutzen hier. 655 00:26:58,560 --> 00:27:01,320 Und der Compiler deshalb nicht einmal für nötig, dass ich versuche. 656 00:27:01,320 --> 00:27:03,940 Es scheint, unbenutzt innerhalb seiner tatsächlichen Umfang. 657 00:27:03,940 --> 00:27:08,854 >> So können wir den Umfang zu erweitern, indem Sie genau das, was wir begonnen mit-- int n. 658 00:27:08,854 --> 00:27:11,020 Und obwohl dies nicht der Fall aussehen, als elegant, vielleicht, 659 00:27:11,020 --> 00:27:15,110 und wir nehmen eine zusätzliche Zeile Hier, jetzt ist es im Rahmen überall. 660 00:27:15,110 --> 00:27:15,970 Also lassen Sie uns noch einmal versuchen. 661 00:27:15,970 --> 00:27:19,040 So stellen Sie eine Funktion. 662 00:27:19,040 --> 00:27:19,610 Nett. 663 00:27:19,610 --> 00:27:23,370 Und jetzt, wenn ich, wenn ich keine Funktion ein, geben wir sie negativ 10, 664 00:27:23,370 --> 00:27:27,170 negativ 1, 0, 1, und es funktioniert tatsächlich. 665 00:27:27,170 --> 00:27:28,610 >> So gibt es eine andere Lösung. 666 00:27:28,610 --> 00:27:29,280 Weißt du was? 667 00:27:29,280 --> 00:27:31,230 Was ist, wenn ich wirklich ringen mit diesem? 668 00:27:31,230 --> 00:27:33,140 Ich weiß nicht, wo die n angenommen hat, um zu gehen. 669 00:27:33,140 --> 00:27:33,723 Weißt du was? 670 00:27:33,723 --> 00:27:39,220 Ich werde einfach um es alle Weg an der Spitze meiner Datei hier. 671 00:27:39,220 --> 00:27:42,835 Was würde dies tun, denken Sie? 672 00:27:42,835 --> 00:27:43,335 Ja? 673 00:27:43,335 --> 00:27:44,251 >> ZIELGRUPPE: [unverständlich]. 674 00:27:44,251 --> 00:27:47,964 675 00:27:47,964 --> 00:27:48,630 Sprecher 1: Ja. 676 00:27:48,630 --> 00:27:50,560 Also habe ich es global gemacht, so zu sprechen. 677 00:27:50,560 --> 00:27:54,430 Wenn Sie eine Variable haben, die außerhalb ist alle Ihre Funktionen, die zulässig ist, 678 00:27:54,430 --> 00:27:58,780 und der Code sollte kompilieren und n wird nun zugänglich sein, nicht nur in get 679 00:27:58,780 --> 00:28:02,490 positive int, sondern auch in die main-- ist ein wenig beunruhigend, weil es 680 00:28:02,490 --> 00:28:04,864 bereits ein n im Haupt, um so mehr, auf, dass in nur einem moment-- 681 00:28:04,864 --> 00:28:06,530 aber dies würde als schlechtes Design werden. 682 00:28:06,530 --> 00:28:06,910 Gut. 683 00:28:06,910 --> 00:28:08,570 Wenn Sie haben, um zurückzugreifen so etwas wie, oh, ich werde 684 00:28:08,570 --> 00:28:10,125 nur stellen Sie sie hier, weil der Code scheint zu kompilieren 685 00:28:10,125 --> 00:28:12,180 ist in der Regel nicht die beste Praxis. 686 00:28:12,180 --> 00:28:14,590 Eher Sie wählen möchten der möglichst engen Rahmen 687 00:28:14,590 --> 00:28:18,720 für Ihre Variablen, was bedeuten würde, gehen mit unseren ursprünglichen Entwurf, der 688 00:28:18,720 --> 00:28:19,920 ist hier richtig. 689 00:28:19,920 --> 00:28:24,400 >> Jetzt Nebenbei bemerkt, wenn Sie es haben, eine gleichnamige Variable hier, 690 00:28:24,400 --> 00:28:27,750 die Art und Weise behandeln würde c this-- obwohl dies nicht zu geschehen often-- 691 00:28:27,750 --> 00:28:30,150 ist, dass dies noch völlig in Ordnung hier. 692 00:28:30,150 --> 00:28:35,000 Aber diese Definition von n im Einklang 22 wird die globale einen Schatten. 693 00:28:35,000 --> 00:28:38,190 Also das wird man in Arbeit Haupt und das global 694 00:28:38,190 --> 00:28:41,670 tatsächlich anzuwenden, wenn du bist bekommen positive int Aber mehr dazu 695 00:28:41,670 --> 00:28:43,890 ein anderes Mal, aber nur für diejenigen neugierig. 696 00:28:43,890 --> 00:28:45,970 >> Also kurz gesagt, beheben wir diese hier. 697 00:28:45,970 --> 00:28:49,220 Jetzt lassen Sie uns necken neben zwei anderen Stücken bevor wir an eine letzte Zeile des Codes 698 00:28:49,220 --> 00:28:50,170 in diesem Programm. 699 00:28:50,170 --> 00:28:52,170 Holen Sie sich positive int. 700 00:28:52,170 --> 00:28:54,450 Auf der linken Seite von sein Wort ist das Wort int. 701 00:28:54,450 --> 00:28:56,860 Was soll das bedeuten, denken Sie? 702 00:28:56,860 --> 00:28:58,900 Bisher haben wir vor allem sehen nichtig. 703 00:28:58,900 --> 00:28:59,400 Ja? 704 00:28:59,400 --> 00:29:01,810 >> Publikum: Es ist die Art von Variable, die Sie über fragst. 705 00:29:01,810 --> 00:29:04,550 >> Sprecher 1: Ja, es ist die Art von, lassen Sie mich nicht sagen, variabel, aber die Art der Wert 706 00:29:04,550 --> 00:29:05,990 daß ich frage wieder für. 707 00:29:05,990 --> 00:29:08,070 Und in der Tat, das ist, Hier intuitive, hoffentlich. 708 00:29:08,070 --> 00:29:08,200 Recht? 709 00:29:08,200 --> 00:29:10,250 Wenn Sie ein erhalten möchten positive int, was ist es, Ihnen 710 00:29:10,250 --> 00:29:12,920 wollen, dass die function-- wie unsere Freiwillige aus der vergangenen Woche 711 00:29:12,920 --> 00:29:15,720 an Sie zurückgeben ein Stück Papier mit einem int auf sie? 712 00:29:15,720 --> 00:29:19,190 Und so haben wir festgelegt haben, dass die sogenannte Rückgabetyp dieser Funktion 713 00:29:19,190 --> 00:29:20,450 ist erhalten positive int. 714 00:29:20,450 --> 00:29:22,990 Wenn wir nicht wollen, dass es Rückkehr nichts, Sie sagen, nichtig. 715 00:29:22,990 --> 00:29:25,270 Wenn Sie wollen, dass er zurückkehren ein String, Sie sagen, String. 716 00:29:25,270 --> 00:29:27,310 Wenn Sie wollen, dass er zurückkehren einen Schwimmer, Sie sagen, float. 717 00:29:27,310 --> 00:29:30,440 Aber das einzige, das hier gilt logischerweise, denn ich bin mit get int, 718 00:29:30,440 --> 00:29:34,130 obwohl ich sie darauf zu beschränken positive Werte, ist es, einen int zurück. 719 00:29:34,130 --> 00:29:38,380 >> Also umgekehrt, was bedeutet es, , dass es eine Lücke in Klammern? 720 00:29:38,380 --> 00:29:40,130 Was bedeuten die Klammern in der Regel zu definieren? 721 00:29:40,130 --> 00:29:40,588 Ja? 722 00:29:40,588 --> 00:29:42,880 >> Publikum: Es bedeutet, dass die Funktion nicht wirklich bekommen es. 723 00:29:42,880 --> 00:29:44,650 >> Sprecher 1: Es bedeutet, dass die Funktion nicht wirklich bekommen, was? 724 00:29:44,650 --> 00:29:45,430 >> Publikum: Ein Eingang. 725 00:29:45,430 --> 00:29:46,763 >> Sprecher 1: Ein Eingang, was auch immer. 726 00:29:46,763 --> 00:29:49,870 So in der Tat, wenn Klammern Hier legen Sie fest, Leere, 727 00:29:49,870 --> 00:29:51,650 das bedeutet nur, ich will nicht jede Eingabe. 728 00:29:51,650 --> 00:29:53,269 Ich werde mit dem Problem selbst umzugehen. 729 00:29:53,269 --> 00:29:55,810 Und in der Tat, müssen Sie nicht auf sagen, bekommen positive int nichts. 730 00:29:55,810 --> 00:29:59,630 Du gerade gesagt, erhalten positive int, und dass Funktion erlischt und nicht sein Ding. 731 00:29:59,630 --> 00:30:02,970 >> Aber es ist schon ein kleiner Trick Ich habe die hier spielen die ganze Zeit 732 00:30:02,970 --> 00:30:04,970 um sicherzustellen, dass dieser Code kompiliert. 733 00:30:04,970 --> 00:30:09,620 Beachten Sie, dass int-- positive bekommen int void-- ist in Zeile 27. 734 00:30:09,620 --> 00:30:14,530 Aber aus irgendeinem seltsamen Grund scheinbar es ist auch hier auf der Leitung 16. 735 00:30:14,530 --> 00:30:18,530 Und nur für eine gute Maßnahme werde ich wiederholen Dies also ist es vollkommen identisch. 736 00:30:18,530 --> 00:30:21,640 Und ich gesagt habe Prototyp mit ein wenig einzeiliger Kommentar. 737 00:30:21,640 --> 00:30:28,850 Was passiert, wenn ich löschen Sie das, und Jetzt erneut machen Funktion 1, eingeben. 738 00:30:28,850 --> 00:30:29,350 Whoops. 739 00:30:29,350 --> 00:30:32,527 740 00:30:32,527 --> 00:30:33,110 Warte eine Minute. 741 00:30:33,110 --> 00:30:34,764 Wo ist meine Rechnung? 742 00:30:34,764 --> 00:30:35,263 Nicht wahr? 743 00:30:35,263 --> 00:30:37,969 744 00:30:37,969 --> 00:30:39,620 Stehen zu. 745 00:30:39,620 --> 00:30:41,570 Schließer 1. 746 00:30:41,570 --> 00:30:42,150 Da gehen wir. 747 00:30:42,150 --> 00:30:42,310 OK. 748 00:30:42,310 --> 00:30:43,400 Hatte nicht richtig gespeichert. 749 00:30:43,400 --> 00:30:45,220 Also, ich glaube, es ist ein wenig Bug hier, wo ich bin mir nicht 750 00:30:45,220 --> 00:30:46,636 Sehen Sie auf die Registerkarte Namen im Moment. 751 00:30:46,636 --> 00:30:47,940 Also, was ist denn hier los? 752 00:30:47,940 --> 00:30:52,210 Implicit declaration of function bekommen positive int ist ungültig in C99. 753 00:30:52,210 --> 00:30:53,940 So verwirrend erneut. 754 00:30:53,940 --> 00:30:55,200 Also, was ist dies ein Hinweis auf? 755 00:30:55,200 --> 00:30:57,287 Nun stellt sich heraus, dass C ist ziemlich dumm. 756 00:30:57,287 --> 00:30:59,912 Nun, es ist die Programmierung Sprache oder vielmehr der Compiler. 757 00:30:59,912 --> 00:31:02,940 Er weiß nur, was Sie haben, lehrte es, und es ist nur 758 00:31:02,940 --> 00:31:05,640 gehen, um etwas zu wissen wenn Sie es vor unterrichtet. 759 00:31:05,640 --> 00:31:07,960 Mit anderen Worten, in Haupt im Moment, ich bin 760 00:31:07,960 --> 00:31:10,900 versucht, eine Funktion aufrufen genannt bekommen positive int. 761 00:31:10,900 --> 00:31:14,120 Aber der Compiler nicht geht zu bemerken, dass zu bekommen positive int 762 00:31:14,120 --> 00:31:16,500 vorhanden ist, bis Zeile 26. 763 00:31:16,500 --> 00:31:21,360 Und so, was der Compiler tut, ist nur Fehler, sobald es wird an die Leitung 17, 764 00:31:21,360 --> 00:31:23,700 sagen implizite Deklaration bekommen positive int, die 765 00:31:23,700 --> 00:31:27,740 ist nur eine andere Art zu sagen, ich weiß nicht wissen, was zu bekommen positive int ist leer. 766 00:31:27,740 --> 00:31:31,240 >> Andere Sprachen wie Java und Python und Ruby könnte nach vorne schauen. 767 00:31:31,240 --> 00:31:32,240 C nicht. 768 00:31:32,240 --> 00:31:35,110 Und so ist die Art, wie wir beheben dies ist eine von zwei Arten. 769 00:31:35,110 --> 00:31:40,160 Entweder man, wenn das Problem ist, dass zu bekommen positive int noch nicht gesehen worden, 770 00:31:40,160 --> 00:31:42,150 Nun, lassen Sie mich nur verschieben Sie es an die Spitze. 771 00:31:42,150 --> 00:31:43,650 Das würde das Problem beheben. 772 00:31:43,650 --> 00:31:46,790 Aber im allgemeinen ist es als bessere Technik 773 00:31:46,790 --> 00:31:50,220 auf Ihre Hauptfunktion zumin setzen top, so dass ein Mensch das Lesen Ihres Codes 774 00:31:50,220 --> 00:31:52,710 weiß, was das Programm macht, weil Haupt nicht alle begraben 775 00:31:52,710 --> 00:31:53,960 die Art und Weise an der Unterseite oder in der Mitte. 776 00:31:53,960 --> 00:31:55,130 Es ist an der Spitze. 777 00:31:55,130 --> 00:31:56,410 So dass nicht das Gefühl, ideal. 778 00:31:56,410 --> 00:31:58,326 Und Sie tatsächlich bekommen können in Situationen, in denen 779 00:31:58,326 --> 00:32:00,820 wenn man Funktionsaufrufe eine andere, die ein anderes fordert, 780 00:32:00,820 --> 00:32:04,630 Sie in ein Problem bekommen kann, wenn weder kann über dem anderen zu gehen, logisch. 781 00:32:04,630 --> 00:32:05,920 Es ist einfach nicht möglich. 782 00:32:05,920 --> 00:32:09,290 >> Und so der Weg zur Arbeit um dieses ist nur nehmen 783 00:32:09,290 --> 00:32:13,200 Signatur der Funktion, so zu speak-- die erste Zeile, wo es declared-- 784 00:32:13,200 --> 00:32:16,850 und einfach kopieren, fügen Sie sie am top, aber nicht mit dem lockigen braces-- 785 00:32:16,850 --> 00:32:17,980 nur mit einem Semikolon. 786 00:32:17,980 --> 00:32:20,840 Es ist wie ein kleiner Hinweis von dem, was noch kommen wird. 787 00:32:20,840 --> 00:32:26,630 Und in der Tat, die gesamte Zeit, wenn wir haben Dinge wie Standard io.h gesehen 788 00:32:26,630 --> 00:32:33,040 und cs50.h in ähnlicher Weise in jene dot h-Dateien gibt es andere Prototypen. 789 00:32:33,040 --> 00:32:35,250 Und wir werden sehen, dass es dauerte nicht lange. 790 00:32:35,250 --> 00:32:39,340 >> Also kurz gesagt, wenn Sie ein Programm haben, in einer Datei mit mehreren Funktionen 791 00:32:39,340 --> 00:32:42,300 Neben Haupt Sie fast immer wollen, um sie zu erklären 792 00:32:42,300 --> 00:32:45,360 nur über deren erste Linie, gefolgt von einem Semikolon, 793 00:32:45,360 --> 00:32:48,410 ganz am Anfang der Datei. 794 00:32:48,410 --> 00:32:50,460 Das war viel auf einmal. 795 00:32:50,460 --> 00:32:53,130 Irgendwelche Fragen? 796 00:32:53,130 --> 00:32:53,920 Irgendwelche Fragen? 797 00:32:53,920 --> 00:32:54,530 Gut. 798 00:32:54,530 --> 00:32:59,760 >> Also machen wir weiter, dann so etwas wie Husten. 799 00:32:59,760 --> 00:33:00,260 Oh. 800 00:33:00,260 --> 00:33:00,570 Wie passend. 801 00:33:00,570 --> 00:33:01,220 Gut. 802 00:33:01,220 --> 00:33:02,260 Husten. 803 00:33:02,260 --> 00:33:05,080 Also hier ist ein c Durchführung eines Programms 804 00:33:05,080 --> 00:33:07,560 wir haben neulich in Scratch, die sehr einfach gerade 805 00:33:07,560 --> 00:33:08,691 sagt Husten, Husten, Husten. 806 00:33:08,691 --> 00:33:09,190 Gut. 807 00:33:09,190 --> 00:33:11,136 Und jemand sagte, ein paar Tage her, dass es 808 00:33:11,136 --> 00:33:12,760 ein Weg der Reinigung diesen Code up bereits. 809 00:33:12,760 --> 00:33:12,880 Gut? 810 00:33:12,880 --> 00:33:15,440 Sobald Sie das Kopieren sind und Einfügen wahrscheinlich schlechtes Design. 811 00:33:15,440 --> 00:33:18,725 Mindestens einmal wir vier oder fünf zu erhalten oder 20 Husten, fühlt es schlechte Praxis. 812 00:33:18,725 --> 00:33:19,850 Wir halten gerade kopieren, einfügen. 813 00:33:19,850 --> 00:33:22,213 Was ist die offensichtliche Lösung Reinigungs dieses Programm auf? 814 00:33:22,213 --> 00:33:23,120 >> ZIELGRUPPE: Loop. 815 00:33:23,120 --> 00:33:23,350 >> Sprecher 1: Ja. 816 00:33:23,350 --> 00:33:24,070 So verwenden Sie eine Schleife. 817 00:33:24,070 --> 00:33:27,697 Und wir können eine for-Schleife verwenden, eine Weile, Schleife, eine beliebige Anzahl von Ansätzen. 818 00:33:27,697 --> 00:33:29,780 Und in der Tat, das ist was wir tun in Version hier. 819 00:33:29,780 --> 00:33:32,250 Ich habe es statt umgeschrieben in der Version eines cough.c 820 00:33:32,250 --> 00:33:35,170 nur Husten innerhalb einer for-Schleife. 821 00:33:35,170 --> 00:33:38,240 In Ordnung, aber es gibt eine Gelegenheit jetzt Art von Anfang an 822 00:33:38,240 --> 00:33:41,630 um diese ein wenig mehr wie zu entwerfen die Lektion vor einem Augenblick unterrichtete uns, 823 00:33:41,630 --> 00:33:46,190 welche this-- nehme an, dass ich es um eine Funktion namens Husten zu schaffen, 824 00:33:46,190 --> 00:33:49,730 Betrachten wir für einen Moment was es aussehen würde. 825 00:33:49,730 --> 00:33:51,900 Also, wenn ich etwas will husten, ich muss nur 826 00:33:51,900 --> 00:33:53,800 zur Druck f innerhalb der Funktion zu verwenden. 827 00:33:53,800 --> 00:33:55,030 Und in der Tat bin ich. 828 00:33:55,030 --> 00:33:56,990 Und in der Tat, dies alles Zeit, wann immer Sie sind 829 00:33:56,990 --> 00:33:59,000 Druck etwas zu der Bildschirm ein Programmierer 830 00:33:59,000 --> 00:34:00,610 nennen würde, dass ein Nebeneffekt. 831 00:34:00,610 --> 00:34:02,990 Es ist nicht mir Gabe zurück jemanden ein Wert. 832 00:34:02,990 --> 00:34:06,170 Es hat mich unter eine Aktion das könnte optisch klar sein. 833 00:34:06,170 --> 00:34:10,672 Aber diese Funktion Husten, bedeutet es zurückgeben alles auf der Grundlage seiner ersten Zeile? 834 00:34:10,672 --> 00:34:12,880 Nein, weil der Rückgabetyp ist nichtig, was bedeutet nur, 835 00:34:12,880 --> 00:34:14,250 es ist mir nicht die Übergabe nichts zurück. 836 00:34:14,250 --> 00:34:16,791 Es könnte etwas tun, visuell, aber es hat mich nicht übergeben 837 00:34:16,791 --> 00:34:18,639 Rücken ein Stück Papier, wie letzte Woche. 838 00:34:18,639 --> 00:34:21,310 >> Braucht es jede Eingabe? 839 00:34:21,310 --> 00:34:21,810 Nein. 840 00:34:21,810 --> 00:34:23,134 Und so ist es auch hier nichtig. 841 00:34:23,134 --> 00:34:25,600 So auch das ist Art von Over-Engineering dieses Problem. 842 00:34:25,600 --> 00:34:26,099 Recht? 843 00:34:26,099 --> 00:34:28,820 Ich habe das Programm mehr hergestellt komplexer, Codezeilen, 844 00:34:28,820 --> 00:34:31,889 Ich habe es nicht gemacht irgendwelche funktionaler, aber diese 845 00:34:31,889 --> 00:34:34,210 würde ein Sprungbrett sein, vielleicht für eine breitere 846 00:34:34,210 --> 00:34:36,830 Zusammenhang mit komplizierteren Code. 847 00:34:36,830 --> 00:34:38,150 Aber was ist das? 848 00:34:38,150 --> 00:34:42,050 Was habe ich done-- nur einem Blick auf dies, ohne auf das Kommentar 849 00:34:42,050 --> 00:34:46,076 an der Spitze des file-- was haben Ich grundsätzlich hier mit meinem Husten getan 850 00:34:46,076 --> 00:34:47,409 Implementierung, die anders ist? 851 00:34:47,409 --> 00:34:48,327 Ja, auf der Rückseite? 852 00:34:48,327 --> 00:34:51,384 >> ZIELGRUPPE: Machen Sie es, so dass Sie haben ein Zeichen auszuschalten. 853 00:34:51,384 --> 00:34:52,050 Sprecher 1: Ja. 854 00:34:52,050 --> 00:34:53,270 Also das fühlt sich ganz nett. 855 00:34:53,270 --> 00:34:53,389 Recht? 856 00:34:53,389 --> 00:34:56,600 Es ist wie das Hinzufügen einer Funktion, um Ihre Programm oder Ihre Funktion, in diesem Fall. 857 00:34:56,600 --> 00:34:57,830 Es gibt immer noch nichts. 858 00:34:57,830 --> 00:35:00,538 Es könnte eine visuelle Nebeneffekt haben, denn es ruft Druck f. 859 00:35:00,538 --> 00:35:02,800 Aber jetzt habe ich parametrisiert die Funktion, die 860 00:35:02,800 --> 00:35:06,470 bedeutet, dass ich angegebenen genommen haben Eingang vom Typ int und nennen es n, 861 00:35:06,470 --> 00:35:08,510 aber ich konnte es nennen, was ich will. 862 00:35:08,510 --> 00:35:11,550 In der Tat könnte es nur sein, Mal noch mehr explizit sein. 863 00:35:11,550 --> 00:35:13,310 Und dann konnte ich ändern Sie einfach das hier. 864 00:35:13,310 --> 00:35:16,450 Aber der Punkt ist, dass dieses ist, wie ich Erstellen Sie eine Funktion, die Eingabe nimmt. 865 00:35:16,450 --> 00:35:19,530 Und wenn Sie wieder zu spiegeln durch in einem vielleicht Online- 866 00:35:19,530 --> 00:35:23,000 der zu durchschreiten, die vierte und letzte Husten Beispiel 867 00:35:23,000 --> 00:35:27,150 Sie werden hier feststellen, ich habe generali mein Code further-- Art von abstrahierten 868 00:35:27,150 --> 00:35:27,690 sie weiter. 869 00:35:27,690 --> 00:35:31,390 Wie Husten und Niesen, sind beide etwa aus wie etwas sagen oder machen 870 00:35:31,390 --> 00:35:32,330 eine Art von Sound. 871 00:35:32,330 --> 00:35:34,725 Speichern wäre der Scratch entsprechenden Blocks. 872 00:35:34,725 --> 00:35:37,350 Und so, was ich in dieser Version haben, die wir nur einen Blick auf, 873 00:35:37,350 --> 00:35:43,170 ist Husten ist wie zu sagen, [COUGH], husten, und mittlerweile ist Niesen 874 00:35:43,170 --> 00:35:44,570 wie wenn man sagt, [Achoo]. 875 00:35:44,570 --> 00:35:46,900 Und so habe ich generali die Umsetzung dieser 876 00:35:46,900 --> 00:35:48,970 mittlerweile Umsetzung Diese generische Funktion, 877 00:35:48,970 --> 00:35:51,490 sagen, was interessant ist, für heutige Zwecke 878 00:35:51,490 --> 00:35:54,300 nur, weil es immer noch hat keinen Rückgabetyp. 879 00:35:54,300 --> 00:35:56,398 Aber wie viele Eingänge hat es? 880 00:35:56,398 --> 00:35:56,981 ZIELGRUPPE: Zwei. 881 00:35:56,981 --> 00:35:57,430 Sprecher 1: Zwei. 882 00:35:57,430 --> 00:35:59,263 Und so, wenn Sie wollen nehmen Sie in zwei Argumente, 883 00:35:59,263 --> 00:36:00,710 nur trennen Sie diese durch ein Komma. 884 00:36:00,710 --> 00:36:03,110 Und wenn Sie dann möchten rufen Sie diese Funktion, 885 00:36:03,110 --> 00:36:05,800 feststellen, dass Sie nur rufen Sie sagen, zitat, unquote, 886 00:36:05,800 --> 00:36:09,090 für das erste Argument, gemeinsame n, für das zweite Argument. 887 00:36:09,090 --> 00:36:12,130 Also noch einmal, nur haben wir jetzt die Bausteine, damit wir tatsächlich 888 00:36:12,130 --> 00:36:15,686 implementieren einige unserer eigenen Funktionen. 889 00:36:15,686 --> 00:36:16,570 Gut. 890 00:36:16,570 --> 00:36:19,690 Irgendwelche Fragen zu diesen? 891 00:36:19,690 --> 00:36:22,400 >> So, jetzt wollen wir abziehen eine Schicht, wenn ja. 892 00:36:22,400 --> 00:36:24,840 Und das Ziel letztendlich ist nächste Woche Problem Set 893 00:36:24,840 --> 00:36:27,710 wird am cryptogrophy-- sein die Kunst des Scrambling-Informationen. 894 00:36:27,710 --> 00:36:30,640 Und zwar die Informations haben Sie ver- oder entschlüsseln 895 00:36:30,640 --> 00:36:31,605 wird zu Text sein. 896 00:36:31,605 --> 00:36:33,980 Und so diese Art von Einladungskarten die Frage, wie heute auch, 897 00:36:33,980 --> 00:36:38,480 was sich unter der Haube mit Text über ASCII von Woche null, 898 00:36:38,480 --> 00:36:40,730 Und wie können wir tatsächlich beginnen, es zu manipulieren? 899 00:36:40,730 --> 00:36:43,070 So, hier ist Zamyla Name. 900 00:36:43,070 --> 00:36:47,380 Und in Text, der eingegeben werden kann in wie der String-Funktion. 901 00:36:47,380 --> 00:36:52,540 Und ab jetzt, wenn Sie ein zu sehen String wie this-- Z-A-M-Y-L-A-- 902 00:36:52,540 --> 00:36:56,550 anfangen, der es, als ob jeder dieser Zeichen ist in einer Schachtel mit ihren 903 00:36:56,550 --> 00:36:57,050 besitzen. 904 00:36:57,050 --> 00:36:59,460 Und in der Tat, in einer Woche oder so ist Zeit, wobei jeder dieser Kästen 905 00:36:59,460 --> 00:37:04,280 wird sehr spezifisch darstellen ein Block von memory-- einen Bissen von Speicher. 906 00:37:04,280 --> 00:37:07,050 Also jeder dieser Briefe, Letztlich werden 8 Bits darzustellen. 907 00:37:07,050 --> 00:37:10,560 Und wir tatsächlich sehen, was los ist auf unter der Haube in meinem Computer. 908 00:37:10,560 --> 00:37:13,440 >> Aber es genügt nicht nur um zu sehen Zamyla 909 00:37:13,440 --> 00:37:17,520 durch diese Linse, wobei jede der diese Briefe in seiner eigenen Box. 910 00:37:17,520 --> 00:37:22,697 Und schön genug, in C können wir Zugriff auf jede dieser Boxen direkt. 911 00:37:22,697 --> 00:37:25,530 Also, wenn Sie, um den ersten zu bekommen möchten Buchstaben ihres Namens, super einfach in C. 912 00:37:25,530 --> 00:37:28,410 Wenn Sie die letzte erhalten möchten Brief, super einfach und 913 00:37:28,410 --> 00:37:30,240 mit einem Stück neue Syntax. 914 00:37:30,240 --> 00:37:36,250 >> Also werde ich weiter in die CS50 gehen IDE und öffnen Sie die Zeichenfolge Nullpunkt C. 915 00:37:36,250 --> 00:37:40,270 Und in diesem Beispiel hier gibt es ein paar neue Dinge geht. 916 00:37:40,270 --> 00:37:44,360 Also zuerst in Zeile 19, haben wir sehen diese before-- get String. 917 00:37:44,360 --> 00:37:49,840 Also nur als eine schnelle Plausibilitätsprüfung, wenn jemand verbal bieten bis 918 00:37:49,840 --> 00:37:52,662 ein Laie Erklärung was los ist in Zeile 19. 919 00:37:52,662 --> 00:37:55,370 Wie fast übersetzen diese in Englisch, dass eine Mitbewohner nicht CS50 920 00:37:55,370 --> 00:37:56,416 vielleicht zu verstehen. 921 00:37:56,416 --> 00:37:56,916 Ja. 922 00:37:56,916 --> 00:37:59,749 >> ZIELGRUPPE: Haben Sie die Eingabe des Benutzers ein String und speichern sie in einer Variablen s. 923 00:37:59,749 --> 00:38:01,934 924 00:38:01,934 --> 00:38:02,600 Sprecher 1: Gut. 925 00:38:02,600 --> 00:38:05,579 Haben die Benutzereingabe einen String und speichern Sie es in einer Variablen s. 926 00:38:05,579 --> 00:38:06,120 Das ist großartig. 927 00:38:06,120 --> 00:38:08,090 Usw. der rechten Seite rufen wir get String. 928 00:38:08,090 --> 00:38:10,340 Das gibt einen Wert das hat nicht zugewiesen werden 929 00:38:10,340 --> 00:38:14,230 von der rechten Seite zur linken Seite in eine Variable namens s, das ist 930 00:38:14,230 --> 00:38:15,950 entwickelt, um eine Zeichenfolge zu speichern. 931 00:38:15,950 --> 00:38:16,800 Genau. 932 00:38:16,800 --> 00:38:20,000 >> So, jetzt die Linie 22, pro der Kommentar in Zeile 21, 933 00:38:20,000 --> 00:38:22,780 offensichtlich druckt die Zeichenfolge ein Zeichen pro Zeile. 934 00:38:22,780 --> 00:38:23,740 Aber wie? 935 00:38:23,740 --> 00:38:27,040 Also zunächst einmal, initialisieren wir I 0. 936 00:38:27,040 --> 00:38:31,061 Und wie können wir dann zu bekommen, das Ende der Zamyla Name? 937 00:38:31,061 --> 00:38:32,810 Nun, am Ende des Zamyla Name, konnte ich 938 00:38:32,810 --> 00:38:38,151 manuell in das letzte Zeichen eingeben ihr Name irgendwie, oder die Anzahl von ihr. 939 00:38:38,151 --> 00:38:38,650 Recht? 940 00:38:38,650 --> 00:38:43,500 Wenn wir zurück hier-- Z-A-M-L-- Y-L-A-- so konnte ich geben. 941 00:38:43,500 --> 00:38:47,340 Was ist der Index der Zamyla letzter Brief? 942 00:38:47,340 --> 00:38:52,517 Wenn dies 0-- sprechen wie a programmer-- 0, 1, 2, 3, 4, 5, 943 00:38:52,517 --> 00:38:56,570 Ich heard-- so in der Tat, den letzten Buchstaben in Zamyla Name ist der sechste, 944 00:38:56,570 --> 00:38:58,890 aber wenn wir zählen von 0, es wird Nummer 5 zu sein. 945 00:38:58,890 --> 00:39:01,320 So sollte man das im Hinterkopf hier. 946 00:39:01,320 --> 00:39:04,929 >> Es stellt sich heraus gibt es eine Funktion in C genannt strlen und wieder in den Tag 947 00:39:04,929 --> 00:39:06,720 und bis heute immer noch, eine Menge von Programmierern 948 00:39:06,720 --> 00:39:09,524 wählen, um Namen für die Synchronisierung ihrer Funktionen, wie die Worte klingen 949 00:39:09,524 --> 00:39:10,440 sie versuchen zu sagen. 950 00:39:10,440 --> 00:39:12,590 So strlen ist String-Länge. 951 00:39:12,590 --> 00:39:18,168 Und so was würde String Länge S zurück, wenn Zamyla ist der Eingang? 952 00:39:18,168 --> 00:39:19,569 >> Publikum: Fünf. 953 00:39:19,569 --> 00:39:22,090 >> Sprecher 1: Z-A-M-Y-L. Six. 954 00:39:22,090 --> 00:39:22,590 Recht? 955 00:39:22,590 --> 00:39:23,940 Was ist die Länge der Zamyla Name? 956 00:39:23,940 --> 00:39:24,440 Recht? 957 00:39:24,440 --> 00:39:26,240 Und in Wirklichkeit sechs Buchstaben. 958 00:39:26,240 --> 00:39:26,740 Recht? 959 00:39:26,740 --> 00:39:28,940 Und was bedeutet das für unsere Schleife das? 960 00:39:28,940 --> 00:39:32,130 Wir werden aus gehen 0 bis zu sechs, die 961 00:39:32,130 --> 00:39:33,650 wird uns fünf Iterationen zu geben. 962 00:39:33,650 --> 00:39:34,890 Was machen wir bei jeder Iteration zu tun? 963 00:39:34,890 --> 00:39:36,870 Nun, Prozent C, jemand erriet den anderen Tag, 964 00:39:36,870 --> 00:39:38,710 bedeutet einen Platzhalter für was? 965 00:39:38,710 --> 00:39:39,335 >> ZIELGRUPPE: Char. 966 00:39:39,335 --> 00:39:40,293 Sprecher 1: Nur ein char. 967 00:39:40,293 --> 00:39:42,877 So dass eine einzelne character-- nicht mehrere Zeichen wie eine Saite. 968 00:39:42,877 --> 00:39:45,251 Und dann ist hier die neue Linie dass wir haben Ausdrucken. 969 00:39:45,251 --> 00:39:46,580 Und dann ist hier die neue Syntax. 970 00:39:46,580 --> 00:39:51,130 Wenn Sie zum Ausdrucken der i-ten wollen Zeichen im String S, sozusagen 971 00:39:51,130 --> 00:39:54,060 Sie können einfach sagen, dass die Name der String S, 972 00:39:54,060 --> 00:39:58,230 und öffnen Sie dann eckige Klammer, und dann geschlossen eckige Klammer, mit einem i 973 00:39:58,230 --> 00:39:58,780 die Mitte. 974 00:39:58,780 --> 00:40:01,430 Und es ist ganz nett, dass es sieht wie ein Quadrat 975 00:40:01,430 --> 00:40:06,210 genau wie die Plätze, in denen die Zamyla Zeichen existieren auf diesem Bild gibt. 976 00:40:06,210 --> 00:40:09,970 >> Also, wenn ich tatsächlich laufen diese Jetzt wollen wir sehen, was passiert. 977 00:40:09,970 --> 00:40:15,190 Machen String 0 slash dot String 0, und dann bin ich 978 00:40:15,190 --> 00:40:16,720 werde in Zamyla Namen eingeben. 979 00:40:16,720 --> 00:40:19,428 Es gibt keine Eingabeaufforderung, weil ich nicht verwenden Druck f, aber das ist in Ordnung. 980 00:40:19,428 --> 00:40:20,660 Ich weiß genau, was zu tun ist. 981 00:40:20,660 --> 00:40:23,240 Und in der Tat, gibt es aus Zamyla Namen, eine pro Zeile. 982 00:40:23,240 --> 00:40:25,760 >> Lassen Sie uns nun ein wenig leichtsinnig. 983 00:40:25,760 --> 00:40:28,461 Nehmen wir an, ich wusste nicht, strlen zu und ich dachte, 984 00:40:28,461 --> 00:40:31,460 Alles in Ordnung, niemand wird ein Baby haben nennen größer als wie 50 Zeichen. 985 00:40:31,460 --> 00:40:36,360 Fahren wir fort und kompilieren Sie diese und führen Sie es und geben Sie dann in Zamyla 986 00:40:36,360 --> 00:40:37,160 erneut. 987 00:40:37,160 --> 00:40:40,850 Logisch, was dass Programm werde versuchen, zu drucken? 988 00:40:40,850 --> 00:40:49,545 Z-A-M-Y-L-A dann wie 45 unbekannten Byte Speicherplatz. 989 00:40:49,545 --> 00:40:51,670 Und in der Tat, wir kommen wieder zu dieser Idee des Speichers. 990 00:40:51,670 --> 00:40:54,180 Aber nur logisch, wenn Zamyla Name ist diese lange, 991 00:40:54,180 --> 00:40:56,450 nach dem Bild hier, was wir sagen 992 00:40:56,450 --> 00:40:59,810 wird halten Druck, halten Druck, halten Drucken, halten Druck, halten Druck, 993 00:40:59,810 --> 00:41:03,781 den ganzen Weg bis zum 50. Charakter, die wer weiß, was passieren wird. 994 00:41:03,781 --> 00:41:05,030 Lassen Sie uns also tatsächlich einen Blick. 995 00:41:05,030 --> 00:41:06,720 Lassen Sie uns geben Zamyla. 996 00:41:06,720 --> 00:41:07,250 Interessante. 997 00:41:07,250 --> 00:41:08,190 Wir hatten Glück. 998 00:41:08,190 --> 00:41:09,700 Nur eine ganze Reihe von Leerraum. 999 00:41:09,700 --> 00:41:09,930 Oh. 1000 00:41:09,930 --> 00:41:11,120 Es gibt eine flippige Charakter. 1001 00:41:11,120 --> 00:41:14,577 Es sieht aus wie eine Art von seltsamen Frage Markieren Sie es, aber es gibt Zamyla Name. 1002 00:41:14,577 --> 00:41:15,660 Lasst uns wirklich leichtsinnig. 1003 00:41:15,660 --> 00:41:20,000 Wie wäre es mit uns ausdrucken 500 Blöcke ins Unbekannte? 1004 00:41:20,000 --> 00:41:24,380 Lassen Sie uns gehen Sie vor und machen diese als auch und dann erneut ausführen. 1005 00:41:24,380 --> 00:41:27,980 Und lassen Sie Vollbild, weil wir brauchen, um mehr Platz zu sehen. 1006 00:41:27,980 --> 00:41:30,460 Zamyla. 1007 00:41:30,460 --> 00:41:31,830 Bekam wieder Glück. 1008 00:41:31,830 --> 00:41:33,070 >> Trauen wir mehr leichtsinnig? 1009 00:41:33,070 --> 00:41:36,070 Lassen Sie uns mehr leichtsinnig. 1010 00:41:36,070 --> 00:41:39,350 50.000 Zeichen. 1011 00:41:39,350 --> 00:41:41,390 Das ist wahrlich keine gute Idee. 1012 00:41:41,390 --> 00:41:41,890 Gut. 1013 00:41:41,890 --> 00:41:42,990 Machen String 0. 1014 00:41:42,990 --> 00:41:44,720 Dies wird unser letztes Demo sein. 1015 00:41:44,720 --> 00:41:47,261 Zamyla. 1016 00:41:47,261 --> 00:41:48,632 Ugh. 1017 00:41:48,632 --> 00:41:50,010 Ugh. 1018 00:41:50,010 --> 00:41:50,680 OK. 1019 00:41:50,680 --> 00:41:54,407 Also mein Gedächtnis ist wirklich leer ist gerade jetzt, Das ist eigentlich ganz praktisch. 1020 00:41:54,407 --> 00:41:55,990 Was ich versuche, alles in Ordnung zu bekommen zu--. 1021 00:41:55,990 --> 00:41:57,614 Und jetzt bin ich gerade dabei rücksichtslos zu bekommen. 1022 00:41:57,614 --> 00:41:58,570 500.000. 1023 00:41:58,570 --> 00:42:03,860 Make-- wir Vollbild-it. 1024 00:42:03,860 --> 00:42:04,990 Enter. 1025 00:42:04,990 --> 00:42:05,490 Zamyla. 1026 00:42:05,490 --> 00:42:12,050 1027 00:42:12,050 --> 00:42:13,390 Da gehen wir. 1028 00:42:13,390 --> 00:42:15,610 Ich habe keine Ahnung, was das ist, aber es klingt schlecht. 1029 00:42:15,610 --> 00:42:16,110 Gut. 1030 00:42:16,110 --> 00:42:20,322 Und in der Tat, bald, wenn Sie unter bist die wenigen Glücklichen in der Bürozeiten 1031 00:42:20,322 --> 00:42:22,780 und bei der Problem eingestellten Sie könnte sehr gut diese Begegnung. 1032 00:42:22,780 --> 00:42:25,490 Segmentation fault tatsächlich haben eine gut definierte Bedeutung. 1033 00:42:25,490 --> 00:42:28,450 Es bedeutet, irgendeine Art von Fehler in einem Segment des Speichers. 1034 00:42:28,450 --> 00:42:30,490 Und in juristischer Hinsicht, es bedeutet, dass wir berührt 1035 00:42:30,490 --> 00:42:34,780 memory-- wir in meinem Computer verwendet RAM dass ich nicht den Zugang zu haben. 1036 00:42:34,780 --> 00:42:37,050 Und das ist, was sowohl leistungsstark und auch gefährlich 1037 00:42:37,050 --> 00:42:39,910 über C ist, dass Sie tatsächlich haben ungehinderten Zugang 1038 00:42:39,910 --> 00:42:45,910 auf die Gesamtheit des Arbeitsspeichers Ihres Programms oder Bytes oder RAM, genauer. 1039 00:42:45,910 --> 00:42:49,510 >> Also auch wenn Zamyla Name nur sechs Zeichen lang, 1040 00:42:49,510 --> 00:42:51,450 Ich kann immer noch irgendwohin zu gehen im Speicher ich will. 1041 00:42:51,450 --> 00:42:53,491 Und nebenbei, wenn Sie schon immer einige Artikel lesen 1042 00:42:53,491 --> 00:42:55,610 im Laufe der Jahre über einige Server oder einem Programm 1043 00:42:55,610 --> 00:42:58,654 Anfang gesprungen oder gehackt, das ist ausgenutzt etwas 1044 00:42:58,654 --> 00:43:00,820 rief ein Pufferüberlauf zu nutzen, dass wir tatsächlich 1045 00:43:00,820 --> 00:43:04,970 reden über in ein paar Wochen, das ist, in der Regel unter Bezugnahme auf irgendwie austricksen 1046 00:43:04,970 --> 00:43:09,090 ein Computer in gut geht über die Grenzen der Speicher 1047 00:43:09,090 --> 00:43:11,410 dass es haben sollte, und etwas saftige finden 1048 00:43:11,410 --> 00:43:13,530 dadurch memory-- ein Kennwort vielleicht ein Weg 1049 00:43:13,530 --> 00:43:16,990 Umgehung einige Seriennummer zu überprüfen, oder einfach nur in der Regel in der Lage 1050 00:43:16,990 --> 00:43:20,360 zu überlisten Sie den Computer ausgeführt wird Code, der nicht beabsichtigt war. 1051 00:43:20,360 --> 00:43:22,360 Aber zurück gekommen, um Realität für einen Moment 1052 00:43:22,360 --> 00:43:24,550 wobei dieses Programm mit strlen umgesetzt, 1053 00:43:24,550 --> 00:43:26,110 und stellen eine Sache hier oben. 1054 00:43:26,110 --> 00:43:30,030 Was ist neu unter diesen Top drei Linien? 1055 00:43:30,030 --> 00:43:30,910 >> So String dot h. 1056 00:43:30,910 --> 00:43:35,490 Es stellt sich heraus gibt es diese Bibliothek mit dem Namen String-Punkt H, oder der String-Bibliothek, 1057 00:43:35,490 --> 00:43:38,490 deren Header-Datei, so zu sprechen, ist String dot h, die mir 1058 00:43:38,490 --> 00:43:40,860 Zugang zu dieser strlen-Funktion. 1059 00:43:40,860 --> 00:43:43,841 Wenn ich weglassen, dass ist der Compiler gehen, um mich in irgendeiner Form zu schreien. 1060 00:43:43,841 --> 00:43:44,590 Aber wissen Sie was? 1061 00:43:44,590 --> 00:43:46,090 Nun lasst uns wirklich nuanciert. 1062 00:43:46,090 --> 00:43:50,820 In Zeile 22, gibt es etwas Art von inefficient-- schlecht konzipiert, 1063 00:43:50,820 --> 00:43:53,990 arguably-- über diese Codezeile. 1064 00:43:53,990 --> 00:43:56,280 Denken Sie zurück an, wie for-Schleife durchgeführt werden 1065 00:43:56,280 --> 00:44:00,140 und welche Schritte noch einmal passieren, und immer again-- der Initialisierung 1066 00:44:00,140 --> 00:44:04,110 der Zustand, den Code, der wird ausgeführt, dann die Schrittweite 1067 00:44:04,110 --> 00:44:07,880 oder die Änderung, dann ist die Bedingung, dann wird der Code, dann ist die Änderung, dann 1068 00:44:07,880 --> 00:44:11,280 die Bedingung, dann wird der Code, wird die Änderung, und so weiter. 1069 00:44:11,280 --> 00:44:15,320 Also, was ein wenig sein könnte Besorgnis erregend oder schlecht hier getan? 1070 00:44:15,320 --> 00:44:16,387 Ja, in blau. 1071 00:44:16,387 --> 00:44:18,220 ZIELGRUPPE: strlen ist genannt viele, viele Male. 1072 00:44:18,220 --> 00:44:20,654 1073 00:44:20,654 --> 00:44:21,320 Sprecher 1: Ja. 1074 00:44:21,320 --> 00:44:23,700 So nennt man strlen viele Male, aber was ist 1075 00:44:23,700 --> 00:44:27,113 die Länge der Zamyla Namen der erstmals die Schleife ausgeführt? 1076 00:44:27,113 --> 00:44:27,860 >> ZIELGRUPPE: Sechs. 1077 00:44:27,860 --> 00:44:28,110 >> Sprecher 1: Sechs. 1078 00:44:28,110 --> 00:44:30,976 Nun, was ist die Länge ihres Namens das zweite Mal der Code ausführt? 1079 00:44:30,976 --> 00:44:31,432 >> ZIELGRUPPE: Sechs. 1080 00:44:31,432 --> 00:44:31,890 >> Sprecher 1: In Ordnung. 1081 00:44:31,890 --> 00:44:32,720 Es ist immer noch sechs. 1082 00:44:32,720 --> 00:44:33,220 Recht? 1083 00:44:33,220 --> 00:44:35,260 Zarla Name hat nicht verändert, auch wenn ich bin auf der Suche 1084 00:44:35,260 --> 00:44:38,240 nur ein Teil der Buchstaben in ihren Namen. 1085 00:44:38,240 --> 00:44:41,349 Und so ist die Tatsache, dass ich effektiv diese Frage, was ist 1086 00:44:41,349 --> 00:44:44,640 die Länge der Zamyla, was ist die Länge von Zamyla, was ist die Länge der Zamyla, 1087 00:44:44,640 --> 00:44:47,990 sechs verschiedene Zeiten oder sieben selbst ist einfach nur dumm, 1088 00:44:47,990 --> 00:44:50,390 denn das ist unveränderlich, dass Antwort. 1089 00:44:50,390 --> 00:44:53,550 Und so, was ich konnte tatsächlich zu tun ist, this-- in einem String 1090 00:44:53,550 --> 00:44:55,680 Ich habe ein wenig besser Version finden Sie hier. 1091 00:44:55,680 --> 00:45:00,110 Sind-- whoops-- String zwei Ich habe eine geringfügig bessere Version, wobei 1092 00:45:00,110 --> 00:45:05,010 Ich this-- zu tun und nicht nur Initialisierung i auf 0, I auch mit einem Komma 1093 00:45:05,010 --> 00:45:07,990 deklarieren Sie eine zweite Variable n-- ich nicht haben, um int noch einmal sagen. 1094 00:45:07,990 --> 00:45:09,220 Ich sollte nicht, in der Tat. 1095 00:45:09,220 --> 00:45:10,380 Aber ich sage n. 1096 00:45:10,380 --> 00:45:13,610 Und dann zu initialisieren I n den die Strlen von n, so dass nun 1097 00:45:13,610 --> 00:45:17,110 wie oft hat strlen erhalten insgesamt ausgeführt? 1098 00:45:17,110 --> 00:45:17,610 Nur einmal. 1099 00:45:17,610 --> 00:45:20,257 Und dies ist, was wir meinen früher über besseres Design. 1100 00:45:20,257 --> 00:45:23,090 Eigentlich, wenn Ihr Code korrekt ist, zurückgeht und durch das Denken, 1101 00:45:23,090 --> 00:45:26,820 ich bin mit so wenig Speicher oder als einige Sekunden 1102 00:45:26,820 --> 00:45:30,409 oder Millisekunden Rechnerzeit als möglich, irgendein Problem zu implementieren? 1103 00:45:30,409 --> 00:45:32,200 Und ich werde, um zu blättern und nur erwähnen, 1104 00:45:32,200 --> 00:45:34,283 dass es diese Erwähnung von null in dieser Version 1105 00:45:34,283 --> 00:45:36,390 aber wir werden darauf zurückkommen, bevor lang. 1106 00:45:36,390 --> 00:45:41,010 Denn jetzt, lassen Sie uns einen Blick an, wohin das führt uns zu führen. 1107 00:45:41,010 --> 00:45:44,110 Eines stellt sich heraus, dass jetzt, wo wir die Möglichkeit haben, 1108 00:45:44,110 --> 00:45:46,860 bei einzelnen Zeichen suchen, können wir etwas nutzen 1109 00:45:46,860 --> 00:45:50,807 von Woche 0, die sehr obskur war und Art uninteressant zu der Zeit. 1110 00:45:50,807 --> 00:45:53,390 Aber jetzt, und insbesondere, wenn wir bekommen, um in einer Woche Kryptographie, 1111 00:45:53,390 --> 00:45:54,820 es wird ziemlich mächtig. 1112 00:45:54,820 --> 00:45:57,450 Es stellt sich heraus, dass bei einigen Daten types-- ints und schwimmt 1113 00:45:57,450 --> 00:46:00,300 und Zeichen und Zeichenketten und andere things-- einige von ihnen 1114 00:46:00,300 --> 00:46:02,800 kann sehr leicht in eine andere umgewandelt werden. 1115 00:46:02,800 --> 00:46:05,840 >> Zum Beispiel, wenn wir sprachen über ASCII einiger Zeit ago-- hier 1116 00:46:05,840 --> 00:46:07,796 die Großbuchstaben A durch M, Punkt, Punkt, 1117 00:46:07,796 --> 00:46:12,530 dot-- wir gesagt, dass es ein Mapping zwischen diesen Buchstaben und Zahlen. 1118 00:46:12,530 --> 00:46:14,970 Und in der Tat gilt, für Kleinbuchstaben als auch. 1119 00:46:14,970 --> 00:46:17,470 Kleinbuchstaben a ist 97, der Hauptstadt eine ist 65. 1120 00:46:17,470 --> 00:46:20,860 Und es gibt eine Zahl in ASCII, Das ist gerade diese Zuordnung 1121 00:46:20,860 --> 00:46:23,240 System für all die anderen Buchstaben. 1122 00:46:23,240 --> 00:46:25,030 Also, was bedeutet das? 1123 00:46:25,030 --> 00:46:28,390 Nun, ich werde weiter und offener gehen up echte schnell etwas namens 1124 00:46:28,390 --> 00:46:31,240 ASCII 0, von denen die meisten Kommentare. 1125 00:46:31,240 --> 00:46:33,860 Und wieder Online können Sie immer Blick durch die Kommentare. 1126 00:46:33,860 --> 00:46:36,180 >> Und werfen Sie einen Blick, was dies tun wird. 1127 00:46:36,180 --> 00:46:38,410 Also ist es eine Hauptaufgabe hat. 1128 00:46:38,410 --> 00:46:41,490 Ich habe hart codiert die Zahlen gerade für Jetzt, da ich weiß, was ich tue. 1129 00:46:41,490 --> 00:46:42,950 Ich weiß, was ich will, hier zu sehen. 1130 00:46:42,950 --> 00:46:45,220 Und ich habe ich auf 65 initialisiert. 1131 00:46:45,220 --> 00:46:48,490 Und ich zähle bis durch 26 Briefe insgesamt. 1132 00:46:48,490 --> 00:46:52,990 Und was soll ich Drucken eine Zeile zu einem Zeitpunkt, 1133 00:46:52,990 --> 00:46:54,930 wenn Sie interpretieren kann Dieses markierte Zeile? 1134 00:46:54,930 --> 00:46:55,970 Was wird gedruckt? 1135 00:46:55,970 --> 00:46:56,797 Ja. 1136 00:46:56,797 --> 00:46:57,264 >> ZIELGRUPPE: Wirst um den Brief zu drucken, 1137 00:46:57,264 --> 00:46:59,805 entspricht der Karte der Brief-Wert und Integer-Wert? 1138 00:46:59,805 --> 00:47:01,199 1139 00:47:01,199 --> 00:47:01,990 Sprecher 1: Genau. 1140 00:47:01,990 --> 00:47:04,740 Ich werde den Brief ausdrucken entsprechend dem ganzzahligen Wert, 1141 00:47:04,740 --> 00:47:06,131 und umgekehrt, wie folgt. 1142 00:47:06,131 --> 00:47:08,880 Gut, das jemand vorher gesagt, ist nur ein Platzhalter für einen char. 1143 00:47:08,880 --> 00:47:09,490 Es ist immer noch. 1144 00:47:09,490 --> 00:47:12,280 Dies ist natürlich ein Platzhalter für eine int-- nicht eine neue Linie. 1145 00:47:12,280 --> 00:47:18,140 Und nun feststellen, meine erste Wert, Ich Einstecken für diesen Platzhalter 1146 00:47:18,140 --> 00:47:22,320 ist nicht nur I. bin ich sagen, in Klammern, char I, 1147 00:47:22,320 --> 00:47:26,700 die der in Klammern char sagen dem Compiler, behandle ich 1148 00:47:26,700 --> 00:47:28,490 nicht so wie es ist, die eine Reihe ist. 1149 00:47:28,490 --> 00:47:30,490 Behandeln Sie es als eine tatsächliche Charakter. 1150 00:47:30,490 --> 00:47:34,490 Während der zweite Wert ich Einstecken in-- I-- sollte nur eine Zahl sein. 1151 00:47:34,490 --> 00:47:38,140 >> Also, wenn ich dieses program-- kompilieren so ist dies machen ASCII 0, 1152 00:47:38,140 --> 00:47:41,720 dot Strich ASCII 0-- bekomme ich nur dieses handliche kleine Diagramm, 1153 00:47:41,720 --> 00:47:44,950 zeigt mir alle möglichen Mappings, ohne daran zu denken 1154 00:47:44,950 --> 00:47:46,450 durch oder es heraus auf meinem eigenen. 1155 00:47:46,450 --> 00:47:48,783 Und ich bin auch Ausdruck, beachten Sie die Kleinbuchstaben, 1156 00:47:48,783 --> 00:47:51,410 weil ein paar Zeilen später, habe ich auch ausdrucken diese Zuordnung 1157 00:47:51,410 --> 00:47:53,737 als auch, was gerade ist sagen, dass wenn Sie verstehen, 1158 00:47:53,737 --> 00:47:55,570 was los ist unter die Haube, können Sie 1159 00:47:55,570 --> 00:47:57,111 konvertiert automatisch hin und her. 1160 00:47:57,111 --> 00:48:00,160 Und in der Tat, wenn jemand von euch immer tat dies in der Grundschule 1161 00:48:00,160 --> 00:48:03,490 oder über jemanden gehört, mythisch, die eine Note 1162 00:48:03,490 --> 00:48:05,620 und der Übergabe an seinen oder ihren Freund in der Klasse, 1163 00:48:05,620 --> 00:48:08,300 aber Sie kletterte die Briefe wie A wird B, 1164 00:48:08,300 --> 00:48:11,240 und B wird C oder etwas komplizierter als das, na ja, 1165 00:48:11,240 --> 00:48:13,410 wie würden Sie gehen Umsetzung, dass als Kind? 1166 00:48:13,410 --> 00:48:16,340 Nun, Sie nur irgendwie wissen, A wird B wird B C, 1167 00:48:16,340 --> 00:48:19,700 aber mathematisch, was das Kind tut? 1168 00:48:19,700 --> 00:48:22,050 Was haben Sie zusätzlich zu jedem Buchstaben? 1169 00:48:22,050 --> 00:48:23,340 Effektiv 1. 1170 00:48:23,340 --> 00:48:27,740 >> Also, wenn Sie von A nach B zu ändern, das ist, Art wie das Ändern 65-66, 1171 00:48:27,740 --> 00:48:29,590 die mathematisch bedeutet, fügen Sie einfach 1. 1172 00:48:29,590 --> 00:48:33,300 Und so, wenn Sie zu implementieren waren dass etwas irreführend Technik 1173 00:48:33,300 --> 00:48:36,380 Ihre Lehrer in Code, können Sie könnte genau das tun Sie 1174 00:48:36,380 --> 00:48:38,552 durch Hinzufügen eines einzelnen Buchstaben zusammen. 1175 00:48:38,552 --> 00:48:40,260 So dauerte nicht lange, wir sind gehen, um, wie wir sehen, 1176 00:48:40,260 --> 00:48:43,300 können die Vorteile, dass tatsächlich zu nehmen wirklich Gerangel und unscramble 1177 00:48:43,300 --> 00:48:43,991 Informationen. 1178 00:48:43,991 --> 00:48:47,240 In der Zwischenzeit wissen, dass wir begonnen haben, um ein paar weitere Bibliotheken vorstellen 1179 00:48:47,240 --> 00:48:48,990 hier-- die Zeichenfolge ein heute. 1180 00:48:48,990 --> 00:48:51,180 Und eine sehr hilfreiche Website hoffentlich findest Du 1181 00:48:51,180 --> 00:48:55,010 heißt reference.cs50.net, die das Lehrpersonal zusammengestellt haben, 1182 00:48:55,010 --> 00:48:57,510 so dass, wenn Sie wollen schauen, wie strlen Werke, 1183 00:48:57,510 --> 00:48:59,300 können Sie mit der Eingabe beginnen den Namen der Funktion, 1184 00:48:59,300 --> 00:49:02,890 Klicken Sie dort strlen, und dann eine weniger komfortable Erklärung 1185 00:49:02,890 --> 00:49:03,700 wird angezeigt. 1186 00:49:03,700 --> 00:49:06,880 Oder wenn Sie die offizielle möchten Linux-basierte Erklärung, 1187 00:49:06,880 --> 00:49:08,945 Sie bequemer klicken oben rechts, und es 1188 00:49:08,945 --> 00:49:12,070 die gleichen Informationen darstellen, aber in komplexeren Begriffe. 1189 00:49:12,070 --> 00:49:15,070 Das ist eine nützliche Ressource zu wirklich wissen, was alles tut. 1190 00:49:15,070 --> 00:49:17,320 >> Das nächste Mal werden wir zu gehen einen Blick auf Ovomaltine 1191 00:49:17,320 --> 00:49:20,070 und mehr, und stellen uns vor in der Welt der Kryptographie. 1192 00:49:20,070 --> 00:49:21,930 Bis dahin werden wir sehen, Sie noch in dieser Woche. 1193 00:49:21,930 --> 00:49:23,390 Und nun, Colton Ogden. 1194 00:49:23,390 --> 00:49:26,730 Wir sehen uns am Mittwoch. 1195 00:49:26,730 --> 00:49:30,216 >> [Musikwiedergabe] 1196 00:49:30,216 --> 00:49:33,702 >> [Musikwiedergabe] 1197 00:49:33,702 --> 00:49:38,682 1198 00:49:38,682 --> 00:49:42,200 >> Sprecher 1: Was die [PIEPTON] machst du da? 1199 00:49:42,200 --> 00:49:45,720 >> Sprecher 1: Ich esse mein Nachtisch? 1200 00:49:45,720 --> 00:49:47,160 Wie sehen Sie es zu essen? 1201 00:49:47,160 --> 00:49:47,860 Mit den Händen? 1202 00:49:47,860 --> 00:49:54,050 1203 00:49:54,050 --> 00:49:57,940 >> [Musikwiedergabe] 1204 00:49:57,940 --> 00:50:03,453