1 00:00:00,000 --> 00:00:00,980 2 00:00:00,980 --> 00:00:04,410 >> [Musik zu spielen] 3 00:00:04,410 --> 00:00:11,147 4 00:00:11,147 --> 00:00:12,230 David J. MALAN: In Ordnung. 5 00:00:12,230 --> 00:00:16,440 Dies ist CS50, und dies ist das Ende der 2. Woche. 6 00:00:16,440 --> 00:00:18,480 Also heute werden wir unseren Blick weiter 7 00:00:18,480 --> 00:00:21,150 an, wie wir die Dinge darstellen Unter der hood-- weg 8 00:00:21,150 --> 00:00:23,520 von Zahlen wie ganze Zahlen und Fließkommawerte 9 00:00:23,520 --> 00:00:26,810 und die Konzentration auf Saiten und letztlich mehr interessante Programme. 10 00:00:26,810 --> 00:00:30,140 Aber wir werden auch einen Blick auf eine nehmen Paar von domänenspezifischen problems-- 11 00:00:30,140 --> 00:00:33,620 von denen die erste werden, die mit der Kryptographie 12 00:00:33,620 --> 00:00:36,570 die Kunst der Verschlüsselung Informationen in dem Sie hier siehe oben 13 00:00:36,570 --> 00:00:41,480 ist ein Bild von Radio Orphan Annie Geheimnis Decoder Ring von gestern. 14 00:00:41,480 --> 00:00:46,490 >> Dies ist eigentlich sehr primitive Form und kinderfreundliche Form der cryptopgraphy 15 00:00:46,490 --> 00:00:50,590 wobei dieser Ring zwei disks-- eine innerhalb und eine außerhalb. 16 00:00:50,590 --> 00:00:54,740 Und durch Drehung einer von denen, können Wesentlichen antreten Buchstaben wie A 17 00:00:54,740 --> 00:00:59,520 bis Z mit anderen Buchstaben B wie durch A. Mit anderen Worten, 18 00:00:59,520 --> 00:01:03,730 Sie können buchstäblich drehen das Alphabet, dabei kommen mit einer Abbildung von 19 00:01:03,730 --> 00:01:07,820 Schreiben von Buchstaben, so daß, wenn man wollte eine geheime Nachricht senden 20 00:01:07,820 --> 00:01:11,820 , jemanden wie Annie, könnten Sie schreiben Sie Ihre Nachricht und dann drehen 21 00:01:11,820 --> 00:01:15,370 die Buchstaben, wobei, wenn du meinst zu sagen "A," Sie sagen statt "B" 22 00:01:15,370 --> 00:01:17,280 Sie sagen, "B", Sie sagen statt "C" - 23 00:01:17,280 --> 00:01:20,240 oder etwas ein wenig schlauer als dass-- und schließlich 24 00:01:20,240 --> 00:01:24,630 so lange, wie Annie hat diese Decoder Ring, sie kann die Nachricht entschlüsseln. 25 00:01:24,630 --> 00:01:28,540 Jetzt können Sie sich erinnern, in der Tat, dass diese wurde in einer sehr berühmten Film eingesetzt, dass 26 00:01:28,540 --> 00:01:31,140 spielt bis zum Erbrechen während die Weihnachtszeit. 27 00:01:31,140 --> 00:01:32,650 Werfen wir einen Blick hier. 28 00:01:32,650 --> 00:01:35,294 29 00:01:35,294 --> 00:01:37,210 RALPHIE PARKER: "Sei es alle in Zusammenfassung bekannt 30 00:01:37,210 --> 00:01:41,000 dass Ralph Parker wird zum Mitglied der Little Orphan Annie Geheimnis 31 00:01:41,000 --> 00:01:44,860 Kreis und ist es, alle Titel Ehrungen und Vorteile auftretenden dazu. " 32 00:01:44,860 --> 00:01:47,410 >> RALPHIE PARKER (erzählen): Little Orphan Annie unterzeichnet. 33 00:01:47,410 --> 00:01:50,070 Gegengezeichnet, Pierre Andre! 34 00:01:50,070 --> 00:01:51,490 In der Tinte. 35 00:01:51,490 --> 00:01:55,494 Ehrungen und Vorteile, bereits im Alter von neun Jahren. 36 00:01:55,494 --> 00:01:57,402 >> [Musik zu spielen] 37 00:01:57,402 --> 00:02:00,470 >> [RADIO CHATTER] 38 00:02:00,470 --> 00:02:01,470 RALPHIE PARKER: Kommen Sie. 39 00:02:01,470 --> 00:02:02,344 Lassen Sie uns auf damit. 40 00:02:02,344 --> 00:02:06,029 Ich weiß nicht alles, was Jazz müssen über Schmuggler und Piraten. 41 00:02:06,029 --> 00:02:08,820 Radiosprecher: Hören Sie morgen Nacht für das abschließende Abenteuer 42 00:02:08,820 --> 00:02:11,060 The Black Pirate Ship. 43 00:02:11,060 --> 00:02:14,740 Jetzt ist es Zeit für Annies Secret Message für Sie Mitglieder 44 00:02:14,740 --> 00:02:17,110 der Secret Circle. 45 00:02:17,110 --> 00:02:20,700 Denken Sie daran, Kinder, nur für Mitglieder von Annie Secret Circle 46 00:02:20,700 --> 00:02:23,270 kann geheime Nachricht Annies decodieren. 47 00:02:23,270 --> 00:02:27,270 >> Denken Sie daran, Annie auf dich. 48 00:02:27,270 --> 00:02:30,060 Stellen Sie Ihre Stifte B-2. 49 00:02:30,060 --> 00:02:34,004 Hier ist die nachrichten-- 12, 11, 2-- 50 00:02:34,004 --> 00:02:36,503 RALPHIE PARKER (erzählen): Ich bin in meinem ersten geheimen Treffen. 51 00:02:36,503 --> 00:02:40,041 Radiosprecher: -25, 14, 11, 18, 16-- 52 00:02:40,041 --> 00:02:42,790 RALPHIE PARKER (erzählen): Oh, Pierre war in der großen Stimme heute Abend. 53 00:02:42,790 --> 00:02:46,110 Ich könnte sagen, dass heute Abend Botschaft war wirklich wichtig. 54 00:02:46,110 --> 00:02:47,930 >> Radiosprecher: --3, 25. 55 00:02:47,930 --> 00:02:49,940 Das ist eine Nachricht von Annie sich. 56 00:02:49,940 --> 00:02:52,182 Denken Sie daran, nicht weitersagen. 57 00:02:52,182 --> 00:02:55,077 >> [KEUCHEN] 58 00:02:55,077 --> 00:02:57,285 RALPHIE PARKER (erzählen): Neunzig Sekunden später bin ich 59 00:02:57,285 --> 00:03:00,090 in der nur Platz in der Haus, in dem ein Junge von neun 60 00:03:00,090 --> 00:03:04,380 konnte in der Privatsphäre und decodieren zu sitzen. 61 00:03:04,380 --> 00:03:04,990 Ah. 62 00:03:04,990 --> 00:03:05,680 "B." 63 00:03:05,680 --> 00:03:06,524 >> [CHUCKLES] 64 00:03:06,524 --> 00:03:08,684 >> RALPHIE PARKER (erzählen): Ich ging zum nächsten. 65 00:03:08,684 --> 00:03:09,610 "E" 66 00:03:09,610 --> 00:03:11,641 Das erste Wort ist "sein." 67 00:03:11,641 --> 00:03:12,140 Ja! 68 00:03:12,140 --> 00:03:14,293 Es kam jetzt einfacher. 69 00:03:14,293 --> 00:03:15,259 "U." 70 00:03:15,259 --> 00:03:16,225 >> [CHUCKLES] 71 00:03:16,225 --> 00:03:18,157 >> RANDY PARKER: Ach, komm schon, Ralphie. 72 00:03:18,157 --> 00:03:19,606 Ich muss gehen! 73 00:03:19,606 --> 00:03:21,538 >> RALPHIE PARKER: Ich bin gleich unten, Ma. 74 00:03:21,538 --> 00:03:22,504 Herrje. 75 00:03:22,504 --> 00:03:25,402 76 00:03:25,402 --> 00:03:31,220 "T" "O" "Seien Sie sicher, auf. "" Seien Sie sicher, "Was? 77 00:03:31,220 --> 00:03:33,981 Was war Little Orphan Annie versucht zu sagen? "Achten Sie darauf," was? 78 00:03:33,981 --> 00:03:35,522 MUTTER: Ralphie, Randy muss gehen. 79 00:03:35,522 --> 00:03:36,735 Würden Sie bitte kommen? 80 00:03:36,735 --> 00:03:38,190 >> RALPHIE PARKER: All right, Mama! 81 00:03:38,190 --> 00:03:39,787 Ich bin gleich aus sein! 82 00:03:39,787 --> 00:03:41,995 RALPHIE PARKER (erzählen): Ich war jetzt näher bekommen. 83 00:03:41,995 --> 00:03:43,370 Die Spannung war schrecklich. 84 00:03:43,370 --> 00:03:44,794 Was war es? 85 00:03:44,794 --> 00:03:47,656 Das Schicksal des Planeten kann in der Schwebe. 86 00:03:47,656 --> 00:03:50,518 >> MUTTER: Ralphie, Randy muss gehen! 87 00:03:50,518 --> 00:03:53,635 >> RALPHIE PARKER: Ich werde gleich sein aus, für crying out loud! 88 00:03:53,635 --> 00:03:55,343 RALPHIE PARKER (Erzählen): Fast geschafft! 89 00:03:55,343 --> 00:03:56,520 Meine Finger flogen! 90 00:03:56,520 --> 00:03:58,500 Mein Geist war ein Stahlfalle. 91 00:03:58,500 --> 00:03:59,850 Jede Pore in Schwingung versetzt. 92 00:03:59,850 --> 00:04:01,806 Es war fast klar! 93 00:04:01,806 --> 00:04:02,773 Ja! 94 00:04:02,773 --> 00:04:03,273 Ja! 95 00:04:03,273 --> 00:04:03,773 Ja! 96 00:04:03,773 --> 00:04:04,740 Ja! 97 00:04:04,740 --> 00:04:10,250 >> RALPHIE PARKER: "Seien Sie sicher, um Ihre Ovomaltine trinken. " 98 00:04:10,250 --> 00:04:10,750 Ovomaltine? 99 00:04:10,750 --> 00:04:14,864 100 00:04:14,864 --> 00:04:17,539 Eine miese Handels? 101 00:04:17,539 --> 00:04:19,439 >> [Musik zu spielen] 102 00:04:19,439 --> 00:04:21,724 >> RALPHIE PARKER: Son of a bitch. 103 00:04:21,724 --> 00:04:23,460 >> [Lacht] 104 00:04:23,460 --> 00:04:27,070 >> David J. MALAN: Also das ist dann ein Blick auf, was Kryptographie 105 00:04:27,070 --> 00:04:29,880 kann für ein this-- sein Trinken von gestern. 106 00:04:29,880 --> 00:04:30,900 So eine schnelle Ankündigung. 107 00:04:30,900 --> 00:04:33,410 Wenn Sie frei sind diese Freitag um 13.15 Uhr und würde 108 00:04:33,410 --> 00:04:36,610 möchten uns für CS50 beitreten Mittagessen, Kopf zu dieser URL hier. 109 00:04:36,610 --> 00:04:38,080 First come, first wie gewohnt bedienen. 110 00:04:38,080 --> 00:04:41,840 Aber im Laufe der Zeit, werden wir sicherstellen, dass die meisten alle, die teilnehmen möchten 111 00:04:41,840 --> 00:04:43,640 kann planen-weise. 112 00:04:43,640 --> 00:04:45,170 >> So Zeichenfolgen. 113 00:04:45,170 --> 00:04:47,940 Wir haben den Zamyla-- Sie haben jetzt wahrscheinlich erfüllt 114 00:04:47,940 --> 00:04:50,750 in Problem-Set, dessen 1-- Name wird so geschrieben sind. 115 00:04:50,750 --> 00:04:53,570 Und nehmen Sie ihren Namen eingegeben in ein Computerprogramm, ist 116 00:04:53,570 --> 00:04:55,710 mit so etwas wie getString. 117 00:04:55,710 --> 00:04:57,890 Um abrufen diese Tastenanschläge, wie 118 00:04:57,890 --> 00:05:01,620 wissen wir über eine Vertretung gehen String, ein Wort, ein Absatz, 119 00:05:01,620 --> 00:05:03,960 oder mehrere Buchstaben wie diese hier? 120 00:05:03,960 --> 00:05:06,790 >> Wir sprachen letzte Mal über Zahlen und Probleme 121 00:05:06,790 --> 00:05:09,960 dass mit Integer-Überlauf auftreten und Fließkommawerte 122 00:05:09,960 --> 00:05:12,190 und Probleme, die entstehen innerhalb Präzision. 123 00:05:12,190 --> 00:05:16,080 Mit Streichern, wir zumindest haben ein bisschen mehr Flexibilität 124 00:05:16,080 --> 00:05:17,970 weil nur strings-- in der realen world-- 125 00:05:17,970 --> 00:05:19,790 kann eine ziemlich beliebiger Länge sein. 126 00:05:19,790 --> 00:05:21,055 Ziemlich kurz, ziemlich lang. 127 00:05:21,055 --> 00:05:23,680 Aber selbst dann sind wir los dass Computer finden kann manchmal 128 00:05:23,680 --> 00:05:27,200 aus der Erinnerung und auch nicht laufen speichern groß genug Schnur. 129 00:05:27,200 --> 00:05:30,840 >> Aber jetzt lassen Sie uns beginnen zu visualisieren ein String als etwas in diesen Feldern 130 00:05:30,840 --> 00:05:31,340 Hier. 131 00:05:31,340 --> 00:05:36,410 So sechs solcher Boxen, von denen jede stellt ein Zeichen oder "char". 132 00:05:36,410 --> 00:05:40,646 So daran erinnern, dass "char" - c-h-a-r-- ist einer der eingebauten Datentypen in C 133 00:05:40,646 --> 00:05:43,520 Und was ist schön, dass Sie verwenden können, diese Art von als Baustein, 134 00:05:43,520 --> 00:05:47,880 ein Puzzle-Stück, wenn man so will, zu einer Form größere Art der Daten, die wir weiter 135 00:05:47,880 --> 00:05:49,410 um ein "string" nennen. 136 00:05:49,410 --> 00:05:53,650 >> Nun, was ist sinnvoll, über das Denken über Dinge wie Zeichenfolgen in dieser Art und Weise? 137 00:05:53,650 --> 00:05:57,720 Nun stellt sich heraus, dass wir tatsächlich nutzen diese Struktur 138 00:05:57,720 --> 00:06:01,420 tatsächlich Zugriff auf einzelne Zeichen in einem hübschen unkompliziert. 139 00:06:01,420 --> 00:06:04,099 Ich werde weitermachen und erstellen eine Datei namens "stringzero.c" 140 00:06:04,099 --> 00:06:05,765 aber Sie können es nennen, wie Sie möchten. 141 00:06:05,765 --> 00:06:08,500 Und auf der Website der Kurs ist schon dieses Beispiel im Voraus, 142 00:06:08,500 --> 00:06:10,430 so dass Sie nicht brauchen, um geben alles aus. 143 00:06:10,430 --> 00:06:13,820 >> Und ich werde weitermachen und zuerst tun int main nichtig. 144 00:06:13,820 --> 00:06:15,980 Und innerhalb von wenigen Tagen, wir beginnen auseinander zu necken 145 00:06:15,980 --> 00:06:19,070 was nichtig ist hier, warum es int neben dem Haupt, und so weiter. 146 00:06:19,070 --> 00:06:21,180 Aber jetzt lassen Sie uns weiter zu kopieren und einfügen, dass. 147 00:06:21,180 --> 00:06:23,455 >> Ich werde einen String namens s erklären. 148 00:06:23,455 --> 00:06:26,920 Und ich werde aus Rück GetString unabhängig von den Benutzertypen in. 149 00:06:26,920 --> 00:06:29,170 Das wird eine einfach zu sein Programm, keine Anweisungen, 150 00:06:29,170 --> 00:06:31,336 Ich werde einfach blind zu erwarten, dass der Benutzer weiß, 151 00:06:31,336 --> 00:06:32,600 was zu tun ist, um es einfach zu halten. 152 00:06:32,600 --> 00:06:34,220 >> Und jetzt werde ich eine for-Schleife haben. 153 00:06:34,220 --> 00:06:37,450 Und Innenseite meiner for-Schleife Ich bin gehen zu müssen, int i bekommt Null. 154 00:06:37,450 --> 00:06:40,660 Und i ist wieder nur eine Konvention, eine Indexvariable zum Zählen, 155 00:06:40,660 --> 00:06:42,350 aber ich könnte dies, was ich will rufen. 156 00:06:42,350 --> 00:06:46,275 Ich werde tun, ich weniger gut than-- Zamyla Name ist sechs Buchstaben lang. 157 00:06:46,275 --> 00:06:48,150 Also bin ich zu hart gehen Code, der es für jetzt. 158 00:06:48,150 --> 00:06:49,730 >> Und dann ++ ich. 159 00:06:49,730 --> 00:06:53,190 Und jetzt innerhalb dieser geschweiften Klammern werde ich printf tun, 160 00:06:53,190 --> 00:06:55,460 und ich möchte eine drucken Zeichen zu einem Zeitpunkt. 161 00:06:55,460 --> 00:06:58,227 Also ich werde% c für den Einsatz vielleicht das erste Mal. 162 00:06:58,227 --> 00:07:00,560 Und dann möchte ich jeden Druck Charakter auf seine eigene Linie. 163 00:07:00,560 --> 00:07:02,550 Also werde ich eine Put- kleine Backslash n gibt. 164 00:07:02,550 --> 00:07:03,640 Schließen Zitat. 165 00:07:03,640 --> 00:07:06,250 >> Und jetzt will ich hier etwas zu tun. 166 00:07:06,250 --> 00:07:10,610 Ich will aus dem Druck bestimmten Buchstaben in der Zeichenfolge, 167 00:07:10,610 --> 00:07:13,670 s, so wie ich bin Iteration von Null auf bis zu sechs. 168 00:07:13,670 --> 00:07:17,150 Mit anderen Worten, ich möchte drucken Sie das i-te Zeichen von s. 169 00:07:17,150 --> 00:07:18,420 Nun, wie kann ich dies tun? 170 00:07:18,420 --> 00:07:21,550 >> Nun viel wie die Boxen in diese Darstellung hier 171 00:07:21,550 --> 00:07:25,560 Art, zaubern den Begriff des Boxens Buchstaben in, können Sie das tun, ähnlich 172 00:07:25,560 --> 00:07:32,630 syntaktisch in C, indem Sie einfach, Ich möchte i-ten Zeichen ausdrucken S. 173 00:07:32,630 --> 00:07:35,640 Mit den eckigen Klammern auf der Tastatur des Computers 174 00:07:35,640 --> 00:07:38,910 dass auf einer US-Tastatur in der Regel über dem Return-Taste. 175 00:07:38,910 --> 00:07:42,630 >> Das ist also nicht ganz richtig doch, wie Sie vielleicht bemerkt haben. 176 00:07:42,630 --> 00:07:44,780 Aber ich bin zu Art, zu gehen blind vorantreiben hier. 177 00:07:44,780 --> 00:07:47,020 Und ich werde tun, machen String 0. 178 00:07:47,020 --> 00:07:50,860 Aber bevor ich das tue, lassen Sie uns sehen, ob wir kann nicht erwarten, einige häufige Fehler. 179 00:07:50,860 --> 00:07:52,844 Wird das zu kompilieren? 180 00:07:52,844 --> 00:07:54,510 Nein, ich bin fehlt eine ganze Reihe von Dingen. 181 00:07:54,510 --> 00:07:55,280 Bibliotheken, die ich gehört habe. 182 00:07:55,280 --> 00:07:58,480 >> Also, die Header-Dateien vielleicht will ich anlegen? 183 00:07:58,480 --> 00:07:59,205 Ja. 184 00:07:59,205 --> 00:08:01,580 >> ZIELGRUPPE: Sie müssen Standard-I / O [unverständlich] 185 00:08:01,580 --> 00:08:02,663 >> David J. MALAN: Ausgezeichnet. 186 00:08:02,663 --> 00:08:06,060 Also muss ich Standard-I / O. Wofür Zweck will ich Standard-I / O? 187 00:08:06,060 --> 00:08:06,670 Für printf. 188 00:08:06,670 --> 00:08:09,220 So gehören stdio.h. 189 00:08:09,220 --> 00:08:13,490 Und Sie schlagen auch vor, dass ich schließen der CS50-Bibliothek aus welchem ​​Grund? 190 00:08:13,490 --> 00:08:14,650 Zu haben, Strings. 191 00:08:14,650 --> 00:08:17,780 Also werden wir sehen, was CS50 Bibliothek tut 192 00:08:17,780 --> 00:08:19,260 , diese Vorstellung von einem String erstellen. 193 00:08:19,260 --> 00:08:21,930 Aber für jetzt, die Sie gerade denken kann es als eine tatsächliche Datentyp. 194 00:08:21,930 --> 00:08:23,596 >> So dass scheint zu sein, ein wenig aufgeräumt. 195 00:08:23,596 --> 00:08:27,060 Und jetzt gehe ich voran gehen und in der Tat zu tun zu machen String 0. 196 00:08:27,060 --> 00:08:27,700 Zusammengestellt. 197 00:08:27,700 --> 00:08:28,370 Also das ist gut. 198 00:08:28,370 --> 00:08:32,799 Also lassen Sie mich ./string0 heranzoomen, so können wir siehe genauer, was passiert. 199 00:08:32,799 --> 00:08:33,850 Eingeben. 200 00:08:33,850 --> 00:08:37,789 Z-A-M-Y-L-A geben. 201 00:08:37,789 --> 00:08:39,440 Und wir haben heraus Zamyla Namen gedruckt. 202 00:08:39,440 --> 00:08:40,409 >> Also das ist ziemlich gut. 203 00:08:40,409 --> 00:08:43,220 So, jetzt gehen Sie vor und lassen führen Sie dieses Programm wieder, 204 00:08:43,220 --> 00:08:45,659 und geben Sie den vollständigen Namen Daven. 205 00:08:45,659 --> 00:08:46,450 Überraschung, Überraschung. 206 00:08:46,450 --> 00:08:48,021 Eingeben. 207 00:08:48,021 --> 00:08:48,520 Hmm. 208 00:08:48,520 --> 00:08:51,750 Wir haben nicht gedruckt Daven richtig voll Vornamen. 209 00:08:51,750 --> 00:08:54,250 Jetzt sollte dies in der Hand sein Rückblick, weil von dem, was, 210 00:08:54,250 --> 00:08:57,010 Art, dumm Design-Entscheidung? 211 00:08:57,010 --> 00:08:59,590 >> Ja, ich hart codiert die sechs Innenseite meiner for-Schleife. 212 00:08:59,590 --> 00:09:01,610 Jetzt habe ich das nur, weil Ich wusste, dass der Name Zamyla 213 00:09:01,610 --> 00:09:02,776 wollte sechs Buchstaben sein. 214 00:09:02,776 --> 00:09:04,720 Aber das ist sicherlich nicht eine allgemeine Lösung. 215 00:09:04,720 --> 00:09:07,720 So stellt sich heraus können wir dynamisch herauszufinden, die Länge eines Strings 216 00:09:07,720 --> 00:09:10,440 durch den Aufruf einer Funktion namens strlen. 217 00:09:10,440 --> 00:09:12,840 >> Wieder bewusst kurz und bündig eben genannten 218 00:09:12,840 --> 00:09:14,450 , um es bequemer zu geben. 219 00:09:14,450 --> 00:09:17,170 Aber das ist gleichbedeutend mit immer die Länge eines Strings. 220 00:09:17,170 --> 00:09:23,190 Ich werde wieder in mein Terminal gehen Fenster und starten den Compiler. 221 00:09:23,190 --> 00:09:24,170 Aber es ist an mir zu kreischen. 222 00:09:24,170 --> 00:09:29,130 Implizit Bibliotheksfunktion erklärt mit Typ unsigned int strlen const-- 223 00:09:29,130 --> 00:09:29,780 Ich bin verloren. 224 00:09:29,780 --> 00:09:30,590 Vollständig. 225 00:09:30,590 --> 00:09:32,940 >> Also, vor allem als Augen beginnen glasig 226 00:09:32,940 --> 00:09:36,000 mit Fehlermeldungen wie diese, Fokus ehrlich auf die ersten paar Worte. 227 00:09:36,000 --> 00:09:38,590 Wir wissen, das Problem ist in Linie 8, wie hier angedeutet. 228 00:09:38,590 --> 00:09:40,500 Und es ist in String-0.c. 229 00:09:40,500 --> 00:09:43,580 Implizit erklärt Bibliotheksfunktion strlen. 230 00:09:43,580 --> 00:09:47,000 So daß im allgemeinen werde ein Muster von Fehlermeldungen ist. 231 00:09:47,000 --> 00:09:49,190 Implizit etwas zu erklären. 232 00:09:49,190 --> 00:09:53,250 >> Also kurz gesagt, was habe ich schien haben in Bezug getan, um die Linie 8, hier. 233 00:09:53,250 --> 00:09:56,880 Was könnte die Lösung sein, auch wenn Sie noch nie strlen selbst verwendet? 234 00:09:56,880 --> 00:09:58,907 >> ZIELGRUPPE: Teil einer anderen Bibliothek? 235 00:09:58,907 --> 00:10:00,740 David J. MALAN: Teil von einer anderen Bibliothek. 236 00:10:00,740 --> 00:10:02,400 So wird erklärt, so zu sprechen. 237 00:10:02,400 --> 00:10:07,510 Es ist in einigen Datei erwähnt andere als stdio.h und CS50.h. 238 00:10:07,510 --> 00:10:09,179 Jetzt wo ist es definiert? 239 00:10:09,179 --> 00:10:12,220 Um ehrlich zu sein, haben Sie entweder nur weiß, dass dies von der Spitze des Kopfes, 240 00:10:12,220 --> 00:10:13,640 oder Sie diese Google und finden Sie heraus. 241 00:10:13,640 --> 00:10:18,150 Oder weiß, das habe ich in der CS50 geöffnet Appliance Die Terminal-Programm, das 242 00:10:18,150 --> 00:10:22,200 ist nur der große, Vollbild-Version was ist in der Unterseite der Fenster gedit ist. 243 00:10:22,200 --> 00:10:24,970 >> Und es stellt sich heraus, dass es eine ähnlich knappe Befehl, genannt 244 00:10:24,970 --> 00:10:29,280 Mann für die manuelle, wo, wenn Sie geben der Name einer Funktion und drücken Sie die Eingabetaste, 245 00:10:29,280 --> 00:10:32,240 Sie werden ziemlich zurück Arkane Dokumentation. 246 00:10:32,240 --> 00:10:35,299 Es ist nur Text, der in der Regel sieht ein wenig so etwas wie dieses. 247 00:10:35,299 --> 00:10:37,090 Es ist ein wenig überwältigend auf den ersten Blick. 248 00:10:37,090 --> 00:10:39,048 Aber ehrlich gesagt bin ich zu gehen ließ meine Augen glasig 249 00:10:39,048 --> 00:10:41,930 und nur auf dem Teil zu konzentrieren Ich kümmere mich um für den Moment. 250 00:10:41,930 --> 00:10:42,780 >> Welches ist das. 251 00:10:42,780 --> 00:10:45,470 Die aussieht wie strukturell etwas, was ich bin vertraut. 252 00:10:45,470 --> 00:10:48,080 In der Tat die man-Seite, so zu sprechen, wird Ihnen sagen, 253 00:10:48,080 --> 00:10:51,590 in welcher Header-Datei eine Funktion wie strlen definiert ist. 254 00:10:51,590 --> 00:10:54,170 Also werde ich jetzt zurück zu gedit zu gehen. 255 00:10:54,170 --> 00:10:59,070 Und ich werde weitermachen und fügen hier # include 256 00:10:59,070 --> 00:11:00,480 und speichern Sie die Datei. 257 00:11:00,480 --> 00:11:04,300 >> Ich werde, um den Bildschirm mit klaren Control L Wenn Sie sich schon gefragt haben. 258 00:11:04,300 --> 00:11:08,210 Und ich werde wieder laufen make string.0, kompiliert diese Zeit. 259 00:11:08,210 --> 00:11:11,790 ./string.0 Zamyla. 260 00:11:11,790 --> 00:11:15,020 Das schien zu funktionieren Lass mich gehen vor und führen Sie es mit Davenport. 261 00:11:15,020 --> 00:11:15,860 Eingeben. 262 00:11:15,860 --> 00:11:17,730 Und das schien auch zu funktionieren. 263 00:11:17,730 --> 00:11:21,220 >> Also wir tun können, ein wenig besser als das, obwohl, können wir ordentlich die Dinge beginnen 264 00:11:21,220 --> 00:11:23,257 bis nur ein wenig. 265 00:11:23,257 --> 00:11:25,590 Und ich werde tatsächlich führen nun eine andere Sache. 266 00:11:25,590 --> 00:11:28,930 Ich werde weitermachen und speichern Sie diese in einer anderen Datei. 267 00:11:28,930 --> 00:11:31,770 Und ich werde anrufen Diese Datei string1.c nur 268 00:11:31,770 --> 00:11:34,620 im Einklang mit dem Code zu sein Sie werden in der Lage, online zu finden sein. 269 00:11:34,620 --> 00:11:37,050 >> Und lassen Sie konzentriert sich auf Genau der gleiche Code. 270 00:11:37,050 --> 00:11:39,000 Es stellt sich heraus, dass ich Art gewesen Nahme 271 00:11:39,000 --> 00:11:42,600 für selbstverständlich, dass mein Laptop, und wiederum das Gerät CS50 272 00:11:42,600 --> 00:11:47,450 hat eine Menge von Speicher, eine Menge von RAM, eine Menge von Bytes Platz 273 00:11:47,450 --> 00:11:48,920 in der ich Strings speichern. 274 00:11:48,920 --> 00:11:53,560 >> Aber die Realität, wenn ich lange getippt genug, und genug Tastatureingaben, 275 00:11:53,560 --> 00:11:56,170 Ich könnte in der Theorie Typ in mehr Zeichen 276 00:11:56,170 --> 00:11:58,830 als mein Computer körperlich und ein Speicher für. 277 00:11:58,830 --> 00:11:59,830 Und dies ist problematisch. 278 00:11:59,830 --> 00:12:03,050 Ähnlich wie ein int nur kann zählen so hoch ist, in der Theorie, 279 00:12:03,050 --> 00:12:06,600 Sie können nur so viele Zeichen stopfen in den Arbeitsspeicher des Computers oder Zufalls 280 00:12:06,600 --> 00:12:07,920 Zugriffsspeicher. 281 00:12:07,920 --> 00:12:11,140 >> So hatte ich eine bessere Antizipation Dieses Problem, auch 282 00:12:11,140 --> 00:12:13,660 wenn es vielleicht eine seltene sein Ecke Fall, so zu sprechen. 283 00:12:13,660 --> 00:12:15,670 Nicht so oft vorkommen, passieren könnte. 284 00:12:15,670 --> 00:12:18,815 Und wenn es passiert, und ich weiß nicht antizipieren und das Programm für sie, 285 00:12:18,815 --> 00:12:20,300 mein Programm tun könnte, wer weiß was. 286 00:12:20,300 --> 00:12:22,220 Einfrieren, hängen, Neustart, was auch immer. 287 00:12:22,220 --> 00:12:24,490 Etwas erwartet passieren könnte. 288 00:12:24,490 --> 00:12:27,120 >> Also, was ich tun werde jetzt, nun wirklich, 289 00:12:27,120 --> 00:12:31,630 ist, bevor ich überhaupt blind eine Variable wie s, dass 290 00:12:31,630 --> 00:12:36,790 wurde den Rückgabewert zugewiesen eine andere Funktion wie getstring, 291 00:12:36,790 --> 00:12:40,200 Ich werde sicherstellen, dass dass der Wert gültig ist. 292 00:12:40,200 --> 00:12:44,280 Also ich weiß nur aus der Lektüre Dokumentation CS50 für getstring, 293 00:12:44,280 --> 00:12:49,020 was letztlich werden wir Sie bei Punkt dass getstring gibt ein spezielles Symbol 294 00:12:49,020 --> 00:12:53,610 genannt NULL, N-U-L-L in allen Kappen, wenn etwas schief geht. 295 00:12:53,610 --> 00:12:55,650 >> Also normalerweise, gibt es einen String. 296 00:12:55,650 --> 00:12:59,700 Aber sonst, wenn es N-U-L-L-- zurück wir werden schließlich sehen, was das wirklich 297 00:12:59,700 --> 00:13:01,790 means-- das bedeutet nur, etwas Schlimmes passiert. 298 00:13:01,790 --> 00:13:05,560 Nun bedeutet dies, ähnlich wie in Scratch, Ich kann ein Zustand hier in C zu überprüfen, 299 00:13:05,560 --> 00:13:08,830 wenn s nicht gleich NULL. 300 00:13:08,830 --> 00:13:11,930 Also, wenn Sie das nicht vorher gesehen haben, Dies bedeutet nur, nicht gleich. 301 00:13:11,930 --> 00:13:15,290 >> Es ist also das Gegenteil von gleich Gleichen, die sich erinnern, 302 00:13:15,290 --> 00:13:18,940 ist anders als bei einzelnen entspricht, die Aufgabe ist. 303 00:13:18,940 --> 00:13:23,030 Also, wenn s nicht gleich NULL, erst dann 304 00:13:23,030 --> 00:13:25,980 Ich möchte diese Zeilen Code auszuführen. 305 00:13:25,980 --> 00:13:28,080 In anderen Worten, bevor ich tauchen in blind 306 00:13:28,080 --> 00:13:30,919 und starten Iteration über S und Behandeln 307 00:13:30,919 --> 00:13:33,710 als ob es ein Sequenz von Zeichen, ich werde erst prüfen, 308 00:13:33,710 --> 00:13:37,900 warten Sie eine Minute, ist definitiv nicht gleich diesem besonderen Wert, NULL? 309 00:13:37,900 --> 00:13:40,030 >> Denn wenn es ist, können schlimme Dinge passieren. 310 00:13:40,030 --> 00:13:43,080 Und jetzt, davon ausgehen, dass schlechte Dinge Geschehen bedeutet, dass Ihr Programm abstürzt, 311 00:13:43,080 --> 00:13:45,070 und man kann nicht unbedingt erholen. 312 00:13:45,070 --> 00:13:46,800 Also ehrlich gesagt, sieht es immer hässlicher. 313 00:13:46,800 --> 00:13:48,660 ist es irgendwie verwirrend jetzt einen Blick auf. 314 00:13:48,660 --> 00:13:50,780 Aber das wird mehr werden es dauerte nicht lange vertraut. 315 00:13:50,780 --> 00:13:52,920 >> Aber ich werde vorschlagen jetzt eine weitere Verbesserung. 316 00:13:52,920 --> 00:13:54,660 Das ist eine Verbesserung auf Richtigkeit. 317 00:13:54,660 --> 00:13:58,800 Mein Programm ist jetzt richtig, denn in dem seltenen Fall, dass nicht genügend Speicher 318 00:13:58,800 --> 00:14:01,180 vorhanden ist, werde ich damit umgehen, und ich werde einfach nichts zu tun. 319 00:14:01,180 --> 00:14:02,680 Ich zumindest nicht abstürzen. 320 00:14:02,680 --> 00:14:05,000 >> Aber lassen Sie uns eine endgültige Version hier. 321 00:14:05,000 --> 00:14:07,690 Und eine Datei namens string2.c. 322 00:14:07,690 --> 00:14:10,190 Ich werde das Einfügen gleichen Code nur für einen Moment, 323 00:14:10,190 --> 00:14:14,210 und ich werde dieses Highlight Linie 11, hier, nur für einen Augenblick. 324 00:14:14,210 --> 00:14:18,179 Nun ist die Realität ist, dass Smart-Compiler wie Clang könnte dies für uns zu fixieren 325 00:14:18,179 --> 00:14:19,970 hinter den Kulissen ohne jemals zu wissen, unsere. 326 00:14:19,970 --> 00:14:24,670 Aber lassen Sie uns darüber nachdenken grundsätzlich als problematisch Design. 327 00:14:24,670 --> 00:14:29,010 >> Diese Codezeile ist natürlich sagen, initialisieren eine Variable i auf 0. 328 00:14:29,010 --> 00:14:30,260 Das ist ziemlich einfach. 329 00:14:30,260 --> 00:14:34,691 Und was das ist wieder Rechnung, hier, ++ i, da? 330 00:14:34,691 --> 00:14:37,066 Wir haben es gesehen, aber wir nicht wirklich darüber reden. 331 00:14:37,066 --> 00:14:37,900 >> ZIELGRUPPE: Erhöhen ich. 332 00:14:37,900 --> 00:14:39,191 >> David J. MALAN: Erhöhen ich. 333 00:14:39,191 --> 00:14:41,890 So bei jeder Iteration durch Diese Schleife, in jedem Zyklus, 334 00:14:41,890 --> 00:14:43,570 Erhöhen Sie i um eins. 335 00:14:43,570 --> 00:14:45,740 So wird es größer und größer, und größer, bis die Schleife beendet. 336 00:14:45,740 --> 00:14:46,810 Wie kommt es zu beenden? 337 00:14:46,810 --> 00:14:49,430 Nun gibt es diese Mittel Zustand, den wir verwendet haben. 338 00:14:49,430 --> 00:14:52,500 Sie haben gesehen, und in Komplettlösungen in der P-Reihe. 339 00:14:52,500 --> 00:14:53,880 >> Aber was ist dieses Sprichwort? 340 00:14:53,880 --> 00:14:58,352 Führen Sie die folgende Schleife, so solange ich weniger als das, was ist? 341 00:14:58,352 --> 00:14:59,810 ZIELGRUPPE: Die Länge der Zeichenkette. 342 00:14:59,810 --> 00:15:01,518 David J. MALAN: Der Länge der Zeichenfolge. 343 00:15:01,518 --> 00:15:04,300 So ist es recht sauber übersetzt Englisch in diesem Sinne. 344 00:15:04,300 --> 00:15:08,810 Nun das Problem ist, dass jedes Mal, wenn ich durchlaufen diese Schleife in der Theorie, 345 00:15:08,810 --> 00:15:10,000 Ich frage diese Frage. 346 00:15:10,000 --> 00:15:12,250 Ist i kleiner als der String-Länge von s? 347 00:15:12,250 --> 00:15:14,500 Ist i kleiner als der String-Länge von s? 348 00:15:14,500 --> 00:15:18,380 >> Jetzt wird i Wechsel an jeder Iteration? 349 00:15:18,380 --> 00:15:18,880 Es ist. 350 00:15:18,880 --> 00:15:19,629 Aufgrund der ++. 351 00:15:19,629 --> 00:15:21,700 Also jeder Iteration i wird immer größer. 352 00:15:21,700 --> 00:15:25,411 Aber ist s immer größer, oder kleiner oder Ändern überhaupt? 353 00:15:25,411 --> 00:15:25,910 Nein. 354 00:15:25,910 --> 00:15:30,240 Also in Bezug auf Design, eine der Achsen auf dem wir versuchen, Code zu bewerten 355 00:15:30,240 --> 00:15:32,610 in der Klasse, fühlt sich diese Art von dumm. 356 00:15:32,610 --> 00:15:34,690 >> Wie Sie buchstäblich, bei jeder Iteration 357 00:15:34,690 --> 00:15:37,110 dieser Schleife fragen, die elbe verdammte Frage noch einmal, 358 00:15:37,110 --> 00:15:40,770 und wieder und wieder, und buchstäblich es wird sich nie ändern. 359 00:15:40,770 --> 00:15:44,220 Zumindest, wenn ich nicht zu berühren und s versuchen, den Inhalt von s ändern. 360 00:15:44,220 --> 00:15:46,610 So kann ich ein wenig besser als dies zu tun. 361 00:15:46,610 --> 00:15:49,530 >> Und was ich tun werde, ist nicht erklären nur eine Variable i, 362 00:15:49,530 --> 00:15:53,330 aber eine zweite variable werde ich willkürlich, aber konventionell, nennen Sie es n. 363 00:15:53,330 --> 00:15:55,940 Zuordnen n gleich der String-Länge von s. 364 00:15:55,940 --> 00:15:59,090 Und dann hier, ich bin zu gehen tun eine clevere kleine Optimierung, so 365 00:15:59,090 --> 00:16:03,460 am Ende des Tages zu sprechen, dass nicht mehr richtig oder nicht weniger richtig 366 00:16:03,460 --> 00:16:04,260 als zuvor. 367 00:16:04,260 --> 00:16:05,500 Aber es ist ein besseres Design. 368 00:16:05,500 --> 00:16:09,480 In der Tatsache, dass ich mit weniger Zeit, weniger CPU-Zyklen, so 369 00:16:09,480 --> 00:16:14,040 zu sprechen, um die gleiche Antwort Frage, aber nur einmal. 370 00:16:14,040 --> 00:16:17,870 >> Sie haben Fragen zu diesem allgemeinen Grundsatz der Verbesserung, 371 00:16:17,870 --> 00:16:21,294 sagen, Effizienz eines Programms? 372 00:16:21,294 --> 00:16:21,991 Ja? 373 00:16:21,991 --> 00:16:23,699 ZIELGRUPPE: Warum wollen Sie verwenden Sie die [unverständlich]? 374 00:16:23,699 --> 00:16:25,760 375 00:16:25,760 --> 00:16:27,010 David J. MALAN: Gute Frage. 376 00:16:27,010 --> 00:16:30,690 Also, warum wir den ++ auf das Ende des i statt am Anfang des i? 377 00:16:30,690 --> 00:16:33,070 In diesem Fall hat es keine funktionalen Auswirkungen. 378 00:16:33,070 --> 00:16:36,670 Und überhaupt, ich neige dazu, verwenden Sie den Postfix-Operator 379 00:16:36,670 --> 00:16:41,750 , so dass es ein wenig mehr klar, wie um, wenn der Betrieb geschieht. 380 00:16:41,750 --> 00:16:46,670 >> Für die Leser gibt es ein weiteres Aussagen, wobei Sie ++ ich tun konnte. 381 00:16:46,670 --> 00:16:48,747 Dies sind funktional Wert in diesem Fall 382 00:16:48,747 --> 00:16:51,080 denn es gibt nichts anderes um diese Schrittweite. 383 00:16:51,080 --> 00:16:54,435 Aber Sie können sich mit Fälle und Zeilen Code 384 00:16:54,435 --> 00:16:55,810 , in der das macht einen Unterschied. 385 00:16:55,810 --> 00:16:57,810 So allgemein, wissen wir nicht auch sprechen über dieser. 386 00:16:57,810 --> 00:17:00,690 Denn ehrlich gesagt, macht es Ihren Code sexier, und irgendwie glatter, 387 00:17:00,690 --> 00:17:01,776 und weniger Zeichen. 388 00:17:01,776 --> 00:17:04,859 Aber die Realität ist, es ist viel schwieriger, Ich denke, auch für mich, meine Meinung zu wickeln 389 00:17:04,859 --> 00:17:07,319 um sie manchmal die Reihenfolge der Operationen. 390 00:17:07,319 --> 00:17:09,750 So nebenbei, wenn Sie wirklich nicht, wie diese, 391 00:17:09,750 --> 00:17:14,650 auch wenn dies Art von sexy suchen, können Sie auch tun i + = 1, 392 00:17:14,650 --> 00:17:18,880 das ist der hässlicher Version gleiche Idee für postfix Inkrementierung. 393 00:17:18,880 --> 00:17:22,250 >> Ich dies, und Sie sagen sollte Spaß machen, 394 00:17:22,250 --> 00:17:25,140 aber Sie werden kommen, um zu sehen, wie Code etwas Schönes vor lang. 395 00:17:25,140 --> 00:17:27,160 >> [Gelächter] 396 00:17:27,160 --> 00:17:28,410 >> David J. MALAN: Richtig? 397 00:17:28,410 --> 00:17:29,360 Ja. 398 00:17:29,360 --> 00:17:30,480 Frage in der Mitte. 399 00:17:30,480 --> 00:17:32,146 >> ZIELGRUPPE: Müssen Sie int n sagen? 400 00:17:32,146 --> 00:17:34,020 David J. MALAN: Sie tun nicht zu sagen, int n. 401 00:17:34,020 --> 00:17:37,670 So, weil wir bereits gesagt haben int, Sie brauchen nicht, um es noch einmal sagen. 402 00:17:37,670 --> 00:17:41,820 Der Haken ist, dass n muss sein die gleichen Datentyp wie ich. 403 00:17:41,820 --> 00:17:43,310 Also das ist nur eine Bequemlichkeit hier. 404 00:17:43,310 --> 00:17:44,058 Ja. 405 00:17:44,058 --> 00:17:47,806 >> ZIELGRUPPE: Können Sie über die gehen Druckzeichen s Halterung ich wieder? 406 00:17:47,806 --> 00:17:48,930 David J. MALAN: Absolut. 407 00:17:48,930 --> 00:17:52,110 So% c, erinnern von den letzten Zeit ist nur ein Platzhalter. 408 00:17:52,110 --> 00:17:53,930 Es bedeutet, legte eine char hier. 409 00:17:53,930 --> 00:17:56,780 Backslash n natürlich nur Mittel setzen einen Zeilenumbruch hier. 410 00:17:56,780 --> 00:17:59,540 So dass nur Blätter, jetzt, dieses Stück neue Syntax. 411 00:17:59,540 --> 00:18:03,730 Und das ist wörtlich zu sagen, Halte die Zeichenkette s genannt und holen ihre 412 00:18:03,730 --> 00:18:06,050 i-ten Charakter, so zu sprechen. 413 00:18:06,050 --> 00:18:10,590 >> Und ich sage immer i-ten Zeichen denn bei jeder Iteration des Schleifen 414 00:18:10,590 --> 00:18:14,540 es ist, als ob wir den Druck aus, erste S Halterung 0, 415 00:18:14,540 --> 00:18:15,780 als Programmierer könnte man sagen. 416 00:18:15,780 --> 00:18:18,680 Dann ist S Halterung 1 s Halterung 2, dann 3, dann 4. 417 00:18:18,680 --> 00:18:21,610 Aber natürlich ist es eine Variable, so drücke ich es nur mit i. 418 00:18:21,610 --> 00:18:23,900 >> Key ist jedoch, zu realisieren, vor allem, wenn Sie nicht haben 419 00:18:23,900 --> 00:18:26,358 zu dieser Welt zu akklimatisieren der Programmierung, wo wir alle 420 00:18:26,358 --> 00:18:28,950 scheinen von Null zu zählen, ich muss Zählen von Null beginnen jetzt. 421 00:18:28,950 --> 00:18:35,130 Da Strings, erstes Zeichen, die z in Zamyla ist auf Gedeih und Verderb 422 00:18:35,130 --> 00:18:40,490 werde am Standort Zahl Null zu leben. 423 00:18:40,490 --> 00:18:48,210 >> Alles klar, also lassen Sie mich bringen uns wieder hier, um Zamyla 424 00:18:48,210 --> 00:18:50,746 und sehen, was wirklich los ist auf unter der Haube. 425 00:18:50,746 --> 00:18:52,370 Also gibt es diese Vorstellung von Art Casting. 426 00:18:52,370 --> 00:18:53,800 Sie könnte in der Tat haben bereits mit dieser gespielt, 427 00:18:53,800 --> 00:18:55,970 Vielleicht für den Hacker Ausgabe von S. ein. 428 00:18:55,970 --> 00:19:00,320 Aber Typumwandlung bezieht sich nur auf die Fähigkeit in C und einige andere Sprachen 429 00:19:00,320 --> 00:19:03,170 zu einem Datentyp in einen anderen konvertieren. 430 00:19:03,170 --> 00:19:05,450 >> Nun, wie können wir das sehen ziemlich unkompliziert? 431 00:19:05,450 --> 00:19:08,530 Also das, Rückruf, ist der Anfang des englischen Alphabets. 432 00:19:08,530 --> 00:19:11,265 Und der Kontext erinnern, von wie vor einer Woche ist ASCII. 433 00:19:11,265 --> 00:19:13,790 Die American Standard Code für Informationsaustausch. 434 00:19:13,790 --> 00:19:17,080 Das ist nur ein wirklich langer Weg zu sagen, eine Zuordnung von Buchstaben 435 00:19:17,080 --> 00:19:19,370 Zahlen und aus Zahlen, Buchstaben. 436 00:19:19,370 --> 00:19:22,940 >> Also A bis M hier, Punkt Punkt Punkt, Linie mit, Rückruf, 437 00:19:22,940 --> 00:19:25,582 die Dezimalzahl 65 auf bis. 438 00:19:25,582 --> 00:19:27,290 Und wir haben nicht zu sprechen über dies ausdrücklich, 439 00:19:27,290 --> 00:19:29,850 aber sicher gibt es ähnliche Zahlen für Kleinbuchstaben. 440 00:19:29,850 --> 00:19:30,820 Und in der Tat, es gibt. 441 00:19:30,820 --> 00:19:33,730 Die Welt entschieden sich einige Jahre vor, dass eine kleine, Kleinbuchstaben a, 442 00:19:33,730 --> 00:19:35,020 wird zu 97 sein. 443 00:19:35,020 --> 00:19:38,010 Und b wenig los ist 98, und so weiter. 444 00:19:38,010 --> 00:19:40,200 >> Und für jede andere Taste auf Tastatur, gibt es 445 00:19:40,200 --> 00:19:42,190 wird ein ähnliches Muster von Bits. 446 00:19:42,190 --> 00:19:44,540 Oder äquivalent eine Dezimalzahl. 447 00:19:44,540 --> 00:19:47,110 So ist die Frage auf der Hand, dann, wie können wir 448 00:19:47,110 --> 00:19:49,400 tatsächlich unter der Haube sehen dies? 449 00:19:49,400 --> 00:19:51,539 So werde ich immer wieder zu gehen, um gedit. 450 00:19:51,539 --> 00:19:53,330 Und eher als Typ dieses von Grund auf, 451 00:19:53,330 --> 00:19:55,330 Ich werde weitermachen und öffnen Sie einfach etwas 452 00:19:55,330 --> 00:19:58,350 aus heutiger ASCII-Code genannt Null. 453 00:19:58,350 --> 00:20:01,210 >> Und ASCII Null sieht wie folgt aus. 454 00:20:01,210 --> 00:20:02,710 Also lassen Sie wickeln unseren Köpfen, um dieses. 455 00:20:02,710 --> 00:20:04,969 Also zuerst, ich habe kommentiert der Code, das ist schön. 456 00:20:04,969 --> 00:20:07,010 Weil es buchstäblich Erzählen Sie mir, was zu erwarten ist, 457 00:20:07,010 --> 00:20:08,950 Anzeige eine Zuordnung für Großbuchstaben. 458 00:20:08,950 --> 00:20:13,690 Nun weiß ich nicht recht, was ich damit meine, also lasst uns zu schließen. 459 00:20:13,690 --> 00:20:16,870 >> In Englisch, vielleicht Technikfreak etwas Englisch, 460 00:20:16,870 --> 00:20:20,660 was macht die Leitung 18 erscheinen zu tun für uns? 461 00:20:20,660 --> 00:20:21,500 Nur Zeile 18. 462 00:20:21,500 --> 00:20:22,430 Wie ist es zu induzieren? 463 00:20:22,430 --> 00:20:25,192 Was es wird, hier zu beginnen? 464 00:20:25,192 --> 00:20:26,100 >> ZIELGRUPPE: Eine Schleife. 465 00:20:26,100 --> 00:20:26,630 >> David J. MALAN: Eine Schleife. 466 00:20:26,630 --> 00:20:28,463 Und wie oft ist dass geht zu durchlaufen? 467 00:20:28,463 --> 00:20:31,562 468 00:20:31,562 --> 00:20:33,270 ZIELGRUPPE: [Zwischen Stimmen] sechsmal. 469 00:20:33,270 --> 00:20:34,830 David J. MALAN: Nicht sechsmal. 470 00:20:34,830 --> 00:20:35,840 ZIELGRUPPE: 26 mal. 471 00:20:35,840 --> 00:20:36,560 David J. MALAN: 26 mal. 472 00:20:36,560 --> 00:20:37,060 Ja, sorry. 473 00:20:37,060 --> 00:20:37,960 26 mal. 474 00:20:37,960 --> 00:20:38,460 Warum? 475 00:20:38,460 --> 00:20:41,590 Nun, es ist ein wenig seltsam, aber Ich habe das Zählen von 65 gestartet. 476 00:20:41,590 --> 00:20:43,300 Welches ist seltsam, aber nicht falsch. 477 00:20:43,300 --> 00:20:44,610 Es ist nicht schlecht pro sagen. 478 00:20:44,610 --> 00:20:46,980 Und ich mache das nur weil in diesem Beispiel 479 00:20:46,980 --> 00:20:50,455 Ich bin eine Art Vorwegnahme dass das Kapital A war 65. 480 00:20:50,455 --> 00:20:53,330 Nun ist dies nicht die eleganteste Weg, dies zu tun, die Art der Festcode 481 00:20:53,330 --> 00:20:56,130 esoterischen Werte, die niemand wird immer erwartet, dass sie sich erinnern. 482 00:20:56,130 --> 00:21:00,155 >> Aber jetzt merke, dass ich bin Dabei oben durch 65 plus 26. 483 00:21:00,155 --> 00:21:03,030 Weil anscheinend ich will gar nicht um die Arithmetik in meinem Kopf zu tun. 484 00:21:03,030 --> 00:21:04,440 Also lasse ich die Compiler tun. 485 00:21:04,440 --> 00:21:08,600 Aber dann auf jeder Schleife, jede Iteration der Schleife, ich bin Erhöhen ich. 486 00:21:08,600 --> 00:21:10,196 >> So, jetzt sieht das ein wenig kryptisch. 487 00:21:10,196 --> 00:21:13,320 Aber wir sollten die Grund Gebäude haben Blöcke, mit denen dies zu verstehen. 488 00:21:13,320 --> 00:21:15,510 % C ist nur ein Platzhalter für ein Zeichen. 489 00:21:15,510 --> 00:21:19,010 % I ist ein Platzhalter für einen int. 490 00:21:19,010 --> 00:21:23,310 Und es stellt sich heraus, dass durch die Verwendung dieser neue Syntax, diese in Klammern, so 491 00:21:23,310 --> 00:21:26,100 zu sprechen, so einen Datentyp in einer Klammer, 492 00:21:26,100 --> 00:21:32,270 Ich kann den Compiler zu zwingen, zu behandeln i keine ganze Zahl, sondern als char. 493 00:21:32,270 --> 00:21:35,520 >> Dabei zeigt mir den Charakter Äquivalent dieser Zahl. 494 00:21:35,520 --> 00:21:37,986 Jetzt hier unten, dieser Code ist so ziemlich identisch. 495 00:21:37,986 --> 00:21:39,860 Ich wollte nur sicherstellen, Super expliziten die Tatsache, 496 00:21:39,860 --> 00:21:42,095 dass ich mit 97 ab, die Kleinbuchstaben ein. 497 00:21:42,095 --> 00:21:44,080 Auf bis über 26 weitere Buchstaben. 498 00:21:44,080 --> 00:21:46,970 Und ich bin wieder doing--, Gießen i, so zu sprechen. 499 00:21:46,970 --> 00:21:49,160 Oder Typumwandlung i, so zu sprechen. 500 00:21:49,160 --> 00:21:51,420 >> Von einem int auf ein char. 501 00:21:51,420 --> 00:21:55,760 So das Ergebnis sein wird, ehrlich gesagt, Informationen, die wir bereits kennen. 502 00:21:55,760 --> 00:21:59,411 Ich werde dafür sorgen, ASCII-0 dot-- nicht dot c. 503 00:21:59,411 --> 00:22:02,160 Beachten Sie, dass Sie wahrscheinlich gemacht Fehler, wie ich gerade tat versehentlich. 504 00:22:02,160 --> 00:22:03,820 Machen ascii-0. 505 00:22:03,820 --> 00:22:06,090 Jetzt werde ich zu ./ascii-0 zu tun. 506 00:22:06,090 --> 00:22:09,050 Ich werde heranzoomen, und leider es wird über den Bildschirm. 507 00:22:09,050 --> 00:22:15,060 Aber wir sehen eine ganze Diagramm, wo eine Karten zu 97, Karten zu 98 b, 508 00:22:15,060 --> 00:22:18,931 und wenn wir nach oben weiter Ein natürlich Karten 65. 509 00:22:18,931 --> 00:22:21,180 Das ist also nur zu sagen, dass was wir gepredigt, 510 00:22:21,180 --> 00:22:25,310 gibt es diese Gleichwertigkeit wird in der Tat der Fall ist in der Realität. 511 00:22:25,310 --> 00:22:28,000 So eine schnelle Änderung dieser. 512 00:22:28,000 --> 00:22:31,220 Lassen Sie mich zu öffnen ascii-1.c. 513 00:22:31,220 --> 00:22:38,070 Und beachten Sie diese kluge, sortieren der Klärung dieser. 514 00:22:38,070 --> 00:22:41,770 Dies ist ascii-1.c und feststellen, diese verrückte Sache. 515 00:22:41,770 --> 00:22:45,120 >> Und das ist wirklich trifft den Kern von welchem ​​Computer tun. 516 00:22:45,120 --> 00:22:48,150 Auch wenn wir Menschen würden nicht im Sinne von letters-- zählen 517 00:22:48,150 --> 00:22:50,380 Ich glaube nicht daran, zu starten, gut ein, dann b, 518 00:22:50,380 --> 00:22:52,590 und verwenden Sie diese, um physische Objekte zu zählen. 519 00:22:52,590 --> 00:22:58,680 Man kann sicherlich sagen, dass ich initialisieren eine Variable namens c-- 520 00:22:58,680 --> 00:23:03,220 aber ich konnte diese anything-- genannt haben so ist c, Kapital A. initialisiert 521 00:23:03,220 --> 00:23:07,560 >> Da am Ende des Tages, den Computer ist es egal, was du bist Speicherung, 522 00:23:07,560 --> 00:23:10,170 es kümmert sich nur, wie Sie wollen um diese Informationen zu präsentieren. 523 00:23:10,170 --> 00:23:13,560 Wie beurteilen Sie den Computer zu wollen interpretieren, dass die Muster von Bits? 524 00:23:13,560 --> 00:23:16,320 Das ist also nicht etwas, was ich würde generell empfehlen, tun. 525 00:23:16,320 --> 00:23:19,500 Es ist wirklich nur ein Beispiel zu vermitteln, dass Sie absolut 526 00:23:19,500 --> 00:23:22,049 initialisieren eine ganze Zahl auf ein char. 527 00:23:22,049 --> 00:23:24,090 Denn unter der Motorhaube eines char, natürlich, 528 00:23:24,090 --> 00:23:26,170 ist nur eine Zahl von 0 bis 255. 529 00:23:26,170 --> 00:23:28,540 >> So können Sie sicher legte es in einer Int. 530 00:23:28,540 --> 00:23:30,890 Und was dies auch zeigt, ist, dass wir 531 00:23:30,890 --> 00:23:34,040 kann von einem konvertieren Typ zu einem anderen, hier 532 00:23:34,040 --> 00:23:36,780 schließlich Druck elbe. 533 00:23:36,780 --> 00:23:44,760 Und in der Tat, das werde ich beheben online-- gemeint war, das zu sagen, wieder hier. 534 00:23:44,760 --> 00:23:48,610 Lassen Sie mich diese sich online zu reinigen, und wir werden sehen in einer Online-Komplettlösung nach Bedarf 535 00:23:48,610 --> 00:23:50,280 was dort gedacht. 536 00:23:50,280 --> 00:23:50,960 >> Ok. 537 00:23:50,960 --> 00:23:53,892 Also letzte Beispiel jetzt mit a und b und dann werden wir 538 00:23:53,892 --> 00:23:54,850 nehmen die Dinge eine Kerbe. 539 00:23:54,850 --> 00:23:58,330 Also mit ein und b und c in der Aktivierung 540 00:23:58,330 --> 00:24:01,560 und die Gleichwertigkeit davon, lassen Sie uns einen Blick auf dieses Beispiel hier. 541 00:24:01,560 --> 00:24:02,752 Ein weiterer Code-Beispiel. 542 00:24:02,752 --> 00:24:04,460 Wir werden eine, die ist offen schon gemacht, so dass wir 543 00:24:04,460 --> 00:24:06,440 nicht haben, um es zu tippen alle aus aus dem Nichts. 544 00:24:06,440 --> 00:24:09,420 >> Und in Erwartung bemerken wir mit mehreren Kopf sind 545 00:24:09,420 --> 00:24:13,240 Dateien, unter denen unser neuer Freund, string.h. 546 00:24:13,240 --> 00:24:15,597 Jetzt sieht das auf den ersten Blick, ein wenig kryptisch. 547 00:24:15,597 --> 00:24:18,180 Aber lassen Sie uns sehen, ob wir nicht die Vernunft durch das, was hier vor sich geht. 548 00:24:18,180 --> 00:24:21,150 Zuerst einen String bekomme ich vom Benutzer, und ich habe diese Zeichenfolge in einer Variablen 549 00:24:21,150 --> 00:24:22,286 s genannt. 550 00:24:22,286 --> 00:24:24,090 Copy & Paste aus der Zeit vor. 551 00:24:24,090 --> 00:24:27,250 In Zeile 22, ich bin anscheinend tut genau das, was 552 00:24:27,250 --> 00:24:30,760 Ich habe vor einem Moment, ich bin Iteration über die Zeichen in s. 553 00:24:30,760 --> 00:24:34,780 >> Und die neuen Tricks werden hier mit String-Länge, die kleine Optimierung 554 00:24:34,780 --> 00:24:37,930 der Speicherung der String-Länge n, eher als der Aufruf wieder strlen, 555 00:24:37,930 --> 00:24:38,850 und wieder und wieder. 556 00:24:38,850 --> 00:24:41,120 Und nur die Überprüfung, dass ich weniger als n ist. 557 00:24:41,120 --> 00:24:43,330 Jetzt ist hier, werden die Dinge ein wenig interessant. 558 00:24:43,330 --> 00:24:45,980 Aber es ist nur eine Anwendung dieses gleiche neue Idee. 559 00:24:45,980 --> 00:24:48,470 Was in Englisch tut s Bügel i dar? 560 00:24:48,470 --> 00:24:51,772 561 00:24:51,772 --> 00:24:54,260 >> ZIELGRUPPE: Zählung der jeweils Charakter [unverständlich]. 562 00:24:54,260 --> 00:24:55,926 >> David J. MALAN: Zählung der einzelnen Zeichen. 563 00:24:55,926 --> 00:24:58,680 Und noch mehr kurz und bündig, s Halterung, die ich vertrete, was? 564 00:24:58,680 --> 00:25:00,950 Würden Sie sagen. 565 00:25:00,950 --> 00:25:04,084 Nicht auf Sie auf der Stelle hier setzen. 566 00:25:04,084 --> 00:25:06,375 >> ZIELGRUPPE: Well-- 567 00:25:06,375 --> 00:25:09,500 David J. MALAN: Also, wenn das Wort, wenn ist-- der String Zamyla, die starts-- 568 00:25:09,500 --> 00:25:12,380 ZIELGRUPPE: --Sie befassen sich mit die Zeichen separately-- 569 00:25:12,380 --> 00:25:13,690 David J. MALAN: Gut. 570 00:25:13,690 --> 00:25:14,190 Genau. 571 00:25:14,190 --> 00:25:17,940 Die eckige Klammer-Notation können Sie um jedes Zeichen einzeln zuzugreifen, 572 00:25:17,940 --> 00:25:21,120 so s Klammer 0 wird den sein erste Zeichen in der Zeichenfolge. 573 00:25:21,120 --> 00:25:24,110 s Winkel 1 sein wird, das zweite, und so weiter. 574 00:25:24,110 --> 00:25:28,050 So ist die Frage, die ich fragen, hier, in diesem Zustand ist, was? 575 00:25:28,050 --> 00:25:33,984 Ist die i-te Zeichen von s größer oder gleich in Kleinbuchstaben ein? 576 00:25:33,984 --> 00:25:36,400 Und was bedeutet das, hier, mit den Doppel Et-Zeichen? 577 00:25:36,400 --> 00:25:36,800 Publikum (zusammen): Und. 578 00:25:36,800 --> 00:25:37,210 David J. MALAN: Und. 579 00:25:37,210 --> 00:25:38,418 Es ist nur entspricht diese. 580 00:25:38,418 --> 00:25:42,310 Und ist das nicht ein Schlüsselwort in C, müssen Sie Einsatz, ärgerlich, Kaufmanns-Und-Zeichen. 581 00:25:42,310 --> 00:25:47,520 Und dies ist umgekehrt, fragt S i-ten Zeichen weniger als oder gleich 582 00:25:47,520 --> 00:25:49,030 in Kleinbuchstaben z? 583 00:25:49,030 --> 00:25:52,440 Und wieder, hier, wo Verständnis der zugrunde liegenden 584 00:25:52,440 --> 00:25:54,550 Umsetzung eines Computer macht Sinn. 585 00:25:54,550 --> 00:25:57,330 Beachten Sie, dass, auch wenn ich der Punkt Punkt Punkt dort, 586 00:25:57,330 --> 00:26:04,410 sieht aus wie a bis z in Kleinbuchstaben werden alle zusammenhängenden Werte bis 97 auf bis. 587 00:26:04,410 --> 00:26:07,820 >> Und gleich für Großbuchstaben ab 65. 588 00:26:07,820 --> 00:26:10,410 So dass die Gerichte zum Mitnehmen, dann, ist, dass in Deutsch, Englisch, 589 00:26:10,410 --> 00:26:12,760 Wie würden Sie welche Zeile 24 tut? 590 00:26:12,760 --> 00:26:15,736 591 00:26:15,736 --> 00:26:16,728 Ja? 592 00:26:16,728 --> 00:26:21,575 >> ZIELGRUPPE: Am 24. ist es zu überprüfen, ob jedes Zeichen ist ein Kleinbuchstaben. 593 00:26:21,575 --> 00:26:24,700 David J. MALAN: Es ist zu prüfen, ob Jedes Zeichen ist ein Kleinbuchstabe. 594 00:26:24,700 --> 00:26:28,590 Also noch kurz und bündig, ist die i-ten Charakter der Klein s? 595 00:26:28,590 --> 00:26:30,690 Das ist alles, wir sind hier logisch auszudrücken, 596 00:26:30,690 --> 00:26:33,750 ein wenig kryptisch, aber letztlich ziemlich unkompliziert. 597 00:26:33,750 --> 00:26:36,480 S ist der i-te Zeichen in Kleinbuchstaben? 598 00:26:36,480 --> 00:26:40,130 >> Wenn ja, und hier ist, wo die Dinge ein wenig Geist Biegen 599 00:26:40,130 --> 00:26:44,760 nur für einen Augenblick, und wenn ja, gehen vor und drucken Sie ein Zeichen. 600 00:26:44,760 --> 00:26:47,360 Also das ist nur ein Platzhalter, was aber Charakter? 601 00:26:47,360 --> 00:26:53,710 Warum mache ich s i Halterung minus dieser Ausdruck hier? 602 00:26:53,710 --> 00:26:55,110 >> Nun bemerken das Muster hier. 603 00:26:55,110 --> 00:26:57,380 Die tatsächlichen Zahlen nicht so sehr wichtig. 604 00:26:57,380 --> 00:27:02,700 Aber feststellen, dass 97 wie weit weg von 65? 605 00:27:02,700 --> 00:27:03,560 >> ZIELGRUPPE: 32. 606 00:27:03,560 --> 00:27:04,480 >> David J. MALAN: 32. 607 00:27:04,480 --> 00:27:06,890 Wie weit ist 98 von 66? 608 00:27:06,890 --> 00:27:07,740 >> ZIELGRUPPE: 32. 609 00:27:07,740 --> 00:27:09,890 >> David J. MALAN: Wenig c von Big C? 610 00:27:09,890 --> 00:27:10,420 32. 611 00:27:10,420 --> 00:27:14,550 Es gibt also 32 Hopfen aus Ein Brief zum anderen. 612 00:27:14,550 --> 00:27:17,790 Also ehrlich gesagt, ich, konnte vereinfachen, dass diese auf. 613 00:27:17,790 --> 00:27:20,400 Aber dann bin ich ein bisschen hart zu kodieren Dieses niedrige Niveau Verständnis 614 00:27:20,400 --> 00:27:21,740 dass kein Leser jemals los zu verstehen. 615 00:27:21,740 --> 00:27:25,080 Also ich werde es so verallgemeinern, ich wissen, dass die Kleinbuchstaben sind größer. 616 00:27:25,080 --> 00:27:28,400 Ich weiß, die Buchstaben sind kleinere Werte, ironisch. 617 00:27:28,400 --> 00:27:33,216 >> Aber dies ist effektiv äquivalent sagen subtrahieren 32 von s i Halterung. 618 00:27:33,216 --> 00:27:35,430 So im Rahmen dieser Briefe, wenn der Buchstabe 619 00:27:35,430 --> 00:27:38,950 geschieht, ein, klein geschrieben werden A und I zu subtrahieren 32, 620 00:27:38,950 --> 00:27:43,442 Welche Auswirkungen das haben wird, mathematisch, auf Kleinbuchstaben a? 621 00:27:43,442 --> 00:27:44,400 ZIELGRUPPE: Capitalizes-- 622 00:27:44,400 --> 00:27:45,691 David J. MALAN: Wandelt es. 623 00:27:45,691 --> 00:27:48,440 Und in der Tat, das ist, warum unsere Programm heißt Kapital Null. 624 00:27:48,440 --> 00:27:51,590 Dieses Programm entweder nutzt einen Brief, 625 00:27:51,590 --> 00:27:54,580 nach der Überprüfung, ob es in der Tat ein Kleinbuchstabe. 626 00:27:54,580 --> 00:27:59,810 Ansonsten in Zeile 30, was soll ich tun, wenn es ist nicht ein Kleinbuchstabe, dass ich 627 00:27:59,810 --> 00:28:02,852 Blick auf zu einem bestimmten Iteration in der Schleife. 628 00:28:02,852 --> 00:28:03,890 Nur ausdrucken. 629 00:28:03,890 --> 00:28:07,010 >> Also nicht Sachen ändern das ist nicht einmal Kleinbuchstaben. 630 00:28:07,010 --> 00:28:10,790 Beschränken Sie sich auf wenig ein wenig durch z. 631 00:28:10,790 --> 00:28:12,730 Nun, das ist ziemlich obskuren. 632 00:28:12,730 --> 00:28:15,230 Aber am Ende des Tages, diese ist, wie wir, es war einmal, 633 00:28:15,230 --> 00:28:16,460 hatte, die Dinge umzusetzen. 634 00:28:16,460 --> 00:28:19,780 Wenn ich statt öffnen zu nutzen eine, oh Gott sei Dank. 635 00:28:19,780 --> 00:28:22,320 Es gibt eine Funktion bis oberen genannt Das kann 636 00:28:22,320 --> 00:28:25,410 tun alles, was wir gerade getan auf einem recht niedrigen Niveau. 637 00:28:25,410 --> 00:28:28,752 >> Nun zu den oberen ist interessant denn es wird in einer Datei erklärt, 638 00:28:28,752 --> 00:28:31,210 und Sie würden nur wissen, durch Überprüfung der Unterlagen, 639 00:28:31,210 --> 00:28:35,730 oder gesagt, sagen wir, in der Klasse, wo es existiert, in einer Datei namens ctype.h. 640 00:28:35,730 --> 00:28:37,630 Also das ist ein weiterer neuer Freund von uns. 641 00:28:37,630 --> 00:28:40,750 Und genau das tut, Ober , was der Name vermuten lässt. 642 00:28:40,750 --> 00:28:44,860 >> Sie können passieren in, als Argument, zwischen Diese Klammern, einige Charakter. 643 00:28:44,860 --> 00:28:48,390 Ich werde in der i-ten Charakter geben von s mit unserer Phantasie neue Notation 644 00:28:48,390 --> 00:28:49,870 mit eckigen Klammern. 645 00:28:49,870 --> 00:28:53,391 Und nehmen Sie eine Vermutung, was ist die Rückkehr Wert von bis oberen offenbar gehen 646 00:28:53,391 --> 00:28:53,890 zu sein? 647 00:28:53,890 --> 00:28:56,460 648 00:28:56,460 --> 00:28:57,770 Einem Großbuchstaben. 649 00:28:57,770 --> 00:28:58,620 Einem Großbuchstaben. 650 00:28:58,620 --> 00:29:02,330 >> Also, wenn ich pass in Kleinbuchstaben a, hoffentlich, nach Definition von der oberen, 651 00:29:02,330 --> 00:29:05,600 es geht um eine Rückkehr Großbuchstaben A. Andernfalls 652 00:29:05,600 --> 00:29:08,590 wenn es nicht ein Kleinbuchstabe in der erste Ort, ich habe gerade ausdrucken. 653 00:29:08,590 --> 00:29:10,800 Und in der Tat feststellen, dass die zweiten Freund hier. 654 00:29:10,800 --> 00:29:13,840 Nicht nur zu den oberen existiert, aber niedriger ist, was 655 00:29:13,840 --> 00:29:16,200 tatsächlich beantwortet diese Frage für mich. 656 00:29:16,200 --> 00:29:19,730 >> Nun, wer diese Dinge schrieb, 10s von Jahren, wissen Sie was? 657 00:29:19,730 --> 00:29:23,840 Implementiert, um obere und ist senken mit Code wie diesen. 658 00:29:23,840 --> 00:29:27,270 Aber noch einmal, im Einklang mit Diese Idee der Abstraktion weg, 659 00:29:27,270 --> 00:29:29,190 Art, unteren Ebene Details der Implementierung. 660 00:29:29,190 --> 00:29:32,600 Und auf den Schultern von Menschen stehen die vor uns kamen, mit Hilfe von Funktionen 661 00:29:32,600 --> 00:29:36,300 wie obere und untere ist, die wunderbar genug sind schön 662 00:29:36,300 --> 00:29:40,190 Namen zu sagen, was sie tun, ist ein wunderbares Paradigma zu verabschieden. 663 00:29:40,190 --> 00:29:44,040 >> Jetzt stellt sich heraus, dass, wenn ich lesen Die man-Seite für, sagen wir, zu den oberen, 664 00:29:44,040 --> 00:29:45,010 Ich lerne etwas anderes. 665 00:29:45,010 --> 00:29:46,890 So wird der Mensch toUpper. 666 00:29:46,890 --> 00:29:48,050 Es ist ein wenig überwältigend. 667 00:29:48,050 --> 00:29:51,110 Aber beachten Sie, hier ist die Rede von Die Header-Datei, die ich verwenden soll. 668 00:29:51,110 --> 00:29:54,460 Nebenbei bemerkt, weil diese ist irreführend, die Funktion 669 00:29:54,460 --> 00:29:59,070 verwendet ints statt Zeichen aus Gründen der Fehlerprüfung. 670 00:29:59,070 --> 00:30:01,260 Aber wir werden vielleicht kommen Zurück zu der in der Zukunft. 671 00:30:01,260 --> 00:30:05,910 >> Aber beachten Sie, hier, zu den oberen Konvertiten der Buchstabe c, um, wenn möglich, in Großbuchstaben. 672 00:30:05,910 --> 00:30:07,674 Also das ist ziemlich einfach. 673 00:30:07,674 --> 00:30:09,340 Und nun ein wenig präziser zu lassen. 674 00:30:09,340 --> 00:30:12,750 Schauen wir uns den Teil des man-Seite unter Rückgabewert. 675 00:30:12,750 --> 00:30:15,420 Der zurückgegebene Wert ist, dass des umgewandelten Brief. 676 00:30:15,420 --> 00:30:18,690 Oder c, wenn die Umwandlung nicht möglich war, 677 00:30:18,690 --> 00:30:20,250 wobei c die ursprünglichen Eingangs. 678 00:30:20,250 --> 00:30:24,140 Ich weiß, was von hier aus Das Argument für den oberen. 679 00:30:24,140 --> 00:30:25,780 >> Also, was ist das Mitnehmen von diesem? 680 00:30:25,780 --> 00:30:28,060 Der zurückgegebene Wert ist, dass Schreiben der konvertierten, 681 00:30:28,060 --> 00:30:32,110 oder c, das Original des Briefes, wenn die Umsetzung war nicht möglich. 682 00:30:32,110 --> 00:30:36,460 Was kann ich damit Verbesserung machen, um meinen Code-Design? 683 00:30:36,460 --> 00:30:37,146 Ja? 684 00:30:37,146 --> 00:30:38,810 >> ZIELGRUPPE: Sie können die sonst zu entfernen. 685 00:30:38,810 --> 00:30:40,810 David J. MALAN: Ich kann entfernen Sie die else-Anweisung, 686 00:30:40,810 --> 00:30:42,510 und nicht nur die else-Anweisung. 687 00:30:42,510 --> 00:30:44,150 >> ZIELGRUPPE: Sie können entfernen [unverständlich]. 688 00:30:44,150 --> 00:30:46,310 >> David J. MALAN: Ich kann entfernen Sie die gesamte Gabel 689 00:30:46,310 --> 00:30:48,209 in der Straße, die, wenn ganz anderes. 690 00:30:48,209 --> 00:30:50,250 Also ja, lassen Sie mich zu öffnen die endgültige Version davon, 691 00:30:50,250 --> 00:30:55,540 Kapital-2 und bemerken, wie, wenn Sie werden, sexy, der Code ist jetzt immer, 692 00:30:55,540 --> 00:31:00,040 in, dass ich von einigen reduziert sieben oder so auf nur vier Zeilen, 693 00:31:00,040 --> 00:31:03,850 die Funktionalität, die ich bestimmt einfach durch Aufruf der oberen, 694 00:31:03,850 --> 00:31:09,410 vorbei in s i Halterung und Druck aus, mit dem Platzhalter% C, 695 00:31:09,410 --> 00:31:11,090 dass insbesondere Charakter. 696 00:31:11,090 --> 00:31:14,560 >> Nun wohl, es ist ein Fehler, oder zumindest die Gefahr eines Fehlers, 697 00:31:14,560 --> 00:31:15,350 in diesem Programm. 698 00:31:15,350 --> 00:31:18,200 Also einfach zurückkommen zu einem früheren Service, 699 00:31:18,200 --> 00:31:21,820 was soll ich wohl auch tun, in dieses Programm es robuster zu machen, 700 00:31:21,820 --> 00:31:24,974 so dass es keine Möglichkeit gibt es kann Absturz, auch in seltenen Fällen? 701 00:31:24,974 --> 00:31:26,390 ZIELGRUPPE: Stellen Sie sicher, es ist nicht NULL. 702 00:31:26,390 --> 00:31:28,056 David J. MALAN: Stellen Sie sicher, es ist nicht NULL. 703 00:31:28,056 --> 00:31:31,030 Also wirklich, um diese super machen richtig, ich sollte etwas tun, 704 00:31:31,030 --> 00:31:35,300 wenn s nicht NULL ist, dann gehen Sie vor und führen 705 00:31:35,300 --> 00:31:38,470 Diese Zeilen Code, die Ich kann dann Gedankenstrich so, 706 00:31:38,470 --> 00:31:39,870 und dann in meiner engen Klammer setzen. 707 00:31:39,870 --> 00:31:41,550 So gut, Zusammenbinden der beiden Ideen. 708 00:31:41,550 --> 00:31:42,429 Ja? 709 00:31:42,429 --> 00:31:44,470 ZIELGRUPPE: Könnten Sie verwenden eine do while-Schleife, statt? 710 00:31:44,470 --> 00:31:47,270 David J. MALAN: Könnte Ich eine do-while-Schleife zu tun? 711 00:31:47,270 --> 00:31:50,020 ZIELGRUPPE: --Sie sicherstellen möchten, dass Sie tatsächlich [unverständlich]. 712 00:31:50,020 --> 00:31:51,728 David J. MALAN: Könnte Sie eine Do While verwenden? 713 00:31:51,728 --> 00:31:52,450 Kurze Antwort, nein. 714 00:31:52,450 --> 00:31:54,700 Weil Sie gerade sind Einführung weiterer Eckball Fall. 715 00:31:54,700 --> 00:31:56,660 Wenn die Zeichenfolge der Länge Null. 716 00:31:56,660 --> 00:31:59,600 Wenn ich zum Beispiel einfach auf Geben Sie, ohne jemals die Eingabe Zamyla. 717 00:31:59,600 --> 00:32:02,490 Ich werde Sie wieder von Hand eine tatsächliche String, wie wir sehen, schließlich, 718 00:32:02,490 --> 00:32:03,780 das hat Null-Zeichen. 719 00:32:03,780 --> 00:32:05,630 Es ist immer noch ein String ist, es ist einfach super kurz. 720 00:32:05,630 --> 00:32:07,960 Aber wenn Sie ein Do While verwenden, wirst du blind 721 00:32:07,960 --> 00:32:10,050 versuchen, etwas zu tun mit in Bezug auf diese Schnur, 722 00:32:10,050 --> 00:32:12,537 und nichts los ist, dort zu sein. 723 00:32:12,537 --> 00:32:18,607 >> ZIELGRUPPE: Nun, wenn Sie getan haben tun [unverständlich], während s-- 724 00:32:18,607 --> 00:32:21,190 David J. MALAN: Oh ich sehe, halten immer ein String von dem Benutzer. 725 00:32:21,190 --> 00:32:23,525 So kurze Antwort, die Sie könnte, und halten Sie belästigen 726 00:32:23,525 --> 00:32:26,150 sie Ihnen eine Zeichenfolge, die ist zu geben kurz genug, um in den Speicher passen. 727 00:32:26,150 --> 00:32:26,700 Absolut. 728 00:32:26,700 --> 00:32:27,630 Ich wählte nicht zu. 729 00:32:27,630 --> 00:32:30,505 Wenn sie mir nicht die Saite, die ich wollen, ich bin verlassen, ich gebe auf. 730 00:32:30,505 --> 00:32:33,260 Aber absolut, zu diesem Zweck, Sie konnte absolut das tun. 731 00:32:33,260 --> 00:32:37,500 >> So Header-Dateien der Bibliothek, dass wir sind jetzt vertraut mit diesen hier. 732 00:32:37,500 --> 00:32:41,550 Standard-I / O, CS50.h, string.h, ctype.h, und es gibt in der Tat andere. 733 00:32:41,550 --> 00:32:44,460 Einige von euch haben entdeckt, die Mathematik-Bibliothek in der Datei math.h. 734 00:32:44,460 --> 00:32:48,200 Aber lassen Sie mich Ihnen vorstellen, jetzt, zu diese Ressource, die CS50 Personal, Davin, 735 00:32:48,200 --> 00:32:50,630 und Rob, und Gabe insbesondere zusammengestellt haben. 736 00:32:50,630 --> 00:32:52,630 Das wird sich bald verlinken auf Website des Kurses. 737 00:32:52,630 --> 00:32:54,870 Es heißt CS50 Referenz. 738 00:32:54,870 --> 00:32:58,230 >> Das ist nur, um Ihnen einen schnellen geben Geschmack davon, funktioniert wie folgt. 739 00:32:58,230 --> 00:33:00,740 Lassen Sie mich gehen, um reference.cs50.net. 740 00:33:00,740 --> 00:33:02,990 Sie werden auf der linken Hand zu sehen Seite eine überwältigende Liste 741 00:33:02,990 --> 00:33:04,595 von Funktionen, die mit c kommen. 742 00:33:04,595 --> 00:33:07,790 Aber wenn ich zu kümmern, für den Augenblick, über so etwas wie strlen, 743 00:33:07,790 --> 00:33:08,746 Ich kann es dort geben. 744 00:33:08,746 --> 00:33:10,870 Es filtert die Liste um genau das, was mich interessiert. 745 00:33:10,870 --> 00:33:11,940 Ich werde darauf klicken. 746 00:33:11,940 --> 00:33:14,740 Und jetzt auf der linken Seite, Sie werden sehen, was wir hoffen, 747 00:33:14,740 --> 00:33:18,290 ist ein einfacher, Menschen freundliche Erklärung, wie 748 00:33:18,290 --> 00:33:19,170 Diese Funktion arbeitet. 749 00:33:19,170 --> 00:33:20,600 >> Gibt die Länge eines Strings. 750 00:33:20,600 --> 00:33:24,060 Hier ist eine Übersicht, hier ist, wie Sie verwenden Sie es in Bezug auf die Header-Datei, 751 00:33:24,060 --> 00:33:27,430 und in dem, was der Funktion sieht aus wie in Bezug auf seine Argumente. 752 00:33:27,430 --> 00:33:30,250 Und dann hier, Renditen die Länge einer Zeichenkette. 753 00:33:30,250 --> 00:33:34,280 Aber für diejenigen von Ihnen, noch komfortabler, Sie können tatsächlich auf mehr bequem, 754 00:33:34,280 --> 00:33:37,070 und der Inhalt dieser Seite, jetzt wird sich ändern 755 00:33:37,070 --> 00:33:41,660 Um die Standardwerte von dem, was sein Sie erhalten, indem Sie die man-Seite. 756 00:33:41,660 --> 00:33:44,100 >> Mit anderen Worten, CS50 Referenz ist eine Vereinfachung 757 00:33:44,100 --> 00:33:46,220 von man-Seiten von den Mitarbeitern, für Studenten. 758 00:33:46,220 --> 00:33:49,320 Insbesondere diejenigen, weniger komfortabel und dazwischen, so dass Sie 759 00:33:49,320 --> 00:33:51,660 nicht zu versuchen, wickeln euer Gehirn um, ehrlich gesagt, 760 00:33:51,660 --> 00:33:55,030 einige ziemlich kryptische Syntax und Dokumentation irgendwann. 761 00:33:55,030 --> 00:33:57,650 >> So halten, dass, in den kommenden Tagen. 762 00:33:57,650 --> 00:33:59,560 So, hier ist wieder ein Zamyla. 763 00:33:59,560 --> 00:34:03,255 Lassen Sie uns nun fragen, eine Frage, die ist ein wenig mehr menschliche zugänglich. 764 00:34:03,255 --> 00:34:05,380 Dank Chang, der gewesen ist Drucken mehr Elefanten 765 00:34:05,380 --> 00:34:07,090 Nonstop in den letzten paar Tagen. 766 00:34:07,090 --> 00:34:09,730 Wir haben die Möglichkeit zu geben, mindestens einer von ihnen weg. 767 00:34:09,730 --> 00:34:13,239 Wenn wir nur einen Freiwilligen zu bekommen auf bis zu kommen auf dem Bildschirm zeichnen. 768 00:34:13,239 --> 00:34:14,530 Wie wäre es hier? 769 00:34:14,530 --> 00:34:15,340 >> Komm auf. 770 00:34:15,340 --> 00:34:16,720 Wie heißen Sie? 771 00:34:16,720 --> 00:34:17,219 Alex: Alex. 772 00:34:17,219 --> 00:34:17,760 David J. MALAN: Alex. 773 00:34:17,760 --> 00:34:18,259 In Ordnung. 774 00:34:18,259 --> 00:34:19,388 Alex, komm auf. 775 00:34:19,388 --> 00:34:21,679 Wir sind dabei zu sehen, Ihre Handschrift auf dem Bildschirm hier. 776 00:34:21,679 --> 00:34:24,325 777 00:34:24,325 --> 00:34:25,570 Alles klar, schön, Sie zu treffen. 778 00:34:25,570 --> 00:34:26,429 >> ALEX: Nice Sie kennen zu lernen. 779 00:34:26,429 --> 00:34:27,512 >> David J. MALAN: In Ordnung. 780 00:34:27,512 --> 00:34:28,969 Also, super einfache Übung. 781 00:34:28,969 --> 00:34:31,440 Bar ist nicht hoch bekommen einen Elefanten heute. 782 00:34:31,440 --> 00:34:33,439 Sie sind in der Rolle des getstring. 783 00:34:33,439 --> 00:34:35,980 Und ich werde nur sagen, die Zeichenfolge, die Sie bekommen haben. 784 00:34:35,980 --> 00:34:38,080 Und annehmen, dass Sie, getstring, genannt worden. 785 00:34:38,080 --> 00:34:42,480 Und der Mensch, wie ich, in Zamyla, Z-A-M-Y-L-A getippt. 786 00:34:42,480 --> 00:34:45,650 Dann nichts wie los und schreiben Zamyla auf die Bildschirm, als ob Sie es bekommen haben 787 00:34:45,650 --> 00:34:47,250 und gespeichert es irgendwo im Speicher. 788 00:34:47,250 --> 00:34:52,370 789 00:34:52,370 --> 00:34:55,570 >> Raum lassen für das, was sein wird mehrere Wörter des anderen, die OK ist, weiterzumachen. 790 00:34:55,570 --> 00:34:59,620 >> [Gelächter] 791 00:34:59,620 --> 00:35:00,800 >> So Zamyla, Excellent. 792 00:35:00,800 --> 00:35:04,880 So, jetzt annehmen, dass Sie, getstring, werden wieder aufgerufen. 793 00:35:04,880 --> 00:35:09,350 Und deshalb biete ich Ihnen, bei der Tastatur, mit einem anderen Namen, Belinda. 794 00:35:09,350 --> 00:35:17,560 795 00:35:17,560 --> 00:35:18,060 In Ordnung. 796 00:35:18,060 --> 00:35:22,380 Und jetzt die nächste Zeit ist getstring genannt wird, tippe ich in so etwas wie Gabe, 797 00:35:22,380 --> 00:35:27,560 G-A-B-E. Du bist wirklich unter Herzdirektzugriffsspeicher. 798 00:35:27,560 --> 00:35:29,631 Welches ist alles Zeichnung völlig zufällig. 799 00:35:29,631 --> 00:35:30,130 Ok. 800 00:35:30,130 --> 00:35:31,104 >> [Gelächter] 801 00:35:31,104 --> 00:35:32,520 ALEX: Sorry meine Handschrift ist schlecht. 802 00:35:32,520 --> 00:35:33,770 David J. MALAN: Nein, das ist OK. 803 00:35:33,770 --> 00:35:40,480 Und wie Rob, R-O-B. Ok. 804 00:35:40,480 --> 00:35:41,020 Gut. 805 00:35:41,020 --> 00:35:43,853 So dass ich Sie nicht davon aus, würde Art lagen die Dinge in dieser Weise. 806 00:35:43,853 --> 00:35:45,020 Aber wir können diese Arbeit zu machen. 807 00:35:45,020 --> 00:35:48,810 Also, wie haben Sie von über gehen aus diesen Zeichen in Erinnerung? 808 00:35:48,810 --> 00:35:51,310 In anderen Worten, wenn wir denken Diese rechteckige schwarze Bildschirm 809 00:35:51,310 --> 00:35:53,550 als Vertreter einer Computer-RAM oder Speicher. 810 00:35:53,550 --> 00:35:55,850 >> Und erinnern daran, dass RAM ist nur eine ganze Reihe von Bytes, 811 00:35:55,850 --> 00:35:57,480 und Bytes sind eine ganze Reihe von Bits. 812 00:35:57,480 --> 00:35:59,350 Und Bits sind irgendwie implementiert, allgemein 813 00:35:59,350 --> 00:36:01,119 mit irgendeiner Form von Strom in der Hardware. 814 00:36:01,119 --> 00:36:03,160 Also das ist die Art von Schichtung wir gesprochen haben 815 00:36:03,160 --> 00:36:04,510 und kann nun für selbstverständlich halten. 816 00:36:04,510 --> 00:36:07,020 Wie haben Sie von gehen Sie entscheiden, wo zu schreiben 817 00:36:07,020 --> 00:36:11,634 Rob gegenüber Gabe im Vergleich Belinda gegenüber Zamyla? 818 00:36:11,634 --> 00:36:14,020 >> ALEX: Ich habe es gerade in der anordnen, dass du mir gesagt hast. 819 00:36:14,020 --> 00:36:15,650 >> David J. MALAN: Und das ist wahr. 820 00:36:15,650 --> 00:36:20,100 Aber was geregelt, wo Sie setzen Belinda Name und Gabe Name? 821 00:36:20,100 --> 00:36:20,764 >> ALEX: Nichts? 822 00:36:20,764 --> 00:36:22,930 David J. MALAN: [lacht] Also das funktioniert, ist das in Ordnung. 823 00:36:22,930 --> 00:36:25,290 So wenig sind Computer geordneter als die. 824 00:36:25,290 --> 00:36:29,000 Und so, wenn wir dort bleiben implement-- für nur ein moment-- wenn wir tatsächlich 825 00:36:29,000 --> 00:36:31,470 Umsetzung so etwas wie getstring in einem Computer, 826 00:36:31,470 --> 00:36:34,480 Zamyla könnte so ziemlich festgelegt werden wie Sie auf dem Bildschirm haben, gibt. 827 00:36:34,480 --> 00:36:36,660 >> Und was ist der Schlüssel zu bemerken hier, was Alex getan hat, 828 00:36:36,660 --> 00:36:40,260 ist, gibt es eine Art Abgrenzung unter jedem dieser Worte, oder? 829 00:36:40,260 --> 00:36:46,580 Sie wollte nicht schreiben Z-A-M-Y-L-A-B-E-L-I-N-D-A-G-A-B-- 830 00:36:46,580 --> 00:36:49,740 in anderen Worten, es ist eine Art Abgrenzung der zu sein scheint, 831 00:36:49,740 --> 00:36:52,370 Art, Zufalls Abstand zwischen diesen verschiedenen Wörtern. 832 00:36:52,370 --> 00:36:54,120 Aber das ist gut, weil wir Menschen können nun 833 00:36:54,120 --> 00:36:56,470 visualisieren, dass diese vier verschiedenen Saiten. 834 00:36:56,470 --> 00:36:59,540 Es ist nicht nur eine Folge der Partien von Zeichen. 835 00:36:59,540 --> 00:37:04,190 So ein Computer, dann, inzwischen könnte eine Zeichenfolge wie Zamyla zu nehmen, 836 00:37:04,190 --> 00:37:07,220 legte jeder dieser Briefe innerhalb eines Bytes des Speichers. 837 00:37:07,220 --> 00:37:10,400 Aber diese Zahl ist viel größer, natürlich als sechs Zeichen. 838 00:37:10,400 --> 00:37:11,690 >> Es gibt eine ganze Reihe von RAM. 839 00:37:11,690 --> 00:37:15,330 Und so fortan, diese Gitter der Boxen wird 840 00:37:15,330 --> 00:37:17,560 zu dem, was Alex nur darstellen hat hier auf dem Bildschirm. 841 00:37:17,560 --> 00:37:20,937 Und jetzt, Alex, wir Ihnen eine anbieten kann Blau oder Orange Elephant von Chang. 842 00:37:20,937 --> 00:37:22,270 Alex: Ich werde einen blauen Elefanten zu nehmen. 843 00:37:22,270 --> 00:37:23,120 David J. MALAN: Ein blauer Elefant. 844 00:37:23,120 --> 00:37:25,580 So ein großen Applaus, wenn wir es könnten, für Alex hier. 845 00:37:25,580 --> 00:37:26,100 >> [Applaus] 846 00:37:26,100 --> 00:37:26,766 >> ALEX: Danke. 847 00:37:26,766 --> 00:37:28,820 David J. MALAN: Danke. 848 00:37:28,820 --> 00:37:36,230 Also das Essen zum Mitnehmen ist, dass, obwohl die Muster Art verändert im Laufe der Zeit, hier 849 00:37:36,230 --> 00:37:40,430 auf dem Brett, da war dieser Abgrenzung der verschiedenen Saiten 850 00:37:40,430 --> 00:37:42,610 Alex bekam, dass für uns. 851 00:37:42,610 --> 00:37:45,230 Jetzt Computern, ehrlich gesagt, könnte das gleiche tun. 852 00:37:45,230 --> 00:37:48,210 Sie konnten Art von plop Strings überall im RAM. 853 00:37:48,210 --> 00:37:50,710 Hier oben, hier, hier unten, hier unten. 854 00:37:50,710 --> 00:37:52,020 >> Sie könnten genau das tun. 855 00:37:52,020 --> 00:37:54,280 Aber selbstverständlich ist, dass wahrscheinlich nicht die beste Planung. 856 00:37:54,280 --> 00:37:54,780 Oder? 857 00:37:54,780 --> 00:37:57,340 Wenn ich immer wieder gefragt, Alex Namen bekommen, wahrscheinlich würde er 858 00:37:57,340 --> 00:38:01,370 setzen einige mehr hier unten, vielleicht bis hier, hier, hier, schließlich 859 00:38:01,370 --> 00:38:02,211 hier. 860 00:38:02,211 --> 00:38:05,460 Aber mit ein bisschen mehr Planung, natürlich, wir könnten die Dinge mehr sauber zu legen. 861 00:38:05,460 --> 00:38:07,350 Und in der Tat ist das, was ein Computer. 862 00:38:07,350 --> 00:38:10,720 >> Aber der Haken ist, dass wenn die nächste Saite, die ich bekommen 863 00:38:10,720 --> 00:38:14,050 nach Zamyla ist etwas wie die Belinda, 864 00:38:14,050 --> 00:38:17,929 schlagen, wo wir vielleicht schreiben die Buchstabe B mit Bezug auf dieses Gitter? 865 00:38:17,929 --> 00:38:18,720 Wo würden Sie gehen? 866 00:38:18,720 --> 00:38:21,480 Rechts von der a, unterhalb der Z, unter der ein? 867 00:38:21,480 --> 00:38:23,204 Was wäre Ihre erste Instinkte sein? 868 00:38:23,204 --> 00:38:24,120 ZIELGRUPPE: Unterhalb der z. 869 00:38:24,120 --> 00:38:25,100 David J. MALAN: Also unter dem z. 870 00:38:25,100 --> 00:38:26,530 Und das ist ziemlich einfach, oder? 871 00:38:26,530 --> 00:38:29,321 Es ist eine Art ordentlich, es ist, was wir tun auf einer Tastatur, wenn wir die Eingabetaste drücken, 872 00:38:29,321 --> 00:38:31,770 oder eine E-Mail, wenn Sie ein Aufzählung der Dinge. 873 00:38:31,770 --> 00:38:34,310 Aber die Realität ist, dass Computer versuchen, effizienter zu sein, 874 00:38:34,310 --> 00:38:37,170 und stopfen sicherlich so viel Daten in den RAM möglichst 875 00:38:37,170 --> 00:38:38,890 so dass Sie keine Bytes verschwenden Sie nicht. 876 00:38:38,890 --> 00:38:41,545 So dass Sie verschwenden keine einem Bildschirm Immobilien. 877 00:38:41,545 --> 00:38:44,170 Und das Problem ist aber, dass wenn wir buchstäblich legte den Brief 878 00:38:44,170 --> 00:38:49,940 b nach a, wie werden wir zu wissen, wo Zamyla Name endet 879 00:38:49,940 --> 00:38:51,840 Und der Name Belinda beginnt? 880 00:38:51,840 --> 00:38:55,270 So können Sie den Menschen nur vorgeschlagen, gut, drücken Sie die Eingabetaste, im Wesentlichen. 881 00:38:55,270 --> 00:38:56,410 Legen Sie es unten. 882 00:38:56,410 --> 00:38:59,750 Oder sogar als Alex tat, nur mit dem Schreiben beginnen der nächste Name unter dem vorherigen, 883 00:38:59,750 --> 00:39:01,583 und darunter eine, und dann unten, dass man. 884 00:39:01,583 --> 00:39:02,510 Das ist ein visueller Hinweis. 885 00:39:02,510 --> 00:39:05,960 >> Computer haben eine andere visuelle Hinweis, aber es ist ein wenig mehr prägnant. 886 00:39:05,960 --> 00:39:07,840 Es ist diese flippige Charakter. 887 00:39:07,840 --> 00:39:11,890 Backslash 0, das ist vielleicht erinnert an Backslash n, 888 00:39:11,890 --> 00:39:12,640 und so weiter, jetzt. 889 00:39:12,640 --> 00:39:14,120 Die speziellen Escape-Sequenzen. 890 00:39:14,120 --> 00:39:19,120 Backslash 0 ist der Weg der aus acht Null-Bits in einer Reihe. 891 00:39:19,120 --> 00:39:22,000 0000 0000. 892 00:39:22,000 --> 00:39:26,130 >> Die Art und Weise zum Ausdruck bringen, dass ist nicht zu traf die Zahl Null auf der Tastatur, 893 00:39:26,130 --> 00:39:28,140 denn in der Tat, dass ein ASCII-Zeichen ist. 894 00:39:28,140 --> 00:39:30,990 Es sieht aus wie eine Zahl, aber tatsächlich eine Dezimalzahl 895 00:39:30,990 --> 00:39:35,910 dass die kreisförmige stellt Glyphe, die kreisförmige Schriftbild. 896 00:39:35,910 --> 00:39:38,410 Inzwischen Backslash Null bedeutet, wörtlich 897 00:39:38,410 --> 00:39:40,700 legte acht Null-Bytes hier für mich. 898 00:39:40,700 --> 00:39:42,136 >> Also das ist etwas willkürlich. 899 00:39:42,136 --> 00:39:44,260 Wir konnten keine Muster verwendet haben von Bits, aber die Welt 900 00:39:44,260 --> 00:39:46,610 entschieden sich einige Jahre vor, dass zu vertreten 901 00:39:46,610 --> 00:39:49,710 das Ende einer Zeichenkette in dem Speicher, hat gerade eine ganze Reihe von Nullen. 902 00:39:49,710 --> 00:39:51,000 Weil wir, dass zu erkennen. 903 00:39:51,000 --> 00:39:54,790 Jetzt, dass bedeutet, dass kein Brief von der Alphabet mit Nullen dargestellt werden. 904 00:39:54,790 --> 00:39:58,480 >> Aber das ist OK, die wir bereits gesehen haben, dass wir mit 65 bis 97 auf etwas. 905 00:39:58,480 --> 00:40:00,290 Wir haben nicht überall zu bekommen Nah an allen Nullen. 906 00:40:00,290 --> 00:40:03,040 907 00:40:03,040 --> 00:40:06,540 So Belinda im Speicher eines Computers ist eigentlich los, hier zu gehen. 908 00:40:06,540 --> 00:40:09,764 Ich habe es in gelb gezeichnet nur unsere Aufmerksamkeit auf sich zu ziehen. 909 00:40:09,764 --> 00:40:11,680 Und beachtet auch diese ist völlig beliebig. 910 00:40:11,680 --> 00:40:12,680 Ich habe es als Raster gezogen. 911 00:40:12,680 --> 00:40:14,460 Wie, ist RAM nur einige physikalische Objekt. 912 00:40:14,460 --> 00:40:17,300 Es muss nicht unbedingt Zeilen und Spalten an sich. 913 00:40:17,300 --> 00:40:20,490 Es ist nur eine ganze Reihe von Bytes bekam in Hardware implementiert irgendwie. 914 00:40:20,490 --> 00:40:22,817 Aber wenn ich nach Belinda in Gabes Namen eingegeben haben, 915 00:40:22,817 --> 00:40:25,650 er wird hier am Ende in Erinnerung, und wenn ich in Daven Namen eingegeben haben, 916 00:40:25,650 --> 00:40:27,316 zum Beispiel, wird er hier zu Ende. 917 00:40:27,316 --> 00:40:29,310 Und ich kann auch weiterhin schreiben noch mehr Namen. 918 00:40:29,310 --> 00:40:32,100 >> Leider, wenn ich versuche, einen super langen Namen, 919 00:40:32,100 --> 00:40:33,730 Ich könnte schließlich ein Speicherproblem. 920 00:40:33,730 --> 00:40:37,810 In diesem Fall ist getstring werde NULL zurück, wie gesagt. 921 00:40:37,810 --> 00:40:41,720 Aber zum Glück, zumindest in dieser visuellen hier haben wir nicht ganz so weit. 922 00:40:41,720 --> 00:40:45,860 >> Nun, was ist schön, ist, dass diese allgemeine Idee der Behandlung Dinge 923 00:40:45,860 --> 00:40:49,720 als in Boxen Vertreter einer Funktion von C 924 00:40:49,720 --> 00:40:52,690 und eine Menge von Sprachen, als Array bezeichnet. 925 00:40:52,690 --> 00:40:55,490 Ein Array ist eine andere Art von Daten. 926 00:40:55,490 --> 00:40:57,380 Es ist eine Datenstruktur, wenn man so will. 927 00:40:57,380 --> 00:41:01,160 Struktur im Sinne der es wirklich, Art, wie ein Feld, zumindest 928 00:41:01,160 --> 00:41:02,320 in Ihrem geistigen Auge. 929 00:41:02,320 --> 00:41:09,680 Ein Array ist eine zusammenhängende Sequenz identischer Datentypen, 930 00:41:09,680 --> 00:41:11,330 Rücken an Rücken, um zurück zurück. 931 00:41:11,330 --> 00:41:14,720 >> So ein String ist, in anderen Worten ist ein Array von Zeichen. 932 00:41:14,720 --> 00:41:16,120 Ein Array von Zeichen. 933 00:41:16,120 --> 00:41:19,070 Aber es stellt sich heraus, die Sie haben können Arrays aus Trauben der Dinge. 934 00:41:19,070 --> 00:41:21,870 In der Tat können wir sogar setzen Zahlen in einem Array. 935 00:41:21,870 --> 00:41:23,920 So dass die Form, in der wir werden beginnen 936 00:41:23,920 --> 00:41:26,590 erklärt diese Daten Struktur als eine Anordnung bekannt, 937 00:41:26,590 --> 00:41:28,250 wird sich auch eckige Klammern verwenden. 938 00:41:28,250 --> 00:41:31,500 Aber diese eckigen Klammern sind los haben unterschiedliche Bedeutung in diesem Zusammenhang. 939 00:41:31,500 --> 00:41:33,450 >> Und lassen Sie uns sehen, es wie folgt. 940 00:41:33,450 --> 00:41:36,780 Nehmen wir an, ich öffnete bis eine neue Datei hier. 941 00:41:36,780 --> 00:41:38,535 Und ich spare dies als ages.c. 942 00:41:38,535 --> 00:41:41,280 943 00:41:41,280 --> 00:41:43,470 Und ich werde dies in meinem Ordner hier zu speichern. 944 00:41:43,470 --> 00:41:46,130 Und jetzt gehe ich voran gehen und fangen Sie etwas 945 00:41:46,130 --> 00:41:53,940 wie sind CS50.h, gehören stdio.h, int main nichtig. 946 00:41:53,940 --> 00:41:57,370 Und dann innerhalb von hier, ich will zuerst einen int namens Alter. 947 00:41:57,370 --> 00:42:01,371 >> Und ich werde das nutzen, um eine zu bekommen int vom Benutzer für sein Alter. 948 00:42:01,371 --> 00:42:04,620 Aber dieses Programm soll genutzt werden, mehrere Personen, aus welchem ​​Kontext. 949 00:42:04,620 --> 00:42:05,490 Ich habe eine Reihe von Menschen bekam. 950 00:42:05,490 --> 00:42:08,281 Alle von ihnen haben zu tippen in ihre Alter für einige vielleicht, ich weiß es nicht, 951 00:42:08,281 --> 00:42:10,530 Wettbewerb oder Ereignis dass sie für angekommen. 952 00:42:10,530 --> 00:42:13,030 Also das nächste Person, ich brauchen eine andere Variable. 953 00:42:13,030 --> 00:42:15,790 >> Denn wenn ich nur tun, Alter bekommt getInt, das ist 954 00:42:15,790 --> 00:42:18,500 gehen zu verprügeln, oder überschreiben Alter des früheren Person. 955 00:42:18,500 --> 00:42:19,760 Also das ist nicht gut. 956 00:42:19,760 --> 00:42:21,790 Also mein erster Instinkt könnte sein, oh, alles in Ordnung, 957 00:42:21,790 --> 00:42:26,260 wenn ich mehrere Volks bekommen ages-- nennen wir dieses age1, 958 00:42:26,260 --> 00:42:31,280 int age2 bekommt int, int Age3 bekommt getInt. 959 00:42:31,280 --> 00:42:35,340 Und jetzt werde ich nutzen einige Pseudocode. 960 00:42:35,340 --> 00:42:37,679 >> Tun Sie etwas mit diesen Zahlen. 961 00:42:37,679 --> 00:42:40,470 Wir werden für einen anderen Tag zu verlassen, was Wir sind da zu tun, weil wir nur 962 00:42:40,470 --> 00:42:44,200 Pflege für den Moment über age1, age2, Age3. 963 00:42:44,200 --> 00:42:46,450 Leider, wenn ich kompilieren dieses Programm 964 00:42:46,450 --> 00:42:51,140 und legte es vor der tatsächlichen Benutzer, was ist der grundlegend schlechtes Design 965 00:42:51,140 --> 00:42:53,890 Entscheidung, die ich gemacht zu haben scheinen? 966 00:42:53,890 --> 00:42:54,624 Ja? 967 00:42:54,624 --> 00:42:55,499 ZIELGRUPPE: [unverständlich] 968 00:42:55,499 --> 00:42:58,071 969 00:42:58,071 --> 00:42:59,820 David J. MALAN: Ja, Ich habe nicht einmal versucht, 970 00:42:59,820 --> 00:43:02,028 um herauszufinden, wie viele Zeitalter ich eigentlich kümmern? 971 00:43:02,028 --> 00:43:05,380 Wenn ich weniger als drei Leute hier, und damit weniger als drei Altersstufen, 972 00:43:05,380 --> 00:43:07,260 Ich bin immer noch blind erwarten drei. 973 00:43:07,260 --> 00:43:08,720 Gott bewahre vier Personen zeigen. 974 00:43:08,720 --> 00:43:10,990 Mein Programm will einfach nicht noch unterstützt. 975 00:43:10,990 --> 00:43:13,280 >> Und so, lange Rede Kurz gesagt, ist keine gute Angewohnheit. 976 00:43:13,280 --> 00:43:13,780 Oder? 977 00:43:13,780 --> 00:43:16,530 Ich wurde im Wesentlichen zu kopieren und Code einfügen und nur die Feinabstimmung 978 00:43:16,530 --> 00:43:17,430 die Variablennamen. 979 00:43:17,430 --> 00:43:22,410 Und, mein Gott, wenn Sie hatte, nicht drei Altersgruppen, aber 10 oder 100 oder sogar 6.500 980 00:43:22,410 --> 00:43:23,820 Studenten, zum Beispiel. 981 00:43:23,820 --> 00:43:26,950 Das wird nicht besonders sein elegant-Code oder nachhaltig. 982 00:43:26,950 --> 00:43:29,200 Du wirst zu haben, Schreiben Sie die Programm jedes Mal 983 00:43:29,200 --> 00:43:30,760 Ihre Zahl der Menschen ändert. 984 00:43:30,760 --> 00:43:35,090 >> Also Gott sei Dank, in unserer aktuellen ages.c Datei für heute, 985 00:43:35,090 --> 00:43:36,970 wir haben eine clevere Lösung. 986 00:43:36,970 --> 00:43:39,800 Zuerst werde ich das leihen konstruieren wir haben ein paar Mal benutzt, 987 00:43:39,800 --> 00:43:43,744 Dazu while-Schleife, um zu bekommen, die Zahl der Personen im Raum. 988 00:43:43,744 --> 00:43:46,910 Ich werde einfach um den Benutzer zu belästigen, wieder und immer wieder, bis er oder sie gibt mir 989 00:43:46,910 --> 00:43:49,260 ein Wert von n, der eine positive ganze Zahl ist. 990 00:43:49,260 --> 00:43:51,590 >> Ich könnte verwendet haben, letzte Zeit zu bekommen positive Int. 991 00:43:51,590 --> 00:43:53,720 Aber wir haben das nicht für real, so ging ich weiter 992 00:43:53,720 --> 00:43:55,660 und wieder diese Idee umgesetzt. 993 00:43:55,660 --> 00:43:58,410 Jetzt hier unten, das ist der neue Trick. 994 00:43:58,410 --> 00:44:02,260 In Zeile 27, wie die Kommentare in Zeile 26 sagt, 995 00:44:02,260 --> 00:44:05,180 erklären eine Reihe, in der zu aller Alters speichern. 996 00:44:05,180 --> 00:44:09,320 >> Also, wenn Sie bekommen, nicht eine int, nicht wollen, zwei ints, sondern eine ganze Reihe von ints. 997 00:44:09,320 --> 00:44:13,800 Insbesondere n ganzen Zahlen, N könnte drei, vielleicht 100, vielleicht 1000 sein. 998 00:44:13,800 --> 00:44:17,570 Die Syntax, ganz einfach, ist es, sagen wir, welche Datentyp wollen Sie? 999 00:44:17,570 --> 00:44:19,620 Was wollen Sie anrufen möchten dass Teil des Speichers? 1000 00:44:19,620 --> 00:44:23,530 Was tun Sie, um das Raster nennen wollen Das sieht dann so bildhaft? 1001 00:44:23,530 --> 00:44:27,700 >> Und in Klammern hier, sagen Sie, wie groß das Array sein. 1002 00:44:27,700 --> 00:44:30,450 Und so früher, als ich sagte, das Syntax ist ein wenig anders hier, 1003 00:44:30,450 --> 00:44:33,614 wir sind immer noch mit eckigen Klammern, aber wenn ich ein Array deklarieren, 1004 00:44:33,614 --> 00:44:35,530 Die Zahl in der eckigen Klammern bedeutet 1005 00:44:35,530 --> 00:44:37,610 wie groß wollen Sie das Array zu sein. 1006 00:44:37,610 --> 00:44:42,490 >> Im Gegensatz dazu, als wir mit s Klammer ich vor einem Augenblick, s, ein String ist, 1007 00:44:42,490 --> 00:44:46,820 ist in der Tat eine Reihe von Zeichen, aber wenn Sie nicht eine Variable deklarieren, 1008 00:44:46,820 --> 00:44:49,760 wie mit diesem Begriff hier, du bist einfach immer 1009 00:44:49,760 --> 00:44:54,280 einen bestimmten Index, eine bestimmte Element aus diesem Array. 1010 00:44:54,280 --> 00:44:57,090 Sobald wir wissen, dass der Rest Dies ist unkompliziert. 1011 00:44:57,090 --> 00:45:00,765 Wenn ich neue zuerst zu drucken was ist das Alter der Person Nummer i. 1012 00:45:00,765 --> 00:45:03,890 Wo ich einfach sagen, Person Nummer eins, Person Nummer zwei, Person Nummer drei. 1013 00:45:03,890 --> 00:45:06,306 >> Und ich bin gerade dabei Arithmetik, so dass wie normale Menschen, 1014 00:45:06,306 --> 00:45:09,030 zählen wir von einer für diese Programm, und nicht Null ist. 1015 00:45:09,030 --> 00:45:13,620 Dann rufe ich getint, aber ich speichern die Antwort im Alter Halterung I. 1016 00:45:13,620 --> 00:45:16,610 Welches ist das i-te Zeit, in der Anordnung. 1017 00:45:16,610 --> 00:45:21,640 Während also beim letzten Mal waren wir die Behandlung diese Boxen als Zeichen für Zamyla Namen, 1018 00:45:21,640 --> 00:45:22,490 und andere. 1019 00:45:22,490 --> 00:45:26,530 Nun stellen diese Boxen 32 Bits oder vier Bytes 1020 00:45:26,530 --> 00:45:29,510 in denen wir speichern können int, int, int. 1021 00:45:29,510 --> 00:45:31,890 All das, wiederum, sind die gleichen Datentyp. 1022 00:45:31,890 --> 00:45:33,890 >> Jetzt mache ich etwas albern, wie die Zeit vergeht, nur 1023 00:45:33,890 --> 00:45:35,510 zu rechtfertigen Schreiben dieses Programms. 1024 00:45:35,510 --> 00:45:40,050 Und dann hier unten, ich wieder durchlaufen über die Anordnung zu sagen in einem Jahr, 1025 00:45:40,050 --> 00:45:43,090 Person Nummer eins Willen sein etwas Jahre alt. 1026 00:45:43,090 --> 00:45:45,010 Und um herauszufinden, dass math-- Ich meine, das 1027 00:45:45,010 --> 00:45:49,260 ist nicht sehr kompliziert arithmetic-- Ich nur hinzufügen, um eine ihrem Alter. 1028 00:45:49,260 --> 00:45:51,240 Nur um zu zeigen, wieder, dieses. 1029 00:45:51,240 --> 00:45:57,910 >> So wie ich kann Index in einem String, s, so kann ich Index in ein Array von Alter, 1030 00:45:57,910 --> 00:45:59,950 so da. 1031 00:45:59,950 --> 00:46:03,340 Also, wo soll das noch werden uns? 1032 00:46:03,340 --> 00:46:07,070 Also werden wir sehen, letztlich eine paar Dinge in den kommenden Tagen. 1033 00:46:07,070 --> 00:46:09,510 Eine, die ganze Zeit, wenn Schreiben Sie Ihre eigenen Programme, 1034 00:46:09,510 --> 00:46:11,239 wie Mario, gierig, Kredit. 1035 00:46:11,239 --> 00:46:13,780 Sie habe den Namen eingeben Das Programm und Enter drücken. 1036 00:46:13,780 --> 00:46:15,610 Und dann immer die Eingabe des Benutzers. 1037 00:46:15,610 --> 00:46:18,137 >> Mit getString, getInt, getLongLong oder dergleichen. 1038 00:46:18,137 --> 00:46:20,720 Aber es stellt sich heraus, dass die C unterstützt so genannte Kommandozeile 1039 00:46:20,720 --> 00:46:25,740 Argumente, die gehen, um uns lassen tatsächlich an Wörter, die Sie eingeben, bekommen, 1040 00:46:25,740 --> 00:46:28,570 an der blinkenden Eingabeaufforderung Nach dem Programm-Namen. 1041 00:46:28,570 --> 00:46:31,430 >> Also in den nächsten Tagen, kommen Sie könnte so etwas wie Cäsar geben, 1042 00:46:31,430 --> 00:46:34,950 oder ./caesar Nummer 13, danach. 1043 00:46:34,950 --> 00:46:36,070 Wir werden sehen, wie das funktioniert. 1044 00:46:36,070 --> 00:46:37,550 Da ja in Problem zwei gesetzt, wir sind 1045 00:46:37,550 --> 00:46:39,383 euch vorstellen um ein wenig etwas 1046 00:46:39,383 --> 00:46:42,360 erinnert an Ralphie Herausforderung früher der Kartographie. 1047 00:46:42,360 --> 00:46:43,970 Die Kunst der Verschlüsselung Informationen. 1048 00:46:43,970 --> 00:46:46,660 Dies ist in der Tat sehr erinnert an das, was Ralphie taten. 1049 00:46:46,660 --> 00:46:51,380 >> Dies ist ein Beispiel einer Verschlüsselung Algorithmus namens ROT13, R-O-T 13. 1050 00:46:51,380 --> 00:46:54,910 Was einfach bedeutet, drehen Sie den Buchstaben im Alphabet 13 Plätze. 1051 00:46:54,910 --> 00:46:58,309 Und wenn Sie das tun, werden Sie nun sehen, was ist vielleicht ein vertrauter Begriff. 1052 00:46:58,309 --> 00:47:01,100 Aber die Art und Weise werden wir nutzen Dies ist letztlich im Allgemeinen. 1053 00:47:01,100 --> 00:47:04,390 >> In S. zwei, in der Standard-Ausgabe, Sie werden ein paar Chiffren zu implementieren, 1054 00:47:04,390 --> 00:47:06,720 eine namens Caesar, nannte man Vigenere. 1055 00:47:06,720 --> 00:47:10,090 Beide sind Dreh Chiffren, dass Sie irgendwie 1056 00:47:10,090 --> 00:47:11,826 drehen Sie einen Brief in einem anderen Brief. 1057 00:47:11,826 --> 00:47:12,950 Und Caesar ist super einfach. 1058 00:47:12,950 --> 00:47:16,220 Sie fügen eine, die Sie hinzufügen, 13, oder eine Zahl bis zu 26. 1059 00:47:16,220 --> 00:47:19,570 Vigenere tut das auf eine pro Buchstabe Basis. 1060 00:47:19,570 --> 00:47:22,140 So Vigenere, wie Sie sehen werden in der Spezifikation, ist sicherer. 1061 00:47:22,140 --> 00:47:24,973 >> Aber am Ende des Tages, was Sie werden die Umsetzung und S. zwei, 1062 00:47:24,973 --> 00:47:29,050 ist, dass die wichtigsten, die Sie beide verwenden für die Verschlüsselung und Entschlüsselung. 1063 00:47:29,050 --> 00:47:32,160 Bezug nehmend auf den Prozess der Umwandlung Klartext, einige Original-Nachricht, 1064 00:47:32,160 --> 00:47:34,490 Cypher in Text, der ist etwas verschlüsselt. 1065 00:47:34,490 --> 00:47:36,220 Und dann wieder entschlüsseln. 1066 00:47:36,220 --> 00:47:38,119 >> In der Hacker-Ausgabe, inzwischen werden Sie sein 1067 00:47:38,119 --> 00:47:40,660 mit etwas ähnliches beauftragt im Geist, wo wir geben Ihnen 1068 00:47:40,660 --> 00:47:44,610 eine Datei, aus einer typischen Linux oder Mac oder Unix-Computer genannt etsy 1069 00:47:44,610 --> 00:47:47,800 Passwort, welches eine ganze enthält Haufen von Benutzernamen und Passwörtern. 1070 00:47:47,800 --> 00:47:50,932 Und diese Passwörter alle verschlüsselt oder gehasht, 1071 00:47:50,932 --> 00:47:53,140 so zu sprechen, mehr richtig wie Sie in der Spezifikation zu sehen. 1072 00:47:53,140 --> 00:47:57,090 >> Und der Hacker-Edition ist eine Herausforderung Sie mit der Einnahme eines Eingangs wie diese, 1073 00:47:57,090 --> 00:47:58,800 und Rissbildung das Passwort ein. 1074 00:47:58,800 --> 00:48:02,590 Das heißt, herauszufinden, was die Passwort Menschen tatsächlich war. 1075 00:48:02,590 --> 00:48:05,570 Weil, ja, sind Passwörter in der Regel nicht in der klaren gespeichert, 1076 00:48:05,570 --> 00:48:08,260 und in der Regel Passwörter sollte schwer zu erraten sein. 1077 00:48:08,260 --> 00:48:09,610 Das ist nicht oft der Fall. 1078 00:48:09,610 --> 00:48:12,110 >> Und was ich dachte, wir würden zu tun ist, Schluss mit ein paar Minuten 1079 00:48:12,110 --> 00:48:15,160 Blick auf ein besonders schlechte Wahl der Passwörter 1080 00:48:15,160 --> 00:48:17,260 aus einem Film, den Sie vielleicht liebevoll erinnern. 1081 00:48:17,260 --> 00:48:18,915 Und wenn nicht, sollte man mieten. 1082 00:48:18,915 --> 00:48:20,070 >> [VIDEO PLAYBACK] 1083 00:48:20,070 --> 00:48:22,320 >> -Helm, Sie Unhold, was ist los? 1084 00:48:22,320 --> 00:48:24,240 Was tun Sie, um meine Tochter? 1085 00:48:24,240 --> 00:48:28,010 >> -Permit Mir das vorstellen brillanten jungen plastischen Chirurgen, 1086 00:48:28,010 --> 00:48:30,010 Arzt Phillip Schlotkin. 1087 00:48:30,010 --> 00:48:35,020 Die größte Nase Job Mann in der gesamte Universum und Beverly Hills. 1088 00:48:35,020 --> 00:48:36,140 >> -Ihr Hoheit. 1089 00:48:36,140 --> 00:48:36,820 >> -Nase Job? 1090 00:48:36,820 --> 00:48:37,700 Ich verstehe nicht. 1091 00:48:37,700 --> 00:48:39,070 Sie ist schon eine Nase Job hatte. 1092 00:48:39,070 --> 00:48:40,800 Es war ihre süße 16 vorhanden. 1093 00:48:40,800 --> 00:48:42,590 >> Nein, es ist nicht das, was Sie denken. 1094 00:48:42,590 --> 00:48:44,490 Es ist viel, viel schlimmer. 1095 00:48:44,490 --> 00:48:48,160 Wenn Sie mir nicht die Kombination mit der Luft Schild, 1096 00:48:48,160 --> 00:48:52,748 Arzt Schlotkin geben Sie Ihrem Tochter zurück ihre alte Nase. 1097 00:48:52,748 --> 00:48:53,748 - [Keucht] Nooooooooooooo. 1098 00:48:53,748 --> 00:48:57,684 1099 00:48:57,684 --> 00:48:59,652 Wo hast du das her? 1100 00:48:59,652 --> 00:49:00,640 >> -all Rechts. 1101 00:49:00,640 --> 00:49:02,506 Ich werde sagen, ich werde erzählen. 1102 00:49:02,506 --> 00:49:03,498 >> Nein, Papa, nein. 1103 00:49:03,498 --> 00:49:04,490 Sie darf nicht. 1104 00:49:04,490 --> 00:49:06,090 >> -Sie Recht meine Liebe. 1105 00:49:06,090 --> 00:49:07,390 Ich werde Ihre neue Nase verpassen. 1106 00:49:07,390 --> 00:49:10,990 Aber ich werde ihnen nicht sagen, die Kombination, egal was. 1107 00:49:10,990 --> 00:49:12,450 >> -Sehr gut. 1108 00:49:12,450 --> 00:49:14,830 Arzt Schlotkin, tun Sie Ihre schlimmsten. 1109 00:49:14,830 --> 00:49:15,744 >> -My Vergnügen. 1110 00:49:15,744 --> 00:49:19,860 1111 00:49:19,860 --> 00:49:20,800 >> -NO! 1112 00:49:20,800 --> 00:49:22,780 Warten, warten. 1113 00:49:22,780 --> 00:49:24,000 Ich werde erzählen. 1114 00:49:24,000 --> 00:49:25,830 Ich werde erzählen. 1115 00:49:25,830 --> 00:49:28,270 >> -I Wusste, dass es funktionieren würde. 1116 00:49:28,270 --> 00:49:31,390 Alle Rechte, gib es mir. 1117 00:49:31,390 --> 00:49:36,220 >> -Der Kombination ist eins. 1118 00:49:36,220 --> 00:49:36,740 >> -on. 1119 00:49:36,740 --> 00:49:37,473 >> -on. 1120 00:49:37,473 --> 00:49:37,972 -Zwei. 1121 00:49:37,972 --> 00:49:38,471 -Zwei. 1122 00:49:38,471 --> 00:49:39,800 -Zwei. 1123 00:49:39,800 --> 00:49:40,300 -Drei. 1124 00:49:40,300 --> 00:49:40,800 -Drei. 1125 00:49:40,800 --> 00:49:41,800 -Drei. 1126 00:49:41,800 --> 00:49:42,300 -Vier. 1127 00:49:42,300 --> 00:49:42,800 -Vier. 1128 00:49:42,800 --> 00:49:44,707 -Vier. 1129 00:49:44,707 --> 00:49:45,521 -Fünf. 1130 00:49:45,521 --> 00:49:46,430 -Fünf. 1131 00:49:46,430 --> 00:49:47,930 -Fünf. 1132 00:49:47,930 --> 00:49:53,480 SO Kombination ist eine, zwei, drei, vier, fünf. 1133 00:49:53,480 --> 00:49:56,140 Das ist die dümmste Kombination Die ich je in meinem Leben gehört. 1134 00:49:56,140 --> 00:49:58,640 Das ist die Art von Sache, ein Idiot würde auf seinem Gepäck haben. 1135 00:49:58,640 --> 00:50:00,000 >> -Danke, Hoheit. 1136 00:50:00,000 --> 00:50:01,340 >> [REMOTE KLICKS] 1137 00:50:01,340 --> 00:50:02,450 >> -Was Haben Sie getan? 1138 00:50:02,450 --> 00:50:03,800 >> -I Schaltete die Wand. 1139 00:50:03,800 --> 00:50:05,010 >> Nein, das hast du nicht, du schaltete den ganzen Film. 1140 00:50:05,010 --> 00:50:06,220 >> -I Must've den falschen Knopf gedrückt. 1141 00:50:06,220 --> 00:50:07,064 >> Nun, legte sie zurück auf! 1142 00:50:07,064 --> 00:50:07,910 Legen Sie den Film auf! 1143 00:50:07,910 --> 00:50:08,300 >> -yes, Sir! 1144 00:50:08,300 --> 00:50:08,799 Ja, Sir. 1145 00:50:08,799 --> 00:50:09,660 -Lassen Gehen, Arnold. 1146 00:50:09,660 --> 00:50:10,450 Komm, Gretchen. 1147 00:50:10,450 --> 00:50:12,533 Natürlich wissen Sie, ich werde müssen Sie für dieses Gesetz. 1148 00:50:12,533 --> 00:50:16,720 1149 00:50:16,720 --> 00:50:17,220 -Well? 1150 00:50:17,220 --> 00:50:17,802 Hat es funktioniert? 1151 00:50:17,802 --> 00:50:18,510 Wo ist der König? 1152 00:50:18,510 --> 00:50:20,218 >> -Es Gearbeitet, mein Herr, wir die Kombination. 1153 00:50:20,218 --> 00:50:20,740 -Great. 1154 00:50:20,740 --> 00:50:24,810 Jetzt können wir jeden letzten Atemzug Frischluft von Planet Druidia. 1155 00:50:24,810 --> 00:50:25,890 Was ist die Kombination? 1156 00:50:25,890 --> 00:50:28,155 >> -on, Zwei, drei, vier, fünf. 1157 00:50:28,155 --> 00:50:29,890 >> -on, Zwei, drei, vier, fünf? 1158 00:50:29,890 --> 00:50:30,390 -yes. 1159 00:50:30,390 --> 00:50:31,110 -Das Ist erstaunlich. 1160 00:50:31,110 --> 00:50:34,550 Ich habe das gleiche bekommen Kombination auf mein Gepäck. 1161 00:50:34,550 --> 00:50:37,160 Bereiten Sie für Spaceball 1 sofortige Ausreise. 1162 00:50:37,160 --> 00:50:38,160 >> -yes, Sir. 1163 00:50:38,160 --> 00:50:40,745 >> -AND Ändern Sie die Kombination auf mein Gepäck. 1164 00:50:40,745 --> 00:50:41,578 [Türschließ SOUND] 1165 00:50:41,578 --> 00:50:42,064 [Klirren von DOORS SCHLAGEN HELM] 1166 00:50:42,064 --> 00:50:42,550 -Ahh. 1167 00:50:42,550 --> 00:50:43,383 [END VIDEO PLAYBACK] 1168 00:50:43,383 --> 00:50:46,700 David J. MALAN: Das ist es für CS50, wir sehen uns nächste Woche. 1169 00:50:46,700 --> 00:50:49,883 SPRECHER: Und jetzt, Tief Gedanken, von Daven Farnham. 1170 00:50:49,883 --> 00:50:53,160 1171 00:50:53,160 --> 00:50:55,860 >> DAVEN FARNHAM: Codierung in C so viel härter als Scratch. 1172 00:50:55,860 --> 00:50:57,320 printf, Scratch war eine Lüge. 1173 00:50:57,320 --> 00:50:59,930 1174 00:50:59,930 --> 00:51:01,430 >> [Gelächter SOUNDBITE] 1175 00:51:01,430 --> 00:51:02,486