1 00:00:00,000 --> 00:00:12,510 2 00:00:12,510 --> 00:00:13,870 >> ROB: In Ordnung. 3 00:00:13,870 --> 00:00:16,770 Willkommen auf der ersten Seite. 4 00:00:16,770 --> 00:00:17,480 Ich bin Rob. 5 00:00:17,480 --> 00:00:18,806 >> JOSEPH: Ich bin Joseph. 6 00:00:18,806 --> 00:00:21,540 >> ROB: Also werden wir tauchen rechts in. 7 00:00:21,540 --> 00:00:23,420 Erste Sache, darüber zu sprechen ist die Appliance. 8 00:00:23,420 --> 00:00:27,150 So hoffnungsvoll die meisten von euch haben heruntergeladen es schon. 9 00:00:27,150 --> 00:00:37,180 Aber Sie können die Anweisungen zu sehen bei cs50.net/appliance. 10 00:00:37,180 --> 00:00:38,430 Oh Gott, jetzt bin ich selbstbewusst. 11 00:00:38,430 --> 00:00:44,590 12 00:00:44,590 --> 00:00:45,430 Ich immer noch hören. 13 00:00:45,430 --> 00:00:47,232 >> JOSEPH: Wow, es klingt wie es ist desorientiert. 14 00:00:47,232 --> 00:00:52,460 >> ROB: So einige Menschen wurden mit Probleme mit ihm, also warten Sie nicht, bis 15 00:00:52,460 --> 00:00:54,940 die letzte Minute des Problems zu setzen versuchen und lösen das Geräte-und 16 00:00:54,940 --> 00:00:56,320 finden heraus, dass es nicht funktioniert. 17 00:00:56,320 --> 00:00:59,010 >> JOSEPH: Und wenn etwas nicht funktioniert und Sie Hilfe benötigen, können Sie gehen 18 00:00:59,010 --> 00:01:03,390 cs50.net/discussion, wo wir haben ein Forum, wo Sie 19 00:01:03,390 --> 00:01:04,110 können Sie Ihre Fragen stellen. 20 00:01:04,110 --> 00:01:06,655 Und wir werden sie schließlich bekommen. 21 00:01:06,655 --> 00:01:07,490 >> ROB: In Ordnung. 22 00:01:07,490 --> 00:01:12,180 Also das ist, was die Appliance aussieht. 23 00:01:12,180 --> 00:01:15,480 Auch hier ist es nur eine völlig getrennte Betriebssystem im laufenden 24 00:01:15,480 --> 00:01:19,440 unabhängig von Betriebssystem werden auf dem Laptop läuft. 25 00:01:19,440 --> 00:01:24,450 Und die wichtigsten Dinge, die Sie werden mit gedit sind. 26 00:01:24,450 --> 00:01:28,050 Hoffentlich hat dies bereits zu einem vertrauten Ort. 27 00:01:28,050 --> 00:01:29,470 Das Terminal. 28 00:01:29,470 --> 00:01:31,890 >> Und Sie können auch laufen Chrome innerhalb der Appliance. 29 00:01:31,890 --> 00:01:33,860 Es gab ein paar Leute die Internet gemeldet haben, 30 00:01:33,860 --> 00:01:35,390 nicht in der Appliance zu arbeiten. 31 00:01:35,390 --> 00:01:38,090 Und einige von ihnen haben einfach angenommen, dass es nicht sein soll 32 00:01:38,090 --> 00:01:39,190 Internet in der Appliance. 33 00:01:39,190 --> 00:01:40,750 Aber ja, es soll zum Internet sein. 34 00:01:40,750 --> 00:01:44,000 35 00:01:44,000 --> 00:01:46,410 >> Ich werde es jetzt zu sagen, aber es funktioniert nicht wirklich nichts zu bedeuten. 36 00:01:46,410 --> 00:01:50,680 Wenn das Internet nicht funktioniert, das ist, was Sie dazu neigen, müssen 37 00:01:50,680 --> 00:01:52,180 zu laufen, um es zu beheben. 38 00:01:52,180 --> 00:01:55,602 Wenn Sie mit Internet-Themen, nicht daran erinnern, nur per Post auf 39 00:01:55,602 --> 00:01:57,560 Diskutieren, und wir werden sagen, dass laufen. 40 00:01:57,560 --> 00:02:00,420 Aber das Internet sollte funktionieren. 41 00:02:00,420 --> 00:02:06,650 >> So ist die einzige andere Sache - ja, nichts sonst ist wirklich relevant. 42 00:02:06,650 --> 00:02:08,979 Aber ich wollte nur darauf hinweisen, dass - 43 00:02:08,979 --> 00:02:13,290 siehe dazu unten rechts. 44 00:02:13,290 --> 00:02:16,530 Also jedes Ihrer Geräte sollte eine IP-Adresse. 45 00:02:16,530 --> 00:02:22,350 Und später im Semester, diese IP- Adresse wird mehr relevant werden, wenn 46 00:02:22,350 --> 00:02:27,230 Sie auf der Web-p-Reihe arbeiten, weil Sie werden in der Lage sein, für den Zugriff auf 47 00:02:27,230 --> 00:02:32,310 Website, die Sie gerade arbeiten von Ihrem lokalen Chrome mit dieser IP-Adresse. 48 00:02:32,310 --> 00:02:35,400 >> Aber was Ich mag, um die IP-Adresse zu verwenden für - und Sie wissen nicht, dies zu tun, ich 49 00:02:35,400 --> 00:02:37,460 wollen einfach nur darauf hinweisen - 50 00:02:37,460 --> 00:02:39,540 ist hier. 51 00:02:39,540 --> 00:02:42,910 Also das ist ein Terminal-Fenster auf meine Mac, ist dies nicht in der 52 00:02:42,910 --> 00:02:44,580 Appliance überhaupt. 53 00:02:44,580 --> 00:02:47,190 Und Sie können nachschlagen, was dieser Befehl tut. 54 00:02:47,190 --> 00:02:51,855 Aber ich bin zu SSH direkt gehen meine Appliance. 55 00:02:51,855 --> 00:02:53,410 Ich weiß nicht, was das IP ist. 56 00:02:53,410 --> 00:02:54,300 >> JOSEPH: 168 - 57 00:02:54,300 --> 00:02:56,080 >> 168.224.1.0. 58 00:02:56,080 --> 00:02:59,950 >> ROB: Also, wenn ich fertig bin mit diesem, einloggen 59 00:02:59,950 --> 00:03:05,450 Nun, im Grunde ist diese identisch mit a Terminal-Fenster in meinem Appliance. 60 00:03:05,450 --> 00:03:10,280 Also habe ich so ziemlich nie wirklich gearbeitet innerhalb der Appliance sich. 61 00:03:10,280 --> 00:03:12,550 Ich habe es immer laufen minimiert im Hintergrund 62 00:03:12,550 --> 00:03:15,890 und in sie SSHed. 63 00:03:15,890 --> 00:03:24,270 >> Das Problem dabei ist, gehen Sie nicht in der Lage sein gedit leicht zu verwenden 64 00:03:24,270 --> 00:03:25,600 direkt von diesem. 65 00:03:25,600 --> 00:03:31,500 Aber wenn Sie ein echter cool sein wollen Hacker, dann sollten Sie verwendet, um eine zu bekommen 66 00:03:31,500 --> 00:03:34,220 Kommandozeilen-Texteditor sowieso. 67 00:03:34,220 --> 00:03:39,620 So Vim und Emacs und Nano, alle diese es verschiedene Alternativen. 68 00:03:39,620 --> 00:03:41,560 Nano neigt dazu, die einfachste ist. 69 00:03:41,560 --> 00:03:45,006 Und ich denke, es hat keine Syntax-Highlighting. 70 00:03:45,006 --> 00:03:47,620 Oh, nein, es ist völlig tut. 71 00:03:47,620 --> 00:03:49,870 So können Sie Nano zu verwenden, da dass man ziemlich einfach. 72 00:03:49,870 --> 00:03:52,000 >> Sie alle diese Befehle sehen an der Unterseite. 73 00:03:52,000 --> 00:03:54,750 Dieses kleine Karotte-Symbol. 74 00:03:54,750 --> 00:03:57,620 Wenn Sie noch nicht zuvor gesehen, werden Sie wahrscheinlich sehen es jetzt viel. 75 00:03:57,620 --> 00:04:02,350 Es bedeutet in der Regel die Steuer Karotte, wie unten links auf der Tastatur 76 00:04:02,350 --> 00:04:04,130 Steuerzeichen. 77 00:04:04,130 --> 00:04:07,260 So, hier ist es mir zu sagen, hier unten - 78 00:04:07,260 --> 00:04:08,710 oh, es ist nicht abgeschnitten, wenn ich zoomen 79 00:04:08,710 --> 00:04:11,040 Also Kontrolle, X ist, wie Ich werde zu verlassen. 80 00:04:11,040 --> 00:04:14,710 Und es sagt, ich kann für Y getroffen Ja, für das Speichern, N für Nein. 81 00:04:14,710 --> 00:04:17,190 Also das ist Nano. 82 00:04:17,190 --> 00:04:22,860 >> Vim und Emacs neigen dazu, etwas mehr sein kompliziert und überwältigend. 83 00:04:22,860 --> 00:04:28,840 Aber können Sie sich daran gewöhnt, und dann wirst du es lieben. 84 00:04:28,840 --> 00:04:30,590 So ist das also. 85 00:04:30,590 --> 00:04:31,720 >> JOSEPH: Keine Notwendigkeit, das zu tun. 86 00:04:31,720 --> 00:04:31,840 >> ROB: Ja. 87 00:04:31,840 --> 00:04:37,510 Sie sind frei, gedit für den Einsatz Rest des Semesters. 88 00:04:37,510 --> 00:04:40,630 So alle gerätebezogenen Fragen? 89 00:04:40,630 --> 00:04:42,820 Oder haben Sie Gedanken auf, was anderes haben muss über gesprochen werden 90 00:04:42,820 --> 00:04:43,610 das Gerät? 91 00:04:43,610 --> 00:04:43,996 Ja. 92 00:04:43,996 --> 00:04:47,720 >> Sprecher 1: Wenn Sie in Ihrem SSHed was war das Passwort Hochrote? 93 00:04:47,720 --> 00:04:48,390 >> ROB: Ja. 94 00:04:48,390 --> 00:04:50,170 Das Passwort für so ziemlich alles in der Appliance wird 95 00:04:50,170 --> 00:04:52,473 Crimson sein. 96 00:04:52,473 --> 00:04:56,517 >> SPRECHER 2: Installieren Sie wie ein echter IDE auf dem Gerät, wird es funktionieren? 97 00:04:56,517 --> 00:04:59,200 98 00:04:59,200 --> 00:05:07,290 >> ROB: Ich kann mir vorstellen Eclipse-macht haben ein Fedora Version, in diesem Fall ja, 99 00:05:07,290 --> 00:05:08,420 Sie können das tun. 100 00:05:08,420 --> 00:05:10,875 Es ist wahrscheinlich nicht wirklich gelohnt. 101 00:05:10,875 --> 00:05:11,742 >> Sprecher 2: OK. 102 00:05:11,742 --> 00:05:15,924 So ist es wahrscheinlich einfacher, wenn ich wollte Verwendung von Eclipse, benutzen Sie einfach die native und 103 00:05:15,924 --> 00:05:17,646 dann hochladen - 104 00:05:17,646 --> 00:05:21,090 >> ROB: Oh, das ist wahrscheinlich auch einfacher. 105 00:05:21,090 --> 00:05:24,046 Aber Sie können es Arbeits innerhalb der Appliance. 106 00:05:24,046 --> 00:05:27,740 >> JOSEPH: Und für die Kamera, die Frage war, können Sie ein anderes installieren 107 00:05:27,740 --> 00:05:29,490 IDE Innenseite der Appliance? 108 00:05:29,490 --> 00:05:31,520 >> ROB: Eklipse als eine Beispiel einer IDE. 109 00:05:31,520 --> 00:05:34,800 110 00:05:34,800 --> 00:05:36,050 Alle anderen Appliance Fragen? 111 00:05:36,050 --> 00:05:38,250 112 00:05:38,250 --> 00:05:38,680 Gut. 113 00:05:38,680 --> 00:05:44,920 >> So werden wir nun zur Kommandozeile Interface-bezogene Dinge, so CLI. 114 00:05:44,920 --> 00:05:47,990 Und wieder, ich bin nur zur Arbeit zu gehen in hier, da diese identisch mit 115 00:05:47,990 --> 00:05:52,780 Arbeit in einem Terminal-Fenster innerhalb der Appliance. 116 00:05:52,780 --> 00:05:54,160 Wie ist diese Schrift suchen? 117 00:05:54,160 --> 00:05:55,970 Ist das groß genug? 118 00:05:55,970 --> 00:05:57,000 Gut. 119 00:05:57,000 --> 00:06:02,480 >> So gibt es eine Menge von Befehlen, die Sie sollte recht gewöhnungs 120 00:06:02,480 --> 00:06:04,490 während des Semesters. 121 00:06:04,490 --> 00:06:09,480 Der große zwei für die Navigation sind ls, Liste die Dateien in diesem Verzeichnis, und 122 00:06:09,480 --> 00:06:11,380 cd, so Verzeichnis. 123 00:06:11,380 --> 00:06:18,390 So kann ich auf dem Desktop ändern und dann ein sehr häufiges Muster ist cd ein 124 00:06:18,390 --> 00:06:22,550 Verzeichnis und sofort ls Was ist in dem Verzeichnis. 125 00:06:22,550 --> 00:06:25,540 >> Menschen manchmal auch nicht erkennen, dass Tab Abschluss ist eine Sache. 126 00:06:25,540 --> 00:06:28,370 So wie CD, vh, und dann traf ich Tab. 127 00:06:28,370 --> 00:06:30,790 Ich tippe fast nie aus die ganze Sache. 128 00:06:30,790 --> 00:06:32,920 Und dann, wenn ich schlagen immer Tab wieder, wird es automatisch 129 00:06:32,920 --> 00:06:33,670 Auflistung beginnen für mich. 130 00:06:33,670 --> 00:06:37,000 So kann ich cd vhosts, lokalen Host. 131 00:06:37,000 --> 00:06:39,880 Und das ist gerade dabei, - 132 00:06:39,880 --> 00:06:43,380 wenn Sie den Begriff noch nicht gehört vor, ist nur ein anderes Wort Verzeichnis 133 00:06:43,380 --> 00:06:45,170 für Ordner. 134 00:06:45,170 --> 00:06:49,930 So jetzt, wenn Sie sehen - 135 00:06:49,930 --> 00:06:51,810 wir bringen, dass an die Spitze. 136 00:06:51,810 --> 00:06:55,380 >> So jetzt, wenn Sie sehen, in Klammern, die Sie siehe die kleine Tilde, Schrägstrich, vhost, 137 00:06:55,380 --> 00:06:56,810 Schrägstrich, lokalen Host. 138 00:06:56,810 --> 00:07:00,040 Also die Tilde, das bezieht sich zu meinem Home-Verzeichnis. 139 00:07:00,040 --> 00:07:03,090 Es ist ein Verzeichnis, das Sie sind in, wenn Sie SSH in. 140 00:07:03,090 --> 00:07:05,660 Es ist das Verzeichnis, das Sie in sind, wenn Sie eröffnen ein Terminal. 141 00:07:05,660 --> 00:07:08,650 Es ist, wo Sie beginnen. 142 00:07:08,650 --> 00:07:13,110 Und so bin ich innerhalb meines Home-Verzeichnis, und ich bin innerhalb des vhost 143 00:07:13,110 --> 00:07:14,475 Verzeichnis innerhalb meines Home-Verzeichnis. 144 00:07:14,475 --> 00:07:19,670 Und dann bin ich innerhalb der lokalen Gastgeber Verzeichnis innerhalb davon. 145 00:07:19,670 --> 00:07:23,740 >> So einige andere nützliche Dinge mit cd - 146 00:07:23,740 --> 00:07:29,220 oder gut, im Allgemeinen, so dot immer bezieht sich auf das aktuelle Verzeichnis. 147 00:07:29,220 --> 00:07:31,130 Cd, ist ein Punkt ziemlich wertlos Befehl. 148 00:07:31,130 --> 00:07:35,150 Aber das ändert sich, um die aktuellen Verzeichnis. 149 00:07:35,150 --> 00:07:38,230 Ein sinnvoller in Bezug auf ein cd Punkt, Punkt, was 150 00:07:38,230 --> 00:07:40,220 nur ein Verzeichnis nach oben zu gehen. 151 00:07:40,220 --> 00:07:43,360 >> Und beachten Sie, dass diese - 152 00:07:43,360 --> 00:07:48,610 Ich möchte sagen, Aliasnamen, aber diese Symbole, Punkt, Punkt und, punkt, die Arbeit 153 00:07:48,610 --> 00:07:51,740 für so ziemlich jeden Befehl Sie gehen zu denken läuft. 154 00:07:51,740 --> 00:07:55,370 So wie CD ist wohl, wo Sie sind Verwendung der meisten, aber diese sind nicht 155 00:07:55,370 --> 00:07:56,780 Dinge, die einfach cd versteht. 156 00:07:56,780 --> 00:07:59,980 Es ist ziemlich viel etwas, das gesamte Befehlszeile versteht. 157 00:07:59,980 --> 00:08:01,932 Viele Programme verstehen Punkt-und Punkt-, Punkt. 158 00:08:01,932 --> 00:08:04,830 159 00:08:04,830 --> 00:08:09,090 >> Also die anderen nützlichen - CD, Bindestrich. 160 00:08:09,090 --> 00:08:13,460 Also das wird mir das bringen letzte Verzeichnis, dass ich in. 161 00:08:13,460 --> 00:08:15,980 Also manchmal werde ich etwas tun, oh, ich bin in hier zu arbeiten. 162 00:08:15,980 --> 00:08:21,110 Und ich sehe einige Fehler mit etwas, und Ich werde gehen, es untersuchen, indem Sie auf 163 00:08:21,110 --> 00:08:24,020 einige zufällige Verzeichnis irgendwo. 164 00:08:24,020 --> 00:08:25,260 Und ich weiß nicht, ob es werde lassen Sie mich dort. 165 00:08:25,260 --> 00:08:25,720 Es wird. 166 00:08:25,720 --> 00:08:27,615 Also habe ich alles tun, was ich will in diesem Verzeichnis. 167 00:08:27,615 --> 00:08:28,950 Blah, blah, blah, blah, blah. 168 00:08:28,950 --> 00:08:31,770 Und ich war wie, alles in Ordnung, ich will , zurück zu gehen, wo ich war. 169 00:08:31,770 --> 00:08:34,490 cd, Bindestrich, und es bringt mich gleich wieder. 170 00:08:34,490 --> 00:08:39,970 >> Also werde ich eine Menge werfen dieser bei Ihnen heute. 171 00:08:39,970 --> 00:08:43,730 Ich erwarte nicht, Sie speichern alle von ihnen. 172 00:08:43,730 --> 00:08:46,170 Es ist eine Art weiß nur, dass sie existieren. 173 00:08:46,170 --> 00:08:48,690 Und dann später, wenn Sie wie sie sind, hmm, ich will zurück zu der 174 00:08:48,690 --> 00:08:51,870 Verzeichnis, das ich gerade in war, oh, warte, so etwas existiert. 175 00:08:51,870 --> 00:08:53,980 Sie haben nicht nur tippen im ganzen Verzeichnis wieder. 176 00:08:53,980 --> 00:08:56,090 >> JOSEPH: Und irgendwann werden Sie nur verwenden sie immer und immer wieder, und 177 00:08:56,090 --> 00:08:57,830 es wird Muskelgedächtnis geworden. 178 00:08:57,830 --> 00:09:00,090 >> ROB: Ja. 179 00:09:00,090 --> 00:09:02,930 Also, wie ich schon sagte, dass Tilde ist Ihr Home-Verzeichnis. 180 00:09:02,930 --> 00:09:04,820 So kann ich cd, Tilde. 181 00:09:04,820 --> 00:09:07,280 Aber ich weiß noch nicht einmal zu haben, tun, wenn ich nur - 182 00:09:07,280 --> 00:09:09,760 Ich werde wieder in das Verzeichnis gehen, so es ist nicht ein sinnloses Beispiel. 183 00:09:09,760 --> 00:09:14,560 Aber wenn ich nur cd zu tun, das ist auch die gleiche wie zu meinem Home-Verzeichnis. 184 00:09:14,560 --> 00:09:18,380 185 00:09:18,380 --> 00:09:19,880 Ich tun, Command, K. 186 00:09:19,880 --> 00:09:24,015 >> JOSEPH: Sie können auch klar, die Wort, und es sollte es zu deaktivieren. 187 00:09:24,015 --> 00:09:28,650 >> ROB: Und ich denke auch, Kontrolle, L tut es auch. 188 00:09:28,650 --> 00:09:29,690 So viele verschiedene Möglichkeiten. 189 00:09:29,690 --> 00:09:34,070 Ich denke, es gibt einige Unterschiede, wo klar und Kontrolle, L wird nur 190 00:09:34,070 --> 00:09:37,280 wirklich schieben Sie es an die Spitze und Ich kann mich noch zurückblättern. 191 00:09:37,280 --> 00:09:40,580 Command, buchstäblich zerstört K alles, und Sie 192 00:09:40,580 --> 00:09:42,960 kann nicht scrollen wieder auf. 193 00:09:42,960 --> 00:09:45,530 Zumindest ist das, wie es in iTerm2. 194 00:09:45,530 --> 00:09:48,690 Ich weiß nicht, wie andere Dinge - 195 00:09:48,690 --> 00:09:49,360 oh. 196 00:09:49,360 --> 00:09:55,450 >> Mit SSHing, wenn Sie also auf Windows sind, Sie gehen zu müssen, PuTTY download 197 00:09:55,450 --> 00:10:02,360 um SSH seit Windows nicht haben wie eine integrierte SSH-Tool. 198 00:10:02,360 --> 00:10:06,150 Von Macs, können Sie einfach SSH direkt von einem Terminalfenster. 199 00:10:06,150 --> 00:10:08,755 200 00:10:08,755 --> 00:10:09,690 OK. 201 00:10:09,690 --> 00:10:11,840 Fragen? 202 00:10:11,840 --> 00:10:19,260 >> Mit ls, so etwas zu gewöhnen die meisten dieser Befehle - 203 00:10:19,260 --> 00:10:20,060 gut, ich werde nur tun, ein. 204 00:10:20,060 --> 00:10:21,310 Ls, Bindestrich, l. 205 00:10:21,310 --> 00:10:26,330 So Bindestrich, l ist, was wir , eine Flagge zu ls aufrufen. 206 00:10:26,330 --> 00:10:30,770 Und viele dieser Befehle haben Fahnen dass Sie an sie weitergeben. 207 00:10:30,770 --> 00:10:35,020 Also in diesem Fall, Bindestrich, l ist eine Flagge es sagt mir, dass eine Voll zu geben 208 00:10:35,020 --> 00:10:37,850 Auflistung aller Informationen dieser Dateien. 209 00:10:37,850 --> 00:10:44,790 >> So sehen wir hier, dass Desktop war am 30. Juli um 12:54 Uhr geändert. 210 00:10:44,790 --> 00:10:47,160 Downloads bei 6. September modifiziert. 211 00:10:47,160 --> 00:10:52,350 Dies sind die aktuellen Größe und Bytes dieser Verzeichnisse. 212 00:10:52,350 --> 00:10:54,412 Sie müssen nicht zu verstehen, all dies. 213 00:10:54,412 --> 00:11:00,380 >> Das Zeug auf der linken Seite, der diese drwx, das wird viel mehr relevant werden 214 00:11:00,380 --> 00:11:02,290 später, wenn Sie zu tun haben - 215 00:11:02,290 --> 00:11:05,900 das hat mit mit Berechtigungen zu tun an diesen Dateien zu suchen. 216 00:11:05,900 --> 00:11:09,880 Und so, wenn Sie nicht der einzige Benutzer auf waren dieser Computer, würden Sie in der Lage, 217 00:11:09,880 --> 00:11:13,345 sagen, OK, ich der einzige sein dürfen sich die Datei ansehen, oder ich bin 218 00:11:13,345 --> 00:11:14,870 gehen, damit jeder an dieser Datei zu suchen. 219 00:11:14,870 --> 00:11:17,710 So jemand anderes auf meinem Computer kann an dieser Datei zu suchen. 220 00:11:17,710 --> 00:11:22,190 221 00:11:22,190 --> 00:11:25,600 Ich weiß nicht einmal wissen, was diese - was hat das zu tun? 222 00:11:25,600 --> 00:11:26,840 >> JOSEPH: Ich bin nicht ganz sicher, eigentlich. 223 00:11:26,840 --> 00:11:27,705 >> ROB: Keine Ahnung. 224 00:11:27,705 --> 00:11:30,530 >> JOSEPH: Aber wenn Sie nicht wissen, gibt es eine hilfreiche Befehl, den Sie verwenden können, 225 00:11:30,530 --> 00:11:31,680 Ihnen sagen, was die Ausgabe bedeutet. 226 00:11:31,680 --> 00:11:33,780 Und wenn Sie im Menschen geben vor dem Befehl - 227 00:11:33,780 --> 00:11:35,000 so M-A-N. ROB: Mann. 228 00:11:35,000 --> 00:11:37,690 So ein Mann ist ein anderes das ist sehr nützlich. 229 00:11:37,690 --> 00:11:39,540 Und ein Mann, ls. 230 00:11:39,540 --> 00:11:47,320 Also die man-Seiten, beide haben sie Befehle, die Sie sein werden, mit gerade 231 00:11:47,320 --> 00:11:50,330 in der Befehlszeile, und sie haben auch Funktionen, die relevant sein wird 232 00:11:50,330 --> 00:11:52,530 mit C. So kann der Mensch - 233 00:11:52,530 --> 00:11:53,720 und ich ignorierte 3. 234 00:11:53,720 --> 00:11:57,410 Aber man 3 printf bringen wird bis die C-Version von printf. 235 00:11:57,410 --> 00:12:01,030 Aber wenn ich nur man printf tun, das ist gehen, um das Kommando printf 236 00:12:01,030 --> 00:12:03,540 das geschieht in der Befehlszeile. 237 00:12:03,540 --> 00:12:05,730 >> So ein Mann, ls. 238 00:12:05,730 --> 00:12:09,030 Die man-Seiten können schön sein überwältigend. 239 00:12:09,030 --> 00:12:12,770 Hier aber, dass Sie dieses Angebot sehen all dieser Flags, ls 240 00:12:12,770 --> 00:12:14,300 versteht. 241 00:12:14,300 --> 00:12:17,876 Also, wenn wir zu stürzen, l, und - 242 00:12:17,876 --> 00:12:19,300 Ich werde einfach dies auf Sie werfen. 243 00:12:19,300 --> 00:12:23,050 Aber um zu suchen, möchten Sie zum ersten Hit der Frage 244 00:12:23,050 --> 00:12:24,780 Zeichen oder Schrägstrich-Taste. 245 00:12:24,780 --> 00:12:26,040 So senken. 246 00:12:26,040 --> 00:12:29,000 >> Und dann kann ich suchen für was ich will. 247 00:12:29,000 --> 00:12:33,780 So werde ich für Armaturenbrett, l senken. 248 00:12:33,780 --> 00:12:35,110 Und da war es. 249 00:12:35,110 --> 00:12:37,450 So verwenden Sie eine lange Liste Format. 250 00:12:37,450 --> 00:12:40,060 Das bedeutet nicht, mir helfen herauszufinden, was dass bestimmte Spalte gemeint, aber ich 251 00:12:40,060 --> 00:12:44,480 nehmen irgendwo hier wäre es zu erklären, dass. 252 00:12:44,480 --> 00:12:48,740 So verwenden Sie die man-Seiten für jeden Befehl dass Sie nicht sofort verstehen. 253 00:12:48,740 --> 00:12:51,080 >> Ich bin mir ziemlich sicher, Sie können auch der Mensch, der Mensch. 254 00:12:51,080 --> 00:12:53,070 Eine Schnittstelle zum Online Referenzhandbücher. 255 00:12:53,070 --> 00:12:57,700 256 00:12:57,700 --> 00:13:03,570 Oh, eine letzte, die vielleicht leicht ist relevant ist, ls, Bindestrich, ein. 257 00:13:03,570 --> 00:13:08,490 Also merken, wenn ich nur tun, ls, Ich diese fünf Dateien. 258 00:13:08,490 --> 00:13:11,480 Wenn ich ls, Dash, a, I bekommen viel mehr Dateien. 259 00:13:11,480 --> 00:13:15,350 Also die Sache gemeinsam zwischen all diesen neue Dateien ist der Punkt vorher. 260 00:13:15,350 --> 00:13:21,220 >> Also der Konvention ist, dass eine Datei, die beginnt mit einem Punkt versteckt. 261 00:13:21,220 --> 00:13:25,300 Also Sie wollen nicht, dass die Datei anzuzeigen, die Sie wollen nicht, dass es mit Chaos haben 262 00:13:25,300 --> 00:13:26,750 Ihre Verzeichnisliste. 263 00:13:26,750 --> 00:13:30,020 Es ist nur, wenn Sie ausdrücklich bitten, alles in Ordnung, ls, Bindestrich, ein, zeigen Sie mir. 264 00:13:30,020 --> 00:13:32,830 Der eine steht für alle Dateien, auch unsichtbare. 265 00:13:32,830 --> 00:13:37,260 266 00:13:37,260 --> 00:13:39,270 So einige andere Befehle. 267 00:13:39,270 --> 00:13:41,323 Oh, Fragen an dieser Stelle? 268 00:13:41,323 --> 00:13:41,746 Ja. 269 00:13:41,746 --> 00:13:45,914 >> SPEAKER 3: Wenn Sie ls tun, a, was ist der Punkt, Punkt? 270 00:13:45,914 --> 00:13:46,870 >> ROB: Oh. 271 00:13:46,870 --> 00:13:48,780 Also das ist, was ich meinte. 272 00:13:48,780 --> 00:13:50,890 Es ist die gleiche Sache, wo Ich kann wie CD, Punkt, Punkt. 273 00:13:50,890 --> 00:13:56,790 Technisch sind Punkt-und Punkt-, Punkt Dateien, die in jedem einzelnen vorhanden 274 00:13:56,790 --> 00:14:03,620 Verzeichnis, in dem der Punkt-Datei verweist in das aktuelle Verzeichnis. 275 00:14:03,620 --> 00:14:06,930 Also, wenn ich cd, Punkt, werde ich einfach in dem Verzeichnis bleiben. 276 00:14:06,930 --> 00:14:10,870 Und Punkt, Punkt bezieht sich immer auf die vorherige Verzeichnis eine Ebene höher. 277 00:14:10,870 --> 00:14:18,200 Also, wenn ich in die Protokolle und ls gehen, Bindestrich, al, Ich werde sehen, Punkt, Punkt. cd zu Punkt, Punkt 278 00:14:18,200 --> 00:14:20,390 bringt mich auf das vorherige Verzeichnis. 279 00:14:20,390 --> 00:14:24,530 280 00:14:24,530 --> 00:14:25,780 Ja. 281 00:14:25,780 --> 00:14:27,160 282 00:14:27,160 --> 00:14:28,110 OK. 283 00:14:28,110 --> 00:14:33,070 >> Also ein weiterer ziemlich wichtig Befehl rm. 284 00:14:33,070 --> 00:14:35,650 Also das ist, was wir zu verwenden, um zu entfernen. 285 00:14:35,650 --> 00:14:38,100 Und lassen Sie mich eigentlich das andere tun Befehl zuerst. 286 00:14:38,100 --> 00:14:39,610 So mkdir. 287 00:14:39,610 --> 00:14:42,770 Mkdir ist, wie Sie Verzeichnisse erstellen. 288 00:14:42,770 --> 00:14:47,530 Und ich werde ein temporäres Verzeichnis erstellen und gehen Sie in dieses temporäre Verzeichnis. 289 00:14:47,530 --> 00:14:49,590 Und wie erwartet, ist es leer. 290 00:14:49,590 --> 00:14:53,680 Aber wenn ich ls, Bindestrich, ein, habe ich noch Punkt und Punkt, Punkt, Punkt, weil sich auf 291 00:14:53,680 --> 00:14:54,480 das aktuelle Verzeichnis. 292 00:14:54,480 --> 00:14:56,170 Und Punkt, Punkt bezieht sich auf die vorherige Verzeichnis. 293 00:14:56,170 --> 00:14:58,700 Und die wird immer, egal existieren das Verzeichnis, sind Sie in. 294 00:14:58,700 --> 00:15:01,910 295 00:15:01,910 --> 00:15:09,010 >> Und das ist ein völlig unnötig Befehl, aber Touch. 296 00:15:09,010 --> 00:15:11,880 Ich bin nur mit ihm, denn es ist eine einfache Möglichkeit, Dateien zu erstellen. 297 00:15:11,880 --> 00:15:16,180 So berühren a, b berühren, berühren Sie c ist nur gehen, um drei Dateien genannt zu erstellen, 298 00:15:16,180 --> 00:15:17,845 b und c, die vollständig leer sind. 299 00:15:17,845 --> 00:15:20,450 300 00:15:20,450 --> 00:15:24,980 Also der Punkt, der mir die in die Erstellung erster Linie ist nur so, dass rm 301 00:15:24,980 --> 00:15:26,250 wie können wir sie entfernen. 302 00:15:26,250 --> 00:15:27,850 So rm, ein. 303 00:15:27,850 --> 00:15:30,960 Es wird mich fragen, entfernen regelmäßig eine leere Datei? 304 00:15:30,960 --> 00:15:33,170 Und dann werde ich sagen: Ja. 305 00:15:33,170 --> 00:15:39,090 >> Also, wenn ich sicher weiß, dass ich Löschen Sie die Datei, ohne sein 306 00:15:39,090 --> 00:15:44,500 dazu aufgefordert werden, entfernen Sie regelmäßig leere Datei?, dann rm, Bindestrich, f sein wird, die 307 00:15:44,500 --> 00:15:48,230 Flagge, die sagt, erzwingen zu entfernen, ohne mich sogar aufgefordert, oh, Sie sind 308 00:15:48,230 --> 00:15:49,710 sicher, dass Sie die Datei löschen wollen? 309 00:15:49,710 --> 00:15:50,810 Ja, ich bin sicher. 310 00:15:50,810 --> 00:15:56,050 So rm, Bindestrich, fb wird nur es tun, ohne zu fragen. 311 00:15:56,050 --> 00:15:57,950 >> Lassen Sie uns also einige weitere Verzeichnisse. 312 00:15:57,950 --> 00:16:03,670 mkdir, tmp2, cd, tmp2, berühren Sie ein, berühren b. 313 00:16:03,670 --> 00:16:04,300 OK. 314 00:16:04,300 --> 00:16:08,180 So, jetzt will ich entfernen tmp2 als Verzeichnis. 315 00:16:08,180 --> 00:16:10,316 So rm tmp2. 316 00:16:10,316 --> 00:16:12,920 Sie können tmp2 nicht entfernen, es ist ein Verzeichnis. 317 00:16:12,920 --> 00:16:21,370 Also das Problem hier ist, dass rm nicht sofort an die Arbeit auf Verzeichnisse. 318 00:16:21,370 --> 00:16:26,530 Es ist nur für Dateien wie gedacht Nicht-Verzeichnisdateien. 319 00:16:26,530 --> 00:16:30,800 >> Und was wir tun können, hier ist rm, Bindestrich, r. 320 00:16:30,800 --> 00:16:35,160 Das steht für rekursiv, die zu gegebener nicht, dass noch etwas für Sie. 321 00:16:35,160 --> 00:16:38,280 Aber wenn man die Rekursion zu bekommen, es wird mehr bedeuten. 322 00:16:38,280 --> 00:16:43,540 So rm, Bindestrich, r, tmp2 wird sich rekursiv in diesem Verzeichnis abgelegt. 323 00:16:43,540 --> 00:16:45,540 So steigen in Verzeichnis tmp2? 324 00:16:45,540 --> 00:16:47,330 Ja, lass uns in die zu gehen. 325 00:16:47,330 --> 00:16:49,360 Wollen wir tmp2 entfernen / a? 326 00:16:49,360 --> 00:16:49,745 Ja. 327 00:16:49,745 --> 00:16:51,830 Wollen wir tmp2 / b entfernen? 328 00:16:51,830 --> 00:16:52,840 Ja. 329 00:16:52,840 --> 00:16:55,170 Jetzt wissen wir entfernen wollen das Verzeichnis tmp2? 330 00:16:55,170 --> 00:16:56,040 Ja. 331 00:16:56,040 --> 00:16:58,410 Und nun das Verzeichnis und alles, was innerhalb 332 00:16:58,410 --> 00:16:59,660 der es entfernt wurde. 333 00:16:59,660 --> 00:17:02,850 334 00:17:02,850 --> 00:17:07,250 >> Es ist technisch ein Befehl rmdir dass Sie verwenden können, zu entfernen 335 00:17:07,250 --> 00:17:11,670 Verzeichnisse, aber es funktioniert nur, auf leere Verzeichnisse sowieso. 336 00:17:11,670 --> 00:17:14,109 Und zu sehen, dass wir einfach mkdir tun, tmp2 wieder. 337 00:17:14,109 --> 00:17:15,940 Tmp2, berühren ein. 338 00:17:15,940 --> 00:17:16,800 OK. 339 00:17:16,800 --> 00:17:22,770 Also, wenn ich versuche, dirtmp2 entfernen, wird es sagen, das Verzeichnis nicht leer ist. 340 00:17:22,770 --> 00:17:29,540 Also ich benutze so ziemlich nie entfernen Befehl dir trotzdem, weil rm, Bindestrich, 341 00:17:29,540 --> 00:17:35,140 r auf leere Verzeichnisse arbeiten und nicht-leere Verzeichnisse. 342 00:17:35,140 --> 00:17:37,760 >> Und auch, wenn ich will nicht zu haben, gehen durch diesen gesamten Prozess der 343 00:17:37,760 --> 00:17:40,720 Abstieg in das Verzeichnis und Entfernen jede einzelne Datei, rm 344 00:17:40,720 --> 00:17:44,190 Bindestrich, rf, tmp2. 345 00:17:44,190 --> 00:17:45,670 Und jetzt ist es weg. 346 00:17:45,670 --> 00:17:51,220 >> Etwas vorsichtig sein etwa ist rm, Bindestrich, rf. 347 00:17:51,220 --> 00:17:53,660 Und es macht mir Angst, noch geben sie, weil, wenn ich versehentlich 348 00:17:53,660 --> 00:17:55,090 Enter drücken, oder so etwas. 349 00:17:55,090 --> 00:18:02,735 So rm, Bindestrich, rf, Tilde würde, ohne mich veranlasst, wird die f nicht aufgefordert 350 00:18:02,735 --> 00:18:05,670 mir, es wird automatisch entfernen meine gesamte Home-Verzeichnis und 351 00:18:05,670 --> 00:18:06,780 alles in ihm. 352 00:18:06,780 --> 00:18:11,460 So können Sie denken, das ist eine dumme Sache zu tun. 353 00:18:11,460 --> 00:18:12,830 Und gut ist es. 354 00:18:12,830 --> 00:18:18,600 >> Aber es kann sehr leicht passieren, durch Unfall, wenn, sagen wir, ich wollte zu entfernen 355 00:18:18,600 --> 00:18:21,640 meine Schrägstrich, vhost-Verzeichnis. 356 00:18:21,640 --> 00:18:26,610 Und gerade in der schnellen Schreib-, Ich habe aus Versehen tun. 357 00:18:26,610 --> 00:18:31,880 Das wird rekursiv meine beiden entfernen Home-Verzeichnis und die vhost-Verzeichnis 358 00:18:31,880 --> 00:18:35,450 in diesem speziellen Verzeichnis, das nur passiert jetzt nicht. 359 00:18:35,450 --> 00:18:39,520 Aber das wäre noch zu entfernen meine gesamte Home-Verzeichnis. 360 00:18:39,520 --> 00:18:43,090 Zumindest nicht durch eine f, es würde mich zuerst fragen. 361 00:18:43,090 --> 00:18:45,670 Und ich würde wie, oh, sein nein, ich wollen nicht, das zu tun. 362 00:18:45,670 --> 00:18:50,570 Aber die Leute, Schrägstrich, einschließlich mich dazu neigen, in die zu 363 00:18:50,570 --> 00:18:53,090 Gewohnheit, immer rf-ing. 364 00:18:53,090 --> 00:18:58,713 Selbst reguläre Dateien, ich kann nur RM, c, neige ich dazu, nur rm, Bindestrich, rf, c. 365 00:18:58,713 --> 00:19:01,330 Nur vorsichtig sein, wenn Sie rf-ing sind. 366 00:19:01,330 --> 00:19:03,160 >> SPRECHER 4: Was macht C zu tun? 367 00:19:03,160 --> 00:19:11,570 >> ROB: C Ich bin über diese C-Datei im Gespräch in diesem Verzeichnis, dass rm, c. 368 00:19:11,570 --> 00:19:15,730 >> JOSEPH: Und noch gefährlicher, wenn Sie ein Stern, bezieht er sich auf alles 369 00:19:15,730 --> 00:19:16,450 das Verzeichnis. 370 00:19:16,450 --> 00:19:20,040 Also, was ich häufig dazu neigen, zu tun ist, ich will gehen in ein Verzeichnis, und ich möchte 371 00:19:20,040 --> 00:19:21,510 entfernen Sie alle Dateien dort. 372 00:19:21,510 --> 00:19:23,640 So rm, Bindestrich, rf, Stern. 373 00:19:23,640 --> 00:19:25,700 >> ROB: Ja. 374 00:19:25,700 --> 00:19:26,780 Rm, Bindestrich, rf, Stern. 375 00:19:26,780 --> 00:19:29,530 >> JOSEPH: Und wenn Sie nicht aufpassen in welchem ​​Verzeichnis du bist - 376 00:19:29,530 --> 00:19:33,340 Ich war nicht in temp, aber ich war zufällig in meinem Home-Verzeichnis, 377 00:19:33,340 --> 00:19:35,450 dann werde ich alles entfernen in meinem Home-Verzeichnis. 378 00:19:35,450 --> 00:19:39,095 Und ich habe tatsächlich auch schon gemacht, und Ich denke, dass du das schon getan haben, oder 379 00:19:39,095 --> 00:19:40,640 Jay hat das getan, bevor. 380 00:19:40,640 --> 00:19:42,480 >> ROB: Ich habe versehentlich entfernt - 381 00:19:42,480 --> 00:19:44,480 so ignorieren diesen Befehl für ein bisschen. 382 00:19:44,480 --> 00:19:45,800 >> JOSEPH: Nicht lustig. 383 00:19:45,800 --> 00:19:52,650 >> ROB: Also in dem Schrägstrich bin-Verzeichnis ist ein Haufen von binären Dateien, in denen es werde 384 00:19:52,650 --> 00:19:54,840 vertraut diejenigen wie Klang. 385 00:19:54,840 --> 00:20:00,740 Nun, klirren und im Grunde alle diese Dinge, die ich an der Eingabe renne 386 00:20:00,740 --> 00:20:02,060 Linie in dieser Schrägstrich bin. 387 00:20:02,060 --> 00:20:03,090 >> JOSEPH: Wie ls ist hier. 388 00:20:03,090 --> 00:20:06,285 >> ROB: Also Punkt, Schrägstrich, würde ls Liste dieses Verzeichnis. 389 00:20:06,285 --> 00:20:08,120 >> JOSEPH: Rm ist auch in diesem Verzeichnis. 390 00:20:08,120 --> 00:20:12,770 >> ROB: Ich habe versehentlich rm, rf-ed bin, die jeden Befehl ich konnte entfernt 391 00:20:12,770 --> 00:20:14,380 möglicherweise überhaupt wollen. 392 00:20:14,380 --> 00:20:18,085 Was dann habe ich nur eine Neuinstallation neue Appliance an diesem Punkt. 393 00:20:18,085 --> 00:20:20,170 >> JOSEPH: Also sehr vorsichtig sein, wenn Sie diesen Befehl verwenden. 394 00:20:20,170 --> 00:20:21,120 >> ZIELGRUPPE: [unverständlich]? 395 00:20:21,120 --> 00:20:22,640 >> ROB: Ja. 396 00:20:22,640 --> 00:20:24,135 Das ist auch eine schlechte Angewohnheit. 397 00:20:24,135 --> 00:20:27,920 398 00:20:27,920 --> 00:20:30,170 Wenn Sie bemerken, ich bin jetzt - 399 00:20:30,170 --> 00:20:33,580 gut, kann man nicht bemerken, aber meine Zoom-in vielleicht können. 400 00:20:33,580 --> 00:20:35,360 Also ich bin jetzt root @ Appliance. 401 00:20:35,360 --> 00:20:39,790 So ist der Benutzer jharvard wir wollen Sie werden immer mit. 402 00:20:39,790 --> 00:20:43,820 Root ist der Benutzer, der die Berechtigung hat absolut nichts zu tun. 403 00:20:43,820 --> 00:20:50,260 >> So bemerken, wenn ich jharvard, wenn ich versuche, cd - 404 00:20:50,260 --> 00:20:52,461 was ist ein Verzeichnis, dass? 405 00:20:52,461 --> 00:20:53,980 Oh, das ist root ein gutes Beispiel. 406 00:20:53,980 --> 00:20:54,950 So cd, Wurzel. 407 00:20:54,950 --> 00:20:56,030 Zugriff verweigert. 408 00:20:56,030 --> 00:21:00,060 Denn wenn wir uns dieser Auflistung - 409 00:21:00,060 --> 00:21:02,410 wieder, die Sie nicht haben ganz verstehen. 410 00:21:02,410 --> 00:21:09,210 Aber diese drei Striche sagen dass andere lassen Sie sich nicht 411 00:21:09,210 --> 00:21:11,120 Benutzer in dieses Verzeichnis. 412 00:21:11,120 --> 00:21:14,540 Und das passiert mit Verzeichnis von root-Benutzer gehören. 413 00:21:14,540 --> 00:21:20,310 >> Also die Tatsache, dass ich jharvard und kein einer, der nicht Wurzel in erlaubt 414 00:21:20,310 --> 00:21:23,490 Dieses Verzeichnis, das bedeutet, dass ich gehen, um die Erlaubnis verweigert, wenn ich sie 415 00:21:23,490 --> 00:21:25,160 versuchen, cd hinein. 416 00:21:25,160 --> 00:21:31,370 Also, wenn ich bin Wurzel, habe ich die Erlaubnis, absolut alles tun, einschließlich 417 00:21:31,370 --> 00:21:34,660 wichtigen Dateien löschen zu der Appliance und 418 00:21:34,660 --> 00:21:36,640 zerstören die ganze Sache. 419 00:21:36,640 --> 00:21:41,240 >> Also ist es eine schlechte Angewohnheit, in zu erhalten einfach spazieren gehen Ihre 420 00:21:41,240 --> 00:21:43,650 Betriebssystem als Wurzel. 421 00:21:43,650 --> 00:21:46,520 Ich tue es trotzdem. 422 00:21:46,520 --> 00:21:48,710 Fragen? 423 00:21:48,710 --> 00:21:52,230 Und ich werde Wurzel zu verlassen, bleiben, wie jharvard. 424 00:21:52,230 --> 00:21:54,510 OK. 425 00:21:54,510 --> 00:21:55,820 >> Weitere relevante Befehle. 426 00:21:55,820 --> 00:22:03,975 So gehen zurück in unsere temp, die mv steht für Bewegung. 427 00:22:03,975 --> 00:22:05,450 Sie können verschieben ein. 428 00:22:05,450 --> 00:22:07,610 Jetzt wollen wir es nennen b, so jetzt nennt man b. 429 00:22:07,610 --> 00:22:10,650 Oder vielleicht verschieben möchten wir b ein Verzeichnis nach oben. 430 00:22:10,650 --> 00:22:12,730 So, jetzt leer diesem Verzeichnis. 431 00:22:12,730 --> 00:22:15,410 Ich bin zurück zu meinem Home-Verzeichnis zu gehen, und sehen wir, dass b im hier, weil der 432 00:22:15,410 --> 00:22:19,230 Home-Verzeichnis war ein Verzeichnis aus das Verzeichnis, das b hatte sich schon 433 00:22:19,230 --> 00:22:24,710 434 00:22:24,710 --> 00:22:26,580 >> Es gibt auch cp. 435 00:22:26,580 --> 00:22:33,210 So cp kopieren Super Abschnitt Punkt, Text. 436 00:22:33,210 --> 00:22:35,750 Ich kann es nennen ist, Punkt, Text. 437 00:22:35,750 --> 00:22:39,780 Jetzt haben wir beide Super Abschnitt Punkt-, Text-und s, Punkt, Text. 438 00:22:39,780 --> 00:22:41,340 Das funktioniert auch auf Verzeichnisse. 439 00:22:41,340 --> 00:22:44,040 440 00:22:44,040 --> 00:22:46,560 I rf-ed eine einzelne Datei. 441 00:22:46,560 --> 00:22:48,200 So cp - 442 00:22:48,200 --> 00:22:51,710 Nun, zunächst wollen wir versuchen, cp, tmp, tmp2. 443 00:22:51,710 --> 00:22:53,220 So Weglassen Verzeichnis tmp. 444 00:22:53,220 --> 00:22:57,440 So ähnlich RM, das Standardverhalten ist es, nicht auf Verzeichnissen. 445 00:22:57,440 --> 00:23:01,570 >> Und wieder, ähnlich wie rm, ist der Standard Verhalten - ja, dass es funktioniert 446 00:23:01,570 --> 00:23:04,230 Verzeichnisse mit ein, Bindestrich-r entfernt. 447 00:23:04,230 --> 00:23:09,240 So kopieren Sie rekursiv die temp Verzeichnis in tmp2. 448 00:23:09,240 --> 00:23:13,700 Und jetzt haben wir beide tmp und tmp2, und das ist nicht so hilfreich, da tmp 449 00:23:13,700 --> 00:23:16,814 leer war in den ersten Platz. 450 00:23:16,814 --> 00:23:18,660 Tmp2. 451 00:23:18,660 --> 00:23:22,680 >> Lassen Sie uns jetzt kopieren tmp in tmp2. 452 00:23:22,680 --> 00:23:27,900 Und wir sehen, dass tmp2 hat auch die Datei a, weil das Verzeichnis und 453 00:23:27,900 --> 00:23:32,220 alles in der die Verzeichnis kopiert wurde. 454 00:23:32,220 --> 00:23:36,000 Und das etwas hilfreich sein können, wenn, Sie sagen, sie arbeiten 455 00:23:36,000 --> 00:23:38,860 auf ein Problem eingestellt - 456 00:23:38,860 --> 00:23:41,320 oder eigentlich sind später Problemstellungen sogar noch wichtiger, da es 457 00:23:41,320 --> 00:23:43,660 wird eine ganze Menge sein von Dateien und Dinge. 458 00:23:43,660 --> 00:23:47,010 >> Aber Sie wollen einfach nur, für den Bruchteil zweiten, wie, alles in Ordnung bist du, ich bin 459 00:23:47,010 --> 00:23:50,210 gehen, um etwas anderes zu versuchen. 460 00:23:50,210 --> 00:23:57,860 Lassen Sie mich meine gesamte pset1 kopieren Sie einfach Backup-Verzeichnis in pset1 so, dass, wenn 461 00:23:57,860 --> 00:24:01,490 Ich am Ende Schrauben Dinge, ich kann gehen Sie zurück in mein Backup-Verzeichnis. 462 00:24:01,490 --> 00:24:07,340 Es gibt mehr Möglichkeiten, entsprechende Versionierung Sichern Ihrer Code, aber 463 00:24:07,340 --> 00:24:10,610 das ist immer eine schnelle Möglichkeit, nur die dass Sie eine Kopie von etwas haben 464 00:24:10,610 --> 00:24:11,860 Sie sind dabei, zu ändern. 465 00:24:11,860 --> 00:24:16,974 466 00:24:16,974 --> 00:24:27,090 >> So Echo ist auch ein Ein-Aus-Befehl, dass Art sillily wird, nur um die zu drucken 467 00:24:27,090 --> 00:24:31,540 Befehlszeile genau das, was Sie wollte Echo. 468 00:24:31,540 --> 00:24:32,680 So echo hallo. 469 00:24:32,680 --> 00:24:35,420 Wir werden einfach ausdrucken hallo. 470 00:24:35,420 --> 00:24:38,030 Echo hallo Welt. 471 00:24:38,030 --> 00:24:39,800 Wir drucken hallo Welt. 472 00:24:39,800 --> 00:24:44,350 Das kommt zum Einsatz, wenn Sie beginnen die Kombination Befehle. 473 00:24:44,350 --> 00:24:48,300 >> Und wieder, nicht erwarten, dass Sie ganz verstehe das noch nicht, aber es ist 474 00:24:48,300 --> 00:24:49,910 etwas zu sehen. 475 00:24:49,910 --> 00:24:52,470 Und dann, wenn Sie für die Beispiele sind googeln oder Sie erkennen, was Sie tun möchten 476 00:24:52,470 --> 00:24:55,030 etwas, kann es hilfreich sein. 477 00:24:55,030 --> 00:24:59,020 Lassen Sie uns also, als ein Beispiel, so ls, Bindestrich, l. 478 00:24:59,020 --> 00:25:01,160 Also hier sehe ich den Ausgang von ls, Bindestrich, l. 479 00:25:01,160 --> 00:25:06,560 Und ich sage: OK, ich will speichern, die in einer Datei. 480 00:25:06,560 --> 00:25:11,620 All diese Ausgabe hier, ich will in einer separaten Datei abgelegt. 481 00:25:11,620 --> 00:25:16,080 >> Also das etwas größer als Symbol ist, was wir zu nennen. 482 00:25:16,080 --> 00:25:18,570 Wir Umleitung der Ausgabe in eine Datei. 483 00:25:18,570 --> 00:25:21,680 Nennen Sie die Datei blah, weil das ist, Ich neige dazu, was immer es nennen. 484 00:25:21,680 --> 00:25:26,430 So, jetzt sehen wir, haben wir eine Datei blah hier richtig. 485 00:25:26,430 --> 00:25:30,270 Und wenn ich es öffne, werde ich sehen, es ist genau die Ausgabe des Befehls 486 00:25:30,270 --> 00:25:31,990 dass ich gerade lief. 487 00:25:31,990 --> 00:25:36,020 Und ebenso können Sie - 488 00:25:36,020 --> 00:25:41,260 Wenn dies in eine Datei ausgegeben, diese wird die Eingabe aus einer Datei erhalten. 489 00:25:41,260 --> 00:25:45,790 490 00:25:45,790 --> 00:25:47,050 Was ist ein Befehl, dass ich - 491 00:25:47,050 --> 00:25:49,620 >> JOSEPH: Ich denke, Sie verwenden können, mehr oder weniger wahrscheinlich. 492 00:25:49,620 --> 00:25:53,031 >> ROB: Aber wie wäre es mit etwas weniger blah? 493 00:25:53,031 --> 00:25:53,930 Ich weiß nicht. 494 00:25:53,930 --> 00:25:57,870 Wenn Sie in diesem Szenario kommen, wie es gibt psets, dass es nützlich. 495 00:25:57,870 --> 00:25:59,950 >> JOSEPH: Sie können über die Pipeline in Echo. 496 00:25:59,950 --> 00:26:02,920 Rohr die Datei in Echo zu sehen. 497 00:26:02,920 --> 00:26:04,060 >> ROB: Es ist Rohr. 498 00:26:04,060 --> 00:26:04,860 >> JOSEPH: Sorry. 499 00:26:04,860 --> 00:26:06,190 >> ROB: In Ordnung. 500 00:26:06,190 --> 00:26:12,720 Das ist also die Ausgabe in eine Datei. 501 00:26:12,720 --> 00:26:18,700 Dies ist bekommen Sie den Text aus der Datei und übergeben Sie das Programm. 502 00:26:18,700 --> 00:26:20,560 Und Sie werden auch sehen, dieser Kerl. 503 00:26:20,560 --> 00:26:24,410 Also das ist eine Art zu tun, beides auf einmal. 504 00:26:24,410 --> 00:26:28,310 Und tatsächlich, ich werde zwei neue einführen Befehle, nur um davon Gebrauch zu machen. 505 00:26:28,310 --> 00:26:33,060 >> Die Geschichte ist ein handliches Befehl, nur ist Drucklegung einer Liste mit der 506 00:26:33,060 --> 00:26:34,940 alles, was ich jemals führen Sie eine Befehlszeile. 507 00:26:34,940 --> 00:26:38,290 So sehen wir hier alles, was ich habe betreibt dieses ganze Zeit. 508 00:26:38,290 --> 00:26:39,540 Viele ls ist. 509 00:26:39,540 --> 00:26:41,570 510 00:26:41,570 --> 00:26:48,470 >> Und ein weiterer nützlicher Befehl grep ist, dass ihr Zweck ist die Suche über 511 00:26:48,470 --> 00:26:52,060 Text-Suche nach Mustern, gut, auf der Suche nach was auch immer Sie 512 00:26:52,060 --> 00:26:53,310 wollen, dass es zu suchen. 513 00:26:53,310 --> 00:26:59,770 Und so eine praktische Anwendung ist hier, sagen wir wir wollen, um die Geschichte zu packen. 514 00:26:59,770 --> 00:27:03,860 Und ich möchte für die Befehle aussehen wo ich - was ist ein 515 00:27:03,860 --> 00:27:05,000 nützliches zu suchen? 516 00:27:05,000 --> 00:27:06,898 >> JOSEPH: [unverständlich]? 517 00:27:06,898 --> 00:27:09,710 >> ROB: Oder sagen wir einfach für alle schauen berührt, warum auch immer. 518 00:27:09,710 --> 00:27:13,850 Also das ist, was es aussehen wird. 519 00:27:13,850 --> 00:27:15,560 Und Sie müssen nicht völlig müssen verstehen. 520 00:27:15,560 --> 00:27:20,570 Aber die Idee ist hier, was ist Geschichte das gleiche Ausgangs hier getan 521 00:27:20,570 --> 00:27:25,030 wo es den Ausdruck des gesamten Geschichte von allem, was ich je laufen. 522 00:27:25,030 --> 00:27:27,030 Wir sind dann vorbei, dass - 523 00:27:27,030 --> 00:27:30,230 so statt ihn auf den Bildschirm, wir, dass die weitergeben wollen 524 00:27:30,230 --> 00:27:34,640 Befehl grep, die Suche wird alle Instanzen des Wortes Touch. 525 00:27:34,640 --> 00:27:40,280 >> Und so mit dieser Kombination aus Werkzeuge Geschichte und grep, ich kann sehen, OK, 526 00:27:40,280 --> 00:27:44,820 hier alle Befehle, die ich je haben laufen, und hier ist ein etwas allgemeines. 527 00:27:44,820 --> 00:27:45,510 Wir sind an der Unterseite. 528 00:27:45,510 --> 00:27:47,930 Und es ist auch den Befehl, mir Ich lief, der hatte die 529 00:27:47,930 --> 00:27:51,240 Wort Touch in ihr. 530 00:27:51,240 --> 00:27:58,500 Aber das Rohr ist eine ziemlich nützliche Sache zum Kombinieren mehrerer Programme. 531 00:27:58,500 --> 00:28:04,670 Und tatsächlich, es ist eine Abkürzung für let mich Ausgang der Geschichte zu bla-Datei, und 532 00:28:04,670 --> 00:28:10,190 Lassen Sie mich mit der Datei grep blah wie das, was ich möchte über aussehen. 533 00:28:10,190 --> 00:28:13,460 Also das Rohr ist nur eine Abkürzung für diese beiden Befehle. 534 00:28:13,460 --> 00:28:13,950 Ja. 535 00:28:13,950 --> 00:28:15,306 >> SPRECHER 4: [unverständlich]? 536 00:28:15,306 --> 00:28:16,556 >> ROB: Ja. 537 00:28:16,556 --> 00:28:20,142 538 00:28:20,142 --> 00:28:21,110 Was ist - 539 00:28:21,110 --> 00:28:21,858 Oh. 540 00:28:21,858 --> 00:28:24,820 Lassen Sie uns testen. 541 00:28:24,820 --> 00:28:29,170 So Katze, Hund, Fisch. 542 00:28:29,170 --> 00:28:33,770 Deshalb möchte ich grep. 543 00:28:33,770 --> 00:28:37,680 Dash, r, wieder sein wird rekursiv, so will ich hinunter steigen 544 00:28:37,680 --> 00:28:38,870 alle Verzeichnisse. 545 00:28:38,870 --> 00:28:43,210 Ich möchte rekursiv für alle grep - und lassen Sie mich vorübergehend zu 546 00:28:43,210 --> 00:28:44,460 Diese aus dem Weg. 547 00:28:44,460 --> 00:28:48,650 548 00:28:48,650 --> 00:28:50,740 Ignorieren Sie mich. 549 00:28:50,740 --> 00:28:51,360 OK. 550 00:28:51,360 --> 00:28:56,740 >> Deshalb möchte ich vorübergehend für grep Alle Instanzen der Wort Fisch. 551 00:28:56,740 --> 00:29:00,510 Und hier das, was ich tue, ist greppen rekursiv für das Wort Fisch. 552 00:29:00,510 --> 00:29:05,410 Und Stern bedeutet, über alle diese Dateien in diesem Verzeichnis. 553 00:29:05,410 --> 00:29:08,930 Und so gab sie mir eine Berechtigung verweigert, denn es ist nicht erlaubt, das zu lesen 554 00:29:08,930 --> 00:29:10,060 bestimmten Datei. 555 00:29:10,060 --> 00:29:14,040 Aber es fand Fisch in der Datei, Test. 556 00:29:14,040 --> 00:29:18,450 >> Ich könnte auch sagen, und zwar, nur ich wollen in der Datei blah aussehen, in 557 00:29:18,450 --> 00:29:19,580 diesem Fall wird nichts finden. 558 00:29:19,580 --> 00:29:20,990 Ich möchte nur in der Datei, Test aussehen. 559 00:29:20,990 --> 00:29:22,240 Es wird Fisch. 560 00:29:22,240 --> 00:29:25,980 561 00:29:25,980 --> 00:29:29,260 Das ist eine ziemlich nützliche Befehl im Allgemeinen kennen. 562 00:29:29,260 --> 00:29:31,640 Es gibt einige Alternativen zu grep , das soll mehr sein werden 563 00:29:31,640 --> 00:29:36,780 Programmierer freundlich, aber ich neige noch zurückfallen auf grep. 564 00:29:36,780 --> 00:29:38,030 Fragen? 565 00:29:38,030 --> 00:29:39,965 566 00:29:39,965 --> 00:29:40,919 OK. 567 00:29:40,919 --> 00:29:42,520 >> Gibt es noch andere Befehle? 568 00:29:42,520 --> 00:29:45,270 Oh. 569 00:29:45,270 --> 00:29:48,370 Nur eine einmalige, die ich immer finden sein Spaß Cal. 570 00:29:48,370 --> 00:29:55,610 So bemerken, wenn ich in diesem schönen Vollbild-Modus, habe ich keine wie oben 571 00:29:55,610 --> 00:29:56,720 Symbolleiste oder nichts. 572 00:29:56,720 --> 00:29:59,530 So Cal gibt mir nur eine nette kleine Kalender, der ist richtig 573 00:29:59,530 --> 00:30:02,380 jetzt abgeschnitten wird, nehme ich an. 574 00:30:02,380 --> 00:30:04,770 Aber nette kleine Befehl. 575 00:30:04,770 --> 00:30:06,540 >> JOSEPH: Es ist [unverständlich]. 576 00:30:06,540 --> 00:30:09,170 Andere Befehle, die Sie haben gesehen sind Klang und machen. 577 00:30:09,170 --> 00:30:11,180 Wir werden über sie gehen später noch genauer. 578 00:30:11,180 --> 00:30:13,400 Aber wenn Sie gearbeitet haben die PSET, sollten Sie sich 579 00:30:13,400 --> 00:30:15,160 vertraut mit denen. 580 00:30:15,160 --> 00:30:16,640 >> ROB: In Ordnung. 581 00:30:16,640 --> 00:30:18,520 Fragen zu Befehlszeilen Dinge? 582 00:30:18,520 --> 00:30:22,450 583 00:30:22,450 --> 00:30:23,260 Gut. 584 00:30:23,260 --> 00:30:27,416 Also machen wir weiter, einige C-related stuff. 585 00:30:27,416 --> 00:30:28,666 Variablen Mathematik. 586 00:30:28,666 --> 00:30:39,078 587 00:30:39,078 --> 00:30:40,060 OK. 588 00:30:40,060 --> 00:30:45,230 So wie wir in Mathe Scratch, Sie können auch Mathematik in C verwenden 589 00:30:45,230 --> 00:30:49,270 >> Bevor wir dazu kommen ganz, so Variablen. 590 00:30:49,270 --> 00:30:53,920 Denken Sie daran, dass, wenn Sie erklären, ein Variable wie int x oder y float, können Sie 591 00:30:53,920 --> 00:30:56,710 haben es vor geben zu geben der Name variabel. 592 00:30:56,710 --> 00:31:03,020 Also Typen, die wir bisher gesehen haben, sind int, float, double, lange, lange, die ich 593 00:31:03,020 --> 00:31:06,150 nicht wirklich wissen, ob wir gesehen, dass so weit. 594 00:31:06,150 --> 00:31:07,700 >> Es gibt einige andere. 595 00:31:07,700 --> 00:31:09,990 Wir sehen Zeichen. 596 00:31:09,990 --> 00:31:13,920 Es ist kurz, das ist, wie es die Gegenteil von dem, lange, lange, wo es 597 00:31:13,920 --> 00:31:16,650 kleiner ist als eine ganze Zahl ist. 598 00:31:16,650 --> 00:31:18,580 Wir haben auch gesehen Zeichenfolge. 599 00:31:18,580 --> 00:31:23,070 Also, was ist das Besondere an Schnur? 600 00:31:23,070 --> 00:31:25,350 Warum würde ich sagen, es ist nicht ganz wie int? 601 00:31:25,350 --> 00:31:27,030 >> SPRECHER 4: Es ist nicht wirklich existieren. 602 00:31:27,030 --> 00:31:27,990 >> ROB: Ja. 603 00:31:27,990 --> 00:31:31,820 Also der einzige Grund, warum wir String Denn wenn Sie das tun 604 00:31:31,820 --> 00:31:33,215 Hash, enthalten cs50.h. 605 00:31:33,215 --> 00:31:36,530 606 00:31:36,530 --> 00:31:42,670 Und wir werden Beispiele dafür später sehen - oh, das bedeutet nicht, dass gut umgehen - 607 00:31:42,670 --> 00:31:46,160 wo cs50.h etwas tut entlang der Linien von Art 608 00:31:46,160 --> 00:31:49,230 def, char Stern, String. 609 00:31:49,230 --> 00:31:53,280 >> Und damit sagt, dass wir nicht einmal wissen, was ein Zeichen Stern ist leer. 610 00:31:53,280 --> 00:31:56,770 Aber das ist zu sagen, wir wollen String. 611 00:31:56,770 --> 00:32:00,250 Jeder Ort, den Sie habe mit Schnur, Sie worden sein könnte mit char Stern, 612 00:32:00,250 --> 00:32:04,670 was ist eigentlich ein Typ, der existiert in der C-Sprache. 613 00:32:04,670 --> 00:32:06,680 Aber wir werden, um das zu bekommen. 614 00:32:06,680 --> 00:32:07,860 Oh, und es geht zurück. 615 00:32:07,860 --> 00:32:10,170 Ordentlich. 616 00:32:10,170 --> 00:32:15,370 >> So gleiche Sache mit bool wo wahr und falsch. 617 00:32:15,370 --> 00:32:22,510 Das ist nicht wirklich ein eingebauter Typ in C. Stattdessen ist es nur, dies ist 618 00:32:22,510 --> 00:32:23,740 der Wert Null? 619 00:32:23,740 --> 00:32:26,200 Dann haben wir nur prüfen werde es um falsch zu sein. 620 00:32:26,200 --> 00:32:27,350 Hat dies den Wert - 621 00:32:27,350 --> 00:32:30,530 gut, hat dies keine Wert, der nicht Null ist? 622 00:32:30,530 --> 00:32:32,200 Dann werden wir prüfen, dass es wahr ist. 623 00:32:32,200 --> 00:32:35,940 So ein wahr ist, ist wahr, zwei, alles ungleich Null ist wahr. 624 00:32:35,940 --> 00:32:38,710 625 00:32:38,710 --> 00:32:42,790 Das sind also diejenigen. 626 00:32:42,790 --> 00:32:47,624 Fragen zur Deklaration von Variablen und Variablentypen und so? 627 00:32:47,624 --> 00:32:48,100 Ja. 628 00:32:48,100 --> 00:32:52,384 >> SPRECHER 4: Für lange, lange in dem Buch, sie sagte, es sei zu lange lange int sein. 629 00:32:52,384 --> 00:32:54,288 Aber wird nur lange, lange zu arbeiten? 630 00:32:54,288 --> 00:32:58,210 631 00:32:58,210 --> 00:33:01,470 >> ROB: Also diese Art Modifikatoren. 632 00:33:01,470 --> 00:33:04,170 So int x. 633 00:33:04,170 --> 00:33:07,710 So können wir auch sagen, unsigned int x. 634 00:33:07,710 --> 00:33:09,640 Wir können sagen, short int x. 635 00:33:09,640 --> 00:33:12,570 Wir können sagen, lange, lange int x. 636 00:33:12,570 --> 00:33:17,250 Aber so ziemlich jedem dieser Dinge, die ich gerade gesagt, unsigned int, short int, 637 00:33:17,250 --> 00:33:21,480 long long int, können Sie loswerden die int, und es wird einfach davon ausgehen, 638 00:33:21,480 --> 00:33:22,510 dass Sie gemeint int. 639 00:33:22,510 --> 00:33:26,045 So unsigned x, das bedeutet nur, - 640 00:33:26,045 --> 00:33:29,400 Sie wissen, wie in der Regel mit einem int, Sie können sagen, x gleich minus 3? 641 00:33:29,400 --> 00:33:31,636 Mit einem unsigned int, können Sie nicht. 642 00:33:31,636 --> 00:33:34,480 >> JOSEPH: Und wieder, für die Kamera, die Frage war, was ist der Unterschied 643 00:33:34,480 --> 00:33:37,796 zwischen lang long int und gerade lange lange? 644 00:33:37,796 --> 00:33:38,410 >> ROB: Ja. 645 00:33:38,410 --> 00:33:42,850 Also werde ich fast nie long long int schreiben. 646 00:33:42,850 --> 00:33:44,100 Ich werde lange lange schreiben. 647 00:33:44,100 --> 00:33:47,770 648 00:33:47,770 --> 00:33:50,636 >> JOSEPH: Sie haben Fragen? 649 00:33:50,636 --> 00:33:51,886 >> ROB: OK. 650 00:33:51,886 --> 00:33:56,180 651 00:33:56,180 --> 00:34:02,390 So dumme kleine Erinnerung an das ist, wie Wir deklarieren eine Variable und initialisieren 652 00:34:02,390 --> 00:34:04,450 die Variable und erklären, ein anderer Variable und initialisieren 653 00:34:04,450 --> 00:34:05,870 alles in einem Schritt. 654 00:34:05,870 --> 00:34:09,370 So ist die Deklaration der Variablen und die Initialisierung Variable nicht 655 00:34:09,370 --> 00:34:11,120 auf, kann aber auf der gleichen Linie. 656 00:34:11,120 --> 00:34:15,409 657 00:34:15,409 --> 00:34:20,060 >> Die Standard-Mathematik-Betreiber So haben wir dass Sie es gewohnt sind - 658 00:34:20,060 --> 00:34:22,199 Plus, Minus, dividieren, Zeiten. 659 00:34:22,199 --> 00:34:24,389 Es gibt auch Modulo, die wir sehen. 660 00:34:24,389 --> 00:34:29,060 Es ist nicht, zumindest in C, ein eingebautes Energie 661 00:34:29,060 --> 00:34:31,765 Potenzierung Einfügemarke-Operator. 662 00:34:31,765 --> 00:34:33,770 Nun, es ist ein Caret-Operator, aber es ist nicht Macht. 663 00:34:33,770 --> 00:34:34,239 >> JOSEPH: Aber es ist nicht Potenzierung, Ja. 664 00:34:34,239 --> 00:34:36,210 >> ROB: Verwenden Sie die Einfügemarke anzunehmen, dass es bedeutet, 665 00:34:36,210 --> 00:34:39,980 wie Quadrat oder was auch immer. 666 00:34:39,980 --> 00:34:42,289 So einige Dinge zu halten dir nichts Division. 667 00:34:42,289 --> 00:34:46,282 668 00:34:46,282 --> 00:34:48,880 Ich werde stehen. 669 00:34:48,880 --> 00:34:51,315 So erklärt initialize Antwort. 670 00:34:51,315 --> 00:34:54,670 Also wir sagen Schwimmer Antwort gleich 1 geteilt durch 10. 671 00:34:54,670 --> 00:34:57,500 Drucken Antwort auf zwei Dezimalstellen. 672 00:34:57,500 --> 00:35:02,180 >> Und das ist die Art der Sache, dass ich printf würde der Mensch, um herauszufinden, dass 673 00:35:02,180 --> 00:35:05,110 was zum Teufel soll%, Punkt, 2f das? 674 00:35:05,110 --> 00:35:07,930 Und das bedeutet nur, na ja, ohne auf die 0.2. 675 00:35:07,930 --> 00:35:10,420 Und%, f, was wir zu drucken, um zu schwimmen. 676 00:35:10,420 --> 00:35:15,370 Die 0,2 ist zu sagen, dass Druck schwimmen auf zwei Dezimalstellen. 677 00:35:15,370 --> 00:35:19,600 Also das Programm hat einen Fehler, und man könnte bevor in einigen gesehen haben 678 00:35:19,600 --> 00:35:20,870 vor CS natürlich. 679 00:35:20,870 --> 00:35:22,170 Aber was ist das Bug? 680 00:35:22,170 --> 00:35:23,050 >> SPRECHER 5: Null. 681 00:35:23,050 --> 00:35:24,130 >> ROB: Ja. 682 00:35:24,130 --> 00:35:29,630 Wenn wir also sagen, gleich Antwort 1 geteilt durch 10, wollen wir die 683 00:35:29,630 --> 00:35:31,610 beantworten zu 0,1 sein. 684 00:35:31,610 --> 00:35:37,450 Aber 1 geteilt durch 10, 1 eine integer, 10 eine ganze Zahl ist. 685 00:35:37,450 --> 00:35:41,060 Und so, wenn wir eine ganze Zahl dividiert durch tun eine ganze Zahl, wir gehen, um wieder 686 00:35:41,060 --> 00:35:42,190 eine ganze Zahl ist. 687 00:35:42,190 --> 00:35:43,660 So 1 geteilt durch 10 ist 0,1. 688 00:35:43,660 --> 00:35:46,760 >> Da es uns braucht eine ganze Zahl zu geben, es nur geht, wegwerfen, dass 689 00:35:46,760 --> 00:35:49,410 Dezimalstelle und sagen, dass die Antwort ist null. 690 00:35:49,410 --> 00:35:55,314 Und so, wenn wir drucken hier zu beantworten, es geht um 0.00 ausdrucken. 691 00:35:55,314 --> 00:35:58,430 >> JOSEPH: Und nur als Anmerkung, es tatsächlich wegwirft, was nach der 692 00:35:58,430 --> 00:35:59,390 Komma. 693 00:35:59,390 --> 00:36:03,180 Also, wenn Sie stattdessen hatte 6 geteilt durch 10, Sie denken vielleicht, dass es dir zu geben 694 00:36:03,180 --> 00:36:05,200 0,6 und dann würden Sie auf 1 runden. 695 00:36:05,200 --> 00:36:10,520 Aber eigentlich, was passiert, wenn es zu tippen Aufgabe ist es, dass es fällt, was 696 00:36:10,520 --> 00:36:11,470 nach dem Komma. 697 00:36:11,470 --> 00:36:13,020 So hat sich 0,6 0. 698 00:36:13,020 --> 00:36:13,370 >> ROB: Ja. 699 00:36:13,370 --> 00:36:15,160 Und wir werden truncate für das zu sagen. 700 00:36:15,160 --> 00:36:21,760 Also, wenn Sie in einen int gegossen, die Komma abgeschnitten. 701 00:36:21,760 --> 00:36:23,980 So ist die Lösung für das - es gibt eigentlich zwei. 702 00:36:23,980 --> 00:36:27,890 Und ich werde diesen zweiten zu tun, weil dieses ist eine viel einfachere Lösung. 703 00:36:27,890 --> 00:36:32,670 >> So ein Update ist verwenden Schwimmer in der Division. 704 00:36:32,670 --> 00:36:34,720 Und wirklich, Sie haben nur machen, einer von ihnen ein Schwimmer. 705 00:36:34,720 --> 00:36:37,400 Aber es ist nur etwas klarer für beide von ihnen schwebt machen. 706 00:36:37,400 --> 00:36:41,170 Also 1,0 geteilt durch 10,0 ist Division zwei Schwimmern. 707 00:36:41,170 --> 00:36:43,970 Die Antwort wird am Ende als ein Schwimmer, und so werden Sie 708 00:36:43,970 --> 00:36:48,050 richtig gedruckt 0.10 hier. 709 00:36:48,050 --> 00:36:52,220 >> Etwas, das nicht so gut funktionieren etwa das heißt, gut, sicher, es war leicht 710 00:36:52,220 --> 00:36:56,240 genug, um eine 1 umwandeln schwimmen, indem es 1,0. 711 00:36:56,240 --> 00:37:02,180 Aber was, wenn statt hatten wir zwei ganze Zahlen wie int x gleich 1 und int y 712 00:37:02,180 --> 00:37:05,660 gleich 10, und dann wollten wir x durch y geteilt haben? 713 00:37:05,660 --> 00:37:10,420 So ist es nicht einfach, gerade x.0 tun oder so etwas. 714 00:37:10,420 --> 00:37:12,790 >> So ist die Lösung, um das wirft. 715 00:37:12,790 --> 00:37:19,780 So Gießen ist ein Weg in C konvertieren von einem variablen Typ zum anderen. 716 00:37:19,780 --> 00:37:22,320 So hier ist 1 eine ganze Zahl ist. 717 00:37:22,320 --> 00:37:27,050 Und indem Sie diesen Schwimmer vor es wir ein Casting mit einem Schwimmer. 718 00:37:27,050 --> 00:37:30,350 Und so wird diese konvertieren die 1 bis 1,0. 719 00:37:30,350 --> 00:37:33,380 Und das wird zu konvertieren die 10 bis 10,0. 720 00:37:33,380 --> 00:37:36,790 >> Und dann die Dinge verhalten sich ähnlich wie die vorherigen Version, die wir gerade gezeigt 721 00:37:36,790 --> 00:37:42,190 wo, wie erwartet, erhalten wir 0,10 und es wird gedruckt, dass. 722 00:37:42,190 --> 00:37:44,120 Und wir können dies mit zu tun Variablen, zu. 723 00:37:44,120 --> 00:37:47,376 So können wir sagen, float x geteilt durch float y. 724 00:37:47,376 --> 00:37:48,626 >> JOSEPH: Sie haben Fragen? 725 00:37:48,626 --> 00:37:54,182 726 00:37:54,182 --> 00:38:00,090 >> ROB: So wie im regulären Mathematik, wir haben Betreiber Vorrang. 727 00:38:00,090 --> 00:38:06,960 Also in Mathematik Klasse, sind Sie eher es nennen Reihenfolge der Operationen. 728 00:38:06,960 --> 00:38:09,890 Hier ist die offizielle Bezeichnung Betreiber Vorrang. 729 00:38:09,890 --> 00:38:15,230 Aber die Rangfolge der Operatoren, oder die meisten Betreiber, wie man erwarten würde. 730 00:38:15,230 --> 00:38:22,660 >> So wie in der Mathematik, 2 mal 10 ist wird mehr als eng gruppiert werden 731 00:38:22,660 --> 00:38:25,410 Diese 10 geteilt durch 2 und 2. 732 00:38:25,410 --> 00:38:29,745 Die Reihenfolge der Operationen, wird es tun 2 Zeiten 10, 10 geteilt durch 2, und 733 00:38:29,745 --> 00:38:32,720 es wird 20 plus 5 plus 2 zu tun. 734 00:38:32,720 --> 00:38:37,020 Es ist also wie erwartet, und Sie können Klammern zu gruppieren Ausdrücke. 735 00:38:37,020 --> 00:38:41,063 Sie können keine eckigen Klammern Gruppen Ausdrücke. 736 00:38:41,063 --> 00:38:41,544 Ja? 737 00:38:41,544 --> 00:38:43,468 >> SPRECHER 5: Können Sie eigentlich einfach wieder 1 Sekunde? 738 00:38:43,468 --> 00:38:47,316 Können Sie einen int in einen String zu werfen? 739 00:38:47,316 --> 00:38:53,330 >> ROB: Also in C, kann man alles gegossen Sie alles, was Sie wollen. 740 00:38:53,330 --> 00:38:55,600 Das bedeutet nicht, es ist eine gute Sache zu tun. 741 00:38:55,600 --> 00:38:59,760 Also, wenn Sie einen int zu werfen ein String ist, bedeutet, dass - 742 00:38:59,760 --> 00:39:03,240 und wir werden in diese zu bekommen viel gründlicher - 743 00:39:03,240 --> 00:39:03,720 >> JOSEPH: Viel später. 744 00:39:03,720 --> 00:39:06,840 >> ROB: Ich wollte nicht sagen, viel später, so habe ich versucht, meinen Satz zu ändern. 745 00:39:06,840 --> 00:39:13,370 Wir werden in sie viel gründlicher zu bekommen später, wo wirklich, wenn Sie eine 746 00:39:13,370 --> 00:39:14,810 String-Variable - 747 00:39:14,810 --> 00:39:17,160 so ein String kann beliebig sein lange, oder? 748 00:39:17,160 --> 00:39:21,850 Und wir haben gesagt, dass ein int ist vier Byte und lange, lange ist acht 749 00:39:21,850 --> 00:39:23,620 Bytes und ein Schwimmer vier Bytes. 750 00:39:23,620 --> 00:39:29,520 So ein String ist, wie ein int, hat nur eine bestimmte Anzahl von Bytes zu. 751 00:39:29,520 --> 00:39:31,800 Und das wird vier Bytes. 752 00:39:31,800 --> 00:39:34,750 >> Aber ein String kann schön sein beliebig lange, oder? 753 00:39:34,750 --> 00:39:40,190 Also hallo Welt bereits, wenn es das ist 10 Zeichen oder was auch immer, das ist schon 754 00:39:40,190 --> 00:39:42,670 gehen, um über die 4 Bytes Ich kann in einen String passen. 755 00:39:42,670 --> 00:39:51,140 Und so wie Zeichen wirklich funktioniert ist, dass sie sind, wo im Speicher diese Zeichenfolge 756 00:39:51,140 --> 00:39:52,380 wird gehalten. 757 00:39:52,380 --> 00:39:57,290 >> Und so immer hier, wenn ich sage, String x Hallo Welt entspricht, innerhalb von x 758 00:39:57,290 --> 00:40:01,840 einfach nur sagen, oh, hallo Welt gespeichert an diesem besonderen Ort im Speicher. 759 00:40:01,840 --> 00:40:07,060 Also, wenn wir versuchen, eine ganze Zahl in eine Guss String, dann werden wir versuchen, zu interpretieren 760 00:40:07,060 --> 00:40:10,500 einige zufällige Teil des Speichers als String. 761 00:40:10,500 --> 00:40:14,465 Und das fast immer bricht Dinge. 762 00:40:14,465 --> 00:40:17,040 >> JOSEPH: Aber wenn das verwirrt Sie, wir werden es für 763 00:40:17,040 --> 00:40:17,550 mehr in die Tiefe später. 764 00:40:17,550 --> 00:40:17,850 >> ROB: Ja. 765 00:40:17,850 --> 00:40:20,540 Das ist, wohin du gehst in Zeiger zu bekommen. 766 00:40:20,540 --> 00:40:25,485 Und das ist ein bedeutenden Teil von zwei Wochen dieses Kurses. 767 00:40:25,485 --> 00:40:28,275 >> SPEAKER 6: Funktioniert es wie Objekte in anderen Sprachen nicht wirklich oder? 768 00:40:28,275 --> 00:40:34,050 >> ROB: Also in anderen Sprachen, Objekte würde mit Zeigern dargestellt werden. 769 00:40:34,050 --> 00:40:37,070 770 00:40:37,070 --> 00:40:38,793 Es ist nicht das Gleiche, aber. 771 00:40:38,793 --> 00:40:42,110 772 00:40:42,110 --> 00:40:42,910 Irgendwelche Gedanken? 773 00:40:42,910 --> 00:40:43,760 >> JOSEPH: Nein 774 00:40:43,760 --> 00:40:44,185 Keine Gedanken. 775 00:40:44,185 --> 00:40:44,980 >> ROB: OK. 776 00:40:44,980 --> 00:40:46,994 >> JOSEPH: Weiter. 777 00:40:46,994 --> 00:40:48,255 >> ROB: Gehen Sie einfach mit dem. 778 00:40:48,255 --> 00:40:48,670 Gut. 779 00:40:48,670 --> 00:40:51,120 So Modulo. 780 00:40:51,120 --> 00:40:53,900 So wie wir plus, minus, teilen und vermehren. 781 00:40:53,900 --> 00:40:56,720 So Modulo ist eine Sie kann noch nicht gesehen habe. 782 00:40:56,720 --> 00:40:59,540 Und es sagt nur, geben mich der Rest der. 783 00:40:59,540 --> 00:41:02,850 Also 55% 10. 784 00:41:02,850 --> 00:41:06,840 Der Rest tut 55 geteilt um 10 würde 5 sein. 785 00:41:06,840 --> 00:41:09,630 Also 55% 10 5. 786 00:41:09,630 --> 00:41:12,260 Und 3% 5 würde 3 sein. 787 00:41:12,260 --> 00:41:14,180 8% 8 0 sein. 788 00:41:14,180 --> 00:41:15,903 16% 15 1 sein. 789 00:41:15,903 --> 00:41:20,670 >> JOSEPH: Eine Sache, die mit diesem beachten, Auch ist es vielleicht nicht wie erwartet 790 00:41:20,670 --> 00:41:22,700 wenn Sie eine negative Zahl zu verwenden. 791 00:41:22,700 --> 00:41:26,215 So negativen 5% 4, einige Leute könnte denken, das ist - 792 00:41:26,215 --> 00:41:28,890 793 00:41:28,890 --> 00:41:33,808 was würden Sie denken negativ 5% 4 wäre? 794 00:41:33,808 --> 00:41:34,792 >> SPRECHER 5: One. 795 00:41:34,792 --> 00:41:37,920 >> JOSEPH: Also manche Leute sagen, eine, einige Leute sagen, negative. 796 00:41:37,920 --> 00:41:38,450 Aber was - 797 00:41:38,450 --> 00:41:40,820 >> ROB: Ich würde noch nicht einmal , sagte einer von denen. 798 00:41:40,820 --> 00:41:42,370 >> JOSEPH: Zwei, sorry. 799 00:41:42,370 --> 00:41:43,240 Einige Leute sagen - 800 00:41:43,240 --> 00:41:43,450 >> ROB: Drei. 801 00:41:43,450 --> 00:41:43,800 >> JOSEPH: Drei? 802 00:41:43,800 --> 00:41:44,890 >> ROB: Negativ - 803 00:41:44,890 --> 00:41:45,950 was war das - negativ fünf - 804 00:41:45,950 --> 00:41:47,100 >> JOSEPH: Drei, drei, drei. 805 00:41:47,100 --> 00:41:48,450 Entschuldigung. 806 00:41:48,450 --> 00:41:51,910 Da Modulo, in der Regel, wenn Sie habe gesehen anderswo, bedeutet das normalerweise, 807 00:41:51,910 --> 00:41:54,000 geben eine positive Zahl, oder? 808 00:41:54,000 --> 00:42:01,160 >> ROB: Also, wenn wir in der Mathematik sagen, 10% der, sie neigen zu wollen, um Ihnen - 809 00:42:01,160 --> 00:42:05,980 wenn wir um 10 mod, dann erwarten wir, bekommen eine Zahl zwischen 0 und 9. 810 00:42:05,980 --> 00:42:09,860 In hier, das ist nicht der Fall, dass Sie erhalten negative Zahlen zurückgekehrt. 811 00:42:09,860 --> 00:42:15,898 >> JOSEPH: Also minus 5% 4 wäre negativ ein. 812 00:42:15,898 --> 00:42:19,325 >> ROB: Aber es ist selten, dass man mod-Ing sind negative Zahlen zu beginnen. 813 00:42:19,325 --> 00:42:25,490 814 00:42:25,490 --> 00:42:25,970 Direkt dies. 815 00:42:25,970 --> 00:42:27,314 >> JOSEPH: Ja. 816 00:42:27,314 --> 00:42:29,420 >> ROB: Meh. 817 00:42:29,420 --> 00:42:29,990 OK. 818 00:42:29,990 --> 00:42:36,400 So eine letzte Sache, über hinweisen, Schwimmer ist, es ist ein gefährliches Verhalten, 819 00:42:36,400 --> 00:42:39,850 Schwimmer sind aber nicht eine genaue Darstellung. 820 00:42:39,850 --> 00:42:46,190 So geht wieder zurück auf die Bytes, daran erinnern, dass ein int ist immer vier Byte und eine 821 00:42:46,190 --> 00:42:47,830 Schwimmer ist immer vier Bytes. 822 00:42:47,830 --> 00:42:51,340 So Lucas Beispiel ist ziemlich gut. 823 00:42:51,340 --> 00:42:55,730 >> So denken von 1 geteilt durch drei. 824 00:42:55,730 --> 00:42:57,800 So 0,3333333. 825 00:42:57,800 --> 00:43:03,540 Wenn ich nur 32 Bit, wie kann Ich speichere 0,33333 genau? 826 00:43:03,540 --> 00:43:07,250 Und vielleicht, warum auch immer, sagen Sie, gut, gut, sagen wir einfach, 827 00:43:07,250 --> 00:43:13,210 dass diese besondere 1011001, lassen nur sagen, dass sollte 0.333333 sein. 828 00:43:13,210 --> 00:43:16,960 Nun, Sie haben nur eine endliche Anzahl von diese Bits, so ist es unmöglich, 829 00:43:16,960 --> 00:43:22,550 stellen jede einzelne Floating-Point- Wert angegeben nur 32 Bit. 830 00:43:22,550 --> 00:43:25,580 >> Nun, es ist unmöglich, jede darstellen Fließkommawert angegeben unendlich - 831 00:43:25,580 --> 00:43:28,480 gut, da jede endliche Anzahl von Bits. 832 00:43:28,480 --> 00:43:38,265 Also die Frage ist hier, nun, als wir bis auf zwei Dezimalstellen zu drucken, 833 00:43:38,265 --> 00:43:42,000 wir haben die Antwort richtig 0,10 zu bekommen. 834 00:43:42,000 --> 00:43:47,510 Aber unter der Haube, ist es wirklich so nahe wie möglich an gespeicherten 835 00:43:47,510 --> 00:43:51,790 0,10 als dieser Bits darstellen kann. 836 00:43:51,790 --> 00:43:53,200 Ist das auf der nächsten Folie? 837 00:43:53,200 --> 00:43:53,830 Oder ist es nicht? 838 00:43:53,830 --> 00:43:54,660 >> JOSEPH: Ja, es ist so. 839 00:43:54,660 --> 00:43:55,750 >> ROB: Blegh, blegh. 840 00:43:55,750 --> 00:43:57,760 >> JOSEPH: Ja, können Sie einfach Ziehen Sie die Noten ein wenig. 841 00:43:57,760 --> 00:43:59,700 >> ROB: Ich werde einfach zu vergrößern in der letzten auf die. 842 00:43:59,700 --> 00:44:00,950 Oh mein Gott, das ist [unverständlich]. 843 00:44:00,950 --> 00:44:06,089 844 00:44:06,089 --> 00:44:08,300 Damit Nummer. 845 00:44:08,300 --> 00:44:12,300 Das ist, was gedruckt wird wenn wir dieses Programm laufen. 846 00:44:12,300 --> 00:44:20,340 Und feststellen, dass es nicht wirklich eine große Sache wenn wir nur die Sorge um, wie 847 00:44:20,340 --> 00:44:21,920 zwei vor drei Dezimalstellen. 848 00:44:21,920 --> 00:44:26,700 Wie wir nur 0,10 ursprünglich gedruckt, und das ist, warum wir nichts falsch sah. 849 00:44:26,700 --> 00:44:31,380 Aber sobald wir anfangen, in der exakte, genaue Zahl, dass es 850 00:44:31,380 --> 00:44:35,660 darstellt, sehen wir, dass es nicht kann genau darstellen 0.1. 851 00:44:35,660 --> 00:44:40,900 >> Und Teil des Problems hier ist wie, alles in Ordnung, das ist in Ordnung, aber, na ja, 852 00:44:40,900 --> 00:44:46,120 erste, was, wenn wir versucht haben, Antwort gleich gleich 0,1? 853 00:44:46,120 --> 00:44:49,200 Ist das wahr oder falsch gehen, zurückzukehren? 854 00:44:49,200 --> 00:44:51,850 Und so ist es schwer zu sagen. 855 00:44:51,850 --> 00:44:53,330 Ich denke, es könnte tatsächlich wahr zurück. 856 00:44:53,330 --> 00:44:55,265 Wird es zuerst - 857 00:44:55,265 --> 00:44:56,180 Ich weiß nicht. 858 00:44:56,180 --> 00:45:00,090 Die Antwort ist, wenn Sie sich zu starten mit Gleitkomma-Werte, die Sie ziemlich 859 00:45:00,090 --> 00:45:05,150 viel sollten nicht mit Gleichheit werden Aufgrund dieser Ungenauigkeit. 860 00:45:05,150 --> 00:45:09,470 >> Und für alles, was Sie wissen, ist es die hundertste Dezimalstelle, dass die 861 00:45:09,470 --> 00:45:13,670 Floating-Point war nicht in der Lage korrekt zu behandeln. 862 00:45:13,670 --> 00:45:18,180 Und so wird die Gleichstellung gerade nicht selbst obwohl die Zahl - wenn Sie hatte 863 00:45:18,180 --> 00:45:24,450 mit genauen Zahlen, sollten die Zahlen genau das gleiche. 864 00:45:24,450 --> 00:45:27,790 Es ist im Laufe der wie 50 Berechnungen mit dieser schwimmenden 865 00:45:27,790 --> 00:45:30,270 Punktwerte, der Fehler kann bauen höher und höher und höher, und 866 00:45:30,270 --> 00:45:31,125 Dinge einfach etwas falsch. 867 00:45:31,125 --> 00:45:33,870 >> JOSEPH: Und es war wirklich berühmte Beispiele, dass dies geschieht. 868 00:45:33,870 --> 00:45:37,190 Wie NASA-Ingenieure haben diese bekommen falsch, was Raketen explodieren in 869 00:45:37,190 --> 00:45:38,665 die Luft, nachdem sie ins Leben gerufen haben. 870 00:45:38,665 --> 00:45:41,490 Und viele Probleme wie die. 871 00:45:41,490 --> 00:45:41,956 Also ja. 872 00:45:41,956 --> 00:45:45,218 >> SPEAKER 6: Wenn Sie sagen, 0,3 f, hat sie den Rest abschneiden? 873 00:45:45,218 --> 00:45:46,468 Oder ist es auf-oder abrunden? 874 00:45:46,468 --> 00:45:48,800 875 00:45:48,800 --> 00:45:50,200 >> ROB: Wird es rund printf? 876 00:45:50,200 --> 00:45:52,180 >> JOSEPH: Ich denke, printf abschneidet. 877 00:45:52,180 --> 00:45:52,640 >> ROB: OK. 878 00:45:52,640 --> 00:45:59,890 So können wir in ähnlicher Weise in die entgegengesetzte gehen Richtung dieser, wobei in diesem Fall 879 00:45:59,890 --> 00:46:03,320 der nächste es darstellen könnte 0,1 war mit dieser Nummer. 880 00:46:03,320 --> 00:46:06,820 Der nächst es vielleicht in der Lage zu sein, repräsentieren 0,2 ist in der entgegengesetzten 881 00:46:06,820 --> 00:46:11,420 Richtung, ,199999996356 oder so etwas. 882 00:46:11,420 --> 00:46:17,480 Also, wenn wir in diese Richtung ging der Dinge, dann printf 0,3 f zurückkehren würde 883 00:46:17,480 --> 00:46:20,866 1,99 statt 2,00. 884 00:46:20,866 --> 00:46:22,960 >> JOSEPH: Und ich bin mir nicht ganz auf, dass sicher. 885 00:46:22,960 --> 00:46:25,430 Vielleicht möchten Sie einen kleinen, wenig Programm, um einfach mal, dass. 886 00:46:25,430 --> 00:46:29,370 >> ROB: Obwohl, was wir sind sicher, dass wenn Sie, dass ein Guss versucht 887 00:46:29,370 --> 00:46:33,660 int, und Gießen in einen int wird sich dazu führen, dass die Dezimalstelle abgeschnitten, wenn 888 00:46:33,660 --> 00:46:38,140 Sie versuchen, werfen 1.9999999 in einen int, werden Sie ein zu erhalten. 889 00:46:38,140 --> 00:46:41,440 Und so nutzen Sie in der Regel sollte die Runde Funktion in der Mathematik-Bibliothek. 890 00:46:41,440 --> 00:46:44,190 891 00:46:44,190 --> 00:46:45,440 Fragen? 892 00:46:45,440 --> 00:46:47,660 893 00:46:47,660 --> 00:46:48,982 OK. 894 00:46:48,982 --> 00:46:54,000 >> JOSEPH: So bewegen auf die Bedingungen und boolesche Ausdrücke. 895 00:46:54,000 --> 00:46:58,120 So Sie diese gesehen haben, bevor. 896 00:46:58,120 --> 00:47:07,420 Und eigentlich möchte ich, dass meine machen Computer ist im richtigen Format hier. 897 00:47:07,420 --> 00:47:08,670 Raum. 898 00:47:08,670 --> 00:47:10,630 899 00:47:10,630 --> 00:47:13,870 Es tut uns leid, wir gehen zu müssen, umzugehen ein wenig mit Cutoff an den Rändern. 900 00:47:13,870 --> 00:47:15,830 >> Aber ja, ihr Jungs haben gesehen, bevor in Scratch. 901 00:47:15,830 --> 00:47:19,930 Also das hier ist ein Ausdruck was verwendet wird, 902 00:47:19,930 --> 00:47:21,250 eine bedingte Anweisung. 903 00:47:21,250 --> 00:47:23,930 So beantworten größer als Null Willen Ihnen sagen, wahr oder falsch. 904 00:47:23,930 --> 00:47:26,530 Und diese sind wirklich wichtig, weil sie ermöglichen es uns vorstellen 905 00:47:26,530 --> 00:47:28,670 Logik in unseren Code. 906 00:47:28,670 --> 00:47:32,820 >> So zum Beispiel ist dies ein Programm, Scratch, die den Benutzer fragt geschrieben 907 00:47:32,820 --> 00:47:36,980 für eine ganze Zahl und sagt ihnen, ob die ganze Zahl, die sie dir gab, war ein 908 00:47:36,980 --> 00:47:38,690 positive oder negative Zahl ist. 909 00:47:38,690 --> 00:47:42,980 Und die Umwandlung hier zu sehen ist Sie zuerst drucken Sie die Aussage, 910 00:47:42,980 --> 00:47:43,870 geben Sie mir eine ganze Zahl. 911 00:47:43,870 --> 00:47:45,980 Und dann fragen Sie sie für eine ganze Zahl. 912 00:47:45,980 --> 00:47:49,870 >> Und dann haben Sie bedingte Logik über verwenden hier, um zu prüfen, ob diese Zahl 913 00:47:49,870 --> 00:47:52,030 tatsächlich grßer als Null ist oder nicht. 914 00:47:52,030 --> 00:47:58,960 So, hier haben wir einen Booleschen Ausdruck innerhalb einer bedingten If-Anweisung. 915 00:47:58,960 --> 00:48:00,660 Gibt es noch Fragen? 916 00:48:00,660 --> 00:48:03,030 Haben Sie Fragen dazu? 917 00:48:03,030 --> 00:48:03,950 OK. 918 00:48:03,950 --> 00:48:06,140 >> Es gibt also mehr als nur größer als natürlich. 919 00:48:06,140 --> 00:48:10,385 Sie können boolesche Ausdrücke konstruieren mit den meisten Arten von Dingen, die Sie 920 00:48:10,385 --> 00:48:11,150 wäre in Mathe zu denken. 921 00:48:11,150 --> 00:48:12,370 So größer. 922 00:48:12,370 --> 00:48:13,740 Das sollte ein kleiner sein. 923 00:48:13,740 --> 00:48:14,990 Entschuldigung. 924 00:48:14,990 --> 00:48:18,520 925 00:48:18,520 --> 00:48:19,760 Und der Abstand. 926 00:48:19,760 --> 00:48:22,971 >> ROB: Gott bewahre Sie es verlassen. 927 00:48:22,971 --> 00:48:23,620 >> JOSEPH: In Ordnung. 928 00:48:23,620 --> 00:48:25,950 So größer als, kleiner als, größer als oder gleich, kleiner 929 00:48:25,950 --> 00:48:27,070 als oder gleich. 930 00:48:27,070 --> 00:48:31,980 Wir verwenden für Doppel Gleichen überprüfen Gleichheit, da einzelne Mittel gleich 931 00:48:31,980 --> 00:48:32,810 Zuordnung, oder? 932 00:48:32,810 --> 00:48:33,140 Ja. 933 00:48:33,140 --> 00:48:37,130 Und dann können wir auch nicht gleich durch mit Ausrufezeichen, entspricht. 934 00:48:37,130 --> 00:48:41,530 >> Und das Ausrufezeichen-Symbol kann auch erweitert werden, so dass, wenn Sie wollen, 935 00:48:41,530 --> 00:48:44,050 um jede Art von Boolean invertieren Ausdruck, können Sie das tun. 936 00:48:44,050 --> 00:48:48,530 So wird dies als wahr ausgewertet nur wenn die Antwort weniger 937 00:48:48,530 --> 00:48:51,240 als oder gleich Null ist. 938 00:48:51,240 --> 00:48:53,950 Haben Sie Fragen dazu? 939 00:48:53,950 --> 00:48:55,180 OK. 940 00:48:55,180 --> 00:48:58,840 >> So kann man auch kombinieren diese Ausdrücke mit logischen Und-und 941 00:48:58,840 --> 00:48:59,790 logische Oder. 942 00:48:59,790 --> 00:49:03,530 Also das ist nur der und Symbol, was sollte Shift 7 sein. 943 00:49:03,530 --> 00:49:07,720 Und das ist das Pipe-Symbol, das ist, kein Klein L. Es ist das einzige 944 00:49:07,720 --> 00:49:09,440 das ist richtig über dem Enter-Taste. 945 00:49:09,440 --> 00:49:12,870 So können Sie zwei von diesen verwenden, um zu symbolisieren logische Und die logische Oder. 946 00:49:12,870 --> 00:49:18,180 >> So wird dies nur true zurück, wenn Antwort eins, zwei, drei oder vier. 947 00:49:18,180 --> 00:49:23,030 Und das wird nur true zurück, wenn Antwort ist darüber hinaus auf beiden Seiten. 948 00:49:23,030 --> 00:49:26,190 Es ist also nicht eine, zwei, drei, oder vier. 949 00:49:26,190 --> 00:49:28,385 Und die Art, die Sie verwenden würden dass in einem Ausdruck - 950 00:49:28,385 --> 00:49:29,990 >> ROB: Oder eine Null oder eine fünf. 951 00:49:29,990 --> 00:49:32,200 >> JOSEPH: Null oder ein fünf. 952 00:49:32,200 --> 00:49:32,380 Entschuldigung. 953 00:49:32,380 --> 00:49:33,320 Ja, ja, ja. 954 00:49:33,320 --> 00:49:34,180 OK. 955 00:49:34,180 --> 00:49:38,980 Und im Laufe der bald hier, auf die gleiche Weise würde diesen Ausdruck zu verwenden, eine kleinere 956 00:49:38,980 --> 00:49:42,000 Ausdrucksseite eines Wird Vorbehalts Aussage, würden Sie es auch verwenden, die 957 00:49:42,000 --> 00:49:47,800 gleicher Weise durch nur darum, es in der die Klammern der If-Anweisung. 958 00:49:47,800 --> 00:49:54,020 Also das printf wird nur ausgelöst, wenn Antwort eins, zwei, drei oder vier. 959 00:49:54,020 --> 00:49:56,002 Haben Sie Fragen zum Kombinieren Ausdrücke? 960 00:49:56,002 --> 00:50:00,450 961 00:50:00,450 --> 00:50:04,240 >> So gibt es eine weitere Bedingung Konstrukt nennen wir eine If / Else. 962 00:50:04,240 --> 00:50:08,120 Also im Grunde bedeutet dies nun, OK, wenn etwas, was ich wollte, um zu überprüfen, war nicht 963 00:50:08,120 --> 00:50:11,600 wahr ist, dann zu gehen und die Else durchzuführen, dass andere Aktion. 964 00:50:11,600 --> 00:50:15,570 Also in diesem Fall, fragte ich der Benutzer für eine ganze Zahl. 965 00:50:15,570 --> 00:50:17,790 Die ganze Zahl größer als Null? 966 00:50:17,790 --> 00:50:18,310 Ja? 967 00:50:18,310 --> 00:50:20,100 Nun, dann nahm sie eine positive Zahl. 968 00:50:20,100 --> 00:50:22,320 Wenn nicht, dann muss es negativ oder Null. 969 00:50:22,320 --> 00:50:27,530 So haben Sie eine negative Zahl abgeholt oder in diesem Fall Null. 970 00:50:27,530 --> 00:50:29,235 Ja. 971 00:50:29,235 --> 00:50:30,485 Oder eine Null. 972 00:50:30,485 --> 00:50:36,320 973 00:50:36,320 --> 00:50:39,300 >> Und dann haben wir auch If / Else, Wenn und Else. 974 00:50:39,300 --> 00:50:45,640 Also das lässt uns führen eine Folge von Dinge nur, wenn die ersten, die scheitern. 975 00:50:45,640 --> 00:50:49,540 Also in diesem Fall, wir machen jetzt die letzte holen Null. 976 00:50:49,540 --> 00:50:53,080 Also, wenn sie weder eine positive noch abgeholt eine negative Zahl ist, dann müssen sie 977 00:50:53,080 --> 00:50:53,640 haben null abgeholt. 978 00:50:53,640 --> 00:50:56,720 Also es geht einfach unten die Kette wie diese. 979 00:50:56,720 --> 00:50:59,960 >> So ein Beispiel, wie ein Wenn sich von - 980 00:50:59,960 --> 00:51:02,590 Wenn ein / Else ist anders nur eine Folge von Ifs. 981 00:51:02,590 --> 00:51:07,680 Und dies ist eine häufige Frage, die Leute fragen, ist, nun ja, wenn man wie ein zu 982 00:51:07,680 --> 00:51:11,265 95 in CS50, was das wird Programm sagen? 983 00:51:11,265 --> 00:51:12,600 >> SPRECHER 5: Sie bekam eine A. 984 00:51:12,600 --> 00:51:13,490 >> JOSEPH: Ja. 985 00:51:13,490 --> 00:51:14,960 Sie haben jedes einzelne einer von denen, rechts. 986 00:51:14,960 --> 00:51:17,130 Sie bekam ein A, B haben Sie, die Sie bekam ein C und ein D, oder? 987 00:51:17,130 --> 00:51:19,770 So bekommen alle diese ausgewertet in Ordnung. 988 00:51:19,770 --> 00:51:23,570 Während also eine 95 grßer ist als 90, ist es auch größer als 80, ist es auch 989 00:51:23,570 --> 00:51:25,790 mehr als 70, und es ist auch größer als 60 ist. 990 00:51:25,790 --> 00:51:27,620 Also du hast all diese Qualitäten. 991 00:51:27,620 --> 00:51:31,630 Und ich nehme an, Sie würden nur wollen, dass die A. 992 00:51:31,630 --> 00:51:34,060 >> Die Möglichkeit, das zu beheben, ist zu ersetzen die mit Else / Wenn 's. 993 00:51:34,060 --> 00:51:37,540 So in diesem Szenario sieht es, dass 95 mehr als 90, und dann tut es 994 00:51:37,540 --> 00:51:38,885 den Rest nicht bewerten der Aussagen. 995 00:51:38,885 --> 00:51:41,900 996 00:51:41,900 --> 00:51:43,150 Haben Sie Fragen dazu? 997 00:51:43,150 --> 00:51:48,580 998 00:51:48,580 --> 00:51:52,470 >> So gibt es eine andere Art von bedingten Struktur, die wir hier haben, die wir 999 00:51:52,470 --> 00:51:53,390 rufen Sie eine Switch-Anweisung. 1000 00:51:53,390 --> 00:51:57,390 Also das können Sie im Grunde überprüfen was der Wert einer Zahl, die Sie setzen 1001 00:51:57,390 --> 00:51:59,000 in den Switch-Anweisung ist. 1002 00:51:59,000 --> 00:52:03,200 Also in diesem Szenario, wir sind Schalt n auf, und wir sagen, oh, wenn n 1003 00:52:03,200 --> 00:52:04,710 ein, und drucken Sie diese Aussage. 1004 00:52:04,710 --> 00:52:07,910 Und dann brechen, was bedeutet, Ausfahrt aus der Switch-Anweisung. 1005 00:52:07,910 --> 00:52:12,670 >> Wenn es nicht eine, dann gut, nur schließlich lassen Sie sich von den Fällen. 1006 00:52:12,670 --> 00:52:16,280 Und so prüft sie, ob es eine oder zwei oder drei, und er druckt entsprechend. 1007 00:52:16,280 --> 00:52:19,780 Und was das Schlüsselwort default hier unten Mittel ist, wenn sie nicht eingegeben hat jede 1008 00:52:19,780 --> 00:52:21,690 von denen, dann sagen ungültig. 1009 00:52:21,690 --> 00:52:25,910 Also sagen wir, ich frage für n und der Benutzer gibt mir vier. 1010 00:52:25,910 --> 00:52:29,470 Na ja, passt es keinem dieser Fälle, so wird es ausdrucken, was in der 1011 00:52:29,470 --> 00:52:30,540 Standardsektion. 1012 00:52:30,540 --> 00:52:31,180 Ja, in Frage zu stellen? 1013 00:52:31,180 --> 00:52:32,614 >> SPRECHER 5: Können Sie Boolean verwenden Ausdrücke statt 1014 00:52:32,614 --> 00:52:33,570 ein, zwei oder drei? 1015 00:52:33,570 --> 00:52:36,940 >> JOSEPH: Die Frage ist können Sie mit Boolean-Ausdrücke statt einer, 1016 00:52:36,940 --> 00:52:37,940 zwei und drei? 1017 00:52:37,940 --> 00:52:40,520 Und in C, ich glaube, Sie kann das nicht tun. 1018 00:52:40,520 --> 00:52:44,320 Aber auch in anderen Sprachen, die Sie vielleicht stoßen am Ende der 1019 00:52:44,320 --> 00:52:46,460 Semester wie JavaScript, Sie können. 1020 00:52:46,460 --> 00:52:50,050 Nun, würden Sie berechnen zunächst dieser Wert und es dann in die 1021 00:52:50,050 --> 00:52:50,650 switch-Anweisung. 1022 00:52:50,650 --> 00:52:50,930 Ja? 1023 00:52:50,930 --> 00:52:54,760 >> ROB: Also Teil der Leistung des Schalters Aussagen aus denke, wenn man das getan hat 1024 00:52:54,760 --> 00:52:58,680 als If / Else, so wie, wenn n gleich entspricht einer oder was auch immer. 1025 00:52:58,680 --> 00:53:00,300 Else / Wenn n gleich gleich zwei, was auch immer. 1026 00:53:00,300 --> 00:53:01,960 Else / Wenn n gleich gleich drei. 1027 00:53:01,960 --> 00:53:05,930 Also der Weg das Programm laufen würde, ist es sequenziell nach unten gehen, die Liste 1028 00:53:05,930 --> 00:53:07,500 und zu überprüfen, ist n ein? 1029 00:53:07,500 --> 00:53:08,040 Nope. 1030 00:53:08,040 --> 00:53:09,070 Ist n zwei? 1031 00:53:09,070 --> 00:53:09,490 Nope. 1032 00:53:09,490 --> 00:53:10,940 Ist n drei? 1033 00:53:10,940 --> 00:53:11,710 Ja. 1034 00:53:11,710 --> 00:53:12,610 Tun Sie dies. 1035 00:53:12,610 --> 00:53:15,270 >> Während bei switch-Anweisungen, ist es tatsächlich in der Lage zu kompilieren es zu sein 1036 00:53:15,270 --> 00:53:16,360 wirklich schnell. 1037 00:53:16,360 --> 00:53:19,550 Und sobald sie sagt, Schalter, es sagt, alles in Ordnung, n zwei, ich bin 1038 00:53:19,550 --> 00:53:23,060 sofort los, um zu springen, wo Ich soll die Ausführung beginnen. 1039 00:53:23,060 --> 00:53:26,080 Ich werde nicht erst prüfen, ist n ein, ist n zwei? 1040 00:53:26,080 --> 00:53:28,860 Es kann sofort tun beginnen was es tun soll. 1041 00:53:28,860 --> 00:53:33,830 >> Und aus diesem Grund, kann es nicht nehmen Boolean Bedingungen. 1042 00:53:33,830 --> 00:53:36,480 Oder wäre es zu tun haben, die sequentielle, wie, alles in Ordnung, ist n 1043 00:53:36,480 --> 00:53:37,820 größer als Null? 1044 00:53:37,820 --> 00:53:41,140 Else ist n größer als 10 oder was auch immer. 1045 00:53:41,140 --> 00:53:44,780 >> JOSEPH: In diesem Fall, wenn Sie verwendet If / Else, wenn das, dann wird der Schalter würde 1046 00:53:44,780 --> 00:53:47,792 etwa drei Mal laufen schneller als der If / Else, Wenn. 1047 00:53:47,792 --> 00:53:53,060 1048 00:53:53,060 --> 00:53:56,040 Wir können den Schalter in solchen organisieren eine Möglichkeit, die wir nicht brechen 1049 00:53:56,040 --> 00:53:57,520 nach jedem der Fälle. 1050 00:53:57,520 --> 00:54:00,960 Also in diesem Fall bin ich der Partitionierung Zahlen, die wir in ein und wählen 1051 00:54:00,960 --> 00:54:04,250 zwei, die nicht hoch Zahlen und drei sind eine hohe Zahl. 1052 00:54:04,250 --> 00:54:08,290 >> So dass in diesem Fall ein oder zwei, wenn n, es wird den Fall getroffen und dann wird es 1053 00:54:08,290 --> 00:54:10,640 durchfallen, weil es gibt keine Pause. 1054 00:54:10,640 --> 00:54:11,610 Und es wird hier zu enden. 1055 00:54:11,610 --> 00:54:15,360 Also, wenn wir ein Pick, wird es das tun printf und dann zu brechen, so dass keine der 1056 00:54:15,360 --> 00:54:17,610 Dieses wird ausgeführt. 1057 00:54:17,610 --> 00:54:21,870 Und natürlich, wenn sie in drei geben oder etwas anderes, dann wird es überspringen 1058 00:54:21,870 --> 00:54:25,320 diese und nicht hin, und es wird stattdessen führen Sie die 1059 00:54:25,320 --> 00:54:27,490 entsprechenden Zeile. 1060 00:54:27,490 --> 00:54:29,390 Haben Sie Fragen dazu? 1061 00:54:29,390 --> 00:54:29,780 Ja? 1062 00:54:29,780 --> 00:54:32,642 >> SPRECHER 4: Würden Sie eine Fehlermeldung erhalten, wenn Sie hatte eine Pause nach Fall ein, aber es 1063 00:54:32,642 --> 00:54:34,550 nicht etwas für sie zu tun? 1064 00:54:34,550 --> 00:54:37,820 >> JOSEPH: Die Frage ist also würden Sie bekommen ein Fehler, wenn Sie eine Pause nach haben 1065 00:54:37,820 --> 00:54:39,730 Groß ein, aber es gibt nichts zu tun? 1066 00:54:39,730 --> 00:54:41,520 Und die Antwort ist nein. 1067 00:54:41,520 --> 00:54:43,172 Sie werden nicht tatsächlich einen Fehler. 1068 00:54:43,172 --> 00:54:44,590 Ja, hmm mm. 1069 00:54:44,590 --> 00:54:54,540 >> So als eine Art ein wenig hier Wandel, Ich werde eine printf hier setzen. 1070 00:54:54,540 --> 00:54:55,790 Whoops. 1071 00:54:55,790 --> 00:55:00,994 1072 00:55:00,994 --> 00:55:04,880 So was würde das drucken, wenn Ich legte ein als Eingabe? 1073 00:55:04,880 --> 00:55:07,530 1074 00:55:07,530 --> 00:55:07,770 Ja. 1075 00:55:07,770 --> 00:55:10,360 Es würde Ihnen sagen, es dauerte nicht eine hohe Zahl doppelt, oder? 1076 00:55:10,360 --> 00:55:13,500 Weil es diesen ersten Fall schlagen, es wäre nicht zerbrechen, und es fallen 1077 00:55:13,500 --> 00:55:15,730 durch den zweiten Fall. 1078 00:55:15,730 --> 00:55:16,950 Haben Sie Fragen dazu? 1079 00:55:16,950 --> 00:55:18,280 >> ROB: Haben Sie weitere Fragen? 1080 00:55:18,280 --> 00:55:20,840 >> JOSEPH: OK, abkühlen. 1081 00:55:20,840 --> 00:55:22,400 Gut. 1082 00:55:22,400 --> 00:55:25,780 Also es ist etwas anderes fordern wir ein ternären Operator, der im Grunde ein 1083 00:55:25,780 --> 00:55:29,010 alternative Syntax zu tun, Wenn dann Else. 1084 00:55:29,010 --> 00:55:30,470 Und es können Sie sie alle auf einer Linie zu tun. 1085 00:55:30,470 --> 00:55:34,110 Also in diesem Programm, Ich frage den Benutzer nach n. 1086 00:55:34,110 --> 00:55:37,190 Und wenn n größer als 100 ist, sage ich sie nahm sie eine hohe Anzahl. 1087 00:55:37,190 --> 00:55:39,560 Else Ich sage ihnen, sie nahm eine geringe Anzahl. 1088 00:55:39,560 --> 00:55:43,030 >> So können wir diese wirklich lange Syntax verwenden, String, S, und dann prüfen, ob n 1089 00:55:43,030 --> 00:55:45,260 größer als 100, und weisen es entsprechend. 1090 00:55:45,260 --> 00:55:49,450 Aber wir können so viel übersichtlicher machen mit dieser ternären Operator Syntax 1091 00:55:49,450 --> 00:55:52,090 die eine Frage beinhaltet Zeichen und Doppelpunkt. 1092 00:55:52,090 --> 00:55:55,070 Also das Fragezeichen ist im Wesentlichen eine Frage zu stellen, oder? 1093 00:55:55,070 --> 00:55:56,625 >> ROB: Vielleicht Vergrößern auf die. 1094 00:55:56,625 --> 00:55:57,372 >> JOSEPH: Ja. 1095 00:55:57,372 --> 00:56:00,210 Guter Punkt. 1096 00:56:00,210 --> 00:56:02,550 Das ist also die ternäre Operator. 1097 00:56:02,550 --> 00:56:06,100 Ich zuerst die Frage stellen, n größer als 100? 1098 00:56:06,100 --> 00:56:09,770 Wenn ja, dann führe ich das erste Teil vor dem Doppelpunkt. 1099 00:56:09,770 --> 00:56:13,360 Wenn es nicht ist, dann führen die ich zweite Teil nach dem Doppelpunkt. 1100 00:56:13,360 --> 00:56:16,640 So dass, wenn n größer als 100 ist, dann hebt es hoch und Puts 1101 00:56:16,640 --> 00:56:18,360 dass in String s. 1102 00:56:18,360 --> 00:56:22,170 Wenn n kleiner als 100 ist, nimmt es günstig und legt dann, dass in String s. 1103 00:56:22,170 --> 00:56:30,186 So, dass diese großen Brocken kondensieren nach unten in genau diesem eine Zeile. 1104 00:56:30,186 --> 00:56:32,010 >> SPRECHER 5: Ist das beliebt? 1105 00:56:32,010 --> 00:56:36,070 >> JOSEPH: Ja, es ist sehr beliebt für Dinge, bei denen im Wesentlichen Sie wollen 1106 00:56:36,070 --> 00:56:38,700 Sie eine Zuordnung auf Basis eine Art von Zustand. 1107 00:56:38,700 --> 00:56:43,110 Und in diesem Fall haben wir versucht um einen Wert in String s zuweisen. 1108 00:56:43,110 --> 00:56:44,840 Es ist nicht so - 1109 00:56:44,840 --> 00:56:47,670 Ich glaube, ich weiß nicht wirklich lieber in anderen Fällen. 1110 00:56:47,670 --> 00:56:49,390 Aber es ist besonders nützlich, für diese Aufgabe. 1111 00:56:49,390 --> 00:56:54,490 >> ROB: Das ist ein ziemlich häufiges Muster wo Sie einige Variable haben, die 1112 00:56:54,490 --> 00:56:58,200 Sie gehen zu sagen, wenn etwas, stellen diese Variable auf einen Wert, sonst setzen 1113 00:56:58,200 --> 00:56:59,810 diese Variable auf einen anderen Wert. 1114 00:56:59,810 --> 00:57:03,360 Und das ist das Szenario wo mit einem ternären. 1115 00:57:03,360 --> 00:57:05,220 >> JOSEPH: Und Sie sparen vielen Linien, oder? 1116 00:57:05,220 --> 00:57:08,090 Und es macht den Code wohl ein bisschen mehr lesbar. 1117 00:57:08,090 --> 00:57:08,635 Ja, in Frage zu stellen? 1118 00:57:08,635 --> 00:57:12,384 >> Lautsprecher 6: Bei einem ternären, können Sie gehen, String s equals s, Fragezeichen? 1119 00:57:12,384 --> 00:57:15,280 Und dann könnte man, sagen wir, fünf verschiedene Optionen. 1120 00:57:15,280 --> 00:57:18,310 Und je nachdem, was die Anzahl von n wurde, würden Sie einer von denen wählen? 1121 00:57:18,310 --> 00:57:22,210 >> JOSEPH: Die Frage ist also, gibt es eine Art von Syntax, wo Sie Zeichenfolge tun können 1122 00:57:22,210 --> 00:57:25,910 s gleich n ist, und dann mehr als zwei Optionen, die nach diesem Fragezeichen? 1123 00:57:25,910 --> 00:57:29,740 Und eine einfache Antwort ist, nein, es ist nicht wirklich ein guter Weg, das zu tun, es sei denn, 1124 00:57:29,740 --> 00:57:33,850 Sie nisten mehrere ternäre wollen Teilnehmer innerhalb der jeweils anderen. 1125 00:57:33,850 --> 00:57:38,050 >> Sie könnte wie n größer als 100 zu tun, Fragezeichen, und dann noch 1126 00:57:38,050 --> 00:57:41,850 ternären Operator, n größer als 50, Fragezeichen, und nisten es so. 1127 00:57:41,850 --> 00:57:45,240 Aber in diesem Szenario ist der Code Erhalten Art unlesbar und chaotisch, 1128 00:57:45,240 --> 00:57:47,920 und es könnte besser sein, gerade zu gehen Wenn ein / Else-Anweisung an diesem Punkt. 1129 00:57:47,920 --> 00:57:54,530 >> ROB: Und auch, als eine Randnotiz, PHP falsch implementiert die ternären 1130 00:57:54,530 --> 00:57:58,053 Betreiber, so dass verschachtelte Ternäre nicht einmal, wie sie sollten. 1131 00:57:58,053 --> 00:57:58,840 >> JOSEPH: Ja. 1132 00:57:58,840 --> 00:58:01,170 So wird es ein wenig verwirrend, vor allem, wenn Sie gehen 1133 00:58:01,170 --> 00:58:02,145 verschiedene Sprachen. 1134 00:58:02,145 --> 00:58:04,810 >> ROB: Es ist verwirrend genug, dass Sprachen sind falsch daran. 1135 00:58:04,810 --> 00:58:08,030 1136 00:58:08,030 --> 00:58:11,510 >> JOSEPH: Also wirklich, nur um zu klären, nicht jeder weiß, was das 1137 00:58:11,510 --> 00:58:13,900 % S tut hier? 1138 00:58:13,900 --> 00:58:15,650 Haben Sie Fragen dazu? 1139 00:58:15,650 --> 00:58:19,760 Ich denke, gerade für die Kamera, die% s im Grunde genommen lässt uns einen Platzhalter 1140 00:58:19,760 --> 00:58:20,790 für einen String. 1141 00:58:20,790 --> 00:58:23,920 Und dann am Ende, wir festlegen, dass die Variable, um in diese setzen wir wollen 1142 00:58:23,920 --> 00:58:25,500 Platzhalter ist s. 1143 00:58:25,500 --> 00:58:27,730 So dass im Grunde nimmt s und es bringt es auf hier. 1144 00:58:27,730 --> 00:58:32,130 Und dann wird es ausdrucken, die Sie ausgewählt eine hohe oder eine niedrige Zahl abgeholt. 1145 00:58:32,130 --> 00:58:33,770 OK. 1146 00:58:33,770 --> 00:58:36,970 >> So Schlaufen ermöglichen Ihnen, die Dinge durchführen in kreisenden Bewegungen, oder? 1147 00:58:36,970 --> 00:58:40,300 Sie könnten dies erlebt haben Kratzer in Form von Forever Schleifen 1148 00:58:40,300 --> 00:58:45,650 oder Repeat Until oder Wiederholen einer bestimmten Mal. 1149 00:58:45,650 --> 00:58:47,540 Warum ist dies so gut für uns? 1150 00:58:47,540 --> 00:58:51,500 Nun, in C, sagen wir, wir haben diese Lied im Scratch umgesetzt, dass 1151 00:58:51,500 --> 00:58:53,450 singt, das ist das Lied dass nie endet. 1152 00:58:53,450 --> 00:58:55,710 Es geht nur auf und auf und auf immer und ewig. 1153 00:58:55,710 --> 00:58:59,395 Nun, man kann nicht wirklich ein Programm machen dass eine unendliche Anzahl von printf 1154 00:58:59,395 --> 00:59:00,850 Aussagen, oder? 1155 00:59:00,850 --> 00:59:04,900 >> Also in diesem Szenario eine Möglichkeit dass man diese Arbeit zu machen und 1156 00:59:04,900 --> 00:59:09,330 um sie für immer zu drucken ist, stattdessen eine While-Schleife. 1157 00:59:09,330 --> 00:59:13,640 So eine While-Schleife wird ausgeführt, was in den Körper der beiden Klammern, 1158 00:59:13,640 --> 00:59:17,250 dazu gehört, auf, was der Zustand ist. 1159 00:59:17,250 --> 00:59:21,170 So dass in diesem besonderen Beispiel vor, wenn wir dies für immer zu drucken, wollen, was 1160 00:59:21,170 --> 00:59:23,590 könnten wir tun? 1161 00:59:23,590 --> 00:59:25,190 Nun, sicher, nicht wahr? 1162 00:59:25,190 --> 00:59:32,290 >> Also diese Art kombiniert die Idee von einigen Booleschen Ausdruck 1163 00:59:32,290 --> 00:59:33,610 zusammen mit einer Schleife. 1164 00:59:33,610 --> 00:59:35,780 Und wir Boolean gelernt Ausdrücke früher. 1165 00:59:35,780 --> 00:59:39,650 Also, wenn der Zustand im Inneren des Zwar bleibt wahr, daß diese Schleife 1166 00:59:39,650 --> 00:59:41,480 auf und auf und auf ausführen. 1167 00:59:41,480 --> 00:59:44,640 Und in diesem Fall, wenn wir liefern sie nur mit echten, bewirkt dies eine unendliche 1168 00:59:44,640 --> 00:59:49,310 Schleife, die den Song auf und druckt auf und wie wir vorher ohne gewünschte 1169 00:59:49,310 --> 00:59:52,410 mit einem Programm, das eine unendliche hat Anzahl der printf-Anweisungen, das ist 1170 00:59:52,410 --> 00:59:55,220 nicht möglich. 1171 00:59:55,220 --> 00:59:57,810 >> Also mehr zwingend, obwohl, Sie können dies mit ein verwenden 1172 00:59:57,810 --> 00:59:59,710 Variable und eine Bedingung. 1173 00:59:59,710 --> 01:00:04,420 Also sagen wir, wir wiederholen möchten die Satz, völlig durchgeknallten, 10-mal. 1174 01:00:04,420 --> 01:00:08,380 Also, was Sie mit einer While-Schleife tun können, ist Sie können zunächst einen Zähler initialisieren 1175 01:00:08,380 --> 01:00:10,860 Variable außerhalb des While-Schleife bis 10. 1176 01:00:10,860 --> 01:00:14,360 Und dann im Grunde jedes Mal, wenn Sie gehen durch die While-Schleife, die Sie ausdrucken 1177 01:00:14,360 --> 01:00:19,090 die Aussage, und dann können Sie verringern die Zählervariable, bis zum Ende, 1178 01:00:19,090 --> 01:00:23,020 irgendwann, wenn wir subtrahieren ich genug mal, 1 aus ich oft genug - 1179 01:00:23,020 --> 01:00:27,290 und nur zu klären, habe ich minus minus bedeutet, dass ich gleich I minus 1. 1180 01:00:27,290 --> 01:00:31,280 >> Das wird im Grunde bringe ich auf die Punkt, wo ich einmal getroffen Null diese 1181 01:00:31,280 --> 01:00:35,260 Bedingung ist nicht mehr wahr und so tritt es aus der Schleife. 1182 01:00:35,260 --> 01:00:37,045 So völlig durchgeknallten druckt nur 10-mal. 1183 01:00:37,045 --> 01:00:39,550 1184 01:00:39,550 --> 01:00:41,080 Haben Sie Fragen zu einer While-Schleife? 1185 01:00:41,080 --> 01:00:44,580 1186 01:00:44,580 --> 01:00:46,790 OK. 1187 01:00:46,790 --> 01:00:50,550 >> So gibt es eine Weise, die wir tun können, was wir gerade hat in einem prägnanten Weise mit 1188 01:00:50,550 --> 01:00:51,715 nennen wir eine For-Schleife. 1189 01:00:51,715 --> 01:00:55,750 So eine For-Schleife besteht aus einer Initialisierung, eine Bedingung und eine 1190 01:00:55,750 --> 01:00:58,950 Update, so wie wir vorher hatten in dieser While-Schleife. 1191 01:00:58,950 --> 01:00:59,890 Werfen wir also einen Blick. 1192 01:00:59,890 --> 01:01:02,900 In dieser While-Schleife hatten wir ein Initialisierung, dann hatten wir ein 1193 01:01:02,900 --> 01:01:04,260 bedingen, dass wir überprüft. 1194 01:01:04,260 --> 01:01:06,450 Und dann hatten wir ein Update Schritt an der Spitze. 1195 01:01:06,450 --> 01:01:10,060 >> Mit einer For-Schleife, dies im Grunde nimmt diese drei Dinge und kondensiert 1196 01:01:10,060 --> 01:01:11,370 nach unten in eine Zeile. 1197 01:01:11,370 --> 01:01:15,130 So die erste Sache, die es in der tut For-Schleife ist die Initialisierung. 1198 01:01:15,130 --> 01:01:19,090 Und dann haben Sie ein Semikolon, und dann Sie die Bedingung, die ich zu tun ist 1199 01:01:19,090 --> 01:01:22,200 größer als Null geht dort, und dann das Update Schritt. 1200 01:01:22,200 --> 01:01:26,470 Also das wird auf die durchgeführt Ende der Schleife. 1201 01:01:26,470 --> 01:01:28,790 Also diese beiden Programme Wesentlichen gleichwertig. 1202 01:01:28,790 --> 01:01:31,960 1203 01:01:31,960 --> 01:01:33,870 >> Haben Sie Fragen? 1204 01:01:33,870 --> 01:01:37,000 Also, was ist ein Unterschied zwischen diesen beiden? 1205 01:01:37,000 --> 01:01:38,000 Kann jemand es aus? 1206 01:01:38,000 --> 01:01:40,480 Es könnte ein bisschen subtil sein. 1207 01:01:40,480 --> 01:01:41,930 Es ist nur ein sehr kleiner Unterschied. 1208 01:01:41,930 --> 01:01:42,330 Ja? 1209 01:01:42,330 --> 01:01:49,008 >> SPRECHER 5: Sie würden nicht in der Lage, zu verwenden die ich Variable außerhalb der For-Schleife 1210 01:01:49,008 --> 01:01:49,962 [Unverständlich]? 1211 01:01:49,962 --> 01:01:50,900 >> JOSEPH: Genau. 1212 01:01:50,900 --> 01:01:53,550 Das ist also etwas, das wir bekommen später als Geltungsbereich von Variablen. 1213 01:01:53,550 --> 01:01:56,610 Aber im Grunde, diese int ich Leben außerhalb dieses While-Schleife. 1214 01:01:56,610 --> 01:01:59,800 Also, wenn diese While-Schleife ist getan Ausführung, werde ich in der Lage, wie ich später nutzen 1215 01:01:59,800 --> 01:02:00,880 auf dem Programm. 1216 01:02:00,880 --> 01:02:05,430 >> Während bei dieser For-Schleife, diese int I innerhalb dieser For-Schleife Gültigkeitsbereich. 1217 01:02:05,430 --> 01:02:10,240 Und weil sie innerhalb dieses Bereichs liegt der For-Schleife, das beginnt 1218 01:02:10,240 --> 01:02:13,200 an den Enden mit Klammern und die geschweifte Klammer drüben. 1219 01:02:13,200 --> 01:02:16,120 Alles, was innerhalb der erklärt hat kann hier nicht im Freien verwendet werden. 1220 01:02:16,120 --> 01:02:20,420 Also, wenn ich versuche, ich draußen verwenden, wird es sagen Sie mir, nicht gemeldeten Symbol. 1221 01:02:20,420 --> 01:02:22,420 Und im Grunde, würde ich nicht in der Lage, es zu benutzen. 1222 01:02:22,420 --> 01:02:28,460 >> ROB: Und auch, vor 10 Jahren, in buchstäblich alle Fälle sind geschweiften Klammern 1223 01:02:28,460 --> 01:02:31,140 was Sie verwendet, um zu bestimmen, der Umfang der Variablen. 1224 01:02:31,140 --> 01:02:37,240 Also dort, int I gleich 10 innerhalb dieser erklärt 1225 01:02:37,240 --> 01:02:38,520 Satz von geschweiften Klammern. 1226 01:02:38,520 --> 01:02:42,530 Und so ist, dann, so lange wie Sie versuchen, ich vor diesem geschweifte Klammer, ist es in Ordnung. 1227 01:02:42,530 --> 01:02:47,090 1228 01:02:47,090 --> 01:02:51,460 Sie können sehen, die bei der Eingabe machen, können Sie siehe Bindestriche und ein std, gleich, c99. 1229 01:02:51,460 --> 01:02:57,100 >> Damit ist eine spätere Version von C, die GCC eingeführt hat, dass auch gibt 1230 01:02:57,100 --> 01:02:58,740 diese Verknüpfung. 1231 01:02:58,740 --> 01:03:03,505 Also diese verwendet werden, um nicht in C erlaubt und Sie sehen, warum, weil diese int 1232 01:03:03,505 --> 01:03:07,600 Ich außerhalb dieses geschweifte Klammer aber es ist immer noch als in der sein 1233 01:03:07,600 --> 01:03:09,750 Umfang dieser geschweiften Klammern. 1234 01:03:09,750 --> 01:03:14,120 Aber das ist eine sehr bequeme Sache, und so ist es eine gute Erweiterung. 1235 01:03:14,120 --> 01:03:15,370 >> JOSEPH: Sie haben Fragen? 1236 01:03:15,370 --> 01:03:17,550 1237 01:03:17,550 --> 01:03:19,260 OK. 1238 01:03:19,260 --> 01:03:22,820 Also, was ist sinnvoller ist, dass manchmal Sie Art von Dynamik wollen 1239 01:03:22,820 --> 01:03:23,410 Ihre Schleife, oder? 1240 01:03:23,410 --> 01:03:26,350 Sie müssen nicht nur unbedingt drucken möchten völlig verworren die ganze Zeit, die Sie 1241 01:03:26,350 --> 01:03:28,650 wollen von Countdown 10 oder so etwas. 1242 01:03:28,650 --> 01:03:32,010 Und so können Sie die Zählervariable verwenden innerhalb dieser Schleife auch. 1243 01:03:32,010 --> 01:03:35,530 Und in diesem Fall dieses Programm einfach zählt von 10 ganz nach unten. 1244 01:03:35,530 --> 01:03:39,260 Und was bedeutet es nicht drucken? 1245 01:03:39,260 --> 01:03:42,790 Es druckt nicht Null ist, Recht, denn wenn - 1246 01:03:42,790 --> 01:03:45,460 Ja, es ist auch nicht gedruckt 11. 1247 01:03:45,460 --> 01:03:49,200 >> So ist es nicht gedruckt wird Null, denn wenn Ich Null ist, denken Sie daran, es wertet 1248 01:03:49,200 --> 01:03:52,170 die Bedingung, bevor es auf um die Schleife auszuführen. 1249 01:03:52,170 --> 01:03:56,820 Und wenn ich Null ist, ist dies falsch, so es nicht ausdrucken Countdown 1250 01:03:56,820 --> 01:04:00,200 Null, es gibt einfach Zählung um 10 den ganzen Weg bis zu 1. 1251 01:04:00,200 --> 01:04:03,420 Wenn wir wollten eigentlich auf Null zu drucken, dann würden wir ein Gleichheitszeichen setzen 1252 01:04:03,420 --> 01:04:04,750 nach dieser größer als Zeichen. 1253 01:04:04,750 --> 01:04:09,400 1254 01:04:09,400 --> 01:04:10,130 OK. 1255 01:04:10,130 --> 01:04:16,410 >> Also eine Möglichkeit, Eingabevalidierung zu tun, was ist, wenn Sie den Benutzer auffordern, tun 1256 01:04:16,410 --> 01:04:18,620 etwas, um sicherzustellen, dass sie machen wollen, dass Sie Ihre Anweisungen zu befolgen, ist die Verwendung von 1257 01:04:18,620 --> 01:04:19,400 Die while-Schleife, oder? 1258 01:04:19,400 --> 01:04:22,990 Also in diesem Fall bitte ich für eine positive Zahl und dann bin ich 1259 01:04:22,990 --> 01:04:23,810 Eingabe wartet. 1260 01:04:23,810 --> 01:04:28,210 >> Und dann habe ich überprüft, während der Eingang kleiner als Null ist, immer wieder fragen sie. 1261 01:04:28,210 --> 01:04:32,100 So lange, wie sie mir eine Nummer zu geben dass nicht positiv ist, immer wieder zu fragen, 1262 01:04:32,100 --> 01:04:33,600 fragen immer wieder, immer wieder zu fragen. 1263 01:04:33,600 --> 01:04:35,860 Aber was ist schon ein wenig komisch über diese? 1264 01:04:35,860 --> 01:04:38,570 Oder was scheint nicht optimal zu diese Struktur hier richtig? 1265 01:04:38,570 --> 01:04:44,282 1266 01:04:44,282 --> 01:04:44,758 Anyone? 1267 01:04:44,758 --> 01:04:45,234 Ja? 1268 01:04:45,234 --> 01:04:47,614 >> SPEAKER 6: Du wieder der Befehl zweimal. 1269 01:04:47,614 --> 01:04:48,100 >> JOSEPH: Richtig. 1270 01:04:48,100 --> 01:04:50,090 So haben wir zwei Aussagen printf hier, nicht wahr? 1271 01:04:50,090 --> 01:04:53,440 So gibt es einen Weg, wir könnten diese nur erhalten, bis auf eine, die würde unsere 1272 01:04:53,440 --> 01:04:57,170 Code leichter zu lesen und eine etwas mehr sauber. 1273 01:04:57,170 --> 01:05:00,180 Und dann würden wir nicht zu haben, Holen Sie haben in doppelt so gut. 1274 01:05:00,180 --> 01:05:03,740 Und eine Möglichkeit, dies zu tun ist durch Verwendung einer Do-While-Schleife. 1275 01:05:03,740 --> 01:05:07,670 >> Und eine Do-While-Schleife ist im Grunde ein andere Form von einer While-Schleife, wo 1276 01:05:07,670 --> 01:05:11,460 was innerhalb der geschweiften Klammern ist wird mindestens einmal ausgeführt. 1277 01:05:11,460 --> 01:05:14,840 Also hier erkläre ich, int Eingang, außerhalb zuerst. 1278 01:05:14,840 --> 01:05:18,100 Und dann habe ich einfach sagen, tun dies Anweisung, während der Eingang 1279 01:05:18,100 --> 01:05:19,140 kleiner als Null ist. 1280 01:05:19,140 --> 01:05:20,530 So trifft es die ersten Do. 1281 01:05:20,530 --> 01:05:24,190 Es führt immer diese mindestens einmal, so dass sie immer den Benutzer fragen 1282 01:05:24,190 --> 01:05:25,960 zur Eingabe mindestens einmal. 1283 01:05:25,960 --> 01:05:29,390 Und dann wertet er, dass Eingaben, und es geht weiter im Kreis. 1284 01:05:29,390 --> 01:05:30,135 Ja, in Frage zu stellen? 1285 01:05:30,135 --> 01:05:32,602 >> SPEAKER 6: Gibt es eine Möglichkeit, es zu tun [Unverständlich] Typen, wie wenn Sie sagen, 1286 01:05:32,602 --> 01:05:34,268 GetString, und jemand [unverständlich] 1287 01:05:34,268 --> 01:05:35,220 ist es eine Möglichkeit, [unverständlich] 1288 01:05:35,220 --> 01:05:40,060 >> JOSEPH: Die Frage ist also, gibt es eine Weg zur Eingabevalidierung tun, wenn der Benutzer 1289 01:05:40,060 --> 01:05:41,850 nicht in die Ordnung zu bringen Variablentyp? 1290 01:05:41,850 --> 01:05:44,460 Also, wenn wir fragen, für eine int, und sie geben Sie uns eine Zeichenfolge anstelle. 1291 01:05:44,460 --> 01:05:49,110 Und in den Funktionen, die wir umsetzen für Sie, GetInt, GetString in allen 1292 01:05:49,110 --> 01:05:52,680 jene Funktionen, die es eigentlich schon tun, diese Art von Grundtyp Eingangs 1293 01:05:52,680 --> 01:05:54,120 Validierung unter der Haube. 1294 01:05:54,120 --> 01:05:57,390 Also, wenn Sie mit den Funktionen, die wir sind Sie gab, die Sie nicht wirklich zu haben. 1295 01:05:57,390 --> 01:06:01,380 >> Aber wenn Sie wollen, um mehr zu sehen, wie Sie können tatsächlich tun, werden Sie sehen können 1296 01:06:01,380 --> 01:06:03,360 unter der Haube auf der Datei I/O-- 1297 01:06:03,360 --> 01:06:07,990 nicht Datei, die Standard-I / O-Funktionen wie ein Lesen von der Standardeingabe und 1298 01:06:07,990 --> 01:06:08,580 Standardausgabe. 1299 01:06:08,580 --> 01:06:10,630 Und Sie können ein besseres Gefühl zu bekommen dafür, wie Sie das tun. 1300 01:06:10,630 --> 01:06:13,670 >> ROB: Ein Problem ist jedoch, speziell mit der Sie beispielsweise 1301 01:06:13,670 --> 01:06:17,070 sagte, erwarten Sie eine Zeichenfolge und ich geben Sie eine int. 1302 01:06:17,070 --> 01:06:20,110 Wie würden Sie den Unterschied zwischen absichtlich wollen die 1303 01:06:20,110 --> 01:06:23,130 String-123 gegenüber wollen die int-123? 1304 01:06:23,130 --> 01:06:29,230 So string, ist ziemlich viel da ist es kein Validierung, es ist nur, was sie 1305 01:06:29,230 --> 01:06:31,600 eingegeben werden Sie interpretieren als String. 1306 01:06:31,600 --> 01:06:35,790 >> Int ist einfacher, denn egal, die Eingang, den Sie von der Benutzer nehmen, sind Sie 1307 01:06:35,790 --> 01:06:37,470 immer sie einen String. 1308 01:06:37,470 --> 01:06:40,650 Und damit kann man dann String zu überprüfen, sind alle diese 1309 01:06:40,650 --> 01:06:44,218 tatsächlich Ziffern? 1310 01:06:44,218 --> 01:06:45,170 >> JOSEPH: OK. 1311 01:06:45,170 --> 01:06:46,420 Haben Sie Fragen zu einem Do-While-Schleife? 1312 01:06:46,420 --> 01:06:49,170 >> ROB: Oh, und das ist auch - 1313 01:06:49,170 --> 01:06:55,130 geht zurück auf den Geltungsbereich, ein etwas gemeinsam Fehler versucht, einige lokale verwenden 1314 01:06:55,130 --> 01:06:59,540 Variable in diesem Do-While Schleife innerhalb dieser Bedingung. 1315 01:06:59,540 --> 01:07:02,850 Und tatsächlich, wenn wir nur losgeworden dies und sagte, int Eingang gleich 1316 01:07:02,850 --> 01:07:06,990 GetInt, dann wird der Compiler bei schreien uns, denn Eingang existiert nicht 1317 01:07:06,990 --> 01:07:08,900 außerhalb des Geltungsbereichs diese geschweiften Klammern. 1318 01:07:08,900 --> 01:07:10,792 >> JOSEPH: Und das ist, warum wir brauchen diese Formation hier. 1319 01:07:10,792 --> 01:07:13,620 1320 01:07:13,620 --> 01:07:14,630 OK. 1321 01:07:14,630 --> 01:07:17,530 So kann man auch von einem brechen Schleife vorzeitig, wenn Sie wollen. 1322 01:07:17,530 --> 01:07:21,240 Also das ist eine andere Art der Umsetzung, was wir gerade umgesetzt. 1323 01:07:21,240 --> 01:07:24,340 Und statt der Verwendung der Bedingung in den Klammern verwenden wir ein 1324 01:07:24,340 --> 01:07:26,920 Wenn Anweisung innerhalb des Körpers der Do-While-Schleife. 1325 01:07:26,920 --> 01:07:30,000 >> Und im Grunde ist die Eingabe, wenn schließlich größer als Null ist, werden wir 1326 01:07:30,000 --> 01:07:31,000 brechen aus der Schleife. 1327 01:07:31,000 --> 01:07:33,420 Und so gehen wir alle die Art, wie hier unten. 1328 01:07:33,420 --> 01:07:37,920 Und Sie können sehen, dass diese würde Wahrscheinlich werden bei diesem bevorzugten 1329 01:07:37,920 --> 01:07:39,870 Szenario, denn es ist ein wenig etwas sauberer und ein wenig 1330 01:07:39,870 --> 01:07:41,380 Bit leichter zu lesen. 1331 01:07:41,380 --> 01:07:45,210 Während diese, Sie Art haben extra Linien in sie. 1332 01:07:45,210 --> 01:07:47,890 Es ist nur ein wenig hässlicher, Ich denke, in einem gewissen Sinn. 1333 01:07:47,890 --> 01:07:48,530 Ja, in Frage zu stellen? 1334 01:07:48,530 --> 01:07:52,178 >> SPRECHER 4: Wird brechen nur erhalten Sie aus einer Reihe von Klammern? 1335 01:07:52,178 --> 01:07:53,080 >> JOSEPH: Richtig. 1336 01:07:53,080 --> 01:07:58,100 Die Frage ist also nur brechen erhalten Sie aus einer Schleife? 1337 01:07:58,100 --> 01:07:59,280 Und die Antwort ist ja. 1338 01:07:59,280 --> 01:08:04,290 Also, wenn Sie für For-Schleifen geschachtelt haben, Beispiel, wenn ich für int I 0 entspricht 1339 01:08:04,290 --> 01:08:09,040 bis 10 und dann für int J gleich 0 bis zum 10., wenn ich aus dem inneren brechen 1340 01:08:09,040 --> 01:08:12,310 Schleife, werde ich immer noch gehen zu der äußeren Schleife. 1341 01:08:12,310 --> 01:08:15,760 Also, es wird halten Ausführung der Operationen an der Außenseite. 1342 01:08:15,760 --> 01:08:17,640 Haben Sie Fragen dazu? 1343 01:08:17,640 --> 01:08:18,000 Ja? 1344 01:08:18,000 --> 01:08:21,760 >> SPRECHER 5: Aber brechen nur Funktionen für geschweiften Klammern, nicht für andere 1345 01:08:21,760 --> 01:08:22,230 Aussagen zu? 1346 01:08:22,230 --> 01:08:22,700 [Unverständlich] 1347 01:08:22,700 --> 01:08:27,620 >> JOSEPH: Die Frage ist also brechen Funktion nur für Schleifen im Gegensatz zu 1348 01:08:27,620 --> 01:08:29,014 Wenn andere Aussagen wie? 1349 01:08:29,014 --> 01:08:32,950 Und ja, ist das so, weil Sie brichst aus einer Schleife, rechts, 1350 01:08:32,950 --> 01:08:33,630 in einem gewissen Sinn. 1351 01:08:33,630 --> 01:08:37,215 >> ROB: In den allermeisten Fällen ist es Dies ist die Art von Wenn etwas, 1352 01:08:37,215 --> 01:08:37,660 dann brechen. 1353 01:08:37,660 --> 01:08:41,580 So müssen Sie nicht haben, um zu brechen, um zu gelten Wenn die, die um ihn herum Wickeln wird. 1354 01:08:41,580 --> 01:08:45,250 Und dies ist auch nicht viel von einer Schleife, aber denken Sie daran, dass Schalter sind auch 1355 01:08:45,250 --> 01:08:46,340 von durch Pausen unterbrochen. 1356 01:08:46,340 --> 01:08:48,390 Wir sahen den Pausen genutzt mit Schaltern vor. 1357 01:08:48,390 --> 01:08:52,189 >> JOSEPH: Und Sie können sie auch in While-Schleifen und For-Schleifen. 1358 01:08:52,189 --> 01:08:54,560 Haben Sie Fragen? 1359 01:08:54,560 --> 01:08:55,830 OK. 1360 01:08:55,830 --> 01:08:57,779 Also das nächste up ist Funktionen. 1361 01:08:57,779 --> 01:09:01,500 Sie könnten also eine dieser BYOB verwendet haben Blöcke im Scratch-Projekt. 1362 01:09:01,500 --> 01:09:04,569 Und das im Grunde können Sie definieren einen Satz von 1363 01:09:04,569 --> 01:09:05,680 Anweisungen zu befolgen. 1364 01:09:05,680 --> 01:09:09,569 >> Und was ich damit meine ist, wir denken zurück zu Mathematik, Recht, Algebra. 1365 01:09:09,569 --> 01:09:13,370 Sie haben das, was wir eine Funktion von x nennen, eine Variable, und sagen wir mal so 1366 01:09:13,370 --> 01:09:16,080 Funktion f von x ist gleich x plus 5. 1367 01:09:16,080 --> 01:09:20,410 So können Sie von f von x als dieser schwarzen denken kann Box, die 15 nimmt und dann 1368 01:09:20,410 --> 01:09:22,590 20 produziert. 1369 01:09:22,590 --> 01:09:26,630 >> So allgemein eine Funktion etwas, das einige Eingaben und nimmt 1370 01:09:26,630 --> 01:09:27,880 erzeugt dann einige Ausgänge. 1371 01:09:27,880 --> 01:09:31,920 1372 01:09:31,920 --> 01:09:32,960 Und warum sind Funktionen gut? 1373 01:09:32,960 --> 01:09:35,189 Sie sind gut für eine Reihe von Gründen. 1374 01:09:35,189 --> 01:09:40,470 So jemand will einen Stich nehmen zu welcher Organisation bedeutet? 1375 01:09:40,470 --> 01:09:42,630 In Bezug auf die Funktionen, warum sind hilfreich? 1376 01:09:42,630 --> 01:09:43,090 Ja? 1377 01:09:43,090 --> 01:09:44,735 >> SPRECHER 4: Es macht Ihre Code besser lesbar. 1378 01:09:44,735 --> 01:09:45,399 >> JOSEPH: Richtig. 1379 01:09:45,399 --> 01:09:47,670 Damit wird eines der Dinge ist, es macht Ihr Code besser lesbar, oder? 1380 01:09:47,670 --> 01:09:53,710 Anstatt wie int x gleich x mal x mal x, kann ich Würfel von x haben, 1381 01:09:53,710 --> 01:09:57,190 die mehr und mehr lesbar ist verständlich für den Leser. 1382 01:09:57,190 --> 01:10:01,150 >> Organisation ist auch in Bezug auf Aufspaltung der Code in überschaubare 1383 01:10:01,150 --> 01:10:05,610 Abschnitte, so dass anstatt zu versuchen, implementieren diese alle in einem langen Abschnitt 1384 01:10:05,610 --> 01:10:09,070 in Haupt, können Sie Art es aufspalten in wie, OK, schreiben wir eine Funktion 1385 01:10:09,070 --> 01:10:11,910 , etwas zu würfeln, schreiben wir ein funktionieren, etwas zu quadrieren. 1386 01:10:11,910 --> 01:10:15,950 So können Sie es in kleine aufzuteilen, kleine Teile, die Sie angehen können 1387 01:10:15,950 --> 01:10:18,944 im Gegensatz zu versuchen, anzugehen ein großes Problem auf einmal. 1388 01:10:18,944 --> 01:10:21,806 >> ROB: Oder noch klein, wenig Teile, die Sie und ein Partner anzugehen. 1389 01:10:21,806 --> 01:10:22,283 >> JOSEPH: Ja. 1390 01:10:22,283 --> 01:10:23,855 >> ROB: Anstatt also sowohl von Sie versuchen, ein Implantat 1391 01:10:23,855 --> 01:10:27,170 funktionieren in der gleichen Zeit. 1392 01:10:27,170 --> 01:10:28,800 >> JOSEPH: Vereinfachung. 1393 01:10:28,800 --> 01:10:30,050 Wer möchte eine Vermutung nehmen? 1394 01:10:30,050 --> 01:10:33,080 1395 01:10:33,080 --> 01:10:33,410 Ja? 1396 01:10:33,410 --> 01:10:34,675 >> SPRECHER 5: Mehr Wiederholung. 1397 01:10:34,675 --> 01:10:35,260 >> JOSEPH: Richtig. 1398 01:10:35,260 --> 01:10:39,210 Also eine Sache, die Sie tun können, mit Vereinfachung ist, dass es auf eine Art 1399 01:10:39,210 --> 01:10:42,520 die gleiche Richtung wie die Wiederverwendbarkeit ist, dass sobald ich einen Würfel-Funktion, kann ich 1400 01:10:42,520 --> 01:10:45,410 benutzen Sie einfach, dass über und über und über wieder in meinem Programm statt Tippen 1401 01:10:45,410 --> 01:10:49,610 x mal x mal x und über immer und immer wieder. 1402 01:10:49,610 --> 01:10:52,980 Und Vereinfachung auch hier nur bedeutet dies, macht den Code Art 1403 01:10:52,980 --> 01:10:55,900 leichter zu debuggen, wenn man einmal gespalten diese in die Funktionen. 1404 01:10:55,900 --> 01:10:58,250 Denn dann können Sie, wo lokalisieren Ihre Probleme Art sind. 1405 01:10:58,250 --> 01:11:00,910 1406 01:11:00,910 --> 01:11:02,160 Haben Sie Fragen? 1407 01:11:02,160 --> 01:11:04,200 1408 01:11:04,200 --> 01:11:06,540 >> So eine Idee ist Abstraktion, oder? 1409 01:11:06,540 --> 01:11:07,390 Diese Black Box. 1410 01:11:07,390 --> 01:11:11,360 Wie wissen Sie, was tut GetInt auf eine Eingabe von dem Benutzer zu empfangen? 1411 01:11:11,360 --> 01:11:12,510 Wir haben Ihnen gesagt, nicht wirklich, oder? 1412 01:11:12,510 --> 01:11:15,670 Alles, was wir dir gesagt habe ist GetInt tut genau das, was sie sagt, es tut. 1413 01:11:15,670 --> 01:11:18,440 Also selbst wenn wir nicht sagen, wie es funktioniert, wissen Sie immer noch. 1414 01:11:18,440 --> 01:11:21,670 >> So dass in diesem besonderen Fall ist dies eine vierfache Funktion, die funktioniert 1415 01:11:21,670 --> 01:11:24,520 verschiedene Dinge zu einem Eingangs um eine Ausgabe zu erzeugen. 1416 01:11:24,520 --> 01:11:28,050 Und Sie können eine Zahl vervierfachen durch Multiplikation mit Vier. 1417 01:11:28,050 --> 01:11:30,790 Oder Sie können, was wir Bit verschieben sie durch zwei. 1418 01:11:30,790 --> 01:11:32,960 Und wir werden diese decken ein wenig später. 1419 01:11:32,960 --> 01:11:36,570 Und es gibt keine Notwendigkeit, zu wissen, wie diese funktioniert tatsächlich solange es 1420 01:11:36,570 --> 01:11:37,640 funktioniert wie angegeben. 1421 01:11:37,640 --> 01:11:40,740 >> Also unter der Haube, ich könnte wie, kehren Eingabezeiten 1422 01:11:40,740 --> 01:11:41,690 acht geteilt durch zwei. 1423 01:11:41,690 --> 01:11:42,510 Und Sie würden nicht wissen, oder? 1424 01:11:42,510 --> 01:11:44,970 Alles, was Sie wissen müssen, ist es tut, was es sagt. 1425 01:11:44,970 --> 01:11:48,070 Also das ist der nützliche Sache über Abstraktion. 1426 01:11:48,070 --> 01:11:52,910 >> Und noch etwas ist irgendwie diese Idee lokalisieren Sie Ihren Code ein 1427 01:11:52,910 --> 01:11:54,280 bestimmten Abschnitt. 1428 01:11:54,280 --> 01:11:57,450 Also, wenn Sie ein Problem haben, brauchen Sie nicht müssen alle über den Code gehen versuchen 1429 01:11:57,450 --> 01:11:58,730 zu beheben, wo das Problem war. 1430 01:11:58,730 --> 01:12:00,990 Also in diesem Fall, ich umgesetzt Würfel falsch. 1431 01:12:00,990 --> 01:12:02,820 Ich dachte, Würfel wurde Multiplikation durch drei. 1432 01:12:02,820 --> 01:12:05,760 >> So dass in diesem Fall ist dies ein Programm, dass, nur multipliziert wurde von drei 1433 01:12:05,760 --> 01:12:06,750 überall. 1434 01:12:06,750 --> 01:12:10,910 Und es ist ein weiteres Programm, das hat faktorisierte Würfel in eine Funktion. 1435 01:12:10,910 --> 01:12:14,040 Und jetzt, wenn ich meinen Fehler beheben hier muss ich jede einzelne Zeile beheben 1436 01:12:14,040 --> 01:12:15,620 der Code in diesem Programm. 1437 01:12:15,620 --> 01:12:19,190 Während auf der anderen Seite, wenn ich die Funktion, ich muss nur ändern 1438 01:12:19,190 --> 01:12:20,650 was falsch war an einem Ort. 1439 01:12:20,650 --> 01:12:25,330 1440 01:12:25,330 --> 01:12:28,730 >> Also in der Informatik, die wir rufen und Ausgänge. 1441 01:12:28,730 --> 01:12:31,640 Eingänge werden als Parameter bezeichnet oder Argumente und gibt heißen 1442 01:12:31,640 --> 01:12:32,950 Rückgabewerte. 1443 01:12:32,950 --> 01:12:39,000 Und wir werden sehen, wie diese hilft uns Art der Definition einer Funktion in einer Sekunde. 1444 01:12:39,000 --> 01:12:41,430 Das ist also eine Funktionsdefinition für Cubing. 1445 01:12:41,430 --> 01:12:45,110 So dauert es einen Eingang, und dann es gibt diese Zahl mal 1446 01:12:45,110 --> 01:12:47,020 selbst dreimal. 1447 01:12:47,020 --> 01:12:48,020 Also lassen Sie diese nach unten zu brechen. 1448 01:12:48,020 --> 01:12:53,090 >> So haben wir eine Funktionskopf, die besteht im Wesentlichen aus drei Dingen. 1449 01:12:53,090 --> 01:12:56,050 So haben wir die Parameter, die sind, wie ich schon sagte, die 1450 01:12:56,050 --> 01:12:57,680 Ein in dieser Funktion. 1451 01:12:57,680 --> 01:12:59,300 Und dann geben wir der Funktion einen Namen. 1452 01:12:59,300 --> 01:13:00,740 In diesem Fall, es heißt Würfel. 1453 01:13:00,740 --> 01:13:03,860 Und dann geben wir, was der Typ von der Rückgabewert. 1454 01:13:03,860 --> 01:13:06,760 >> Also in diesem Fall, mein Würfel-Funktion nimmt in einer ganzen Zahl und auch 1455 01:13:06,760 --> 01:13:07,890 gibt eine ganze Zahl. 1456 01:13:07,890 --> 01:13:11,510 Also, wenn ich pass in zwei, eine ganze Zahl, es acht zurück zu mir, die 1457 01:13:11,510 --> 01:13:13,250 eine ganze Zahl ist. 1458 01:13:13,250 --> 01:13:15,420 So Rückgabetyp Name-Parameter. 1459 01:13:15,420 --> 01:13:16,670 Fragen dazu? 1460 01:13:16,670 --> 01:13:19,440 1461 01:13:19,440 --> 01:13:24,230 >> Und dann ist der Rückgabewert tatsächlich am Ende mit den Worten Rückkehr angegeben 1462 01:13:24,230 --> 01:13:27,540 und dann wieder was auch immer enthält den Rückgabewert. 1463 01:13:27,540 --> 01:13:30,940 Also in diesem Fall, wenn wir sie alle zusammen, nimmt eine Funktion 1464 01:13:30,940 --> 01:13:35,100 Parameter, es ist etwas genannt wird, und es etwas, das die Art ist zurück 1465 01:13:35,100 --> 01:13:36,350 dass wir sagen, dass es sein würde. 1466 01:13:36,350 --> 01:13:39,830 1467 01:13:39,830 --> 01:13:41,080 Haben Sie Fragen? 1468 01:13:41,080 --> 01:13:43,710 1469 01:13:43,710 --> 01:13:45,080 >> So wie wir eine Funktion? 1470 01:13:45,080 --> 01:13:49,230 Nun schreiben wir eine Funktion und dann wir sie verwenden in unserem Programm, oder? 1471 01:13:49,230 --> 01:13:51,565 Also rief ich sie Cube, und dann kann ich Cube verwenden. 1472 01:13:51,565 --> 01:13:54,200 >> Aber was ist wichtig zu beachten, ist, dass die Reihenfolge wichtig. 1473 01:13:54,200 --> 01:13:58,100 Wenn ich unter Haupt Würfel, ist es werde in Würfel laufen. 1474 01:13:58,100 --> 01:14:00,360 Und an diesem Punkt, es gibt nichts genannt Würfel im Programm, und es ist 1475 01:14:00,360 --> 01:14:02,550 gerade dabei, wie ich zu haben Keine Ahnung, was Würfel ist. 1476 01:14:02,550 --> 01:14:05,060 >> So wird es Ihnen sagen, implizit Deklaration der Funktion. 1477 01:14:05,060 --> 01:14:06,690 Das ist der Fehler, die sich zeigt. 1478 01:14:06,690 --> 01:14:10,230 Und so dass in diesem Fall ist unter Würfel Haupt, so dass es nicht geht 1479 01:14:10,230 --> 01:14:12,006 es wissen. 1480 01:14:12,006 --> 01:14:14,724 >> SPRECHER 5: So ist in der Regel Haupt die letzte Funktion definiert? 1481 01:14:14,724 --> 01:14:17,290 >> JOSEPH: Die Frage ist also, Haupt ist in der Regel der letzte 1482 01:14:17,290 --> 01:14:18,170 Sache, die Sie definieren möchten? 1483 01:14:18,170 --> 01:14:19,730 Und nein. 1484 01:14:19,730 --> 01:14:22,280 Es ist, weil wir in der Regel gerne Haupt an der Spitze zu sein, oder? 1485 01:14:22,280 --> 01:14:24,640 Denn das ist das erste, was Sie möchte der Programmierer Öffnen der 1486 01:14:24,640 --> 01:14:25,640 Programm zu sehen. 1487 01:14:25,640 --> 01:14:29,950 Und so, wie wir dieses Problem lösen wir von Haupt wollen an der Spitze zu sein, aber die 1488 01:14:29,950 --> 01:14:33,750 Funktionen, die wir wollen, wir wollen sie unter sein Haupt noch nutzen zu können 1489 01:14:33,750 --> 01:14:34,930 sie innerhalb der Haupt? 1490 01:14:34,930 --> 01:14:36,870 >> Nun verwenden wir, was wir ein Funktionsprototyp. 1491 01:14:36,870 --> 01:14:40,830 Also, was im Wesentlichen eine Funktion Prototyp wird, wird es nimmt erste, was 1492 01:14:40,830 --> 01:14:45,060 die Unterschrift oder die Funktionskopf von dem, was wir umsetzen wollen, nach unten 1493 01:14:45,060 --> 01:14:47,420 hier, und wir haben es bei die Oberseite eines Programms. 1494 01:14:47,420 --> 01:14:51,400 >> Also in diesem Fall sagen wir, dass, na ja, später in unserem Programm, wir gehen 1495 01:14:51,400 --> 01:14:55,010 ein Versprechen, dies umzusetzen Funktion namens int Würfel, der findet 1496 01:14:55,010 --> 01:14:56,260 eine ganze Zahl Eingang. 1497 01:14:56,260 --> 01:15:00,870 So, jetzt, denn das ist oberhalb der Haupt, Hauptsache, es geht zu sagen, oh, gut, 1498 01:15:00,870 --> 01:15:03,910 später im Programm, das wird sein gibt, so kann ich darauf verweisen, so dass ich 1499 01:15:03,910 --> 01:15:05,230 lass es einfach durch zu gehen für jetzt. 1500 01:15:05,230 --> 01:15:07,660 >> Und dann an der Unterseite, implementieren wir Kubus. 1501 01:15:07,660 --> 01:15:11,180 Und dann wird Haupt nur sagen, Nun, es wird der Link zu sortieren 1502 01:15:11,180 --> 01:15:12,250 diese zwei Symbole zusammen. 1503 01:15:12,250 --> 01:15:14,320 Und wir abdecken, was das bedeutet später. 1504 01:15:14,320 --> 01:15:17,090 Und so werden es wissen, dass dies die Würfel-Funktion, dass es verwendet werden soll. 1505 01:15:17,090 --> 01:15:19,630 1506 01:15:19,630 --> 01:15:23,383 >> ROB: Das [unverständlich] zu wollen Haupt unten oder 1507 01:15:23,383 --> 01:15:24,880 top, ich habe es gesehen. 1508 01:15:24,880 --> 01:15:28,630 Es gibt Dinge, die einfach gerne an der unteren Haupt zu setzen. 1509 01:15:28,630 --> 01:15:32,520 Aber sobald ein Projekt bekommt besonders großen, in der Regel ist in ein Haupt 1510 01:15:32,520 --> 01:15:34,290 Datei alle ihre eigenen. 1511 01:15:34,290 --> 01:15:38,170 Und an diesem Punkt, wie die int Würfel Linie würde - 1512 01:15:38,170 --> 01:15:42,460 innerhalb von stdio.h sind ein Haufen Zeilen wie diese int 1513 01:15:42,460 --> 01:15:44,010 Würfel int Eingabezeile. 1514 01:15:44,010 --> 01:15:50,170 >> Und so sind diese Prototypen Dinge, die Sie neigen dazu, in Header-Dateien an gesagt, 1515 01:15:50,170 --> 01:15:52,140 welchem ​​Punkt ist es egal. 1516 01:15:52,140 --> 01:15:54,700 Nun, es spielt keine Rolle. 1517 01:15:54,700 --> 01:15:56,070 Diejenigen, gehen immer an der Spitze. 1518 01:15:56,070 --> 01:15:59,490 Und wenn Haupt ist keine Datei, die alle ihre eigenen, Sie müssen nicht darum kümmern 1519 01:15:59,490 --> 01:16:02,360 einzelnen Funktionsprototypen in der Datei. 1520 01:16:02,360 --> 01:16:05,370 >> JOSEPH: Und wir werden auf diese ein wenig zu Etwas später, als Rob zu sprechen beginnt 1521 01:16:05,370 --> 01:16:06,380 über das Kompilieren. 1522 01:16:06,380 --> 01:16:09,480 Und so gibt es auch einen Unterschied zwischen Parameter und Argument. 1523 01:16:09,480 --> 01:16:12,500 Und Parameter ist genau das, was wir rufen, wenn diese Eingänge 1524 01:16:12,500 --> 01:16:13,820 definieren wir die Funktion. 1525 01:16:13,820 --> 01:16:16,950 Und wir nennen es ein Argument, wenn wir tatsächlich passieren in der Funktion. 1526 01:16:16,950 --> 01:16:19,600 >> So dass in diesem Fall ist dies ein Parameter, wie gesagt. 1527 01:16:19,600 --> 01:16:24,130 Und wenn wir tatsächlich nutzen es dort, Würfel von x, dann x selbst ist 1528 01:16:24,130 --> 01:16:25,910 was wir ein Argument nennen an die Funktion Würfels. 1529 01:16:25,910 --> 01:16:28,150 >> ROB: Also Argumente Parameter sind - 1530 01:16:28,150 --> 01:16:33,270 gibt es diese Unterscheidung, sehr austauschbar verwirrt. 1531 01:16:33,270 --> 01:16:37,090 An diesem Punkt ist für mich, es ist wie eine der diese Worte, dass, wenn ich es sehe in 1532 01:16:37,090 --> 01:16:41,190 die wilde, kann ich nicht helfen, aber sofort Frage, ob sie es verwenden in 1533 01:16:41,190 --> 01:16:44,120 der richtige Rahmen, weil die Unterschied ist subtil genug, dass nur 1534 01:16:44,120 --> 01:16:45,500 neigt jeder - 1535 01:16:45,500 --> 01:16:48,530 Ich bin fast immer sagen Argument unabhängig davon, was ich meine. 1536 01:16:48,530 --> 01:16:51,230 1537 01:16:51,230 --> 01:16:54,630 >> JOSEPH: Und Funktionen sind auch nützlich für das, was wir Nebenwirkungen nennen. 1538 01:16:54,630 --> 01:16:59,230 So kann eine Funktion keine Eingänge zu nehmen, und es können aber auch keine Ausgänge. 1539 01:16:59,230 --> 01:17:03,280 Also in diesem Fall bin ich Definition eines Unterprogramms, die nicht hat 1540 01:17:03,280 --> 01:17:03,970 Rückgabewert. 1541 01:17:03,970 --> 01:17:07,730 Und um das zu geben, verwenden wir nennen wir eine Lücke hier. 1542 01:17:07,730 --> 01:17:10,890 Und so die Nebenwirkungen dieser Funktion ist, dass es Sachen druckt nur 1543 01:17:10,890 --> 01:17:11,920 aus auf die Seite. 1544 01:17:11,920 --> 01:17:13,840 Es ist nicht wirklich übernehmen keine Eingänge, und es funktioniert nicht 1545 01:17:13,840 --> 01:17:15,360 alle Ausgänge tatsächlich produzieren. 1546 01:17:15,360 --> 01:17:18,230 >> Aber dies könnte nützlich sein in dem Sinne Wenn Sie beispielsweise debuggen möchten 1547 01:17:18,230 --> 01:17:21,530 etwas in Ihrem Programm, wenn Sie wollen , ein wenig Unterprogramm schreiben, dass 1548 01:17:21,530 --> 01:17:25,160 druckt, sagen wir, der Inhalt Speicher oder so etwas. 1549 01:17:25,160 --> 01:17:29,800 Usw. Diese Nebenwirkungen sind manchmal nützlich außerhalb des Kontextes 1550 01:17:29,800 --> 01:17:33,010 der gerade wie Ein-und Ausgänge. 1551 01:17:33,010 --> 01:17:34,260 Haben Sie Fragen? 1552 01:17:34,260 --> 01:17:37,270 1553 01:17:37,270 --> 01:17:44,240 >> Und zu diesem besonderen Segment zu beenden, was hat das Programm? 1554 01:17:44,240 --> 01:17:47,420 Ich gebe Ihnen ein paar Jungs Sekunden, um es zu lesen. 1555 01:17:47,420 --> 01:17:52,720 1556 01:17:52,720 --> 01:17:56,880 Auf einer sehr einfachen Ebene, was wir wollen sagen, ist, dass es tauscht x und y, oder? 1557 01:17:56,880 --> 01:18:00,090 >> So wie viele von euch eigentlich denken dies wird x und y tauschen? 1558 01:18:00,090 --> 01:18:02,160 Heben Sie Ihre Hand. 1559 01:18:02,160 --> 01:18:02,760 Niemand. 1560 01:18:02,760 --> 01:18:03,070 OK. 1561 01:18:03,070 --> 01:18:06,720 Wer denkt, dass es wird nicht vertauschen x und y? 1562 01:18:06,720 --> 01:18:09,120 Und die Summe war nicht der gesamte Raum. 1563 01:18:09,120 --> 01:18:10,440 Also manche Leute sind sich nicht sicher. 1564 01:18:10,440 --> 01:18:10,920 OK. 1565 01:18:10,920 --> 01:18:11,630 Das ist vernünftig. 1566 01:18:11,630 --> 01:18:16,450 >> Lassen Sie uns also durch das, was passiert, wenn zu gehen Sie funktioniert in erster eigentlich nennen 1567 01:18:16,450 --> 01:18:18,320 Um diese Frage zu beantworten. 1568 01:18:18,320 --> 01:18:21,430 Also das ist, was Speicher Art sieht aus wie. 1569 01:18:21,430 --> 01:18:23,860 Das ist wie eine Art vereinfachtes Modell von dem, was Speicher aussieht, wenn 1570 01:18:23,860 --> 01:18:24,800 Sie ein Programm ausführen. 1571 01:18:24,800 --> 01:18:27,270 Es gibt also so etwas wie der Stapel hier unten und 1572 01:18:27,270 --> 01:18:28,330 so etwas wie den Haufen. 1573 01:18:28,330 --> 01:18:30,950 Und diese Richtung wachsen Mitte der Erinnerung. 1574 01:18:30,950 --> 01:18:33,860 >> So dass in diesem besonderen Fall, wenn Sie eine Funktion aufrufen, es 1575 01:18:33,860 --> 01:18:35,680 wird auf den Stapel gelegt. 1576 01:18:35,680 --> 01:18:38,900 Und dann, was auch immer, dass enthalten Funktion bleibt in dem, was wir nennen das 1577 01:18:38,900 --> 01:18:40,550 Rahmen-Funktion Stack. 1578 01:18:40,550 --> 01:18:44,500 Und so eine nette Visualisierung erhalten Dazu let's - zum Beispiel wir die 1579 01:18:44,500 --> 01:18:45,960 Hauptprogramm zuvor. 1580 01:18:45,960 --> 01:18:47,820 Und innerhalb von Haupt-, riefen wir Kubus. 1581 01:18:47,820 --> 01:18:50,650 Also Haupt würde zuerst auf den Stapel Rahmen, denn es ist die erste Funktion 1582 01:18:50,650 --> 01:18:51,640 das nennt. 1583 01:18:51,640 --> 01:18:55,740 >> Und dann, wenn Würfel innerhalb der genannten Haupt, wird es auf der Oberseite des Haupt setzen 1584 01:18:55,740 --> 01:18:57,790 innerhalb des Speichers. 1585 01:18:57,790 --> 01:19:02,090 Also, was Sie hier feststellen, dass Würfel hat seine eigenen Parameter und ihre 1586 01:19:02,090 --> 01:19:02,950 eigenen Einheimischen. 1587 01:19:02,950 --> 01:19:06,720 Also, wenn Sie wirklich etwas passieren, um eine Funktion, die Parameter, die es 1588 01:19:06,720 --> 01:19:09,910 wird sind Kopien von dem, was war in von der Haupt geleitet. 1589 01:19:09,910 --> 01:19:14,140 >> Und irgendwie erklären, wollen wir zu Fuß durch ein Programm. 1590 01:19:14,140 --> 01:19:16,960 So haben wir die Stapel, das ist nur der Stapelteil. 1591 01:19:16,960 --> 01:19:21,240 Und was wir tun, ist, dass wir zuerst zu initialisieren x und y eins und zwei. 1592 01:19:21,240 --> 01:19:22,400 So haben wir diese kleinen Boxen. 1593 01:19:22,400 --> 01:19:25,310 Sie sind im Haupt Stack sitzen Rahmen auf dem Stapel. 1594 01:19:25,310 --> 01:19:26,580 Sie enthalten eins und zwei. 1595 01:19:26,580 --> 01:19:28,820 >> Jetzt rufen wir Swap. 1596 01:19:28,820 --> 01:19:33,940 Was passiert ist, passieren wir in x-und y- Swap-und Swap seine eigenen Kopien erstellt 1597 01:19:33,940 --> 01:19:36,520 der diese Variablen verwenden, um in der Stapelrahmen. 1598 01:19:36,520 --> 01:19:39,920 So, jetzt da drüben, wir haben eine, welche enthält den Wert, x hatte, und b, 1599 01:19:39,920 --> 01:19:41,620 die enthält den Wert, y hatte. 1600 01:19:41,620 --> 01:19:42,670 So ein, zwei. 1601 01:19:42,670 --> 01:19:47,130 >> Und Sie werden feststellen, dass diese getrennt von x und y innerhalb des Haupt. 1602 01:19:47,130 --> 01:19:51,390 Also haben wir jetzt eine vorübergehende Variable auf eine enthalten. 1603 01:19:51,390 --> 01:19:56,100 Wir legen gleich b, so ist es Änderungen von einer auf zwei. 1604 01:19:56,100 --> 01:19:59,340 Und dann setzen wir b gleich temp, was man ist. 1605 01:19:59,340 --> 01:20:01,640 >> Und dann jetzt beenden wir dieser Funktion. 1606 01:20:01,640 --> 01:20:04,310 1607 01:20:04,310 --> 01:20:07,410 Wenn Sie sich verlassen der Funktion, die Stapelrahmen wird aus dem Stapel geholt. 1608 01:20:07,410 --> 01:20:08,270 Wir nennen es zu schieben. 1609 01:20:08,270 --> 01:20:12,750 Sie drücken einen Stapelrahmen auf den Stapel und wenn Sie Pop vom Stapel. 1610 01:20:12,750 --> 01:20:16,080 Und so was passiert, ist alles, was war in diesem Stack-Frame Art nur 1611 01:20:16,080 --> 01:20:17,280 geht in Flammen auf. 1612 01:20:17,280 --> 01:20:19,180 Und so, dass es nicht mehr. 1613 01:20:19,180 --> 01:20:20,470 >> Aber was wissen wir schon? 1614 01:20:20,470 --> 01:20:23,690 Wir haben nie die tatsächlich geändert Werte von x und y, oder? 1615 01:20:23,690 --> 01:20:26,530 So blieb die lokale Haupt. 1616 01:20:26,530 --> 01:20:29,900 Und indem man die Dinge in swap, wir diese Werte eigentlich nie geändert. 1617 01:20:29,900 --> 01:20:31,260 Und was machen wir das nennen? 1618 01:20:31,260 --> 01:20:33,040 Wir nennen diesen Wert vorbei. 1619 01:20:33,040 --> 01:20:36,860 >> Also in C, wenn Sie Dinge in geben Funktionen, ihnen geht es nach Wert und 1620 01:20:36,860 --> 01:20:40,160 eine Kopie davon für die Funktion zu bedienen. 1621 01:20:40,160 --> 01:20:43,980 Und wir werden über so genannte lernen Übergabe als Referenz später, aber das ist 1622 01:20:43,980 --> 01:20:45,390 ein Weg, können Sie dieses Problem lösen. 1623 01:20:45,390 --> 01:20:47,080 Aber wir werden nicht zu befürchten dass erst später. 1624 01:20:47,080 --> 01:20:52,200 >> ROB: Und tatsächlich, dieser Begriff, Weitergabe Bezug genommen wird, so ist C nicht einmal 1625 01:20:52,200 --> 01:20:54,270 vorbei verweisen. 1626 01:20:54,270 --> 01:20:56,760 C ausschließlich vorbei ist von Wert. 1627 01:20:56,760 --> 01:20:59,630 Egal, was Sie tun, Sie sind immer Geben einer Kopie von etwas. 1628 01:20:59,630 --> 01:21:03,395 Es ist nur so, dass, wie ich irgendwie erwähnt dass vor mit Zeigern 1629 01:21:03,395 --> 01:21:07,690 und dass ein String ist wirklich nur vier Bytes, die auf irgendwo im Speicher. 1630 01:21:07,690 --> 01:21:11,890 >> Nun, wenn ich diese Zeichenfolge und es ist sagen mir, das ist, wo der String - 1631 01:21:11,890 --> 01:21:15,470 Nun, wenn ich diese Zeiger auf diese Stellen im Speicher, dann kann ich ein geben 1632 01:21:15,470 --> 01:21:19,160 Kopie der Zeiger auf eine Funktion, und diese Funktion noch weiß, wo in 1633 01:21:19,160 --> 01:21:19,780 Speicher ist. 1634 01:21:19,780 --> 01:21:22,950 Also diese beiden Zeiger zeigt an der gleichen Stelle im Speicher und 1635 01:21:22,950 --> 01:21:26,460 das ist, wie wir in der Lage sein, die Dinge über die ändern 1636 01:21:26,460 --> 01:21:29,852 aktuellen Stapelrahmen. 1637 01:21:29,852 --> 01:21:31,040 >> JOSEPH: Wollen Sie zu tun Kompilieren? 1638 01:21:31,040 --> 01:21:31,820 >> ROB: Nein, es ist 05.30 Uhr. 1639 01:21:31,820 --> 01:21:32,910 >> JOSEPH: OK. 1640 01:21:32,910 --> 01:21:35,040 Es ist 05.30 Uhr. 1641 01:21:35,040 --> 01:21:35,360 OK. 1642 01:21:35,360 --> 01:21:39,280 So werden wir behandeln Kompilieren Ich denke, in der nächste Abschnitt, Englisch oder auf 1643 01:21:39,280 --> 01:21:42,795 Führer wird an diesem Punkt. 1644 01:21:42,795 --> 01:21:43,272 Und - 1645 01:21:43,272 --> 01:21:44,630 >> ROB: Noch Fragen? 1646 01:21:44,630 --> 01:21:46,760 >> JOSEPH: Sie haben Fragen? 1647 01:21:46,760 --> 01:21:47,150 Ja? 1648 01:21:47,150 --> 01:21:52,469 >> SPRECHER 5: Verwenden von Zeichenketten CS50, jede Funktionen, die wir nutzen wollen, um für 1649 01:21:52,469 --> 01:21:53,880 die, das wird wie C-Funktionen sein. 1650 01:21:53,880 --> 01:21:59,050 CS50 wurde nicht in und gegangen machte keine zusätzliche. 1651 01:21:59,050 --> 01:22:01,850 >> ROB: Richtig. 1652 01:22:01,850 --> 01:22:08,155 Jede der C wie [unverständlich], Sie würden die auf unserer Saiten verwenden. 1653 01:22:08,155 --> 01:22:12,400 >> JOSEPH: Und eine letzte Sache, die ich will zu erwähnen ist, dass wir einen Styleguide 1654 01:22:12,400 --> 01:22:13,130 für diese Klasse. 1655 01:22:13,130 --> 01:22:13,360 >> ROB: Oh, ja. 1656 01:22:13,360 --> 01:22:15,270 >> JOSEPH: Also, wenn Sie noch von einem kommen Hintergrund der Programmierung vor, Sie 1657 01:22:15,270 --> 01:22:17,750 vielleicht bestimmte Konventionen haben, wenn Sie Code wie wenn man 1658 01:22:17,750 --> 01:22:20,950 Klammern auf der gleichen Zeile oder bestimmte Möglichkeiten der Einzug 1659 01:22:20,950 --> 01:22:22,240 oder Benennung Ihrer Variablen. 1660 01:22:22,240 --> 01:22:26,870 In dieser Klasse zu folgen, wollen wir ein spezifische Styleguide gerade weil, 1661 01:22:26,870 --> 01:22:31,100 Nun, wenn Sie gehen und arbeiten in Industrie, Sie gehen zu erwarten sind 1662 01:22:31,100 --> 01:22:34,780 , um die Style-Guide der Folge Unternehmen, an denen Sie gehen, um. 1663 01:22:34,780 --> 01:22:38,040 >> Wie zum Beispiel, ich glaube, Facebook hat eine besondere Art der Namensgebung 1664 01:22:38,040 --> 01:22:38,760 Konvention. 1665 01:22:38,760 --> 01:22:42,570 Und es gibt Unterschiede zwischen Kamel Gehäuse Variablen und wie 1666 01:22:42,570 --> 01:22:44,610 trennt sie durch Unterstriche. 1667 01:22:44,610 --> 01:22:52,170 Und ich glaube auch, vor allem, wie zum Beispiel, Einzug, oder? 1668 01:22:52,170 --> 01:22:56,440 >> Wir beginnen dort, wo geschweifte Klammern der Zustand ist, und sie 1669 01:22:56,440 --> 01:22:57,730 sind in der nächsten Zeile. 1670 01:22:57,730 --> 01:23:01,230 Und wir setzen auch in geschweiften Klammern auch wenn es nur eine Linie. 1671 01:23:01,230 --> 01:23:06,100 Und eine Menge Zeit, es gibt Möglichkeiten zu tun, es, wo man diese Zahnspange lassen 1672 01:23:06,100 --> 01:23:08,380 aus, wenn es nur eine Linie unter der If-Anweisung. 1673 01:23:08,380 --> 01:23:12,070 Aber in dieser Klasse zu folgen, wollen wir ein spezifischen Style Guide nur so erhalten Sie 1674 01:23:12,070 --> 01:23:13,550 auf diese Art der Sache eingesetzt. 1675 01:23:13,550 --> 01:23:16,410 >> ROB: Ja, und Style 50 wird sich Durchsetzung dieser Style-Guide, und wir sind 1676 01:23:16,410 --> 01:23:18,080 werde Style 50 verwenden grade Code. 1677 01:23:18,080 --> 01:23:25,150 So macht es die Dinge einfacher für uns und hoffentlich nicht Dinge machen, die 1678 01:23:25,150 --> 01:23:30,120 viel schlimmer für Sie angesichts der standardisierten Stil sollte nicht so sein, 1679 01:23:30,120 --> 01:23:31,460 unrealistisch. 1680 01:23:31,460 --> 01:23:36,000 >> JOSEPH: Und schließlich, um den Stil zu finden zu führen, gehen Sie zu manual.cs50.net/style. 1681 01:23:36,000 --> 01:23:37,725 Und ja. 1682 01:23:37,725 --> 01:23:40,575 >> SPRECHER 4: Gehst du zu erzwingen alle Zeichen pro Zeile? 1683 01:23:40,575 --> 01:23:42,480 >> ROB: Ja. 1684 01:23:42,480 --> 01:23:45,405 >> JOSEPH: Sorry, Jungs. 1685 01:23:45,405 --> 01:23:47,680 >> ROB: Das ist, wie einer der einzigen. 1686 01:23:47,680 --> 01:23:50,420 An diesem Punkt bin ich mit 120 OK. 1687 01:23:50,420 --> 01:23:52,460 Ich bin OK mit Spruch 120 Zeichen pro Zeile. 1688 01:23:52,460 --> 01:23:53,830 Ich verstehe es als eine Grenze. 1689 01:23:53,830 --> 01:23:57,130 Ich denke, 80 ist so klein, aber wir sie durchsetzen. 1690 01:23:57,130 --> 01:24:00,260 >> JOSEPH: Ich persönlich denke, mit C, 80 Zeichen ist OK. 1691 01:24:00,260 --> 01:24:04,160 Wenn Sie immer auf andere zu starten Sprachen wie JavaScript und PHP, nicht 1692 01:24:04,160 --> 01:24:08,860 so vernünftig, nur begrenzen es zu 80 Zeichen. 1693 01:24:08,860 --> 01:24:09,260 OK. 1694 01:24:09,260 --> 01:24:12,780 Nun, das war der Super-Abschnitt. 1695 01:24:12,780 --> 01:24:14,750 Will jemand Süßigkeiten? 1696 01:24:14,750 --> 01:24:16,000 >> SPRECHER 4: Ja. 1697 01:24:16,000 --> 01:24:18,667